【全民水浒】客户端工具选型篇

发表于2015-08-04
评论20 4.8k浏览

引擎选择原因

全民水浒是一款2D策略卡牌手游,在引擎选型上并没有花费太多时间,主要考虑以下方面:

(1) 引擎本身的影响力。从宏观上看,如果想使用一款引擎,必须考察它的成熟度社区活跃程度和市场的占有率,这样在手游引擎市场上就剩下cocos2d-xunity3D了,而unreal在手游开发上还相对滞后,并且门槛要高。

(2) 同类竞品的方案。当时我是MT”大掌门是两款很火爆的卡牌游戏,而在客户端表现上也符合我们的技术需求,这两款游戏都使用了cocos2d-x

(3) 强运营需要脚本支持的考虑。水浒一开始就定位成一个需要考虑强运营的游戏,需要尽量让所有业务逻辑都可以动态更新,从而绕过苹果不可控的审核周期及避免玩家重新下载安装包,所以要求引擎在脚本支持上有尽可能高的广度和深度,乃至核心玩法都可以完全脚本化。而当时手游符合这个要求的引擎并不多,Unity3D可以使用UI插件进行2D开发(20135月还没有内置2D套件),但对脚本的支持并没有符合我们的预期,虽然有插件可以进行脚本化开发,但是如果所有业务逻辑包括和新玩法都使用脚本的话,反而失去了Unity3D快速开发的核心优势。

 

针对引擎的额外优化项

cocos2d-x本身提供的脚本框架不易使用,缺乏可以对UI进行快速事件绑定的机制。为了得到较高的脚本开发效率,全民水浒对cocos2d-xUI控件部分进行了优化扩展,主要达到以下目的:

(1) UI控件的快捷获取

(2) UI控件的快捷交互事件注册

(3) 常用的控件api可以直接在脚本调用,而不用额外转型

其中的主要类图如下:

在这里限于篇幅,并没有把UINode的所有属性和函数列出来,其子类也只列了一部分。主要思想就是,在cocos2d-xccbi布局文件载入时,动态建立一个UINode构成的树,其层级结构和CCNode一样,并包含对应CCNode的引用。而在布局文件编辑时,会给需要的控件节点进行字符串命名,在载入ccbi布局文件后,会得到这个ccbi对应UINode树的根节点,这样就可以根据名字标识来获取任意子控件节点了,如下图所示的lua脚本片段:

得到某控件对应的UINode后,就可以进行事件的注册了,如下图所示lua脚本片段:

UINode里面封装了大部分的控件API,比如setVisible, setEnabled, setOpacity, setString等等,这样大部分情况下都不用转成某CCNode来进行操作了,比如设置CCLabelTTF的字符串内容如果用Cocos2dx自带的tolua支持,需要强转类型再调用:

              使用了UINode之后,至需要调用如下代码即可:

需要额外说明的是,水浒会把所有UI控件类的api都尽量tolua,这样可以降低因为无法预料的需求而导致修改二进制层的概率

开发工具上的使用经验

1、编译工具:

iOSXCode4.6.3, XCode 5

AndroidADT v22.3

WinVS2012

Xcode5有一个坑,资源不会立马更新,每次调试都得clean一次,效率非常的低,水浒又是Lua脚本实现主要逻辑,所以调试时还是使用XCode4.6.3

 

2、脚本工具:

Sublime2 (一个很好用的夸平台代码编辑器)(macwin

 

3UI、动画编辑工具:

CocosBuilder  v3 mac

在项目立项时,最成熟的cocos UI编辑器就是CocosBuilder了,所以选择了它。CocosBuilder是一款开源的UI以及动画编辑器,所以可以根据项目需要修改代码,比如它有50个文件夹上限,当文件夹数量达到上限后工程就无法publish,可修改此值重新编译;再比如CocosBuilder的粒子编辑器很弱,没有更随Type和粒子模板可供选择。

另外CocosBuilder提供了插件扩展,这对于扩展新的UI组件非常受用。

遗憾的是CocosBuilder停止了更新,基于此的SpriteBuilder功能更强大,但只支持Cocos2d-iphone,需要自己写cocos2d-x的解析,github上有第三方的cocos2d-x解析库。

 

4、图片拼接工具:

TexturePacker  v3 macwin

TexturePacker用来打包通用UI和技能特效等资源。

 

5、位图字体工具:

GlyphDesigner  v1.7 mac

支持渐变填充、描边、阴影等效果。另外v1.7还支持图片填充、调整文字间距,非常好用。

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