• rgss123 1.0.0

    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, runtime configuration.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.0 exact 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 사용자 확인은 하지 않았습니다. 그 밖의 한계는 알려진 한계와 위험에 있습니다.

    0.1.27 대비 전체 변경

    Downloads 9