● 为抖音小游戏平台添加 WASM 支持。 issue
● 统一 WASM 模块的构建流程。
● 为抖音小游戏与微信小游戏平台添加 WASM Brotli 压缩格式 ( .br) 支持。此功能默认关闭,可在构建面板中启用。issue
● 为抖音小游戏平台添加“预加载脚本”功能,加快进游戏的速度。此功能默认关闭,可在构建面板中启用。issue
● 支持按照构建任务名称匹配构建模板,例如 build-templates/wechatgame-001 内的模板,会在构建任务名为 wechatgame-001 的任务构建时作为其构建模板拷贝使用。项目可以根据实际需求为同一平台定制不同的构建模板,比如 debug 与 release 的不同模式模板。
● 支持在构建面板上直接配置不同于项目设置的物理后端、webgl 2.0 后端、原生代码打包模式。如果项目设置中未开启相关模块,则对应的选项不显示。其中抖音、微信小游戏平台还支持 Brolti 压缩选项,勾选后将会缩小大约 2/3 的体积,但由于需要运行时解压缩会稍微影响启动时间。可以根据项目的时机情况按需开启。(文档介绍:add engine config documention in build-options.md by yanOO1497 · Pull Request #2864 · cocos/cocos-docs · GitHub)
● Substance 贴图导入后可以右键多选贴图自动生成材质,目前已在 Substance 内支持了 Cocos 引擎的导出选项,有指定的命名规则。
可以根据项目情况自行在项目设置-自动材质设置 内修改自定创建材质的关键字,目前支持 houdini vat、zeno、SP材质节点等文件类别关键字。
● 项目设置支持插件脚本排序配置可以更直观的对有顺序需求的脚本进行排序,同时废弃了旧版本的插件脚本依赖配置,旧配置将会自动迁移到项目设置内(参考文档:[3.8.3] update plugin scripts documentation by yanOO1497 · Pull Request #2862 · cocos/cocos-docs · GitHub)
● 纹理压缩支持小游戏平台单独配置格式不做剔除
● 优化构建任务的进度显示,显示详细的子日志信息
● 优化引擎模块的分组显示,支持整组的全选操作
● 优化调整了构建编译、运行按钮锁定的规则,互不影响的平台如 web 平台可以同时运行
● 优化了插件脚本在属性检查器内的相关选项文案、UI 交互等
● 更新了设备管理器内的设备数据
● 完善优化了旧版本插件脚本默认值行为以及一些界面选项的操作,新增在小游戏平台的执行环境控制
● Bundle 文件夹添加新的图标标识
● 修复在 schedule 的回调函数里 unschedule scheduleOnce 导致 scheduleOnce 可能不被调用的问题。issue
● 修复 vec3.slerp() 的逻辑错误。issue
● 修复 web 平台上 WASM 和 ASMJS 的文件都会被下载的问题。issue
● 修复原生平台上粒子旋转效果不正确的问题 issue
● 修复新管线使用外部资源纹理进行上屏时报错的问题
● 修复开启 Box2D wasm/asmjs 实验性功能后,在不支持 wasm 的平台上使用 Box2D asmjs 导致初始化场景黑屏问题
● 修复editbox的隐藏节点之后、延迟加载显示editbox等输入坐标不对的问题;
● 修复label没有激活节点时,销毁时,纹理不会立即释放的问题
● 修复label的cache模式不支持字符表情的问题;
● 修复default_pannel设置太大,导致编辑器异常的问题;
● 修复bmfont的opacity不生效的问题;
● 修复spine 设置timeScale 播放速率不一样。issue
● 修复 spine.EventType 没导出的问题。 issue
● 2D 物理返回的角速度返回值从角度改成弧度
● 修复了 Ve3.rotateN() 的逻辑错误
● 修复自动图集文件夹内小图更新后重新构建图集内容纹理压缩图未及时更新
● 修复编辑器 ipc 通信的内存泄漏的问题
● 修复 Bundle 构建成功后,点击确定按钮报错
● 修复构建流程内对构建模板文件 MD5 添加的缺失与替换问题
● 修复 vivo 平台在 install 失败后没有正常抛出异常
● 修复抖音小游戏平台以 lite 模式点击运行后报错
● 修复 PolygonCollider2D 在编辑模式下调整边界框时卡顿的问题
1. 新增自定义管线 Subpass、MSAA 支持
2. 动画图恢复了对非骨骼动画(AnimationClip)的支持
3. 脚本系统开始支持解析符号链接,以用于支持 pnpm 等依赖符号链接的包管理器。(现在默认对符号链接进行解析,此举可能影响那些将 assets 目录链接至项目的做法)。
4. 添加了 iOS 对屏幕边缘手势的延迟触发以防止误触
5. 添加了原生平台对 http 请求的 patch 方法支持
6. 添加了 RichText 的默认颜色接口
7. 新增钢琴烤漆、车漆和玻璃材质
示例:https://github.com/cocos/cocos-example-materials 场景:assets\advanced-cases\coat\coat.scene
8. HDR 下 Scene 面板增加 PostSettings 选项,Tone Mapping Type 提供 DEFAULT 和 LINEAR 选项
9. 新增实验性质的 Box2D wasm
10. 新增角色控制器 Trigger 事件,支持 角色控制器组件 和 碰撞体 监听 onControllerTriggerEnter,onControllerTriggerStay,onControllerTriggerExit
11. 支持动态改变 MeshCollider 的 Mesh
12. 换用更稳定的 mesh simplify 工具
13. 新增 mesh cluster 的支持
14. 新增 mesh quantize 的支持
15. 新增 mesh encode/decode 和 inflate/deflate 的支持
a. 面板选项
b. 大场景加载/渲染的性能提升
1. 偏好设置添加 Java Home 路径设置,用于解决 Android 构建时设备安装多个 JDK 的问题
2. Android 构建面板添加 Resizeable Activity 和 Max Aspect Ratio 选项
3. 抖音小游戏支持配置开发者工具启动模式并快捷启动
4. 微信小游戏平台默认开启 CLEANUP_IMAGE_CACHE,其他平台默认跟随项目设置
5. 材质、模型、Mesh 及骨骼动画的预览窗口添加了网格、天空盒以及 Scene Gizmo,同时支持控制预览视角
6. 新增 3D 工具可见性开关,关闭后将隐藏变换工具以外的 3D Gizmo
7. 属性检查器支持拖动调节属性名宽度
8. 属性检查器支持显示部分组件图标
9. 优化 Light 和 Camera 组件的 visiblity 在属性检查器中的显示效果
10. 减少内置引擎的 boost 库的文件数量,缩减编辑器包体
11. 其他细节体验优化
1. 修复自定义管线特定条件下渲染错误问题
2. 修复动画图变体未对嵌套的状态机生效的问题
3. forceLOD 调用后,改变节点的 active,接口不能正常工作
4. 优化 android 端 editText 输入框的交互
5. 修复 editbox 旋转后, 在 web-mobile 上可能出现的错误显示效果
6. 修复 Mac 切换窗口和全屏时 editbox 的输入表现错误
7. 修复 Android 多点触摸崩溃问题
8. 修复音效播放过程锁屏,解锁屏后不能恢复播放
9. 修复 iOS Safari web audio 播放超过 5 分钟后会有杂音的问题
10. 修复 audioManager 存放的 player 可能被 destroy 的问题
11. 优化同一帧调用同一个音频对象的多个音频操作可能存在卡顿的问题
12. 淘宝小游戏 iOS 平台:修复多次调用音频 play 进度条会一直卡在 0 的问题
13. 小米平台:修复音频播放时,拖动进度条,进度条会从 0 的位置再跳转的问题
14. 修复小游戏批平台,播放的音频个数超过 10 个后,继续调用其他音频的播放接口可能导致内存泄漏问题
15. 修复 videoplayer 暂停&结束后通过 isPlaying 接口获取的状态错误
16. 修复切换 video 源时可能出现的异常表现
17. 修复 swig 绑定重载构造函数时绑定代码丢失命名空间的问题
18. 修复 swig 绑定多级(>= 2) 内部类导致的异常问题
19. 修复在 .i 中重命名内部类导致胶水代码编译失败的问题
20. 修复原生平台上 scene._instantiate 实现不对的问题
21. 修复非安卓平台,反复重启 `game.restart()` 导致的崩溃或者卡死问题
22. 修复编辑器中 scale 不为 1 时 widget 带来的场景错乱问题
23. 修复 Button 组件在启动时会使用 Sprite 组件的 spriteFrame 覆盖本身 normalSprite 的 bug,将按 button 组件序列化的数据来填充 spriteFrame 状态。
24. 修复 ScrollView 使用鼠标滚动后,scrolling 属性始终为 true 的 bug
25. 修复带 carmera 的场景,点击鼠标会出现偏移的 bug
26. 修复 OpenHarmony 收到 resize 之后,分辨率出现不正确的 bug
27. 修复 OpenHarmony 取消勾选 WebSocket 之后出现链接的问题
28. 修复自定义管线中 Fog AO 半透明等混用的渲染错误(需要开启 CC_USE_FLOAT_OUTPUT 宏)
29. 修复反射探针烘焙和移动更新的问题,并优化原生引擎调用性能
30. 修复切换雾效类型天空盒不受影响的问题
31. 修复创建的默认 SphereCollider 的 Center 不为 0 的问题
32. 角色控制器调用 move 方法时会马上将其物理世界位置同步到场景节点
33. 修复使用 Xcode 15 编译 iOS 项目导致的程序启动崩溃问题
1. 修复碎图和图集同时配置纹理压缩时导致的运行时报错
2. 修复自动图集在压缩纹理后仍包含原图的问题
3. 修复图集被多个 Bundle 引用并且 bundle 优先级一致时纹理压缩图片拷贝异常的问题
4. 修复 Bundle config 重定向配置存在重复数据的问题
5. 修复空 Bundle 不输出 config.json 的问题
6. 修复 Bundle 中的文本资源包含 uuid 时构建依赖信息错误的问题
7. 修复 Bundle 构建面板的输出目录无法选择的问题
8. 修复只构建 Bundle 后构建面板无法新建构建任务的问题
9. 修复构建任务名称修改后切换构建模式,任务名称可能出错的问题
10. 修复插件脚本里实现组件后,预览和构建时报错类重复注册的问题
11. 修复勾选初始场景分包后,脚本、资源可能输出位置错误的问题
12. 修复预制件的部分操作撤销后的数据异常
13. 修复点击事件引用了预制件子节点后无法正常保存的问题
14. 修复拖拽预制件节点覆盖原预制件文件时嵌套预制件的修改丢失问题
15. 修复编辑预制件时的其他若干问题
16. 修复编辑器预览无法调试 localStorage 的问题
17. 修复编辑器预览设置 FPS 无效的问题
18. 修复编辑地形时打开预制件再回到场景时地形数据异常的问题
19. 修复编辑地形时部分操作撤销重做后表现不符合预期的问题
20. 修复往预制件实例的 mounted 嵌套预制件上添加节点,没有显示 + 号的问题
21. 修复 Mac 上通过程序管理器(program)配置默认浏览器为 Safari 可能会出错的问题
22. 修复艺术字资源可能因为导入时序缺失数据的问题
23. 修复动画编辑器事件帧、关键帧,曲线编辑等若干问题
24. 修复粒子曲线面板编辑时的若干交互问题
25. 修复编辑 FBX 资源时事件帧图标不能拖动和部分情况下位置不正确的问题
26. 修复 Widget 组件 undo 不准确的问题
1. 将 UIMeshRenderer 组件标记为不推荐使用,用户可使用 RenderTexture 来实现类似功能,详见 Cocos Creator 3.8 手册 - UIMeshRenderer 组件参考
2. 用户自定义的 Effect 可能需要仿照 internal 资源中的 effects/legacy/standard.effect 添加平面阴影相关 pass,否则平面阴影无法动态合批,详见 #14958
1. iOS web-mobile EditBox 显示在界面顶部时,第一次获取到焦点时可能会被输入法移出屏幕外,若遇到此问题可参考该 PR 进行修复
Creator 3.x 依赖 3D 游戏呼声最高的需求应该就是后处理了,之前一直都推荐开发者使用 RenderTexture 来制作却没有提供内置能力,主要原因在于支撑后处理的自定义渲染管线一直没有完成。而经过 3.7 赛博朋克 Demo 对自定义渲染管线的验证,在 3.8 中我们终于可以将抗锯齿、超分辨率、环境光遮挡、炫光等后处理特效交付给开发者。这些后处理流程目前都集成在了 CustomPipeline 中,一方面作为 RenderGraph 的示例,另一方面也可以作为我们标准 Forward 管线的试验场。
1. 抗锯齿:提供了消耗非常低的 FXAA 和效果较好基于时序的 TAA
2. 超分辨率 FSR:有助于用较低的损耗提升渲染分辨率,达到用较低的损耗达到更高的画质,或者减轻项目的性能压力
3. Bloom:增强高光位置的泛光表现,提升画面质感
4. HBAO:高质量环境光遮蔽,可以大幅度提升场景的立体感和质感
5. 自定义 Color Grading:这是非常简单但立竿见影的一种后期处理方法,可以用来增强对比度、饱和度,调节颜色、白平衡等画面属性。支持任意 Nx1 的长条图 和 8x8 的方块图,系统自动适配
从 3.8 开始,我们推荐需要使用后处理的项目切换到 Custom 自定义管线,可以参考文档进行管线的开启。后处理流程的开启方法参考后处理管线文档,目前可以先参考管线测试项目来了解如何使用。
1. 皮肤材质:在内置 effect 中更新简单皮肤材质和高级皮肤材质,案例可以参考 Cocos Example Materials 中的 Character 场景
2. 眼球材质:在内置 effect 中更新高级眼球材质,案例可以参考 Cocos Example Materials 中的 Character 场景
3. 叶片材质:在内置 effect 中更新高级叶片材质
4. 支持 Zeno & Houdini 导出的预烘焙模拟动画:这项功能可以让开发者在游戏或内容中集成离线计算的高质量物理模拟动画,包括刚体、流体、布料等,使得游戏转场或一些固定场景的表现力大幅度提升,尤其是对车机等应用内 3D 模拟非常有帮助。
a. Zeno
b. Houdini
5. Reflection Probes 支持 Blend,之前的版本中,动态物体在不同 probe 区域之间的移动会引起跳变,在 3.8 中,不仅支持 Probe 之间的效果混合,也支持 Probe 和天空盒之间的混合,在不同烘焙区域以及室内到室外的场景中,都可以得到很自然的过度效果。
我们为 Marionette 动画系统引入了一个新的特性:姿态图。这个新功能将为程序化动画以及双骨骼 IK 动画提供支持。利用姿态图,开发者可以通过节点系统以便捷的方式定义各种程序化动画和动作姿态,从而构建出更为复杂、细腻的场景交互。这也将大大减少用户在创建角色动画时所需的动画数量。举例来说,你可以定义角色在不同平面的脚部 IK,让角色爬上不同高度的地形,或在走路时注视某一方向。此外,姿态图还可以作为动画状态机的补充,可在状态机中进行嵌套使用。详见:《Cocos Creator 3.8 手册 - 程序式动画》
在制作复杂的程序化生成动画时,你可能需要为动画添加一些变量曲线,以进行逻辑判断或作为变量使用。为了满足这些需求,我们在动画编辑器中新增了辅助曲线功能。你现在可以为任何一条骨骼动画添加额外的曲线,并且添加后,这些曲线可以在姿态图和状态机中进行读取和混合。这个新功能将提供更大的自由度,帮助你更好地控制和定制动画。
此外 Marionette 动画系统还有这些升级:
1. 新增角色控制器组件:对于角色扮演和动作类等游戏,可以极大降低角色的开发成本,内置能够和环境自然交互的角色控制能力。
2. 约束:新增可配置约束组件,可以用于定制各种复杂的物理部件连接方式,比如汽车的轮轴、各种关节等。
3. 约束:Hinge 约束新增转轴驱动和转动范围限制
4. 新增 sweep 碰撞检测
自定义管线能力在 3.8 正式开放给开发者,它在 3.8 中还支持了 Custom 管线及其后处理能力,具体定制管线的使用方法可以参考自定义管线的详细文档,也可以参考我们的使用范例。RenderGraph 在 3.8 中的能力升级具体如下:
支持单独构建指定 Bundle,便于用户单独更新资源,功能入口位于选中的 Bundle 文件夹设置中。
支持在 Bundle 文件夹设置中添加过滤选项,让用户可以更灵活地筛选 Bundle 内要参与实际构建的资源。
优化 Bundle 配置的平台设置方式,支持预设配置,便于用户精确管理不同平台的导出选项。
注意:项目升级到 3.8 后,Cocos Creator 会自动将 Bundle 配置迁移到项目设置内,请在升级后记得向项目源码库(如 Git)提交项目的 settings 文件夹及 bundle 文件夹对应的 meta 文件改动,以免配置冲突。
构建时支持只构建 Bundle。
构建时支持筛选参与构建的 Bundle,默认全部导出。
我们在 3.7 支持导入 LOD 模型的基础上,支持了在模型中显示 LOD 信息及新的 LOD 自动生成功能,以便用户更轻松简单地使用 LOD。
用户可以在 3.8 直接导入任何不包含 LOD 的模型,并模型导入选项中设置不同的 LOD 层级,Cocos Creator 会自动进行减面,并且在场景中创建模型实例时自动添加 LOD Group 组件。
3.8.0 开始,引擎部分模块开始使用 wasm 实现,目前包括 spine,渲染 webgpu 后端,物理引擎的 bullet 和 physx 后端。在使用时需要注意以下情况:
注意
除了微信平台,其他小游戏平台如果开启了引擎 asm.js 分包,需要勾选 spine 模块,我们将在 3.8.1 里处理这个问题,参见 修复 PR
Cocos 引擎团队和 OpenHarmony 团队紧密合作两年多以来,一起推动了 OpenHarmony 系统在游戏领域的支撑能力不断提升,在社区版本之后,v3.8 我们正式集成了 OpenHarmony 4.0 版本的支持。并且针对引擎 TS 脚本的性能优化,还开放了 AOT 优化选项,优化 OpenHarmony 运行时性能,参考 AOT 编译指导。
在今年 Google IO 大会上 Google Play Games on PC 和大屏体验是受到重点关注的安卓平台更新,Cocos 也被 Google 官方推荐为适配 Google Play Games on PC 平台的引擎和大屏体验的推荐游戏引擎。
Cocos 也已经有很多知名游戏登录了该平台,从 v3.8 开始,你只需要在构建 Android 时勾选 x86 架构,以及 InputSDK 选项,即可满足 Google Play Games on PC 的平台要求。该平台是 Google Play 尝试扩展桌面平台的重要机会,同不断出现的折叠屏、平板一样,标志着大屏幕适配对移动游戏来说越来越关键,也可以帮助开发者获取更多用户。
其他平台支持方面的更新包括:
CLEANUP_IMAGE_CACHE
宏偏好设置的程序管理器支持配置默认图片编辑器
@menu
修饰器支持使用菜单路径,示例:
`EDITOR_NOT_IN_PREVIEW`
宏,用于简化各类插件和调试代码对编辑器运行环境的判断,为 true
则表示代码在编辑器中执行且场景不在预览状态。示例:
详见 引擎完整提交列表
resetInEditor
` 在编辑器中没有被调用的问题
Cocos Creator 3.7.0 是我们在不断挑战和提升自我路径上的又一力作。为了应对爆发的元宇宙需求以及支持更流畅更真实的 3D 世界,我们在渲染效果、GI 全局光照、LOD、动画系统、物理系统、易用性以及性能方面进行了众多提升。由于 3.7 版本更新众多,包含了大量的体验优化和缺陷修复,在此只列出重要更新,其余更新可以参考我们 GitHub 上的更新列表。
GI 全局光照是提升 3D 渲染真实感的关键基础设施。在此之前, Lightmap 可以用来烘焙静态物体的间接光照,但是对场景中的动态物体则无能为力,如角色和场景中移动的物体,这样容易造成视觉效果不统一的问题。光照探针可以提前通过烘焙记录空间中各点的光照信息,然后在物体运动时根据记录在探针中的结果模拟间接光照,对场景中的动态物体也提供高质量的全局光照支持。同时,光照探针还具备良好的运行时的处理性能,预计算也相当快。更多介绍详见《光照探针》。
应用光照探针的角色:
使用光照探针实例化绘制的球体:
光照探针编辑:
为了进一步提升渲染效果以及提升 3D 项目的沉浸感,我们加入了反射探针支持。它可以在场景中带有反射性质的材质上,渲染出真实的对周边环境的反射,此功能对画面的真实感提升是非常巨大的。它通过空间内某一点对附近区域的环境进行烘焙,在把周围环境信息储存后,应用在范围内有反射材质的物体上以实现真实环境反射的一种手段。在 3.7中,我们加入了具有两种模式的反射探针:Cube 烘焙模式用来烘焙一定空间范围内的立体环境。Planar 平面实时反射模式主要用来模拟平面上的反射,如光滑地面、水面等。更多介绍详见《反射探针》。
LOD(Level of Details)是常用的一种大型场景优化手段,核心在于对远处或者不重要的物体,降低其显示细节,以达到提升渲染效率的目的。3.7 加入了模型 LOD 支持,可根据物体显示在屏幕上的尺寸比例,动态切换合适的模型精度,节省渲染资源。更多介绍详见《多层次细节》。
CSM 层级阴影最明显的一个效果问题就是在不同层级之间的阴影精度不同,导致在接缝处可能产生比较违和的割裂感,尤其是随着相机的移动,不同层级的拼接位置也在不断变化,导致很容易被发现的接缝移动现象。在 3.7 中,我们新增了 CSM 层过渡的支持,混合不同层级的渲染效果,使两个 CSM 阴影层级间过渡更加平滑。
基于 RenderGraph 的 自定义管线 中新增了 Bloom 后处理特效和 FXAA,将作为后处理定制的标准方案供大家参考。与旧的渲染管线难以扩展与配置不同,新的基于 RenderGraph 的自定义管线的可插拔结构使扩展管线的功能更加容易,同时对于 Forward/Deferred 渲染的输出结果进行后处理特效(如:Bloom 等)的新增也会更加便捷。
3.7 的场景编辑器可以运行在以 C++ 为基础的 Windows/Mac 原生 Cocos 引擎之上,而不是原先以 JS/WebGL 为基础 HTML5 引擎。这意味着编辑器有潜力充分发挥 Cocos 引擎在原生端的性能优势,为各类元宇宙场景、3D 开放世界做好准备。此功能目前处于实验性状态,需在偏好设置 - 实验室开启 Use native engine for scene editor 开启试用。开启后,编辑器支持打开一个与 Scene 并存的独立 Game 面板,用于多窗口项目预览以及调试。
3.7 升级了扩展管理器,采用了全新的 UI 并且支持一键安装和更新扩展插件,还支持记录和安装项目所依赖的扩展,让项目的分发更加方便。
为了实现更好的版本管理,提高扩展稳定性,新版扩展管理器也调整了一些管理机制:
插屏设置用于在游戏启动时对 Cocos 或您的品牌进行露出,同时加速首屏启动时间,给用户更好的体验。在 3.7 我们开始着手对此前维护力度不足的插屏设置功能进行翻新,在收集了不少用户反馈,结合 Cocos 自身的业务需要后,插屏设置功能得到了初步重构。目前做出的主要调整如下:
项目设置:
构建面板:
3.7 支持在 Mesh 的属性检查器中显示各个通道的 UV,方便用户快速确认导入模型的 UV 或者 Lightmap 的 UV 是否正确,是否在(0,1)的区间内,是否有重叠等信息。
支持动画图变体。动画图变体是一种新的动画资产类型,允许用户在一个动画图的基础上创建变体,使其有可能在不同的角色上重复使用同一个动画图:
动画状态机混合预览面板更新,支持用户更直观方便的在动画图中预览混合的结果
调整 CurveRange 的构造逻辑,延迟构造底层曲线数据,同时优化了内部装饰器,加快粒子系统初始化速度。在不同复杂度的粒子下均有可观的性能提升。
和 3.6.2 粒子加载速度对比(加载时间越小,加载速度越快,粒子使用的功能模块越多,提升越明显):
除了粒子加载速度以外,其他不少模块也有了不同程度的性能优化,其中包括以下几个比较显著的方面:
注:图示中每个平台下都会不断增加负载进行性能测试数据采集,不同平台之间负载并不一致,统一在帧率上进行差异展示,所以数值越高越好
在 3.6.3 中,我们新增了淘宝小程序创意互动平台的支持,同时还完成了一系列关键性的缺陷修复,建议所有 3.6 用户升级。
优化原生 Spine/DragonBones 性能 #12788。我们在 3.6.2 重点优化了原生上 Spine 的运行性能。在 iOS 较低端设备上最大达到了 40% 以上的性能提升。在 Android 平台也有较为可观的性能提升。
[实验性功能] 我们在 Web-Desktop 平台新增了基于 wasm 的面向未来的渲染后端——WebGPU(Chromium 105)。未来会基于 WebGPU 后端逐步接入如 ComputeShader 等功能特性,对 Web 平台的渲染能力提升具有重要作用。WebGPU 相关介绍可以参考 https://www.w3.org/TR/webgpu/
3.6.0 发布后,我们收到了不少开发者的反馈,非常感谢大家一如既往的支持。3.6.1 对这些问题集中进行了修复,提升了用户体验,也对一部分性能进行了优化,建议所有 3.x 用户升级。
除此之外,Cocos Creator 的官方 XR 内容开发插件 Cocos CreatorXR 也已适配 3.6.1。它在底层通过支持 OpenXR 标准协议来抹平不同 XR 设备之间的差异,可以一站式对创作内容进行开发并发布到不同的 XR 设备中而无需去适配不同设备的 I/O 项;中层封装了一系列不同功能的 XR 中间件来提供 XR 内容创作支持,并支持用户自定义扩展组件内容;上层基于 Cocos Creator 面板扩展出多种形式的 XR 功能菜单和组件样式,为用户提供更为便利的内容创作界面。开发者可通过 Dashboard 新建 3.6.1 项目,选择对应的模板/案例来自动安装 Cocos CreatorXR 插件,详见 Cocos CreatorXR 介绍。
下面是这次更新的主要内容:
在 Cocos 团队内部,我们一直将 3.6 作为 3.0 的合并版本之后最重要的里程碑版本来看待,一方面这个版本的迭代周期是迄今为止最长的一个版本,另一方面是因为这个版本在多个方面的大幅进化。下面就是 3.6 版本的更新说明,由于更新数量过多(engine:1110 PRs,editor:678 PRs),在此只列出相对重要的更新。
Surface Shader 使用统一渲染流程和结构,可以让用户以简洁的代码创建表面材质信息,指定用于组合的光照和着色模型。相比旧版(Legacy Shader)的优点是更易书写和维护,有更好的版本兼容性,也更不容易产生渲染错误。并且可以从统一流程中获取很多公共特性,如统一的全场景光照和 Debug View 调试功能等。
Creator 也更易扩展出多种常见的复杂材质提供给用户,未来还会支持 Shader Graph 自动生成 Effect 代码,可以极大提高 Shader 开发者的效率。
普通的阴影贴图有一个致命弱点:当投影面积较大时,对阴影贴图分辨率的需求会超出硬件承载极限。如果不提高分辨率会导致阴影锯齿严重、形状缺失、不清晰,但减小投影面积又会导致阴影可视距离非常短。在阴影可视距离和阴影效果上的平衡调整是一个非常令人头痛的问题。
CSM将视锥按远近顺序划分为多块,近处投影范围更小而远处投影范围更大,相当于一个自适应的阴影贴图,从而提高数倍贴图利用率。它可以在较大的阴影可视距离上具备精细的阴影效果,再也不用把精力花费在参数调校上了。
多种自定义的显示模式,帮助用户更快定位各种材质、光照、阴影显示问题,以及方便用户查看更清晰的特定场景信息,帮助用户做出优化决定。
由于精确光源的高光都是使用 GGX 的 BRDF 分布,对于环境光源而言也必须使用同样的 BRDF 做球面卷积才可以让两种光源的光照效果对应。此外不同粗糙度的反射光照是存储在对应的 Mip 中,相比于自动生成的 Mip 数据,卷积计算可以修复以下问题:
如图所示:
自动 Mipmaps
GGX 卷积
GGX | 平行光 | Mipmaps
通过 Surface Shader 带来的好处,我们可以充分扩展 PBR 光照模型。在 3.6 已经完整支持了在精确光源和环境光源下,各向同性和各向异性的材质与光照模型。可以对接 Substaince PBR 材质库,制作拉丝纹路的金属、头发、丝绸等等。
V3.6 启用了全新的编辑器 UI,本次改版围绕「更协调」的视觉系统、「更科学」的视觉反馈、「更沉浸」的交互感受,对 UI 和交互进行了一次全方位的梳理。我们希望通过交互来改善视觉感受,通过视觉来影响交互体验,并从这两个层面进一步提高用户体验。未来我们将继续基于 Cocos 的设计目标、设计系统、设计原则进行规范化设计,持续更新迭代,优化核心交互和工作流程。
开发效率是 Cocos Creator 非常重视的一项核心优势,在 v3.6 中这项优势得到了进一步提升。除了网页预览和模拟器预览,现在开发者还可以使用「编辑器预览」来运行游戏。编辑器预览将在场景管理器中直接执行游戏逻辑,并且可以实时调试游戏场景。一方面带来更无缝的预览体验,另一方面也补足了在调试方面的短板。
此功能目前处于实验性阶段,欢迎大家在使用过程中给我们更多反馈。未来我们也将持续关注研发效率,在脚本编译、项目调试、构建发布环节持续提升用户的幸福感。
动画编辑器新增了嵌入播放器功能,可以在任意动画中嵌入其他粒子和动画,并用类似视频剪辑软件轨道的方式进行编排,自由调整时长和播放位置。
在完成编辑之后,嵌入播放器的内容会伴随此条动画剪辑(AnimationClip)一起播放,在 Animation 组件和动画图系统中都能支持。此外,动画嵌入播放器支持添加到 FBX 导入的动画上,可以实现更灵活的特效控制,解决了导入动画难以二次编辑的问题。
目前在 3.6 中提供了粒子和动画两种播放器,可以在实验室设置中启用。
为了更好地服务开发者出海,v3.6 提供了内置的多语言工具 Localization Editor(L10n),目前支持文本翻译和资源替换。其定位是与 Creator 深度集成,通过高自动化提高翻译的效率,并且以无代码的方式降低使用门槛,达到任何人都可以开箱即用的目的。
包含的核心功能为:
Localization Editor 目前处于实验性阶段,未来将提供更丰富的游戏本地化能力,欢迎大家提供反馈。
表面吸附 Surface Snapping(按住 ctrl/cmd + shift)
顶点吸附 Vertex Snapping(按住 v)
支持框选功能,可以批量选中多个物体
从去年 3.3 版本发布之后,其中最重要的原生化团队就开始了针对 3.6 版本目标的开发工作。这么长的周期其实往往是一些底层根基性重构所必需的,而商业引擎服务于全行业的特殊性决定了它既要紧跟硬件的发展不断挑战最好的性能、最优秀的画面表现力,还要在生产端不断提升生产效率,保持对项目的兼容性和对不同硬件环境的伸缩性适配。这些挑战意味着引擎需要对底层框架进行持续的迭代和重构,有时候是破坏性的,比如从 2D 引擎进化为 3D 引擎,而大多数时候这种迭代是延续性的,比如我们在 3.6 的原生化进展。尽管花费了我们团队一年的时间,进行了多个阶段和多个模块的重构,原生层代码增加了两倍多,但我们仍然在大幅度优化性能的基础上做到了对老项目的兼容。这样的底层重构一方面带来了可见的性能和表现力提升,另一方面,我们往往是为了未来的进一步迭代做好准备,扫清障碍。从 3.6 这个版本的缩影大家可以看到引擎开发永恒的命题:持续不断得自我变革,以适应硬件的更新和用户需求的变化。
3.6 还有一个重要的具有里程碑意义的标志,那就是在 2D 渲染性能上和 2.x 达到了同样的水准,代表着 2.x 用户如果有 3D 需求或持续迭代需求可以放心升级到 3.x。在底层原生化的基础之上,我们进一步将 2D 渲染数据结构、2D 合批管理器和渲染流程都原生化了,让 2D 的合批和提交渲染的流程都在原生进行,以达到类似 2.x 的性能表现。当然,现阶段还有部分遗留的工作没有完全完成,比如 Spine 的合批支持,但这也代表着在原生化的基础之上,3.x 的 2D 渲染性能还将有更高的天花板等待我们去突破。
原生插件可以链接开发者现有的 C/C++ 代码库,绑定接口到JS层并在不同项目间重复使用。
通过利用 CMake 的能力,插件能灵活地集成源文件、静态库或动态库。C/C++ 接口可以直接使用传统的自动/手动绑定机制,也可以使用3.6 新增的 sebind 高阶接口导出到脚本层。 开发完成后,原生插件可以 zip 包的形式单独分发, 也可以打包到 编辑器插件 一并发布。
3.6 在材质导入上实现了对 Diffuse-Specular 材质模型(包括 Phong 和 SpecularGlossiness PBR)的支持,可将材质参数智能转换到标准 Metallic Roughness PBR 模型中。这样就可以在不更改光照模型的情况下获得接近原 DCC 软件中的材质表现。
Blender |未使用材质转换 |使用材质转换
使用 Phong 材质的 FBX 智能材质导入
之前的版本由于 uniform 的限制,在 CPU 计算的骨骼动画中,当骨骼数量超过一定值后,无法一次性通过 uniform 存储所有骨骼数据,所以我们在模型导入时有可能拆分模型和骨骼。所以经常收到反馈说自己的一个角色模型会占用多个 DrawCall,主要原因就是这里被自动拆分了。更重要的是由于拆分不能在运行时进行,只能在离线进行,所以我们的拆分标准使用的是最低端的运行时设备和驱动(iPhone 6 WebGL),对骨骼数量限制很大。
所以,Cocos Creator 3.6 对这一问题做了策略优化:
使用纹理传递骨骼动画数据的方式需要在顶点着色器中访问纹理,这一特性最低支持为 OpenGL ES 3.0, WebGL 2.0。但依靠 GL 扩展,在仅支持 OpenGL ES 2.0 和 WebGL 1.0 设备上,几乎已达到 100% 的覆盖率,所以无需担心兼容问题。
目前保留此选项应该只是为了保持旧项目的兼容性,在适当的时候会考虑移除。
V3.5.1 在不影响原有功能稳定性的前提下加入了两项影响深远的实验性功能。一是智能导入 FBX 中的 DCC 默认材质,还原美术在各类 DCC 工具中使用的材质和外观;二是内置了一系列 Surface Shader 材质资源,这将成为未来支撑材质定制的基石。除此之外,我们还完成了一系列关键性的问题修复,体验优化和大量的文档优化,建议所有 3.x 用户升级。
FBX 智能材质导入是模型导入器中辅助转换材质的一个功能,它可以将各种 DCC 工具导出到模型中的部分标准材质直接映射到 Cocos Creator 的内置材质中,尽量还原美术在 DCC 工具中看到的材质效果。我们可以对比一下 Maya 中的 Standard Surface 材质导入 Cocos Creator 后的效果:
Maya 工具内效果
开启 FBX 智能材质导入后 Cocos Creator 内效果
此功能已支持主流 DCC 工具:3ds Max、Blender、Maya、C4D 中的部分标准材质。
具体使用可以参考使用文档。同时我们也将在 3.6 中持续优化模型和材质导入体验,敬请期待。
从 3.0 版本以来,不少开发者都经历过升级过程中材质无法正常使用,需要迁移的问题,为此我们也准备过不少材质系统专属的升级文档,然而手动升级过程的体验确实不尽如人意。此问题的根本原因是引擎的光照模型和表面材质的计算一直在调整,这会影响所有相关的材质 effect 代码,也会影响到用户复用这些材质时的兼容性。
为了提升材质系统的兼容性,我们新增了一系列 Surface Shader 资源,抽象了引擎内的光照模型和表面材质计算,未来开发者可以使用这些抽象好的头文件和内置函数极大简化自己书写的 effect 资源。同时由于多了一些封装,跨版本间的兼容性也会更有保障。
具体 Surface Shader 的使用请参考使用文档。
从 3.5 开始我们设计了新版 API 文档页面,受到了开发者比较普遍的好评和一些反馈。在 3.5.1 我们继续做了大量的内容检查,通过近 40 个 PR 进一步补全了之前遗留的一些 API 文档,修复了部分文档错误。并且之后文档也会得到持续性的优化,希望给开发者带来越来越好的使用体验。
在 v3.4 版本中我们带来了支持复杂角色动画的动画系统 Marionette,支持动画状态机和多维混合等功能。在 v3.5 中,我们继续向其中添加了不可或缺的关键能力:层级和遮罩。这可以让开发者轻松做出更复杂的动作系统,比如下面展示的上下半身分离。
对于 2D 用户和 2D 项目开发,我们做了一些编辑器的体验增强,这也是为了帮助有升级需求的 2.x 开发者更好得升级上来,获得与 2.x 类似的体验。从 3.0 发布以来,我们一直在通过各项性能和体验优化积极推动开发者的升级,并且还会持续优化下去。在 v3.5 中,你将可以看到下面的一些体验优化:
Cocos 和 Google 在 Android 移动平台上一直以来都有非常紧密的合作,Android 也是我们最重要的平台之一。我们很高兴宣布在 v3.5 引擎中加入了Frame Pacing Library。它是 Android Game Development Kit (AGDK) 的一部分,主要用于帮助游戏平滑和稳定帧率,对 OpenGL 或 Vulkan 后端都适用。你可以在 Android 构建面板中启用 Swappy 来开启此功能。
我们在此版本中引入了一个新的简易几何渲染的 API,这些 API 是为了绕过组件层,直接在屏幕上渲染一些用于调试的标记几何体。目前已支持线条、盒子、球体、多边形等几何体,渲染模式支持线框模式、填充模式,一部分几何体也可以动态开启光照和深度测试。所有几何体的坐标系在世界空间,并且支持 transform。
更详细的几何体信息请参考下面的表格
在过去几个版本中,我们一直在修正和提升渲染表现,同时,我们也在关注美术侧的 DCC 内容生产工作流。在 v3.5 中会有一部分材质体验的优化交付给大家:
同时敬请期待我们后续版本中更显著的美术体验优化。
地形编辑器在新版本中提供了新的抹平和高度画刷,可以让开发者们更方便得编辑平面地貌。
从 v3.5 开始,我们将所有平台层相关的底层适配代码集合到了 PAL 模块中,包括系统信息、窗口适配、音频、输入系统等。系统层的事件派发行为也被统一了。这是一个底层重构,用户层 API 不会收到影响,但这次重构会让 Cocos Creator 未来有能力更轻松得适配新的平台和环境。
此版本中比较显著的性能优化包含以下几点:
对于之前的 API 文档体验社区用户多有吐槽,也让引擎的新人上手门槛和学习曲线抖升。为了解决这个至关重要的问题,我们重新设计了 API 文档的组织方式和界面设计,大家可以访问我们 新的 API 文档链接 来体验。当然,这只是一个开始,我们也希望大家继续反馈建议帮助我们持续改善文档的体验。
为了更好服务开源社区,我们将原生引擎仓库合并到了 engine 仓库中,并且迁移到 cocos/cocos-engine,从现在开始,我们将通过公开 issues 和 公开 projects 向开源社区同步我们的后续计划。如果你正在使用自定义引擎,那么这个修改对你的影响会比较大,从 v3.5 开始,自定义引擎只需要克隆 engine 仓库即可。所有以前在 TS 引擎仓库的修改可以直接 rebase 到 v3.5 分支,但是以前在 engine-native 仓库的修改需要手动应用到 engine 仓库的 native 目录下。详细信息可以参考自定义引擎文档。
在 v3.4.1 中我们完善了 2D 渲染组件的数据提交和合批策略,由于这些是触及基础的改动,所以引发了一些 Tiledmap,Graphics 的问题。并且 Spine 和 Dragonbones 在 Android 浏览器上性能没有得到提升,这些问题都在 v3.4.2 版本中得到了集中的解决。
另外,在社区的积极测试和反馈下,我们也修复了一些编辑器相关的体验问题,比如脚本重新编译时导致的内存泄露、大项目构建 iOS 平台时资源拷贝的卡顿问题。需要再次感谢社区开发者们。
请所有使用 v3.4 的用户升级到 v3.4.2,将得到更优秀的稳定性和开发体验。
在 v3.4.1 中,我们重点修复了 v3.4.0 发布后用户反馈的问题,提升了稳定性。同时为了帮助开发者 v2.x 开发者升级到 v3,我们调整了 2D 渲染组件的合批策略,大幅度提升了 2D 渲染的整体性能表现,相比 v3.3 提升幅度可达到 20% - 70% 左右。性能测试结果我们也对比了 v2.x 版本,参考下面的对比图,绝大部分测试的表现都已经和 2.x 逼近或持平,小部分超过。
图例讲解:所有测试都是在中低端机完成,每张图标的四个区间依次为 Android Web、iOS Web、Android WeChat、iOS WeChat。另外原生平台上的整体性能提升在 3.6 的原生化版本中也会得到大幅度的优化,目前原生化的独立分支已经合并到 3.6.0 的开发分支中了。
另外,为了未来允许在微信小游戏上开启 WebGL 2.0,我们也修改了微信平台的构建选项,增加了实验性质选项:支持跟随项目模块配置启用 WebGL 2.0,默认情况下关闭缩减包体。如果选择跟随项目模块配置,并且项目模块中勾选了 WebGL 2.0 渲染后端,那么未来等微信环境支持 WebGL 2.0 即可成功启用。
3.4.1 经过了个把月的论坛公测,期间有很多热心开发者(如 @ankoGo 和 @ankye)和我们保持了高频度的线上交流,这些宝贵的反馈建议帮助我们提高了版本的成熟度,非常感谢大家!
v3.4 是自 2021 年初 3.0 发布以来快速迭代后的一个年度收官版本,要的就是一个字:稳!这个版本研发和测试周期都比之前版本更长,也在社区进行了长达一个月的公开测试,在此也要感谢所有参与测试的开发者们!
在 v3.4 中不仅增加了像 Marionette 动画系统这样的重要功能,而且在产品体验、稳定性、性能优化、基础架构层面都做了大量的工作。除此之外,我们还集中修复了一批社区反馈比较多的问题,解决了一些以前遗留的疑难杂症。相信引擎团队倾注心血奉献给大家的 v3.4 版本会成为一个里程碑版本,更好得帮助开发者开发出优秀的游戏作品!
动画系统是 3.4 中最重要的新功能,我们取名为 Marionette,意思是提线木偶,不仅形象得描述了它的作用,而且使用提线木偶的木偶剧还是源自于中国的传统艺术形式,从唐代就出现,千年来流传至今仍然是闽南地区重要的戏曲形式。借助 Marionette,我们也希望开发者能够完美控制游戏角色,增强游戏通过角色叙事的能力。
在 3.4 版本中,Marionette 已经支持动画系统的基础功能,包含状态机、子状态机、状态机组件、触发器变量、Blend Tree 等。当然,更完善的动画系统能力还在迭代中,比如动画层级和遮罩、人形骨骼和 IK 等能力已经在继续开发之中。为了帮助大家学习 Marionette 动画系统,我们也准备了详细的文档、[Demo]和视频教程。
在编辑器体验方面,我们做了大量的体验细节优化和疑难杂症的处理。功能和体验优化包括:
v3.0 以来,Creator 一直在不断积累和打磨渲染能力,v3.4 中为了增强引擎的氛围感和画面效果,也带来了一系列重要的升级。尤其是光照模型的改进将使得引擎在光照表现层面更加精细。
手动设置环境光 vs 自动生成漫反射卷积图
关闭 HDR vs 开启 HDR
开启 Denoise vs 关闭 Denoise
在渲染管线方面,FrameGraph 是从 v3.1 开始引入的基础设施,经过几个版本的迭代,在 v3.4 我们正式将 Forward 和 Deferred 管线都对接了 FrameGraph,下面是一个简化的延迟管线 FrameGraph。
目前引擎的延迟管线总共包含 2 个计算 pass,7 个渲染 pass,虽然不算复杂,但已经能凸显 FrameGraph 的作用了。一方面简化了管线层的代码组织,降低了维护成本;另一方面也降低了开发者定制管线时的心智成本。基于 FrameGraph,华为 HMS CG Kit 团队在 v3.4 中继续在延迟管线中贡献了 Clustered Light Culling 用于优化动态光源计算性能,可在移动端支持同屏数百个动态光源(麒麟 990 芯片在 Sponza 场景运行 1000 盏动态光源可达到 40 fps)
另外,渲染管线中的 Subpass 也是基于 FrameGraph 来实现的,FrameGraph 的第二大优势就是延迟模式渲染(不同于延迟渲染管线),引擎可以先分析渲染流程,进行优化之后再执行完整渲染流程。目前移动端的 GPU 都是和 CPU 共享系统内存的,功耗的一大热点就是对于显存的读写。而 Subpass 优化就是充分利用 GPU 的 Tiled 缓存来降低显存读写功耗,当两个相邻渲染 Subpass 的写入资源和读取资源是同一份帧内资源,且不会被其他 pass 引用时,这个资源就只会通过 Tiled 缓存来读写,不会读写内存,可以明显降低功耗。这种对资源和渲染流程的自动推导正是 FrameGraph 带来的优势。
正如前文介绍,稳定性是 v3.4 版本的首要目标,所以我们也修复了一些困扰多时疑难杂症,将引擎的稳定性推上了一个新的高度。下面列举一些比较重要的修复
除了重要问题的修复以外,引擎的整体性能也得到了一定的提升,比如 2D 渲染和合批效率、物理性能、iOS Web 的 3D 场景性能、Android 部分场景。下面是 2D 渲染的部分测试结果:
由于调整了 web 平台屏幕适配的相关逻辑,我们改动了 Web 相关的 index.html 模板,这里包括预览模板、构建 web 平台模板。
我们已经在引擎内部做了相关的兼容处理 。
这个处理会确保 index.html 内部有一个固定的 div 结构
<div id="GameDiv">
<div id="Cocos3dGameContainer">
<canvas id="GameCanvas"></canvas>
</div>
</div>
如果缺失了 GameDiv / Cocos3dGameContainer,运行时会自动补齐
注意:这个 div 结构是引擎内部管理的私有结构,我们希望保持这个结构完整且不被定制。如果在这个结构内加入了其他 web 标签,可能会导致一些不确定的兼容问题。
新增的 IBL 采样降噪算法目前对 iOS Web 环境兼容有一些问题,由于发现较晚就没有在版本中合并了,会在后续的 3.4.1 中完成对 iOS Web 的支持
目前延迟管线仍然在高速迭代过程中,功能和平台兼容性还存在一些问题,暂不建议在项目中实战使用。目前已知的一些问题包括部分粒子混合模式无法渲染,暂不支持 builtin-toon 材质,部分低端平台和设备有兼容性问题,不支持聚光灯阴影,2D & 3D 相机混排问题等。
该版本主要功能是让引擎构建出来的原生应用可以支持 iOS 10+。为了支持 iOS 10+,引擎代码去除了对 C++17 的依赖。
引擎的有些功能依赖 C++17,有些功能对 Android API 有要求。为了方便开发者使用,编辑器的功能配置界面对于这些依赖进行了提示。比如,Android 使用延迟管线时,要求 Android API 21+,如果配置选择使用延迟管线,编辑器会提示需要的 Android API 版本:
当然了,我们还提供了完整的文档说明各个功能模块对于 Android API 和 C++ 版本的要求。详细信息可以参考该文档说明。
从 v3.1 开始,UITransform 组件的 priority 属性已弃用,若需要调整节点树的顺序请使用 setSiblingIndex 方法。在 v3.1 之前通过代码创建并依赖 priority 属性的节点可能会出现节点树表现和之前不一致的问题,请手动调整。
RenderTexture 在不同平台上会出现正反不一致的情况,为了解决这个问题,Creator 为 effect 新增了 SAMPLE_FROM_RT 宏,在使用 RenderTexture 时,需要将 SAMPLE_FROM_RT 宏设置为 true,各后端便会统一适配至正确的效果。
在 v3.1 中材质 Shader API 与 v3.0 有一定的差异,请参考 v3.0 材质升级指南 和 v3.1 材质升级指南 进行手动升级。
Cocos Creator 3.x 版本已经正式发布,2.4 版本将做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,
Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。
本次更新修复了一些已知问题,Cocos Creator 将持续优化性能,为开发者带来更好的使用体验!
以下是详细更新内容。
AnimationClip.createWithSpriteFrames
动态创建动画失败的问题inverseTransformPoint
函数错误backgroundImage
属性在 SpriteFrame 的修改时没有被同步的问题EventKeyboard.isPressed
属性的弃用
在 3.3 版本中,我们继续重点优化了微信小游戏平台的加载性能和运行性能。所有内部项目升级后微信云测启动性能分都可以达到 80 分以上。
同时,我们进一步提升了原生引擎的绑定层级,在渲染管线之上的渲染场景部分也完成了原生化,光源、模型等渲染对象的收集过程使用原生实现,进一步提升了原生平台的性能。
还有一个附带的好处,由于绑定层级的向上迁移,一些底层的数据共享机制被解除了,比如 Pass,SubModel 等。这使得 JS 引擎上层的实现尤其是 UI 和 2D 渲染合批相关的数据更加简化,部分高频操作的数据结构从 TypedArray 还原为直接量属性,使得 Web 和小游戏平台的性能也得到了可见的提升。
目前动画编辑器已在动画编辑器内置曲线编辑,与时间轴匹配,并支持任意关键帧之间的时间曲线编辑。
同时,在 3.3 中,我们也完成了动画数据的升级:引入了新的基础曲线类,重构了 AnimationClip,统一了动画和粒子系统使用的曲线数据。这些工作都是为了后续的完善动画系统而准备的,在后续版本我们将支持动画状态机编辑,Blend Tree 动画融合等高级功能。
除此之外,动画编辑器还完成了以下工作:
在 v3.3 中,我们加入了 windows x64 的构建选项,未来将逐步废除 win32 平台的构建。
在构建面板上,我们也做了诸多优化:
在之前的版本中,阴影的配置一直是一个比较让开发者困惑的功能,我们已经有完整的规划,正在逐步完善中,v3.3 会首先简化阴影的配置,优化软阴影算法,修复阴影的部分效果问题。配置上的调整包含:
v3.1
v3.3
继 v3.1 支持 PhysX 物理后端以来,多套物理引擎的选择和使用也成为了我们重点关注的使用体验,在 v3.3 中我们不仅加强了物理功能,还尽可能统一了不同物理后端的物理表现。
Cocos Creator 3.x 版本已经正式发布,2.4 版本将做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,
Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。
Cocos Creator v3.2.1 是我们将 v3.1.2 合并到 v3.2.1 而来,继续在大版本分支上给大家带来更稳定的体验,v3.2 用户和 v3.1.x 用户都可以无痛升级。
Cocos Creator 3.2 正式支持 HarmonyOS,成为全球首家支持 HarmonyOS 的游戏引擎。与此同时,Creator 与字节跳动平台进行了深度合作,以实验性功能支持在字节小游戏中使用平台提供的 PhysX 物理能力!欢迎所有开发者使用与体验!以下是详细更新内容。
在 3.2 版本,Creator 将支持一键将游戏打包为 HarmonyOS 应用,在配置 HarmonyOS SDK 与 NDK 路径后,可在构建面板选择 HarmonyOS 一键打包,详细操作请参考文档 发布 HarmonyOS 应用 。
字节跳动平台一直致力于为开发者提供最强大的性能和基础能力,抖音将在 16.3 之后版本为小游戏提供 PhysX 原生物理接口,而 Creator 与字节跳动平台进行了深度合作,在 3.2 中以实验性功能支持在字节小游戏中使用平台提供的 PhysX 物理能力,优化物理运算性能,对比 Bullet 有近 100% 的性能提升。
可以在构建面板选择是否开启多线程:
Cocos Creator 3.x 版本已经正式发布,2.4 版本将做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,
Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。
v3.1.2 是在 v3.1.1 上优化体验和性能的版本,这个版本的更新内容是不包含在 v3.2 中的,之后会将 v3.1.2 的更新合并到 v3.2.1 和 v3.3.0。
从 3.1.0 之后引擎组其实一直在并行推进三个版本线,v3.2.0, v3.1.x, v3.3.0,其中 v3.2 由于有配合鸿蒙 2.0 发布的需求,所以发布日早就定下了,为了稳定性其实主要就是在 v3.1.1 基础之上增加了鸿蒙平台支持。而在这之后,我们也在持续收到开发者关于 3.1 的问题反馈,为了更切实解决开发者遇到的痛点问题,并且降低开发者的升级门槛,我们决定继续在 v3.1.2 上优化体验和性能,交付给开发者。目前 Cocos Creator v3.x 作为一个新生的 3D 引擎,距离开发者的期待还有不小的距离,我们希望通过这种持续交付的实际行动来给开发者更强的信心。同时感谢所有 v3.x 先行者的支持,是你们的反馈让引擎日趋完善!
以上就是 v3.1.2 的重要更新,优化了大量开发者反馈的问题,有些问题由于反馈众多,就不单独列出论坛链接了,如果有修复各位遇到的问题,欢迎大家去关联到本帖并标记已解决。
另外,v3.3.0 版本已进入迭代后期,这个版本有一些非常重要的更新可以提前透露给大家:
除此之外还有各种 Demo 也在制作当中,比如已经上架 Store 的跑酷 Demo 56
API 文档页面也在进行重新设计,我们都非常重视,会尽力一步步完善 Cocos Creator v3.x 的 2D & 3D 开发体验!
Cocos Creator 3.1.1 主要修复了 v3.1 出现的稳定性问题,并优化了编辑器工作流。欢迎所有开发者使用与体验!升级前请做好相关文件备份哦!以下是详细更新内容。
Cocos Creator 3.x 版本已经正式发布,2.4 版本将做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,v2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 v2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,
Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版本项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。
3.0 版本的推出标志着 Creator 迈向了一个全新的征程,而 Creator 3.1 就是征途上的第一块基石,此次版本更新带来了很多非常棒的新特性,包含华为海思团队贡献的延迟渲染管线,PhysX 物理后端的支持等等;同时,相对 3.0 版本,各方面的性能也得到了优化,例如帧动画性能,加载性能,包体等等。我们将会在 3.x 的基础上继续深耕,用真诚的态度和敬业的精神,踏踏实实完善产品体验,普惠所有开发者。欢迎所有开发者使用与体验!升级前请做好相关文件备份哦!
Cocos Creator 3.x 版本已经正式发布,2.4 版本将做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,
Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。
Creator 3.0 版本作为引擎组的新基线版本,统一了 2D 与 3D 的开发工作流,兼顾了轻量与重度游戏的开发体验,融合了几乎所有 Creator 2.x 与 Creator 3D 1.x 版本的功能。一经推出就受到了大家的踊跃尝试与使用,并收到了许多积极反馈。而此版本主要面向 3.0 版本以来的问题修复与使用体验优化。我们将会在 3.x 的基础上继续深耕,用真诚的态度和敬业的精神,踏踏实实完善产品体验,普惠所有开发者。欢迎所有开发者使用与体验!升级前请做好相关文件备份哦!
可选值为 Global 或 Enclosed。当为 Global 时,直接在目标环境中执行该脚本。当为 Enclosed 时,将整个脚本包裹在 IIFE 函数中执行,这意味着脚本顶部以 var 声明的变量不会提升为全局变量。
缓动系统更新时机从 lateUpdate 阶段之后更改为 update 阶段之后,可能需要调整处理时机 #8305
为了适配 M1,重新编译了第三方库,要求 Xcode 版本为 11.5+
在导入含有负帧动画的 FBX 时可能造成编辑器不工作,请在相应 DCC 工具中确定没有负帧动画出现,之后版本将修复此问题
原生平台 Spine 预乘渲染不正确,之后版本将修复此问题
Cocos Creator 3.x 版本已经正式发布, 2.4 版本将做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,
Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。详细的升级说明请参考升级指南,如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。
在 3.0 预览版发布后,引擎组收到了大量开发者的热情反馈,引擎组工程师们动力倍增,经过了又两个月的迭代后,终于将这灌注了汗水与热血的产品正式推出。Creator 3.0 统一了 2D 与 3D 的开发工作流,兼顾了轻量与重度游戏的开发体验,融合了几乎所有 Creator 2.x 与 Creator 3D 1.x 版本的功能,而这一切都是建立在 Creator 3.0 更加健壮的面向未来的底层架构上,这对引擎组来说是个具有重要意义的里程碑。我们会在 3.0 的基础上继续深耕,用真诚的态度和敬业的精神,踏踏实实完善产品体验,普惠所有开发者。3.0 正式版在预览版的基础上,进一步优化了性能,完善了品质,并推出了更多功能,例如接入了 Spine,DragonBones 的原生运行时,支持使用 NPM 库,重构了 Prefab 系统与 UI 系统等诸多内容。欢迎所有开发者使用与体验!
3.0 使用了面向未来的全新引擎架构,将为引擎带来高性能、面向数据及负载均衡的渲染器,并且无缝支持 Vulkan & Metal 多后端渲染,未来还会支持移动端 VR/AR 及部分主机平台。下面对 3.0 的部分特性进行简要介绍。
一体化的编辑器,带来轻量易用的创作体验。Cocos Creator 3.0 在 Cocos Creator 2.x 沿用多年的编辑器框架上进行了重构、拓展和升级。
Cocos Creator 3.0 可一键接入 Cocos 官方推出的各类优质服务,提升开发效率,推出更多优质内容,Cocos 也将持续推出更多更优质的服务。
Creator 3.0 重新实现了 Prefab 系统,
在构建之后,Creator 3.0 将会缓存大部分构建内容,包括资源,压缩纹理,自动图集,引擎代码等,在之后构建中,如果没有变化,将直接使用缓存内容,加快构建速度,提升效率。
构建发布将以构建任务的形式进行,保存每次构建的配置、状态、log 等,方便切换构建任务以及查看历史配置。
提取了各个小游戏平台的生成阶段,允许在构建之后修改文件内容重新生成 rpk/cpk,同时可以支持在编译前后添加构建钩子来定制构建流程。
和 2.4 一样,3.0 也使用 Asset Bundle 作为资源模块化工具。开发者可以将贴图、脚本、场景等资源构建为多个 Asset Bundle 中,进而在游戏运行过程中按需加载,从而减少首次下载和加载游戏所需的时间。Asset Bundle 可以按需求随意放置,比如可以放在远程服务器、本地,或者小游戏平台的分包中,也可以跨项目复用,用于加载子项目中的 Asset Bundle。
支持在构建时设置 Splash Screen,用于在游戏启动之前显示一段过场动画,优化首屏启动速度。
GameView 是内嵌于编辑器的游戏运行面板,开发者无需打开浏览器预览,即可在编辑器中直接运行游戏。除了更无缝的开发体验,还能在游戏运行过程中通过场景编辑器或其它面板实时调试、修改元素状态,让游戏开发更高效!
Cocos Creator 3.0 拥有更加强大的插件系统,编辑器几乎所有功能模块都是以插件形式存在。你可以在扩展菜单中快速创建自己的插件,从而实现自己想要的效果。另外,Cocos Creator 3.0 还提供了扩展管理器,可以轻松管理所有扩展插件的运行和卸载。
插件可以使用 IPC 消息与其他插件或编辑器进行通信,快速方便地使用编辑器内部已提供的能力。Cocos Creator 3.0 还提供了消息管理器,可以清晰地看到目前编辑器内已提供的功能,降低插件开发门槛。
动画编辑器是我们一直在持续优化的重要模块,除了标准的位移、旋转、缩放动画和序列帧动画以外,这套动画系统还支持驱动任意组件属性和用户自定义属性,再加上可任意编辑的时间曲线和创新的移动轨迹编辑功能,能够让内容生产人员不写一行代码就制作出细腻的各种动态效果,任意驱动游戏逻辑。
除常规操作外,3.0 的动画编辑器更提供了以下快捷操作,帮助游戏开发者实现想要的内容:
便捷的地形系统,快速绘制地形纹理。地形编辑主要包括三大功能:管理(Manage)、雕刻(Sculpt)、描绘(Paint)。同时支持 Normal Map,PBR 材质和自定义材质。
烘焙是通过预先计算光源对物体的影响来生成光照贴图并应用到场景中的过程,可以在不损失运行效率的前提下大大提升静态场景的画面表现。
提供了修改引擎宏配置的快捷方式,配置的宏将会在预览、构建时生效,同时也会跟随自定义引擎的配置更新当前宏配置的默认值。
支持添加压缩纹理预设配置,用于快速配置纹理的压缩方式。给图片设置预设后,还可以直接修改预设来批量更新对应的纹理,大大方便了项目的全局管理。
为了方便 2.x 用户升级,我们在 3.0 中提供了项目迁移插件,可将 2.4.3 以上版本的项目迁移到 3.0.0 版本中,此工具将支持旧项目资源完美导入,以及代码的辅助导入。代码辅助导入会把 js 转换成 ts,添加组件类型声明、属性声明及函数声明,组件在场景中的引用都会得到保留,并且函数内部的代码会以注释的形式导入进来,可以减轻开发者的升级难度。不过 2.x 的 API 和 3.0 仍然有不小的差异,我们能尽可能通过 deprecation 和 removal 机制来做运行时警告,开发者的代码仍需做不小的调整才能够完美升级到 3.0。
Cocos Creator 2.4 在 2D 渲染方面很强大,Cocos Creator 3.0 则允许开发者制作出更加精美的 3D 游戏。我们在 3.0 中将两者的优势进行了融合,全面支持 2D、3D 的各种功能特性,无论 2D 还是 3D,3.0 都将满足你的需求。
渲染系统作为游戏引擎的核心模块,起着至关重要的作用,直接决定了游戏所能输出给玩家的内容。一个优秀的渲染系统还必须兼顾各类平台,抹平平台间的差异。Cocos Creator 3.0 的渲染系统,从架构到设计都是以面向未来、高性能、跨平台为目标,极大地提升了渲染能力和健壮性。
在 3D 世界中,光与影一直都是极其重要的组成部分,它们能够丰富环境表现,质量好的阴影可以达到以假乱真的效果,并且使得整个世界更具立体感。
粒子系统是游戏引擎特效表现的基础,它可以用于模拟的火、烟、水、云、雪、落叶等自然现象,也可用于模拟发光轨迹、速度线等抽象视觉效果。良好的粒子效果可以使游戏画面更加惊艳。
材质作为资源,决定了其所附加的物体的渲染效果,几乎游戏中所有渲染出来的效果都与材质密不可分。材质系统作为基础模块,为上层建筑提供了坚实的基础。
Cocos Creator 3.0 内置了通用的动画系统用以展示基于关键帧的动画。在编辑器中我们可以很方便地生产关键帧动画剪辑。我们能也支持导入外部 FBX、glTF 资源中已经包含的骨骼动画,资源管理器中可以对这些动画进行二次剪辑,在动画编辑器中可以预览动画效果,添加动画事件触发器,通过动画系统 API 也可以自如得控制动画播放。
除此之外,我们还支持以下特性:
Cocos Creator 3.0 的项目开发全面转向了 TypeScript,项目中也不再支持 JavaScript。我们在 3.0 中进一步完善了对 TypeScript 的支持:
@integer
, @float
, @string
, @boolean
, @type
等Cocos Creator 3.0 延续了 2.x 的 UI 设计,并进一步优化升级,包含以下内容:
Cocos Creator 3.0 目前内建了轻量的碰撞检测系统 Builtin 和具有物理模拟的物理引擎 cannon.js,以及由功能强大的 bullet 编译成为 asm.js/WASM 版本的 ammo.js,并为用户提供了高效的组件化工作流程和便捷的使用方法。引擎组将持续对物理系统进行完善与优化,提供更多功能特性以及提升性能,并将对接更多物理系统后端,我们很快将在后续版本中推出 PhysX 的后端支持(包括原生平台,小游戏平台,Web 平台),将大大增强物理系统的原生性能和能力,未来更将会支持包括布娃娃系统,布料模拟,CCD 检测等等功能特性。
view.setFrameSize
接口报错的问题enable auto gray effect
选项Creator 3D v1.2 | Creator v3.0 |
---|---|
PhysicMaterial | PhysicsMaterial |
Creator 3D v1.2 | Creator v3.0 |
---|---|
line | Line |
plane | Plane |
ray | Ray |
triangle | Triangle |
sphere | Sphere |
aabb | AABB |
obb | OBB |
capsule | Capsule |
frustum | Frustum |
MorphModel | models.MorphModel |
ray_aabb | rayAABB |
ray_plane | rayPlane |
ray_triangle | rayTriangle |
ray_sphere | raySphere |
ray_obb | rayOBB |
ray_capsule | rayCapsule |
ray_subMesh | raySubMesh |
ray_mesh | rayMesh |
ray_model | rayModel |
line_plane | linePlane |
line_triangle | lineTriangle |
line_aabb | lineAABB |
line_obb | lineOBB |
line_sphere | lineSphere |
aabb_aabb | aabbWithAABB |
aabb_obb | aabbWithOBB |
aabb_plane | aabbPlane |
aabb_frustum | aabbFrustum |
aabbFrustum_accurate | aabbFrustumAccurate |
obb_point | obbPoint |
obb_plane | obbPlane |
obb_frustum | obbFrustum |
obbFrustum_accurate | obbFrustumAccurate |
obb_obb | obbWithOBB |
obb_capsule | obbCapsule |
sphere_plane | spherePlane |
sphere_frustum | sphereFrustum |
sphereFrustum_accurate | sphereFrustumAccurate |
sphere_sphere | sphereWithSphere |
sphere_aabb | sphereAABB |
sphere_obb | sphereOBB |
sphere_capsule | sphereCapsule |
capsule_capsule | capsuleWithCapsule |
Creator 3D v1.2 | Creator v3.0 |
---|---|
BAIDU_GAME | BAIDU_MINI_GAME |
VIVO_GAME | VIVO_MINI_GAME |
OPPO_GAME | OPPO_MINI_GAME |
HUAWEI_GAME | HUAWEI_QUICK_GAME |
XIAOMI_GAME | XIAOMI_QUICK_GAME |
JKW_GAME | COCOSPLAY |
ALIPAY_GAME | ALIPAY_MINI_GAME |
BYTEDANCE_GAME | BYTEDANCE_MINI_GAME |
Creator 3D v1.2 | Creator v3.0 |
---|---|
UIRenderable | Renderable2D |
UIDrawBatch | DrawBatch2D |
为了保障现有的 Cocos Creator 2.4 项目平稳过渡,我们会将 2.4 做为 LTS(长期支持)版本,提供后续两年的持续更新!在 2021 年,2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,以及 Apple Silicon (M1) 芯片的支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 2.4 的关键问题修复,保障已上线的游戏平稳运营!因此,
而原有的 Cocos Creator 3D 做为 Creator 的分支版本,已经面向中国进行了长达一年的迭代,成功上线了星空大决战、最强魔斗士等重度项目!3.0 发布后,Creator 3D 也将包含在 3.0 中,现有的 1.2 项目都可直接升级,因此 Cocos Creator 3D 后续不会再发布独立版本,还望周知。
虽然我们不建议开发中的项目,特别是即将上线的项目强升 3.0,但是我们仍将在 3.0 正式版推出 2.x 资源导入工具。如果现有项目有特殊原因需要升级,并且遇到了技术上或者工作量上的困难,也可以联系 zhengxiong.zhao@cocos.com 获取我们的人工协助!