Battle Drones——一款通过氛围编程打造、支持音频多人游戏的即时战略游戏
原题Battle Drones—a vibe coded RTS with audio-based multiplayer
读前速览
Simon Willison 记录了 Battle Drones 的开发过程:他通过 12 轮氛围编程,借助 Claude Code 打造出一款完整可玩的 3D 即时战略游戏,其中包含各具特色的 AI、基于音频的本地多人游戏,以及 LLM 智能体对战。
通过迭代提示词进行氛围编程,能够打造真正有趣且复杂的游戏
经过 12 个版本的迭代和编程智能体提交的 321 次代码变更,基础即时战略游戏原型发展成一款内容完善的 3D 游戏,拥有平衡的玩法、多种模式和成长系统。转折点是一条「让它有趣得多」的提示词:它触发了一场持续整夜的 Ultracode 编程任务,进行了 1,000 多次模拟试玩,以重新平衡单位并加入开局策略、呼叫支援能力和自适应音乐等增强游戏吸引力的机制。
基于音频的多人游戏让设备间的本地联机无需任何配置
Battle Drones 延续 Chirp Pong 实验,通过声音在附近的手机或平板电脑之间传输游戏状态。玩家无需设置网络、注册账号或使用服务器——只要两台设备处于彼此的麦克风收音范围内,就能立即开始游戏。这展示了网页游戏实现轻量级本地多人游戏的一种新颖方式。
LLM 智能体对战打造了可复现的模型评估环境
智能体对战系统让不同的 LLM(例如 Claude Haiku 5.5 与 GPT-6 Luna)使用相同的工具,观察游戏状态(同时遵守战争迷雾规则)并下达指令。对战过程会完整记录并支持回放,调试查看器还能展示底层的提示词和回复日志。这让游戏成为一个可控且可观测的竞技场,可用于实时比较模型的推理能力和战略水平。
即使 AI 编程高度自主,精心设计提示词和把控架构仍不可或缺
Willison 几乎没有审查代码,但通过关键提示词为项目指明方向:他要求设计特定地图,以鼓励玩家使用较少出场的单位(例如适合步兵和秃鹰运输机的群岛地图);在平衡约束下共同构思歌利亚机甲的机制;并定义智能体对战的架构。AI 负责实现、生成素材和试玩测试,而人的意图则塑造了产品的创意方向与整体一致性。
完整摘要
Simon Willison 详细介绍了 Battle Drones 的开发过程。这是一款《命令与征服》风格的即时战略游戏,几乎完全通过数月间向 Claude Code 输入提示词构建而成。项目从基础的 2D 原型起步,经过 12 个主要版本的迭代,最终发展为一款精致的 3D 游戏,包含 9 种建筑、16 种单位、6 张手工设计的地图,以及随机地图生成器;游戏还提供多种模式(遭遇战、最后坚守、每日行动)、各具特色的 AI 个性,以及一台可作为移动基地的巨型歌利亚机甲。项目实现了两种新颖的多人游戏方式:一种是设备间通过音频同步状态(扩展了早期的 Chirp Pong 实验),另一种是智能体对战系统,不同 LLM 通过工具调用接口控制对立军队,并支持回放分析。文章附有各版本的可玩链接、使用过的提示词,以及对氛围编程过程的思考。值得一提的是,一条「让它有趣得多」的提示词触发了一场持续整夜的 Ultracode 编程任务,进行了 1,000 多次模拟试玩来重新平衡游戏。
2026年10月20日20th October 2026
我最近一次凭感觉编程做的游戏实验,是一款《命令与征服》风格的 RTS(即时战略)游戏,名叫《战斗无人机》(在这里游玩)。和我之前的实验不同,这款游戏玩起来还挺有意思的。我有点不好意思承认,我是通过告诉 Claude“让它有趣得多”才做到这一点的。它还支持附近设备之间通过音频同步游戏状态,实现多人游戏!下面是我目前做出来的内容,以及一路上学到的一些东西。My latest vibe coded game experiment is a Command & Conquer style RTS (Real Time Strategy) game called Battle Drones (play it here). Unlike my previous experiments, this one is actually fun to play. I’m somewhat embarrassed to admit that I got there by telling Claude to “Make it a LOT more fun”. It also supports multiplayer between nearby devices using audio to synchronize game state! Here’s what I’ve built so far, and some of the things I learned along the way.
- 战斗无人机
- 我是如何构建它的
- v1:初始原型
- v2:完整精灵图
- v3:多样化地形
- v4:趣味更新
- v5: Battle Drones goes 3D
- v8:群岛
- v10:Goliath 与智能体对战
- 智能体对战
- v11:随机地图
- v12:通过声音实现多人游戏
- 一些想法
战斗无人机Battle Drones
我最初的目标是制作一款能在手机上玩的即时战略游戏,风格类似《命令与征服》。我对1995年的原版怀有美好回忆(我也喜欢《红色警戒》),希望能重现一点当年的魅力。My initial goal was to build an RTS game I could play on my phone, in the style of Command & Conquer. I have fond memories of the 1995 original (I liked Red Alert too) and wanted to recapture a little bit of the magic.
经过 12 次重大迭代(以及编程代理提交的 321 次代码更改,其中主要由 Claude Code 完成),我现在拥有了一款基于浏览器的游戏,可在手机和桌面设备上运行,包含多种游戏模式和多张地图(包括随机地图生成器),甚至还支持两台设备在彼此麦克风收音范围内进行多人游戏。After 12 major iterations (and 321 commits by coding agents, mainly Claude Code) I now have a browser-based game that works on mobile and desktop, has multiple play modes, several maps (including a random map generator) and even supports multiplayer for two devices within microphone range of each other.
这是 Battle Drones 在桌面浏览器中运行的视频演示:Here’s a video demo of Battle Drones running in a desktop browser:
目前为止的功能包括:Features so far include:
- 9 栋建筑、7 辆地面载具、6 架空中载具、3 个步兵单位——全部都是 3D 模型,可在此处浏览9 buildings, 7 ground vehicles, 6 aerial vehicles, 3 infantry units—all 3D models, which you can browse here
- 战争迷雾Fog of war
- 需要使用不同的武器来攻击空中或地面载具。Different weapons are needed to target aerial or ground vehicles
- 六张地图,横跨五种生物群系——温带、沙漠、极地、火山和热带Six maps, across five biomes—temperate, desert, arctic, volcanic, tropical
- 随机地图生成器A random map generator
- 遭遇战模式——红队对蓝队,在旋转对称的地图上Skirmish mode—red vs. blue on a rotationally symmetrical map
- 最后坚守模式——一名玩家尽可能抵挡一波又一波的敌人。Last Stand mode—one player holds out against as many waves of enemies as possible
- 范围效果武器:弹幕、EMP、空投舱、天锤Area effect weapons: Barrage, EMP, Drop Pod, Sky Hammer
- 掉落箱附带额外资源Crate drops with bonus resources
- 会对游戏事件作出响应的音乐——战斗爆发时,音乐也会变得更加激烈。In-game music that responds to events—it gets more intense as fighting breaks out
- 不同的游戏内 AI 性格(均衡型、速攻型、空中蜂群型、爆兵型、天空之力型、铁甲型)Different in-game AI personalities (Balanced, Rush, Air Swarm, Boom, Skyforce, Ironclad)
- AI 对战 AI 模式,观看这些角色彼此较量。AI vs. AI mode, to watch those personalities play each other
- 歌利亚——一台巨型跺地机甲,拥有激光眼和手臂炮,还能建立一个新基地。The Goliath—a giant stomping mech with laser eyes and arm cannons and the ability to establish a new base
- 增加额外规则或变化的变异因子Mutators that add extra rules or twists
- 一个“每日行动”挑战A “Daily Op” challenge
- 等级与成就(奖章)Ranks and achievements (Medals)
- 代理对代理模式:两个大语言模型可以相互对战《Battle Drones》Agent vs. Agent mode where two LLMs can play Battle Drones against each other
- 一种基于两部近距离手机通过音频消息进行通信的多人游戏模式,是我早先对 Chirp Pong 的实验的延伸。A multiplayer mode based on two nearby phones communicating via audio messages, an extension of my earlier experiment with Chirp Pong
我是如何构建它的How I built this
《Battle Drones》基本上是凭感觉写出来的——我几乎没审查过代码,而且它是用一种我自己几乎没怎么用过的语言(TypeScript)编写的。不过我已经对它进行了不少实际测试,而且自从我启动这个项目以来,它经历了大量迭代。Battle Drones is heavily vibe coded—I’ve reviewed almost none of the code, and it’s built in a language (TypeScript) that I’ve hardly used myself. I’ve playtested it quite a bit though, and it’s been through a large number of iterations since I started the project.
以下是该项目迄今为止的大致历程,包括关键提示词和对话记录链接。Here’s a rough history of the project so far, including key prompts and links to transcripts.
v1:初始原型v1: the initial prototype
我在七月份开始使用 Claude Fable 5:I started out with Claude Fable 5 back in July:
我们要打造一款适合移动设备游玩的 RTS 游戏,采用《命令与征服》风格,名为《Battle Drones》。游戏中,两支由无人机组成的军队(包括飞行无人机和地面无人机)将为争夺领土和资源而战。我们先从 MVP 设计开始吧,请问我一些问题。
We are going to build a mobile friendly RTS game - command and conquer style - called Battle Drones, in which two armies of drones (both flying and ground-based) battle for territory and resources
Let's start with a MVP design, ask me some questions
这是一个共享的转录记录。我给 Claude Code for Web 设置了一个包含 OpenAI API 密钥的环境变量,并让它使用 OpenAI Image Generation API 生成素材,于是它为我生成了一些基础精灵图。Here’s a shared transcript. I’d given Claude Code for Web an environment variable with an OpenAI API key and told it to use the OpenAI Image Generation API for assets, which got me some basic sprites.
你可以在这里试试 v1——它看起来是这样的:You can try v1 here—it looked like this:

它显然是一款即时战略游戏(RTS),具备建筑机制、选择和指挥单位的功能,以及可供对战的基础 AI。It’s recognizable as an RTS, has building mechanics and the ability to select and direct units, and a basic AI to play against.
这个初版不过是个勉强称得上概念验证的作品,玩起来一点也不好玩。This first version was barely a proof of concept, and it wasn’t any fun to play.
Claude 在这些早期版本中使用了 Phaser 2D 游戏框架。我直到经过好几轮迭代后才意识到这一点!Claude used the Phaser 2D game framework for these early versions. I didn’t even realize this until several iterations later!
v2:完整精灵图v2: full sprites
第二个版本(在这里试用 v2)为所有车辆添加了精灵图和“AI 对战 AI”模式,因此我可以观看游戏自动进行,而不必亲自直接操控。The second version (try v2 here) added sprites for all of the vehicles and the “AI vs. AI” mode, so I could watch the game playing without having to directly control it myself.
Claude 在提示 OpenAI 的图像模型生成精灵图方面表现得相当不错。你可以在 public/assets/sprites 文件夹中浏览 v2 精灵图。Claude proved reasonably competent at prompting OpenAI’s image models to generate sprites. You can browse the v2 sprites in the public/assets/sprites folder.

v3:多样化地形v3: varied terrain
这依然没什么乐趣,图形也很无聊。那时已经到了十月,我也升级到了 Claude Opus 5.5。我对它说:It still wasn’t much fun, and the graphics were boring. It was now October, and I had upgraded to Claude Opus 5.5. I told it:
大幅改进这款游戏。提升画面和玩法(同时确保适合在移动设备上运行)。使用最新的 OpenAI GPT 图像 API(查找相关详情)生成新图像,并使用环境变量中的 API 密钥。添加新的单位类型,并进一步平衡游戏玩法。还要添加新的建筑,以及更丰富多样的地形。
Massively improve this game. Make the graphics and gameplay better (keep it mobile friendly). Render new graphics using the latest OpenAI GPT image API (lookup details) with the API key in the environment variable. Add new unit types and balance the gameplay better. Also add new buildings and better, more varied terrain.
这最终生成了五张新地图,其背景图块采用了多种风格,可在此处查看。Opus 还重新生成了精灵图,让它们看起来更美观。你可以在此处试用 v3——它看起来是这样的:This resulted in five new maps with generated background tiles in a variety of styles, visible here. Opus also regenerated the sprites, making them much more visually appealing. You can try v3 here—it looks like this:

这开始越来越像一款真正的游戏了!不过玩起来还是不太有趣——我发现自己很快就觉得无聊了。This is starting to feel like a real game! It still wasn’t very fun to play though—I found myself getting bored pretty quickly.
v4:趣味更新v4: the fun update
到目前为止,我对 Battle Drones 的实验印证了我先前的看法:编程代理可以做出看起来像游戏的东西,却无法真正打造出引人入胜、让人想玩的游戏。So far my Battle Drones experiment was confirming my previous belief that coding agents can build a thing that looks like a game but can’t actually make something that’s genuinely compelling to play.
我在晚餐时把这个理论分享给了某个人,随后心想,应该给这些模型一个好好证明我错了的机会。我在手机上向 Opus 5.5 输入了提示:I shared this theory with someone over dinner, and then thought to myself that I should give the models a proper chance to prove me wrong. I prompted Opus 5.5 on my phone:
这个游戏还不够好玩。让它变得好玩得多。
This game isn't fun enough yet. Make it a LOT more fun.
这次我是在 Ultracode 模式下运行的,在这种模式中,Claude Code(这里指 Claude Code for Web)会运行“动态工作流”,其文档中的描述如下:This time I was running in Ultracode mode, where Claude Code (in this case Claude Code for Web) runs “dynamic workflows”, described in their docs as:
动态工作流是一个可同时协调多个子代理的 JavaScript 脚本。A dynamic workflow is a JavaScript script that orchestrates many subagents at once.
这项工作一做就是好几个小时。我傍晚开始,直到第二天上午很晚才得到一个可玩的结果。不过成果令人惊艳。This kicked off many hours of work. I started it in the evening and didn’t get a playable result back until late into the next morning. But the results were spectacular.
你可以在这里试用 v4——它看起来是这样的:You can try v4 here—it looks like this:

我让 Claude 为自己撰写了发行说明——以下是其中的亮点:I had Claude write its own release notes—here are the highlights:
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.
- Progression: heroes, an after-action report with awards, a career, 7 mutators and a Daily Op.
Fights run longer and swing more. In 1,200 AI-vs-AI test matches on Normal, games still undecided after 25 minutes fell from 14% to 0.9%. The share of wins by a side that had been 800+ scrap behind rose from 24% to 46%.
Claude 花了这么长时间,部分原因是它进行了上千场模拟测试,并根据测试结果重新平衡现有单位、添加新单位,并引入新功能。Part of the reason Claude took so long was that it ran over a thousand simulated playtest sessions, and used the results to rebalance the existing units, add new ones, and introduce new features.
v5: Battle Drones goes 3D
在“让它变得有趣得多”大获成功后,我决定更有雄心一些:After the success of Ultracode at “Make it a LOT more fun”, I decided to be more ambitious:
将这款游戏移植到 three.js,并为所有建筑、车辆和地形制作 3D 模型。
Port this game to three.js with 3D models for all of the buildings and vehicles and landscapes
那是又一次通宵运行。我醒来时看到的是这个 v5 版本:That was another overnight run. I woke up to this v5 version:

全新的 3D 模型完全由 Claude 使用 TypeScript 代码构建而成。The new 3D models were entirely constructed by Claude in TypeScript code.
v6(在此体验 v6)增加了一些视觉效果上的润色。v7(体验 v7)加入了机器人步兵(突击兵、火箭小队、狙击手)和一架名为“秃鹰”的运兵机。v6 (play v6 here) added some more visual polish. v7 (play v7) added robot infantry (troopers, rocket squads, snipers) and a “Condor” troop carrying aircraft.
v8:群岛v8: Archipelago
我开始为自己实际上对游戏设计投入如此之少而感到内疚——过去几次发布中,我确实只是一直在说“让它更有趣些”和“再润色一下视觉效果”。I was beginning to feel guilty at how little actual design input I had into the game—it really had been a case of me saying “make it more fun” and “add visual polish” for the past few releases.
我注意到,AI 并不常使用 v7 中新增的步兵和运兵飞机——没有什么很充分的战略理由要用它们。I’d noticed that the AI didn’t use the new infantry and troop carrying aircraft from v7 very often—there wasn’t a great strategic reason to use them.
如果我们能有一张新地图,并加入一种新游戏机制,积极鼓励玩家让秃鹰运输机搭载步兵机器人并派它们进入地图,那就太棒了。It would be neat if we had a new map with a new game mechanic that actively encouraged players to load up Condors with infantry robots and send them out into the map.
这就产生了我迄今为止最长的一条提示词:This resulted in my longest prompt yet:
设计一张新地图。目标是创造不同的战略激励,鼓励玩家使用步兵、秃鹰运输机和空中载具。为此,地图上的采集资源将有限,但会有更多的上行链路点——不过这些上行链路点都位于岛上,陆上载具和步兵无法抵达。也不能使用空中载具占领这些上行链路点。要占领它们,唯一的办法就是乘坐秃鹰运输机把步兵送过去。各支军队开局时都会有一架秃鹰运输机和一支小队。如果某支军队没有秃鹰运输机,就会免费获得一架:它将从最靠近其总部的地图边缘飞来,并在那里降落。这架免费秃鹰运输机上还会载着一支免费小队。两个总部应完全被水域隔开,但仍可通过地图不同位置的两座桥让载具通行。我想鼓励玩家围绕上行链路点展开争夺。地图的面积应是其他地图的倍数——但仍为正方形。先研究,然后再评估这个设计。只有在我们就任何修改达成一致后,才开始制作。你可以为此设计一种全新的生物群系。
Design a new map. Goal is to make different strategic incentives that encourage use of Infantry and Condors and aerial vehicles.
To do this the map will have limited harvester resources but several more uplinks - but uplinks will be on islands that are inaccessible by land vehicles or infantry. These uplinks can also not be claimed using air vehicles. The ONLY way to get them is to fly infantry there in a Condor.
Armies always start with a Condor and a single squad. If an army has no Condor a new one will be provided for free, flying in from the edge closest to their HQ and landing there. That free condor will come with a single free squad on board.
The two HQs should be entirely separated by water, but still accessible by vehicles thanks to two bridges across the map in different places
I want to encourage a battle over uplinks.
The map should be the times the size of other maps - still square
First research and then critique this design. Only build after we have agreed on any modifications
You get to design a new biome for this
最终的成果是热带群岛地图,岛上设有七个上行点,玩家只能乘坐秃鹰运输机运送步兵前往占领。掌握了简单地图中的基本游戏机制后,这张地图绝对是玩起来最有趣的。v9 版本让这张地图变得更有意思了一些——现在它看起来是这样的:The result was the tropical Archipelago map, with seven island uplinks that players can only capture by flying out infantry in a Condor. It’s definitely the most fun map to play, once you’ve got the hang of the basic game mechanics from the simpler maps. The v9 edition made that map a little more interesting—it now looks like this:

v10:Goliath 与智能体对战v10: Goliath, and agent battles
我决定在游戏中加入巨型机器人机甲——想想《环太平洋》里的机甲猎人,或《战锤 40,000》里的泰坦。I decided to add giant robot mechs to the game—think Jaegers from Pacific Rim, or Titans from Warhammer 40,000.
以下是我用来与 Claude 头脑风暴的一些提示词:Here are some of the prompts I used to brainstorm with Claude:
帮我构思一些把巨型机器人加入这款游戏的点子——比如 W20K 里的无畏机甲或泰坦——我们可以怎么做,才能增强游戏体验、保持平衡,并加入独特的新意?先别想得太复杂。
Help me brainstorm ideas for adding giant robots to this game - think dreadnoughts or titans from W20K - how could we do this in a way that enhanced gameplay, kept things balanced, added unique twist? Don't overthink this yet
我们继续集思广益吧。我喜欢把它设定成一个移动基地的想法——它可以接收收集来的废料,周围也可以建造建筑(即使它之后会继续移动),而且还能生产步兵单位。要是能和 condor 互动一下也挺不错,不过我还不知道可以怎么设计。
Let's keep brainstorming. I like the idea that it's a mobile base - that can accept harvested scrap and can have buildings built near it (even if it later moves on) and can produce infantry units too. An interaction with condor would be neat but I don't know what that could be.
设想:它受到损伤后,会逐渐失去发射某些武器的能力。默认配置包括眼部激光(类似枪骑兵)、手臂加农炮(类似泰坦)、两门肩扛式迫击炮,以及类似步兵小队所用的机枪。
Idea: as it gets damage it loses the ability to fire some weapons - by default it has eye laser (like lancers) and arm canons (like titan) and two shoulder mounted mortars, plus machine guns similar to a squad of troops
受到伤害时会先摧毁迫击炮,然后是激光——它总是带着枪。你不能在一栋只是因为机甲才放置在那里的建筑旁边建造;要在基地外建造,必须有机甲在场,而且只能在机甲周围三格以内。
Damage knocks out mortars and then laser - it always has guns. You can't build next to a building that was only put there because of the mech, you need the mech there for off-base building and only within three squares of it
那我们就用两架秃鹰,可以运载机甲。
[...] Lets do two condors can carry the mech
最终效果真的很棒。The end result is really cool.
Your browser does not support HTML video.歌利亚可以在 Gantry(一种建筑)中建造;而 Gantry 只有在先建造 Fab、Bay、Airpad 和 Tech Lab 后才能建造。你可以看到歌利亚正在建造,完成后它会从 Gantry 中走出,并能在地图上四处行进。Goliaths can be constructed using a Gantry—a building that can only be created after first building a Fab, Bay, Airpad, and Tech Lab. You can see the Goliath under construction, and it then walks out from the Gantry and can march around the map.
戈利亚斯可以“锚定”,将自己固定在地面上。在锚定状态下,它们可以充当新的总部,在新的区域建造步兵单位和额外建筑。Goliaths can “anchor”, which digs them into the ground. In their anchored state they can act as a new HQ, constructing infantry units and additional buildings in a new area.
两架秃鹰运输机可以钩住一台巨像机甲,之后就能驾驶它在地图上四处移动!Two Condor aircraft can hook onto a Goliath, at which point it can be flown around the map!
现在,摧毁敌人的总部建筑以及他们可能建造的所有歌利亚后,游戏就会结束。The game now ends when you destroy the enemy’s HQ building and any Goliaths they might have built.
还有几个与 Goliath 相关的变异项:There are also a couple of mutators relating to Goliaths:
- Goliath Armada 开局时双方各有四架空降型 Goliath(每架配有一对 Condor),且没有其他单位。Goliath Armada starts each side with four airborne Goliaths (each with a pair of Condors) and no other units.
- 《机器人之爱》增加了一条特殊规则:如果敌方的歌利亚机器人在战场上彼此靠近,它们就会坠入爱河,游戏以平局告终。(这条规则要感谢 Natalie。)Robot Love adds a special rule: if enemy Goliaths get close to each other on the battlefield they fall in love and the game ends in a draw. (Thank Natalie for that one).
智能体对战Agent battles
v10 的另一项功能是智能体对战。在思考多人游戏可以如何实现时,我有了一个想法:如果让不同的大语言模型在游戏中一较高下,会怎么样?The other v10 feature is agent battles. In musing about how multiplayer could work I had an idea: what if different LLMs could fight it out in the game?
有个有趣的额外挑战:想想怎样才能让编程代理也能参与多人游戏。如果我们能安排 GPT-6 Sol 和 Claude Opus 5.5 之间展开对战,那会很棒:每个模型都能使用一种工具,获取游戏相关信息(大概是非视觉信息,而且只能获取它们通过战争迷雾等机制能看到的信息),并控制自己的单位等……请查阅 ~/dev/llm/docs,并在该文件中记录一些说明,探讨如何通过新增的工具插件在这里使用 LLM。
Fun extra challenge: think about how we might make multiplayer available to coding agents. It would be neat if we could set up a battle between eg GPT-6 Sol and Claude Opus 5.5 where each model has access to a tool which gives them information about the game (presumably non-visual, but only the information they could see through fog of war etc) and lets them control their units etc [...]
Consult ~/dev/llm/docs and include notes in that file about how LLM could be used here via a new tools plugin
Opus 5.5 开始着手处理这件事,先提出了这份 AGENT-BATTLES.md 方案,随后将其实现并进行了测试。该功能还支持记录和回放这些对战——这里是 Claude Haiku 5.5 对阵 GPT-6 Luna 的回放,这里则是在一个单独的调试工具中查看同一场对战,该工具会显示底层的提示响应。Opus 5.5 went to work on this, producing this AGENT-BATTLES.md proposal and then implementing and testing it. The feature also includes the ability to record and replay these battles—here’s a replay of Claude Haiku 5.5 vs. GPT-6 Luna, and here’s that same battle in a separate debug tool that shows the underlying prompt responses.

驱动智能体对战的提示词可以在这里查看。The prompt that drives agent battles can be seen here.
README 中还链接了几个类似的回放。我希望将来有一天能把它扩展成一张完整的联赛积分榜。There are a few more replays like this linked in the README. I hope to turn this into a full league table at some point in the future.
v11:随机地图v11: Random Maps
这个版本之所以存在,纯粹是因为有一天我瞥了一眼 Claude 的使用量页面,发现每周额度只用了 75%,而且 45 分钟后就要重置了。我决定看看能不能用剩余的 token 再做出一个 Battle Drones 功能,于是选了“随机地图”作为目标:This version exists purely because I glanced at my Claude Usage page one day and saw that I’d only used 75% of my weekly allowance and it was resetting in 45 minutes. I decided to see if I could get an extra Battle Drones feature from my remaining tokens, and picked “random map” as the target:
设计并实现一种机制,用任意可用的生物群系生成随机地图——地图尺寸应为最大地图,河流、桥梁、岩石、森林、废料和水晶都要纳入其中。让地图具有旋转对称性,并使用种子,以便之后选择或重复生成。你有 45 分钟来完成!尽情发挥创意。
Design and implement a mechanism for generating a random map using any of the available biomes - it should be the size of the largest map and rivers and bridges and rocks and forest and scrap and crystals are all in play. Make them rotationally symmetric and use a seed to allow them to be selected or reused later. You have 45 minutes to build this! Be creative.
这是对话记录,以及 Claude 生成的一张图片,用来向我展示它的工作成果:Here’s the transcript, and an image Claude generated to show me its work:

v12:通过声音实现多人游戏v12: Multiplayer via sound
我刚刚才让它跑起来,所以还没多少时间主动测试。目前最新版本的 Battle Drones 已支持多人游戏,只要两台设备彼此处于麦克风可接收的距离内即可!I only just got this working, so I’ve not had much time to actively test it yet. The latest Battle Drones now supports multiplayer via two devices sat within microphone distance of each other!
这个功能最初是我上周做的 Chirp Pong 实验。我把 Claude Code 指向了那个可运行的概念验证:This feature started out as my Chirp Pong experiment from last week. I pointed Claude Code at that working proof of concept:
从 GitHub 克隆 Simonw/tools,并查看最近的分支,找到那个使用网页麦克风通过音频信号实现两部手机多人游戏的示例乒乓球游戏。为 battledrones 构建一个类似版本。
Clone Simonw/tools from GitHub and look at recent branches for the example pong game that uses web microphone to implement multiplayer between two phones via audio signals
Build a version of that for battledrones
Opus 开发了这个 Radio Probe 工具,用来测量两台设备之间能够达到的带宽。基于测试取得的良好结果,他们又实现了一套完整的音频调制解调器系统。到目前为止,我已经在笔记本电脑、iPhone 和 iPad 之间试用过,效果似乎非常好!Opus built this Radio Probe tool to measure how much bandwidth we could get between two devices and, based on positive results from that, implemented a full audio modem system. I’ve tried it between laptops, iPhones and iPads so far and it seems to work really well!
为什么要用声音来实现这个?因为我喜欢运行起来不花钱的静态 HTML,而且不想在某个地方搭建服务器,然后只要还有人可能想玩这个游戏,我就得一直负责让它正常运行。Why use sound for this? Because I love static HTML that costs nothing to run, and I don’t want to spin up a server somewhere and then stay responsible for keeping it operating for as long as anyone might want to play the game.
一些想法Some thoughts
我对游戏开发几乎一无所知。因此,这是个绝佳的机会,可以在一个我现有的软件工程经验对结果影响较小的领域里试用编码智能体。I know almost nothing about game development. This makes it a great opportunity to try out coding agents in a field where my existing software engineering experience has less impact on the results.
游戏的风险也非常低。最糟糕的情况不过是我那些有趣的游戏实验之一出现了 bug。Games are also super low stakes. The worst that can happen is one of my silly game experiments suffers a bug.
今天早上(通过 Hacker News)我发现了一篇文章:《Steam 新品节充斥着垃圾内容,玩家恳求 Steam 增加无 AI 内容筛选器》。我个人绝不会考虑把《Battle Drones》提交到这样的活动中——它投入的心力还远远不够,根本不值得被当作一个正经的独立游戏项目来考虑。This morning (via Hacker News) I found Steam Fans Are Begging for a No-AI Filter as Steam Next Fest Is Filled With Slop. I wouldn’t personally dream of submitting Battle Drones to an event like this—it’s still way too low effort to warrant consideration as a legitimate indie gaming project.
……但现在我能看到,像这样通过氛围编程制作的游戏,也有机会得到认真对待。Battle Drones 很好玩,画面也不错,还有创新功能(据我所知,通过音频实现多人游戏,这在 RTS 游戏中还是头一回)。... but I can now see a path to vibe coded games like this being taken seriously. Battle Drones is fun, it looks good, it has innovative features (the multiplayer-over-audio thing is a first for an RTS as far as I can tell).
我很想看看一个比我更有品味、并且怀着强烈热情想要打造真正卓越之作的人,能做出什么来!I’d love to see what someone with better taste than me and a driving passion to produce something truly exceptional could build!
关于这个项目的其他几点观察:A few other observations from this project:
- 静态 HTML 和 JavaScript 是开发游戏的绝佳媒介。WebGL 表现出色,而 Three.js(以及更早的 Phaser)都是非常优秀的构建平台,当前的模型对它们了如指掌。
- 这也让它们能够作为渐进式 Web 应用运行——虽然我并没有提出这个要求,但《Battle Drones》可以离线运行。我在飞机上也能玩,尽管我从未直接安装过它——手机已经缓存了它。This also lets them run as Progressive Web Apps—I didn’t ask for it, but Battle Drones works offline. I was able to play it on a plane despite never having directly installed it—my phone had it cached.
- 向 Claude 提供 OpenAI API 密钥,并让它使用 OpenAI 的模型生成图像,效果非常好。它可以查看自己生成的图像,并不断调整提示词。Giving Claude an OpenAI API key and telling it to generate images using OpenAI’s models works really well. It can view the images it has generated and iterate on the prompts.
- Opus 5.5 使用 Three.js(以及 Blender,毫无疑问也包括其他 3D 应用程序)进行 3D 建模的表现令人惊叹。GPT-6 Astra 也是如此。它们完全有能力为 3D 游戏项目创建模型。Opus 5.5 is spectacular at 3D modeling using Three.js (and Blender, and no doubt other 3D applications as well). The same is true of GPT-6 Astra. They are absolutely capable of building models for 3D game projects.
- 对于回放和多人游戏这类功能,拥有一个确定性的模拟引擎会很有用。有一次,Claude 不得不把对 Math.sin()、Math.cos() 等函数的调用替换成自定义版本,因为不同浏览器(例如 Chrome 和 Safari)返回的数值会有极其细微的差异,导致回放不同步。For features like replay and multiplayer it’s useful to have a deterministic simulation engine. At one point Claude had to replace calls to
Math.sin()andMath.cos()and friends with custom versions because different browsers (Chrome vs. Safari, for example) returned very slightly different numbers, desynchronizing the replay. - Opus 5.5 能创作音乐!这个项目里没有任何音频文件——整个配乐完全由代码生成,会随着地图不同而变化,甚至会随着战况升温而变得更加激烈。有关此前使用 Claude 进行音乐创作的实验,请参阅 Scrimshaw Jukebox。Opus 5.5 can write music! There are no audio files in this project—the soundtrack is entirely generated through code, varies across different maps, and even gets more intense as the battle heats up. See Scrimshaw Jukebox for a previous experiment with Claude for music composition.
- 我还是难以置信,“让它有趣得多”这个提示词居然这么管用。I still can’t get over how well the prompt “Make it a LOT more fun” worked.
- 工具基本上是免费的。我用提示词搭建出了 Radio Probe、模型浏览器和 Agent 对 Agent 调试工具;Claude Code 还为自己构建了一大堆工具,连我自己都还没探索过。Tools are effectively free. I prompted up the Radio Probe, the Model browser, the Agent vs. Agent debug tool, and Claude Code built a bunch of tools for itself that I haven’t even explored myself.
- 基于音频的静态 HTML 游戏之间实现多人联机,行得通!希望能看到更多游戏采用这种模式——我今天搜寻了一番,除了 Alon Horesh 的 Siner 和 Georgi Gerganov(也是 llama.cpp 的知名开发者之一)的 ggwave,没找到多少先例。
- Claude Code“Ultracode”消耗 token 毫不手软,但它也能仅凭一条提示就解决复杂问题(例如添加基于音频的多人游戏功能)。Claude Code “Ultracode” burns tokens like there’s no tomorrow, but it can also solve complex problems (like adding audio-based multiplayer) from a single prompt.
- 我仍然没能完全摆脱以这种方式开发软件所带来的愧疚感。我总觉得自己还没有资格打造出这么好的东西,尤其是在这个领域几乎没有经验!到目前为止,我已经私下把它展示给了足够多的人,以至于如果不把它发布出来,让其他人也能看到并从中学习,就显得不太妥当。I’m still not quite over the guilt of building software in this way. I don’t feel like I’ve earned the right to create something this good, in a field in which I have so little prior experience! At this point I’ve shown it to enough people in private that it felt wrong not to publish it for everyone else to see and learn from.