Skip to content
← Back to projects

Resurgence

A browser multiplayer FPS in the style of Warzone's Resurgence mode — squads, respawns until the circle closes, 29 guns, and four movement styles. Three.js client, authoritative Node server.

Created · Updated Live ↗
typescriptthreejsnodevitewebsocketsgame-dev

A browser multiplayer FPS modelled on Call of Duty: Warzone’s Resurgence mode: a compact island, squads of four topped up with bots, and respawns while a squadmate is alive until the circle closes. No install — it runs in the browser on desktop, controller, or touch.

The match

Everyone boards one plane on a seeded flight line, jumps when they like, and parachutes in. From there it’s loot, armor plates, loadout drops, and a shrinking circle whose first centre is random per match. A fall that would kill you knocks you down instead, and a squadmate has 30 seconds to revive you.

  • 29 guns in seven classes with real tradeoffs — fire mode, recoil, range falloff, aim time — plus four attachment slots and rarity tiers.
  • Four movement styles: Slider, Wallrunner, Bhopper, and Bouncer, plus a beginner-friendly Standard. Specialist, which has all four, is earned in-match.
  • Melee and a one-hit knife, tactical reloads, pings, spectating, and party share links.

How it’s built

TypeScript end to end. One deterministic simulation lives in shared/ and runs on both sides: the Node server is authoritative at 60 Hz with lag-compensated hitscan, and the Vite + Three.js client uses the same code to predict. Tests cover the simulation with Vitest, the client with Playwright, and a frame-time budget (p99 ≤ 16.8 ms). Deploys are blue/green Docker behind a router that drains matches without interrupting them.