在 Cocos 不算长的生命历程中,我们曾多次尝试给开发者带来 3D 游戏的开发能力:
2014 年,我们的 3D 团队开辟了 Cocos2d-x 对 3D 的支持,至今已孵化出莉莉丝的《剑与家园》、腾讯的《乱世王者》这样的超级大作;同时,Cocos Creator 2.1 中也逐步加入了 3D 元素的渲染支持,旨在增强 2D 游戏的表现力。
然而,我们深知没有编辑器的 3D 引擎就像蒙着眼睛的画师,同时我们又不希望假他人之手,仅成为其他 3D 编辑器在特殊平台上的发布工具。所以在 Cocos Creator 成为 Cocos 的核心编辑器之后,我们就开始了 3D 编辑器方向上的探索。
三年多的时间如白驹过隙,我们对 3D 游戏引擎的理解一点点积淀和提升,今天我们很自信地给大家带来了 Cocos Creator 3D 的第一个公测版本。
今天只是一个起点,Cocos Creator 3D 立志成为世界范围内最有竞争力的手游引擎之一,一切就从这份献给开发者的小小礼物开始。
下面就让我们从 3D 编辑器的一些功能展示开始揭开 Cocos Creator 3D 的面纱:
01
厚积薄发:承袭 Cocos Creator 的优秀基因
Cocos Creator 2D 毋庸置疑已成为各种小游戏平台上首屈一指的游戏引擎,编辑器易于学习的特性和极速开发的效率,可以帮助开发者很好地控制成本,加速产品迭代,提高成功率和收入预期。
在引擎技术层面,Cocos Creator 3D 很好地继承了 Cocos Creator 2D 四年来在编辑器框架和工作流上的积累中,并且进行了升级。
我们从框架上更彻底地解耦了各个组成模块,下面列举一些重要的修改:
大幅度提升启动速度
模块之间代码隔离,纯消息驱动,消息通信机制升级为 Promise
文件系统更轻量,更可靠,优化对大型项目支持(包含 5k 资源的项目更新扫描时间:4.5s)
插件系统彻底模块化,为更强大的插件系统做好准备
拥抱 ES6 和 TypeScript,开发者不用顾虑兼容问题
经过这些重要的重构后,Cocos Creator 3D 可以更好地支持 3D 项目的复杂需求,并且延续了 Cocos Creator 轻量、易学习、高效率迭代的特点。
02
为了给 Web 和小游戏平台带来更好的 3D 游戏表现,Cocos Creator 3D 首次真正将基于物理渲染全面带到了小游戏中,不仅支持 PBR 材质,还将光源系统和渲染统一升级为基于物理的度量衡和算法。
1. 基于物理的光源系统
PBR 材质的概念现在已经非常普及,算法性能也很高效,所以很多开发者希望能用上 PBR 材质。但如果没有光照和渲染底层的配合,PBR 材质可以说只是一个没有灵魂的空壳。所谓“基于物理”是指,材质系统和光照都基于物理世界的度量衡,这样美术人员可以更高效地制作出具有真实感的渲染表现,而不仅仅是一个算法而已。
所以 Cocos Creator 3D 中采用光学度量单位来描述光源参数,可以将光源的相关参数全部转化为真实世界中的物理值。这样,设计人员可根据相关灯光的工业参数以及真实环境的实际物理参数来调节光照强度、颜色、范围等信息,使整体光照效果更加符合真实的自然环境。
2. 材质系统
概括来说,Cocos Creator 3D 支持无光照的 unlit、基于物理光照的 standard、skybox、粒子、sprite 等。
而这些材质都是基于完全开放的 EffectAsset,这是一种用户可自行编写的着色器程序及配置格式,用户不仅可以用 GLSL 300 es 编写现代的着色器 shader 代码,还支持以下功能:
预处理宏定义,编辑器中可选择
可编辑属性,编辑器中可配置属性值,对应运行时 uniform
多 Pass 支持和 Pass 配置(混合模式、深度测试、蒙版测试等)
强制使用 UBO 来组织 uniform,对现代渲染后端更加友好(WebGL2 等)
Shader fallback,可根据运行时的环境来判断使用高端或者低端的材质实现,在不支持 GLSL 300 es 的环境中,高版本 Shader 也会自动被编译为低版本运行
Shader 函数复用和引用,方便开发者复用代码片段,也可以更方便使用引擎内置片段
除此之外,开发者在内容生产工具(比如 3ds Max)中配置的材质可以通过 GLTF 格式直接导出到 Cocos Creator 3D 编辑器中使用,亦可在编辑器中选择分离导入以允许手动修改。
有了这套真实感渲染引擎和材质系统,相信开发者可以制作出更加精美的 3D 游戏,尤其是在小游戏和 Web 平台上创造出令人惊艳的效果。
03
除了渲染之外,3D 引擎的上层需求繁杂,相比 2D 引擎复杂度又上了几个维度,为了给开发者带来接近海外领先产品的真 3D 开发体验,我们尽最大努力完成了众多重要功能的支持。具体如下:
1. 模型与动画
支持 FBX 以及 GLTF 的模型和骨骼动画导入,动画系统沿袭自 Cocos Creator 2D,所以开发者们可以用同样的 API 驱动动画播放,在编辑器中编辑和预览。为了最大化骨骼动画的效率,我们使用双四元数压缩数据,并且通过三套不同方案在所有目标设备和平台都实现了 GPU 动画。在性能比较差的 iPhone 6 Safari 上运行也可以达到 25 套独立执行(不合批)的骨骼动画(每个角色 30 根骨骼)同时播放,帧率稳定在 30 帧以上。
2. 强大的粒子特效
为了支持 3D 中复杂的特效需求,我们实现了一套实用的粒子编辑系统,当然,它所支持的功能也非常强大,不仅支持各种可直接编辑的发射器类型;还支持大小、颜色、旋转、速度、加速度、限速、贴图动画等模块;同时渲染模块中还允许指定粒子材质和拖尾材质。模拟火、烟、水、云、雪、落叶统统不在话下,发光轨迹、速度线等抽象视觉效果也没问题。
3. 物理引擎支持
为了更好地支持各种基于物理反馈的游戏,我们在引擎中也支持了 3D 物理引擎,并将底层的基础物理引擎封装为便利的引擎组件。一方面统一不同的底层物理引擎接口,另一方面也方便编辑器中对物理碰撞盒直接编辑。
4. 延续 Creator 的 UI 编辑体验
UI 方面,Cocos Creator 3D 完整保留了 Cocos Creator 2D 中的设计,大大降低老用户的学习成本,组件的设计、API、排版系统等都得到了保留,并且同样支持 3D 内容在 2D UI 中的混合渲染,方便开发各种 3D 模型的 UI 展示界面。
5. HDR 和 LDR 两套渲染管线,符合不同需求
为了在高端设备上有更好的表现力,Cocos Creator 3D 的渲染管线分为 HDR 和 LDR 两套,在 HDR 管线中,相机空间的颜色会被转换为更高动态范围的 HDR 图像空间颜色,这种转换可以在支持 WebGL 2.0 的设备上开启,并且不会增加损耗,与 LDR 几乎没有性能差异。
04
最后想说的一点是,为了让 Cocos Creator 3D 能够拥有更强劲的生命力和持续进化的潜力,我们从非常长远的角度考虑了它的设计。前面所提到的编辑器框架升级、ES6 和 TS 支持、支持高版本的 GLSL 语法,无不为此,但最重要的是我们的多渲染后端抽象和无缝切换设计。
我们为了拥抱即将普及的新一代图形接口,参考 Vulkan、WebGPU 设计了我们的渲染后端 API,并且将它接入到不同的渲染后端上,目前已经接入了 WebGL 1 和 WebGL 2,在原生端我们未来也会尽快接入 Metal 和 Vulkan。并且在后端的持续升级过程中,不会给上层 API 和实现带来任何负面影响。这样做的好处很明显,一方面确保 Cocos Creator 3D 是一个为未来做好准备的引擎,另一方面也可以在支持新特性的环境中尽可能获取更高效的性能。
05
Getting Start
以上就是 Cocos Creator 3D 公测之际,我们引擎开发人员想要分享给广大开发者的,希望能将我们对 Cocos Creator 3D 引擎的信心传达给大家,同时鼓励大家开始尝试使用。
值得一提的是,已经有数款游戏对我们引擎进行了内测验证,相信不久就会有作品面世,更重要的是,他们帮助我们在公测之前踩平了无数的坑,大大提升了产品的稳定性,尽管碍于项目保密的关系无法透露是哪些开发商和作品,但我们仍要对他们致以最真挚的感谢!
与此同时,Cocos Creator 2D 版本仍会秉承 “2D 优先” 的原则,为 2D 项目和团队带来更强大的画面表现力、更优秀的开发体验、以及更好的性能,只会融入那些适合 2D/2.5D 游戏的 3D 渲染能力。所以如果是一个 2D 项目,仅仅追求表现力的提升,可以继续使用 Cocos Creator v2.x 版本。如果是一个 3D 游戏团队,有其他 3D 编辑器的经验,并且想发布到小游戏、Web 平台,可以尝试 Cocos Creator 3D 带来的全新体验。从长远计划来说,Cocos Creator 3D 是一个探索无限可能的分支产品,在稳定之后会与 Cocos Creator 融合为一个统一的产品。
我们已经为 Cocos Creator 3D 编写了大量详细的文档,今日 Cocos Creator 3D 正式开启公测。欢迎有兴趣的开发者立即通过下面的方式联系我们,以获得 Cocos Creator 3D 1.0.0 beta 的公测权限。
报名地址:http://hdxu.cn/Tpuuu
注:公测版本支持 Web 和小游戏打包,暂时不支持原生打包,正式版本中会支持。
进入COCOS公众号,点击[阅读原文]快速进入报名页面!
大神驾到 |「大掌教」Cocos3D组件详解
Creator MVVM方案—为人生节省时间!
CreatorPrimer 30篇教程汇总
贝塞尔曲线动作小工具
Creator2.x摄像跟随实现RPG地图
Cocos实现对ETC2的支持
CreatorPrimer|组件编码心得(上)
CreatorPrimer|组件编码心得(中)
CreatorPrimer|组件编码心得(下)
2D MMO中角色动画的优化总结