NodeCanvas之行为树

认识行为树

  1. 什么是行为树?
    自顶向下的树形结构

行为树Behavior Tree 是一种数据结构,自顶向下的树形结构。

  1. 什么情况下要使用行为树?
    情况多变,条件复杂

在处理逻辑复杂的问题时,这个复杂可能是条件复杂,情况多样。

行为树并非是游戏Ai的专属,在处理其他复杂业务逻辑或可能时都可以尝试用行为树来解决。

  1. 行为树有什么优点?
    高效可读,易于扩展

行为树解决的问题是将复杂的关系,简单化,能很大程度的加强程序的可读性,健壮性。

  1. 行为树由哪几部分组成?
    主要由四部分 CDAC 组成 ,两根两叶

    1
    2
    3
    4
    Composites  组合节点    只能作为根节点,控制子节点的执行(顺序)
    Decorator 装饰节点 只能作为根节点,修饰子节点
    Actions 行为节点 只能作为叶子节点,执行具体动作
    Conditinals 条件节点 只能作为叶子节点,判断条件
    1. 行为树的工作流程?
      自顶向下,从左至右(并发进行),逐层进行

行为树执行的成果(成功/失败),由其子节点决定,子节点执行完成后会向父节点传递成功/失败的消息,
最终这些来自各个子枝的消息汇聚到行为树,行为树将结果整合得到行为树的最终执行结果。
其最终结果:同真为真,一假则假

关于NodeCanvas

NodeCanvas是一个集成了:

  • 行为树
  • 对话树
  • FSM有限状态机

的可视化 开发工具。

快速开始

准备

准备一个角色,1. 配置好动画控制器,2. 进行NaveMesh的网格烘焙。

Aa

添加上以下组件:

image-20210904203733291

创建行为树

可以看到由两个部分组成

image-20210904204124080

数据黑板

“黑板”(Blackboard)在人工智能领域已经是一个很古老的东西了,它基于一种很直观的概念,就是一群人为了解决一个问题,在黑板前聚集,每个人都可以发表自己的意见,然后在黑板上写下自己的看法,当然你也可以基于别人记录在黑板上的看法,来发表和更新自己的看法,在这样不断的意见交换,看法更新的过程中,越来越趋向于对于问题的最终解答。一开始的黑板系统就是这样一个由多个子系统来共同协作的人工智能解决方案。

可参考: http://www.aisharing.com/archives/801

在NodeCanvas里,我们可以把需要共享点数据放在黑板里,在多个行为树中共享。

操作窗口

image-20210904204714062

左上可以导入导出,右上是黑板数据。

可以添加不同类型点节点,行为树一般从流程节点开始

image-20210904204908578

基本流程

  1. Sequencer 依次执行直到失败

    image-20210904205615378


    完成效果如下:

  2. Selector 依次执行直到成功

image-20210904210501209

  1. Parallel 并行执行

image-20210904210629825其中,可以结束配置参数:

第一次成功、第一次失败、第一次成功或失败。

image-20210904211016371

完成的行为树

包含攻击、追逐、徘徊、巡逻几个状态

image-20210905162014408

节点介绍

NodeCanvas——行为树节点介绍 - 简书 (jianshu.com)

扩展-分层行为树

参考:分层机制 - 复杂行为树的行为控制_一生做游戏-CSDN博客_复杂行为树

综合参考

image-20210905122914367