文章目录
- [1 行为树](#1 行为树)
- [2 行为树驱动方式](#2 行为树驱动方式)
- [3 行为树结点分类](#3 行为树结点分类)
-
- [3.1 控制节点](#3.1 控制节点)
- [3.2 执行节点](#3.2 执行节点)
- [4 行为树与状态机比较](#4 行为树与状态机比较)
本文章参考 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。
1 行为树
行为树(Behavior Tree,BT)在游戏 AI 中是一种用于控制游戏角色的人工智能技术。
在游戏 AI 中,对象的动作和行为往往是提前编辑好的(比如移动,攻击等),但执行行为的时间或地点是不确定的(比如何时朝目标移动,何时攻击目标等)。可以使用行为树来实现这些对象的决策任务。
2 行为树驱动方式
-
从根部开始往下执行,逐级进入子节点,每个节点都会有评估函数,确定节点状态。
-
每个节点在评估后会返回一个状态,根据节点状态,决定下一步的行为。
状态类型包括:
- 成功;
- 失败;
- 运行中。
-
每帧重复上述步骤,从根部向下执行。
3 行为树结点分类
3.1 控制节点
(1)序列(顺序)节点
按顺序执行所有子节点,直到其中一个子节点失败。
主要用于表示顺序执行的行为,列入执行一系列任务
- 如果所有子节点都成功,序列节点返回成功;
- 否则,返回失败。
(2)选择节点
选择其中一个子节点执行,通常是第一个成功的子节点。
主要用于在多个行为中选择一个适用的行为。
- 如果没有子节点成功,返回失败;
- 否则,返回成功。
(3)并行节点
同时执行多个子节点,可以根据一定策略(例如,全部成功、任一成功等)来处理子节点的状态。
主要用于同时执行多个相关的行为,例如同时巡逻和观察周围环境。
(4)装饰节点
修改或包装其子节点的行为,可以用于限制执行次数、延迟执行、修改返回状态等。
常见的装饰节点包括重复节点、延迟节点等。
3.2 执行节点
(1)动作节点
执行具体的行为(移动、攻击、跳跃等),没有子节点,表示行为树的最终叶子节点。
(2)条件节点
评估一个条件,并返回成功或失败。
一般用于决定下一步行动(比如检测敌人是否在射程内)。
(3)黑板节点
用于读取和写入数据,以在行为树节点之间共享信息。
主要用于存储和传递状态信息,例如目标位置、敌人列表、环境变量等。
4 行为树与状态机比较
-
优点
相对于有限状态机,行为树的拓展性更强,灵活性更强,更加模块化。
-
缺点
如果没有图形化编辑器或者配置表,通过代码来添加 AI 流程,会比较麻烦。
建议配合图形化编辑界面使用行为树。