一、从一个巡逻敌人开始
想象你在玩一款动作游戏,遇到一个巡逻的敌人。它的行为是这样:
- 平时沿着固定路线巡逻
- 一旦发现你,转入追击模式
- 追上后,若血量低就逃跑;血量充足就发起攻击
- 攻击有一套连招逻辑,会根据你的距离选择近战还是远程
这一整套复杂的逻辑,在游戏行业中,绝大多数是用行为树(Behavior Tree, BT)实现的。今天我们就来拆解这个工业界最主流的游戏 AI 决策机制。
但行为树并非横空出世——它是游戏行业在与「状态机爆炸」搏斗二十年后沉淀出的解决方案。要理解 BT 为什么是 BT,需要先理解它要替代什么。
二、为什么需要行为树:FSM 的结构性缺陷
2.1 FSM 的「毛线团」困境
在行为树流行之前,游戏 AI 的主流方案是有限状态机(Finite State Machine, FSM)。一个巡逻敌人用 FSM 描述大概是这样:
[巡逻] --发现玩家--> [追击] --靠近--> [攻击] ↑ | └────玩家逃出视野──────┘FSM 用节点表示状态、箭头表示转移条件。这在 3-5 个状态时清晰明快,但当状态数量增加,问题会指数级恶化:
假设做一个复杂 Boss,有这些状态:巡逻