隨著游戲內容不斷豐富、業務邏輯持續復雜化、畫面表現持續升級,功耗問題正在成為移動游戲領域越來越突出的痛點。
很多團隊都會遇到類似情況:
游戲幀率穩定,但設備發熱嚴重
測試階段一切正常,但長時間運行后功耗異常
明明做了大量優化,但續航依然不理想
過去一年,我們針對移動游戲功耗問題進行了大量調研與實踐,并逐步整理出一套相對可量化的功耗分析方法。
這套方法的目標很簡單:不僅能看到功耗變化,更能找到功耗產生的真正原因。
《移動端Unity游戲功耗調優的破局實踐》主要分為三個部分:
1?? 功耗分析工具介紹
2?? 能耗影響因素
3?? 項目中總結的功耗優化 Best Practices
本文先帶大家看第一部分:功耗分析工具。
![]()
1
傳統功耗分析工具的問題
在很多項目中,比較常見的做法是使用 GOT Online。通過它,我們可以看到類似這樣的信息:
整體功耗曲線
測試過程中的功耗趨勢變化
![]()
另外,在我們提供的免費性能分析工具 Gears中,也提供了類似的Power 曲線,可以直觀查看:
測試過程中的整體功耗走勢
最終的平均功耗數值
![]()
這些工具對于宏觀觀察功耗趨勢非常有幫助。但它們有一個非常關鍵的局限:只能看到功耗變化,但無法告訴你功耗為什么上升。例如:是 GPU 壓力過大?還是 CPU 負載過高?又或者是 某個系統模塊突然消耗大量能量?
如果無法回答這些問題,功耗優化就很難真正落地。
因此,我們一直在尋找一種能夠對功耗進行定量分析的工具,從而明確:到底是哪個模塊導致了能耗異常增長。
![]()
2
我們嘗試過的幾種方案
在調研過程中,我們陸續嘗試了多種工具。
1、Trepn Profiler
首先嘗試的是 Trepn Profiler。從名字來看,它似乎是一個專門做能耗分析的工具。
![]()
但在實際使用過程中,我們發現:
可采集的數據維度非常有限
基本只能看到少量 CPU 核心頻率變化
很難和實際功耗問題建立有效關聯
最終,這個工具并沒有為我們的分析提供太大幫助,因此被放棄。
2、ADB BatteryStats
隨后我們嘗試了 ADB 命令行中的 BatteryStats。它可以通過命令行統計設備的電量消耗,并按 進程 UID 輸出相關數據,例如:Screen、CPU、Audio、Video、Wi-Fi......
![]()
如果將這些數據整理并做可視化分析,就可以得到類似這樣的趨勢:斜率越高,對應模塊的能耗越大。
這種方式確實能讓我們大致判斷:
哪些模塊的功耗占比較高
功耗趨勢是上升還是下降
但它仍然存在兩個明顯問題:
1?? 數據維度仍然偏抽象
2?? 無法進一步定位具體行為
例如:為什么 CPU 功耗突然升高?是腳本邏輯?動畫?UI?還是物理系統?
這些問題,BatteryStats 仍然無法回答。
3、Android Studio Power Rails
后來我們發現了 Android Studio 中的 Power Rails 功能。相比前面兩個工具,它的信息要詳細得多。
它可以將功耗拆分到多個硬件維度,例如:
CPU 大核 / 中核 / 小核
GPU
Display
![]()
從數據粒度上來說,這已經非常接近我們想要的效果。
但Power Rails 也有幾個限制:
只能在 Google Pixel 設備上使用
被采集的 App 必須是 debuggable
測試時間不能太長,否則數據量會過大
因此在實際項目中使用仍然比較受限。
![]()
3
我們最終推薦的工具:Perfetto
經過多輪測試之后,我們最終更推薦使用 Perfetto 來進行功耗采集。
它的優勢主要體現在幾個方面:
1、支持更長時間的功耗采集
通過 Perfetto 的網頁工具,可以開啟:Battery & Power Rails相關選項。
![]()
相比 Android Studio,Perfetto支持更長時間的測試,例如:持續 1 小時的功耗采集。
![]()
對于大多數項目來說,這已經足夠覆蓋完整測試場景。
2、配置簡單
在 Perfetto 的主界面中:
點擊 Record new trace
選擇 WebUSB 連接手機
點擊 Connect new device
選擇當前連接的設備
![]()
當界面中出現綠色提示信息時,就表示設備已經連接成功。
隨后點擊 Start Tracing 開始采集。測試一段時間后點擊 Stop,即可生成分析數據。
3、可以直接查看模塊功耗排名
在分析結果中,我們可以按照 Average Power 排序查看各模塊功耗。
![]()
例如在某些測試場景中:GPU 功耗最高,這就意味著優化重點應該放在:
渲染復雜度
Shader
DrawCall
分辨率
后處理
而在另一些測試中,我們會看到:CPU 大核功耗占比最高,這通常意味著問題可能來自:
游戲邏輯
動畫系統
UI 更新
物理系統
資源加載
通過這種方式,我們就可以非常清晰地定位:功耗壓力究竟來自哪個模塊。
4、支持正式版本游戲分析
Perfetto 還有一個非常重要的優勢:被采集的應用不需要是 debuggable。
也就是說:即使是 應用商店下載的正式版本游戲,也可以直接進行功耗分析。這對于真實項目問題定位來說非常關鍵。
當然,它同樣存在一個限制:功耗采集仍然需要使用 Google Pixel 設備。
![]()
4
未完待續
在解決了功耗數據采集問題之后,接下來更關鍵的是:哪些因素會真正影響游戲功耗?CPU、GPU、屏幕、系統模塊分別占多少?哪些優化手段最有效?
在接下來的內容中,我們將基于大量實際項目數據,深入分析:基于工具采集到的數據,分析影響能耗的主要因素以及我們總結的一些 Best Practices。
https://edu.uwa4d.com/course-intro/1/630
![]()
1
![]()
2
![]()
3
![]()
4
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
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.