The Bot Royale — 100 AI Agents, Shrinking Storm, You Just Watch
100 AI agents drop into a procedural arena. They scavenge weapons, fight, flee, run from the storm. You watch from above. Snipers hold range, shotguns close in. Last bot wins.
What this is
You don't play. You watch. 100 AI agents drop into a procedural arena (200×200 with rocks, trees, buildings as cover). 30 weapon pickups (pistol, rifle, shotgun, sniper) and 10 health pickups scattered. Each agent runs a 5-state FSM re-evaluated every 0.25s with priority cascade: storm escape > low-HP flee > fight > scavenge > wander. Real bullet projectiles with finite speed and raycast LOS. Per-weapon optimal range creates natural sniper-vs-shotgun positional play. Storm zone shrinks every 30 sec — agents outside take damage. After 5 shrinks the zone is tiny. Camera: WASD pan, wheel zoom, drag to rotate, 1-9 to focus on top killers, F to follow. TAB toggles leaderboard. The match emerges from the rules.
Why this is mind-blowing
PUBG and Fortnite made battle royale a $20B genre. The AI behavior that makes single-player BR work is here in 1305 lines from one paragraph. And you don't even play — the watching is the point. Each match is its own story.
Top-down bot battle royale in three.js. 100 AI agents with FSM behavior
(wander, scavenge, fight, flee). Procedural arena with cover and
weapon pickups. Shrinking play zone every 30 sec. You watch from a
strategic camera. Real-time leaderboard. Last agent standing wins.
Paste this into Claude, Cursor, or Copilot. Change one thing that matters to you.
What I learned shipping it
- Five-state FSM (WANDER/SCAVENGE/FIGHT/FLEE/ESCAPE_STORM) with priority cascade re-evaluated every 0.25s gives 100 agents recognizable behavior without expensive per-frame planning.
- Per-weapon optimal range (snipers prefer 80m, shotguns prefer 5m) creates emergent positional tactics — snipers naturally hold ground while shotguns close in. No tactic was scripted.
- Storm shrink as a forcing function makes the final 3-5 always converge in the tiny purple ring. The match always ends in spectacle.