Inspiration
At 3 AM Friday, I wanted to build a slick multiplayer racing game. By 6 AM, everything was broken - cars were teleporting, walls didn't work, and the server kept lagging out. I tried to fix it. I failed. Hard. At 10 AM Saturday, exhausted and defeated, I had a revelation: What if I stopped fighting the bugs and started weaponizing them? The inspiration came from every frustrating multiplayer game I've ever played. You know that moment when you're winning and suddenly LAG and you die? Or when hitboxes don't work and someone walks through a wall? Those rage-inducing moments became our design document. I was inspired by the hackathon theme itself: "In a dying world, even mistakes are useful." Our codebase was dying. Our sanity was dying. But the mistakes? The mistakes were actually kind of fun.
What it does
Lag Racer is a multiplayer racing game where every bug is a feature and every mistake is a mechanic. Core Gameplay:
Race against 2-4 players in a top-down arena Navigate a track with inner and outer walls Pass through 4 checkpoints to complete laps Use intentionally broken mechanics to win
How we built it
Frontend: Phaser.js (game engine), Socket.io-client, Vite Backend: Node.js, Express, Socket.io
Challenges we ran into
The Expected Challenges:
Real-time multiplayer is hard Physics and collision detection is tricky Making controls feel good takes iteration 48 hours isn't a lot of time
The Unexpected Challenges:
Deciding to KEEP bugs instead of fixing them felt wrong Making bugs look intentional required more work than hiding them Balancing "broken" gameplay so it's fun, not just broken Convincing ourselves this wasn't a terrible idea
Features
Lag Bomb - Weaponized server lag that freezes opponents for 2 seconds. Their screen shows "CONNECTION INTERRUPTED" while they helplessly watch you pass them. This was literally just our server timing out randomly, but now it's strategic.
Ghost Mode - Our collision detection kept failing when the server hiccupped. Now you can intentionally turn it off to phase through walls for 3 seconds. Your car turns transparent and cyan. It's not a bug, it's a shortcut.
Rewind - Position desync meant players would rubber-band backward. Now it's a tactical teleport that sends you to a previous position. Great for escaping bad situations or dodging attacks.
Chaotic Multiplayer - Other players' cars still jitter and stutter because I never added interpolation. It looks retro. It's definitely not because I ran out of time. The game embraces every frustrating aspect of broken multiplayer and turns it into competitive chaos. You're not just racing - you're strategically deploying bugs against your opponents.
What we learned
Real-time multiplayer is HARD (even when you're not trying to make it good) Socket.io has quirks that become features if you squint Phaser's physics engine is powerful (and exploitable) Sometimes "don't fix it" is valid engineering
What's next for Lag-Racer
Realistic Next Steps:
Add sound effects (cronchy and glitchy) Create more tracks Balance the powerups Actually deploy it so people can play See if we can get streamers to rage at it
Built With
- express.js
- node.js
- phaser.js
- socket.io
- socket.io-client
- vite

Log in or sign up for Devpost to join the conversation.