行為樹:敵人為什麼會包夾你

gaming%20setup%20with%20RGB%20keyboard%2C%20gaming...
發表時間:2026 年 10 月 29 日 | 更新日期:2026 年 10 月 29 日 | 編輯:雅寶社區編輯團隊
行為樹:敵人為什麼會包夾你 - 雅寶社區 · 頂客論壇

很多老遊戲的 AI 是用「有限狀態機(FSM)」寫的:AI 會處於「巡邏」、「警戒」、「戰鬥」、「逃跑」等狀態,狀態之間透過條件轉移。FSM 的優點是直觀,但缺點也很明顯——狀態一多,轉移線就會爆炸,而且狀態之間容易產生耦合,修改一個行為常常牽一髮動全身。

行為樹則是用「組合」取代「轉移」。每個行為都是樹上的一個分支,開發者可以像積木一樣新增、移除或重排分支,而不必擔心影響其他行為。更重要的是,行為樹天生適合描述「優先級」與「中斷」——這正是戰術 AI 需要的。當玩家突然出現在敵人背後時,行為樹可以透過高優先級的分支立刻中斷原本的巡邏行為,切換成「警戒→呼叫支援→包夾」的流程。

換句話說,行為樹讓「包夾」不再是硬寫死的腳本,而是一組可以被條件觸發、被優先級調度、被多個敵人共享的戰術模組。

包夾戰術是怎麼被「寫」出來的?行為樹中的戰術邏輯

現在我們進入正題。當你被兩三個敵人從不同方向包圍時,遊戲内部到底發生了什麼?簡單來說,敵人 AI 的根節點底下通常會有一個「戰鬥決策」分支,而包夾行為是這個分支中的一個子樹。這個子樹的結構大致可以拆成三個階段:感知與呼叫、位置分配、協同逼近。

巡邏、察覺、呼叫支援的行為序列

先從最外層說起。一個典型的敵人 AI 根節點,可能長這樣(以文字描述行為樹結構):

根節點(Selector)

├─ 分支一:死亡/被擊倒(Condition + Action)

├─ 分支二:戰鬥行為(Sequence)

│ ├─ 條件:是否已察覺玩家?

│ ├─ 動作:進入戰鬥狀態

│ └─ 子選擇節點:依戰術優先級選擇「包夾/正面壓制/找掩護/撤退」

└─ 分支三:巡邏行為(Sequence)

├─ 動作:沿巡邏點移動

└─ 條件:是否偵測到異常?

當玩家還沒被發現時,AI 會停留在「巡邏行為」分支,沿著預設路徑移動。此時「察覺」這件事是由感知系統(通常是視野錐、聽覺範圍、或是遊戲自訂的「警戒值」)來判斷的。一旦玩家進入視野或被槍聲驚動,條件節點回傳成功,根節點的選擇節點就會把執行權交給「戰鬥行為」分支。

進入戰鬥後,第一件事通常不是直接衝上去,而是呼叫支援。這段在行為樹中通常是一個序列:

Sequence:呼叫支援流程

  1. 條件:是否已鎖定玩家位置?
  2. 動作:播放「呼叫」語音/動畫(可被打斷)
  3. 動作:向「小隊管理器(Squad Manager)」註冊「我發現玩家了」
  4. 動作:等待小隊管理器回傳戰術指令

這裡的「小隊管理器」是關鍵。行為樹本身只負責單一敵人的決策,但包夾本質上是多個敵人之間的協同。因此多數遊戲會額外設計一層「群體 AI(Group AI)」或「小隊管理器」,由它來統籌多個敵人的行為樹。行為樹裡的「等待指令」節點,其實就是在等小隊管理器分配角色——「你負責正面」、「你負責左翼」、「你負責右翼」。

側翼包夾的行為樹節點設計

當小隊管理器把某個敵人分配為「側翼」角色後,該敵人的行為樹會切換到一個專門的「側翼包夾子樹」。這個子樹的結構通常包含以下幾個節點:

Selector:側翼包夾決策

├─ Sequence:移動到側翼位置

│ ├─ 條件:是否已取得側翼座標?

│ ├─ 動作:計算路徑(避開玩家正面視野)

│ ├─ 動作:移動到側翼座標(Running 狀態)

│ └─ 條件:是否抵達且玩家仍在戰鬥中?

├─ Sequence:同步進攻

│ ├─ 條件:小隊管理器是否發出「同步進攻」訊號?

│ ├─ 動作:從側面逼近玩家

│ └─ 動作:進入攻擊範圍後開火/近戰

└─ Sequence:包夾失敗應變

├─ 條件:玩家是否脫離包夾範圍?

└─ 動作:重新註冊小隊管理器,請求重新分配

注意到幾個設計巧思。第一,「移動到側翼位置」是一個長時間執行的 Running 節點,行為樹在每一幀都會重新評估這個節點,這讓敵人可以隨時因為玩家移動而中斷移動、重新計算路徑。第二,「同步進攻」需要等待小隊管理器的訊號,這確保多個敵人不會各自為政,而是同時從不同方向壓上,形成真正的包夾。第三,「包夾失敗應變」讓 AI 不會卡死在一個失敗的戰術裡,而是能重新組織。

還有一個容易被忽略的細節:側翼座標是怎麼算出來的?通常小隊管理器會根據玩家目前位置與面向,計算出玩家「左後方」與「右後方」的相對座標,再分配給不同敵人。有些遊戲甚至會加入「視線遮蔽」檢查,確保敵人選擇的側翼路線不會被玩家一眼看穿。這就是為什麼你常常覺得敵人「從奇怪的角度冒出來」——因為牠們的路徑被設計成盡量避開你的正面視野。

敵人包夾你的五大觸發條件

理解了行為樹的結構後,我們來談談「為什麼是現在包夾你」。行為樹不會無緣無故執行某個分支,每個戰術的啟動都對應著特定的條件。以下是五個最常見的觸發條件,也是玩家可以觀察與利用的線索。

視野與感知系統

最基礎的觸發條件當然是「敵人是否看得見你」。視野系統通常由「視野錐(FOV cone)」、「視線射線檢測(Line of Sight)」與「警戒值累積」三部分組成。當你進入敵人的視野錐、且中間沒有障礙物遮蔽時,警戒值會開始上升;警戒值滿了,行為樹的「察覺」條件節點就會回傳成功,觸發戰鬥分支。

但包夾的觸發往往比「看見你」更複雜。很多遊戲設計成:單一敵人看見玩家時,只會進入「警戒」或「正面交戰」,要等到「多名敵人同時感知到玩家」或「小隊管理器確認玩家位置」後,才會啟動包夾戰術。換句話說,你被包夾,往往代表你的位置已經被整個小隊「共享」了。這也是為什麼有些遊戲裡,你只要被一個敵人發現,沒過幾秒就會引來一整群——因為感知資訊會透過小隊管理器擴散。

對玩家來說,這意味著:控制「被發現的次數」比控制「被單一敵人看到」更重要。如果你能快速解決第一個發現你的敵人,阻止牠完成「呼叫支援」的動作(行為樹中的序列節點),就能有效延後包夾的發生。

位置與距離判定

第二個常見觸發條件是「玩家與敵人的相對位置與距離」。行為樹中通常會有一個條件節點判斷:「玩家是否處於某個距離區間內?」例如:距離太遠時,敵人只會遠距離射擊;距離中等時,敵人會嘗試接近;距離很近時,才會啟動包夾或近身壓制。

此外,「玩家是否處於開闊地」也是一個關鍵判定。在狹窄走廊裡,敵人的側翼路線可能被牆壁阻斷,行為樹的「移動到側翼位置」節點會因為路徑計算失敗而回傳失敗,整個包夾子樹就會中止。相反地,在開闊的廣場或有多條通道的房間裡,敵人有更多側翼路線可選,包夾成功率自然提高。這也是為什麼許多遊戲的戰鬥設計會刻意安排「多入口空間」——那正是包夾戰術的舞台。

第三個觸發條件是「小隊人數」。包夾需要至少兩名敵人(一名正面牽制、一名側翼),有些遊戲甚至要求三名以上才會啟動「完整包夾」。行為樹中的條件節點會向小隊管理器查詢「目前可用戰鬥單位數量」,人數不足時,戰術會降級為「正面壓制」或「游擊騷擾」。

第四個觸發條件是「玩家行為模式」。有些遊戲的 AI 會記錄玩家的行動傾向:如果你總是躲在同一個掩體後、或總是沿同一條路線推進,小隊管理器可能會判定「包夾成功率提高」,進而更積極地分配側翼角色。這類設計通常透過「行為樹中的歷史紀錄節點」或「小隊管理器的統計模組」實現。

第五個觸發條件是「階段性事件」。例如玩家血量低於某個閾值、或戰鬥持續超過一定時間,行為樹可能會觸發「全力包夾」的攻擊性分支。這是一種難度調節機制,目的是避免戰鬥拖太久、保持節奏緊張。對玩家來說,這代表「拖延戰術」不一定永遠有效——有時候你越拖,敵人越兇。

玩家如何破解包夾行為樹

知道了行為樹的運作邏輯,你就可以用「反向工程」的方式來破解包夾。記住一個核心觀念:行為樹的每個分支都需要條件成立才會執行,而條件是玩家可以干擾的。以下是幾個實用策略。

策略一:打斷「呼叫支援」的序列。前面提過,包夾的前提是「小隊管理器知道你的位置」。如果你能在敵人完成呼叫動作前擊倒牠,或迫使牠中斷(例如用閃光彈、煙霧彈干擾感知),包夾就不會啟動。很多遊戲的「呼叫」動作有明顯的語音或手勢提示,那就是你的機會窗口。

策略二:破壞側翼路徑。行為樹的「移動到側翼位置」節點依賴路徑計算。如果你退到狹窄的通道、或有大量障礙物的區域,敵人的路徑計算容易失敗,包夾子樹就會中止。這也是為什麼老練的玩家會在開闊地戰鬥時「主動往窄處帶」——不是因為窄處好打,而是因為窄處讓敵人的戰術 AI 失效。

策略三:製造「感知盲區」。敵人的感知系統有視野錐與警戒值。如果你能頻繁進出敵人的視野邊緣,讓警戒值不斷上升又下降,就有機會讓「察覺」條件節點反覆失敗,延後包夾的啟動。煙霧、草叢、夜間視線等環境要素,本質上都是在削減感知條件的成立機率。

策略四:優先擊破「指揮單位」。如果遊戲中有「隊長」或「通訊兵」這類角色,牠們通常是小隊管理器的核心。擊倒牠們,可能導致整個小隊的包夾協同失效——因為行為樹中的「等待指令」節點會一直等不到回應。這在許多戰術射擊遊戲中是常見的設計。

策略五:利用「同步進攻」的等待時間。包夾不是瞬間完成的,敵人需要移動到側翼位置、等待同步訊號。這段時間就是你的「戰術空窗」。與其原地挨打,不如主動往其中一個側翼方向移動,破壞敵人的相對位置——行為樹的側翼座標是根據你的「當下位置」計算的,你移動了,牠們的計算就必須重來。

行為樹設計的常見陷阱與優化方向

從開發者的角度來看,包夾行為樹的設計也有不少坑。最常見的陷阱是「過度同步」:如果所有敵人都嚴格等待小隊管理器的訊號才行動,戰鬥會變得非常「機械」,玩家很容易預測。好的設計通常會加入「個體差異」——例如每個敵人的行為樹在「同步進攻」節點上加入隨機延遲,或讓部分敵人允許「提前突進」。

另一個陷阱是「條件判定太寬鬆」。如果包夾觸發條件太容易成立,玩家會覺得敵人「無時無刻都在包夾」,壓力過大且缺乏變化。反之,條件太嚴格則讓戰術 AI 形同虛設。優秀的遊戲會透過「難度等級」或「戰鬥階段」動態調整這些條件,讓包夾在適當的時機出現。

效能也是考量。行為樹每一幀都要從根節點遍歷,如果敵人數量多、分支又深,CPU 負擔會上升。優化方式包括:降低非活躍敵人的 tick 頻率、用「黑板(Blackboard)」共享感知資料避免重複計算、以及把長時間的移動節點設計成非同步執行。這些都是現代遊戲 AI 的標準做法。

結語:包夾不是魔法,是被設計出來的邏輯

下次當你被敵人從兩側包夾時,不妨換個角度想:這不是遊戲在「欺負」你,而是一棵行為樹正在按照設計者的意圖運作。感知條件成立 → 呼叫支援 → 小隊管理器分配側翼 → 移動到側翼位置 → 等待同步訊號 → 同時進攻,這條鏈條上的每一個環節,都對應著行為樹中的一個節點。而每一個節點,也都有可能被你的行動打斷。

理解行為樹,不只是理解遊戲 AI 的運作原理,更是理解「戰術」這件事本身:任何看似聰明的協同行為,背後都是一連串可被拆解的判斷與動作。當你學會從敵人的行為反推牠們的決策邏輯,你就不再是被包夾的獵物,而是能夠主動破壞對方戰術的玩家。這,才是攻略遊戲 AI 的最高境界。

所以,下一次看到敵人開始往你左右兩側移動時,別慌——先想想牠們的行為樹正在執行哪個分支,然後,打斷它。

🏠 返回首頁