Game AI Pro

模拟行为树:一种行为树/规划器混合方法

Posted by LudoArt on June 13, 2021

模拟行为树:一种行为树/规划器混合方法

行为树

  • 行为树允许我们将多个基础动作(如跳跃、踢击)组合成一个高层行为(如飞踹攻击)
  • 行为树可以进一步将该高层行为视作基础行为并由此构造更高层次的行为(如攻击)
  • “约束”可以被附加在树形结构中任意层级的行为节点上,用于指定一系列状态需求,并保证当世界状态不满足需求时,相应行为不会被选定。

image-20210613152107243

行为树示例

行为树的优点

  • 非常适合描述一名AI角色能够做什么
  • 符合直觉:这种结构通常与设计师用于描述AI行为的图十分类似

行为树的缺点

  • 不适合描述一名AI角色应该做什么
  • 外部系统的改变,必会引起对行为树的修改

规划器

  • 规划器在游戏AI中用于在当前世界状态下针对既定目标创建一组基础的动作序列(也称为计划)
  • 规划器维护:
    • 一个世界状态模型
    • 一组AI角色可用的基础动作集合
    • 一个目标启发式函数

其中:

世界状态模型包含了启发式函数所需的关于世界的所有信息;

规划器清楚知道每个动作对世界状态的影响;

目标启发式函数根据计划达成目标的程度为其评分;

image-20210613152933012

规划器示例

规划器优点

  • 适合用来决定一名AI角色应该做什么
  • 灵活性:AI角色在设计变化时仍可以灵活应对

规划器缺点

  • 灵活性:AI角色的行为设计师不可控

行为树/规划器混合

  • 与规划器一样:该系统使用一个世界状态模型和启发式函数。
  • 与规划器不同:该系统使用启发式函数在预定义的行为树分支间做选择。
  • 将规划器的世界状态模型和启发式函数整合进行为树,为每类节点实现一个模拟步骤。
    • 顺序器节点依次模拟每一个子行为并返回累计的模拟结果
    • 选择器节点分别模拟每个子行为,以确定该节点被选中后可能导致的结果世界状态。随后,启发式函数基于这些结果为每个子行为产生一个分数。选择器根据得到的分数选定子节点,并将该节点的分数作为自己的得分返回