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

游戏AI:行为树的更多相关文章

  1. 游戏AI-行为树

    参考: 游戏AI—行为树研究及实现 GAD腾讯游戏开发者平台:游戏中的人工智能AI 腾讯开源项目behaviac 占坑,待编辑

  2. 使用行为树(Behavior Tree)实现游戏AI

    ——————————————————————— 谈到游戏AI,很明显智能体拥有的知识条目越多,便显得更智能,但维护庞大数量的知识条目是个噩梦:使用有限状态机(FSM),分层有限状态机(HFSM),决策 ...

  3. 游戏AI之决策结构—有限状态机/行为树(2)

    目录 有限状态机 行为树 控制节点 条件节点 行为节点 装饰节点 总结 额外/细节/优化 游戏AI的决策部分是比较重要的部分,游戏程序的老前辈们留下了两种经过考验的用于AI决策的结构: 有限状态机 行 ...

  4. 做游戏长知识------基于行为树与状态机的游戏AI(一)

    孙广东 2014.6.30 AI. 我们的第一印象可能是机器人,如今主要说在游戏中的应用. 现代的计算机游戏中已经大量融入了AI元素,平时我们进行游戏时产生的交互都是由AI来完毕的.比方在RPG游戏中 ...

  5. Unity教程之-基于行为树与状态机的游戏AI

    AI.我们的第一印象可能是机器人,现在主要说在游戏中的应用.关于AI的相关文章我们在前面也提到过,详细请戳这现代的计算机游戏中已经大量融入了AI元素,平时我们进行游戏时产生的交互都是由AI来完成的.比 ...

  6. 趣说游戏AI开发:对状态机的褒扬和批判

    0x00 前言 因为临近年关工作繁忙,已经有一段时间没有更新博客了.到了元旦终于有时间来写点东西,既是积累也是分享.如题目所示,本文要来聊一聊在游戏开发中经常会涉及到的话题--游戏AI.设计游戏AI的 ...

  7. AI 行为树

    by AKara 2010-12-09 @ http://blog.csdn.net/akara @ akarachen(at)gmail.com @weibo.com/akaras 谈到游戏AI,很 ...

  8. 游戏AI-行为树理论及实现

    从上古卷轴中形形色色的人物,到NBA2K中挥洒汗水的球员,从使命召唤中诡计多端的敌人,到刺客信条中栩栩如生的人群.游戏AI几乎存在于游戏中的每个角落,默默构建出一个令人神往的庞大游戏世界. 那么这些复 ...

  9. 游戏AI之初步介绍(0)

    目录 游戏AI是什么? 游戏AI和理论AI 智能的假象 (更新)游戏AI和机器学习 介绍一些游戏AI 4X游戏AI <求生之路>系列 角色扮演/沙盒游戏中的NPC 游戏AI 需要学些什么? ...

  10. 游戏AI之路径规划(3)

    目录 使用路径点(Way Point)作为节点 洪水填充算法创建路径点 使用导航网(Navigation Mesh)作为节点 区域分割 预计算 路径查询表 路径成本查询表 寻路的改进 平均帧运算 路径 ...

随机推荐

  1. POJ题目分类推荐 (很好很有层次感)

    著名题单,最初来源不详.直接来源:http://blog.csdn.net/a1dark/article/details/11714009 OJ上的一些水题(可用来练手和增加自信) (POJ 3299 ...

  2. 第11章 认识和学习bash

    认识bash这个shell 硬件.内核和shell 用户操作计算机流程如下: 用户——>用户界面(shell,KDE,application)——>核心(kernel)——>硬件(h ...

  3. playbook详解—YAML格式的文本

    在playbook中有一些核心的指令 hosts:指明命令运行在哪个node之上 remote_user:在远端的node之上以什么用户的身份运行命令 var:给模板传递变量值 tasks:指明需要执 ...

  4. ubuntu 手动apache记录

    1.下载apache tar -xvzf  httpd.xx 解压 2.下载安装pcre Download PCRE from PCRE.org 解压,进入文件夹中 ./configure --pre ...

  5. 小程序 坐标算距离 (copy)

      var EARTH_RADIUS = 6378137.0;    //单位M    var PI = Math.PI;        function getRad(d){        retu ...

  6. 【.Net】在WinForm中选择本地文件

    相信很多朋友在日常的编程中总会遇到各钟各样的问题,关于在WinForm中选择本地文件就是很多朋友们都认为很难的一个学习.net的难点, 在WebForm中提供了FileUpload控件来供我们选择本地 ...

  7. ZOJ3529_A Game Between Alice and Bob

    题目的意思是给你若干个数字,两个游戏者轮流操作,每次可以将该数变为一个小于当前的一个约数,无法操作的游戏者fail. 和其他的博弈题目大同小异吧. 不同点有两个,逐一分析吧. 一.每次改变一个数只能改 ...

  8. BZOJ 1924 所驼门王的宝藏(强连通分量缩点+DAG最长链)

    思路不是很难,因为宝藏只会在给出的n个点内有,于是只需要在这n个点里面连边,一个点如果能到达另一个点则连一条有向边, 这样用强连通分量缩点后答案就是DAG的最长链. 问题在于暴力建图是O(n^2)的, ...

  9. bzoj3477[Usaco2014 Mar]Sabotage

    题意 给出一个长为n的正整数序列(n<=1e5),要求选出一个非空前缀和一个非空后缀(这两段不能够加起来组成整个序列),使得这个前缀和后缀中的所有数字一起求平均数的结果最小 分析 最大/最小化平 ...

  10. 题解 P1478 【陶陶摘苹果(升级版)】

    看着你们累死累活得快排.冒泡.结构体特殊冒泡.还有dp... 蒟蒻表示真的不用那么麻烦! 难度:新手村+1 压行情况:0 理解难度:0 首先我们来了解一下优先队列:(自己抄的自己...) 讲元素一个个 ...