“羊了个羊”背后的游戏引擎Cocos:这绝不是团队最高光的时刻
最近的一款微信小游戏“羊了个羊”把不少人虐得“死去活来”。
微信官方小程序数据显示,9 月 14 日有 2600 万用户参与了挑战,短时间内涌入的玩家过多导致游戏服务器两天崩了三次。
随后,公司紧急发布招聘启事,广泛吸纳“Go 服务器端开发工程师”和“CocosCreator 客户端开发工程师”,这表明该游戏底层基于 Cocos 引擎。
根据媒体爆料,该游戏背后的研发人员只有三个,三个人就能完整开发这样一款小游戏也让 Cocos 引擎再次吸引了业内的广泛关注。
当然,这绝不是 Cocos 引擎最高光的一次,毕竟曾一举推动中国手游市场崛起,众多现象级游戏《捕鱼达人》、《梦幻西游》、《开心消消乐》均基于 Cocos 引擎,而且还是国内首个支持任天堂 Switch 平台的 3D 商业引擎。
近日,InfoQ 有幸采访到了 Cocos CEO 林顺、引擎团队技术负责人凌华彬、XR 团队技术负责人王庆利,一起聊聊这款成立第一天就开源,支撑了众多现象级游戏的商业引擎,其背后的技术团队过去及现在都做了哪些思考。
“其实,我们在2011年引擎的最初版本,就足以支撑‘羊了个羊’这样一款游戏的运行”。
说这话的是凌华彬。多年前,他在法国开发 HTML5 应用时被推荐使用了 Cocos2d-html5 这样一款中国引擎,回国后就毫不犹豫地加入了 Cocos 团队。
这句话也没有夸大的成分。因为 2011 年前后,Cocos 引擎就支撑起了另一款现象级游戏——捕鱼达人的走红。
Cocos 引擎的前身是阿根廷人 Ricardo Quesada 在 2008 年推出的用于 iOS 平台的 Cocos2d-iPhone。2010 年,当时的王哲(Cocos创始人)和林顺在联通沃 Phone 操作系统团队,当时团队看到一个需求,有些开发者在开发了 iOS 游戏后,想要移植到安卓平台,但当时并没有好用的移动跨平台游戏引擎。他们选择加入 Cocos 社区,创建了跨平台的 Cocos2d-x 引擎分支,并开源了出来。
随着捕鱼达人的爆火及其开源的定位,Cocos2d-X 被越来越多的开发者熟知。
2015 年之前,Cocos 的主要特色是具备优秀的兼容性、跨平台、高性能、轻量化,并且当时非常具有远见地投资了安卓生态,大大降低了跨平台手机游戏的开发门槛,也催生了绝大多数中国当前的 Top 游戏公司,可以说促进了中国手游的崛起。在 2014 年的统计中,其在应用商店 Top 1000 的头部手游里占有率达到了 70%。
直到今天,其跨平台的特性依旧被开发者称赞不已。“羊了个羊”由于使用了 Cocos 进行开发,能够同时打包成不同平台的版本,包括原生 / 小游戏 /Web 端等,大大降低了开发不同平台版本的时间,使得其在继小游戏之后,可以迅速发布 APP 版本,目前 APP 版本在 TaTap 的预约已经突破 10 万。
在“羊了个羊”爆火之后,林顺也带着团队与对方交流过,这样一款现象级游戏的诞生与很多非技术的因素有关,因为早在这之前,Cocos 的官方线上商店中也出现过一款玩法与之相似的游戏,但就是没火。
Cocos 作为游戏引擎能做的就是提供一个好的技术保障,比如不同平台的加载性能和画面表现等。“羊了个羊”走红之后,与 Cocos Creator 直接合作的平台很快就看到了该游戏上架,没有直接合作的平台也在两三天内陆续上线,还出现了 3D 等各种版本,这都是引擎层设施成熟的表现。此外,Cocos 的商店中上线了大量与之相关的模版、设计、玩法等内容,“单纯从开发角度来看,未来开发同样一款游戏几个小时就可以搞定“,林顺在采访中表示。
如果 Cocos 的目标只是支撑几个现象级的游戏,或许技术迭代也就止步于十年前了。即便如此,好像也没有什么问题,2D 在今天依旧存在广阔的应用空间,但他们想做的是一款世界级的游戏引擎。
于是,整个团队开始探索 3D 化,这也让他们遇到了第一次低谷。
今年 7 月份,Cocos 宣布 Cocos Creator for Nintendo Switch 版本正式开放申请,Cocos 也成为国内首个支持任天堂 Switch 平台的 3D 商业引擎。
做 3D 引擎,这是 Cocos 过去数年的技术执念,而执念往往是需要历经艰难才可以达到的。
2015 年,顺风顺水惯了的 Cocos 第一次开始尝试 3D 化,想在 2D 的基础上去做 3D 引擎,然而两者的核心机制有根本性的不同,当时的引擎和编辑器设计还比较传统,技术上碰壁不少。雪上加霜的是,其竞争对手——跨平台游戏引擎 Unity 也正式开始大举进军移动市场。
整个团队迅速调整路线,进入第二阶段,尝试打造一个现代的编辑器,并于 2016 年推出了 Cocos Creator,引擎的架构也彻底更新成了数据驱动、组件式的现代架构。
在 Cocos Creator 的基础上,团队于 2017 年重新开始挑战 3D,将整个 3D 引擎底层从零开始重新搭建,2019 年发布了 3D 化的引擎分支,2021 年正式将 2D 和 3D 合并发布 Cocos Creator 3.0。最终经过五年的积累,才达到今天 Cocos Creator 3.6 的阶段——一个完全现代化的 3D 引擎。
在 Cocos 引擎团队看来,3.6 版本是十分重要的里程碑版本,相较于前一版进行了多个方面的大幅进化,比如:
性能优化:原生化,2D & 3D 性能的全面提升
渲染表现力提升:CSM 级联阴影、GGX 反射卷积图、Surface Shader 材质定制、各向异性光照
产品驱动开发:编辑器预览,粒子噪声图,动画嵌入播放器,多语言编辑器
3.6 版本中的 CSM 级联阴影演示
更多功能请访问:https://www.cocos.com/cocos-creator-3-6#10231
在这个过程中,最难的是“开着飞机换引擎”,重构面临的技术挑战巨大,不仅目标难度高,还需要保障切换顺畅,也就是在保证兼容性的基础上完成升级。此外,团队还需要把酷炫功能做到足够好用,比如编辑器预览功能在 3.1 版本中就做过,但因为体验不好关闭了,3.6 版本又进行了重新优化。
时间周期跨度最大的则是原生化。2021 年夏天,团队就开始讨论原生化的技术方案,做了三四种预案,针对不同的技术方向设置了不同的原生切分层级。随后的一年时间,团队开始了原生层的重写,进行了多个阶段和多个模块的重构,并且逐阶段进行大量的测试验证,原生层代码增加了两倍多。
然而到更上层的 2D 性能优化时,团队最先感受到的就是挫败感,因为性能出现了大幅度的倒退。团队又开始针对各种性能热点做大量的分析和验证,逐步提升到远超之前的性能表现。
“其实,也有一些重构的尝试最终以失败告终,没有进入到版本中。但我们相信引擎的研发就是充满挑战和失败的,但我们会不断尝试新的方式,持续迭代。”
在开发过程中,团队积极听取用户的反馈,比如接触到一位 3D MMO 的 CP 有很多更高级的需求,尤其是粒子、地形方面,团队临时调整了优先级,将这些需求排进去。同时为了更好地满足用户需求,引入了产品角色把控需求分析和解决方案设计,并且跟踪到实现的验收和交付,这种方式保障了实现的功能切实满足用户需求。
这些层面的优化不仅让 Cocos 引擎的性能大幅提升,并且给引擎带来了更高的天花板,在跨 Web 和 Native 两个层面都尽量用原生的方式来实现,Web 端使用 JS,Native 端使用 C++,预料到做好统一很困难,所以团队采用了渐进式的方式来实现。
至于为什么选择在这个时间点做这件事情,凌华彬在采访中表示,未来 Cocos 引擎会承载更多重度的游戏和元宇宙应用场景,比如开放世界、大地形、复杂的桌面级渲染管线。同时,Web 端也会开始使用 WebGPU,团队使用 Wasm 技术将原生的 WebGPU 管线编译到 Web 端运行,大大统一了 Web 和 Native 的渲染器实现,原生化是这一切的基石。
如此所说,我们是时候考虑元宇宙时代的到来,游戏引擎可以在其中做些什么事情了。
“游戏引擎是元宇宙时代重要的基础设施,而 XR 则是非常重要的入口”,林顺在采访中表示。
不久前,Cocos面向开发者推出了Cocos CreatorXR 社区版,在开发者社区引发了激烈讨论,有开发者表示终于等到了XR版本,也有的惊讶于Cocos在研究XR技术,甚至还有开发者当天就跑通了开发流程。在开发者社区经过一段时间的试用后,Cocos 上周发布了Cocos CreatorXR 正式版,并且还对首批试用企业提供技术对接。
采访中,王庆利表示,很多开发者会在意当前 XR 版本支持哪些设备,是否有预览功能以便能快速上手运行,目前该版本已支持包括 Rokid Air、Meta Quest2、Huawei VR Glass、Pico Neo3、Monado 等多个品牌的设备兼容适配,未来也会根据开发者的反馈进行更新。
如今, VR/AR 品牌全面开花,而各家均有各自的开发 SDK 和交互方式,对于开发者来说,适配各家设备是一项极其繁琐且耗时耗力的工作。Cocos 引擎的 " 一次开发跨平台部署 " 将大幅提高适配效率。
此外,Cocos CreatorXR 智能支持 GLES3、GLES2、Vulkan1.0、Vulkan1.1 等渲染后端,XR 应用启动时将根据打包选项采用当前设备适配的最佳图形 API;而基于 Web 端预览功能,开发者可以在 Web 端使用鼠标、键盘模拟头戴显示器、手柄控制器等组件,快速测试优化 XR 内容。
在刚刚结束的 2022 世界人工智能大会(WAIC)的现场,Cocos 基于现有的能力打造的线上版「元生无界」,让与会者初体验了元宇宙时代的参会方式。
「元生无界」大世界包含张江区域和临港区域,实现了虚拟角色创建、线上参会、空间互动、社交语聊等相关功能。根据会议门票指引,用户可前往会堂大厅中的会议室进行线上参会。进入大会议室入座后,可以切换沉浸视角、真实视角 (角色第一视角)进行观看。
XR 产业历经多年的发展,VR 已形成一定的内容生态,我们已经看到该技术在教育、游戏等方向的尝试,确实可以让开发者与设备正向跑起来。
但 AR 却几乎处于起步状态。如全球最火的 AR 游戏《Pokemon GO》,虽然收入已超过 60 亿美元,但用户并非为了 AR 买单,好在我们也看到了其在工业展览设计等领域的应用。
未来,Cocos 会与合作伙伴一起去为元宇宙的不同场景提供解决方案或者是模板,持续提升该领域内容的生产效率,提升整体的内容品质。
“我们希望可以做好元宇宙时代的国产基础设施,进而促进整个行业的发展。最终希望能够提供一个集策划、开发、打包等工具链一体化的云服务。”
而在元宇宙世界成型之前,Cocos 团队会先带着众多开发者及他们优秀的创意一起出海。
从落地第一天起,Cocos 引擎就选择开源,在全球范围内获得了广泛受众,并在无形中推动了整个手游行业的发展。
全球化的服务能力和开源氛围吸引了王庆利、凌华彬等一大批优秀工程师的加入,而这个决定在林顺看来是过去多年最正确的选择之一。
开源让 Cocos 足够中立,并得以站在更广阔的空间以全球化的视角看待自己所做的事情,虽然会带来额外的成本投入,毕竟海外市场与国内市场在研发运营和社区生态维护层面存在差异,但这也让整个团队的技术体系得以与世界接轨。
“这其实是一个很重要的选择,当然有些人觉得可能我并不想这么做,毕竟这不一定能让我获得最好的商业回报。”
通过开源,Cocos 引擎的代码获得了大量社区优秀技术专家的贡献,也让整个团队有机会接触到海外优秀的企业,并与之建立合作关系,这在 Cocos 的国际化方面起到了非常正向的作用。
如今,Cocos 带着更广大的开发者和他们优秀的想法一起出海。采访中,林顺表示,首先,Cocos 针对海外平台同样提供了跨平台部署的能力,这也是 Cocos 一直坚持的基础保障;其次,不同的针对开发者在做的不同内容,Cocos 可以提供很多本地化的服务,比如多语言插件,更好地将内容针对不同的平台做部署;最后,Cocos 与海外顶尖的技术企业保持着良好的合作关系,以 Google 为例,Cocos 和 Google 长期以来一直保持着密切的合作,特别是在全球化方面的支持。近期又在增强 Web 端服务方面达成了新的合作,针对用户在 Web 端的变现需求,Google 将官方制作服务于 Cocos 开发者的 Google AdSense 插件,届时开发者只需要简单勾选即可一键集成,体验到无缝连接的 Web 端变现服务。
v3.6 提供了内置的多语言工具 Localization Editor(L10n)示例
在编辑器内核层面,团队接下来会在资源管线、引擎容器、场景数据三个方向进行优化。
在技术层面,Cocos 依旧会将游戏作为主要方向,不断完善工具链及 3D 基础设施,以应对越来越高的自动化要求,并在此基础上联合合作伙伴提供更加完善的服务。
在生态层面,Cocos 今天已经从游戏引擎变成一款 3D 通用渲染引擎,生态不仅包含游戏,也包含车机、虚拟偶像、元宇宙等各种方向。除了服务好各行各业的不同诉求,Cocos 将针对不同行业及场景提供对应的解决方案,帮助大家更高效的进行内容创作。
在 XR 层面,团队的主要目标是让开发者更方便、低成本、高效地使用 XR;将元宇宙涉及的相关工具进行集合打通;在不同设备上的运行状态更加轻量化和低功耗。
“游戏引擎是基础设施,未来我们希望可以触达更广阔的行业,支持更多的开发者创作出无与伦比的精彩内容,这是我们永远期待且满怀热忱的事情。”
字节跳动现象级 App 十年成长史,移动端基础建设与组织演进之路 | 卓越技术团队访谈录
满心欢喜入职 Gitpod 一年后失望离开:垃圾邮件当 OKR、天天造势但就不兑现承诺
钉钉总裁称非常讨厌红点和 DING 消息;Mozilla 控诉苹果、谷歌和微软锁定浏览器;特斯拉上海工人薪酬曝光:到手七八千|Q 资讯
后疫情时代,难得的线下峰会,OGeek 南京技术峰会要来啦!本次峰会以“云无界、端无边”为主题,与各位开发者一起探讨音视频、云渲染、AIoT、一站式应用开发等热门技术的演进方向,共建端云协同生态。报名现场签到即可现场领取 OGeek 定制周边及纪念礼品,期待与您 10 月 29 日,在南京金茂威斯汀大酒店不见不散!