GameRes游资网

 找回密码
 立即注册

上海天天彩选四历史记录:如何用行为树开发游戏AI以及任务系统?

天天彩选4最新开奖公告 www.e32vn.cn 发布者: D小游 | 发布时间: 2018-6-28 12:25| 评论数: 0

游戏程序
平台类型:  
程序设计:  
编程语言:  
引擎/SDK:  
文/_Z

AI在游戏开发过程中一直都是被反复修改的一部分。随着游戏内容越来越丰富,难免会需要调整AI行为,所以我长久以来一直想有一个完全交给策划同志们编辑的游戏AI编辑器。

游戏AI自定义

我们考虑一下游戏实际逻辑AI,比如有这样一些需求:角色需要找寻一个自己能打得过的野怪并且避让某些打不过的大型野怪,或角色达到一定等级做一些特定行为等。这些行为加条件的组合肯定是依赖于角色本身已经实现了一些基本的功能,例如行走到指定位置,播放指定动作,寻路等,这些逻辑需要提前都实现好,这里不做说明。然后留给AI中的逻辑去调用合适的用户api。

还有就是用状态机还是行为树去实现?我感觉行为树更好一些。状态机在完成需求固定且状态比较少的时候可以用一下,一旦出现状态添加或删除就需要大动干戈了,而行为树的扩展性就很出色了。行为树大家能找到很多资料,大致上的内容就不说了。主要说一下这里的一些区别吧。


我这里把节点分成这4类:

·叶节点:可执行状态的节点,也就是主要的行为逻辑都需要在这个节点下实现。

另外3类节点是控制型节点:

  • ·顺序节点:顺序执行其子节点。
  • ·选择节点:通过计算子节点的权重随机选择一个节点。
  • ·并发节点:执行所有自己点。

这4类节点本身都有进入条件的检测。

为了更好的配合策划开发,我用XLua来调用游戏中的用户api。这是叶节点的XLua文件,控制节点的XLua文件也类似只是没有 update()和trigger()。脚本是外部调用的,首先会执行detect()判断这个节点的进入条件,当返回true的时候才会调用enter()。

·function detect()--节点的进入条件

·function enter()--进入后调用

·function update()--节点进行中(只有叶节点才有)

·function trigger()--外部事件触发后响应 (只有叶节点才有)

·function exit()--退出节点


假如现在有这个需求:

有一个人每天上班一直工作到下班,下班的时候会有两种选择:直接回家或者去女友家,去女友家如果没有礼物需要先去礼品店购买一些礼物,有了礼物之后再去女友家与女友约会。这样一天就结束了。

先来看看这棵行为树:


有了以上的树形图之后,我们打开Window-NodeEditor在编辑器下构造如下结构:



这棵树结构最后导出json格式用于构造节点。

这棵树的执行效果是这样的:


使用AI行为树开发任务系统

任务系统在游戏开发过程中伴随着DEMO版本一直修改到RELEASE版本,无时无刻都在修改,时刻反复经受着策划和运营的折磨。无数的惨痛教训使我痛定思痛,放弃传统的硬编码方式转而寻求一种动态的实现方式,一种设计优秀的任务系统在这个过程中能让程序员独善其身,任凭风浪起,稳坐钓鱼船。这就是我想说的行为树任务设计思想。

下面我们来简单描述一下任务系统,任务系统一般可以分成这3个部分:

·可执行任务的条件,例如:角色等级,职业限制等等。这部分在detect中判定。

·任务执行过程中的细节,此处能拆分出若干项行为。

·任务的完成条件,有些任务是服务器判断完成条件的(杀怪等), 有些是客户端判断完成条件的(和NPC完成一次对话等)。

任务可以拆分出的各种细节,每一个可以抽象成行为树的行为节点,这样根据任务的具体细节设计出一棵行为树。各个行为节点中的内嵌脚本可以交于策划填写具体的逻辑。程序部分的工作主要是实现角色的基本逻辑单元以及一些黑板功能,逻辑单元之间的组合交织就通过脚本实现。原本繁杂易修改的逻辑脱离出硬编码方式,这样的好处显而易见了。

我们看一下这个简单的例子:

有一个简单的任务:寻找NPC,然后和NPC对话至完成对话,并完成该任务。

这个任务的具体细节有3步,第一步:寻路找到地图上的NPC,第二步:与该NPC对话,第三步:完成对话。这3步之间的执行顺序是依次先后执行的,因此我们设计出这棵行为树结构如下图:


这个任务的3步细节可以放在这棵树的三个顺序执行节点上,依次执行。

第一步寻路至NPC的XLua脚本如下:


这个脚本执行了角色在地图上寻找该NPC的操作,注意这一个行为是个持续性的动作,在trigger方法中监听了外部事件“MoveFinish”即角色寻路完成的事件,在脚本监听到事件之后寻路NPC的行为完成,转而执行接下来的行为,接下来就是第二步。


第二步的脚本作用是打开与该NPC对话的逻辑,同样的需要监听DialogFinish事件,最后是第三步完成对话。


NotifyServer方法是和服务器定义的通知消息,作用是告知服务器这个任务已经做完,服务器得知消息后处理后续的游戏逻辑。

这样整个简单的任务流程就走完了,通过行为树的设计方式实现任务系统,可以说是非常简洁易维护的。行为树任务系统在遇到非常复杂的任务细节时依然能够清晰的表达出来,关键之处在于任务细节能通过了行为节点很好的抽象封装起来。

via:游戏扶持by腾讯游戏学院



GameRes游资网微信公众号二维码
关注我们官方微信公众号
游戏行APP二维码
下载我们官方APP-游戏行
游戏行APP二维码
关注手游动态微信公众号

最新评论

  • 网易游戏的文案策划金芙蓉:我的职业是游戏
  • “画大饼”这件事终于有人管了?
  • 2018年游戏从业者调查报告:加班少了50%
  • 手游产品最常用的5种玩家行为数据分析模型
  • 小游戏灰产深度调查:刷量成瘾“涮”了谁?
  • 游戏策划入门须知(四)——从入职到对接了

小黑屋|稿件投递|广告合作|关于本站|天天彩选4最新开奖公告 ( 闽ICP备05005107-1 )

GMT+8, 2018-7-29 03:26

快速回复 天天彩选4最新开奖公告 返回列表
  • 谭俊龙的专栏作者中国国家地理网 2019-02-23
  • 主持人资料库――杨澜 2019-02-23
  • 做好“三个坚持” 让大调研更深入有效 2019-02-22
  • 十二届全国人大常委会第五次会议 2019-02-22
  • 白糖久放会滋生螨虫?这是真的!购买时尽量选择日期新鲜的 2019-02-22
  • 董卿白岩松朱广权 看看央视主持人大学就读啥院系 2019-02-22
  • 警察蜀黍变“戏精” 演绎最“正经”春节安全防范短片 2019-02-21
  • 它不会比如何做好一餐饭的难度大,或者道理更多。 2019-02-21
  • 【专题】河北省无偿献血领导小组会议报道 2019-02-21
  • 西安七旬老人拄拐到高考志愿咨询会 帮孙子看看报啥学校 2019-02-21
  • 巨额展品“不翼而飞”,警方调出监控后无语了 2019-02-20
  • 丁洪安的专栏作者中国国家地理网 2019-02-20
  • 抚州市融媒体“中央厨房”建设正式启动 2019-02-20
  • 是什么时候颠覆了“文艺应当为千千万万劳动人民服务”这一社会主义文艺路线的?!那一股“伤痕潮”功不可灭,可惜的是“旧伤痕”已经烟灭,取代其的是“挖根潮”。留给工农 2019-02-19
  • 庆祝人民日报创刊70周年系列访谈之颜世贵 2019-02-19
  • 444| 972| 384| 234| 882| 300| 940| 236| 970| 913|