explainx.ai0k
TrendingAI News TodayPathwaysSkills
Pricing
explainx.ai

Upskill in AI — 16 free pathways, live workshops & bootcamps, and 50+ courses from practitioners. Plus the skills, tools, and MCP servers to practice on.

follow us

follow on google

Add explainx.ai as a preferred source

corporate training

support@explainx.ai

get started

Find your pathTake Free Evaluation

community

Join the community

learn

mind: share how you thinkpathways — start freeworkshopsbootcampscoursescompare Explainxcertificationsmock testsexplainx universitycorporate traininglearn skills & mcp

discover

skillsmcp serversexplainx mcptoolsmdx readeragentsllmsdesignsdictionarypeopleagi trackerfelony benchranks

company

aboutvisionmissionteaminstructorsteach on explainxpartnershipscommunityhackathonscareers

content

daily AI newsstate of AI — live resultsblogreleasespromptsgeneratorsresource libraryfor LLMsexplainx.ai kids

solutions

all solutionsdeveloper upskillingmarketing upskillingproduct manager upskillingleadership upskilling

newsletter · weekly

Get AI news, tools, and insights in your inbox.

supportcontactprivacytermsdata rightshow we create contentsubmission guidelines

© 2026 AISOLO Technologies Pvt Ltd

explainx.ai

On this page

  • TL;DR: Battle Drones at a glance
  • How it was built: 12 iterations
  • The audio multiplayer trick
  • Engineering details worth stealing
  • Agent-vs-agent matches
  • Why this counts as a real workflow, not a demo
  • What the author is candid about
  • What this teaches builders
  • Questions people are asking
  • What is still unknown
  • Related reading
← Back to blog

explainx / blog

Battle Drones: Simon Willison's Vibe-Coded RTS With Multiplayer Over Audio

Claude Code, Vibe Coding, Games, Agents, Open Source

Part of Claude Code

Simon Willison built Battle Drones, a browser RTS with audio-based multiplayer, in 321 commits mostly by Claude Code. What he did, what it cost, what to learn.

Oct 20, 2026·8 min read·Yash Thakker
add explainx.ai
go deep
Battle Drones: Simon Willison's Vibe-Coded RTS With Multiplayer Over Audio

Simon Willison, a developer who writes widely on AI tooling, has published Battle Drones, a browser real-time strategy game built over 12 major iterations and 321 commits, almost all of it written by coding agents, primarily Claude Code. In his own write-up, he calls it "actually fun to play," which he says was not true of his earlier game experiments, and he admits he has reviewed almost none of the code. The headline feature is stranger than the game itself: two devices can play each other by sending data as sound, with no server.

It is a useful case study for anyone building with agents: it shows what a single person can direct, which prompts moved the needle, where the model found clever fixes, and what the author himself says remains unverified.

TL;DR: Battle Drones at a glance

table · 2 cols
QuestionAnswer
What is it?Browser RTS, Command and Conquer style, mobile and desktop
Who made it?Simon Willison, directing coding agents
Size12 iterations, 321 commits; 9 buildings, 7 ground vehicles, 6 aerial vehicles, 3 infantry types
MapsSix across five biomes, plus a random map generator
MultiplayerTwo devices exchange audio messages; no server
ToolsClaude Code (including Claude Code for Web and Ultracode), Claude models including Opus 5.5, OpenAI image API for sprites
EnginesPhaser 2D early, Three.js 3D from version 5
Code reviewAuthor says he reviewed almost none of it
OfflineWorks as a Progressive Web App

How it was built: 12 iterations

The author describes a staircase of prompts and ports:

  • Version 1 was "barely a proof of concept."
  • Version 4 came from a blunt prompt, "Make it a LOT more fun," after which Claude ran over a thousand simulated playtests to rebalance units.
  • Version 5 ported the game from 2D Phaser to 3D with Three.js, using generated 3D models.
  • Version 8 added the Archipelago map, where infantry must be airlifted by Condor aircraft to capture island uplinks.
  • Version 10 added Goliath mechs and agent-vs-agent battles.
  • Version 11 added random map generation, built in a 45-minute window using leftover usage quota.
  • Version 12 added audio multiplayer.

The 3D port is the visual jump: by version 5 the battlefield is angled, and buildings, vehicles and terrain are all 3D models. The author used Claude Code for Web and its Ultracode mode, which runs dynamic workflows that orchestrate many subagents. See our guides to Ultracode effort mode and Claude managed agents with dynamic workflows and 1,000 subagents for how that works. His own caveat: it "burns tokens like there's no tomorrow."

The audio multiplayer trick

This is the part most readers will remember. Two devices in microphone range send each other audio messages to keep game state in sync. It grew out of the author's earlier Chirp Pong experiment. Claude first built a "Radio Probe" tool to measure how much data the speakers and microphones could actually carry, then implemented a full audio modem on that measurement. The author mentions prior art such as Siner and ggwave.

It avoids running a server, which suits his preference for free, static hosting. He has tested it between laptops, iPhones and iPads but says he has not tested it extensively. That caveat matters: acoustic links are sensitive to room noise, distance and device speakers, so "works on my devices" is the verified claim, and "works anywhere" is not.

Engineering details worth stealing

Two details from the post are good lessons in what agents can do when given a real constraint:

  1. Deterministic simulation. Replays and multiplayer both need every device to compute exactly the same game. Claude found that Chrome and Safari returned slightly different values from Math.sin() and Math.cos(), which caused desynchronization, and replaced them with custom versions. Cross-browser floating-point drift is a classic multiplayer bug, and the fix is to avoid the platform's math functions.
  2. Soundtrack in code. The music is generated entirely in code, with no audio files, and becomes more intense during battles.

Agent-vs-agent matches

Version 10 added agent-vs-agent play, where AI models command the two sides and the game records a replay. The author's replay viewer shows a match between a Claude Haiku model and a GPT model, as shown in his post.

A game with deterministic simulation and a replay format is effectively a small benchmark: you can pit models against each other on the same seed and watch the result. The post does not publish win rates, so we cannot say which model plays better; treat this as a capability, not a ranking. For other agent-benchmark approaches, see our coverage of four agents beating Minecraft's Ender Dragon.

Why this counts as a real workflow, not a demo

Most "I built a game with AI" posts stop at a screenshot. This one is useful because the process left artifacts you can inspect. The 321 commits form a history of how each prompt changed the project. The author also built small tools along the way, a model browser, an agent debug tool and a record viewer for replays, which turn opaque agent behavior into something a person can watch and judge. Those tools are how a non-expert in TypeScript can still steer a large code base: instead of reading every line, he watched replays, played the game and asked the agent to explain failures.

That approach has limits. Playtesting catches gameplay problems, such as a unit that is too strong, but not latent bugs, such as an unhandled edge case in the audio decoder or a memory leak on long sessions. A deterministic simulation helps here, because a bug that reproduces from a seed can be handed to an agent to fix, but it does not replace code review. The honest framing is the author's own: it is a fun, low-stakes project where unreviewed code is acceptable, and the same method would need more scrutiny for anything that handles user data.

There is also a cost question that the post leaves open. Running over a thousand simulated playtests, orchestrating subagents in parallel and regenerating 3D models are all token-heavy. Someone repeating this on a pay-per-token API rather than a subscription with a quota could spend far more than the author did, and he does not publish a figure. If you try something similar, set a budget cap per run and log what each iteration cost, so you can see which prompts were worth it.

What the author is candid about

  • The game is heavily vibe coded and he has reviewed little of the code, and he has little TypeScript experience.
  • Multiplayer is lightly tested.
  • Ultracode consumes a large number of tokens.
  • He says he feels guilty about building software this way and does not feel he has "earned the right" to create something this good.
  • He would not submit it to events like Steam Next Fest, which he sees as flooded with low-effort AI games, and considers Battle Drones too low-effort for that. That connects to the debate in our post on Steam Next Fest, AI slop and vibe-coded games.

What this teaches builders

Direct with outcomes, not code. The biggest jump, version 4, came from a one-line goal and an automated loop: Claude ran simulated playtests and rebalanced. Give agents a way to measure the outcome, and they can iterate without you.

Let the agent build its own instruments. The Radio Probe is a good pattern: before building an audio modem, build a tool that measures what the channel can do.

Use leftover quota deliberately. Version 11 was built in a 45-minute window using spare usage. If your plan resets, a short, scoped feature is a good use of it.

Review what matters. An unreviewed game is low stakes; unreviewed code that handles money or credentials is not. Our Ask HN playbook for shipping AI-written code you do not understand and the earlier Claude port of Command and Conquer Generals show both ends of the spectrum.

Weekly digest3.6k readers

Catch up on AI

Curated AI updates on agents, skills, and MCP — delivered to your inbox. Unsubscribe anytime.

Questions people are asking

Can I try it without installing anything? Yes, play it on GitHub Pages or read the source on GitHub. It is static HTML and JavaScript that works in a browser and as an offline Progressive Web App.

Does it need a server for multiplayer? No. The audio link replaces it, within microphone range.

How much did it cost? The post does not give a dollar figure, only that Ultracode uses a lot of tokens. We will not guess.

Is the code safe to read and reuse? It is on GitHub, but the author says he did not review most of it. Read before reuse.

What is still unknown

  • Token and dollar cost for the full build.
  • How reliable the audio link is outside the author's test devices.
  • Any head-to-head results between models in agent-vs-agent mode.

Related reading

  • Claude Code Ultracode effort mode guide
  • Claude managed agents: dynamic workflows and 1,000 subagents
  • Command and Conquer Generals ported with Claude
  • Steam Next Fest and vibe-coded games
  • Shipping AI-written code you do not understand
  • Gemini 4 Argon agents beat Minecraft

Details are from the author's October 20, 2026 post and may change as the project is updated.

Spotted something out of date? Let us know.

People in this article

  • Simon Willison →Independent open source developer and creator of Datasette
Explore people in AI →
Yash Thakker

Written by

Yash Thakker

Yash is an AI expert with over 300K learners. Join his workshops →

View Yash Thakker in People in AI →

Related posts

Oct 20, 2026

Free My TV: The Open-Source Ad-Free Google TV Home Screen Built With Claude Code

A new MIT-licensed GitHub project, Free My TV, swaps the sponsored Google TV home screen for a clean shelf of your own apps. It was built with Claude Code and gained about 1,500 stars in days. Here is how it works, how to install it, and the risks the README itself lists.

Aug 22, 2026

decayfmt: The File Format That Corrupts Itself Every Time You Open It

u/racialminority's decayfmt corrupts a file a little more every time it's opened — no recovery, no undo. It went viral on r/ClaudeAI for the analog "VHS tape" vibe, but the comment section found something more useful: why the decay isn't actually enforced, and why it's basically diffusion-model noise running in one direction.

Oct 20, 2026

AISafetyHot-Hub: A Daily AI Safety Paper Feed for Your Coding Agent

AISafetyHot-Hub, a GitHub repo with about 1,600 stars, wraps a bilingual AI safety news and paper site as six agent skills, a Claude Code plugin and an MCP endpoint. Here is what it offers, how to install it, and what it does not tell you about how items are chosen.