SPLATZ is a four-player neon platformer where stacking on each other’s heads is the main verb. Phaser 3 renders the juice — matrix rain, splat particles, screen shake, player trails — while a Node WebSocket server owns physics, collisions, sync buttons, key fragments, and portal unlock logic so clients cannot cheat co-op puzzles.
Phases 1 through 6 are shipped: lobby with room codes and ready-up, coyote time and jump buffering, four defined levels (The Stack, Laser Corridor, Glitch Sync, The Gauntlet), HUD with death counter and timer, Electron wrapper with a clean production build, and a Steamworks integration branch (SteamService, achievements, friends invites stubbed). Vitest covers room lifecycle, kill/respawn, portal gating, and transport injection for testability.


The hard part was not rendering — it was server authority without Colyseus. SplatzRoom exposes tick() and startLevelForTest() hooks, cancellable timers, empty-room cleanup, and unsubscribe-safe network managers so GameScene does not leak listeners on scene shutdown. That discipline is what lets 54 tests stay green while I tune feel.
Remaining before Steam: two-human playtesting, register achievement IDs on the partner site, and verify steamworks.js against a real Steam client. The game is a portfolio piece for multiplayer engineering, not just another Phaser tutorial.
