A real React game, ingested unmodified
The ingest adapter family has a third member beside the three.js and PixiJS routes: native-React DOM games — games whose UI is React components, with no canvas renderer at all. There is nothing to trap or capture; instead the unmodified game’s component tree mounts as a DOM layer in the host stack, its React import deduped onto the editor’s own React 19. The proven game is react-rpg.com (MIT): menu, character creation, and dungeon crawling all run live inside the editor.
# transcript pending capture — run: node site/media/capture-cli.mjs site/media/capture-cli.mjs -
The vendored game.
vendor/react-games/react-rpg/holds the complete upstream tree — 620 tracked files including every sprite/tile PNG and audio file — pinned to one upstream commit byreact-rpg.UPSTREAM.lock(repo, commit, license, and a per-file sha256 manifest). -
Prove zero source diff.
node vendor/react-games/verify-unaltered.mjschecks every tracked file byte-for-byte against the manifest. The same check runs in CI on every PR — a one-byte edit to the vendored game turns the build red. -
Run it yourself. No build step: the game’s dependencies are installed at the repo root and its source is tracked, so it mounts straight through the dev server:
Terminal window npm run dev # then open http://localhost:5173/packages/editor/editor.html?ingest=react-rpgThe game mounts through its manifest (
packages/editor/src/ingest/games-react/react-rpg/), whose host shim replicates the page environment the game expects — the editor plays it in the Game tab while the editor’s own panels keep working.
Recap
New functionality
- Read the upstream pin for the vendored react-rpg
- Ran the byte-for-byte unaltered-source verification
- Opened a real React game in the editor with ?ingest=react-rpg
New concepts & skills
- native-React DOM games mount unmodified as a DOM layer, deduped onto the host React 19
- there is no renderer to capture — and no authoring: react ingests are embed-only by design
- the vendored tree is checked byte-for-byte against its upstream commit in CI, on every PR
- R3F/@pixi/react games are canvas games — they use the three.js/PixiJS routes
Next lesson → Real PixiJS games, ingested unmodified