Unity手遊性能藍皮書

做爲遊戲行業的服務商,UWA不只爲遊戲開發者提供高效的性能優化工具,也致力於爲行業提供更全面、更具體的信息和服務。爲此,UWA今天發佈2019-2020年度手遊藍皮書,分爲三大模塊:MMORPG篇、卡牌篇和ACT篇,從整體性能數據、引擎各模塊開銷、內存佔用等方面進行彙總分析,呈現Unity手遊  行業現狀。html


這是侑虎科技原創文章,歡迎轉發分享,未經官方受權請勿轉載。若是您有任何獨到的看法或者發現也歡迎聯繫咱們,一塊兒探討。(QQ羣:793972859)緩存

MMORPG篇

MMORPG做爲目前遊戲市場上的頭部力量,在UWA測評過的項目中,也佔據了主要份額,所以咱們以該類型的測評數據爲例,爲你們呈現2019-2020年的手遊性能現狀和發展趨勢。性能優化

報告目錄:
1)MMORPG手遊整體性能開銷分析
2)MMORPG手遊CPU模塊性能開銷分析
3)MMORPG手遊內存模塊性能開銷分析
4)MMORPG手遊資源管理分析
5)UWA對於MMORPG手遊研發團隊的建議
函數

 

◆◆◆◆工具

MMORPG手遊整體性能開銷分析

Android設備的CPU均值主體範圍爲14.7~78.9 ms,且主要集中在17~33ms和33~50ms兩檔。性能

按照UWA官網(www.uwa4d.com)的測評機型分類,咱們將統計的性能數據分爲低端、中端和高端;在趨勢圖中則直接以最具備表明性的低端和高端來展示。學習

大部分MMORPG手遊在中低端設備的性能開銷較高,大於33ms的耗時佔比範圍在60%~70%。優化

不管是高、中和低端的Android設備,渲染和邏輯代碼都是須要研發團隊重點關注的,它們的消耗總和佔了總開銷的近70%。邏輯代碼的耗時佔比依然很高,這主要與角色、怪物的數量愈來愈多相關。隨着其不斷增長,邏輯狀態的更新開銷、AI開銷等都在大幅增長,這是須要遊戲研發團隊中密切關注的耗時瓶頸。動畫

下面咱們就來具體分析這些主流模塊的開銷狀況。spa


 

◆◆◆◆◆

MMORPG手遊CPU模塊性能開銷分析

1、渲染模塊

嚴重程度:地獄

爲了可以更好地反映出各個性能參數的總體使用狀況,咱們統計了每種性能參數的主體使用範圍,其範圍區間是[5%~95%],如下數據中P5表明5%,P50表明均值,P95表明95%。

在過去的4個季度中,半透明渲染和不透明渲染在低端設備上的CPU耗時在不斷降低,Q2略有回升,這意味着遊戲團隊對於引擎渲染模塊的理解愈來愈深刻。

2、邏輯代碼

嚴重程度:地獄

1)GC觸發頻率很高,是形成卡頓的主要緣由之一,目前只有36.8%的項目能夠將GC的觸發頻率控制在1000幀/次以上。
2)隨着MMORPG遊戲愈來愈重度化,GC平均耗時在逐步上升。GC耗時會逐漸成爲遊戲運行時的主流性能殺手,須要研發團隊時刻注意!

咱們能夠看到,在過去的Q2中,Instantiate調用頻率有明顯降低,這說明你們在項目中不斷重視對於資源Instantiate/Destroy的管理。

若是你們的項目中仍有大量的Instantiate/Destroy調用,那麼咱們建議您着重查看UWA線上性能報告中資源管理分類的資源實例化/激活頁面,經過它能夠快速掌握到底具體哪些GameObject在不停地被執行實例化操做,從而更爲高效地減小沒必要要的性能開銷。

Shader.Parse 操做是比較突出的性能殺手,但咱們看到在2019的Q4中已經大幅度降低,目前平均每次調用的CPU耗時主要分佈在 0.8~74.9 ms。

3、UI模塊

嚴重程度:地獄

目前咱們主要統計了NGUI、UGUI和FGUI的佔比以及詳細的使用狀況。在剛剛過去的四個季度中,UGUI的使用佔比依然強勢,最高時可達72%。NGUI的佔比有明顯降低的趨勢,而FGUI有明顯上漲的趨勢。

下面咱們將分別說明它們的CPU耗時和堆內存佔用狀況。

UI模塊的性能開銷依然很高,但相較於去年相比確實有進一步提高。這主要是在這一年多以來,各大研發團隊對於UGUI的理解和掌握都在不斷深刻。固然,如今UGUI的明顯性能問題主要有如下四方面:
1.Draw Call;
2.重建;
3.OverDraw;
4.主線程阻塞。

針對以上問題,你們能夠經過UWA學堂(https://edu.uwa4d.com)中UI相關的相關技術問題和視頻進行學習和了解,相信對幫助你們快速提高UI方面的技術理解大有裨益。
FGUI的性能看起來很不錯,可是目前FGUI的使用量較少,可能存在一些統計誤差。僅供參考。

4、動畫模塊

嚴重程度:普通

動畫模塊在最近一年來的性能表現一直較爲平穩,這說明你們對於動畫模塊中應有的性能優化點掌握已經較爲到位。雖然MMO項目中的角色、NPC和怪物等數量持續有在增長,但在這些模型多數是經過GPU Skinning的方式來完成。這種方式對於實現場景中的大量同種怪物很是有效。

5、物理模塊

嚴重程度:普通

物理模塊的性能存在上升趨勢,特別是高端設備上。對於使用Unity 2017.4版本之後的團隊,Auto Simulation和Auto Sync Transforms是你們須要關心的參數,以免沒必要要的性能耗時。

6、粒子模塊

嚴重程度:普通

粒子系統的CPU開銷廣泛較低,但整體使用數量峯值在2020 Q1後大幅上升。咱們依然建議研發團隊儘量將數量峯值控制在600如下(低端設備)和1000如下(中高端設備)。對此,建議研發團隊常常經過如下兩方面來檢測本身的粒子特效使用狀況:
1)粒子系統(特別是技能特效)的配置文件是否過量;
2)特效中是否含有長久不用的粒子系統。


 

◆◆◆◆◆

MMORPG手遊內存模塊開銷分析

1、內存泄露

嚴重程度:噩夢

內存泄露問題在過去的一年中明顯加劇,40%的提測項目都存在泄漏的問題。

咱們建議研發團隊後續可更爲頻繁地進行檢測和監控,便可進一步下降堆內存泄露的風險。研發團隊可經過如下兩種方式高效地對堆內存泄露函數進行分析和優化:
1)UWA GOT Online中的詳細Mono堆內存分析和Lua性能分析報告
2)UWA線上深度測評中的詳細Mono堆內存測評報告

2、整體內存

嚴重程度:地獄

整體內存在最近的一年裏,峯值均值穩步提高,共計提高了132MB。隨着高端移動設備的普及、MMO遊戲的逐步重度化,內存逐步提高是一個必然的趨勢。目前,項目中的主要內存瓶頸依然是資源和Mono堆內存。對此,咱們將在接下來的文章中進行詳細分析。

3、整體堆內存

嚴重程度:地獄

整體堆內存在最近一年裏上升趨勢很是明顯,這主要是遊戲的重度化所致。但另外一方面,也是研發團隊對於Mono堆內存分配的疏於管理所致。就目前而言,Mono堆內存太高主要是由於配置文件的序列化庫使用不當所致。

項目的內存佔用很大一部分來自於資源的使用,下面咱們將對項目中主流資源的使用狀況進行分析。

4、紋理資源內存

嚴重程度:地獄

如上圖所示,對於紋理資源來講,在過去的4個季度中,其內存佔用處於上升階段。建議研發團隊對於紋理Mipmap使用狀況、渲染利用率等進行進一步的檢測和完善。

5、網格資源內存

嚴重程度:地獄

1)網格資源內存峯值主要分佈爲12.7~ 96.1 MB,且主要集中在60MB之內。
2)MMORPG遊戲的場景廣泛較大、角色廣泛較多,所以,其網格資源量明顯高於其它類型遊戲。但從使用趨勢上來看,其最近一年的使用趨勢較爲平穩,均值均在50MB-80MB浮動。

6、動畫資源內存

嚴重程度:普通

動畫模塊的內存使用趨勢較爲平穩,平均峯值內存長期控制在20~40MB區間以內。

7、Shader資源內存

嚴重程度:普通

這裏,UWA仍然須要提醒的是,Standard Shader在你們的項目中被常常誤引入進來,建議你們在UWA性能簡報中的「具體資源使用信息」中特別關注Standard Shader的使用狀況。

8、RenderTexture資源內存

嚴重程度:噩夢

RenderTexture的內存佔用在進入2020年Q1之後上升趨勢明顯,特別是在低端設備上,隨着你們對於圖像後處理效果的需求提高,後續極可能會出現RenderTexture使用程度大幅提高的狀況,所以,建議研發團隊對RenderTexture密切關注。

9、粒子系統資源內存

嚴重程度:噩夢

粒子系統的使用數量過大,從而致使其內存佔用太高。對此,其最有效的優化方法仍是下降粒子系統的使用數量,同時研發團隊能夠考慮在高端設備上使用GPU Particle 新功能,將大幅度提高粒子模塊的性能。


 

◆◆◆◆

MMORPG手遊資源管理分析

AssetBundle加載方式(Load和LoadAsync)的使用佔比在過去的一年中都保持在80%左右。毫無疑問,AssetBundle加載方式是目前絕大多數研發團隊的資源加載首選。

在接下來的一年中,咱們仍然建議你們使用AUP(Async Upload Pipleine)功能來嘗試達到更高的加載效率。關於AUP中須要特別關注的技術點,建議查看UWA DAY 2019中的相關分享《Unity引擎加載模塊和內存管理的量化分析及優化方法》,同時,咱們在今年UWA DAY 2020上有了更詳細的補充,建議你們後續關注。

在衆多加載方式中,LoadFromFile加載方式依然是一家獨大,LoadFromFile+LZ4的組合在移動遊戲中加載性能優點明顯,依然是移動遊戲資源加載的不二選擇。

1)對於Instantiate/Destroy的完善,研發團隊需時刻關注緩存池的使用是否合理;
2)對於Active/Deactive的完善,則須要研發團隊儘量注意避免UI和動畫角色的頻繁調用,從而儘量避免沒必要要的調用開銷。

除了以上信息,今年UWA DAY 2020上咱們還分享了其餘重要的性能參數數據,不只適用於MMO項目:譬如ASTC紋理的使用狀況、SRP項目的使用狀況、顏色空間的使用狀況等,這些都是你們在立項或研發階段較爲關心的話題,咱們將在後續的UWA DAY 2020視頻中播出,歡迎你們關注。

SRP和顏色空間的使用狀況圖

ASTC紋理的使用佔比趨勢圖

熱更新庫和序列化庫的使用趨勢圖

同時,咱們將本地資源檢測服務中的檢測結果進行了分析統計。對於檢測未經過率高達70%以上的Top10的檢測規則,建議你們多關注。研發團隊也能夠自行使用該服務,以檢測自身項目是否存在相似的問題。


 

◆◆◆◆◆

UWA對於MMORPG手遊研發團隊的建議

一、 警戒渲染模塊、邏輯代碼這兩大性能殺手!隨着精品化MMORPG項目的日益增多,這兩項在接下來依然是研發團隊在性能優化時的重中之重!

二、 內存泄露問題在過去的一年有惡化趨勢,數據顯示40%的項目存在着泄露問題,Mono堆內存、紋理、網格、RenderTexture和粒子系統依然是你們接下來須要關注的重點。特別是Mono堆內存部分,對於序列化信息的管理已經刻不容緩,在接下來的一年,UWA會盡量爲各大研發團隊解決和監控這一內存難題。建議經過Mono和Asset模式持續監控。

三、 資源加載方面,在過去的一年中,LoadFromFile(Async)已是移動遊戲項目中的主流加載方式,AssetBundle.Load(Async)一樣也是資源加載的主流方式,而且取得了明顯的效果,UWA也建議國內各大研發團隊開始着手進行學習和研究。

四、GPU性能問題在過去的一年中逐步凸顯,在很多超重度MMO遊戲中,GPU已經儼然成了遊戲項目的主要瓶頸,對此,建議研發團隊經過GOT Online的Overview模式檢測GPU耗時,從而定位GPU的瓶頸。


 

卡牌篇

卡牌遊戲做爲目前遊戲市場上的中堅力量,在UWA測評過的項目中,也佔據了主要份額,所以咱們以該類型的測評數據爲例,爲你們呈現2019-2020年的手遊性能現狀和發展趨勢。

報告目錄:
1)卡牌手遊整體性能開銷分析
2)卡牌手遊CPU模塊性能開銷分析
3)卡牌手遊內存模塊性能開銷分析
4)卡牌手遊資源管理分析

◆◆◆

卡牌手遊整體性能開銷分析

Android設備的CPU均值主體範圍爲7.9~56.2 ms,且主要集中在17~33ms和< 17ms兩檔。

按照UWA官網(www.uwa4d.com)的測評機型分類,咱們將統計的性能數據分爲低端、中端和高端;在趨勢圖中則直接以最具備表明性的低端和高端來展示。

大部分卡牌手遊在中低端設備的性能開銷較好,大於33ms的耗時佔比範圍僅佔30%。

不管是高端仍是低端的Android設備,渲染和邏輯代碼都是須要研發團隊重點關注的,它們的消耗總和佔了總開銷的近80%。

下面咱們就來具體分析這些主流模塊的開銷狀況。


 

◆◆◆◆

卡牌手遊CPU模塊性能開銷分析

1、渲染模塊

嚴重程度:普通

爲了可以更好地反映出各個性能參數的總體使用狀況,咱們統計了每種性能參數的主體使用範圍,其範圍區間是[5%~95%],如下數據中P5表明5%,P50表明均值,P95表明95%。

在過去的4個季度中,半透明渲染和不透明渲染在高端和低端設備上的性能均較爲穩定。

2、邏輯代碼

嚴重程度:地獄

1)GC觸發頻率很高,是形成卡頓的主要緣由之一,目前只有51.2%的項目能夠將GC的觸發頻率控制在1000幀/次以上。
2)遊戲玩法愈來愈重度化,GC平均耗時在逐步上升。GC耗時會逐漸成爲遊戲運行時的主流性能殺手,須要研發團隊時刻注意。

咱們能夠看到,在過去的Q2中,Instantiate調用頻率有明顯降低,這說明你們在項目中不斷重視對於資源Instantiate/Destroy的管理。

若是你們的項目中仍有大量的Instantiate/Destroy調用,那麼咱們建議您着重查看UWA線上性能報告中資源管理分類的資源實例化/激活頁面,經過它能夠快速掌握到底具體哪些GameObject在不停地被執行實例化操做,從而更爲高效地減小沒必要要的性能開銷。

Shader.Parse 操做是比較突出的性能殺手,但咱們看到在2019的Q4中已經大幅度降低,目前平均每次調用的CPU耗時主要分佈在 0.7~76.8 ms。

3、UI模塊

嚴重程度:地獄

目前咱們主要統計了NGUI和UGUI的佔比以及詳細的使用狀況。在剛剛過去的四個季度中,UGUI的使用佔比依然強勢,最高時可達97%。NGUI的佔比有明顯降低的趨勢。

下面咱們將分別說明它們的CPU耗時和堆內存佔用狀況。

UI模塊的性能開銷依然很高,但相較於去年相比確實有進一步提高。這主要是在這一年多以來,各大研發團隊對於UGUI的理解和掌握都在不斷深刻。固然,如今UGUI的明顯性能問題主要有如下四方面:

  1. Draw Call;
  2. 重建;
  3. OverDraw;
  4. 主線程阻塞。

針對以上問題,你們能夠經過UWA學堂(https://edu.uwa4d.com)中UI相關的相關技術問題和視頻進行學習和了解,相信對幫助你們快速提高UI方面的技術理解大有裨益。

4、動畫模塊

嚴重程度:普通

動畫模塊在最近一年來的性能表現一直較爲平穩,這說明你們對於動畫模塊中應有的性能優化點掌握已經較爲到位。

5、物理模塊

嚴重程度:普通

物理模塊的性能存在上升趨勢,特別是高端設備上。對於使用Unity 2017.4版本之後的團隊,Auto Simulation和Auto Sync Transforms是你們須要關心的參數,以免沒必要要的性能耗時。

6、粒子模塊

嚴重程度:普通

粒子系統的CPU開銷廣泛較低,但整體使用數量峯值在2020 Q1後大幅上升。咱們依然建議研發團隊儘量將數量峯值控制在600如下(低端設備)和1000如下(中高端設備)。對此,建議研發團隊常常經過如下兩方面來檢測本身的粒子特效使用狀況:
1)粒子系統(特別是技能特效)的配置文件是否過量;
2)特效中是否含有長久不用的粒子系統。


 

◆◆◆

卡牌手遊內存模塊開銷分析

內存泄露

嚴重程度:噩夢

咱們建議研發團隊後續可更爲頻繁地進行檢測和監控,便可進一步下降堆內存泄露的風險。研發團隊可經過如下兩種方式高效地對堆內存泄露函數進行分析和優化:
1)UWA GOT Online中的詳細Mono堆內存分析和Lua性能分析報告
2)UWA線上深度測評中的詳細Mono堆內存測評報告

整體內存

嚴重程度:噩夢

整體內存在最近的一年裏,峯值均值較爲穩定。對此,咱們將在接下來的文章中進行詳細分析。

整體堆內存

嚴重程度:噩夢

整體堆內存在最近一年裏在70-80MB震盪。

項目的內存佔用很大一部分來自於資源的使用,下面咱們將對項目中主流資源的使用狀況進行分析。

紋理資源內存

嚴重程度:噩夢

如上圖所示,對於紋理資源來講,在過去的2個季度中,其內存佔用處於降低階段。建議研發團隊對於紋理Mipmap使用狀況、渲染利用率等進行進一步的檢測和完善。

網格資源內存

嚴重程度:普通

網格資源內存峯值主要分佈爲1.5~ 64.8 MB。其最近一年的使用趨勢較爲平穩,均值均在20MB-30MB浮動。

動畫資源內存

嚴重程度:普通

動畫模塊的內存使用趨勢較爲平穩,平均峯值內存長期控制在20~30MB區間以內。

Shader資源內存

嚴重程度:普通

這裏,UWA仍然須要提醒的是,Standard Shader在你們的項目中被常常誤引入進來,建議你們在UWA性能簡報中的「具體資源使用信息」中特別關注Standard Shader的使用狀況。

RenderTexture資源內存

嚴重程度:噩夢

RenderTexture的內存佔用在進入2020年Q1之後上升趨勢明顯,特別是在低端設備上,隨着你們對於圖像後處理效果的需求提高,後續極可能會出現RenderTexture使用程度大幅提高的狀況,所以,建議研發團隊對RenderTexture密切關注。

粒子系統資源內存

嚴重程度:噩夢

粒子系統的使用數量過大,從而致使其內存佔用太高。對此,其最有效的優化方法仍是下降粒子系統的使用數量,同時研發團隊能夠考慮在高端設備上使用GPU Particle 新功能,將大幅度提高粒子模塊的性能。


 

◆◆◆◆

卡牌手遊資源管理分析

AssetBundle加載方式(Load和LoadAsync)的使用佔比在過去的一年中都保持在80%左右。毫無疑問,AssetBundle加載方式是目前絕大多數研發團隊的資源加載首選。

在接下來的一年中,咱們仍然建議你們使用AUP(Async Upload Pipleine)功能來嘗試達到更高的加載效率。關於AUP中須要特別關注的技術點,建議查看UWA DAY 2019中的相關分享《Unity引擎加載模塊和內存管理的量化分析及優化方法》,同時,咱們在今年UWA DAY 2020上有了更詳細的補充,建議你們後續關注。

在衆多加載方式中,LoadFromFile加載方式依然是一家獨大,LoadFromFile+LZ4的組合在移動遊戲中加載性能優點明顯,依然是移動遊戲資源加載的不二選擇。

1)對於Instantiate/Destroy的完善,研發團隊需時刻關注緩存池的使用是否合理;
2)對於Active/Deactive的完善,則須要研發團隊儘量注意避免UI和動畫角色的頻繁調用,從而儘量避免沒必要要的調用開銷。

除了以上信息,今年UWA DAY 2020上咱們還分享了其餘重要的性能參數數據,不只適用於卡牌項目:譬如ASTC紋理的使用狀況、SRP項目的使用狀況、顏色空間的使用狀況等,這些都是你們在立項或研發階段較爲關心的話題,咱們將在後續的UWA DAY 2020視頻中播出,歡迎你們關注。


 

ACT篇

ACT做爲目前遊戲市場上的中間力量,在UWA測評過的項目中,也佔據了主要份額,所以咱們以該類型的測評數據爲例,爲你們呈現2019-2020年的手遊性能現狀和發展趨勢。

報告目錄:
1)ACT手遊整體性能開銷分析
2)ACT手遊CPU模塊性能開銷分析
3)ACT手遊內存模塊性能開銷分析
4)ACT手遊資源管理分析

◆◆◆

ACT手遊整體性能開銷分析

Android設備的CPU均值主體範圍爲9.1~70.5 ms,且主要集中在17~33ms和33~50ms兩檔。

按照UWA官網(www.uwa4d.com)的測評機型分類,咱們將統計的性能數據分爲低端、中端和高端;在趨勢圖中則直接以最具備表明性的低端和高端來展示。

不管是高、中仍是低端的Android設備,渲染和邏輯代碼都是須要研發團隊重點關注的,它們的消耗總和佔了總開銷的80%左右。與MMO和卡牌RPG不一樣的是,ACT手遊的邏輯代碼耗時佔比是最高的,這主要與角色、怪物的數量愈來愈多相關。隨着其不斷增長,邏輯狀態的更新開銷、AI開銷等都在大幅增長,這是須要遊戲研發團隊中密切關注的耗時瓶頸。

下面咱們就來具體分析這些主流模塊的開銷狀況。


 

◆◆◆◆

ACT手遊CPU模塊性能開銷分析

1、渲染模塊

嚴重程度:噩夢

爲了可以更好地反映出各個性能參數的總體使用狀況,咱們統計了每種性能參數的主體使用範圍,其範圍區間是[5%~95%],如下數據中P5表明5%,P50表明均值,P95表明95%。

在過去的4個季度中,半透明渲染和不透明渲染耗時均在必定程度上有所震盪,且從總體趨勢來看耗時均在逐步上升,建議關注。

2、邏輯代碼

嚴重程度:地獄

1)GC觸發頻率很高,是形成卡頓的主要緣由之一,目前只有37.6%的項目能夠將GC的觸發頻率控制在1000幀/次以上。
2)隨着ACT遊戲愈來愈重度化,GC平均耗時在逐步上升。GC耗時會逐漸成爲遊戲運行時的主流性能殺手,須要研發團隊時刻注意!

若是你們的項目中仍有大量的Instantiate/Destroy調用,那麼咱們建議您着重查看UWA線上性能報告中資源管理分類的資源實例化/激活頁面,經過它能夠快速掌握到底具體哪些GameObject在不停地被執行實例化操做,從而更爲高效地減小沒必要要的性能開銷。

Shader.Parse 操做是比較突出的性能殺手,目前平均每次調用的CPU耗時主要分佈在 0.6~60.6ms。在2019 Q4之後,Shader.Parse的CPU開銷降低明顯,說明你們對於該函數的理解愈來愈深刻。

關於邏輯代碼方面的優化,強烈推薦你們參閱UWA DAY 2020演講議題《手中的銀河》,該項目在解決全球同服、千人團戰等特點需求的過程當中,總結出很多邏輯層面的優化心得。

3、UI模塊

嚴重程度:地獄

目前咱們主要統計了NGUI和UGUI佔比的使用狀況。在剛剛過去的四個季度中,UGUI的使用佔比依然強勢,最高時可達63%。NGUI的佔比有明顯降低的趨勢,在2020 Q2時又上升至44%。

下面咱們將分別說明它們的CPU耗時和堆內存佔用狀況。

UI模塊的性能開銷依然很高,但相較於去年相比確實有進一步提高。這主要是在這一年多以來,各大研發團隊對於UGUI的理解和掌握都在不斷深刻。固然,如今UGUI的明顯性能問題主要有如下四方面:

  1. Draw Call;
  2. 重建;
  3. OverDraw;
  4. 主線程阻塞。

針對以上問題,你們能夠經過UWA學堂(https://edu.uwa4d.com)中UI相關的相關技術問題和視頻進行學習和了解,相信對幫助你們快速提高UI方面的技術理解大有裨益。

4、動畫模塊

嚴重程度:噩夢

動畫模塊在最近一年來的性能耗時逐步上升,這說明你們對於動畫模塊愈來愈重度。目前ACT項目中的角色、NPC和怪物等數量持續有在增長,咱們建議對於大量同種模式儘量經過GPU Skinning的方式來完成。

5、物理模塊

嚴重程度:普通

物理模塊的性能存在上升趨勢,特別是高端設備上。對於使用Unity 2017.4版本之後的團隊,Auto Simulation和Auto Sync Transforms是你們須要關心的參數,以免沒必要要的性能耗時。

6、粒子模塊

嚴重程度:普通

粒子系統的CPU開銷廣泛較低,但整體使用數量峯值均值在2020 Q1後大幅上升,咱們依然建議研發團隊儘量將數量峯值控制在600如下(低端設備)和1000如下(中高端設備)。對此,建議研發團隊常常經過如下兩方面來檢測本身的粒子特效使用狀況:

1)粒子系統(特別是技能特效)的配置文件是否過量;
2)特效中是否含有長久不用的粒子系統。

在前不久的UWA DAY 2020大會上,廣州庫洛的技術負責人林晨晨就《戰雙帕彌什》的粒子系統優化作了深度的分析,推薦你們學習觀看https://edu.uwa4d.com/course-intro/1/207


 

◆◆◆

ACT手遊內存模塊開銷分析

內存泄露

嚴重程度:噩夢

關於內存泄露的問題,咱們建議研發團隊後續可更爲頻繁地進行檢測和監控,便可進一步下降堆內存泄露的風險。研發團隊可經過如下兩種方式高效地對堆內存泄露函數進行分析和優化:
1)UWA GOT Online中的詳細Mono堆內存分析和Lua性能分析報告
2)UWA線上深度測評中的詳細Mono堆內存測評報告

整體內存

嚴重程度:地獄

整體內存在最近的一年裏,峯值均值穩步提高,共計提高了近100MB。隨着高端移動設備的普及、ACT遊戲的逐步重度化,內存逐步提高是一個必然的趨勢。目前,項目中的主要內存瓶頸依然是資源和Mono堆內存。對此,咱們將在接下來的文章中進行詳細分析。

整體堆內存

嚴重程度:地獄

整體堆內存在最近一年裏上升趨勢很是明顯,這主要是遊戲的重度化所致。但另外一方面,也是研發團隊對於Mono堆內存分配的疏於管理所致。就目前而言,Mono堆內存太高主要是由於配置文件的序列化庫使用不當所致。

項目的內存佔用很大一部分來自於資源的使用,下面咱們將對項目中主流資源的使用狀況進行分析。

紋理資源內存

嚴重程度:噩夢

如上圖所示,對於紋理資源來講,在過去的4個季度中,其內存佔用處於逐步上升趨勢。建議研發團隊對於紋理Mipmap使用狀況、渲染利用率等進行進一步的檢測和完善。

網格資源內存

嚴重程度:噩夢

網格資源內存峯值主要分佈爲 0.8~ 131.6 MB。從使用趨勢上來看,其最近一年的使用趨勢較爲平穩,均值均在20MB-40MB浮動。

動畫資源內存

嚴重程度:普通

動畫模塊的內存使用趨勢較爲平穩,平均峯值內存長期控制在30MB以內。

Shader資源內存

嚴重程度:普通

這裏,UWA仍然須要提醒的是,Standard Shader在你們的項目中被常常誤引入進來,建議你們在UWA性能簡報中的「具體資源使用信息」中特別關注Standard Shader的使用狀況。

RenderTexture資源內存

嚴重程度:噩夢

RenderTexture的內存佔用在進入2019年Q3之後上升趨勢明顯,特別是在低端設備上,隨着你們對於圖像後處理效果的需求提高,後續極可能會出現RenderTexture使用程度大幅提高的狀況,所以,建議研發團隊對RenderTexture密切關注。

粒子系統資源內存

嚴重程度:噩夢

粒子系統的使用數量過大,從而致使其內存佔用太高。對此,其最有效的優化方法仍是下降粒子系統的使用數量,同時研發團隊能夠考慮在高端設備上使用GPU Particle 新功能,將大幅度提高粒子模塊的性能。

同時,UWA已經推出了本地資源檢測服務,針對項目工程中的靜態資源(好比紋理、網格、音頻、動畫以及粒子系統、代碼設置等等)可作檢測,來檢測美術資源是否有哪些資源設置不合理,作到靜態資源的及時問題反饋、及時修復。

 

◆◆◆◆

ACT手遊資源管理分析

AssetBundle加載方式(Load和LoadAsync)的使用佔比在過去的一年中都保持在80%左右。毫無疑問,AssetBundle加載方式是目前絕大多數研發團隊的資源加載首選。

在接下來的一年中,咱們仍然建議你們使用AUP(Async Upload Pipleine)功能來嘗試達到更高的加載效率。關於AUP中須要特別關注的技術點,建議查看UWA DAY 2019中的相關分享《Unity引擎加載模塊和內存管理的量化分析及優化方法》,同時,咱們在今年UWA DAY 2020上有了更詳細的補充,建議你們後續關注。

在衆多加載方式中,LoadFromFile加載方式依然是一家獨大,LoadFromFile+LZ4的組合在移動遊戲中加載性能優點明顯,依然是移動遊戲資源加載的不二選擇。

對於Addressable感興趣的團隊,能夠查看UWA DAY 2020的《基於Addressable資源管理系統的大地形加載方法探究》,咱們對其進行了詳細的分析。

1)對於Instantiate/Destroy的完善,研發團隊需時刻關注緩存池的使用是否合理;
2)對於Active/Deactive的完善,則須要研發團隊儘量注意避免UI和動畫角色的頻繁調用,從而儘量避免沒必要要的調用開銷。

除了以上信息,今年UWA DAY 2020上咱們還分享了其餘重要的性能參數數據,不只適用於ACT項目:譬如ASTC紋理的使用狀況、SRP項目的使用狀況、顏色空間的使用狀況等,這些都是你們在立項或研發階段較爲關心的話題,如今均已在UWA學堂上播出。

若是你們優化CPU,《Unity移動遊戲項目優化案例分析》是你們的優化寶典。

若是你們關注內存層面的優化,一塊兒向《天諭》手遊學習內存控制的絕技。

....

更多優秀精品課程,關注UWA學堂,瞭解最新UWA DAY 2020課程。

相關文章
相關標籤/搜索