Pi backend for web browsers.
A replacement for piebiten and Ebitengine.
The aim of this project is to create a new backend for Pi games that runs efficiently in modern web browsers and offers significant improvements over the standard piebiten backend:
- At least 2× smaller
.wasmoutput
- Minimal latency — as low as 20 ms (compared to 60 ms in piebiten)
- Glitch-free playback — thanks to audio processing in a high-priority, separate audio thread
These improvements are possible thanks to:
- Audio Worklet API – the browser-native API for real-time, low-latency audio processing
- SharedArrayBuffer - a high-performance way to exchange data between the main thread and audio processor in the browser.
- Writing the code directly in JavaScript
- Reducing the number of dependencies
The project is ready to use. Most features are ready. Some platforms are not supported yet though:
- graphics rendering using Canvas2D
- keyboard support
- gamepad support
- mouse support
- debug mode support
- desktop web browsers - Chrome, Firefox, Edge, Safari etc.
- mobile web browsers - virtual keyboard and gamepad support
- audio support
- 3x smaller WASM binary - Snake game is 3 MB (0.9 MB after gzip) instead of 10 MB
- customizable template - developer can change all static files - HTML, CSS, JS etc.
- works on itch.io and newgrounds.com
- embedded HTTP server for rapid development
- ability to release ZIP file
- with embedded HTTP server
- with CLI
- documentation
- automated tests
