<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/battle-drones-a-vibe-coded-rts-with-audio-based-multiplayer-q6u0zp4ie" -->

---
title: Battle Drones—a vibe coded RTS with audio-based multiplayer
description: Simon Willison built Battle Drones, a vibe coded browser RTS inspired by Command & Conquer, using Claude Code across 12 major iterations and 321 commits. The...
canonical: https://daily.dev/posts/battle-drones-a-vibe-coded-rts-with-audio-based-multiplayer-q6u0zp4ie
copyright: © 2026 Daily Dev Ltd.
terms: https://daily.dev/tos/
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Battle Drones—a vibe coded RTS with audio-based multiplayer | daily.dev
og:description: Simon Willison built Battle Drones, a vibe coded browser RTS inspired by Command & Conquer, using Claude Code across 12 major iterations and 321 commits. The...
og:url: https://daily.dev/posts/battle-drones-a-vibe-coded-rts-with-audio-based-multiplayer-q6u0zp4ie
og:image: https://api.daily.dev/og/posts/q6U0zP4Ie.png
og:image:alt: Battle Drones—a vibe coded RTS with audio-based multiplayer
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Battle Drones—a vibe coded RTS with audio-based multiplayer

**[Simon Willison](https://daily.dev/sources/simonwillison)** · 17 min read · 0 upvotes · 0 comments

## Summary

Simon Willison built Battle Drones, a vibe coded browser RTS inspired by Command & Conquer, using Claude Code across 12 major iterations and 321 commits. The game runs on mobile and desktop, includes 3D models rendered with three.js, agent-vs-agent battles between LLMs, and multiplayer synced via audio between two nearby devices. He reviewed almost none of the TypeScript code himself. One key prompt, 'Make it a LOT more fun,' triggered a long Ultracode run that cut undecided games after 25 minutes from 14% to 0.9% in 1,200 AI-vs-AI test matches.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://simonwillison.net/2026/Oct/20/battledrones>

## Questions this post answers

### Can Claude Code actually build a fun, playable game through vibe coding alone?

Yes. After early versions were technically functional but not fun, a single prompt, 'Make it a LOT more fun,' triggered a long Claude Opus 5.5 Ultracode run that ran over a thousand simulated playtests and rebalanced the game. Across 1,200 AI-vs-AI test matches, games undecided after 25 minutes dropped from 14% to 0.9%, and comeback wins from an 800+ scrap deficit rose from 24% to 46%.

_Following real vibe coding outcomes like this on daily.dev helps you judge what AI agents can actually ship._

### How can two phones do multiplayer without a server using sound?

Two devices within microphone range synchronize game state using an audio modem system transmitted as sound signals, requiring no backend server. The approach originated from a prior proof of concept called Chirp Pong and was extended into Battle Drones by cloning that code and adapting it, then measuring bandwidth with a custom 'Radio Probe' tool before building the full implementation.

_Developers exploring serverless peer-to-peer techniques can track experiments like this one on daily.dev._

### Why would deterministic game simulation break across different web browsers?

Chrome and Safari returned very slightly different results from Math.sin() and Math.cos(), which desynchronized game replays and multiplayer state. The fix was replacing these with custom deterministic math functions, ensuring the simulation produced identical results regardless of browser, which matters for any replay or multiplayer feature relying on exact state reproduction.

_If you're debugging cross-browser determinism bugs, daily.dev surfaces real-world fixes like this one._

## Similar posts on daily.dev

- [Using AI to build a tactical shooter](https://daily.dev/posts/using-ai-to-build-a-tactical-shooter-cs7vntgq5) · Jacob Kaplan-Moss · 0 upvotes · 0 comments

---

Tags: [#ai-agents](https://daily.dev/tags/ai-agents), [#game-development](https://daily.dev/tags/game-development), [#claude-code](https://daily.dev/tags/claude-code), [#vibe-coding](https://daily.dev/tags/vibe-coding), [#threejs](https://daily.dev/tags/threejs)

[View this post on daily.dev](https://daily.dev/posts/battle-drones-a-vibe-coded-rts-with-audio-based-multiplayer-q6u0zp4ie)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Battle Drones—a vibe coded RTS with audio-based multiplayer","url":"https://daily.dev/posts/battle-drones-a-vibe-coded-rts-with-audio-based-multiplayer-q6u0zp4ie","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/battle-drones-a-vibe-coded-rts-with-audio-based-multiplayer-q6u0zp4ie"},"datePublished":"2026-10-20T19:40:48.968Z","dateModified":"2026-10-20T20:51:18.549Z","description":"Simon Willison built Battle Drones, a vibe coded browser RTS inspired by Command \u0026 Conquer, using Claude Code across 12 major iterations and 321 commits. The...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/c73cb08ead1c71980153d20901b3b20d?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/c73cb08ead1c71980153d20901b3b20d?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Simon Willison","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Simon Willison","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/cf12b897300740218b35f49a6309ec5b","url":"https://daily.dev/sources/simonwillison"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/battle-drones-a-vibe-coded-rts-with-audio-based-multiplayer-q6u0zp4ie","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"ai-agents,game-development,claude-code,vibe-coding,threejs","timeRequired":"PT17M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Simon Willison","item":"https://daily.dev/sources/simonwillison"},{"@type":"ListItem","position":3,"name":"Battle Drones—a vibe coded RTS with audio-based multiplayer"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/battle-drones-a-vibe-coded-rts-with-audio-based-multiplayer-q6u0zp4ie#faq","mainEntity":[{"@type":"Question","name":"Can Claude Code actually build a fun, playable game through vibe coding alone?","acceptedAnswer":{"@type":"Answer","text":"Yes. After early versions were technically functional but not fun, a single prompt, 'Make it a LOT more fun,' triggered a long Claude Opus 5.5 Ultracode run that ran over a thousand simulated playtests and rebalanced the game. Across 1,200 AI-vs-AI test matches, games undecided after 25 minutes dropped from 14% to 0.9%, and comeback wins from an 800+ scrap deficit rose from 24% to 46%. Following real vibe coding outcomes like this on daily.dev helps you judge what AI agents can actually ship."}},{"@type":"Question","name":"How can two phones do multiplayer without a server using sound?","acceptedAnswer":{"@type":"Answer","text":"Two devices within microphone range synchronize game state using an audio modem system transmitted as sound signals, requiring no backend server. The approach originated from a prior proof of concept called Chirp Pong and was extended into Battle Drones by cloning that code and adapting it, then measuring bandwidth with a custom 'Radio Probe' tool before building the full implementation. Developers exploring serverless peer-to-peer techniques can track experiments like this one on daily.dev."}},{"@type":"Question","name":"Why would deterministic game simulation break across different web browsers?","acceptedAnswer":{"@type":"Answer","text":"Chrome and Safari returned very slightly different results from Math.sin() and Math.cos(), which desynchronized game replays and multiplayer state. The fix was replacing these with custom deterministic math functions, ensuring the simulation produced identical results regardless of browser, which matters for any replay or multiplayer feature relying on exact state reproduction. If you're debugging cross-browser determinism bugs, daily.dev surfaces real-world fixes like this one."}}]}
```

