前言
今天给大家分享的是行为树实战训练营。我们会以空洞骑士的BOSS AI为例,为大家介绍行为树的系统实现
行为树,在游戏行业当中是我们实现游戏AI的一种方式。除此之外,我们还可以使用最简单的如:switch case、 if else实现最基本的游戏AI;复杂一点,我们可以使用状态机、分层状态机来实现游戏的AI
【资料图】
行为术在游戏AI的实践实现上,有它自己的优势。我会给大家分别介绍,各种游戏AI的实现方式。给大家做一个清晰的比较,帮助大家去选择适合自己游戏项目的游戏AI实现方式。
版权声明
本文为“优梦创客”原创文章,您可以自由转载,但必须加入完整的版权声明
点赞、关注、分享可免费获得配套学习资源
点击观看完整视频
行为树详解
行为树:以模块化方式描述任务之间的切换
所谓的行为树,就是把一个怪物的行为拆分成若干个子行为。比如说,一个怪物的行为,拆分成攻击和巡逻等
详细的案例分析,请参考行为树实战训练营视频公开课
行为树的节点类型
行为树是由一个一个的节点构成的。我们对每一个节点赋予一定的功能。行为树的节点可以分成两大类:
控制节点
一棵行为树,所有的控制节点都是这棵行为树上的做非叶子节点
把行为树看成是一棵树,顶端的节点是树根,所有下方的绿色节点可以看作是树枝或者树干,灰色节点是叶子节点,所有的树枝或者是树干节点,我们都叫它控制节点
控制节点在行为树里面又可以分成两类,一类叫做组合节点,另外一类叫做条件节点
动作节点:
叶子节点相当于一棵树上的树叶,我们知道树叶是不会再分叉,它是这个整棵树的最末梢的节点
叶子节点代表了程序当中一个个的动作
行为树要点
行为树是由节点构成的,每个节点要想运作起来,它都必须要要有一个节点的状态,每个节点都必须处于处于三个状态之一:
Running,表示程序正在执行这个节点
Success,每个节点它可能会有一个执行结束,比如巡逻状态,目标从a点走到B点,如果已经走到B点,那么这个状态就是处于一个成功的状态
Failure,有一些节点是用来执行判定的。它可以判定当前这个角色是否看见敌人,如果看见,就是成功;如果没看见,就是处于失败状态
在真正的开发行为树的时候,我们通常不会直接使用那些现成的行为树节点,而是要对行为节点进行定制,在我们的训练营里面会带领大家去定制一个一个的行为树节点
节点可以进行组合,比如要完成一个NPC的一个攻击的AI
它需要先有一个检测节点检测附近是否有可以攻击的目标
当出现目标,需要追击这个目标,当目标处于可攻击范围,要对目标释放技能
一个组合节点,它包括了检测目标,移动到目标,实施攻击,三个子节点构成
3. 组合节点是怎样执行的?
组合节点执行的顺序:
从左到右
Priority/Random Selector除外
行为树常用控制节点简介
顺序节点
每一个节点,它都有运行成功或失败的状态,如果第一个节点运行成功了,它就会按照顺序去执行第二个节点,如果第二个节点也运行成功了,它就会执行第三个节点,如果这三个节点都执行成功了,那么就说明这个顺序节点执行成功
顺序节点的应用
当要实现的逻辑需要按照顺序执行时
顺序节点的逻辑关系类似于C/C++程序里面的与运算
2. 选择节点
相当于逻辑运算的或运算
如果选择节点当中的某个节点执行失败了,它会不会造成选择节点失败?
不会造成选择节点失败
如果第一个节点执行失败了,它会继续运行第二个节点;第二个节点如果运行失败,也不会造成选择节点失败,它会运行第三个节点
三个节点里面,当有一个节点运行成功,就说明这个选择节点的运行是成功的
3. 并行节点
程序当中同时执行多个行为的行为就是并行行为,这个时候可以用定型节点进行执行。当有N个子节点时可以通过添加一个并行节点,让他们并行执行
4. 装饰器节点
装饰节点,可以理解成一个修改节点。它会对一个节点的行为进行修改
类似于程序当中的否运算,比如原本一个节点的运行结果是成功,当给它做一个修饰节点之后,可以反转节点,把一个运行成功的节点反转成运行失败
装饰节点除了可以反转节点外,还可以重复执行节点,重新尝试节点,然后超时节点,强制失败节点
行为树实战
请用行为树实现以下敌人AI
当敌人看见玩家:
敌人进入追击状态
当敌人看不见玩家:
敌人进入巡逻状态
应该如何实现?
首先Entry表示敌人状态机的入口,然后进入到这个的selector
选择器,相当于或运算,如果前面的节点执行失败,那么就执行后面的节点,不会造成整个这个节点全部执行失败
节点的执行是按照优先级,从左往右排部的,首先它会执行左边Sequence顺序节点
顺序节点必须要一个一个执行,前面的执行成功才执行,如果前面的执行不成功,那么这个顺序节点就执行失败
数据节点执行失败,那么选择器节点就会选择另外一个分支来进行执行。
敌人的行为数假设为行为数,那么程序会怎么走呢?
首先选择器开始,走左边分支走到顺序节点,判定是否发现敌人,如果发现了,就会顺序的执行追击功能
如果没有发现敌人,那么这个顺序节点就执行失败了,执行失败以后就返回回去,然后选择器就会选择巡逻状态来进行执行
2. 行为树看上去一切都很完美,是否是这样?
如果在这个行为书里面,我们不做特殊处理,那么当前面Sequence顺序节点分支没有发现这个敌人,那么sequence这个分支执行失败了。那么选择器就会选择右边节点进入巡逻节点,进入巡逻节点以后,它就会卡死在这个状态永远跳不出
即使在巡逻状态,也要执行左边这个分支。发现敌人节点的检测工作要一直执行,并且这个节点状态为true的时候,按顺序能够把巡逻节点给中断掉。让它中断掉再切回到顺序节点,发现敌人以后进入到追击状态
完美的行为树
必须能在巡逻和追击节点之间正常的切换
节点之间的切换需要利用行为树组合节点的ConditionAbort,中断机制
组合节点的中断机制
四种中断类型
None:不会产生中断
Self:当前组合任务还没运行完,所有子任务的OnUpdate会继续运行,检测是否发生中断
Lower Priority:同层且比自身优先级低级的任务还没运行完,所有子任务的OnUpdate会继续运行,检测是否发生中断
Both:Self+Lower Priority
请用行为树实现以下敌人AI
需要在行为树的Sequence节点设置打断,并且打断类型是Both
设置Both后就能满足行为树在追击和巡逻之间切换。具体可以分成两种情况来讨论:
看见敌人时:
行为树会执行黄色的分支,选择器选择左边Sequence节点,因为发现敌人因此进入到追击状态。
由于Self可以打断自身,它会一直不停的监控这个发现敌人这个条件节点。当这个条件节点为假时,Sequence节点可以打断自身的追击节点的执行,使Sequence节点进入失败状态,从而就进入到巡逻状态
看不见敌人时:
由于看不见敌人,发现敌人就为假,会造成Sequence失败,于是进入到巡逻状态
由于Sequence节点设置了Both,因此既能监控也可以打断自身的子节点追击,同时还可以打断比它低优先级的巡逻
节点会持续的监控是否会发现敌人,当敌人被发现的时,它会打断sequence右边比它低优先级的巡逻节点从而进入到追击状态
3. 中断类型设置Both后,左侧分支在看见敌人的情况下可以打断追击进入巡逻;在看不见的情况下可以打断巡逻,进入追击,这样就能实现一个完美的行为数
小测验
若将Sequence节点的中断类型设置为Lower Priority会有什么问题?
这个问题就不提供答案了,如果大家有什么不明白地方可以加一下文末的Alice老师,然后进群讨论,或者加我为好友讨论问题都是可以的
注意
Conditional Abort,只能由条件节点发起
Conditional Abort可以被任何的组合节点获取
行为树的优缺点
优点
易于理解并且可以使用可视化编辑器进行创建
很大的灵活性,非常强大,并且非常容易对其进行更改
能够创建由简单任务组成的非常复杂的任务,而不必要担心简单任务是如何实现的
每个行为逻辑互不影响,行为模块间的耦合度相对较低
2. 缺点
行为树的选择并不是最优的,结果也不一定是我们想要的。而且决策每次都要从根部往下判断行为节点,比状态机要耗费时间。每次决策都要经过大量的条件判断语句,会变得非常慢
如果AI对象就只有3个或以下数量的状态,用行为树设计的话,计算量会更大,反而会更耗费性能
面试与进阶
当面对一个客户端开发,包括服务器开发,因为游戏的AI也可以写在服务器上
如果是状态同步的游戏,写在服务器上,如果是真同步的游戏,是写在客户端上面
关于状态同步和帧同步的内容,我们的V I P课程里主程进价的项目框架是同时支持这两种数据同步模式的教学
2. 在我们进行面试和这个进阶的商业项目的应用开发的时候,我们需要去根本从根本上去理解底层,够熟练的运 用行为树:
理解行为树底层原理
能熟练运用行为树
能熟练拓展行为树节点
能熟练增加行为树节点
阅读过至少一种行为树系统源码
能够自己实现行为树框架
基于行为树的AI框架
3. 行为树的底层原理,我会在我们的VIP课程里面做行为树的源码解析,感兴趣的同学可以添加文末Alice老师的联系方式,并加入到我们的VIP课程当中去
写在最后
本文为“优梦创客”原创文章,您可以自由转载,但必须加入完整的版权声明
更多学习资源请私信我获取(企业级性能优化/热更新/Shader特效/服务器/商业项目实战/每周直播/一对一指导)
点赞、关注、分享可免费获得配套学习资源
标签:
-
行为树实战训练营-行为树详解、实战 世界微动态
前言今天给大家分享的是行为树实战训练营。我们会以空洞骑士的BOSSAI为例,为大家介绍行为树的系统实现行为树,在游戏行业当中是我们实现游戏A
-
首份A股上市银行年报出炉 平安银行营收利润双增长
3月8日晚间,A股上市银行首份年报终于出炉——平安银行发布了2022年年报。财报显示,2022年,该行实现营业收入1798 95亿元,同比增长6 2%;实
-
恒升乐力甘草片说明书_甘草片说明书
1、复方甘草片适应症:用于镇咳祛痰。2、使用方法:口服或者含片,用量:成人一天三次,一次三到四片。3、不良反应:有轻微的
-
西安三秦医院都市人的好医院
西安三秦医院都市人的好医院,新城三秦医院怎么样你说了算西安新城三秦医院位于西安市新城区西五路一号,地铁一号线、四号线五路口出口。经西
-
小朋友齐打交道火影版_小朋友齐打交道_环球消息
1、豆腐(忍者)男的变谁都行(捉住对方后按防跳攻)冰和火可以合体还有个穿着盔甲的人可以防功跳1起按就可以。以上就
-
天天播报:狙击手异界狂飙 肖树辉_狙击手异界狂飙
1、狙击手异界狂飙txt全集小说附件已上传到百度网盘,点击免费下载:内容预览:作品正文第四一章冲向高峰时间飞逝,
-
中乔体育过会12年仍未上市,与乔丹打了十年官司_每日短讯
乐居财经兰兰3月4日,中乔体育股份有限公司(以下简称“中乔体育”)在上交所主板IPO审核状态更新为“已受理”。据乐居财
-
世界实时:交际花
1、交际花是一个汉语词汇,拼音是jiāojìhuā。2、(新华字典[释义])旧指在社交场合中活跃而有名气的女子(含有
-
世界快报:拜仁晒迎战巴黎海报:科曼、德里赫特、穆勒、梅西和姆巴佩出镜
直播吧3月8日讯拜仁即将和巴黎展开欧冠八分之一决赛次回合的较量。不久前,拜仁官推更新动态,晒出了一张赛前海报,预热本场比赛。海报采用了
-
盐城市财政扎实做好会计和评估监督检查工作
1、一是实施政府性融资担保机构会计信息质量检查。选择市级政府性融资担保机构开展会计信息质量检查工作,印发《关于开展融
-
环球今亮点!海南三月三是什么节日 海南三月三是哪一天
海南三月三是什么节日海南三月三是哪一天海南三月三是黎族的传统节日,黎语叫“孚念孚”,每年农历三月三日举行,是黎族民间传统而盛大的节...
-
支付宝充话费没到账怎么投诉_支付宝充话费没到账
1、首先,在手机上下载。2、进入支付宝首页后,3、在充值中心页面上,4、找我们充电5、在账单明细中,6、在详细信息页面中
-
环球最资讯丨今井信女
1、出自日本动漫《银魂》中的人物。2、见回组副长,蓝发红瞳的三无少女,是巡警组从暗杀部队天照院奈落高薪挖角来的暗杀精英,
-
诉讼费用怎么收?
一、诉讼费用怎么收诉讼费用的收取如下:1 财产案件,根据诉讼请求的金额或价额,分区间按比例缴纳。找法网提醒,不满1000
-
被曝行李超重5公斤,收1807元托运费?涉事航司回应:乘客未购买托运额度,收费符合规定|环球微速讯
近日,亚洲航空被曝行李超重5公斤收1807元托运费,当乘客拍摄留证拍到工作人员时,该工作人员手指乘客称“你拍了我就不要上飞机了”,此事...
-
拉斐尔的简介及作品介绍
1、拉斐尔·桑西(RaffaelloSanti,全名RaffaelloSanziodaUrbino,1483年3月28日或4月6日—1520年4月6日)
-
二次转租房屋怎么签租赁合同
转租需要经得原房主的同意。签订合同前,租赁双方应相互交验有关身份证明及房屋权属证明。在签订转租房屋合同的时候,要在合同中约定好租赁期
-
华盛顿市长|播资讯
1、2015年1月4日,据美国中文网报道,随着新年的到来。2、美国首都华盛顿迎来了新任市长穆丽尔·鲍泽,她也是华盛顿历史
-
当CPR有性别偏见,女性死于心脏骤停|百事通
我国每年有54 4万人心脏猝死,其中被救活的人不足1%。在救援的当下常常有一个「黄金六分钟」的说法,在这个六分钟内
-
迪拜最大的清真寺-天天热头条
久美拉清真寺是迪拜最大最美丽的清真寺,它是现代伊斯兰建筑风格的典型代表。有两个尖塔及一个宏伟的拱顶。依照中世纪法蒂玛王朝的建筑传统而
-
天天快资讯:脚手架搭设规范图片_脚手架搭设规范
1、脚手架搭设规范1,脚手架负载不得超过270kg m2,经验收合格挂牌后方可使用,使用中应经常检查与维护。2、负载超过
-
世界短讯!王子文多大岁数_王子文多大
1、王子文,1987年2月28日出生于四川成都,毕业于中央戏剧学院。2、中国内地影视女演员、模特。以上就是【王子文多大岁
-
怎样炸汤圆不爆炸
1、先将糯米粉倒入碗里,再倒入适量开水,然后揉好后醒一会。2、再分成均匀小剂,之后将这些小剂都揉圆,接下这一招大家要记住了。3、用牙签在
-
良知善念让“雷锋”永远年轻
极目新闻记者关前裕来自十堰市的湖北医药学院2018级麻醉学专业实习生王万荣和来自孝感市的湖北职业技术学院实习生蒋婷婷,
-
快资讯丨消费品分类
1、消费品是指那些由最终消费者购买并用于个人消费的产品。2、营销人员还根据消费者如何去购买消费品,将消费品进一步细分为:
-
(两会速递)山东省政协“云连线”住鲁全国政协委员 建言绿色低碳高质量发展|环球百事通
全国政协常委王学典出席山东省政协“云连线”视频采访活动。 吕妍 摄中新网济南3月7日电(吕妍)2023年全国两会进行中
-
windows7重装系统的方法[多图] 天天速读
虽然现在的主流系统是windows10,但是还是有很多朋友在尝试使用win10之后想重装win7系统。那windows7重装系统要怎么操作呢?下面小编就给大家
-
中国空间站太空授课直播视频回放地址 聚焦
今天15:40开始翟志刚、王亚平、叶光富三名航天员在太空授课,不少小伙伴因为某种原因没有看直播,那么中国空间站太空授课直播视频回放在哪看?
-
世界热议:大夏国周柏_大夏国
1、公元407年,匈奴人赫连勃勃,在鄂尔多斯南部建立起大夏国,自称大夏天王,仿造中原王朝的政治体质,设置了各种机构。2、
-
最新:dm是什么
1、DM是Developmentmanagement的缩写。2、中文意思是项目前期开发管理。文章到此就分享结束,希望对