特征
行为树(behavior tree)是用来实现非人工角色复杂行为的工具,它具有下面这些特征:
- 行为树是树:执行时从根结点开始按照指定的顺序遍历,直到到达终结状态。
- 叶子结点都是可执行的行为:叶子结点会进行具体的操作,可以是一个简单的检测操作,也可以是一个更复杂的操作,结点会返回状态信息(成功,失败,运行中)。
- 内部结点控制树的遍历:内部结点会根据孩子结点返回的状态信息,按照特定的规则确定下一个执行的结点。
层和结点
- 决策层:根据当前条件,决定执行哪种行为
- 执行层:具体执行,可以细分为多个步骤来完成
- 行为结点(Action):执行具体行为,由叶子结点组成
- 控制结点:组织行为树,比如下面的组合结点、条件结点、
- 子结点也可以拥有子结点,可以进一步的细化逻辑
- 开始结点(Entry):代表行为树的开始
- 组合结点:
- 顺序结点(Sequence):顺序执行所有子任务,知道所有任务完成
- 选择(Selector):
- 从多件事情中选择一件来做,只能执行其中一个子节点
- 可以有其他变种:优先级选择、非优先级选择、权重选择
- 并行(Parallel):并行结点,所有子任务全部一起执行,全部完成才算完成
- 重复(Repeat):重复做某件事情,类似与代码中的for循环
- 条件(Precondition):根据当前条件,决定执行哪种行为,返回true或者false,可以进行组合,类似代码中的布尔表达式,包括但不限于下面几种形式
- 且(And)
- 或(Or)
- 非(Not)
有限状态机(FSM)
- FSM,即有限状态机(Finite State Machine),是一种状态转换模型,它把游戏实体看成一个状态机,每个状态都对应着一种行为。FSM中的状态是有限的、确定的,它们之间的转换是通过接收到特定的输入来触发的。在游戏中,FSM通常被用来管理游戏实体的基本行为,例如角色的行走、跳跃、攻击等。FSM的设计思想简单、易于理解,但是当状态过多时,FSM的实现会变得复杂,难以维护。
- 行为树(Behavior Tree)是一种树形结构,它将游戏实体的行为表示为树中的节点。节点分为两种类型:行为节点和控制节点。行为节点表示游戏实体具体要执行的行为,例如攻击、移动、跳跃等;控制节点用于控制行为节点的执行顺序和条件,例如序列节点、选择节点、并行节点等。行为树的优点在于能够表达复杂的逻辑和策略,并且非常灵活,容易扩展和修改。行为树在游戏中被广泛用于控制NPC、AI角色和其他非玩家实体的行为。
- 行为树可以看作是FSM的扩展,它能够表达更为复杂的行为和逻辑,也可以包含多个有限状态机。在行为树中,每个节点可以是一个FSM,也可以是其他类型的节点,这些节点之间可以互相嵌套和组合,形成一个复杂的状态机。行为树的可扩展性和灵活性使得它在游戏开发中得到了广泛应用,成为了管理游戏实体行为的一种重要工具。