Home 行为树
Post
Cancel

行为树

参考资料

  1. Behavior trees for AI: How they work

好用的行为树插件

  1. Behavior Designer
  2. NodeCanvas
  3. Fluid Behavior Tree - GitHub - 代码驱动行为树

行为树的基本概念

  1. 行为树采用策略型思考方式编写。
  2. 行为树的本质是树状节点,是一种树形的父子节点之间的逻辑结构,通过扩展节点的功能来实现复杂的行为逻辑。
  3. 行为树可以使用节点搭建一个庞大的AI模型。这些节点就像一个个的积木块,用这些节点搭建完整AI的过程就像是搭积木。

行为树中的节点

表现节点 Behavior Node

整颗行为树中,只有条件节点和行为节点能成为叶子节点,只有这两种是项目中要特别定制的节点。

条件节点 Condition Node

  1. 条件满足返回true,不满足返回false
  2. 常用的条件节点有:大于,小于,等于,与或非等等
  3. 应用场景有:判断血量,判断距离,判断状态,判断时间间隔等等

行为节点 Action Node

  1. Action 一般都是最后的叶子节点,对应了游戏中的某个具体行为,在完成具体的一次行为后根据计算或者配置返回值。
  2. 行为节点都是根据项目的需要从基础行为节点扩展而来,行为节点是最更富的节点库,大部分时间程序员都是在修改和扩容行为节点,
  3. 应用场景有:行走到目标点,追击目标,使用物品,撤退,攻击目标,防御,释放技能等等。

决策节点 Decider Node

复合节点和修饰节点用于控制行为树中的决策走向,一般不需要根据项目定制。

复合节点 Composite Node

  1. 复合节点可以有一个或者多个子节点。复合节点决定了子节点的执行顺序。
  2. 选择节点和顺序节点可以进一步提供非线性迭代的加权随机变种。
  3. 并发节点提供了并发性,可以利用线程或协程提供并发操作,性能高。一般在并发节点下面并行挂载多个Action子树或多个条件节点,以提供实时性。

选择节点 Selector

  1. 按顺序迭代执行子节点,遇到第一个返回true的子节点,停止迭代,返回true。
  2. 如果所有子节点都返回false,则返回false。
  3. 变种:随机权重选择节点(Weight Random Selector),每次执行不同的起点为每次执行不同的 first true 子节点提供了可能性。

顺序节点 Sequence

  1. 按顺序迭代执行子节点,遇到一个返回false的子节点,停止迭代,返回false。
  2. 如果所有子节点都返回true,则返回true。
  3. 变种:随机权重顺序节点(Weight Random Sequence),可以提供不同的随机迭代顺序,避免AI总是出现可预期的结果,让结果更具随机性。

并行选择节点 Parallel Selector

  1. 并行执行所有子节点,执行完所有子节点后,如果有一个子节点返回true,则返回true。
  2. 如果所有子节点都返回false,则返回false。

并行顺序节点 Parallel Sequence

  1. 并行执行所有子节点,执行完所有子节点后,如果有一个子节点返回false,则返回false。
  2. 如果所有子节点都返回true,则返回true。

并行混合节点 Parallel Hybird

  1. 并行执行所有子节点,执行完所有子节点后,按指定数量的节点返回true或false后再决定返回结果。

修饰节点 Decorator Node

  1. 修饰节点只能有一个子节点。在其子节点执行后,对返回的结果进行修饰后返回给它的父节点。
  2. 修饰节点都可以自定义出来,其功能五花八门

反向修饰 Not

  1. 将子节点的结果取反后返回给父节点。

直到失败修饰 Failure Until

  1. 在子节点到达指定的次数前一直向父级返回false,子节点到达指定的次数后,返回true

总是失败修饰 Fail

  1. 总是返回false

计数修饰 Counter

  1. 只运行子节点n次,超过n次后不再运行。

时间修饰 Time

  1. 在指定的时间内运行子节点后都返回true,超过时间范围总返回false。

不做任何事 Nothing

  1. 什么都不干,占个位置。

日志 Log

  1. 打印日志,告知开发者当前节点的位置和相关信息。

优点

  1. 单个节点易扩展。
  2. 通过一些简单的操作就能制作出能够达到人类预期的足够复杂的 AI 行为。
This post is licensed under CC BY 4.0 by the author.
Contents