Battle Drones – a vibe coded RTS with audio-based multiplayer

Simon Willison has released a Command & Conquer style real-time strategy game called Battle Drones. It is playable in a browser and…

By Vane October 20, 2026 4 min read
Battle Drones – a vibe coded RTS with audio-based multiplayer

Simon Willison has released a Command & Conquer style real-time strategy game called Battle Drones. It is playable in a browser and supports multiplayer between two nearby devices using audio to synchronise game state.

The project started with a goal to build a mobile-friendly RTS. Willison wanted to recapture the magic of the 1995 original and Red Alert. After 12 major iterations and 321 commits from coding agents, primarily Claude Code, the browser-based game now works on mobile and desktop. It includes multiple play modes, several maps, a random map generator, and local multiplayer for phones within microphone range.

Features

The current build includes 9 buildings, 7 ground vehicles, 6 aerial vehicles, and 3 infantry units. All are 3D models available to browse. The game features fog of war and requires different weapons to target aerial versus ground vehicles.

  • Six maps across five biomes: temperate, desert, arctic, volcanic, and tropical
  • A random map generator
  • Skirmish mode for red versus blue teams on a rotationally symmetrical map
  • Last Stand mode where one player holds out against waves of enemies
  • Area effect weapons including Barrage, EMP, Drop Pod, and Sky Hammer
  • Crate drops providing bonus resources
  • In-game music that responds to events and intensifies as fighting begins
  • Different AI personalities: Balanced, Rush, Air Swarm, Boom, Skyforce, and Ironclad
  • AI versus AI mode to watch personalities play each other
  • The Goliath, a giant stomping mech with laser eyes, arm cannons, and the ability to establish a new base
  • Mutators that add extra rules or twists
  • A Daily Op challenge
  • Ranks and achievements known as Medals
  • Agent versus Agent mode where two large language models play against each other
  • Multiplayer mode based on two nearby phones communicating via audio messages

Development process

Battle Drones is heavily vibe coded. Willison has reviewed almost none of the code, and the project is built in TypeScript, a language he has hardly used. He has playtested it extensively, however, and it has undergone a large number of iterations.

v1: the initial prototype

Willison started with Claude Fable 5 in July. He asked the model to build a mobile-friendly RTS game called Battle Drones where two armies of drones battle for territory and resources. He requested an MVP design and asked the model to ask questions first.

A shared transcript of the session is available online. Willison provided an environment variable with an OpenAI API key and told the model to use the Image Generation API for assets. This produced basic sprites.

The first version is recognisable as an RTS with building mechanics, the ability to select and direct units, and a basic AI opponent. It was barely a proof of concept and was not fun to play. The early versions used the Phaser 2D game framework.

v2: full sprites

The second version added sprites for all vehicles and the AI versus AI mode. This allowed the model to watch the game play without direct human control. The model proved reasonably competent at prompting OpenAI’s image models to generate the assets.

v3: varied terrain

By October, the graphics were still boring and the gameplay was not much fun. Willison upgraded to Claude Opus 5.5. He prompted the model to massively improve the game, make graphics and gameplay better, render new graphics using the latest OpenAI GPT image API, add new unit types, balance the gameplay, add new buildings, and improve terrain.

This resulted in five new maps with generated background tiles in various styles. Opus also regenerated the sprites, making them much more visually appealing. The map now features snow, ice, and broken ice textures. The vehicles and buildings received a cosmetic upgrade.

It still was not very fun to play. Willison found himself getting bored pretty quickly.

v4: the fun update

The project confirmed Willison’s belief that coding agents can build things that look like games but cannot make something genuinely compelling to play. He decided to give the models a proper chance to prove him wrong.

He prompted Opus 5.5 on his phone with a single instruction: “This game isn’t fun enough yet. Make it a LOT more fun.” He ran this in Ultracode mode, where Claude Code runs dynamic workflows. A dynamic workflow is a JavaScript script that orchestrates many subagents at once.

This kicked off many hours of work. Willison started it in the evening and did not get a playable result back until late the next morning. The results were spectacular.

Willison asked the model to write its own release notes. Highlights include:

Every skirmish and Daily Op now opens with a choice, gives the side that’s losing a way back, and pulls the armies into the middle of the map. There are also two new ways to play.

  • Openers: pick Blitz, Industry or Air Wing before the clock starts.
  • Call-down powers: Barrage, EMP, Drop Pod and the Sky Hammer orbital strike.
  • Objectives and salvage: Uplink relays, supply drops and wrecks worth scrap.
  • Feel: combat juice, adaptive music, unit voices and an announcer.
  • Command: battle alerts, game speed, saved squads and touch placement.
  • New modes: Last Stand survival waves and an 8-mission Ops campaign.

What it means

The project demonstrates that coding agents can produce playable games with complex mechanics, but the initial output often lacks the engagement required for actual enjoyment. Willison found that a specific prompt to prioritise fun was necessary to reach a level of quality he could enjoy playing himself.

Scroll to Top