GZDoom game engine WASM target — tick simulation, actors, thinkers, and parity wire format (GZTICK).
This is not the level renderer; pair with @hypercrab2000/doom-wad-core (assets + GZSTATE) and a renderer WASM module.
Scaffold only. No WASM binary yet. Spec + TypeScript types + parity harness hooks.
| Component | Status |
|---|---|
| GZTICK v0 schema (TypeScript) | Draft |
GZDoom -dumpgztick exporter |
Not started (gzdoom-project fork) |
WASM gzengine_core |
Not started |
| Tick parity corpus | Not started |
GZDoom combines rendering and simulation in one binary. This project splits:
- GZSTATE (@hypercrab2000/doom-wad-core) — post-load render-facing map state
- GZTICK (this repo) — per-tick simulation state for engine parity
- Renderer WASM (doom-wad-lab / future doom-gzrender-core) — draw lists from GZSTATE + dynamic patches
The browser host loads two WASM modules and passes patch streams each frame. See docs/ARCHITECTURE.md.
Testing: docs/TESTING.md · workspace ../docs/TESTING.md
cd doom-gzengine-core
npm install
npm run build
npm testLink from doom-wad-lab (when integrated):
"@hypercrab2000/doom-gzengine-core": "file:../doom-gzengine-core"Same pattern as doom-wad-core:
echo "@hypercrab2000:registry=https://npm.pkg.github.com" >> ~/.npmrc
npm publish| Repo | Role |
|---|---|
| doom-wad-core | WAD parse, GZSTATE export |
| doom-wad-lab | Browser app, Classic renderer, parity tools |
| gzdoom-project | Fork with -dumpgzstate, -dumpgztick (planned) |
| Doc | Topic |
|---|---|
| docs/TESTING.md | Test layers (scaffold + planned tick corpus) |
| docs/ARCHITECTURE.md | Engine vs renderer |
| docs/GZTICK-v0.md | Wire format |
| ../docs/TESTING.md | Workspace-wide testing guide |
MIT (engine WASM will inherit GZDoom GPL for linked portions — see docs/LICENSING.md when port begins).