quick-cocos2d-x与cocos2d-x + lua 调研

原文链接: https://my.oschina.net/u/1024573/blog/407436

quick-cocos2d-xcocos2d-x + lua 调研

1. 前言

      调研的目的是为新的游戏项目选择的技术方向,本文将主要以介绍quick为主,因为quick其实就是用cocos-lua,只是在上层框架有扩展而已,把扩展的部分直接去掉就是完全的cocos-lua了。所以quik实际是伴随cocos-lua发展的或者说在cocos-lua的基础上发展的。所以我们需要分析quick的框架的优势,性能,以及quick团队对quick提供的各种三方工具和SDK,以及quick未来的发展。通过这些来决定我们我们是否选择quick

 

触控(cocos2d-x维护商)收购了quick团队,同时quick团队获得了cocos2d-x lua的维护权。即所以cocos2d-x的方案都由一家公司负责,所以无论我们选择哪种方案在以后进行转换应该工作和难度都不大,而且quick有意将quickcocos-lua整合。但是对于对于触控收购quick,网上也有另外一种说法,即触控有意阻止quick的使用群体,将重心放在cocos-lua上。个人觉得后者可信度不高,就是以后没有quick版本,新的版本也会会考虑对quick的兼容,以及从quick到新版本的过度,所以现在就开始担心的quick生命周期是没有必要的。

2. Quick架构

3. Quick扩展的功能

1.更完善的 Lua 支持,包括一个 Lua 框架对 C++ 接口进行了二次封装。

2.补充了大量 cocos2d-x 没有提供,但游戏需要的功能,包括数据加密编码、网络传输、设备功能、物理引擎等。

3.为提高开发效率,提供了 Objective-C Java 的桥接模块,以及强化的 Windows/Mac 模拟器(player

具体的细节在quick下文quick的前世今生中有详细说明。

Quick的扩展使得使用开发游戏更快,框架更清晰,调试更方便。如果就这些方面和cocos-lua比较,做为一个开发者会毫不犹豫的选择quick进行开发,但是就因为quick帮我做了很多繁琐的事情,并且很多功能的扩展,好是好,但是其稳定性,效率也就是我们相对不能够控制的了。比如架构本身出了问题,或者较高设计部好效率低等情况,所以我如果能够保证quick的稳定性和效率,那么我认为quick是我们应该选择的技术方向, 就稳定性和效率而言,我们无法正确的判断,只有通过产品的验证,在游戏中有没有使用quick开发的,并且相应较好的,答案是有的,唐门世界这款千万级手游就是用quick做的,所以这个游戏也解决我们在性能和稳定性方面的顾虑,同时quick也是开源的,对于我们来说也有一定把控能力。

Quick也提供了比较完善的开发稳定,和很多游戏框架的deamon

 

 

 

 

 

 

 

4. Quick 2013-2014

 

Quick 2013前讨论的人聊聊无极,但是到了2013低时已做出了骄人的成绩,至今quickv3版本已经发布。使用quick的开发游戏的公司越来越多,了解quick我们从廖宇雷口中的quick开始。

 

 

4.1             2013.8.5(廖大—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 封装(相信我,你不可能找到比这个更容易使用的物理引擎接口)、骨骼动画播放(支持 DragonBonesCocoStudio)、高性能的 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 模块,包括 JSONZLibLuaFileSystemLuaSocket

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 接口,以及相应的示例代码。

 

 

 

4.2             20139(知乎贴廖大)

 

  • 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.
    全面的网络解决方案:异步 HTTPHTTP 队列、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 库的基本架构和布局管理,以及在线更新功能。

 

 

4.3             Cocos开发者大会(秋季):触控科技技术总监廖宇雷--Quick 游戏框架(2014.10.30

  • Quick概述

Quick框架的特点就是有一些很容易使用的API,另外提供一系列提高开发效率的工具。比如增强版桌面的模拟器。Cocos2dx最初的桌面模拟器是比较简单的,我们后来增加了动态分辨率切换,还有项目管理这些功能。

此外,Quick还有大概20多个实例,比如动画、物理引擎、MVC等等。Quick也和Lua完全兼容,cocos2dxQuickAPI是完全可以同时访问的。Quick做出来的游戏也有一些千万级的产品。

这张图右边是最基本的API的用法,左边是Quick同样功能的用法,代码量有明显区别。而PlayerQuick增强版的桌面模拟器,现在已经变成了一个管理器,还可以对项目进行打包,项目在打包的时候还可以用一些参数确定,比如Lua是否加密,资源是否加密。

  • Player开发平台

Player本身,就是强化版的桌面模拟器,本身已经变成一个开发平台,会提供一个SDK,可以用这个开发平台做什么事情呢?比如需要写一个内部的开发工具,开发工具里可以调用所有的功能。可以用Player做自己的开发工具也是很快的。

  • Quick未来的发展

1.做一个包管理器

一个项目会有很多的插件,有可能是C++,有可能是脚本的,比如要网络的,要物理的,或者是支持游戏摇杆。现在的集成方式是全手工的,下载源代码然后改工程文件,然后做C++的绑定还有Lua的导入,最后再编译出来。我们做了包管理器以后可以提供一个插件仓库,插件仓库会包含一些常用的插件,包管理器下载你搜索的插件,安装的时候就可以自动更新项目文件,确保编译成功,把整个过程自对化。

2.Quick做模块化

Quick2015年会做一个很重要的东西,就是把大家Lua开发的游戏转换成Lua to HTML5,因为现在Cocos2dx-jsCocos2dx-luaAPI已经统一了,所以做这个工具的时机已经成熟了。

  • 现场提问:

提问:我现在在用QuickC++部分不能做断点,在外面框架有断点。

廖宇雷:最新版本配合Code IDE/Xcode/VS可以做断点。

提问:Quick效果跟C++能够差多少?

廖宇雷:因为底层渲染还是Cocos2d-x,所以渲染上不会有区别。只是当游戏里做大量计算时,可以把这些计算任务用C来写,然后导出给Lua使用。

 

4.4             2014.11.28(廖大--廖宇雷) quick中文网

  • cocos2d-lua quick 的未来

http://quick.cocos.org/?p=1703

quick 里的框架则会被拆分为核心框架和一堆插件,让开发者根据需求自行组合,既能节约内存又提升了灵活性。搭配全新的插件管理器,开发者将获得前所未有的开发体验。而开发者也可以将自己的插件提交到插件仓库,与社区分享自己的成果。

 

  • 稳定可靠

我们深知当前的 quick/cocos2d-lua 还有许多不足之处,特别是在 API 稳定性和整体的可靠性上具有巨大的提升空间。

未来,我们将从以下几个方面改善cocos2d-lua 的稳定性和可靠性:

  • 改进     luabinding

    • 降低内存消耗

    • 更完善的错误反馈信息:

    • 更完善的参数检查

    • 更完善的崩溃保护

    • profiling 接口

    • memory leaks inspect 接口

  • 改进     Lua 测试用例

    • Lua 风格展现 cocos2d-x 的用法

    • 增加更接近实际项目用法的综合性测试

    • 尽力提高测试覆盖率

    • 全面的性能测试

  • 高效开发

如何让开发者更快的开发产品,是我们另一个核心目标:

  • 改进文档和示例

    • 提供更完善的 API 文档

    • 提供更多用法示例

  • 完善     Lua 工具

    • 简化 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 也会继续发展。

 

转载于:https://my.oschina.net/u/1024573/blog/407436

你可能感兴趣的:(quick-cocos2d-x与cocos2d-x + lua 调研)