Cocos Creator 3.4 重磅来袭!新增 Marionette 动画系统、提升引擎稳定性

2021年对于 Cocos 引擎来说是具有里程碑意义的一年。这一年来,我们从年初 v3.0 多后端渲染框架出现的忐忑,到 v3.1 延迟渲染管线带来的惊喜,再到 v3.2 成为全球首家支持 HarmonyOS 的游戏引擎时的兴奋,以及之后对 v3.3 在整体性能提升的自信。我们获得了来自开发者们的肯定,同时也收到了大家的许多宝贵意见。这既给了我们极大的信心,也帮助我们更好地规划了 v3.4 的目标。

本次发布的 Cocos Creator 3.4  要的就是一个字:稳!我们重点优化了内容生产体验细节,在稳定性、性能优化、基础架构层面做了大量工作,同时增加了动画系统 Marionette 等重要功能。

而为了给开发者一个更加稳定、强大的引擎,v3.4 的研发和测试周期都比之前的版本更长,我们集中修复了一大批社区反馈较多的问题,解决了一些之前遗留的疑难杂症——感谢在这一个月的公测期里参与测试的开发者们!

此外,本次我们继续对 Code: Circle Demo 进行升级,画面表现更加优异,并且增加了第三人称射击玩法,让开发者能更直观地感受 Cocos 引擎在 3D 游戏开发上的进展。

Cocos Creator 3.4 是自年初 v3.0 发布以来快速迭代后的一个年度收官版本,也是 Cocos 3D 技术发展的一个节点。我们真诚地邀请大家体验,这份自信源于引擎组数月的奋战,源于 Cocos 多年来对于底层技术的积累。相信引擎团队倾注心血带给大家的 v3.4 能够不负期待,更好地帮助开发者做出优秀的游戏作品!

以下是 Cocos Creator 3.4 的更新亮点:

动画系统 Marionette

让每个角色就像提线木偶般“听话”

动画系统是 v3.4 中最重要的新增功能,我们给它取名为 Marionette(提线木偶)。提线木偶戏是一门来自闽南文化的传统艺术,通过简单的提线操作即可实现精彩的演出,寓意希望开发者能够借助 Marionette 轻松控制游戏角色动作,增强角色叙事的能力。

图片

在 v3.4 中,Marionette 已经支持动画系统的基础功能,包含状态机、子状态机、状态机组件、触发器变量、动画混合等。节点式动画图将让大大简化动画制作流程,让开发者能更加清晰直观地进行创作。当然,更完善的动画系统功能还在迭代中,动画层级和遮罩、人形骨骼和 IK、实时预览等能力均已在开发中。

我们准备了  Marionette 的详细文档和 Demo 供开发者体验与学习,后续也将发布视频教程,帮助开发者更快上手。

编辑器体验优化

打造对开发者更友好的引擎

相对于 2D 游戏引擎来说,3D 游戏引擎的功能更多,操作也相对复杂,因此编辑器的体验优化则变得尤为重要。在 v3.4 中,我们优化了大量编辑器体验细节,解决了一些开发者反馈较多的问题,带来一个更加友好的游戏引擎,让开发者更专注于创作内容本身,提升日常使用体验与开发效率。重点优化包括:

  • 动画编辑器支持标准贝塞尔曲线缓动预设,点击选中曲线片段后点击曲线预设即可应用
  • 新增矩形工具(Rect Gizmo)的智能对齐功能
  • 支持开发者自定义宏配置
图片
  • 支持 RenderTexture 的 wrap mode,filter 等参数
图片
  • 新增八叉树空间加速结构,优化了视锥剔除性能,可在场景 inspector 中开启
图片

光照模型和渲染优化

追求更真实,更具氛围感的画质

不可否认,游戏画质已经是玩家选择一款 3D 游戏的重要指标。自 v3.0 以来,我们一直在不断积累和打磨引擎的渲染能力,v3.4 同样继续在渲染方面进行了一系列重要升级,提升了画面质量、效果表现与氛围感营造能力。尤其是光照模型的改进将使得引擎在光照表现层面更加精细,更贴近真实的效果。

  • 支持自动生成环境贴图卷积图用于漫反射计算
手动设置环境光 vs 自动生成漫反射卷积图
  • 支持 LDR 和 HDR 渲染切换(在场景节点 Skybox 配置中)
图片
关闭 HDR vs 开启 HDR
  • 支持 IBL 采样降噪(standard 材质中勾选 USE REFLECTION DENOISE)
开启 Denoise vs 关闭 Denoise

渲染管线强化

为简单易用的管线定制能力做好准备

渲染管线方面,我们在次时代基础设施上继续深入探索。为了降低维护成本和开发者定制管线的心智成本,我们从 v3.1 开始就引入了 FrameGraph 的基础架构,用于渲染流程的高度抽象和分析。经过几个版本的迭代,在 v3.4 中我们正式将 Forward 和 Deferred 管线都对接了 FrameGraph。

图片
v3.4 简化后的延迟管线 FrameGraph

另外,渲染管线中的 Subpass 能力也是基于 FrameGraph 来实现的,FrameGraph 的第二大优势就是延迟模式渲染(不同于延迟渲染管线),引擎可以先分析渲染流程,进行优化之后再执行完整渲染流程。

目前移动端的 GPU 都是和 CPU 共享系统内存的,功耗的一大热点就是对于显存的读写。而 Subpass 优化就是充分利用 GPU 的 Tiled 缓存来降低显存读写功耗,当两个相邻渲染 Subpass 的写入资源和读取资源是同一份帧内资源,且不会被其他 pass 引用时,这个资源就只会通过 Tiled 缓存来读写,不会读写内存,可以明显降低功耗。这种对资源和渲染流程的自动推导正是 FrameGraph 带来的优势。

重要 Fix 和性能优化

万丈高楼平地起,勿在浮沙筑高台

引擎的稳定性决定了引擎的易用性,是引擎迭代能力的地基。面对激烈的内容市场竞争,开发者的需求也会越来越多样和深入,地基若不够扎实稳固则会寸步难行。在为开发者带来各种功能特性和渲染效果的同时,引擎的稳定性一直是我们在版本更新时的首要目标。v3.4 不仅进行了长时间的社区测试,也修复了一些困扰多时的疑难杂症,将引擎的稳定性推上一个新的高度。重点修复包括:

  • 修复了动画编辑过程中使用 Active 可能会导致数据丢失的严重问题
  • 修复场景在部分异常报错的情况下,会出现 MissingScript 组件,导致场景启动失败的问题
  • 修复 iOS 重复退出进入造成的崩溃
  • 修复 GLES3 后端在部分芯片上材质编译导致的崩溃问题
  • 修复 Vulkan 后端在一些低端机上的黑屏问题(通过更准确地下发 barrier 和 image layout 转换)
  • 修复 Vulkan 后端在一些低端机上的崩溃问题(通过修改 shader 绕开一些驱动支持不完善的语法)
  • 修复 Vulkan 后端在转屏或分屏时崩溃或分辨率不对问题
  • 修复 Vulkan 后端在使用大量高分辨率贴图时的崩溃问题
  • 修复少数设备 Chrome 上的黑屏问题
  • 修复 mountedChlidren 里有 PrefabInstance 可能会导致数据错误的问题
  • 修复复制 Prefab 时可能出现的 fileId 冲突,会进而导致数据丢失和报错
  • 修复 Prefab 中引用了被删除的元素数据,导致序列化了很多冗余数据的问题
  • 修复 Undo 可能导致 prefab 内的部分 override 数据丢失的问题
  • 修复地形还原的时候,可能出现数据错误的问题
  • 修复运行时切换场景后 Label 引用的 GPU 内存没有释放的问题
  • 修复 InstanceBuffer 和 BatchedBuffer 由于持有全局 Map 导致的内存泄露问题
  • 修复部分小游戏平台全局 precision 指定失败导致的大量问题,比如阴影采样问题
  • 修复场景烘焙的情况下原生平台没有传递正确的 baked 参数
  • 修复 GLES 下有概率会出现的模型闪烁问题(通过优先使用 glMapBufferRange 而非 glBufferSubData)
  • 修复当模型骨骼权重中有 NaN 时在不支持浮点贴图的设备上花屏的问题(通过在导入期均分所有 NaN 权重)
  • 修复原生端预烘焙动画 Instancing 处理后大批量数据同步崩溃
  • 修复多个同名插件且注册了资源,会导致脚本编译失败的问题
  • 修复原生平台重新构建后 remote 文件夹数据更新问题
  • 修复原生加密的 backup 代码打进 apk
  • 修复自动图集使用压缩纹理后,修改图集配置重新构建仍使用缓存

除了重要问题的修复以外,引擎的整体性能也得到了一定的提升,比如 2D 渲染和合批效率、物理性能、iOS Web 的 3D 场景性能、Android 部分场景。下面是 2D 渲染的部分测试结果:

图片

无论是新增的 Marionette 动画系统,或者是在产品体验、稳定性、性能优化、基础架构层面上所作出的更新优化,我们始终秉持着「让游戏开发更简单」的初衷,希望能帮助开发者们开发出更加优质的游戏项目。在 3D 游戏领域里,我们刚刚起步,未来可能也会跌倒,甚至头破血流,但是我们确信一点,我们会一直坚定地走下去,夯实自身的技术,打好基础的同时不断探索技术的极限,为开发者们带来更加简单易上手的优质引擎!

点击下载 Cocos Creator 3.4,查看完整更新说明。