行为树 BT

      行为树BT,Behaviour Tree

     

      行为树的概念会比状态机要复杂些。可以理解为利用树状结构对于FSM的优化

      理论上任何一个FSM都可以表示成行为树的形式,但是行为树具有一些额外的优势

 

      行为树是一个包含逻辑节点行为节点的树结构,每次需要找出一个行为的时候,会从树的根节点出发,遍历各个节点,通过一些条件来搜索这颗树,最终确定需要做的行为(叶节点),并且执行它

      真正的行为树的行为都是在叶节点上,一般称之为行为节点(Action Node),如红圈表示。

这些叶节点才是我们真正通过行为树决策出来的结果

       行为树是一个有向无环图

 

行为树节点

  • 根节点
  • 逻辑节点
  • 行为节点


逻辑节点

序列

按顺序一次执行

选择


 

 

从前有一个胆小如鼠的英雄,

  1. 他看到哥布林就会跑过去打它;
  2. 他看到半兽人就会逃跑;
  3. 他看不到哥布林也看不到半兽人就会休息;
  4. 他看到哥布林也看到半兽人也会跑。

用行为树表达出来

这个行为树是等价于之前的有限状态机的。其中

Root是根节点,每次需要寻找行为的时候都必须从这里开始。

Priority Selector是一个逻辑节点,它的意思是让从左到右遍历自己的子节点,如果子节点的准入条件符合信息的话,就执行该子节点。如果英雄只看到哥布林,那么Orc in sight这个准入条件不符合,Escape不执行;Globlin in sight符合,于是执行Fight;因为Fight在Idle的左边,所以Fight的优先程度更高,于是Idle不执行。在我们的例子中,Idle可以看作是default behavior。

 

优点

从简单的行为树和有限状态机的对比,我们就可以看出,行为树由于引入了逻辑节点,它的转换条件更加少(线更少,更清晰),让拓展AI变得更加容易

行为树还有另外一个优点:行为的重用(reuse)。

例如,Escape有一个跑的行为,而Fight则有跑的行为,和砍怪的行为。请看图:

Sequence同样是一个逻辑节点,它的意思是从左到右按顺序执行子节点,并且仅仅在一个子节点执行完成后才执行下一个子节点。在例子中,Do Run需要有一个自己判断到达目的地的方法,当该方法返回end的时候,才会执行Do Slash。

Escape和Fight的Do Run行为节点是一样的,只是Fight多了一个Do Slash行为节点而已。所以Do Run是一个可以重用的节点。

在行为树中,我们能够编写好Do Run,Do Slash这些基础的行为节点,和设定一些准入条件,就可以组成千变万化的AI了!

 

 

 

https://blog.csdn.net/Travis_X/article/details/87773443

https://blog.csdn.net/Travis_X/article/details/87687914

 

参考:

https://zhuanlan.zhihu.com/p/19890016

AMDFM BT行为树是一种用于描述和控制能体行为的图形化工具。AMDFM是行为树的一种变体,它结合了行为树和有限状态机的特点,提供了更灵活和可扩展的行为控制方式。 行为树是一种树状结构,由一系列节点组成,每个节点代表一个具体的行为或决策。节点之间通过连接线连接,形成了一个有向无环图。在行为树中,每个节点都有自己的执行逻辑和条件判断,可以根据不同的情况选择不同的路径执行。 AMDFM BT行为树中的节点分为四种类型:动作节点、条件节点、控制节点和装饰节点。 1. 动作节点(Action Node):表示具体的行为或任务,例如移动、攻击、跳跃等。动作节点是行为树的叶子节点,没有子节点。 2. 条件节点(Condition Node):用于判断某个条件是否满足,例如检测敌人是否在视野范围内、检查生命值是否低于某个阈值等。条件节点也是行为树的叶子节点。 3. 控制节点(Control Node):用于控制行为树的执行流程,包括序列节点、选择节点、并行节点等。序列节点按顺序执行子节点,直到遇到一个失败的节点;选择节点按顺序执行子节点,直到遇到一个成功的节点;并行节点同时执行所有子节点。 4. 装饰节点(Decorator Node):用于修饰其他节点的执行结果,例如反转结果、重复执行等。装饰节点只有一个子节点。 AMDFM BT行为树通过组合不同类型的节点和连接线,可以描述复杂的智能体行为逻辑。它提供了一种直观、可扩展和易于调试的方式来设计和管理智能体的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值