虽然 Cocos 引擎是为游戏开发而设计的,但很早就有各路神仙降临,折腾出许多游戏之外的应用场景。比如IM聊天软件、机顶盒上的UI交互界面、机器人面部的交互界面等等。我们今天看到的多数安卓机顶盒开机后界面、多数飞机上座椅后面的娱乐系统都是用 Cocos 开发的。
最近幼儿英语教育软件市场非常火,新东方、好未来、VIPKID、久趣英语也都在用 cocos lua 或者 cocos js 方案开发他们的产品。而今天出现了 Cocos Creator 方案在这个领域的首款重量级产品:腾讯的 ABCmouse。
网站:abcmouse.qq.com
得益于 Cocos Creator 的全平台输出,ABCmouse 首先在PC浏览器里就可以玩:
然后手机app端当然也是要有的
目前开发团队正把 ABCmouse 从 Cocos Creator 1.6.1 升级到 1.9,以适配发布微信小游戏和手Q玩一玩。今天早上我简单试用了一下,手机上体验不错,等下班回家了可以给家里小朋友下个 iPad 端跟着学看看。
开发团队中的腾讯高级工程师潘伟洲曾经就技术选型、引擎扩展方面,接受过 InfoQ 的采访。我比较懒,直接转载一小部分出来:
InfoQ:Cocos 作为开源的跨平台游戏引擎框架,是一个什么样的契机让你和你的团队想到了用 Cocos 来改造原本 Hybrid 形式的产品的?
潘伟洲:先从动力说起:ABCmouse 原来的版本出于跨平台的目的,项目的大部分采用的是 Hybrid 的形式,大部分的页面加载都非常耗时,以一个画图的功能为例,从打开到加载完成可能要耗费十几秒的时间,这对于大部分用户来说是难以忍受的。
通过初期技术预研后,我们决定使用 Cocos 来改造这个项目,主要出于以下几个考虑:
1. 跨平台。Cocos 支持使用同一套代码构建生成 Web、iOS、Android 等几个端,最新的版本还支持发布到微信小游戏、Facebook Instant Games 和 QQ 玩一玩;
2. 性能。Cocos 的原理是在 Activity 中绘制一个 OpenGL 的 SurfaceView ,并由其完成页面的渲染的。与基于 WebView 渲染的 Hybrid 应用相比,Cocos 的渲染速度更快,性能更好。
3. 效率。借助可视化的 Cocos Creator 工具,界面的开发和资源的管理非常便捷,设计团队也可以参与进来设计界面和动效,提升开发效率。
4. 表现力。ABCmouse 中包含了很多诸如游戏、画图、音乐等带游戏和娱乐性质的场景,而 Cocos 本身是为游戏开发设计的,更适合用在我们的产品中。
InfoQ:在实际开发过程当中,与其他跨平台的开发框架相比较,你觉得用 Cocos 的优势在哪里?
潘伟洲:首先是生成的平台更多,除了常见的 Web、iOS、Android 外,难得的还支持微信小游戏、Facebook Instant Games 和 QQ 玩一玩的发布。其次,因为 Cocos 的核心开发团队来自中国,能提供更好的技术支持。腾讯也是 Cocos 的合作伙伴,我们与他们建立了良好的合作关系。
InfoQ:在什么样的场景下,才适合做基于 Cocos 的产品开发呢?
潘伟洲:取决于产品的定位。Cocos 主要是为游戏开发设计的,所以产品的表现力更佳,但在性能、内存占用、耗电上不如普通原生应用。当你的产品要求有更高的表现力,UI 开发更灵活,并且希望能实现跨平台开发时,Cocos 是一个值得考虑的选择。
InfoQ:在众多的跨平台 app 开发框架当中,开发者如何找到适合自己的框架?
潘伟洲:建议结合产品的需求、定位、框架成熟度、社区支持情况等维度进行综合考量。
比如,如果你要开发一个视频播放器,那么像 Cocos 这种使用 OpenGL 绘制 UI 的框架就难以实现跨平台开发。而如果要开发一个高表现力的应用,比如内置小游戏或者是带翻书特效的阅读应用,那么就应该考虑 Cocos 这类支持 OpenGL 绘制的框架,或者与 H5 页面结合的 Hybrid 框架。
另外,如果产品对性能要求更高,那么应该选择更 “Native” 的框架,例如 React Native、Weex ,或者 Flutter 。而如果产品比较轻量,也更看重开发效率,那么可以选择 Hybrid 的框架。
除了从产品自身的需求定位出发,选择一个框架还应该考虑这个框架本身的成熟度以及社区支持情况。比如,Google 的 Flutter 是最近比较受关注的跨平台开发框架,它的亮点在于跨平台、高性能和不俗的表现力。然而这个框架目前还不够成熟,社区的轮子还不够丰富,能够得到的帮助也比较有限,所以建议现阶段可以保持关注,但小团队不要贸然去尝试。
更多的技术细节,大家可以去搜一下「前端之巅」公众号里面《如何用游戏引擎改造Hybrid App》一文。腾讯开发团队对引擎的一些修改,已经提交PR到cocos开源仓库、也已经合并。之后会有更详细的技术分享发布在 Cocos 公众号上面,敬请期待。