← All work

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

Insert coinThe fork