/piweb

Modern Pi backend for the web

Primary LanguageGoMIT LicenseMIT

piweb

Pi backend for web browsers.

A replacement for piebiten and Ebitengine.

Play the Snake game in the browser


๐ŸŽฏ Project Goals

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:

๐Ÿ“ฆ Smaller Binary Size

  • At least 2ร— smaller .wasm output

๐Ÿ”Š Better Audio

  • 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

๐Ÿงช How It Works

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

๐Ÿšง Status

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