Battle Drones - a vibe coded RTS with audio-based multiplayer
- Source
- simonwillison.net
- Date

Context
The most useful thing in Simon Willison's account of building Battle Drones, a browser real-time strategy game in the style of Command & Conquer, is how a vague request turned into measurable work. After several versions that looked like a game but were not fun to play, he told Claude Opus 5.5, from his phone, that the game was not fun enough and to make it a LOT more fun. Running overnight in Claude Code's Ultracode mode, where a script coordinates many subagents at once, Claude added new modes, powers and progression, and ran more than a thousand simulated playtests in which the game's built-in AI armies fought each other. It used those results to rebalance units and add features.
The release notes Claude wrote for that version, which Willison quotes, report what 1,200 AI-versus-AI test matches showed: games still undecided after 25 minutes fell from 14% to 0.9%, and wins by a side that had been far behind on resources rose from 24% to 46%. Those are the 's own balance measurements; whether the game is fun rests on Willison's playtesting. He says he has reviewed almost none of the code, written in TypeScript, a language he has hardly used, across 321 agent commits, mostly by Anthropic's Claude Code.
Later versions added 3D models built entirely in code, a mode where two LLMs play each other through a game tool meant to show each only what fog of war would reveal, and multiplayer between two nearby devices that exchange game state as sound through the microphone. Claude first built a tool to measure how much data could travel over audio, then a full audio modem. Willison chose sound so the game could stay static HTML with no server to maintain, and the full write-up links playable versions of each stage and many of the prompt transcripts.
- The game took 12 major iterations and 321 agent-written commits, mostly via Claude Code, and the author says he reviewed almost none of the TypeScript, relying on playtesting instead.
- The Ultracode 'more fun' run went overnight and ran over a thousand simulated playtests; Claude's own release notes say that across 1,200 AI-vs-AI matches, games undecided after 25 minutes fell from 14% to 0.9%, and comeback wins from 800+ scrap behind rose from 24% to 46%.
- Replays and multiplayer needed a deterministic simulation: Claude swapped Math.sin and Math.cos for custom versions because Chrome and Safari returned slightly different values that desynchronized replays.
- Before building audio multiplayer, Opus made a Radio Probe tool to measure bandwidth between two devices, then built a full audio modem; the author chose sound so the static HTML game needs no server to run or maintain.
- With an OpenAI API key, Claude generated sprites and could view and refine its own image prompts; later versions build 3D models in three.js code, and the soundtrack is generated in code with no audio files at all.
- AI agent — An AI system that doesn't just answer once but works toward a goal in a loop — taking actions, reading the results, and deciding what to do next.
Checking sign-in…
Loading comments…

