A high-quality web arcade wrapper built with React, styled in "Democracy + Retro 80s Synthwave," and hosting custom Python/WASM arcade games. Plus, the first game in the series, "Ice Out", is now available!
This project serves as a portfolio piece showcasing frontend architecture, WebAssembly game integration, and retro design principles.
Deployed to GitHub Pages at https://rudil24.github.io/buzz-arcade/
This project adheres to the OPST Kickoff framework. Please review the foundational documents:
- Product Requirements Document (PRD)
- Design Document & Visual Mockups
- Development Task List
- Team Retro
The application is structured into two main parts:
- React Wrapper: Built using Vite.
- IceOut Game: Built using Pygame CE and compiled via
pygbag.
- Node.js (for React wrapper)
- Python 3.10+ (for Game building)
pygbag(pip install pygbag)
git clone https://github.com/rudil24/buzz-arcade.git
cd buzz-arcade
npm install
npm run devMake sure iceout.apk and the Pygbag index.html bootloader are located in public/games/iceout/ before accessing the emulation.
We use a patched index.html bootloader that natively reads .apk (zipfile) formats rather than uncompressed .tar archives, as Vite's environments often reject the untar method. Wait for pygbag to finish compiling its dependencies on the first run.
cd python_games/iceout/
python3 package_apk.pyThis script will bundle the assets/ and main.py into iceout.apk and push it to the Vite public/ directory.
To enable SharedArrayBuffer threading for Pygame's WebAssembly canvas, the project uses coi-serviceworker to enforce Cross-Origin headers on GH Pages.
Deploy directly via npm:
npm run deployCreated per OPST Strategy Toolkit standard procedures.