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

部落格

為你的遊戲專案建立知識庫 — AI 在對話之間保留的記憶

把遊戲設計決策、規則與文件放進知識庫,讓 AI 代理讀取與更新,隨專案提交到 Git,並以 3D 圖形呈現。

為你的遊戲專案建立知識庫 — AI 在對話之間保留的記憶

每次與 AI 代理展開新對話,記憶都是空的。你又一次解釋戰鬥規則、又一次說明命名慣例、又一次交代美術風格,而代理還是忘了你上週關於存檔所做的決定。AI Game Developer 的知識庫正好解決這個問題:一個遊戲專案知識庫,代理會讀取、搜尋並更新它,以 Markdown 筆記的形式存放在專案中,並與遊戲其他部分一起提交到 Git。

本文將以我們的示範遊戲 Skyward Keep 的一場工作階段,說明它如何運作、知識庫裡該放什麼,以及如何用它讓代理做出的決策在不同工作階段之間保持一致。影片是應用程式的真實錄影:代理的回覆是為示範預先寫好的腳本,但其中每一次工具呼叫都是真的執行。

在一場對話中建檔的決策,在全新的對話中被回想起來。

知識庫是什麼

知識庫就是專案中 .ai-game-dev/knowledge/ 底下的一個純 Markdown 筆記資料夾。因為它們是儲存庫中的普通檔案:

  • 它納入 Git 版本控制,因此每一次設計決策的變更都有紀錄,也能在 pull request 中審閱。
  • 它跟著專案一起走:複製儲存庫的隊友會得到同樣的知識,他們的代理也一樣。
  • 你可以在任何編輯器中閱讀與編輯這些筆記,不只限於應用程式內。

除了檔案之外,應用程式還維護一份索引。它追蹤筆記之間的連結、回報失效的連結,並提供代理瀏覽、搜尋、讀取與整理筆記的工具。索引會隨著筆記變更而增量更新,因此代理在某場對話中寫下的筆記,下一場就能取用。

空間:筆記如何組織

任何含有 README 的知識庫資料夾就是一個空間,帶有標題以及一段簡短說明,指出該空間適合放什麼。代理會看到一份簡短的空間目錄,只在需要時才開啟其中一個,也可以建立新的空間。這讓它的上下文保持精簡:它不會把每一則筆記都載入每一次對話,而是前往對當前任務真正重要的空間。

對遊戲來說很實用的配置:

  • design:核心循環、機制、進程、經濟。
  • systems:戰鬥、背包、存檔或對話是如何實作的。
  • art:風格指南、調色盤、資源命名與匯入設定。
  • audio:音樂方向、音效慣例、混音音量。
  • decisions:決策紀錄與其理由。
  • references:你正在參考的遊戲與工具的連結與筆記。

你不必手動建立這套結構。直接要求代理:「為 design、systems、art 與 decisions 建立知識庫空間,各自附上一段說明。」

把決策記錄下來,才會真正留下

最有價值的筆記是決策。當你在對話中表明一項決策,代理會把它連同理由以及它取代了什麼一起記錄下來,並從該空間的 README 連結到這則新筆記。

在示範中,這項決策是關於美術風格:

「我們就定案採用手繪風格:柔和貼圖、溫暖的輪廓光、不要描邊。它在 64 px 下比賽璐璐上色的測試版本更易辨識。」

代理會先查看知識庫中已經寫了什麼,並在美術風格探索筆記中找到一個待解問題:要採用粗描邊的賽璐璐上色,還是柔和的手繪貼圖。接著它在美術方向空間寫下一則新筆記「視覺風格:手繪」,內容包含決策、理由(手繪英雄在 64 像素下仍保持可辨識,而賽璐璐描邊則糊成一團雜訊)以及它取代了什麼。它把那個待解問題標記為已解決,並附上指向新筆記的連結,同時從該空間的 README 連結到這則筆記。筆記是純 Markdown,隨專案一起提交,因此每一場新對話與每一位隊友都能取得。

代理對已記錄決策的摘要,旁邊是右側面板中的知識庫圖形
決策被歸檔為筆記、連結進所屬空間,並在圖形中可見

值得記錄的決策長這樣:

  • 「物理採用 50 Hz 的固定時間步長,因為平台跳躍需要一致的跳躍高度。這取代了可變時間步長。」
  • 「敵人生命值一律是 10 的倍數,這樣傷害數字才保持易讀。」
  • 「所有道具圖示都是正方形、置中,並放在素色深色背景上。」

下一次有工作階段要處理物理、敵人或 UI 時,代理會在知識庫中找到這項決策並遵循它。在示範中,一個全新的對話被問到「Skyward Keep 我們選了哪種美術風格,為什麼?」,它便回答出這項決策與理由,並引用那則筆記作為來源。

一個新對話回答選了哪種美術風格與原因,並以知識庫筆記作為來源
全新的對話找到了決策與理由

當你改變主意時,說出來就好,筆記會連同新的理由一起更新,而 Git 仍保留舊版本。

請代理檢查知識庫

你可以直接把代理指向知識庫:「在你改動背包之前,先讀 systems 空間,告訴我哪些規則適用。」或者用 /kb 指令要求一份摘要,它會顯示筆記樹、它們的連結以及任何失效連結,可針對整個知識庫或單一資料夾。

讓知識庫保持健康

知識庫唯有保持連結與時效才有用。工具可以幫上忙:

  • 筆記之間的連結會被追蹤,可依筆記或資料夾檢視連出連結、反向連結與失效連結。
  • lint 檢查會回報失效連結、孤兒筆記以及不符慣例的筆記。歸檔在空間中的筆記不會被算作孤兒。
  • 隨著專案成長,筆記可以在資料夾之間搬移。

每隔幾週,請代理執行 lint 檢查並修掉它找到的問題。把它當成重構程式碼:定期做點小清理,就能讓整套東西保持可用。

3D 圖形

知識庫會在自己的視窗中以動畫 3D 圖形開啟。資料夾是環,筆記是節點,節點大小取決於連結的多寡,顏色則依資料夾區分,並以線條表示包含關係與連結。這能讓你快速看出設計的哪些部分有完善的文件,哪些筆記則孤立無援。

你可以從幾個地方開啟它:狀態列上的項目,它會顯示專案中有多少筆記,並在代理寫下筆記時閃動;工作階段 Tools 列中的「開啟知識庫圖形」按鈕;在 Explorer 中對資料夾或筆記按「在知識庫圖形中開啟」;以及右側面板中的知識庫檢視。

該放什麼、該留什麼

為代理無法從程式碼推斷的事情寫筆記:意圖、限制、理由與慣例。程式碼已經寫明的東西就別放,例如每個類別的清單,那類內容很快就會過時。

新專案第一週的好做法:

  1. 請代理建立各個空間。
  2. 寫一則關於核心循環的筆記,以及一則關於美術風格的筆記。
  3. 在對話中隨時表明你的決策,讓代理替你建檔。
  4. 週末時打開圖形,並請代理對整個知識庫做 lint。

知識庫在 0.21.0 版推出,並在 0.22.1 版透過空間變得更易於取用(https://ai-game.dev/releases/0.22.1)。它在 Unity、Godot 與 Unreal 專案中都能運作,在單純的資料夾中也一樣。到 ai-game.dev/download 下載應用程式,給你的下一場工作階段一份記憶。

更多部落格文章

所有文章