Battle Drones: zvukový multiplayer mezi telefony a WebSocket alternativa
Experiment Simona Willisona synchronizuje dvě instance RTS pomocí zvukového modemu. Kvůli vysokým tónům později přibyl také bezstavový síťový relay.
Simon Willison popsal experiment Battle Drones, prohlížečovou real-time strategii vytvořenou převážně pomocí Claude Code. Její neobvyklý režim propojí dva blízké telefony bez herního serveru: zařízení si stav deterministické simulace předávají jako zvukové zprávy přes reproduktor a mikrofon.
Willison v době zveřejnění funkci teprve krátce zkoušel. Uvedl, že ji otestoval mezi notebooky, iPhony a iPady, nikoli že prošla širším nebo systematickým testováním. Článek je proto zprávou autora prototypu, ne nezávislým měřením spolehlivosti zvukového přenosu.
Pro multiplayer nestačil jen zvukový modem
Základem byla starší ukázka Chirp Pong. Claude Code nejprve vytvořil nástroj Radio Probe pro měření dostupné propustnosti mezi dvěma zařízeními a poté nad výsledkem postavil zvukový modem pro Battle Drones. Výhodou je provoz čistě ze statického HTML bez serveru, nevýhodou nutnost fyzické blízkosti a slyšitelné vysokofrekvenční tóny.
Pro replay a multiplayer musela být samotná herní simulace deterministická. Willison uvádí konkrétní problém: Chrome a Safari vracely u funkcí Math.sin() a Math.cos() nepatrně odlišné výsledky, které postupně rozpojily stav obou her. Generovaný kód proto tyto funkce nahradil vlastními verzemi se shodným výsledkem napříč prohlížeči.
Po praktickém hraní se ukázal i méně technický limit — vysoké modemové zvuky způsobily jedné hráčce bolest hlavy. Willison proto přidal varování a následně samostatný online režim. Pokus s WebRTC se mu nepodařilo rozchodit ani mezi vlastními zařízeními na stejné Wi-Fi, takže vznikl jednoduchý bezstavový WebSocket relay na Fly.io. V tomto režimu hráč sdílí URL místnosti nebo QR kód; nejde o tutéž zvukovou cestu prodlouženou přes internet.
Co vypovídá 1 200 simulovaných zápasů
Battle Drones prošla dvanácti hlavními iteracemi a 321 commity kódovacích agentů. Po výzvě „Make it a LOT more fun“ spustil Claude při vývoji verze 4 přes tisíc simulovaných zápasů a upravil jednotky i herní mechaniky. V sadě 1 200 AI-vs-AI zápasů na obtížnost Normal klesl podíl her nerozhodnutých po 25 minutách ze 14 % na 0,9 %. Podíl vítězství strany, která během hry zaostávala alespoň o 800 jednotek suroviny, vzrostl z 24 % na 46 %.
Tato čísla popisují automatické vyvažování verze 4, nikoli test zvukového multiplayeru ani hodnocení lidské zábavnosti. Jde o užitečné provozní metriky pro tempo a možnost návratu do hry, ale nelze z nich samostatně odvodit, že je hra pro hráče zábavnější.
Prototyp, ne hotová multiplayerová platforma
Aktuální hra podle autora nabízí devět budov, sedm pozemních a šest vzdušných vozidel, tři pěší jednotky, několik map a režimy Skirmish a Last Stand. Od páté iterace používá Three.js a 3D modely vytvořené v TypeScriptu.
Willison zároveň otevřeně píše, že zkontroloval jen malou část vygenerovaného kódu a v herním vývoji nemá hlubší zkušenosti. Nejpřenositelnější poznatek proto není tvrzení o kvalitě hotové hry, ale technický vzor: synchronizovat co nejmenší vstupy nad deterministickou simulací, testovat shodu napříč prohlížeči a mít alternativu pro situace, kdy je původní přenosový kanál prakticky nepříjemný.