快速cocos2dx和cocos2dx有什么区别?
为什么会有速成?
quick和cocos2d-x的区别
quick由哪些部分组成?
我应该选择Lua还是JavaScript?
如何快速入门
为什么会有速成?
Cocos2d-x是一款用C++开发的游戏引擎,架构设计和API基本都是抄袭cocos2d-iphone(一款用Objective-C开发的iOS游戏开发引擎)。
由于C++对开发者的要求较高,网龙科技使用了tolua++的工具,将cocos2d-x的C++接口转换为lua接口(这种将C++接口导出为Lua接口的库通常称为luabinding)。让开发者使用Lua这种简单易懂的脚本语言来编写游戏,从而大大提高开发效率。
大约在2012上半年,我们公司开始使用cocos2d-x+Lua开发游戏。但是发现当时cocos2d-x对Lua的支持还是有很多不完善的地方。于是我重写了整个luabinding支持代码,解决了内存泄漏和回调只使用全局函数的问题。
cocos2d-x 2.0发布后,luabinding做了很多改进和完善。一直到cocos2d-x 2.1.4,整个luabinding已经相当稳定了。所以像《我是MT》《大头》这种像印钞一样赚钱的游戏,都采用了cocos2d-x+Lua的解决方案。
可惜cocos2d-x团队从2012开始就一直在大力推广cocos2d-x的JavaScript解决方案,所以在Lua支持上基本没有大的动作。从我们使用Lua解决方案的开发者的角度来看,luabinding需要更强大的功能,所以这是我们开发quick的最初原因。
Quick的目标:
缩短学习曲线
提高易用性
创建易于扩展的流线型架构。
quick和cocos2d-x的区别
虽然cocos2d-x luabinding已经很完美了,但是开发一款游戏还是需要做很多基础工作。
把luabinding导出的C++接口重新打包成Lua风格的接口是最基础的工作。重新打包的接口应该更容易学习和使用,C++和Lua之间的一些数据格式转换也应该隐藏起来。这是quick实现的第一个目标。