WASM-4 is a low-level fantasy game console for building small games with WebAssembly. Game
cartridges (ROMs) are small, self-contained .wasm
files that can be built with any programming
language that compiles to WebAssembly.
No Glue Code: If you've ever tried to write even a simple "Hello World" with WebAssembly before, you'll know it usually involves writing a bunch of JS and HTML glue. WASM-4 removes all of that, games interface directly with the system through a small API.
Minimalist: Fantasy consoles force developers to work with limited resources. This makes them simple to learn, and easier to focus on finishing your game.
Language Agnostic: Use any programming language, as long as it can compile to WebAssembly. Out of the box we currently support: AssemblyScript, C/C++, D, Go, Nelua, Nim, Odin, Rust, WAT, and Zig.
Portable: WASM-4 is designed to run on any device that can execute WebAssembly, even outside of the web! It includes a lightweight runtime written in C that runs even low-powered microcontrollers and obsolete hardware.
Netplay: Instant online multiplayer, featuring rollback netcode. All games that support local multiplayer automatically support netplay. WASM-4 handles syncing controller inputs over the Internet.
# Install the w4 command
npm install -g wasm4
# Create a project
w4 new --assemblyscript hello-world
# Setup toolchain
cd hello-world
npm install
# Build and run your game!
npm run build
w4 run build/cart.wasm
For more info and guides, check the full documentation.
Contributions are welcome! Here are just a few ways to help: