今天給大家帶來的案例分享來自于一款使用了UWA GPM 2.0的二次元共斗ARPG手游。該項目以其精美的角色立繪、炫酷的技能特效和爽快的戰斗節奏,在測試階段便吸引了大量玩家的目光。當然,更好的畫面品質同樣也意味著會帶來更大的性能挑戰,只有玩家真的“玩爽了”,才能真的放下心來。以下我們將著重描述通過GPM 2.0發現的高功耗引發的GPU瓶頸,以及UWA建議的優化方案。
功耗
通過GPM 2.0的截幀功能發現,在游戲的一些主要場景中,當畫面內出現一些比較華麗的特效或大面積的陰影時,通常會出現一些較高的功耗均值與峰值,某些情況下甚至會出現10000mW以上的極高值。
10000mW高功耗處截幀顯示在大場景中進行戰斗
8000mW高功耗處截幀顯示正在釋放某個特效
功耗作為一個和耗電量、溫度直接相關的性能參數,其優劣表現也很容易為玩家所感知。在功耗均值較高的時候,我們發現有玩家的設備上8分鐘內就耗電6%;而在一些集中出現技能特效的設備溫度持續上升達到了60℃以上,并最終導致了CPU的降頻從而造成FPS掉幀的情況。
針對這些情況,UWA建議項目組結合UWA GOT Online工具,驗證和定位導致高功率的原因和其性能影響。
舉例來說,在小米12(SOC為驍龍8 Gen1)這一高端設備上測試,復現了游戲運行過程中功率過高的現象。根據UWA結合大量項目經驗和定量測試給出的推薦值來看,當前硬件設備和對應畫質分級下的功率開銷遠超合理水平,這必然地會造成嚴重發熱。
同時,報告中還有一些參數曲線和該性能問題強相關。首先,可以看到進入主要游戲場景后,溫度峰值確實飆升到80°C;緊接著,發現溫度和幀率曲線都存在隨著測試時間增加而大幅波動的現象,甚至緊接著大幅下降。這種變化趨勢和CPU大核(CPU 8)的頻率變化趨勢非常相近。可見,高功率不但可能導致玩家體驗時手感發燙,更多時候則是會因高溫觸發硬件的保護機制產生降頻,使得芯片算力下降,從而導致掉幀。
那么,已知發熱問題嚴重的前提下,如何定位問題呢?在UWA GOT Online Overview模式報告的模塊耗時統計中,在發生降頻、各個模塊耗時都有所上升的前提下,多數模塊的耗時都仍在推薦值范圍內或超出推薦值不多,盡管邏輯、物理等模塊可能仍有進一步改進的空間,但基本可以推斷CPU端壓力并非功率過高和發熱的主因,此時可考慮關注GPU端的壓力。
在設備OPPO Reno9 Pro(SOC為天璣8100-Max)的GOT Online GPU模式的專報告中發現全程GPU Clocks偏高,符合UWA定義的GPU Bound概念,即游戲運行時渲染畫面所需要的GPU算力,總是迫使GPU以最高頻率運作,此時功耗發熱顯然遠比低壓空閑時嚴重,并可能導致掉幀。
該項目和眾多近兩三年來UWA發現的存在GPU壓力的項目存在一個共同點,即GPU壓力的主要來源大概率為片元階段的計算開銷。由下圖參數可知,GPU在每幀中所要執行的Fragment Shader次數過多、也即每幀繪制的像素過多,這說明項目的渲染分辨率(即GPU畫一遍屏幕的像素數量)和Overdraw(即繪制多少遍屏幕)兩個因素過高,乘積導致了GPU渲染壓力。當然,有的項目的片元計算高壓的主要瓶頸來源于復雜的Fragment Shader計算,同樣需要引起關注。
其中,結合開啟“Resource”采集后獲取的Render Texture資源列表是分析片元計算壓力的重要手段之一。如圖例,該項目中使用了默認的真機分辨率進行渲染;使用了SMAA、Bloom等常見開銷較大的后處理等。這些渲染策略都可能對功耗發熱問題產生巨大貢獻。UWA推薦的一種方式是使用開關對比測試評估這些方案和優化策略對自身項目的實際影響幅度,通過上述GPU和硬件的一系列參數的變化體現出來。
而在Overdraw層面,GOT Online GPU模式還提供了Overdraw快照功能定位高壓場景中導致過高Overdraw的渲染對象,常見的如技能特效、場景特效、UI元素等。定位后,再針對相應美術資源進行優化以大幅提升性能。
在GPU模式中,除了上述GPU Clocks相關的參數需要排查外,還有一個重要參數直接影響GPU端的功耗發熱問題,即GPU帶寬。在示例項目中的主要玩法內,帶寬持續在7-9GB/s,遠超常見移動項目水平,已經達到了會顯著導致發熱的問題。針對帶寬,則可結合頁面下的相關參數,排查紋理采樣方式、渲染策略使用、頂點數量等常見導致高帶寬的問題。
通過以上流程,便定位了這樣一個功率嚴重過高、發熱已經導致降頻的項目的性能瓶頸,并獲得了相應的執行優化工作和驗證優化結果的方法論。
內存
GPM 2.0報告顯示,有36.97%的Session報告中PSS內存峰值均超過了2000MB,部分設備的峰值甚至達到了4000MB以上。由于玩家所使用設備中,目前玩家設備中6GB RAM和4GB RAM的設備占比各占5%(共10%),而目前項目的高內存占用已直接威脅到這些設備的穩定性,極可能引發OOM崩潰。
例如游戲中的內存占用隨時間持續增長且無釋放趨勢,這是一種非常明顯的、疑似PSS內存泄漏的內存走勢表現。在80分鐘的時長中,內存從1GB增長至約4GB。
針對內存泄露問題,UWA建議進行較長的測試流程,或重復進出關鍵玩法場景的專項測試以復現泄露問題,使用GOT Online “資源對象快照”功能,對比場景切換前后的內存分配差異,定位未釋放資源。
但這種適用于很多常見存在內存泄漏問題項目的思路對于當前示例項目而言并不完全適用。如圖為在20分鐘內反復進入切出游戲的主要玩法場景后,項目的紋理資源內存曲線。該項目的各種資源內存基本都類似紋理資源,即在反復的場景切換過程中能夠及時釋放和卸載,呈現“城墻式”有升有降的曲線,應認為相關的資源加載卸載的管理策略是較為合理的。當然,這些資源的內存基數仍然超過推薦值較多,具有結合資源列表進一步排查優化的價值。
那么泄露的原因是什么呢?在報告中另一種類的內存曲線中可窺一斑。Mono堆內存(即C#托管堆內存)在測試過程中呈現了大幅度的持續上升趨勢,泄露現象明顯。此時可結合GOT Online Mono模式測試,進一步定位存在泄露的函數堆棧或堆內存對象,從而回到代碼中進行優化。
不過,根據UWA近年的經驗,隨著移動端項目體量整體增大,本身資源和代碼量持續上升、使用的各類引擎功能和外部插件也越來越多,很多項目的內存性能分析變得更為復雜。上述資源、Mono這兩種僅是多種多樣內存問題中相對較常見的兩種。
隨著越來越多的項目團隊開始注重玩家實際游玩過程中的體驗,線上項目的質量監控正在逐漸流行。 UWA GOT Online和GPM 2.0作為分別對應測試包與線上包的性能檢測與監控工具,已在多個項目團隊身上證實了他們可以形成的高效閉環。 GPM 2.0的宏觀數據讓我們看清問題的全貌,而GOT Online的微觀分析則讓我們精準切入每一個性能瓶頸。 從內存泄漏的排查到GPU瓶頸的優化,從低配設備的適配到高功耗場景的調優,兩者的無縫配合讓性能優化不再是“盲人摸象”,而是有據可依、有法可循的科學實踐。
關于GPM 2.0
GPM 2.0 是一款專為上線或測試階段的游戲項目打造的高效性能監測工具。它不僅深入捕捉宏觀性能數據,還通過其獨特的性能無損截圖功能,讓開發者在不影響玩家體驗的前提下,全面掌握玩家運行時的關鍵細節,從多個維度優化游戲的性能表現,提升整體用戶體驗。
如果您的項目也希望體驗GPM 2.0的強大功能,歡迎隨時與UWA取得聯系。我們將為您提供免費試用機會,并在試用期間全程支持服務搭建、數據分析與反饋,確保您能夠充分體驗GPM 2.0帶來的價值。
聯系UWA:
郵件:sales@uwa4d.com
微信號:17502188376
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
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.