John Hawaii B. Luga's World
A 2–10 player platformer battle, served from my own box
Creative & lab · Jul 2026 – present
The problem
Hosting a real-time multiplayer game in a browser tab off a single VPS touches everything at once: a ~54 MB Unity WebGL payload that has to stream and boot cleanly, rollback netcode that needs its own cloud application, and someone else's open project that must be redeployed respectfully: their code, their quota, their credit.
Approach
- Forked NSMB-MarioVsLuigi, reused with the devs' permission, and built it for WebGL from source, headlessly, with Unity 6 in batch mode.
- Provisioned an independent Photon Quantum application, so my instance runs multiplayer on my own player quota instead of the community's.
- Served the build as plain static files from the same Hetzner box as the rest of the site, deployed out-of-band from git the same way the server's secrets are.
- The roadmap: my own characters (David vs Erik), levels and audio swapped in piece by piece through the game's addon system, until nothing borrowed remains on screen.
Outcome
A playable multiplayer front at /play: grab a friend and make a room. Controls: arrows/WASD, Space to jump, Shift to sprint, E for the powerup. Based on NSMB-MarioVsLuigi by ipodtouch0218 and contributors.
Built with
- Unity 6
- C#
- Photon Quantum
- WebGL
- Caddy