Skip to content

Releases: simonw/battledrones

v13: Online multiplayer

Choose a tag to compare

@simonw simonw released this 20 Oct 23:29
63e652e

Play this version: v13

Download the build: v13.zip

Online duels: send a friend a link (or let them scan a QR code) and play a 1v1 skirmish against each other over the internet, phone to phone or in any two browsers. Plus a Copy replay JSON button on every end screen, and a new page showing every 3D model in the game.

  • Online duels 🌐: tap Duel a friend online on the Skirmish tab. The lobby shows an invite link and a QR code of it, with Share and Copy buttons. Your friend scans the code with their camera or opens the link, taps Join the battle, and you're both picking openers on your map and mutators, blue against red. It's built on the same lockstep engine as sound duels: both browsers run the whole simulation, and only the players' orders cross the network. They travel through a tiny relay server, about 200 lines of Python on Fly, which pairs the two browsers by room code and forwards messages between them without storing anything. A dropped connection (a network switch, a phone that slept) reconnects by itself and the match carries on. Rematch swaps sides and meets in the same room. Online duels work in every browser, need no microphone, and count toward the same win/loss record as sound duels. PR #38
  • Copy replay JSON 📋: every end screen now has a Copy replay JSON button, whether you won, lost or drew: skirmish, the Daily Op, Last Stand, Ops, AI vs AI, duels, and even a replay you're watching. It copies the whole battle as a record: the setup, every order both sides gave, and a checksum every 10 seconds. Paste it into 🎬 Watch a replay on the menu to watch the match again exactly as it was played. Replays now also support Last Stand and Ops battles. PR #38
  • 3D models page: models.html shows every unit's 3D model beside its info card, to turn and zoom, with its animations to play (walk, aim, fire, fall). A Buildings tab covers every building, plus the Uplink relay and the supply crate. PR #34
  • Sound duel noise warning: the sound duel's lobby now warns that the link plays a constant high-pitched noise for the whole match, which many people find unpleasant and which may cause headaches. PR #36
  • Smaller changes: a sound duel now goes full screen only after the audio link is set up, so the microphone prompt isn't hidden behind it. The project is now under the Apache License 2.0.

Commit: 63e652e

Full changes since v12

v12: Sound duels and new models

Choose a tag to compare

@simonw simonw released this 20 Oct 17:36
d584e35

Play this version: v12

Download the build: v12.zip

Sound duels: two phones on a table play a 1v1 skirmish against each other with no network at all, sending their orders to each other as sound. Plus a cinematic camera for AI vs AI matches, and new Flak Crawler and Mortar models.

A sound duel: the lobby's opener picks with both link meters full, the blue phone's match, the red phone showing Friend paused, and the report's Sound duel section

  • Sound duels 🔊: tap Duel a friend (sound) on the Skirmish tab. One phone taps Host (its map and mutators), the other Join. Both phones run the whole game in lockstep, and only the players' orders cross the air, carried by an acoustic modem. Each phone sends in its own band (around 9.5–12.5 kHz and 16–19 kHz), with a lower band to fall back on. Lay the phones flat 10–30 cm apart: the lobby shows how well each phone hears the other, then both pick an opener. Pausing on one phone shows "Friend paused" on the other, and you can resign from the pause menu. The report has a Sound duel section with link quality and a check that both phones saw the same battle, plus Rematch (which swaps sides) and Save battle. Duels keep their own win/loss record and don't earn XP, medals or stars. The button only shows in browsers that can run the modem (an AudioWorklet and a microphone, over HTTPS). It's been tested end to end in simulation and in the browser, but only a little on real phones so far. The full design is in SOUND-DUEL.md, and the research behind it is in reports/. PR #31
  • Cinematic camera 🎥: AI vs AI matches now direct their own camera, on by default. It follows the busiest fight, cuts between the two armies when things are quiet, and jumps straight to surprises: a calldown, a Goliath rolling out or falling, the first shot at an HQ, an Uplink changing hands, a veteran dying. It zooms in for tight fights and out for spread-out ones. Pan or zoom yourself and it hands you the camera, taking it back 8 seconds after you stop. Toggle it with the 🎥 button above ⚡ or the C key. PR #32
  • New Flak Crawler and Mortar models: both were too easy to mistake for tanks at play zoom. The Flak Crawler is now a spider tank on six walking legs with four guns pitched at the sky, and the Mortar is a siege mortar on four big wheels with one huge banded barrel. Their HUD portraits are reshot to match. Stats and sizes are unchanged. PR #29
  • Stuck touches on iOS fixed: iOS Safari can end a touch without telling the page, for example after an abandoned edge swipe. The game then counted that finger as down for the rest of the match, so tapping to select, box selection and orders all stopped working. It now notices a finger that is no longer on the screen and forgets it. PR #30
  • Smaller changes: radio-probe.html measures a phone-to-phone sound link, ?side=red plays a skirmish as red, and tools/vite-https.config.ts serves the dev build over HTTPS for testing duels on phones.

Before: Flak Crawlers and Mortars read as blue-sided boxes among the tanks After: spider Flak Crawlers and siege Mortars in the same skirmish

Four moments from one AI vs AI match on Riverlands as the cinematic camera follows it: the bridge Uplink early on, a fight at the bridge as supply drops land, a triple kill at the ford and the push into Red's base

Commit: d584e351d9d28c4ba058b78ddcca9b93cd9bcd33

Full changes since v11

v11

v11

Choose a tag to compare

@simonw simonw released this 15 Oct 01:22
f44af97

Play this version: v11

Download the build: v11.zip

Random maps: a seed grows a new symmetric battlefield on any of the five biomes, and you can preview it in full or play it blind. Plus five more battles between AI models, and replay links that keep working as the game changes.

Ten generated maps, two per biome: temperate, desert, arctic, volcanic and tropical

  • Random maps 🎲: a new card on the menu grows a 108×108 map from a seed, on any of the five biomes. The seed picks one of six layouts: a great river, twin moats, a central lake, a canyon with passes, a forked river or badlands mesas. Every map has rivers, bridges, fords, scrap, crystals, roads and Uplinks, and is symmetric between the two sides like the hand-made maps. Its ground is painted in the browser. Seeds are short codes: reroll, type one in (any text works) or share a ?map= link. Last Stand can be played on random maps, but they don't earn career stars. PR #27
  • Preview it, or play it Uncharted: 👁 Preview shows the whole map before you play, with both HQs, the Uplinks and the supply-drop sites marked. 🌫 Uncharted plays it blind: the menu shows only the map's biome and code, unexplored ground is fully shrouded, Uplinks stay hidden until you scout them, and the end screen reveals the map. PR #27
  • Straight diagonal bridges: a diagonal bridge is now one straight deck instead of a staircase, including the ones on Riverlands and the Archipelago. PR #27
  • More agent battles: the agent tools now support the Goliath Armada mutator, with anchor, pack-up and lift orders, and anchored Goliaths that train infantry and harvesters. There are five new showcase battles between Claude Opus 5.5, Claude Haiku 5.5, GPT-6 Astra, GPT-6 Luna and Gemini 4 Argon: watch them from the README.
  • Replays pinned to versions: the showcase replay links now open v11, where each battle is known to replay exactly. Other versions of the game no longer warn about every replay recorded on different game code. They check it in the background and warn only if it really plays out differently, with a link to the version where it doesn't. PR #28
  • Smaller changes: the prompts used to build the game so far are collected in web-session-prompts.md, and npm run mapgen writes PNG previews of generated maps.

The Preview overlay: a generated temperate map, Hawthorn Delta, with both HQs, the Uplinks and supply-drop sites marked An Uncharted match starting: the base in a pool of light, everything else shrouded

Commit: COMMIT

Full changes since v10

Goliaths and agent battles

Choose a tag to compare

@simonw simonw released this 13 Oct 21:14
360595c

Play this version: v10

Download the build: v10.zip

A new mobile-base mech, the Goliath, and agent battles, where AI models play Battle Drones against each other.

A Gantry building a Goliath in stages, then the Goliath walking out

  • The Goliath and the Gantry: the Goliath is a mobile base. It strides on planted feet, digs in on hydraulics and stabiliser spikes, can be lifted by Condors, and topples when it dies. The Gantry builds it in stages you can watch. A side that loses its HQ and every Goliath loses the game. The enemy AI builds and fights with Goliaths too, and they come with their own HUD panel, radio lines, base alarms, after-action report entries and medals. PR #23
  • Three new mutators: Nomads 🦿, where each side starts with an anchored Goliath instead of a base. Robot Love 💘, where two enemy Goliaths that meet fall in love and the battle ends in a draw. Goliath Armada 🚁, where each side starts with nothing but four Goliaths in the air, each carried by two Condors. PR #26
  • Agent battles: an arena where AI models play each other through tools that only show what their side can see, in 5-second rounds. It includes an llm-tools-battledrones plugin for LLM, battle records, replays from the game menu, ?replay= links and showcase battles. The simulation maths is now deterministic, so a replay plays out the same in every browser. See AGENT-BATTLES.md.
  • New models and portraits: new Raptor, Lancer and Hornet models. HUD portraits are now rendered from the 3D models in blue and red.
  • Smaller changes: the Titan is renamed the Mastodon, there's an iOS Home Screen icon (PR #17), and map terrain URLs are versioned so the service worker no longer serves stale terrain paint.

Two Condors lifting a Goliath Robot Love: a blue and a red Goliath meet in a burst of hearts

Commit: 360595c

Full changes since v9

A more natural Archipelago

Choose a tag to compare

@simonw simonw released this 11 Oct 03:55
3ca11d8

Play this version: v9

Download the build: v9.zip

The Archipelago expands from 96×96 to 108×108, giving its gulf islands more breathing room and a more natural landscape.

image
  • Redesigned gulfs and islands: distinct island shapes, wider stretches of open sea, headlands, coves, reef shoals and limestone sea stacks, with freshly repainted terrain. The central lagoon, two bridges and HQ-to-bridge distances are preserved, and the map remains symmetric between the two sides. PR #15
  • Correct fight directions: off-screen fight arrows now point south, southwest or southeast correctly when a battle is behind the tilted camera. PR #14
  • Playable release archive: GitHub Actions now publishes the current game and every tagged version at its own URL, with downloadable ZIPs reused to speed up future deployments. Automated tests run separately. PR #12, PR #13

Commit: 3ca11d8

Full changes since v8

Archipelago

Choose a tag to compare

@simonw simonw released this 10 Oct 21:21
1f4f25d

Play this version: v8

A large tropical island map built around transporting infantry to seven Uplinks, maintaining garrisons and controlling the air. Includes island-aware AI and substantial pathfinding improvements.

Historical milestone: October 10, 2026 (Pacific Time).

Pull request: #11

Commit: 1f4f25d

Robot infantry and dropships

Choose a tag to compare

@simonw simonw released this 10 Oct 21:21
0e9d6c6

Play this version: v7

Troopers, Rocket Squads and Snipers; the Assembly Bay and Condor transport. Adds squad casualties, woodland concealment, crushing, airborne deployment and Bot Swarm survival waves.

Historical milestone: October 10, 2026 (Pacific Time).

Pull request: #7

Commit: 0e9d6c6

The visual polish update

Choose a tag to compare

@simonw simonw released this 10 Oct 21:21
6d4261f

Play this version: v6

A distinct refinement of the initial 3D look: textured cliffs, richer terrain and lighting, clearer models, improved explosions, overlays and HUD, plus more accurate fog-of-war presentation.

Historical milestone: October 9, 2026 (Pacific Time).

Pull request: #5

Commit: 6d4261f

Battle Drones goes 3D

Choose a tag to compare

@simonw simonw released this 10 Oct 21:21
e8db579

Play this version: v5

Replaces Phaser with three.js. Units, buildings and landscapes become 3D, with animated turrets, aircraft banking, terrain elevation, shadows and 3D effects.

Historical milestone: October 8, 2026 (Pacific Time).

Pull request: #4

Commit: e8db579

The Fun Update

Choose a tag to compare

@simonw simonw released this 10 Oct 21:21
2afb7cb

Play this version: v4

Openers, commander powers, Uplinks, supply drops and salvage; adaptive music and voices; Last Stand, eight Ops missions, career progression, mutators and daily challenges.

Historical milestone: October 7, 2026 (Pacific Time).

Pull request: #3

Commit: 2afb7cb