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 供开发者体验与学习,后续也将发布视频教程,帮助开发者更快上手。
Marionette 动画系统 Demo
https://github.com/cocos-creator/MarionetteDemo
编辑器体验优化
打造对开发者更友好的引擎
相对于 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,查看完整更新说明。
往期精彩