Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aduros/wasm4
Build retro games using WebAssembly for a fantasy console.
https://github.com/aduros/wasm4
2d-game-engine assemblyscript d dlang emscripten fantasy-computer fantasy-console game-development gamedev go golang nelua nim odin retrogaming rust typescript wasm webassembly zig
Last synced: 6 days ago
JSON representation
Build retro games using WebAssembly for a fantasy console.
- Host: GitHub
- URL: https://github.com/aduros/wasm4
- Owner: aduros
- License: isc
- Created: 2021-08-05T23:48:23.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-01-02T17:31:53.000Z (19 days ago)
- Last Synced: 2025-01-08T20:02:39.608Z (13 days ago)
- Topics: 2d-game-engine, assemblyscript, d, dlang, emscripten, fantasy-computer, fantasy-console, game-development, gamedev, go, golang, nelua, nim, odin, retrogaming, rust, typescript, wasm, webassembly, zig
- Language: TypeScript
- Homepage: https://wasm4.org
- Size: 5.42 MB
- Stars: 1,265
- Watchers: 17
- Forks: 177
- Open Issues: 114
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-zig - wasm4🗒️Build retro games using WebAssembly for a fantasy console
README
WASM-4
Build retro games using WebAssembly for a fantasy console
Website •
Showcase •
Docs •
Discussions## About
**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.## Key Features
* **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](https://twitter.com/alvaroviebrantz/status/1518343016011943939)
and [obsolete hardware](https://twitter.com/wasm4_org/status/1483140582943956992).* **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.## 🚀 60 Second Quickstart
```shell
# 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](https://wasm4.org/docs).
## 🎮 Hardware Specs
- Display: 160x160 pixels, 4 customizable colors, updated at 60 Hz.
- Memory: 64 KB linear RAM, memory-mapped I/O, save states.
- Cartridge Size Limit: 64 KB.
- Input: Keyboard, mouse, touchscreen, up to 4 gamepads.
- Audio: 2 pulse wave channels, 1 triangle wave channel, 1 noise channel.
- Disk Storage: 1024 bytes.## 🙏 Contributing
Contributions are welcome! Here are just a few ways to help:
- **Build a game or experiment, we'll feature it on wasm4.org!**
- Improve our documentation or write a tutorial.
- Submit a bug report or feature request on Github.
- Answer questions on the discussions forum.
- Implement support for a new tool or language.
- Give the project a star on Github for visibility.