cocos2dx技术选型
今天,我将 Quick 的一些特点进行了简单梳理,分享给那些需要进行客户端技术选型的朋友。
Quick 简介
Quick 是在 Cocos2d-x 基础上开发的,它具备以下特性:
- 便捷的 Lua 框架:在 Cocos2d-x 的基础上增添了一个更为便捷的 Lua 框架,使得开发者能够更高效地使用 Lua 语言进行开发。
- 丰富的 SDK 绑定:增加了若干游戏必备的 SDK 到 Lua 的绑定。例如物理引擎 Chipmunk2D 以及 LuaJIT,为游戏开发提供了更多的功能支持。
- 跨平台交互类:包含了与 iOS 交互所需的 Objective - C 到 Lua 的类,以及与 Android 交互的 Java 到 Lua 的类,方便实现跨平台开发。
Quick 的优势
- 减少封装工作量:减少了将 Cocos 类封装到 Lua 的过程,这原本是一项工作量巨大的任务,使用 Quick 可以显著提高开发效率。
- 热更新机制便利:网上有许多关于 Quick 的热更新机制,开发者可以对其进行修改后直接使用,减少了自行决定哪些内容需要热更新的时间成本。因为 Quick 的热更新基本是全代码更新。
- 调试速度快:调试速度比原生 Cocos2d-x 要快一些。Quick 拥有 Quick - Player,虽然 Cocos2d-x 也有调试模拟器,但 Quick - Player 在调试方面优势明显。同时,调试 Lua 代码无需编译。
Quick 的劣势
- 文档和教程匮乏:Quick 的文档或教程非常少,大量内容依赖于 Cocos2d-x 的教程。开发者需要花费大量时间去了解 Cocos2d-x 才能更好地使用 Quick。
- 版本兼容性问题:Quick 2.2.1 - Quick 2.2.5 每个版本都对 Cocos 的底层代码进行了修改,导致版本之间差异巨大。不仅难以进行版本升级,更重要的是很多概念可能与 Cocos2d-x 有所区别,给开发者带来理解上的困惑。Quick 3.x 目前只有 Quick 3.2 和 Quick 3.3 两个版本。Quick 3.2 同样对 Cocos 底层代码有改动,使用起来较为麻烦;Quick 3.3 rc0 虽然未改动底层代码,但与之前版本的 Quick 接口有很多不同,引发了很多开发者的抱怨。例如,Quick 自己的 UI 控件与 Cocos 的存在差异,优化了渲染过程,在同一个场景中不能同时使用 Quick 和 Cocos 的两种控件,触摸机制也不能混用。
个人建议
建议使用 Quick 最新版的 Quick 3.3 rc1。虽然 rc 不是最终的 release 版本,但几乎不会有大的改动,后续只需跟随 GitHub 上的更新修复 bug 即可。
原因
- 渲染性能提升:Cocos3X 的渲染性能比 Cocos2X 要好很多,无论是否使用 Quick,选择 Cocos3X 都是必然的趋势。
- 未来发展趋势:Quick 已经被 Cocos 收购,预计之后 Quick 会和 Cocos 合并成同一个产品。使用 Quick 可以享受 Cocos 提供的最佳 Lua 封装,而无需开发者自己去实现。
- 挑战与机遇并存:优秀的程序员应该勇于解决问题。虽然 Quick 的资料较少,但这也为开发者提供了一个挑战和发挥的空间。我们可以成为第一个吃“番茄”的人,将积累的经验分享给他人,无论结果如何,这都是宝贵的经验。
- 版本稳定性和功能完整性:从 Quick 3.3 rc1 开始,Quick 对 Cocos3X 的支持才算是完整的。Quick 3 只有 3.2 和 3.3 两个版本,3.2 存在很多问题,因为它是 Quick 支持 Cocos3X 的第一个版本,而 3.3 版本吸取了 3.2 版本的很多教训。此外,3.3 rc1 已经能够很好地实现对 iOS 64 位的支持,并且拥有更好的说明文档和文件组织结构。
解决劣势的方法
应对文档和教程匮乏问题
需要花费一段时间对 Quick 的 API 进行拆分和研究。具体安排如下:
- 第一天:开发者各自对 Quick 的 API 模块进行分析。
- 第二天:各自拆分模块并安排讲解顺序。
- 第三天下午:由一位开发者先讲解他所分析的模块。
- 第三天晚上:由另一位开发者讲解他的模块。 之后重复第二天和第三天的过程。同时,每两天进行一次 API 拆分分析,用一天时间进行总结研究,半天时间进行代码层面的交流,最后半天自行消化。
应对版本兼容性问题
从 Quick 的发展趋势来看,确实存在无法跟随 Cocos 更新的情况,而且基于当前版本 Quick 编写的代码在后续 Quick 更新后可能无法使用。但由于目前是首次使用 Cocos 进行手游开发,下一个项目或未来是否继续使用 Quick 甚至 Cocos 都不确定,所以当前采用目前最好的方案,即使用 Quick 3.3 rc1 进行开发。