Multiplayer drag racing: short heats, rev-and-shift skill, Tetris-style sabotage.
Same backend shape as deathRace (Colyseus room, 20Hz authoritative sim, React shell + canvas road).
- Up to 12 cars on one shared pseudo-3D strip, CPU fills the grid to 8.
- ~60s heats, endless gears, best-of-3 or best-of-5 — first to majority wins the match.
- Controls: hold ↑ to rev, Space to shift. Staging launch zone 3400–5600 RPM.
- 5 gears, perfect window near redline narrows each gear. Early = bog, late = heat.
- Full heat = 2s limp mode. 3x perfect streak = shield.
- Perfect shifts splash neighbours (+heat, smoke at 3+ streak) and every 2nd streak-finish snipes the leader: smoke / gear jam / limiter drop / fuel cut / oil slick / headwind / false shift light. Missed shifts leave you vulnerable (+50%).
- Back markers get a wider hidden perfect window (rubber-band).
npm install
npm run dev:colyseus # ws://127.0.0.1:2567
npm run dev # http://localhost:5173 (VITE_COLYSEUS_URL to point elsewhere)No server handy? Hit SOLO TEST (VS CPU) on the menu — same sim, 7 CPU, best-of-5.
Tests: npm test (16 tests: sim, room heat flow, solo heat flow, protocol).
- Game: https://nitro-drag.pages.dev
- Backend:
wss://nitro-drag-showdown.fly.dev(/healthover https) - Hub: https://marotta-arcade.pages.dev
- Verify backend:
npm run smoke:fly - Redeploy frontend:
VITE_COLYSEUS_URL=wss://nitro-drag-showdown.fly.dev npm run deploy:cloudflare - Redeploy backend:
flyctl deploy(single 256 MB shared machine, scale-to-zero)