查看原文
其他

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

2018-03-27 ArtStealer Gad-腾讯游戏开发者平台


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


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


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


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


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


1、纸上谈兵


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


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


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



2、风暴荣耀


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


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


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



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


基本的参数定义:


BehaviorStatus:为节点的激活状态。

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

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



主要的行为节点定义:



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


下面示例图中蓝色节点都为复合节点,绿色节点都为行为节点。


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


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



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



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



总结:


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


编注:如果你对引导系统设计感兴趣或者想和作者交流经验,可点击阅读原文,获取作者联系方式。


今日推荐

基于GPU的快速烘焙AO贴图

如何使用Broforce关卡编辑器制作游戏原型?

一键添加

加小编微信,享双重福利

1.加入GAD程序猿交流群,获取行业干货;

2.领取60G腾讯内部分享等独家程序资料。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存