AI 遊戲主持人:用 AI 地下城主跑一場 RPG 團務
做出你自己的 AI 遊戲主持人
AI 遊戲主持人負責跑世界、跑 NPC、跑規則,你只要玩就好。在瀏覽器裡試一場 AI 驅動的 RPG 團務——不用開桌、不用備團、不用寫程式。
AI 遊戲主持人是一套執行期系統:它持有世界狀態、讓 NPC 說話、裁決規則,並對你嘗試的動作做出反應——所以你是在玩,不是在備團。在 Neta Studio 裡,AI 遊戲主持人跑在瀏覽器中的真實 3D 世界裡,不是一個聊天框。你打字或說出角色要做什麼,世界就會改變。
這個詞涵蓋幾種不同的意圖。如果你要的是地城 RPG 團務,AI GM 會生成房間、把內容放進去,並裁決戰鬥。如果你要的是 mmorpg-maker,同一套系統可以擴展成多位玩家共用的持久世界。共通機制是一個迴圈:讀取狀態、產生敘述或動作、把狀態寫回去。這一頁說明那個迴圈實際上怎麼運作、在哪裡會壞掉,以及怎麼自己做出最小可玩版本。
快速解答
AI 遊戲主持人取代的是人類裁判的記帳工作,不是人類裁判的判斷力。它追蹤生命值、物品欄、位置、任務旗標和時間。它生成或挑選 NPC 對白。它裁決擲骰並套用結果。它在世界模型的限制內,對玩家嘗試的任何動作做出反應。這一切在玩家進行團務的整段時間裡持續運行。
它不是好的人類 GM 的替代品。人類 GM 會讀場面、注意到有玩家無聊了、為了讓故事活下去而彎一下規則,並且記得六次團務前某個隨口帶過的細節,因為那對某個人有意義。AI GM 省掉了備團時間、省掉了需要另外四個人同一個晚上都有空,也省掉了查規則時的停頓。它沒有省掉一張彼此熟識的桌子所帶來的價值。
對地城 RPG 和 mmorpg-maker 這兩種意圖來說,核心答案是一樣的:一個世界狀態儲存、一個規則裁決器、一個 NPC 層,以及一個有空間感的世界。差別在規模。單人地城團務跑一個狀態物件。MMO 世界跑的是一份權威狀態,多個客戶端同時讀寫它,這就帶來了後面會談到的共享狀態與審核問題。
AI 遊戲主持人實際上在做什麼
AI GM 每一回合做四件事。只要少掉其中一件,團務就會以某種具體、可診斷的方式感覺壞掉。失敗模式是可預測的,這在你調校的時候很有用。
下面這四件事是最小可行迴圈。其他一切——配音、生成美術、音樂——都只是疊在它們上面的裝飾。
持有世界狀態
狀態是最後一次提交的真相:誰在哪裡、身上帶著什麼、什麼已經被殺死、什麼已經被打開、現在是什麼時間。在 Neta Studio 的世界裡,這存在為一張場景圖加上一個鍵值儲存。NPC 的位置是一個 transform。任務旗標是一個布林值。玩家火把的燃料是一個整數,每個 tick 遞減。AI GM 敘述時,是從狀態敘述,不是從它半記得的提示摘要敘述。
常見的 bug:模型編造了狀態裡沒有的細節——一扇從沒被放在那裡的門、一個早就被殺掉的守衛。修法是只序列化真正存在的東西,並拒絕或改寫與硬性狀態鍵衝突的生成文字。軟性細節(天氣、氣味)可以浮動。硬性細節(生/死、上鎖/解鎖)不行。
讓 NPC 說話
每個 NPC 都需要一個穩定的人格:名字、角色、知道什麼、想要什麼、以及絕對不會說什麼。AI GM 根據那個人格和當前狀態生成對白。一個沒見過玩家的鐵匠,和一個上次團務被搶過的鐵匠,打招呼的方式不一樣。這就是持久世界之所以感覺活著、而不是隨機的原因。
實作上,你為每個 NPC 保留一個有 token 上限的記憶緩衝。溢出時,把最舊的幾筆摘要成一行,然後繼續。沒有這個上限,長時間的團務會漂移:NPC 開始和先前的說法互相矛盾,因為那些說法已經掉出上下文。
裁決規則
規則裁決是確定性的程式碼,不是模型輸出。模型提出一個動作;裁決器拿它對照規則集並回傳結果。「我朝哥布林揮砍」變成一次攻擊擲骰、一次傷害擲骰,以及一次狀態寫入。然後模型敘述結果。如果你讓模型決定傷害數字,平衡就變成雜訊。
這也讓系統可除錯。你可以把每一次擲骰、每一個修正值、每一個狀態差異都記錄下來。當玩家說「那一下不該打中」,你手上有數字。
對玩家嘗試的動作做出反應
難的部分是回應沒寫在腳本裡的輸入。玩家打「我把提燈丟向繩橋」。系統必須判斷:物品欄裡有提燈嗎、橋在射程內嗎、火會影響繩索嗎、接下來會發生什麼。純散文的 GM 可以描述這一切。有空間感的 GM 還必須把它算出來,因為橋的幾何和提燈的拋射物都活在場景裡。
反應迴圈是:把意圖解析成結構化動作、對照狀態與規則驗證、套用效果,然後從結果狀態生成敘述。解析成 schema 是讓世界保持一致的原因。沒有結構化動作的自由文字敘述,就是團務開始變軟的地方。
AI 地下城主 vs 人類 GM
誠實的比較是關於哪一個在哪條軸線上勝出,因為它們不是同一種工具。人類 GM 更擅長讀人。AI GM 更擅長永遠不累、永遠不需要行事曆。大多數團應該兩者都用,而不是選一個。
下面這張表,是實際上跑過兩者之後,團務裡真正有差別的地方。備團時間、臨場反應、一致性、桌面氣氛,是實務上真正重要的四條軸線。
| 軸線 | AI 遊戲主持人 | 人類 GM |
|---|---|---|
| 備團時間 | 團務前為零。世界在團務開始時由一個 seed 和一條難度曲線生成。 | 跑得好的話,每場數小時。地圖、NPC、遭遇、備案筆記。 |
| 臨場反應 | 在世界模型內很強。出了模型就弱——如果動作沒有空間或規則上的根據,它會拒絕或產生幻覺。 | 最強的資產。可以當場發明一整個派系,只因為感覺對。 |
| 一致性 | 高。同樣的狀態、同樣的規則、同樣的 NPC 記憶,跨團務延續。不會忘記上週發生過什麼。 | 變動大。取決於筆記、記憶和精力。往往是最好的故事和最糟的連戲錯誤的來源。 |
| 桌面氣氛 | 在群體能量上偏低。沒有笑聲、沒有節奏、沒有讀場面。適合單人或非同步遊玩。 | 高。對很多團來說,社交層才是重點。 |
| 規則公平性 | 確定性。同樣的擲骰,同樣的結果,有紀錄。 | 取決於 GM 的心情和故事。可以為了戲劇性偷改。 |
| 最擅長 | 單人團務、離峰時段遊玩、測試 build、用同一座地城跑兩個不同角色。 | 長期戰役、角色弧線、比起遊戲更為了相聚而玩的團。 |
跑一場團務
證明是一場團務,不是一個 demo。一場團務要有目標、有會回應你的角色,至少有一個能用不止一種方式解決的障礙。這些是現在就能在瀏覽器裡當 AI GM 團務跑的 Neta Studio 世界。
每一個都從一個明確的目標開始。你不是被丟進一個沒有線索的沙盒;你會拿到一個移動的理由,和一組會認得你做了什麼的 NPC。AI GM 會對照目標追蹤你的進度,並據此調整 NPC 行為。
- The Cyclops' Island一座單島團務,目標明確:離開這座島。獨眼巨人有巡邏路線和睡眠週期。你可以打它、偷它、引誘它,或完全避開它。AI GM 會追蹤它有沒有看過你,並在之後的遭遇中調整它的行為。
- Mini World為短時間遊玩設計的較小團務世界。適合測試 AI GM 怎麼處理緊湊的狀態空間:更少 NPC、更少物品、更快的回合。當你想在沒有大地圖的情況下清楚看見那個迴圈時很有用。
- Agent Sprite Forge角色與精靈表系統,讓 NPC 在世界裡有視覺存在。當 AI GM 讓某個 NPC 說話時,Sprite Forge 提供頭像和動畫狀態,讓對白和肢體語言保持一致。
- 3D game builder組裝世界的編輯器。你擺放幾何、定義 NPC 人格、設定難度曲線、以 seed 決定布局。AI GM 跑在你建立的世界之上。
01
在瀏覽器裡打開一個團務世界。不用安裝,第一次跑不用註冊。
02
讀一下明確的目標。它會告訴你 AI GM 正在追蹤什麼。
03
和一個 NPC 說話。他們的回應取決於狀態,不是固定腳本。
04
用一種方式嘗試那個障礙。如果失敗,世界就改變了——守衛被驚動、某條路關閉、某個物品被消耗。
05
用另一種方式嘗試同一個障礙。AI GM 透過同一套規則裁決,並寫入新的狀態。
06
結束團務。如果你要續團,這個狀態就是下一場團務的起點。
為什麼純散文的 AI GM 會壞掉
純文字的 AI GM 沒有幾何。那就是全部的毛病。當你打「我爬牆」,沒有牆有高度、沒有玩家有攀爬速度、失敗了也沒有後果。模型產出一句聽起來合理的話,然後繼續。團務前幾回合感覺還行,接著就 hollow 了,因為你做的任何事都不可能真正失敗到改變那個空間。
玩家最先注意到的症狀是距離不再重要。你可以「跑到房間另一頭」,它不花任何代價。你可以「躲在柱子後面」,不管那根柱子存不存在。模型是在生成描述,不是在模擬一個空間。二十分鐘之後,玩家就不再嘗試有創意的動作了,因為他們已經學到創意動作沒有機制上的重量。
當世界是真的 3D 空間時,這就變了。牆在世界單位裡有高度。玩家有攀爬速度。這次嘗試要嘛成功、要嘛失敗、要嘛部分成功,而結果會被寫入狀態。AI GM 從裁決後的狀態敘述,而不是自己發明。失敗是可能的,這才讓成功有意義。
第二個斷點是記憶。散文 GM 把整個世界放在一個 token 視窗裡。超過某個團務長度之後,早期的事實會掉出去,模型就開始自相矛盾。有空間感的世界把狀態外部化。AI GM 不需要記住門是鎖的;門這個物件身上有一個 locked 旗標。這就是為什麼有空間感的世界比純聊天撐得住更長的團務。
AI MMO 與多人世界
mmorpg-maker 這個意圖指的是一個持久的共享世界:很多玩家、一份權威狀態、在你離線時仍持續進行的團務。AI GM 還是做那四件事,但現在是對共享狀態做,這就帶來單人世界沒有的兩個問題。
第一個是共享狀態。如果兩個玩家在同一個鎮上,其中一個把酒館燒了,另一個必須看見。這代表 AI GM 不能為每個玩家各持一份狀態;它持有一份世界狀態,每個客戶端都從它讀取。失敗模式是衝突:兩個玩家在同一個 tick 想開同一個箱子。你需要一個提交順序和一把鎖,否則其中一個玩家的動作會默默蓋掉另一個的。
第二個是審核。一個從玩家輸入生成 NPC 對白的 AI GM,遲早會生成出玩家不該看到的東西,或者玩家會用輸入通道去製造它。在共享世界裡,這不是個人的 bug,是所有人的問題。實務上的答案是對生成文字加一層過濾、一條檢舉管道,以及對輸入通道做每位玩家的速率限制。
共享狀態
只保留一份權威的世界狀態。客戶端送的是意圖,不是狀態。伺服器對照當前狀態驗證意圖、套用效果,然後廣播差異。如果你讓客戶端直接寫狀態,幾分鐘內就會不同步和重複生成。AI GM 從權威狀態讀取,所以它對該區域所有玩家的敘述是一致的。
對持久世界來說,狀態必須撐過伺服器重啟。以固定間隔對世界做快照,並把快照之間的差異寫下來。從最後一份快照重播差異,就是你在不整場回溯的情況下從當機復原的方式。
審核
有兩個表面需要它:生成對白和玩家輸入。生成對白在廣播前先過內容過濾。玩家輸入在觸及 AI GM 之前先做速率限制與過濾。把輸入和生成輸出一起記錄下來,這樣你在審一件檢舉時不用猜發生了什麼。
AI GM 也該有一條硬性拒絕路徑。如果某個動作超出世界模型或內容政策,GM 就用角色內的口吻拒絕,並給出替代方案。留在虛構裡的拒絕,比一條系統錯誤訊息干擾更小。
Roguelike 與地城生成
Roguelike 需要兩件彼此拉扯的事:一座每次跑起來都不一樣的地城,和一座每次都公平的地城。兩條軸線上都隨機,會產生不公平的 runs。兩條軸線都固定,會產生無聊的一座。解法是把兩條軸線分開:以 seed 決定布局、固定難度曲線、變化外觀。
以 seed 決定布局,指的是房間圖、走廊連接和關鍵物件的位置都由一個 seed 生成,所以同一個 seed 永遠產生同一座地城。這讓 runs 可重現以便除錯,也讓你可以在同一張地圖上比較兩個 build。固定難度曲線,指的是每一層的遭遇預算是常數,不是隨機抽的。變化外觀,指的是圖集、敵人外觀和掉落表可以每次 run 不同,而不動到曲線。
AI GM 就疊在這之上,扮演地下城主的角色。它讀取生成的圖、用符合位置的 NPC 人格把房間填起來,並在遊玩過程中跑規則。生成是確定性的;團務不是。
01
挑一個 seed。布局生成器從它產生一張房間圖。
02
套用難度曲線。每一層拿到固定的遭遇預算,不是隨機的。
03
填充房間。NPC 人格依房間角色指派——守衛、商人、頭目。
04
變化外觀。圖集、敵人外觀和掉落表從一份 run 層級的調色盤裡抽。
05
把圖交給 AI GM。它對照這張圖和規則裁決器跑這場團務。
06
把狀態差異記錄下來。如果一場 run 感覺不公平,重播那個 seed,檢查它在哪一層的預算爆掉。
做一個
最小可玩的 AI-GM 團務需要四樣東西:一個有幾何的世界、一個有人格的 NPC、一個有兩種解法的障礙,以及一個能在回合之間持續的狀態儲存。就這樣。規則、美術、難度曲線都可以之後再加。如果你先做這四件式的版本,你會在問題還很便宜修的時候就早早發現迴圈上的毛病。
從單一房間和一個守衛開始。守衛有名字、有理由待在那裡,還有一條規則:不會離開那扇門。障礙就是那扇門。你可以打守衛、引開他,或找到一把鑰匙。每條路寫入不同的狀態旗標。如果 AI GM 能在十個回合內跑完那個房間而不自相矛盾,你就有一場團務了。
從那裡開始,加上會擴展的部分:更多帶記憶緩衝的 NPC、一個會記錄擲骰的規則裁決器、一個以 seed 決定布局的生成器,最後如果你要多人,再加上共享狀態。每一項新增都有具體的失敗模式可以測。先把最小的東西做出來,故意弄壞它,然後再擴充。
- 3D game builder用來擺放幾何、定義 NPC 人格、設定難度曲線的編輯器。AI GM 所跑的世界就是在這裡組裝起來的。
- Generator地城式世界的布局與內容生成器。吃一個 seed 和一條難度曲線,產出一張填好內容、可供 AI GM 使用的房間圖。
- Agent Sprite Forge供應 NPC 的視覺層,讓 AI GM 讓角色說話時,對白和肢體語言保持一致。
- The Cyclops' Island整個迴圈的一個完整範例:明確的目標、會反應的 NPC、有多種解法的障礙。當你自己的東西跑起來不對勁時,可以拿它當參考 build。
走進它所屬的那個世界
判斷一個遊戲主持人的唯一方法,就是跑一場團務。打開一個:一個小世界,四個角色各自給你一件事做,而障礙會回應你接近它們的方式。它的做法和這個站上其他東西一樣——從一段描述開始,發布成一個頁面。
回到 3D Game Builder
全部 31 個完成的 3D 世界、遊戲和場景都在同一頁——每一個都能玩。