quick-cocos2d-x与cocos2d-x + lua 调研html
调研的目的是为新的游戏项目选择的技术方向,本文将主要以介绍quick为主,由于quick其实就是用cocos-lua,只是在上层框架有扩展而已,把扩展的部分直接去掉就是彻底的cocos-lua了。因此quik实际是伴随cocos-lua发展的或者说在cocos-lua的基础上发展的。因此咱们须要分析quick的框架的优点,性能,以及quick团队对quick提供的各类三方工具和SDK,以及quick将来的发展。经过这些来决定咱们咱们是否选择quick。java
触控(cocos2d-x维护商)收购了quick团队,同时quick团队得到了cocos2d-x lua的维护权。即因此cocos2d-x的方案都由一家公司负责,因此不管咱们选择哪一种方案在之后进行转换应该工做和难度都不大,并且quick有意将quick和cocos-lua整合。可是对于对于触控收购quick,网上也有另一种说法,即触控有意阻止quick的使用群体,将重心放在cocos-lua上。我的以为后者可信度不高,就是之后没有quick版本,新的版本也会会考虑对quick的兼容,以及从quick到新版本的过分,因此如今就开始担忧的quick生命周期是没有必要的。git
1.更完善的 Lua 支持,包括一个 Lua 框架对 C++ 接口进行了二次封装。github
2.补充了大量 cocos2d-x 没有提供,但游戏须要的功能,包括数据加密编码、网络传输、设备功能、物理引擎等。网络
3.为提升开发效率,提供了 Objective-C 和 Java 的桥接模块,以及强化的 Windows/Mac 模拟器(player)架构
具体的细节在quick下文quick的前世此生中有详细说明。app
Quick的扩展使得使用开发游戏更快,框架更清晰,调试更方便。若是就这些方面和cocos-lua比较,作为一个开发者会坚决果断的选择quick进行开发,可是就由于quick帮我作了不少繁琐的事情,而且不少功能的扩展,好是好,可是其稳定性,效率也就是咱们相对不可以控制的了。好比架构自己出了问题,或者较高设计部好效率低等状况,因此我若是可以保证quick的稳定性和效率,那么我认为quick是咱们应该选择的技术方向, 就稳定性和效率而言,咱们没法正确的判断,只有经过产品的验证,在游戏中有没有使用quick开发的,而且相应较好的,答案是有的,唐门世界这款千万级手游就是用quick作的,因此这个游戏也解决咱们在性能和稳定性方面的顾虑,同时quick也是开源的,对于咱们来讲也有必定把控能力。框架
Quick也提供了比较完善的开发稳定,和不少游戏框架的deamon,异步
Quick 在2013前讨论的人聊聊无极,可是到了2013低时已作出了骄人的成绩,至今quickv3版本已经发布。使用quick的开发游戏的公司愈来愈多,了解quick咱们从廖宇雷口中的quick开始。编辑器
初窥 quick-cocos2d-x
http://quick.cocos.org/?p=1#more-1
为何会有 quick
开发 quick 的最初缘由:为使用lua的开发商提供解决方案,下降学习曲线,提升易用性,建立一个精简、但更容易扩展的架构
quick和 cocos2d-x 的差异
lua接口封装更完善,同时quick 在 cocos2d-x 基础上添加了更多游戏必须的功能,例如完善的 HTTP 和 Socket 网络功能、数据加密解密、设备功能访问等等。将来集成付费充值、统计、社会化分享、好友链等各类第三方 SDK。 quick 的附属项目会提供大量现成的 SDK 封装,进一步提升开发效率,让开发商把主要的资源花在游戏玩法上。
cocos2d-x 自带的 Windows 和 Mac 模拟器功能太简单。quick 特别开发了功能完备的模拟器,让整个游戏在开发阶段的大部分时间里都不须要借助真机就能够进行。
quick 里还包含了物理引擎 Chipmunk 2D 的 Lua 封装(相信我,你不可能找到比这个更容易使用的物理引擎接口)、骨骼动画播放(支持 DragonBones、CocoStudio)、高性能的 LuaJIT 虚拟机等等。
总结:
1.更完善的 Lua 支持,包括一个 Lua 框架对 C++ 接口进行了二次封装
2补充了大量 cocos2d-x 没有提供,但游戏须要的功能
3.为提升开发效率,提供了 Objective-C 和 Java 的桥接模块,以及强化的 Windows/Mac 模拟器(player)
quick由哪些部分组成
quick 由几个主要部分组成:
1.cocos2d-x:目前基于 cocos2d-x 2.1.4 版本
2.tolua++:用于将 C++ 接口导出给 Lua 脚本使用
3.LuaJIT:最快的 Lua 虚拟机
4.cocos2d-x-extra:扩展功能,包括数据加密编码、网络传输、设备功能访问等
5.Chipmunk 2D:物理引擎,以及相应的 cocos2d-x 和 Lua 封装接口
6.CSArmature:一个骨骼动画播放库,支持 DragonBones 和 CocoStudio 建立的骨骼动画
除此以外,还包含一些 Lua 的扩展:
1.lua_extensions:一些必备的 Lua 模块,包括 JSON、ZLib、LuaFileSystem、LuaSocket 等
2.LuaJavaBridge:简单的 Lua – Java 交互接口,简化 SDK 集成
3.LuaObjectiveCBridge:简单的 Lua – Objective-C 交互接口
导出本身的 C++ 对象到 Lua
有时候须要编写一些 C++ 对象,而后导出给 Lua 使用。这里能够参考 lib/cocos2dx_extra/extra/luabinding 里的 *.tolua 文件,将 C/C++ 头文件转为 tolua++ 须要的文件,而后借助 quick 中附带的脚本编译成 luabinding 接口。
集成第三方 SDK
quick 有一个附属仓库 quick-cocos2d-x-plugins,其中包含了一些 SDK 的接口文件。参考 sample/luajavabridge 示例和这些接口文件,很容易就能完成 SDK 的集成。
后续 quick 也会提供更多的 SDK 接口,以及相应的示例代码。
quick和 cocos2d-x 到底有多大的区别?
区别分为几个层面:
1. 底层 C++ 代码:quick 是创建在 cocos2d-x 基础上的开源项目,对 cocos2d-x 的功能几乎没有作裁剪(除了用一些更好的 Lua 扩展组件代替 cocos2d-x 内置的),主要修改都是新增功能。cocos2d-x 的 C++/Lua 项目拿到 quick 里是彻底能够跑的。
2. 扩展的功能:针对开发商的实际需求,quick里提供了加密解密、网络请求、IAP、第三方 SDK 集成、物理引擎封装等一系列扩展。这些扩展都是独立的代码,并不侵入 cocos2d-x 的底层代码。
3. 对 cocos2d-x 的改进:主要包括 Lua 支持的改善,以及触摸事件机制的改进。前者是为了游戏运行更稳定,后者则简化了 UI 的开发。
4. 一个 Lua 框架:quick 包含的 Lua 框架,绝大部分功能均可以直接跑在 cocos2d-x 上(实际上有开发商这样作)。这个框架的价值在于将 C++ 风格的 API 转为了 Lua 风格,让开发者能够用更精简的代码实现更多的功能。而且框架定义的规范、接口,让开发者能够建立更容易维护的程序代码。
因此 quick 和 cocos2d-x 就像美女穿衣服和不穿衣服的区别。
quick将来的路线图是什么?
quick 的架构会继续保持:cocos2d-x 最小修改 + 扩展 + Lua 框架 的形式。这样对 cocos2d-x 的修改最小化。同时,咱们会努力将 quick 中对cocos2d-x 的改进推送到 cocos2d-x官方仓库。但愿有朝一日可以实现官方版 cocos2d-x + quick 扩展 的架构。
而具体到功能上,quick 在 2013 年将实现下列目标:
1. 一个功能全面的 UI 库:亮点是自动布局管理和可扩展的 UI 控件。由于整个体系都是 Lua 实现,因此能够充分利用动态语言的优点。
2. 一个 UI 编辑器和场景编辑器:对于这个编辑器,我推荐你们看个小电影http://v.youku.com/v_show/id_XNjA1MzI5NTky.html
3. 一个 MVC 库:包含基本功能的 MVC 架构,提供清晰的 API 和代码组织结构,而且能够很容易的扩展。
4. 全面的网络解决方案:异步 HTTP、HTTP 队列、Socket 接口和 WebSocket 接口。
5. 在线更新:在线更新游戏的脚本和资源,绕开蛋疼的 App Store 审核。
6. 第三方 SDK 接口标准化:目前已经支持 App Store IAP, Umeng, Flurry, 91, DianJin, Domob, YouMi 等 SDK 的接口。而今年咱们将把这些 SDK 的接口标准化,实现相似 cocos2d-x plugin-x 的架构。但由于是动态语言,因此在灵活性上会有显著优点。同时咱们也会陆续添加其余 SDK 的接口。
7. 专职团队:随着使用者的增长,咱们也会尝试提供一些商业服务,这样 quick 将会拥有一个专职团队。将来的发展更快更好。
将来,quick 将按照平均每个月一个版本的速度发布。而即将到来的国庆版,将实现 UI 库的基本架构和布局管理,以及在线更新功能。
Quick概述
Quick框架的特色就是有一些很容易使用的API,另外提供一系列提升开发效率的工具。好比加强版桌面的模拟器。Cocos2dx最初的桌面模拟器是比较简单的,咱们后来增长了动态分辨率切换,还有项目管理这些功能。
此外,Quick还有大概20多个实例,好比动画、物理引擎、MVC等等。Quick也和Lua彻底兼容,cocos2dx和Quick的API是彻底能够同时访问的。Quick作出来的游戏也有一些千万级的产品。
这张图右边是最基本的API的用法,左边是Quick一样功能的用法,代码量有明显区别。而Player是Quick加强版的桌面模拟器,如今已经变成了一个管理器,还能够对项目进行打包,项目在打包的时候还能够用一些参数肯定,好比Lua是否加密,资源是否加密。
Player开发平台
Player自己,就是强化版的桌面模拟器,自己已经变成一个开发平台,会提供一个SDK,能够用这个开发平台作什么事情呢?好比须要写一个内部的开发工具,开发工具里能够调用全部的功能。能够用Player作本身的开发工具也是很快的。
Quick将来的发展
1.作一个包管理器
一个项目会有不少的插件,有多是C++,有多是脚本的,好比要网络的,要物理的,或者是支持游戏摇杆。如今的集成方式是全手工的,下载源代码而后改工程文件,而后作C++的绑定还有Lua的导入,最后再编译出来。咱们作了包管理器之后能够提供一个插件仓库,插件仓库会包含一些经常使用的插件,包管理器下载你搜索的插件,安装的时候就能够自动更新项目文件,确保编译成功,把整个过程自对化。
2.对Quick作模块化
Quick在2015年会作一个很重要的东西,就是把你们Lua开发的游戏转换成Lua to HTML5,由于如今Cocos2dx-js和Cocos2dx-lua的API已经统一了,因此作这个工具的时机已经成熟了。
现场提问:
提问:我如今在用Quick,C++部分不能作断点,在外面框架有断点。
廖宇雷:最新版本配合Code IDE/Xcode/VS能够作断点。
提问:Quick效果跟C++可以差多少?
廖宇雷:由于底层渲染仍是Cocos2d-x,因此渲染上不会有区别。只是当游戏里作大量计算时,能够把这些计算任务用C来写,而后导出给Lua使用。
cocos2d-lua与 quick 的将来
http://quick.cocos.org/?p=1703
quick 里的框架则会被拆分为核心框架和一堆插件,让开发者根据需求自行组合,既能节约内存又提高了灵活性。搭配全新的插件管理器,开发者将得到史无前例的开发体验。而开发者也能够将本身的插件提交到插件仓库,与社区分享本身的成果。
稳定可靠
咱们深知当前的 quick/cocos2d-lua 还有许多不足之处,特别是在 API 稳定性和总体的可靠性上具备巨大的提高空间。
将来,咱们将从如下几个方面改善cocos2d-lua 的稳定性和可靠性:
下降内存消耗
更完善的错误反馈信息:
更完善的参数检查
更完善的崩溃保护
profiling 接口
memory leaks inspect 接口
以 Lua 风格展示 cocos2d-x 的用法
增长更接近实际项目用法的综合性测试
尽力提升测试覆盖率
全面的性能测试
高效开发
如何让开发者更快的开发产品,是咱们另外一个核心目标:
提供更完善的 API 文档
提供更多用法示例
简化 C/C++ 模块的导出操做
profiling 工具
memory leaks inspect 工具
高级游戏框架
用插件管理器在 app 内添加插件
脚本的加密、混淆
模块化编译,按需定制引擎
quick 里的框架则会被拆分为核心框架和一堆插件,让开发者根据需求自行组合,既能节约内存又提高了灵活性。搭配全新的插件管理器,开发者将得到史无前例的开发体验。而开发者也能够将本身的插件提交到插件仓库,与社区分享本身的成果。
关于 quick
如今的 quick 用户可能会担忧咱们将重心转移到 cocos2d-lua 后,再也不维护 quick。其实这是一种误解。
首先,quick 只是一个运行在 cocos2d-lua 之上的游戏框架和一些扩展的集合。并且这些内容都将转为插件,让开发者能够经过插件管理器来安装。其次,quick 里全部对 luabinding 的改进,在 3.3 版本里都已经合并进入了 cocos2d-lua。
因此,cocos2d-lua 会变得更好,quick 也会继续发展。