跳到主要內容
maxstudioNews
AI 自動化Simon Willison約 9 分鐘

Battle Drones:AI 代理打造的即時戰略遊戲,支援音訊多人同步

開發者 Simon Willison 分享他如何利用 AI 代理 Claude Code 打造即時戰略遊戲 Battle Drones。這款遊戲歷經多次迭代,不僅具備豐富的玩法與 3D 畫面,更支援透過音訊同步進行近距離多人對戰。文章詳述了 AI 在遊戲開發、美術生成與平衡調整中的關鍵作用,甚至能讓不同 LLM 進行 AI 對戰。

Battle Drones:AI 代理打造的即時戰略遊戲,支援音訊多人同步
圖片來源:Simon Willison

我的最新「氛圍編碼」遊戲實驗是一款名為 Battle Drones 的即時戰略遊戲(RTS),風格類似《終極動員令》(Command & Conquer),點此可遊玩。與我之前的實驗不同,這款遊戲真的很好玩。我有點不好意思承認,我只是告訴 Claude「讓它變得更好玩」,就達成了這個目標。

它甚至支援透過音訊在附近裝置之間同步遊戲狀態,進行多人對戰!以下是我目前為止的成果,以及我在開發過程中學到的一些事情。

我最初的目標是打造一款可以在手機上玩的《終極動員令》風格即時戰略遊戲。我對 1995 年的原版遊戲(我也喜歡《紅色警戒》)有著美好的回憶,希望能重現一些當年的魔力。

經過 12 次主要迭代(以及主要由 Claude Code 等編碼代理完成的 321 次提交),我現在擁有一款基於瀏覽器的遊戲,可在手機和桌機上運行,具備多種遊戲模式、多張地圖(包括隨機地圖生成器),甚至支援兩台在麥克風收音範圍內的裝置進行多人對戰。

以下是 Battle Drones 在桌機瀏覽器上運行的影片示範:

目前特色包括:9 棟建築、7 種地面載具、6 種空中載具、3 種步兵單位,全部為 3D 模型,可在此瀏覽。戰爭迷霧。攻擊空中或地面載具需要不同的武器。六張地圖,涵蓋五種生態環境:溫帶、沙漠、北極、火山、熱帶。隨機地圖生成器。

遭遇戰模式:紅隊對藍隊,在地圖上呈旋轉對稱。背水一戰模式:一名玩家抵禦盡可能多的敵人波次。範圍效果武器:彈幕、電磁脈衝(EMP)、空投艙、天錘。空投補給箱,內含額外資源。遊戲內音樂會隨事件變化:戰鬥爆發時會變得更激烈。

不同的遊戲內 AI 個性(平衡型、速攻型、空軍蜂群型、發展型、空軍型、鐵甲型)。AI 對戰模式,可觀看這些 AI 個性互相對戰。歌利亞(Goliath):一架巨大的踐踏機甲,配備雷射眼和手臂加農砲,並能建立新的基地。突變因子(Mutators),增加額外規則或變化。 「每日行動」挑戰。排名與成就(獎章)。

代理對戰模式:兩個大型語言模型(LLM)可以在 Battle Drones 中互相對戰。基於兩台附近手機透過音訊訊息通訊的多人對戰模式,這是我早期 Chirp Pong 實驗的延伸。

Battle Drones 大量採用「氛圍編碼」:我幾乎沒有審查任何程式碼,而且它是用我很少使用的 TypeScript 語言寫成的。不過,我進行了大量的遊戲測試,這個專案自啟動以來經歷了多次迭代。以下是該專案至今的粗略歷史,包括關鍵提示詞和對話紀錄連結。

我從七月開始使用 Claude Fable 5 進行開發,提示詞如下:「我們要開發一款手機友善的即時戰略遊戲,風格類似《終極動員令》,名為 Battle Drones,其中兩支由飛行和地面無人機組成的軍隊將爭奪領土和資源。讓我們先從最小可行產品(MVP)設計開始,你可以問我一些問題。」

這是一個共享的對話紀錄。我為 Claude Code for Web 設定了一個包含 OpenAI API 金鑰的環境變數,並指示它使用 OpenAI 圖像生成 API 來製作遊戲素材,這為我帶來了一些基本的精靈圖(sprites)。你可以在這裡試玩 v1 版本,它看起來像這樣:它已經具備即時戰略遊戲的雛形,有建築機制、單位選擇與指揮能力,以及一個基本的 AI 對手。

這個第一個版本幾乎只是一個概念驗證,玩起來一點也不有趣。Claude 在這些早期版本中使用了 Phaser 2D 遊戲框架,我甚至直到幾次迭代之後才意識到這一點!

第二個版本(點此試玩 v2)為所有載具添加了精靈圖,並加入了「AI 對戰 AI」模式,這樣我就可以在不直接控制的情況下觀看遊戲進行。Claude 在提示 OpenAI 圖像模型生成精靈圖方面表現得相當稱職。你可以在 public/assets/sprites 資料夾中瀏覽 v2 的精靈圖。

遊戲仍然不怎麼有趣,畫面也很無聊。當時已是十月,我已升級到 Claude Opus 5.5。我告訴它:「大幅改進這款遊戲。讓畫面和玩法更好(保持手機友善)。使用最新的 OpenAI GPT 圖像 API(查詢詳細資訊)並利用環境變數中的 API 金鑰來渲染新圖像。增加新的單位類型並更好地平衡遊戲玩法。同時增加新的建築和更好、更多樣化的地形。」

這產生了五張新地圖,背景圖塊以多種風格生成,可在此處查看。Opus 也重新生成了精靈圖,使其更具視覺吸引力。你可以在這裡試玩 v3 版本,它看起來像這樣:這開始感覺像一款真正的遊戲了!不過玩起來仍然不怎麼有趣,我很快就覺得無聊。

到目前為止,我的 Battle Drones 實驗證實了我先前的信念:編碼代理可以建立一個看起來像遊戲的東西,但無法真正做出引人入勝的遊戲。

我在晚餐時與人分享了這個理論,然後心想我應該給模型一個證明我錯誤的機會。我在手機上向 Opus 5.5 提示:「這款遊戲還不夠好玩。讓它變得更好玩。」

這次我是在 Ultracode 模式下運行,其中 Claude Code(在此案例中是 Claude Code for Web)運行「動態工作流程」,其文件描述為:「動態工作流程是一個 JavaScript 腳本,可以同時協調多個子代理。」這啟動了數小時的工作。我從晚上開始運行,直到隔天早上很晚才得到一個可玩的結果。但結果令人驚嘆。

你可以在這裡試玩 v4 版本,它看起來像這樣:我讓 Claude 自己撰寫了發布說明,以下是重點:現在,每場遭遇戰和每日行動都以選擇開場,為劣勢方提供反敗為勝的機會,並將軍隊拉到地圖中央。還有兩種新的玩法。

開場選擇:在計時開始前選擇閃電戰(Blitz)、工業(Industry)或空軍聯隊(Air Wing)。呼叫能力:彈幕、電磁脈衝(EMP)、空投艙和天錘軌道打擊。目標與打撈:上行連結中繼站、補給空投和有價值的殘骸。遊戲感受:戰鬥效果、自適應音樂、單位語音和播報員。指揮:戰鬥警報、遊戲速度、儲存的部隊和觸控放置。

新模式:背水一戰生存波次和 8 個任務的行動戰役。進度:英雄、帶有獎勵的戰後報告、生涯、7 個突變因子和每日行動。戰鬥持續時間更長,戰局變化更大。在 1,200 場普通難度 AI 對戰 AI 測試中,25 分鐘後仍未決的遊戲比例從 14% 下降到 0.9%。落後 800+ 廢料的一方獲勝的比例從 24% 上升到 46%。

Claude 花費如此長時間的部分原因,是它運行了超過一千次模擬遊戲測試,並利用結果重新平衡現有單位、增加新單位並引入新功能。

在 Ultracode 成功實現「讓它變得更好玩」之後,我決定更具野心:「將這款遊戲移植到 three.js,並為所有建築、載具和地景製作 3D 模型。」

這又是另一個通宵運行。我醒來時看到了這個 v5 版本:新的 3D 模型完全由 Claude 用 TypeScript 程式碼建構。v6 版本(點此試玩 v6)增加了一些視覺上的潤飾。v7 版本(點此試玩 v7)增加了機器人步兵(士兵、火箭小隊、狙擊手)和「禿鷹」(Condor)運兵機。

我開始對自己在遊戲設計上實際投入的精力如此之少感到內疚,過去幾個版本我真的只是說「讓它更好玩」和「增加視覺潤飾」。我注意到 AI 很少使用 v7 版本新增的步兵和運兵機,因為沒有很好的戰略理由去使用它們。

如果能有一張新地圖,搭配新的遊戲機制,積極鼓勵玩家將步兵機器人裝載到禿鷹運兵機中並派往地圖各處,那將會很棒。這導致了我迄今為止最長的提示詞:「設計一張新地圖。目標是創造不同的戰略誘因,鼓勵使用步兵、禿鷹運兵機和空中載具。為此,地圖將有有限的採集資源,但有更多上行連結點,這些上行連結點位於陸地載具或步兵無法到達的島嶼上。

這些上行連結點也無法使用空中載具佔領。唯一能佔領它們的方法是搭乘禿鷹運兵機將步兵運過去。軍隊總是從一架禿鷹運兵機和一個小隊開始。如果一支軍隊沒有禿鷹運兵機,將免費提供一架新的,從最靠近其總部的邊緣飛入並降落。那架免費的禿鷹運兵機將搭載一個免費的小隊。

兩個總部應完全被水隔開,但仍可透過地圖上不同位置的兩座橋樑供載具通行。我希望鼓勵圍繞上行連結點的戰鬥。地圖大小應為其他地圖的數倍,但仍為方形。首先研究並批評這個設計。只有在我們同意任何修改後才進行建構。你可以為此設計一個新的生態環境。」

結果就是熱帶群島(Archipelago)地圖,其中有七個島嶼上行連結點,玩家只能透過禿鷹運兵機運送步兵來佔領。一旦你掌握了簡單地圖的基本遊戲機制,這絕對是最有趣的遊戲地圖。v9 版本讓這張地圖更有趣,它現在看起來像這樣:

我決定在遊戲中加入巨型機器人機甲,想像《環太平洋》(Pacific Rim)中的機甲獵人(Jaegers),或是《戰鎚 40,000》(Warhammer 40,000)中的泰坦(Titans)。以下是我與 Claude 進行腦力激盪時使用的一些提示詞:「幫我集思廣益,思考如何在遊戲中加入巨型機器人,想像《戰鎚 40,000》中的無畏機甲或泰坦,我們該如何以一種能增強遊戲性、保持平衡並增加獨特轉折的方式來實現?目前先不要想太多。」

「我們繼續腦力激盪。我喜歡它是一個行動基地的想法,可以接收採集的廢料,可以在附近建造建築物(即使它後來移動了),也可以生產步兵單位。與禿鷹運兵機的互動會很棒,但我不知道那會是什麼。」「想法:當它受到傷害時,會失去發射某些武器的能力,預設它有雷射眼(像長矛兵)、手臂加農砲(像泰坦)和兩個肩載迫擊砲,加上類似一隊士兵的機槍。」

「傷害會擊毀迫擊砲,然後是雷射,它總是保有槍械。你不能在僅因機甲而建造的建築物旁邊建造,你需要機甲在那裡才能進行基地外建造,且只能在它周圍三格範圍內。」「...讓兩架禿鷹運兵機可以運載機甲。」最終結果非常酷。

歌利亞機甲可以使用「龍門架」(Gantry)建造,這是一個只有在建造了工廠(Fab)、機庫(Bay)、停機坪(Airpad)和科技實驗室(Tech Lab)之後才能建造的建築。你可以看到歌利亞正在建造中,然後它會從龍門架中走出,並在地圖上行進。

歌利亞可以「錨定」,即將自己固定在地面。在錨定狀態下,它們可以作為新的總部,在新的區域建造步兵單位和額外建築。兩架禿鷹運兵機可以掛載歌利亞,此時它就可以在地圖上飛行!現在,當你摧毀敵方總部建築以及他們可能建造的任何歌利亞時,遊戲就結束了。

還有幾個與歌利亞相關的突變因子:歌利亞艦隊(Goliath Armada)讓雙方各擁有四架空中歌利亞(每架配備一對禿鷹運兵機),沒有其他單位。機器人愛情(Robot Love)增加了一條特殊規則:如果敵方歌利亞在戰場上彼此靠近,它們會墜入愛河,遊戲以平局結束(感謝 Natalie 提出的這個點子)。

代理對戰:v10 的另一個特色是代理對戰。在思考多人遊戲如何運作時,我想到一個點子:如果不同的 LLM 可以在遊戲中一決高下呢?

Share

覺得值得一看?分享給朋友。

以上為 AI 自動翻譯導讀。原文版權歸 Simon Willison 所有, 建議透過「閱讀原文」前往原始網站,以取得最完整資訊並支持原作者。

Newsletter

不用每天追,AI 重點每週寄給你

43 個來源、每 2 小時更新,太多看不完。電子報每週挑最值得看的幾則,附上 Max 的看法。

每週一封。Email 只用來寄電子報,每封信都能一鍵退訂。