-
hanyul released this
2026-10-31 12:04:57 +09:00 1.0.0 주요 변경사항
이름을
rgss123으로 바꾸고 RPG Maker XP(RGSS1) 게임을 초기 범위로 받으며, 깊은 C 재귀로 runtime이 멈추던 문제를 고치고 player SDK에 opt-in API를 더한 1.0.0입니다.이름 변경(호환성 깨짐)
- 이름이 바뀌어 0.1.x와 호환되지 않습니다. host는 package 이름, import, 오류 code 분류, contract ID와 storage namespace를 한 번에 함께 바꿔야 합니다.
- npm package는
@rgss23/arca에서 **@arca/rgss123**으로 바뀌었습니다. registry 주소https://git.2ex.dev/api/packages/hanyul/npm/는 같고,.npmrc의 scope 줄은@arca:registry=입니다. - API·타입은
Rgss23*와Arca*에서Rgss123*로 바뀌었습니다(예:launchRgss123Player,getRgss123Release,stageRgss123Release,prepareRgss123Rtp). npm facade의ArcaBuilderError는Rgss123BuilderImageError입니다. - 오류 code는
ARCA_*에서RGSS123_*로, CLI는arca-release에서rgss123-release로 바뀌었습니다. 오류 message 안의ARCA도rgss123입니다. - schema·contract·interface ID(
rgss123-*,links-rgss123-web-launch-v1), 환경 변수(RGSS123_*), OPFS·Web Lock·storage namespace(rgss123-lazy등), page global과 native runtime patch symbol·protocol이 함께 바뀌었습니다. - player SDK 기본 저장소의 save 경로 prefix는
arca-path-v1/에서rgss123-path-v1/로, runtime 가상 경로는/arca/에서/rgss123/로 바뀌었습니다. migration은 없으며 이전 prefix로 저장한 snapshot은 원래 파일로 복원되지 않습니다. - 배포 파일 이름(
rgss123-runtime-*.zip,rgss123-builder-*.oci.tar,rgss123-contracts-*.tgz,rgss123-arca-*.tgz), Builder 명령rgss123-builder, Docker image·volume 이름도 바뀌었습니다. 저장소는git.2ex.dev/hanyul/rgss123-web입니다. - 이전 이름은 어디에서도 받지 않습니다. deprecation 기간 없이 사용자 승인으로 바꿨습니다.
RPG Maker XP(RGSS1) 초기 범위
.rxdata·.rgssad로 XP 게임을 알아보고,Game.ini의RTP와RTP1–RTP3을 읽습니다. XP는 VX처럼mkxp.json에syntaxTransform: 2가 필요하며 XP용 runtime patch는 없습니다.- XP RTP는
prepareRgss123Rtp({ id: "RPGXP" })가 공식xp_rtp104e.exe에서Standard.mkxpz(Audio·Graphics)로 만듭니다. npm package에 RTP 데이터는 들어 있지 않습니다. - contracts에 engine
xp, runtimeconfiguration.json의engines에rpg-maker-xp를 더했습니다. 이 값은 runtime이 XP 게임을 받아 실행한다는 선언이며 XP 일반 지원 판정이 아닙니다. - XP 근거는 제공 샘플 하나의 자동 title·play smoke이고 사용자 확인은 하지 않았습니다. 대부분 이전 runtime에서 실행했고 이 release의 runtime에서는 Chrome title만 다시 확인했습니다.
runtime
- sandbox CRuby의 C 함수 안에서 재귀가 깊어지면 runtime 전체가 중단되던 문제를 고쳤습니다. 이제 게임 script가 잡을 수 있는
SystemStackError가 납니다(한도 640 frame, C 코드가 오류를 삼킨 뒤의 두 번째 한도 672 frame). - 한도는 이전 runtime이 비결정적으로 중단되던 깊이보다 경로마다 약 10~20% 낮습니다. Windows Chromium 156·Firefox 153에서 측정했고, 다른 OS·브라우저의 stack 크기와 실제 게임의 깊은 장면은 확인하지 않았습니다.
- runtime이 MIDI 재생에 쓰는 기본 SoundFont
GMGSx.sf2를 public domain으로 기록하고 runtime ZIP의 license 고지에 넣었습니다.
player SDK
Rgss123ArtifactSource.openBlob으로 host가 이미 가진 Blob을 runtime·game·RTP artifact로 넘길 수 있습니다.artifactTransfer(idleTimeoutMs·retries)로 artifact 전송이 멈췄을 때의 timeout과 재시도를 켤 수 있습니다.- runtime JS·WASM을 page 사이에 재사용하는 read-through cache(
createRgss123CachedArtifactSource,Rgss123ArtifactBlobStore, OPFS 구현createRgss123OpfsArtifactStore)를 더했습니다. host가 준 namespace에 두며 save와 분리됩니다. - 전체화면 helper
requestRgss123Fullscreen·exitRgss123Fullscreen·isRgss123Fullscreen을 더했습니다. backing은 그대로 두고 CSS로 확대합니다. prepareRgss123Rtp()가 선택onProgress로 RTP 준비 진행을 알립니다.- 자동 저장은 직전과 byte가 같은 save 파일의 SHA-256을 다시 계산하지 않습니다.
- 새 API를 쓰지 않으면 이름 변경을 뺀 동작은 0.1.27과 같습니다. Emscripten 6 runtime(0.1.16 이후)만 받습니다.
Builder와 release
- Builder build context의 줄바꿈을 모든 host에서 LF로 고정하고, Builder build 전과 Builder gate에서
LICENSE를 release manifest의 licence sha256과 대조합니다. - Linux host에서 release를 만들 때 생기던 결함(Builder context 파일 mode, 비root Builder가 쓰는 출력 디렉터리, ZIP 읽기)을 고쳤습니다.
- Forgejo release 제목은
rgss123 <version>입니다.
배포 파일
runtime ZIP, Builder OCI, contracts tgz, npm tgz와 release manifest·pin·checksum 일곱 파일이 모두 바뀌었고, 앞의 네 파일은 이름이
rgss123-*로 바뀌었습니다. version 문자열은 먼저 게시했다가 지운 1.0.0과 같지만 bytes와 hash는 다릅니다.호스트 업데이트와 주의사항
적용 절차는 1.0.0 적용 시 확인할 동작 변경을 따릅니다.
- package 교체:
@rgss23/arca를 지우고@arca/rgss123을1.0.0exact pin으로 설치합니다. import,error.code분류, CLI 호출, contract ID, storage namespace를 같은 변경에서 함께 바꿉니다. 이름 목록은 1.0.0 이름 변경에 있습니다. - 지운 게시본: 이 1.0.0은 먼저 게시했다가 지운 1.0.0(2026-10-29·30)과 1.1.0(2026-10-31)을 대체합니다. 그 게시본을 받아 둔 환경은 lockfile을 새로 만들고, 그 Builder로 만든 generation을 재사용하지 않습니다.
- 이전 package:
@rgss23/arca(0.1.x)는 registry에서 지웠습니다. 0.1.x로 되돌릴 때는 이미 만든 이미지나 Forgejo release에 첨부한rgss23-arca-<version>.tgz를 씁니다. - Builder: 새 Builder digest·config digest를 pin과 대조하고, 기존 generation은 1.0.0 Builder로 다시 만듭니다.
- save: SDK 기본 저장소의 이전 snapshot은 새 prefix로 복원되지 않습니다. 이어 써야 하면 host가 snapshot 키를 변환합니다.
- XP: XP 게임을 받으려면
prepareRgss123Rtp({ id: "RPGXP", storeRoot })로 RTP를 준비하고, artifact 이름Standard.mkxpz를 그대로 둡니다. 판정은 RPG Maker XP (RGSS1)에 있습니다. - opt-in API: 새 SDK API는 필요할 때만 켭니다. 도입 버전은 player SDK README에 있습니다. 전체화면으로 전환하는 순간 누르고 있던 키는 다시 눌러야 하고, 전체화면 중 Escape는 브라우저가 종료에 씁니다.
- 알려진 한계: VX·VX Ace의 사용자 확인 기준 runtime은 0.1.25이고 1.0.0 사용자 확인은 하지 않았습니다. 그 밖의 한계는 알려진 한계와 위험에 있습니다.
Downloads 9
-
release-manifest.json
2
2.1 KiB
2026-10-31 12:05:11 +09:00 -
release-manifest.sha256
2
88 B
2026-10-31 12:05:11 +09:00 -
release-pin.json
2
536 B
2026-10-31 12:05:12 +09:00 -
rgss123-arca-1.0.0.tgz
2
99 MiB
2026-10-31 12:05:13 +09:00 -
rgss123-builder-1.0.0.oci.tar
1
60 MiB
2026-10-31 12:05:14 +09:00 -
rgss123-contracts-1.0.0.tgz
1
38 KiB
2026-10-31 12:05:15 +09:00 -
rgss123-runtime-1.0.0.zip
2
48 MiB
2026-10-31 12:05:15 +09:00 -
Source code (zip)
0
2026-10-31 12:04:57 +09:00 -
Source code (tar.gz)
0
2026-10-31 12:04:57 +09:00