Browser-first TypeScript framework for running a deterministic WASM game runtime in a WebWorker and rendering via OffscreenCanvas.
npm install wasm-game-tsBrowser-first TypeScript framework for running a deterministic WASM game runtime in a WebWorker and rendering via OffscreenCanvas.
Exports (WASM -> host):
- init(random_seed: i32, module_hash: i32) -> i32 (HostState* offset)
- update_start(input_bytes: i32) -> i32 (returns ptr for host to write inputs)
- update_end(render_for_player: i32) -> void (process + produce render/audio/debug buffers)
Imports (host -> WASM):
- env.get_file_bytes(id: i32, ptr: *mut u8) -> usize
The worker renders a binary command buffer written by WASM. Command ids and layouts are defined in:src/worker/renderer.ts
Rust should match these ids and field layouts exactly.
1) Build dist:
``bash`
npm install
npm run build
Run the dev server:
`bash`
npm run dev
Open:
http://localhost:5173/demo/index.html
Click "Pick Package Folder" and select a folder containing:
- your .wasm (built from your Rust code)
- any assets you want (manifest is generated automatically by the folder picker)
The demo will start the game and stream keyboard/mouse input for player_id=1.
---
From wasm-game-ts/:
`bash``
npm install
npm run build
npm run devopen http://localhost:5173/demo/index.html