基于行为树的新手引导设计

发表于2018-03-23
评论4 8k浏览

新手引导:在游戏中的作用是指引教学,降低玩家的学习成本.在当今游戏节奏加快的时代背景下,让新手玩家更快的了解游戏的玩法,更快的上手,进而提升用户的留存率.游戏引导起到了至关重要的作用.同时游戏在一些功能设计和UI布局上的小缺陷,也可用通过适度的游戏引导让玩家去了解和适应这些瑕疵,不至于难以理解和发现对应的功能而导致上手困难甚至直接放弃.

虽然是新手引导对国内游戏来说,基本已经是必备的系统功能(甚至有的到了泛滥的地步).但是开发一个好的引导系统还是比较麻烦的.甚至会导致游戏的异常卡死,反而会导致用户的流失.尤其是对于一些复杂游戏,没有引导玩家很难上手,但是复杂游戏的引导设计不太简单,尤其是开放性引导,要考虑很多异常情况.




引导系统的设计有很多方案,下面来分享一下具体的实现方案.

这也是我这几年经历了3款网游的引导系统设计不断地完善总结出的实用解决方案,也是我们现在正在研发的游戏所采用的引导系统:基于行为树的引导系统.

正式介绍这个引导系统之前,先简单的说一下前两个游戏的引导系统:

1:纸上谈兵

这块游戏是我头一次开始设计引导系统,每一步的引导单元都是一个switch中的case,完成一步后 id的修改.来实现引导的推进和跳转.

优点:可以在运行时根据当前运行情况去进行一些引导节点的跳转,引导显示的控制也比较随意.

缺点:编写要求严谨,稍有不慎就容易出现错误.可修改性低,后期的增删维护成本高.


2:风暴荣耀

第二次做引导系统,总结了之前引导的缺陷,以及基于引导基本是一系列操作序列的特点.因此设计成了一系列行为节点组成一个队列的方式.允许多队列并行,也可以在任意的运行时自由的加载编辑好的行为队列.

优点:行为节点已经独立了,有了一点行为树的雏形(组合只有序列一种方式),增删改动很方便了.

缺点:队列不能在运行时修改,执行顺序是固定的,异常处理能力弱.




通过对前面引导系统的总结和完善,我们正在研发的游戏采用了最新的引导系统框架.一套基于行为树的行为节点组合系统.

基本的参数定义:

BehaviorStatus:为节点的激活状态

BehaviorResult:为节点的运行状态(运行返回值)

BehaviorLogic:逻辑运算方式(目前只用在并行节点)

主要的行为节点定义:


下面通过几个简单示例来介绍如何使用,也可以感受一下他的灵活性,流程可控性,可配置性.

(注:下面示例图中蓝色节点都为复合节点,绿色节点都为行为节点)

1 设计一个引导对话框,需求是用户点屏幕任意位置后,对话框关闭.如下图所示:

(如果还要增加对话框过了一段时间后自动关闭的功能,则只需要增加下图中黄色WaitSecond节点就可以了)

2 游戏中有个界面,在玩家完成了一系列操作后,需要关闭界面,最开始指定时间内是不出现引导提示,允许玩家自己去完成关闭操作.若玩家在指定时间后还没有去点击关闭按钮,则出现引导提示,指引玩家去点击关闭按钮.(若要屏蔽其他按钮的响应,则再开启下图中黄色WaitTouchWidget节点,若这样还不够,界面中有些触摸没有被WaitTouchWidget屏蔽掉,可以再开启橙色TouchSwallow节点,强制屏蔽触摸)



3 引导过程中难免会出现一些异常,还有就是某些情况下需要进行一些引导步骤的回退或者跳转,参照下图示例:


总结:

以上三个简单的示例虽然只是游戏引导的很小的一部分,但是基本可以看出现在引导系统的 编辑灵活性,运行中动态流程控制,异常处理能力都是很不错的.开发人员可以自由的定制扩展功能.当然任何系统都会存在他的局限性,另外还缺少一个方便好用的编辑器来进行这些引导行为树的编辑,这个就需要我们开发人员去不停的扩展维护,让程序不断的迭代更新,让功能越来越强大,让开发越来越便捷.


有对引导系统设计感兴趣或者经验交流的欢迎添加QQ:411697509进行交流


最近有朋友咨询引导开放,想起之前的文章,再炒个冷饭分享一下:原文链接


欢迎关注我的公众号(ArtStealer)进行深入探讨交流:

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: