Loot & Shoot: Real-Time Multiplayer Platformer
Solo build: game, physics, netcode, and backend
- Flutter
- Flame
- Box2D
- Real-Time Netcode
- Firebase
- Game Dev

TL;DR
Loot & Shoot is a real-time, networked 2-player side-scrolling platformer shooter built in Flutter with the Flame game engine. Two players host or join a lobby via a room code, pick a character (punk, cyborg, or biker), then drop into a shared physics-driven platform level to run, jump, and shoot each other until one dies. The core loop (lobby, character select, spawn, fight, death) works end-to-end. It is a working vertical slice rather than a finished game, and it was built in an eight-week burst in late 2022, finishing weeks before ChatGPT launched: every line written by hand.
The interesting parts
The physics is real Box2D via Forge2D: impulses, fixtures, and collision callbacks rather than hand-rolled AABB checks. Levels are data-driven, authored in the Tiled editor and parsed into collision geometry at runtime, so a new level is a map file, not code. Rendering and physics are decoupled in an ECS-style component tree, with BLoC bridging Flutter's declarative state management into the imperative game loop.
The netcode is where the engineering decisions live:
- A deliberate dual-database split. Lobby and room management run on Firestore; high-frequency player position, health, and bullet sync run on Firebase Realtime Database. Two databases, chosen per traffic shape, trading cost against latency where each matters.
- Client-side interpolation. Remote players smooth over network jitter with distance-scaled movement effects instead of teleporting between updates.
- Debounced writes. Rapid character-selection cycling in the lobby is debounced before it hits Firestore, so an indecisive player does not become a billing problem.
The project scaffolds natively for all six Flutter targets (iOS, Android, macOS, Windows, Linux, and web), with gameplay tuned for landscape mobile.
Honest maturity
This is an early-to-mid prototype and the page says so: roughly 58 commits over eight weeks in late 2022, no automated tests, debug flags still visible, and an unmerged branch that generalises beyond two players. Despite the name, the loot and inventory system never went live; the UI art exists but is not wired up. What works, works end-to-end for exactly two players, and the interesting engineering (physics integration, the netcode split, the data-driven level pipeline) is all in the shipped slice.
Gallery
Why it is on this page
Partly because multiplayer game netcode is a different discipline from anything else on this site, and partly as a timestamp: this is what my hand-written code looked like before ChatGPT launched and AI-assisted coding went mainstream. The architecture instincts (layered repositories and cubits, decoupled physics and rendering, data-driven content) are the same ones that show up in Impact Pro and Drooli, just three years earlier.