2026/10/30 · Weekly Radar
Simon 用 Claude Code 跑了 321 個 commit、12 個大版本,幾乎沒讀過程式碼,就 vibe code 出一款手機也能玩的 3D 即時戰略遊戲;用 1,200 場 AI 對打模擬調平衡,還做了 LLM 對戰模式,最後的聲波 modem 連線把朋友搞到頭痛,只好改用 WebSocket relay。
Simon Willison 在 2026 年 10 月 20 日發表的長文,記錄他用編碼 agent 做出的瀏覽器即時戰略遊戲 Battle Drones——一款類似 Command & Conquer 的作品,手機與桌機都能跑,並有基於音訊的近距難多人連線。他說它「真的好玩」,而功勞歸給了一句對 Claude 的 prompt:「Make it a LOT more fun」。
內容規模:9 種建筑、7 種地面載具、6 種空中載具、3 種步兵,全部是 3D 模型;另有戰爭迷霧、五種生態系的六張地圖、隨機地圖產生器、Skirmish 與 Last Stand 模式、AI 人格、AI 對 AI、Goliath 機甲、mutators、每日任務、勳章,以及 agent 對 agent 的對戰。
怎麼做的:這個專案是重度 vibe coded。Simon 幾乎沒審過任何程式碼,而程式碼是他很少用的 TypeScript;編碼 agent(主要是 Claude Code)在 12 個大版本中總共做了 321 個 commit。
版本歷程:v1(七月)是建在 Phaser 框架上的 2D 原型,素材來自 OpenAI 影像生成 API,他形容為勉強算概念驗証、不好玩。v2 补齐全部載具的 sprite 並加上 AI 對 AI 模式,讓他可以不玩只看。v3 改用 Opus 5.5 配上一句筠統的「大幅改進」 prompt,加了新的 GPT 生成圖形與五張地形多樣的地圖,仍然不好玩。v4(「樂趣更新」)跑在 Ultracode 模式下,用動態 workflow 統筌大量子 agent,加了開局策略、召集技能、目標、Last Stand、八關戰役與七種 mutator;團隊跑了超過 1,200 場模擬 AI 對戰,25 分鐘後仍未分勝負的局數從 14% 降到 0.9%,落後 800 以上資源還能翻盤的比例從 24% 升到 46%。v5 是一夜之間完成的 Three.js 3D 改寫,v6 打磨,v7 加了機器人步兵與 Condor 運輸機。
v8(Archipelago)是他覺得自己設計貫獻太少後的回應:他要求一張獎勵步兵與 Condor 的地圖,並讓 agent 先研究與批評設計再開工,成品有七個只能靠空運步兵佔領的島嶼節點;v9 再精修。v10 加入 Goliath(會隨損害失去武裝、可固定下來當新基地的移動機甲,由 Gantry 生產、兩架 Condor 可吊運)與 agent 對戰(透過一個只暴露戰爭迷霧資訊的工具讓 LLM 下棋,有回放,他希望做成排行榜)。v11 的隨機地圖用每週沒用完的 token 額度花 45 分鐘做出來,以隨機種子產生旋轉對稱、橫跨五種生態的地圖。v12 把他先前的 Chirp Pong 實驗變成聲波多人連線:先用一個 Radio Probe 工具量頻寬,再做成完整的音訊 modem,在筆電、iPhone 與 iPad 上都測過;動機是讓遊戲保持為純靜態 HTML、沒有似服器要維護。
他的反思:Simon 承認自己對遊戲開發所知極少,所以這個專案是在不熟悉的領域測 agent。他談到 Steam 被低品質 AI 遊戲淹没的現象,但也主張 vibe coded 遊戲可以被認真對待,並列出幾點觀察:Three.js 與 Phaser 適合 agent 建的遊戲;遊戲以 PWA 形式離線可玩;agent 在 3D 建模上很強;為了回放同步,決定論模擬需要自訂的三角函數;配樂是程式生成的;工具成本幾乎等於免費。他也說自己對用這種方式寫軟體感到不安。
更新(線上多人):聲波 modem 讓朋友 Natalie 閱讀時嚴重頭痛,Simon 把這視為真正的 bug:他加了警示、試過 WebRTC 未成,最後在 Fly.io 上建了無狀態的 WebSocket relay,估算每月最多 $2.19。玩家可以分享房間 URL 或 QR code,對局也能匯出成 JSON 供回放。
整篇最有料的一行是「Make it a LOT more fun」比十二輪架構升級都有用。遊戲設計的護城河原來是一句形容詞,而那個聲波 modem 是全文唯一真正的 bug,還是靠人類的頭痛才測出來的。