zoukankan      html  css  js  c++  java
  • 游戏AI:行为树

    Behavior Tree

    行为树通过子Task的返回值决定整棵树的走向

    Task

    行为树上的每个节点都称为一个Task, 每个Task存在三种状态, success, failure, running。
    其中running是临时状态,仅叶子节点才能返回running状态,running结束后也要返回success或者failure。

    Task的种类:

    • Composite
    • Behaivor(Action, Conditional)
    • Decorator

    Composite


    组合节点,可以组合其他任意的节点,从而构成一个数,根节点一般为组合节点

    • Sequence
    • Selector
    • Parallel(这个没有实现)
    • Random

    Sequence

    从左到右遍历Sequence的子Task。

    • 遇到failure则停止继续遍历,则Sequence直接返回failure
    • 遇到success则继续遍历,若Sequence的全部子Task都返回success,则Sequence返回success
    • 遇到running则停止继续遍历,并则等待running的返回值(failure或者success)

    Selector

    • 遇到failure继续遍历,若Selector中子Task全返回failure,则Selector返回failure
    • 遇到success则停止遍历,并返回success,
    • 遇到running则停止继续遍历,并等待running的返回值(failure或者success)

    Priority Selector

    • 类似于Selector,但是并不是顺序遍历,而是根据优先级(Priority)的顺序进行遍历
    • 优先级高的优先运行
    • Task的默认优先级都是0

    Random Selector

    • 类似于Selector,但是并不是顺序遍历,而是随机(Random)的顺序遍历

    Random Sequence

    • 类似于Sequence,但并不是顺序遍历,而是随机(Random)的顺序遍历

    Decorator


    修饰节点,可以包含一个Action,对其进行修饰

    • Failure 一直返回failure
    • Success 一直返回success
    • Inverter 对Action返回结果取反
    • Repeater 一直重复Action指定的次数
    • UntilFailure 一直重复Action,直到Action返回failure
    • UntilSuccess 一直重复Action,直到Action返回success

    Contional


    条件节点,用于描述条件

    • RandomProbability 随机概率,可以指定概率返回成功

    Action


    具体的行为执行节点

    • Event 发送指定的事件,并返回success
    • Invoke 调用指定方法,并返回success
    • Restart 重启行为树,并返回success
    • Wait 等待指定时间,在这个时间内一直返回running,时间到了后返回success
    • Log 打印日志,并返回success
  • 相关阅读:
    Spring Cloud入门
    HTML常用标签
    Spring boot 入门
    数据库 基本操作
    jquery中的ajax方法参数
    反射详解
    SpringMVC框架
    Java NIO
    MQ(消息队列)的使用场景以及常见的MQ
    英文字母和中文汉字在不同字符集编码下的字节数
  • 原文地址:https://www.cnblogs.com/luweimy/p/4394971.html
Copyright © 2011-2022 走看看