Skip to content

gasmWrite a game once. Run it everywhere.

Games compile to one WebAssembly file. Small native and browser runners give them a stable interface for graphics, sound, input and networking.

gasm

What's inside ​

Runnersgasm-run: native (Rust: wasmtime, wgpu, winit, cpal, gilrs), with AOT compilation for no-JIT platforms. Browser runner: WebAssembly, WebGPU, AudioWorklet, Gamepad API. Headless Node runner.
GamesSumo: 3D two-player arena with lockstep netcode. NES: a complete emulator (tetanes-core) passing the blargg CPU, timing and APU tests. Triangle and test pattern: minimal examples in Rust and C.
Toolsgasm-relay (WebSocket rooms), the gasm Rust crate, gasm.h for C, cross-runner determinism and network test suites.

Performance ​

Measured on an Apple M1 Pro. The NES emulator compiled to wasm runs at 1.5× (wasmtime AOT) and 1.6× (V8) the time of the same Rust code built natively. That's about 9× faster than the console itself. Sumo holds 60 fps with 4× MSAA on both runners.

Status ​

gasm is a proof of concept. ABI v0 is experimental and will change. See the roadmap: rollback netplay, storage, textures, and a wasm2c runner for consoles.

MIT licensed. The NES demo core is tetanes-core (MIT/Apache-2.0).