从 quick 转向 cocos2d-x 3.3 lua
- 2014-11-30 更新:
今天在 quick 的博客上看到了 duceface 的新文章:cocos2d-lua 与 quick 的未来,不由得热(kua)泪(zhang)盈(shou)眶(fa),看来 dualface 一直在努力,终于有成果了。 - 2015-01-15 更新:
加入 LiteFeel 的 如何在lua项目中使用dragonbones 文章链接。 - 2015-01-16 更新:
今天下载了 cocos2d-x 3.4 RC1 ,发现其中已经集成了一个 simulator,包含了原来 quick-player 的部分功能。根据阳光七月的说法,quick 到了3.4之后将不再单独发展。这真是个好消息。
在我的第一个 cocos2d-x 项目立项时,我曾经纠结过是使用 Lua 绑定还是使用 JS 绑定。最后选择了使用 Lua : Cocos2d-x script language binding:Lua or Javascript? 。cocos2d-x 的 Lua 绑定做得很糟糕,所以,我基于 quick-cocos2d-x 2.2.3 这个更好的 Lua 绑定版本进行了许多修改,那时 quick 还是在独立发展。
后来,Quick 被触控收购,Quick 进行了不兼容的升级。由于我对 Quick 的修改过多,当时的项目也在非常重要的时期,我没有持续跟进 Quick 的升级步伐,一直在使用自己 forked 的版本。
在这段艰苦时间中,我在 Quick 社区和 Quick 团队身上也学到了不少东西。感谢 dualface、Jimmy、阳光七月、ChildhoodAndy、微微蓝 等朋友提供的无私帮助。
在这些朋友的帮助下,我对 openGL ES 做了初步的了解,写出了 cocos2d-x 的 filter 组件;熟悉了 cocos2d-x 引擎的源码架构;把 DragonBonesCPP 整合进入了 quick 框架中;了解了 lua 与 C++ 交互的方式……
下面有一个不全的列表:
- 加入 SocketTCP 对 luasocket 进行了封装;
- 模仿AS3用lua实现了 ByteArray;
- 加入 DragonBonesCPP 组件,使用 CCDragonBones.lua 进行了封装;
- 加入 cocos2d-x-filter 组件,使用 filters.lua 进行了封装;
- 加入了 CCDrawNodeExtend.lua 对 CCDrawNode 的常用方法进行封装;
- 对 display.lua 、CCSpriteExtend.lua 等等功能进行扩展,增加 获取纹理像素 、printscreen 等常用方法;
- 让 CCSpriteFrameCache 和 CCAnimationCache 支持异步加载;
- 在 network 中增加上传文件功能;
- 在 cocos2d-x 中嵌入浏览器 ;
- ……
现在,新项目立项,我面临又一个选择。
根据目前 cocos2d-x 的发展情况,无论从代码质量,还是引擎性能和维护成本来说,使用 3.x 版本是必须的,2.x 应该放弃。从触控现在表现出来的状态看,业务的重点是在 JS 版以及周边工具集。Lua 完全没有机会。Quick 的发展受到 cocos2d-x 团队的极大限制,速度极其缓慢,架构多次调整,Quick3 也迟迟没有发布。
我依然不看好 cocos2d-x JS 版。从目前触控的混乱情况来看,如果选择使用 H5 ,我肯定不会使用 cocos2d-x。
Lua 一定是移动设备上最快的,这点毋庸置疑。但从目前 Quick 的发展看来,我似乎不能继续使用它了。我不愿再走 quick 2.2.3 到 2.2.5 那段不兼容的老路。在 Quick 的发展方向没有确定的前提下,为了保持向下兼容,我现在的选择是: 直接使用 cocos2d-x 3.3 Lua 版本。
这个选择相当痛苦。cocos2d-x 3.3 的 Lua 支持非常糟糕,和 Quick 完全无法相比。一堆错误的提示和 warning,而且没有 Quick-player 的支持。从 dualface 那里得到的消息,Quick 已经把大部分的 C++ 修改都整合到 cocos2d-x 中了,但这还不够。
我花了许多时间让 Quick 的 lua 框架能在我们的 cocos2d-x 3.3 lua 项目中跑起来,接着我把 DragonBonesCPP 和 filter 都移植到了 cocos2d-x 3.3 中。目前,我们的团队已经可以使用 cocos2d-x 3.3 进行游戏的正常开发了。
我将这段时间积累的移植经验写成了一系列文章,方便以后查阅。下面是个列表(不断更新):
- cocos2d-x 3.3 lua 相关修改
使用 cocos2d-x 3.3 之后,要正常使用 lua 绑定,需要做一些修改,这篇文章记录了一些常用的修改。 - 如何在lua项目中使用dragonbones
在 quick-cocos2d-x 中,我将 dragonbones 集成进入了 quick-player 。但 cocos2d-x 中是没有 dragonbones 的,需要自行移植。LiteFeel 写了一篇在标准 cocos2d-x 中使用 dragonbones 的文章,参照他的步骤就可以了。 - 查看所有 quick 移植到 cocos2d-x lua 的文章
- 文章ID:2188
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/quick-to-cocos2d-x-33/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。