Quick cocos2dx与cocos2dx有什么区别

那 quick 与 cocos2d-x 相比到底有什么区别,又有什么加强呢?这篇文章就是答案:

为什么会有 quick

quick 和 cocos2d-x 的差别

quick 由哪些部分组成

应该选择 Lua 还是 JavaScript

怎么入门 quick

为什么会有 quick

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 里首先实现的目标。