js制作游戏新手引导(一)

想到新手引导的功能时可能很多人都会觉得头痛,,难以下手。特别是在游戏本身功能或需求还不稳定的情况,更是难以应付,本人就是在这种情况下接受了一个艰巨的任务。在痛定思痛之后,开始了引导功能开发。在做的过程中一点点发现很多有意思的东西,想分享给大家。

一、痛点:新手引导制作的难点及弊端

需要在具有引导功能的代码单元插入引导代码或逻辑判断,干扰正常流程。

引导代码的加入会影响原有的代码逻辑与流程,使代码变得复杂加大维护难度。

界面或需求发生变化后引导功能需要大幅修改或重新制作。

指引(手指提示)对应的矩形区定位麻烦,特别是需要适应不同尺寸屏幕的时候更加困难。

编写引导配置文件也很头痛,需要策划、程序的高度配合。

二、期望:新手引导编程体验

笔者进入游戏开发应该说是手机游戏开发并不是很长时间,虽然参于过多个项目,但亲自编写新手引导这还是头一次。当时接到新人引导任务时,我们的项目只完成了:登录->主界面->抽卡->布阵->章节->关卡->战斗这样一个基本流程,界面美术、功能需求都极不稳定。但在公司的硬性要求下,冒着九死一生的危险开始了新手引导功能开发。在了解到传统的引导制作过程中的难点与弊端后,一直在思考没有更好的实现方式,我心中的引导编程的方式有以下几点:

不需要在每个单元中去插入引导代码,游戏代码与引导代码应该尽量分离。本人很难忍受漂亮的代码被无情引导打乱,更难忍受本来糟糕的代码被引导弄得支离破碎。

界面只发生简单UI位移、节点层次改变不需要修改引导代码。

定位指引矩形区应该尽量的简单,且自适应不同尺寸屏幕。最好能做到策划人员都可以来制作部分流程引导。

在引导需求明确、游戏功能正常的情况下,制作一个常规的引导步骤应该是非常快捷的,不会超过3分钟,快的话1分钟内就应该搞定(不是笔者说大话,确实已经实现)。

三、思想:引导功能的设计思路

在描述引导功有设计思路之前,有个重要的前题:命名规范。

命名规范主要有两个方面:

cocostudio中的控件名字

代码中动态创建的控件名字,以及类成员变量的名字。

在笔者的项目中使用了sw.UILoader来管理cocostudio的UI命名和事件。如不了解请参见我的另外一篇blog

《在cocos2d-js实现自动绑定cocostudioUI控件与事件》

我们这里引入两个概念:任务与任务组。任务:把引导中的一个最小步骤称之为一个任务,比如提示点击某个按钮。任务组:把一系列的任务放在一个任务组中,当这个任务组中的任务全部完成,我们会保存一次任务进度。此时重新进入游戏将不会再执行这个任务,而是执行它的下一个任务组中的任务。可以理解任务组是引导中的一个步骤。

用json格式表示如:

{

1: [{任务1},{任务2},{任务3}]

3: [{任务7},{任务8},{任务9}]

2: [{任务4},{任务5},{任务6}]

}

当从一个任务组中的任务中断后,再次进入引导 需要重新从这个任务组的第一个任务开始。

见下图演示了一个从主界面点击召唤->灵石召唤一次->点击获得->确定->仙玉召唤一次->点击获得->确定->点击空白退出召唤界面的流程。

上图演示的引导我分成两个任务组:灵石召唤、仙玉召唤。 任务配置如下:

"3":[ { "name": "4.提示指向灵石召唤按钮", "command": "手型提示", "tag": "_oneMoneyButton" }, { "name": "保存进度", "command": "保存进度" }, { "name": "5.提示指向角色确定按钮", "command": "手型提示", "tag": "_UILotteryHero > _confirmBtn" }, { "name": "6.提示指向角色图标确定按钮", "command": "手型提示", "tag": "_UILotteryTimes > _confirmBtn" }],"4":[ { "name": "7.提示指向仙玉召唤按钮", "command": "手型提示", "tag": "_oneGoldButton" }, { "name": "保存进度", "command": "保存进度" }, { "name": "8.提示指向角色确定按钮", "command": "手型提示", "tag": "_UILotteryHero/Panel_33/Image_10/_confirmBtn" }, { "name": "9.提示指向角色图标确定按钮", "command": "手型提示", "tag": "_UILotteryTimes/Panel_11/Image_1/_confirmBtn" },],爬上那座山,听最圣洁的经。

js制作游戏新手引导(一)

相关文章:

你感兴趣的文章:

标签云: