背景介紹
在游戲開發(fā)中,AssetBundle 構(gòu)建耗時(shí)是影響游戲開發(fā)效率的一環(huán)。在先前的 篇中,我們提出了若干優(yōu)化方案,收到了開發(fā)者們的積極反饋以及希望能夠進(jìn)一步提升構(gòu)建效率的呼聲。這一次我們帶來的AssetBundle 多進(jìn)程并行構(gòu)建提升,通過并行處理,開發(fā)者可以充分利用多核處理器的優(yōu)勢(shì),大幅降低 AssetBundle 構(gòu)建耗時(shí)。此外還可以配合 Profiler 工具,開發(fā)團(tuán)隊(duì)能夠監(jiān)控構(gòu)建過程中的性能數(shù)據(jù),識(shí)別瓶頸并進(jìn)行配置的優(yōu)化。這使得開發(fā)團(tuán)隊(duì)能夠在資源管理上更加靈活與高效。
多進(jìn)程并行構(gòu)建 AssetBundle
需求與痛點(diǎn)
在現(xiàn)代游戲開發(fā)中,項(xiàng)目的資源數(shù)量龐大,然而傳統(tǒng)的 AssetBundle 構(gòu)建流程采用完全單線程執(zhí)行模式,無法充分利用現(xiàn)代多核處理器的強(qiáng)大計(jì)算能力,導(dǎo)致構(gòu)建過程耗時(shí)漫長(zhǎng),嚴(yán)重制約了開發(fā)迭代效率。特別是在需要頻繁打包測(cè)試的開發(fā)階段,開發(fā)者經(jīng)常需要等待數(shù)十分鐘甚至數(shù)小時(shí)才能完成一次完整構(gòu)建。這種低效的構(gòu)建方式不僅影響了開發(fā)節(jié)奏,還降低了團(tuán)隊(duì)整體生產(chǎn)力。為了解決這一行業(yè)痛點(diǎn),多進(jìn)程并行構(gòu)建技術(shù)通過將龐大的資源構(gòu)建任務(wù)分配到多個(gè)進(jìn)程中并行處理,充分發(fā)揮多核心硬件的優(yōu)勢(shì),實(shí)現(xiàn)構(gòu)建效率的提升。
新功能介紹
多進(jìn)程并行構(gòu)建通過充分利用多核處理器的并行處理能力,顯著提升大型項(xiàng)目的資源構(gòu)建效率。主進(jìn)程拉起多個(gè) Build Worker 進(jìn)程,將 AssetBundle 構(gòu)建任務(wù)分發(fā),每個(gè)進(jìn)程獨(dú)立處理自己的構(gòu)建任務(wù)。AssetBundle 構(gòu)建的速度會(huì)根據(jù)配置的 Build Worker 數(shù)量成倍提升。兼容現(xiàn)有的 AssetBundle 構(gòu)建 API,只需添加一個(gè)額外的標(biāo)志即可啟用多進(jìn)程構(gòu)建。配套了用于檢視 AssetBundle 構(gòu)建過程的 Profiler,可視化多進(jìn)程構(gòu)建提升效果。
使用方式
平臺(tái)要求:Windows Editor
版本要求:團(tuán)結(jié)引擎 1.8.0 以上
- 啟用多進(jìn)程并行構(gòu)建
在調(diào)用 BuildAssetBundle API 時(shí),向 BuildAssetBundleOptions 添加
BuildAssetBundleOptions.MultiProcessAssetBundleBuilding可以在 Project Settings -> Editor 中配置 Build Worker 的數(shù)量
![]()
推薦數(shù)量計(jì)算公式如下:
工作進(jìn)程數(shù)量 = (可用系統(tǒng)內(nèi)存 - 系統(tǒng)保留內(nèi)存) / 每個(gè)AssetBundle構(gòu)建進(jìn)程所需內(nèi)存 - 1(為主進(jìn)程保留)示例:(32GB - 4GB)/ 5GB - 1 = 4
- 啟用 BuildPipeline Profiler
通過啟用 BuildPipeline Profiler 分析開啟多進(jìn)程并行構(gòu)建的提升效果
在 Preference -> Diagnostics 下勾選 BuildPipelineProfiler
![]()
開啟后打包完成時(shí)會(huì)在工程根目錄 Logs 目錄下生成
BuildAssetBundlesProfileData.json
*在谷歌瀏覽器中輸入 chrome://tracing/,并導(dǎo)入Json文件,可視化分析 Build AssetBundle 用時(shí)
實(shí)際效果與測(cè)試數(shù)據(jù)
通過 BuildPipeline Profiler 獲取某個(gè)重度項(xiàng)目 AssetBundle 構(gòu)建用時(shí),在同一環(huán)境上比較開啟多進(jìn)程并行構(gòu)建與否的數(shù)據(jù)。開啟多進(jìn)程并行構(gòu)建時(shí),配置了 6個(gè)BuildWorker。
未開啟,AssetBundle 構(gòu)建用時(shí)約 4604s
![]()
開啟多進(jìn)程并行構(gòu)建功能,AssetBundle 構(gòu)建用時(shí)約1041s
![]()
測(cè)試結(jié)果
![]()
![]()
總結(jié)與展望
通過實(shí)現(xiàn) AssetBundle 的多進(jìn)程并行構(gòu)建,團(tuán)結(jié)引擎的構(gòu)建效率繼續(xù)提升。關(guān)于該功能,未來還將推出多臺(tái)設(shè)備分布式并行構(gòu)建,以降低對(duì)設(shè)備硬件的要求。同時(shí)我們也關(guān)注用戶體驗(yàn)的改進(jìn),CI/CD 支持、構(gòu)建進(jìn)度追蹤、子進(jìn)程構(gòu)建報(bào)告、數(shù)據(jù)分析等內(nèi)容將逐步完善。團(tuán)結(jié)引擎資產(chǎn)管理的使用體驗(yàn)將持續(xù)優(yōu)化,助力開發(fā)者高效打造精品游戲。
Unity 官方微信
第一時(shí)間了解Unity引擎動(dòng)向,學(xué)習(xí)進(jìn)階開發(fā)技能
每一個(gè)“點(diǎn)贊”、“在看”,都是我們前進(jìn)的動(dòng)力
![]()
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.