【求知探新】獨立遊戲《Abi》場景耗時分析

原文鏈接:【求知探新】獨立遊戲《Abi》場景耗時分析 - Blog

【求知探新】是UWA新推出的欄目。在UWA團隊做性能優化的過程中,常常會遇到一些未知的問題,在這裡我們將分享UWA研究這些問題的完整過程。當然需要說明的是,一個好的問題沒有標準的答案,在此也歡迎大家來積極拍磚!

今天我們分享的內容,是來自當下熱門的獨立遊戲Abi,該遊戲由莉莉絲開發,目前在Taptap上已獲得9.6的高分。在測試該項目時,我們發現了其在中低端手機上幀率較低,且設備發熱較為嚴重。通過和研發人員的溝通,我們剖析了導致該問題的原因,並將分析過程和解決方案在此分享。

一、問題描述

遊戲在該場景下測試時,中低端設備上的表現為幀率較低,且設備發熱較為嚴重。

二、問題復現

針對研發團隊提供的例子,我們進行了研究分析,並在低端設備上(紅米2 & 紅米Note2)復現了該問題,具體CPU耗時如下圖所示,無論是紅米2還是紅米Note2,其幀率均在25幀以下。

紅米2:Gfx.WaitForPresent – 平均46ms

紅米Note 2:Gfx.WaitForPresent – 平均31ms

三、問題分析

Gfx.WaitForPresent在低端機上持續過高,這可以說明目前的性能瓶頸是在GPU上,而非CPU上。對此,我們對其場景進行了檢測,發現如下:

(1) Android端已經關閉AA功能;

(2) 場景中存在兩個Realtime的Directional Light,且均開啟了實時陰影;

(3) 場景中存在5~6個Realtime的Point Light。

從檢測結果來看,場景中實時光源過多,是GPU壓力過大的主要原因。因此,我們對其進行了測試,我們只保留場景中一個Directional Light為Important光源,而其他光源均設置為Not Important,其在紅米Note2設備上的性能開銷如下圖所示。Gfx.WaitForPresent已經降低到平均14ms,且幀率已經被穩定在45FPS。

同時,我們也嘗試關閉一個Directional Light的實時陰影,但性能提升不明顯,這說明該陰影並不是GPU端的主要壓力。

另外,我們也測試了兩種不同情況下的設備耗能情況。在未優化的情況下,移動設備(測試設備為小米5S)的耗電率為20.07%/小時,在只保留一個Important Directional Light時,移動設備的耗電率下降到16.44%/小時,即設備耗能節省了20%。

四、結論

從上述分析可知,當前遊戲場景在中低端設備上幀率較低、發熱較快的主要原因是GPU性能壓力過大,而根本原因是場景中使用了過多的Important實時光源。對此,建議研發團隊根據實際情況,儘可能控制場景中的Important實時光源數量,從而降低GPU的性能壓力。

文末,感謝Abi團隊對於UWA團隊的認可,並同意將以上研究過程中的性能數據在此分享。同時,我們也歡迎大家在UWA問答社區(answer.uwa4d.com)積極提交研發過程中遇到的問題。也許隨著時間的流逝,科技的進步,答案將變得廉價,但問題會變得更有價值,因為提問和研究將比回答更有力量。

PS:安利這款超暖心的遊戲,已經可以在TapTap上預約了哦~


推薦閱讀:

淺談基於數據分析的網路態勢感知
同一代的賽揚,奔騰,酷睿和至強處理器性能差距到底有多大?

TAG:场景 | 性能分析 | 优化 |