项目开始了半年左右,半年前经过调研和工具链的准备,决定使用cocos2d-x制作一款2d的rpg游戏。
阅读cocos2d-x源码后,基本了解cocos2d-x的模块以及功能,我们使用的引擎版本为2.0.3。
引擎分为cocos2d、CocosDenshion、Extensions、Box2D、chipmunk、lua等几个project。cocos2d是引擎基础库代码,CocosDenshion是一个跨平台的声音库,Extensions是针对cocosbuilder导出文件的读入封装以及控件扩展和一个简单的http封装,Box2D、chipmunk是2d物理引擎,lua库则是lua绑定封装。
cocos2d-x是cocos2d引擎的c++版本,具备更好的跨平台性,而cocos2d由于使用objective-c编写,只能制作ios的游戏。cocos2d-x的结构如下:
基本结构一目了然,CCDirector做一个引擎的总管理,CCScheduler作为对象update的管理器,渲染以场景为一个整体管理,提供多种场景切换效果,对各平台的渲染、消息响应做了统一封装,提供各种基本2d元素(图片精灵,ttf字体文本,bmfont字体文本,层(layer),菜单,2d粒子,进度条等),可以方便制作一些通用的2d界面和场景。对键盘输入和touch输入做了统一封装。还提供了各种动画的元素(actions),这是cocosbuilder制作动画基础。
Extensions库提供了ccbreader读入cocosbuilder导出的ccbi文件,在工具链上提供了很好的支持。并且提供了button、scrollview等控件扩展,虽然不够完美,但已经很好使用。
CocosDenshion声音库接口很简单,提供背景音乐和音效播放的支持,淡入淡出的切换并没有,这个需要自己扩展。
lua绑定使开发者可以用lua开发游戏,并可以在ios上做到动态更新,可以避免苹果的更新审核周期影响游戏更新的响应速度。