用行为树与状态机写AI

对于有限状态机而言,必须明确 状态的转换方式; 对于行为树,必须明确状态前提:前提条件
每一个行为必须有“前提条件” ,这决定了该行为是否被选择。
行为树的运算也是通过帧循环的update来驱动,不一定是每帧都update,但是要周期性update。
每一次run从根节点(root)开始,每一运行都会选择一个可行的子节点运行,这种选择可以是随机方式,也可以是预设好优先条件
行为树由叶子节点和中间节点组成,叶子节点是最基本的行为(如跑动,攻击),中间节点代表逻辑单元(巡逻,逃跑)。
当一个叶子节点被选择后,就会激活其对应的基本的行为
最基本的行为可能执行成功也可能失败。
高等级的行为(中间节点)是否执行成功依赖于他们的孩子节点是否执行成功。
一个子节点失败可能导致父母节点选择另外一个孩子。
除了选择(selector)一个单独的子节点行为,一个节点还可能顺序(sequence)or并行(concurrent)得运行他的所有子节点。
一个行为除了有前提条件,可能还有上下文条件(父节点or孩子节点可能存储一定的状态变量)。

高优先级的行为可能抢占低优先级的行为。

行为树特点:
1.高度模块化状态,去掉状态中的跳转逻辑,使得状态变成一个“行为”。

2."行为"和"行为"之间的跳转是通过父节点(Composite)的类型来决定的(例如sequence或者selector) 。比如并行处理两个行为,在状态机里面无法同时处理两个状态。

3.通过增加控制节点的类型,可以达到复用行为的目的。

4. 可视化编辑

行为树(Behavior Tree)类型

有4大类型的Node:
(1) Composites Node  组合节点
(2) Decorator Node 装饰节点
(3) Actions Node     行为节点
(4) Conditinals Node条件节点

整棵行为树中,只有Condition Node和Action Node才能成为Leaf Node,而也只有Leaf Node才是需要特别定制的Node;Composite Node和Decorator Node均用于控制行为树中的决策走向。(所以有些资料中也统称Condition Node和ActionNode为Behavior Node,而Composite Node和Decorator Node为Decider Node。)

设计思路

定制Action节点 和 Conditional节点
用决策节点组织Action节点和Condition节点,形成行为树


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值