背景介绍

在游戏开发中,AssetBundle 构建耗时是影响游戏开发效率的一环。在先前的 篇中,我们提出了若干优化方案,收到了开发者们的积极反馈以及希望能够进一步提升构建效率的呼声。这一次我们带来的AssetBundle 多进程并行构建提升,通过并行处理,开发者可以充分利用多核处理器的优势,大幅降低 AssetBundle 构建耗时。此外还可以配合 Profiler 工具,开发团队能够监控构建过程中的性能数据,识别瓶颈并进行配置的优化。这使得开发团队能够在资源管理上更加灵活与高效。

多进程并行构建 AssetBundle

需求与痛点

在现代游戏开发中,项目的资源数量庞大,然而传统的 AssetBundle 构建流程采用完全单线程执行模式,无法充分利用现代多核处理器的强大计算能力,导致构建过程耗时漫长,严重制约了开发迭代效率。特别是在需要频繁打包测试的开发阶段,开发者经常需要等待数十分钟甚至数小时才能完成一次完整构建。这种低效的构建方式不仅影响了开发节奏,还降低了团队整体生产力。为了解决这一行业痛点,多进程并行构建技术通过将庞大的资源构建任务分配到多个进程中并行处理,充分发挥多核心硬件的优势,实现构建效率的提升。

新功能介绍

多进程并行构建通过充分利用多核处理器的并行处理能力,显著提升大型项目的资源构建效率。主进程拉起多个 Build Worker 进程,将 AssetBundle 构建任务分发,每个进程独立处理自己的构建任务。AssetBundle 构建的速度会根据配置的 Build Worker 数量成倍提升。兼容现有的 AssetBundle 构建 API,只需添加一个额外的标志即可启用多进程构建。配套了用于检视 AssetBundle 构建过程的 Profiler,可视化多进程构建提升效果。

使用方式

平台要求:Windows Editor

版本要求:团结引擎 1.8.0 以上

  • 启用多进程并行构建

在调用 BuildAssetBundle API 时,向 BuildAssetBundleOptions 添加

BuildAssetBundleOptions.MultiProcessAssetBundleBuilding

可以在 Project Settings -> Editor 中配置 Build Worker 的数量

打开网易新闻 查看精彩图片

推荐数量计算公式如下:

工作进程数量 = (可用系统内存 - 系统保留内存) / 每个AssetBundle构建进程所需内存 - 1(为主进程保留)

示例:(32GB - 4GB)/ 5GB - 1 = 4

  • 启用 BuildPipeline Profiler

通过启用 BuildPipeline Profiler 分析开启多进程并行构建的提升效果

在 Preference -> Diagnostics 下勾选 BuildPipelineProfiler

打开网易新闻 查看精彩图片

开启后打包完成时会在工程根目录 Logs 目录下生成

BuildAssetBundlesProfileData.json

*在谷歌浏览器中输入 chrome://tracing/,并导入Json文件,可视化分析 Build AssetBundle 用时

实际效果与测试数据

通过 BuildPipeline Profiler 获取某个重度项目 AssetBundle 构建用时,在同一环境上比较开启多进程并行构建与否的数据。开启多进程并行构建时,配置了 6个BuildWorker。

未开启,AssetBundle 构建用时约 4604s

打开网易新闻 查看精彩图片

开启多进程并行构建功能,AssetBundle 构建用时约1041s

打开网易新闻 查看精彩图片

测试结果

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

总结与展望

通过实现 AssetBundle 的多进程并行构建,团结引擎的构建效率继续提升。关于该功能,未来还将推出多台设备分布式并行构建,以降低对设备硬件的要求。同时我们也关注用户体验的改进,CI/CD 支持、构建进度追踪、子进程构建报告、数据分析等内容将逐步完善。团结引擎资产管理的使用体验将持续优化,助力开发者高效打造精品游戏。

Unity 官方微信

第一时间了解Unity引擎动向,学习进阶开发技能

每一个“点赞”、“在看”,都是我们前进的动力

打开网易新闻 查看精彩图片