根据Unity官方平台消息,继年初团结引擎创世版发布至今,该版本迎来了首次技术更新,代号「团结引擎 1.1.0」。
本次技术更新的内容,涵盖了微信小游戏、团结引擎车机版、OpenHarmony、Audio、Virtual Geometry、云渲染、Hub & License、UPM 几大方向。尤其是微信小游戏,更新了多种技术;团结引擎车机版,也同时增强了对 HMI Android、QNX 和 Embedded Linux 三个平台的稳定支持。
微信小游戏
作为团结引擎创世版首次大版本的更新重点之一,微信小游戏从 DotNet Wasm 方案,GPU Skinning (Vertex Shader),Shader Warmup,TextureManager,Managed Stripping Level: Extreme,il2cpp 元数据精简等等,为开发者的小游戏研发全面助力!
DotNet Wasm 方案
为了解决 il2cpp 方案产出 Wasm 体积大导致的运行内存过大问题,团结引擎 1.1.0 在微信小游戏平台新增 Scripting Backend .NET 8,充分利用了 2023 最新发布的 DotNet 对 WebAssembly 的支持,将 Dll 部分从 Wasm 中剥离,以解释执行的方式运行 IL,从而减小了 Wasm 体积,显著降低了运行内存。
同时该方案使用裁剪优化后的 mono 作为 .NET 运行时,充分利用引擎原本对 mono 的支持,使得用户几乎可以无感的接入使用。
TextureManager
团结引擎 1.1.0 新增 Texture Manager 功能模块:
- 帮助解决游戏项目中纹理资源使用不合理、资源包纹理资源冗余等原因导致的内存消耗问题
- 同一套 AssetBundle 可以支持多套纹理(每套纹理针对不同平台使用不同的压缩格式)
GPU Skinning(Vertex Shader)
团结引擎 1.1.0 新增了 Vertex Shader Skinning。相比于 Transform Feedback,该方案不会增加新的 pass,Skinning 处理后的数据直接用于后续 MVP 坐标转换。不会像 Transform Feedback 那样在某些场景产生负优化(当角色数量多,每个角色顶点数少时)。引擎内置的 shader 已支持 Vertex Shader Skinning; 用户自定义的 shader 仅需添加一行 #pragma multi_compile _ ENABLE_VS_SKINNING 即可支持。
Managed Stripping Level: Extreme
团结引擎 1.1.0 新增了Extreme 级别的托管代码剪裁策略,基于对 MonoBehaviour 和 ScriptableObject 类细致地静态分析,尽可能多的剔除代码。在某个案例上,使用 High level 的 wasm 大小为 49.5MB, 切换为 Extreme level 后,wasm 大小降为 44.8MB。
Managed Code 剔除会对代码进行静态分析。首先依据(root marking rules)标记 root 类型、方法、属性等,然后再依据(dependency marking rules)去标记这些 root 的依赖。接下来未被标记的代码会被剔除。新增的 Extreme Level,使用了更加激进的标记规则,与 High Level 对比如下:
小游戏宿主(Android)
移动端 App 作为宿主,为小游戏提供运行环境,相较于浏览器,它支持更高的时钟精度,提供更强的 Debug 和 Profiling 能力。开发者可以在引擎内一键上传游戏,并通过 Connect App 扫码打开游戏。
C# Debugging
团结引擎 1.1.0 在除 WebGL 之外的其它平台上都支持 C# 代码调试。在 WebGL 平台,因为多线程受限、不支持 Socket、无法发送广播,无法监听端口等原因,Unity 没有支持 C# 调试功能。我们的小游戏宿主方案,解决或绕开了上述限制,实现了 C# 代码的 debug 能力。
如下图所示,通过增加一个中间代理,我们桥接了 WebSocket 和 Socket,并实现了广播、监听能力。如同在其它平台一样,开发者可以通过 Visual Studio 或 Rider,调试宿主中运行的小游戏。可以正常的 attach 到小游戏,设置断点,查看变量值,单步执行等等。
Shader Warmup
WebGL 不支持 binary Shader, 单个 Shader 编译时间通常在几十毫秒。
ShaderVariantCollection.WarmUp() 操作可能会让主线程卡住长达数秒的时间,即使使用 ShaderVariantCollection.WarmupShadersProgressively(1) 逐帧编译,也会严重降低帧率。WebGL 的扩展 KHR_parallel_shader_compile 支持将 Shader 编译异步化,这给了引擎支持异步 Shader warmup 的可能。在一个游戏案例中,使用异步 Shader warmup, 能够将 shader 编译阻塞时间从 6545ms 降低到 856ms。
团结引擎车机版
团结引擎 1.1.0 版提供对车机 HMI Android、QNX、Embedded Linux 三个平台的稳定支持并进行了多项改进,同时基于实际车载应用场景,新增了诸如多点触控、QNX 开屏图片等能力,为车机应用开发者提供更好的开发体验。
其他重要更新
Open Harmony
在 1.1.0 的版本上,我们完善了升级 sdk api10 之后的功能,并且也修复了很多用户反馈的问题。
Audio
在团结 1.1.0 版本中, Audio 模块功能进一步与 Unity 对齐,同时根据用户的反馈,修复了很多的问题,在各个平台上的稳定性也大幅提高。在音频压缩格式的支持方面,新增了对 .aiff 和 .aif 格式的音频文件的支持,因此可以在工程文件中直接使用 .aiff/aif 格式的音频文件,不再需要先通过外部工具转为 wav 格式再使用。在打包 Android 平台的游戏时,除 Vorbis、PCM 和 ADPCM 压缩格式外,也可以选择 MP3 格式以获得更小的包体。
针对在 Windows 平台上打包的微信小游戏,其中非常短的音频压缩成 aac 格式之后无法在 iOS 和 Mac 设备上播放或者播放异常的问题,也使用 wav 格式自动做了兜底处理。从而避免开发者浪费大量的时间来查找和绕过这类的问题。
Virtual Geometry
在团结 1.1.0 版本中,我们对虚拟几何体进行了大量优化,并修复了已知的问题。
在之前的版本中,使用了多材质的物体一旦有半透明材质,VG 就不能开启;我们对此做了优化,使多材质物体即使使用了半透明材质也可以开启 VG,这意味着,多材质物体的不透明材质可以使用 VG 渲染,而半透明材质还是传统渲染方式。
在新版本中,我们优化了每个 instance 对显存的占用。在未来的版本中,我们计划进一步优化虚拟几何体各个模块对显存的消耗。
同时,我们修复了大量 shader graph 支持虚拟几何体的 bug。
云渲染支持
新版本解决了依赖的音频模块兼容性问题,保证应用音频可以正常输出并被捕获串流至客户端。云渲染支持面向团结引擎的非侵入式开发,为开发者提供了一种无缝、高效的渲染解决方案,既充分利用了云计算的强大性能,又保持了对现有工作流的最小干扰,极大地提升了渲染效率和质量,同时简化了开发流程。
HUB & License
团结 1.1.0 版本中,新增了对团结引擎车机版支持 floating license,支持离线登录 hub 以及激活 license,方便无法联网的用户使用。
UPM搭建了一套团结的 package manager,相比较老版的 package manager 提供更快的访问速度,更灵活的支持中国本地版 package 功能发布。
更多详细功能,查看团结引擎官网:https://unity.cn/tuanjie/tuanjieyinqing
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。