行为树学习笔记
定义及基本概念
行为树通过类似于决策树的树形决策结构来选择当前环境下应该做出的具体行为描述人物角色的行为、树状结构、节点。
按照“根据不同情况,执行不同的行为”的思想,由不同功能的节点,以父子关系连线的方式,形成的一棵树状图。
行为树的节点按照大类可分为:
- 根节点(Root):入口节点
- 行为节点(Action):没有子节点,用以执行具体行为的节点。
- 条件节点(Conditional):没有子节点,用以判定条件是否成立的节点。
- 组合节点(Composite):连接多个子节点,比较常见的组合节点有:选择节点(Selector)、序列节点(Sequence)。选择节点先调用第一个节点,失败则继续调用后续节点,成功则结束。序列节点先调用第一个节点,如果是条件节点,判断成功则继续调用后续节点,如果是行为节点则执行。如果失败则停止向下调用。
- 装饰节点(Decorator):只有一个子节点,用于执行特定的逻辑。例如循环节点,使得其子节点之下的逻辑可以循环执行。
行为树的状态常可分为:成功(Success)、失败(Failure)、执行中(Running),常用于行为节点和条件节点。
行为树与有限状态机对比
对于状态机来说,每个节点都需要知道它接下来要连向哪个节点。
对于行为树来说,每个节点只需要知道自己当前的状态,并返回给父节点。
有限状态机适合处理简单的AI游戏逻辑;
行为树适合处理较复杂的AI游戏逻辑;
状态机的优缺点
- 优点
- 容易实现(逻辑直来直去)
- 容易理解
- 缺点
- 不易维护、调试(节点之间连线数量是节点数量的平方)
- 耦合度高,扩展性不强
行为树的优缺点
- 优点
- 模块化(耦合度较低)
- 线性,易扩展
- 缺点
- 实现难度、理解成本较大:任何一个简单的操作都需要使用节点
- 更大的性能消耗:需要在定时器中每次从根节点遍历处理逻辑