特征

行为树(behavior tree)是用来实现非人工角色复杂行为的工具,它具有下面这些特征:

  1. 行为树是树:执行时从根结点开始按照指定的顺序遍历,直到到达终结状态。
  2. 叶子结点都是可执行的行为:叶子结点会进行具体的操作,可以是一个简单的检测操作,也可以是一个更复杂的操作,结点会返回状态信息(成功,失败,运行中)。
  3. 内部结点控制树的遍历:内部结点会根据孩子结点返回的状态信息,按照特定的规则确定下一个执行的结点。

层和结点

  1. 决策层:根据当前条件,决定执行哪种行为
  2. 执行层:具体执行,可以细分为多个步骤来完成
    1. 行为结点(Action):执行具体行为,由叶子结点组成
    2. 控制结点:组织行为树,比如下面的组合结点、条件结点、
    3. 子结点也可以拥有子结点,可以进一步的细化逻辑
  3. 开始结点(Entry):代表行为树的开始
  4. 组合结点:
    1. 顺序结点(Sequence):顺序执行所有子任务,知道所有任务完成
    2. 选择(Selector):
      1. 从多件事情中选择一件来做,只能执行其中一个子节点
      2. 可以有其他变种:优先级选择、非优先级选择、权重选择
    3. 并行(Parallel):并行结点,所有子任务全部一起执行,全部完成才算完成
    4. 重复(Repeat):重复做某件事情,类似与代码中的for循环
  5. 条件(Precondition):根据当前条件,决定执行哪种行为,返回true或者false,可以进行组合,类似代码中的布尔表达式,包括但不限于下面几种形式
    1. 且(And)
    2. 或(Or)
    3. 非(Not)

有限状态机(FSM)

  1. FSM,即有限状态机(Finite State Machine),是一种状态转换模型,它把游戏实体看成一个状态机,每个状态都对应着一种行为。FSM中的状态是有限的、确定的,它们之间的转换是通过接收到特定的输入来触发的。在游戏中,FSM通常被用来管理游戏实体的基本行为,例如角色的行走、跳跃、攻击等。FSM的设计思想简单、易于理解,但是当状态过多时,FSM的实现会变得复杂,难以维护。
  2. 行为树(Behavior Tree)是一种树形结构,它将游戏实体的行为表示为树中的节点。节点分为两种类型:行为节点和控制节点。行为节点表示游戏实体具体要执行的行为,例如攻击、移动、跳跃等;控制节点用于控制行为节点的执行顺序和条件,例如序列节点、选择节点、并行节点等。行为树的优点在于能够表达复杂的逻辑和策略,并且非常灵活,容易扩展和修改。行为树在游戏中被广泛用于控制NPC、AI角色和其他非玩家实体的行为。
  3. 行为树可以看作是FSM的扩展,它能够表达更为复杂的行为和逻辑,也可以包含多个有限状态机。在行为树中,每个节点可以是一个FSM,也可以是其他类型的节点,这些节点之间可以互相嵌套和组合,形成一个复杂的状态机。行为树的可扩展性和灵活性使得它在游戏开发中得到了广泛应用,成为了管理游戏实体行为的一种重要工具。

参考资料

游戏AI神器--行为树,让AI变得更加聪明,可控

游戏AI神器--行为树 代码库UML设计分析

行为树入门教程

AI教程—初识行为树

行为树(Behavior Tree)

ChatGPT

FSM(状态机)、HFSM(分层状态机)、BT(行为树)的区别

使用行为树(Behavior Tree)实现游戏AI

层次化状态机的讨论