本頁面由英文機器翻譯而成。閱讀英文原文。

部落格

先計畫,再動手 —— 遊戲開發中 AI 代理的計畫模式

在 AI Game Developer 裡用計畫模式、釐清問題、訊息佇列與程式碼審查卡片,讓你在大型遊戲任務中掌控 AI 代理。

先計畫,再動手 —— 遊戲開發中 AI 代理的計畫模式

AI 代理速度很快,而這正是大型任務容易迅速出錯的原因:在你還沒同意它該做什麼之前,它就已經開始改程式碼了。AI Game Developer 的計畫模式把這個順序反了過來。代理會先讀你的專案並寫出一份計畫,在你核准之前所有變更都會被拒絕,核准之後它才開始動手。

計畫模式搭配釐清問題、訊息佇列與程式碼審查發現卡片,讓你用簡單的方式引導 AI 代理完成較大型的遊戲開發任務。本文我們會在一場工作階段中把它們全部用上,主題取自我們的示範遊戲 Skyward Keep:替玩家角色加上滑翔。影片是應用程式的真實錄影:代理的回覆是為示範事先寫好的腳本,但其中每一次工具呼叫都是真的執行過。

以計畫模式處理單一功能 —— 一個問題、一份待核准的計畫、一則排入佇列的後續指示,以及程式碼審查卡片。

為什麼要在代理動手前先計畫

小型需求,例如「把跳躍調高一點」,不需要計畫;大型需求則需要。一項新的移動能力會牽動玩家控制器、輸入、調校數值、文件,往往還有音效。只要代理其中一項猜錯,你就得跨好幾個檔案收拾善後。

一份計畫能同時解決三個問題:

  • 在任何東西被改動之前,你就先看到範圍:哪些檔案、哪些系統、以什麼順序進行。
  • 誤解會及早浮現,這時只要一句話就能修正。
  • 核准後的計畫就成了你驗收成果時的檢查清單。

步驟 1:開啟計畫模式

計畫模式是輸入區裡的逐工作階段開關。送出任務前先把它打開。在計畫模式下,代理可以讀取檔案、搜尋專案與專案筆記,但在它提出計畫之前,任何變更都會被拒絕。

接著描述目標,而不是步驟。示範中的需求很短:

「加上滑翔:在空中按住跳躍,用 Wren 的披風滑翔。」

代理會先讀取玩家控制器,以及專案中關於玩家能力的筆記。

步驟 2:回答代理的提問

好的計畫需要幾個只有你能做的決定。代理可以用選擇題向你提問,題目會從輸入區上方滑出。示範中它在寫計畫之前先問了一個設計問題:「Wren 可以滑翔多久?」,並附上三個選項:

  • 3 秒耐力,落地後補滿,維持悠閒的節奏。
  • 無限制,只要按住跳躍即可。
  • 可升級,從 1.5 秒起,透過披風升級延長。
代理詢問滑翔持續時間的問題,三個選項顯示在輸入區上方的抽屜面板中
寫計畫前的一個設計問題,附有選項

當代理有好幾個問題時,它們會變成一張可編輯的問卷:你可以點任一問題回去修改先前的答案,或跳到後面,而要等每個問題都有答案,回答才會送出。花一分鐘回答,就能省下之後一整輪的重工。如果你的專案有知識庫,代理會讀取你已經在裡面定好的慣例,問的問題也就更少。

步驟 3:審閱計畫

代理會用一張核准卡片呈現計畫,卡片上有兩個選項:核准並執行,或繼續規劃。示範計畫包含四個項目:

  1. 新的 Glide 腳本:在空中下墜時按住跳躍,會把下墜速度限制在 2.5 m/s。
  2. 3 秒耐力,也就是那個問題的答案,滑翔時消耗、落地時補滿。
  3. 玩家控制器在重力之後呼叫滑翔,跳躍緩衝與 coyote time 都不變動。
  4. 滑翔規則會加入知識庫中的 Player abilities 筆記。

它還註明輸入綁定不需要更動,因為滑翔動作已經存在。

聊天中的滑翔計畫,附上提供「核准並執行」與「繼續規劃」的核准卡片
審閱計畫,然後核准它或繼續規劃

讀這份計畫,就像讀同事寫的設計筆記一樣。它只動到該動的檔案嗎?順序合理嗎?有沒有漏掉什麼?如果有不對的地方,選擇「繼續規劃」並輸入該改什麼;代理會修訂計畫再給你看一次。等計畫正確了,核准它,代理就會開始工作。

步驟 4:在代理工作時排入訊息

代理工作時,你總會想到一些事。你不必再枯等或打斷它。示範中,在滑翔功能實作到一半時,有一則後續指示被打字並排入佇列:

「滑翔開始時也播放一聲輕柔的呼嘯音效。」

在回合執行中送出的訊息,會待在輸入區上方的佇列抽屜裡等候。你可以立即送出一則,或把它拉回輸入區編輯。如果你按下停止,執行中的回合會被取消,你排入的文字也會回到輸入區,所以你收回的訊息絕不可能還是被執行。代理會先完成已核准的計畫,再處理排入佇列的需求。

工具權限請求會出現在同一個抽屜裡,而只要有提示待處理,該工作階段就會顯示「等你處理」的標記,讓你一眼看出哪些工作階段需要你。

步驟 5:用程式碼審查卡片檢查結果

交件之前,代理會先審查自己的變更。程式碼審查結果會以發現卡片呈現,每張卡片包含判定、檔案與行號、類別、簡短摘要,以及一個說明該問題會如何在遊戲中顯現的失敗情境。若沒發現任何問題,卡片也會明白寫出來。

示範中,審查卡片顯示了兩項發現:

  • 已確認並修正:落地時耐力從未補滿。滑翔 3 秒、落地、再跳一次,第二次滑翔根本不會啟動。
  • 有可能、留給你決定:滑翔讀取的是上一幀的著地狀態,因此在按住跳躍的情況下落到移動平台上,可能會在地上出現一幀的滑翔速度。
兩張程式碼審查發現卡片,包含判定、檔案與行號、摘要與失敗情境
代理自己的審查結果,以發現卡片呈現

把這些卡片當成待辦清單:請代理修正你認同的發現,並說明你略過其他項目的原因。接著逐項核對已核准的計畫,然後實際玩一次。在程式碼裡正確的滑翔,玩起來仍可能不對勁。

讓長時間的工作階段保持健康

大型任務會把代理的上下文塞滿。當一個長時間的工作階段即將接下不相關的新任務時,輸入區會提議重新開始,幫你省下用量額度。這個提議只在代理閒置且上下文很大時出現,你隨時也可以選擇繼續在目前的工作階段裡做事。一個好的節奏是每個功能一個工作階段:規劃、建置、審查,然後在新工作階段開始下一個功能。

一套可以重複使用的工作流程

只要任務會動到兩三個以上的檔案:

  1. 開啟計畫模式並描述目標。
  2. 回答代理的問題。
  3. 審閱計畫,並持續規劃直到它正確為止。
  4. 核准,並把後續想到的事排入佇列,而不是打斷它。
  5. 用發現卡片審查變更,然後實際試玩。

計畫模式與代理提問在 0.25.0 版推出,訊息佇列與發現卡片則在 0.25.8 版 (https://ai-game.dev/releases/0.25.8)。各引擎的最佳實務指南位於 ai-game.dev/docs/best-practices ,對如何為 AI 代理拿捏任務大小有更進一步的說明。到 ai-game.dev/download 下載應用程式,並在下一個功能上試試計畫模式。

更多部落格文章

所有文章