遊戲的機器學習 NPC:為什麼《最後生還者》的 AI 隊友不擋路
這句話聽起來像偷懶,其實是設計哲學的轉向。傳統思路是「我要做一個能正確戰鬥的隊友」,Naughty Dog 的思路是「我要做一個不會破壞玩家沉浸感的隊友」。這兩者的差別在於優先順序:前者追求 AI 的自主性,後者追求玩家的體驗曲線。
於是出現了一個在當時引發討論的設計決策:在《最後生還者》一代中,隊友在潛行狀態下不會被敵人發現。即使艾莉大搖大擺走過敵人身邊,敵人也不會有反應。很多玩家一開始會覺得「這不合理」,但實際玩過之後,絕大多數人都認為這是正確的選擇——因為玩家真正在意的不是「AI 是否寫實」,而是「我的潛行有沒有被隊友雷到」。
這個決策濃縮了整個隊友 AI 設計的核心矛盾:寫實性 vs. 可玩性。而《最後生還者》選擇了可玩性,並用大量技術手段去掩蓋這個選擇帶來的破綻。
二、拆解《最後生還者》的隊友 AI:不擋路不是魔法,而是設計
接下來我們進入技術層面。要把「隊友不擋路」這件事做扎实,光靠一個演算法是不夠的,它其實是四、五層機制疊起來的結果。以下逐層拆解。
2-1 導航網格與動態避讓:讓「路」不再是唯一解
遊戲中的 AI 移動通常建立在導航網格(NavMesh)之上——它把 3D 場景轉換成一張可以行走的「地圖」,AI 在地圖上用 A* 演算法算出最短路徑。但單純的 A* 只解決「從 A 到 B 怎麼走」,不解決「同時有別人在走怎麼辦」。
所以現代遊戲會在 A* 之上疊一層局部避讓(Local Avoidance)。常見的技術包括:
《最後生還者》的做法更進一步。Naughty Dog 的 AI 系統會讓隊友在跟隨玩家時,主動偵測玩家的移動方向與速度,並提前預判「玩家接下來兩秒可能會走過的路徑」,然後把自己安排到路徑的側邊或後方。這就是為什麼你很少覺得艾莉擋在你正前方——她其實一直在「預測」你。
還有一個關鍵技巧:當隊友真的擋住玩家時,系統會啟動「緊急退讓」。這不是讓隊友慢慢繞過去,而是用一個極短的動畫(側身、後退半步、貼牆讓位)在 0.3 秒內解決碰撞。玩家幾乎不會察覺,只會覺得「隊友好像很自然地讓開了」。
2-2 「隱形化」機制:玩家感知的錯覺工程
比避讓更重要的,是讓玩家根本不會去注意隊友。這在遊戲設計中被稱為「感知管理」,而《最後生還者》是把這套玩到極致的作品之一。
具體手段包括:
這些技巧單獨看都有「作弊」的嫌疑,但組合起來的結果是——玩家從來不會意識到自己在跟一個 AI 互動,而只會覺得「這裡有個可靠的同伴」。這就是所謂的「隱形化」:好的 AI 是讓你不會注意到它是 AI。
2-3 戰鬥中的站位腳本與角色分工
潛行時隊友可以「隱形」,但戰鬥時不行——玩家需要隊友真的做事。這時《最後生還者》靠的是腳本化的站位系統加上條件式行為切換。
隊友在戰鬥中的行為大致分為幾個模組:
狀態
行為邏輯
對玩家的影響
跟隨中(非戰鬥)
維持距離、避讓、模仿玩家姿態(蹲下時跟著蹲)
幾乎無感,但隨時在側
進入戰鬥
自動尋找掩體、標記敵人、偶爾出手
提供火力支援與情報
玩家被壓制
提高攻擊頻率、吸引敵人注意力
降低玩家壓力,創造反擊窗口
玩家脫離戰鬥
退回跟隨模式、重新計算路徑
無縫回到潛行狀態
值得注意的是,隊友的命中率、開火時機、甚至「敵人是否會優先攻擊隊友」這些參數,都是可以動態調整的。例如當玩家血量低時,系統會刻意讓隊友吸引更多仇恨(Aggro),給玩家喘息的空間;當玩家明顯想自己解決敵人時,隊友則會降低干預頻率。這種「隱形的難度調節」是現代 3A 遊戲的常見做法,而《最後生還者》是其中的教科書級案例。
三、機器學習在現代遊戲 NPC 中的角色
講到這裡,必須先釐清一個常見的誤解:《最後生還者》的隊友 AI 主要不是靠機器學習。它的核心仍然是行為樹、狀態機、腳本與規則式系統。機器學習在其中的角色相對有限,更多是出現在「動畫融合」、「姿態匹配(Motion Matching)」這類輔助層面——二代在動畫系統上大量使用 Motion Matching 技術,讓角色移動更自然,但那跟「決策 AI」是兩個不同的問題。
那麼,機器學習到底在遊戲 NPC 中扮演什麼角色?我們來好好談一談。
3-1 從行為樹到強化學習:決策 AI 的三種路線
目前遊戲 AI 的決策系統大致可以分成三條路線:
第一條:規則式 AI(Rule-based)
包括狀態機、行為樹、GOAP(Goal-Oriented Action Planning,目標導向行動規劃)。這是目前 99% 的商業遊戲在用的方式。優點是可控、可預測、好除錯;缺點是需要設計師手動撰寫大量規則,難以產生真正「湧現」的行為。
第二條:效用型 AI(Utility AI)
給每個可能行動打分數,選擇分數最高的執行。它比行為樹更靈活,能處理「多目標權衡」的情境,例如「我該先躲掩體還是先救隊友」。許多 RPG 與策略遊戲用這種方式。
第三條:學習型 AI(Learning-based)
透過機器學習(強化學習、模仿學習、神經網路)讓 AI 從大量遊戲數據或自我對戰中學習策略。這條路線最接近大眾想像中的「機器學習 NPC」,但在商業遊戲中的落地程度遠低於外界預期。
為什麼?因為學習型 AI 有三個致命問題:不可預測性、訓練成本與除錯困難。一個行為樹寫錯了,設計師可以去看節點、抓 log 修好;一個神經網路行為怪異,工程師可能要花幾週才找得出原因。對於動輒數百人團隊、排程緊張的 3A 專案來說,這是巨大的風險。
所以目前學習型 AI 多半出現在以下場景:
動畫生成:Motion Matching、深度學習驅動的動作融合。
玩家行為建模:用於難度動態調整、關卡平衡測試。
3-2 學習型 AI 的實務挑戰:為什麼「聰明」不等於「好玩」
假設真的用強化學習訓練出一個超強的 NPC,會發生什麼事?答案是——玩家會很痛苦。
這在遊戲 AI 圈有句名言:「AI 不該表現得像個天才,而該表現得像個稱職的對手。」強化學習的目標函數通常寫成「勝率最大」或「得分最高」,結果訓練出來的 AI 會找到各種玩家意想不到的「漏洞打法」:龜在一個角落、用最優化但無聊的策略、精準到不合理的反應速度。這不是娛樂,這是折磨。
所以實務上的做法往往是「給學習型 AI 加上限制」:限制它的反應時間、限制它的資訊量(讓它跟玩家一樣只能看到視野內的東西)、加入「人性化誤差」。換句話說,我們不是要 AI 變強,而是要 AI 變「像人」。
另一個挑戰是行為的多樣性與可讀性。好的遊戲 AI 需要讓玩家能「讀懂」它在幹什麼——敵人躲掩體、探頭、換彈,這些動作要清楚到玩家能預判。學習型 AI 常常產生玩家看不懂的行為,反而降低了遊戲的節奏感與爽度。
這也是為什麼《最後生還者》這種作品選擇了高度腳本化的路線:因為它要控制的不是勝負,而是情緒。隊友什麼時候該說話、什麼時候該沉默、什麼時候該出手相救,這些都是敘事節奏的一部分,很難交給一個黑箱模型去決定。
四、為什麼「不擋路」其實是心理學問題
講完技術,我們回到最根本的問題:玩家到底在不在乎隊友擋路?答案是,玩家在乎的其實不是「擋路」本身,而是被打斷的感覺。
4-1 玩家感知與遊戲體驗:摩擦感從哪裡來
遊戲設計中有一個概念叫「摩擦感(Friction)」:任何讓玩家從「想做某件事」到「實際做到」之間產生阻礙的東西。隊友擋路就是一種典型的摩擦——你想往前衝,結果被隊友卡住,那一瞬間你的「心流」就斷了。
研究顯示,玩家對摩擦的忍受度跟「頻率」與「情境」有關:
在戰鬥或逃命階段被擋一下,玩家會非常火大,因為那是生死關頭。
《最後生還者》的設計正對著這些痛點:它在關鍵時刻(戰鬥、逃命)幾乎不會讓隊友擋路,而在安全時期允許隊友有更多存在感(說話、走動、跟玩家互動)。這種「該隱形時隱形、該出現時出現」的節奏安排,正是它讓人覺得舒服的原因。
4-2 「不擋路」的三個設計原則
從《最後生還者》的經驗中,可以歸納出三條給開發者的設計原則,也順便說明為什麼這件事這麼難:
原則一:玩家優先權永遠最高。
當玩家與 AI 的移動意圖衝突時,AI 必須讓路。這聽起來簡單,但實作上需要一套「優先權系統」,讓 AI 知道「我現在該退讓」。很多遊戲做不好,是因為 AI 的路徑計算沒有把玩家當作「最高優先的動態障礙」。
原則二:允許 AI「作弊」,但不要讓玩家看到。
離屏傳送、碰撞體縮減、視野外移動,這些都是「作弊」。重點不是禁止作弊,而是作弊要發生在玩家感知不到的地方。玩家一旦看到 AI 瞬移,沉浸感就崩了。
原則三:設計「不擋路」的場景,而不只是「不擋路的 AI」。
這點常被忽略。與其讓 AI 想辦法繞過狹窄空間,不如在關卡設計上就把通道做得寬一點、把掩體位置錯開。好的 AI 是 AI 與關卡設計共同完成的。《最後生還者》的關卡充滿「側邊空間」與「多層次地形」,這讓隊友永遠有地方可以退。
五、其他遊戲的對照:誰做到了、誰還沒
《最後生還者》不是唯一在隊友 AI 上下功夫的作品,但它的完成度確實名列前茅。以下是幾個值得對照的案例:
《戰神》(God of War, 2018)
阿特柔斯(Atreus)的設計靈感明顯受到《最後生還者》影響。他會自動避讓、不會卡住玩家、戰鬥中會自動索敵與射箭支援,同時兼任敘事角色。聖塔莫尼卡工作室同樣採用了大量的「隱形化」技巧,讓玩家專注在奎托斯身上。
《碧血狂殺 2》(Red Dead Redemption 2)
R 星的隊友與馬匹 AI 走的是另一條路:追求極致的寫實與模擬。結果是隊友會擋路、馬會撞樹、NPC 會做出讓你哭笑不得的反應。這種「不完美」反而成為遊戲的魅力之一,但也顯示出「寫實」與「順暢」之間的取捨。
《最後生還者 二部曲》(The Last of Us Part II)
二代把隊友 AI 推到新高度:隊友在潛行時會主動躲進草叢、會被敵人發現(但敵人對隊友的警戒與對玩家不同)、玩家可以下指令。這是一代的「隱形化」哲學加上更多自主性的結果。
《A Plague Tale》系列
隊友 AI 相對簡單,但在敘事場景中的配合度高,屬於「腳本驅動」的典型。
《異塵餘生 4》、《上古卷軸 5》
隊友 AI 走開放世界路線,自由度極高,但擋路、卡門、亂跑的問題也最嚴重。這是「開放世界 vs. 線性關卡」在 AI 設計上的根本差異:開放世界的變數太多,很難用腳本完全覆蓋。
從這些案例可以看出一個規律:越是線性、敘事導向的遊戲,隊友 AI 越容易做到「不擋路」;越是開放、模擬導向的遊戲,越容易出現摩擦。這不是技術高低的問題,而是設計目標的不同。
六、給玩家與開發者的實用觀察
6-1 玩家可以怎麼利用隊友 AI
理解了隊友 AI 的運作邏輯,其實可以反向用在攻略上。以下是幾個實用觀察:
6-2 開發者可以借鏡的設計原則
如果你正在做遊戲或對 AI 設計有興趣,以下是從《最後生還者》整理出的實務建議:
一、先定義「玩家體驗目標」,再選技術。
不要一開始就想「我要用機器學習做 AI」,而是先問「我希望玩家在這一刻感覺如何」。是緊張?是安心?是孤獨?技術是手段,體驗才是目的。
二、把「避讓」當成一級公民。
很多團隊把避讓當成附屬功能,結果就是玩家一直被卡。建議在移動系統設計初期就把「玩家優先權」寫進架構,而不是事後補丁。
三、建立「感知管理」機制。
設計一套系統來追蹤「玩家現在看得到什麼」,並讓 AI 的重大行為(傳送、補位、重生)發生在玩家視線之外。這是「隱形化」的核心。
四、接受「不寫實」。
隊友不被敵人發現、碰撞體縮小、離屏傳送,這些都不寫實,但都讓遊戲更好玩。寫實是加分項,不是必要條件。
五、用數據驗證,而不是用直覺。
記錄玩家被隊友擋住的頻率、位置、時長,這些數據比「我覺得應該還行」可靠得多。很多團隊發現,玩家實際感受到的摩擦遠高於設計者預期。
六、機器學習用在對的地方。
現階段,機器學習最適合用在「動畫融合」、「玩家行為預測」、「測試自動化」這些輔助層面,而不是直接取代決策 AI。決策 AI 仍然需要設計師的掌控力,尤其是在敘事導向的遊戲中。
七、結語:最好的 AI,是讓你忘記它是 AI
回到最初的問題:《最後生還者》的 AI 隊友為什麼不擋路?
答案不是某一個神奇的演算法,而是一整套以玩家體驗為核心的設計哲學:該退讓時退讓、該隱形時隱形、該出手時出手,並且把所有「作弊」藏在玩家看不見的地方。它結合了導航網格、動態避讓、腳本化站位、感知管理與大量的關卡設計配合,才造就了那個「幾乎不存在,卻又無所不在」的艾莉。
至於機器學習,它在現代遊戲 NPC 中的角色正在快速演進。LLM 驅動的對話 NPC、強化學習訓練的戰鬥對手、生成式動畫,這些都在改變遊戲 AI 的面貌。但無論技術怎麼進步,有一件事不會變:遊戲 AI 的目標不是「聰明」,而是「好玩」。而「好玩」這件事,往往來自於對玩家心理的深刻理解,而不是模型參數的多寡。
下次你在《最後生還者》裡蹲在草叢中,看著艾莉若無其事地從巡邏者面前走過,你可以會心一笑——那不是 bug,那是一整個團隊花了好幾年,特意為你設計的「不擋路」。
```