What’s NEW
Hightlight
性能优化
在 3.3 版本中,我们继续重点优化了微信小游戏平台的加载性能和运行性能。所有内部项目升级后微信云测启动性能分都可以达到 80 分以上。
同时,我们进一步提升了原生引擎的绑定层级,在渲染管线之上的渲染场景部分也完成了原生化,光源、模型等渲染对象的收集过程使用原生实现,进一步提升了原生平台的性能。
还有一个附带的好处,由于绑定层级的向上迁移,一些底层的数据共享机制被解除了,比如 Pass,SubModel 等。这使得 JS 引擎上层的实现尤其是 UI 和 2D 渲染合批相关的数据更加简化,部分高频操作的数据结构从 TypedArray 还原为直接量属性,使得 Web 和小游戏平台的性能也得到了可见的提升。
优化场景编辑体验
- 优化场景相机的漫游模式,并增加了加速开关
- 增加一个场景灯光的开关(默认打开)
- 增加模型的最大最小坐标显示
- 增加 Transform Gizmo 的吸附功能(通过移动,旋转,缩放的Gizmo操作时,按住 Ctrl 键,就可以按设定的步长进行值的增长
- 优化大项目使用体验:降低编辑器内存使用,避免崩溃,优化卡顿
新版动画编辑器和动画数据升级
目前动画编辑器已在动画编辑器内置曲线编辑,与时间轴匹配,并支持任意关键帧之间的时间曲线编辑。
同时,在 3.3 中,我们也完成了动画数据的升级:引入了新的基础曲线类,重构了 AnimationClip,统一了动画和粒子系统使用的曲线数据。这些工作都是为了后续的完善动画系统而准备的,在后续版本我们将支持动画状态机编辑,Blend Tree 动画融合等高级功能。
除此之外,动画编辑器还完成了以下工作:
- 支持动画根节点隐藏后的动画显示编辑;
- 优化动画编辑器关键帧与小红线的遮挡关系以及关键帧大小、选中颜色等;
- 动画编辑器支持按住 shift + 鼠标滚轮滚动来移动时间轴;
平台支持和构建系统优化
在 v3.3 中,我们加入了 windows x64 的构建选项,未来将逐步废除 win32 平台的构建。
在构建面板上,我们也做了诸多优化:
- iOS 构建填配置选项支持目标 iOS 版本和签名相关的 developer id 配置
- 构建勾选 md5Cache 后,支持给脚本添加 md5 后缀,确保版本更新;(来自论坛反馈)
- 由于微信部分版本已经支持 astc,目前开放了小游戏平台 astc 的压缩纹理配置;
- 偏好设置 - Build 新增构建日志打开方式选项;
- 构建插屏配置面板,支持直接拖拽文件系统的图片放置;
- 命令行构建支持传入 logDest 指定日志输出路径;
- 由于 Mac上退出码位数的限制,对命令行构建退出码做了修改;
- 原生平台构建后将不能二次修改游戏名称;
阴影效果和设置优化
在之前的版本中,阴影的配置一直是一个比较让开发者困惑的功能,我们已经有完整的规划,正在逐步完善中,v3.3 会首先简化阴影的配置,优化软阴影算法,修复阴影的部分效果问题。配置上的调整包含:
- Shadow color 被迁移为 Shadow saturation 的灰度调节选项,会自动迁移老版本的 alpha 通道
- 软阴影选项从之前的 X9,X25 等改为 Soft 和 Soft2X
- 简化阴影贴图的尺寸设置为 High,Medium,Low
- 去除 SelfShadow 选项,现在都会默认开启自阴影计算
v3.1
v3.3
物理系统完善
继 v3.1 支持 PhysX 物理后端以来,多套物理引擎的选择和使用也成为了我们重点关注的使用体验,在 v3.3 中我们不仅加强了物理功能,还尽可能统一了不同物理后端的物理表现。
- 支持 CCD 连续碰撞检测功能
- 增加碰撞体最小体积控制,避免节点零缩放导致的一系列问题
- 支持 PhysX 物理打包字节平台更灵活的配置选项
- 支持 Bullet 物理中全局控制是否允许自动休眠
- 支持 Bullet 物理中射线检测过滤 trigger 碰撞体
- 修复 Bullet 物理中刚体无附加现状的 local inertia
其他
- 音频系统在 v3.1 移除所有 AudioClip 资源上的播放控制接口后,开发者颇为不满,在 v3.3 中我们将播放控制接口以标记废弃的方式添加回 AudioClip 资源。我们仍然希望所有开发者能切换到使用 AudioSource 组件的方式来播放音频,这对于未来的音频系统功能强化至关重要。
- 输入事件以前是接收到事件就进行派发,如果事件响应逻辑复杂可能会影响到帧回调,导致帧率不稳,v3.3 已调整为帧间记录事件队列,统一在主循环中处理事件队列。
- View 和 Screen 接口进行了简化,废弃了一些平台相关接口,将部分 View 的窗口控制功能统一到 Screen 上
重点更新列表
Editor
- 新版本动画时间曲线编辑和动画编辑器体验优化
- 各模块曲线编辑器统一:粒子、动画等
- 优化粒子曲线的编辑操作,添加重置坐标移动范围按钮,支持直接右键编辑关键帧点位置
- 场景编辑器体验优化
- 支持 HDR 文件导入,引擎内部处理 RGBE 编解码
- 编辑器性能和体验优化
- 当 Image 资源被改为 SpriteFrame 类型后,自动修改 texture 的 Clamp 配置为 CLAMP_TO_EDGE,避免边缘混合黑边问题
- 支持在带动画模型的属性面板上直接编辑动画事件
- 修正编辑器内的资源泄露问题,降低内存占用
- 针对微信小游戏平台开启 ASTC 压缩纹理配置
- 优化 hierarchy 面板性能,增加 prefab 节点直接进入 prefab 资源的编辑功能
- 优化 console 面板性能,修复大量 log 数据拖慢启动速度的问题
- Color picker 支持 color gamma 矫正预览
- Inspector 中支持组件属性的分组显示,使用 @group 装饰器
- inspector 编辑节点增加复制节点世界坐标
- 支持显示烘焙结果的 rgb 通道的单个灰度图或者通道的组合
- 支持自定义的脚本模板,同时在生成脚本时可以使用部分预设变量
- 支持 Windows 平台上带中文的安装目录
- iOS 构建填配置选项:目标 iOS 版本,签名相关的 developer id
- Windows 平台添加生成平台选项, 支持 win32 与 x64 选项
- 支持脚本 import map
- 添加了清理代码缓存的功能,入口位于菜单:[开发者]-[缓存]-[清理代码缓存]
- 编辑器右下角添加引擎版本与编辑器版本不一致的提示
- Electron 升级到 13.1.4
- 修复 m1 cpu 的设备构建项目时偶现的进度条停止问题
Engine
- 优化标准光照模型中的 AO 计算
- 阴影参数和渲染优化
- 修复阴影效果,优化阴影边缘虚化算法
- 将 Shadow Color 迁移为 Shadow Saturation 单通道选项,会自动迁移老版本的 alpha 通道
- 软阴影选项从之前的 X9,X25 等改为 Soft 和 Soft2X
- 简化阴影贴图的尺寸设置为 High,Medium,Low
- 去除 SelfShadow 选项,现在都会默认开启自阴影计算
- 引入通用曲线类(Curve)
- 重构 AnimationClip,动画数据重构升级:为动画状态机和复杂动画融合做好准备
- 优化微信小游戏首屏渲染速度
- 修复了 UI 透明度级联导致的渲染问题
- 修复了 Label 重复加入动态合图的问题
- 粒子曲线使用统一的 Curve 数据
- 物理引擎
- 统一各个物理后端的行为表现
- 支持 CCD 持续碰撞检测
- 增加碰撞体最小体积控制,避免节点零缩放导致的一系列问题
- 支持 PhysX 物理打包字节平台更灵活的配置选项
- 支持 Bullet 物理中全局控制是否允许自动休眠
- 支持 Bullet 物理中射线检测过滤 trigger 碰撞体
- 烘培库支持 mac m1 cpu 设备
- 字节小游戏音频使用 WebAudio 接口实现
- 事件系统
- 所有输入事件归拢到游戏主循环中处理
- AudioSource 支持监听音频开始和结束事件 AudioSource.EventType.STARTED & AudioSource.EventType.ENDED
- SystemEventType 和 macro.KEY 已经废弃了,改用 SystemEvent.EventType 和 KeyCode
- 废弃了 SystemEventType,以及 SystemEventType 底下的一些系统事件无关的枚举,请使用 SystemEvent.EventType
- 废弃静态属性 Event.TOUCH, Event.MOUSE, Event.KEYBOARD, Event.ACCELERATION
- 简化废弃部分 view 和 screen 接口,统一在平台适配层(PAL)中实现
- 废弃 view.adjustViewportMeta 和 view.isAutoFullScreenEnabled
- 废弃 view.enableAutoFullScreen,请使用 screen.requestFullScreen
- 废弃 cc.winSize,请使用 view.getVisibleSize
- 废弃 screen.autoFullScreen,请使用 screen.requestFullScreen
- 废弃 screen.disableAutoFullScreen
- 修复移除 Spine 动画可能导致的内存泄露(感谢 Github PR from @hailua54)
Infrastructure
- 渲染场景模块原生化:优化原生平台性能
- 使用可控的离屏 FrameBuffer 进行内容渲染
- 基于离屏 FrameBuffer 支持 MSAA 抗锯齿(开启项目宏 Enable Antialias 生效):注意,如果之前开启了该项目宏,那么升级为 3.3 之后原生平台性能损耗会有所增加,这是正常情况
- 内置 Frame Graph 渲染定制层,后续版本将接入渲染管线,开放定制接口给用户
- 在 Vulkan & Metal 后端支持 Subpass
- 添加 M1 CPU 的苹果设备上使用 iOS Simulator 调试的能力,需要参考 文档使用
- binding generator 全面兼容 python 2.7 / 3.x (64 位)
Breaking changes
- 构建压缩纹理不再带有默认 png 图,如果使用到这个特性的项目,请在项目配置内为已有的压缩纹理配置添加默认图(来自 论坛反馈)
- 目前已支持 HDR 贴图直接导入,之前如果使用 RGBE 格式的 .png 请替换为原始 .hdr 贴图
- 我们修复了一处 FBX 资源导入问题:若 FBX 模型含有多段动画,第二段及后续的动画都错误地包含了前段的所有动画数据。注意:如果已经配置了动画分割,则可能需要调整。不过我们并未收到外部开发者关于此问题的反馈。