Behavior Tree是一种实现游戏AI行为的常用工具。它特别适合于实现AI的高层决策和行为。并且十分适合游戏开发中的快速迭代和重用特性。下面笔者就来简单介绍下CryEngin中的 Behavior Tree.

  在CryEngin3.5中,CryEngine抛弃了Behavior Selection Tree, 而用Modular Behavior Tree作为代替。但是当时却没有对应的编辑器,直到3.7才在SandBox中加入了Modular Behavior Tree Editor. 在Crysis3中AI的高层决策行为就是通过Modular Behavior Tree来完成的,据笔者了解他们竟然在没有编辑器的情况下靠hand coding编写了所有行为树,让笔者肃然起敬。同时笔者也感到阵阵寒意,恐怕这活以后要交给我来干了。

  Modular Behavior Tree提供了很多节点,必须了解的主要有这三大类节点:Action节点、Decorator节点、Composite节点。当然你也可以方便的进行扩充。

Action节点

包含了各种各样的行为节点,并且在树中只能作为叶节点使用。这种节点主要负责AI的各种行为,例如:Move节点会控制AI移动到目的地、ExecuteLua节点调用一段lua代码

Decorator节点

此类节点是为了添加一些功能而设计的,有些类似于composite节点,但是它的子节点只能有一个。例如:Loop节点

Composite节点

行为树中的控制节点。例如:Sequence节点、Selector节点、Parallel节点

下面来看一个行为树的简单示例:让AI朝一个有效目标移动,如果目标无效则播放一个动画

<pre name="code" class="html"><BehaviorTree><Variables><Variable name="TargetVisible" /></Variables><SignalVariables><Signal name="OnEnemySeen" variable="TargetVisible" value="true" /><Signal name="OnLostSightOfTarget" variable="TargetVisible" value="false" /></SignalVariables><Root><Selector><IfCondition condition=”TargetVisible”><Move to=”Target” /></IfCondition><Animate name=”LookAroundForTarget” /></Selector></Root>
</BehaviorTree>

  <Variable name="TargetVisible" />定义了行为树中的一个变量"TargetVisible"。

  <Signal name="OnEnemySeen"variable="TargetVisible" value="true" />定义了一个信号"OnEnemySeen",当行为树收到这个信号时变量"TargetVisible"的值就会变为true.

  Modular Behavior Tree的执行是从<Root>节点开始,执行当前节点,然后执行当前节点的子节点。

<Selector>节点是一个控制节点,从它的命名就可以大概推断出它的具体功能了。它会依次执行子节点,当一个子节点成功时会立刻返回,不再执行后续的子节点;反之当一个子节点失败时,则继续执行下一个子节点,直到有子节点成功返回。上面的例子就表示当变量"TargetVisible"为true时,执行<Move>节点,否则执行<Animate>节点。

以上就是CryEngine中的Modular Behavior Tree的简单介绍,如有不明的地方,请留言,笔者会尽力解答。

CryEngine的Modular Behavior Tree简介相关推荐

  1. 使用行为树(Behavior Tree)实现网游奖励掉落系统

    原地址:http://blog.csdn.net/akara/article/details/6165421 [原创]使用行为树(Behavior Tree)实现网游奖励掉落系统 by AKara 2 ...

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

    注意:本文版权归Csdn AKara所有,此处纯粹转载,如有再转,请严格按如下方式显示标明原创作者及出处,以示尊重!! 关注公众号 风色年代(itfantasycc) 200G Unity资料合集送上 ...

  3. C# Behavior Tree -- 行为树

    (本博文可能比较老,如果发现插件运行不起来,那么可能是插件需要的U3D版,与你现在用着的不一兼容而导致) 在使用Unity 的插件中,官方提供的Assets Store中,提供了大量了资源下载,其中有 ...

  4. 行为树 Behavior Tree 原理

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/LIQIANGEASTSUN/arti ...

  5. Android下Device Tree简介

    Device Tree简介 一.概念        1.Device Tree 是一种描述硬件的数据结构,可以把嵌入式系统资源抽象成一颗树形结构,可以直观查看系统资源分布:内核可以识别这棵树,并根据它 ...

  6. 行为树 Behavior Tree 原理 一

    行为树 Behavior Tree 原理 一 行为树 结构图如下,一棵倒置的树 行为树采用节点描述行为逻辑,主要节点类型有: 组合节点:选择节点.顺序节点.随机选择节点.随机顺序节点.随机权重节点.并 ...

  7. 行为树(Behavior Tree)实践(1)– 基本概念

    行为树(Behavior Tree)实践(1)– 基本概念 http://www.aisharing.com/archives/90 自从开博以来,每天都会关心一下博客的访问情况,看到一些朋友的订阅或 ...

  8. 为Navigation 2创建自定义behavior tree plugin

    系列文章目录 思岚激光雷达rplidar从ROS 1到ROS 2的移植 ROS 2下navigation 2 stack的构建 订阅rviz2的导航目标位置消息"/goal_pose&quo ...

  9. Lua Behavior Tree For Unity3D(Lua描述行为树For Unity3D)

    文章目录点击展开[+] 行为树(BTTree)笔记 为什么是Lua版本的行为树 目前国内的手机游戏都标配热更新功能,而游戏AI自然也是MMO游戏的一个标配,比如说挂机的AI,宠物的AI等等. 说起如何 ...

最新文章

  1. 缓存穿透、并发和雪崩那些事
  2. Vivado中两种RTL原理图的查看方法和区别
  3. linux suse最新版本,查看SUSE LINUX版本
  4. 全球及中国油气装备行业投资状况及运营前景研究报告2021版
  5. linux 64位内存划分,linux 64位内存空间大小?(linux 64 bits memory space size? [closed])
  6. 使用Python可以做些什么
  7. 手机商城项目(修饰技术)
  8. html的blockquote标签,html blockquote标签怎么用
  9. 如何在Jsp页面加载时候就能执行某个方法
  10. centos配置linuxptp
  11. 教你用python制作证件照片啦学会再也不用跑去照相馆拍照了~
  12. CF1341B Nastya and Door 题解
  13. 数据的离散程度度量:极差、四分位差、平均差、方差、标准差、异众比率、离散系数
  14. 微型计算机原理与接口技术(周荷琴 冯焕清)第六版 课后习题答案 第二章(部分答案)
  15. 【Google】谷歌浏览器背景颜色变黑
  16. pymssql连接sql server报错:pymssql._pymssql.OperationalError
  17. 硬核科普服务器硬件组成与基本原理!
  18. asp毕业设计——基于asp+sqlserver的个人日志系统设计与实现(毕业论文+程序源码)——个人日志系统
  19. 手机网站开发需要注意的问题
  20. rba有哪几個主要組成部分_oracle rba一些小知识

热门文章

  1. 通过java2dAPI绘制报表
  2. 中国省份毗邻关系JSON数据[相邻省份][所辖市级信息][行政区划]
  3. Android 响铃与震动模式的
  4. Siri语音控制树莓派开关灯 --智能家居
  5. Android 判断摄像头权限方法
  6. 小孩上网时间控制 Kid-control
  7. 面向初学者的高阶组件介绍
  8. TED如何度过人生中的艰难岁月
  9. 多处理器下的中断机制
  10. 淘宝店铺怎么靠前排名?有哪些技巧?