本指南說明如何分析及最佳化 Android 裝置上的遊戲效能,提供流暢的使用者體驗。內容涵蓋找出效能瓶頸、區分 CPU 和 GPU 問題,以及驗證最佳化結果。
無論遊戲多麼有趣或引人入勝,如果無法在行動裝置上順暢運作,玩家就不會喜歡,遊戲也不會成功。即使是好玩的遊戲,也可能出現每秒影格數 (FPS) 偏低或裝置過熱等問題。這些問題會讓玩家不滿意。因此,提升遊戲效能至關重要,您必須瞭解如何進行最佳化。
成效最佳化程序包含下列步驟:
評估整體遊戲效能。以每個場景為單位量化效能下降情形,找出異常狀況。
CPU 和 GPU 繫結檢查。判斷根本原因,是 CPU 還是 GPU 限制。
工具:Unreal Insight、Unity Profiler、Perfetto 和效能評估工具。
CPU 最佳化。修正發現的效能瓶頸。
工具:Unreal Insight、Unity Profiler、Perfetto 和 Simpleperf。
GPU 最佳化。修正發現的效能瓶頸。
工具:RenderDoc、Arm Mobile Studio、AGI、廠商專屬工具。
A/B 測試。進行 A/B 測試,嚴格驗證所導入最佳化措施的成效。
工具:Unreal Insight、Unity Profiler、Perfetto 和效能評估工具、CPU 或 GPU 頻率鎖定,以及 RenderDoc。
這個疊代程序 (1-5) 會持續進行,直到成功達到目標 FPS 和熱參數為止。
必要條件
準備好遊戲版本,以便在 Android 裝置上測試。
安裝下列工具:
全面分析遊戲成效
您必須檢查遊戲的整體效能,並找出任何場景效能下降或異常情況。最佳化遊戲前,請先檢查目前的效能。由於遊戲包含許多 UI 和場景,因此請分析 CPU 或 GPU 使用率偏高的場景,或效能異常的版面配置,監控效能下降情形,以及每個場景的 CPU 或 GPU 使用率。
- 量化效能下降程度:使用效能評估工具評估遊戲的整體效能。以場景為單位評估效能,找出效能降低或異常的特定區域。
- 找出有問題的場景:分析資料,找出 CPU 或 GPU 使用率偏高的場景,或是螢幕版面配置無法產生預期效能的場景。
- 收集追蹤資料:使用追蹤工具收集已找出問題場景的詳細效能資料。
找出 CPU 或 GPU 瓶頸
如果遊戲未達到目標 FPS,請判斷是否受 CPU 或 GPU 限制。分析 CPU 和 GPU 行為是尋找最佳化機會的關鍵,即使裝置在遊戲期間過熱或耗電量過高,也應進行分析。您可以使用各種方法,判斷系統是否受 CPU 或 GPU 限制。
分析追蹤記錄資料:使用偏好的工具分析追蹤記錄資料:
- Unreal Insight (Unreal Engine):分析追蹤記錄,查看
GameThread、RenderThread和RHIThread的時間。- 如果
GameThread或RenderThread超過影格時間限制 (例如 30 FPS 為 33.3 毫秒),遊戲就會受 CPU 限制。 - 如果
RHIThread執行時間過長或佔據大部分的影格時間,表示遊戲受到 GPU 限制。
- 如果
圖 2. Unreal 洞察追蹤,包含 GameThread、 RenderThread 和 RHIThread (按一下可放大圖片)。 - Unity 分析器 (Unity):如果主執行緒在
Gfx.WaitForPresentOnGfxThread等標記上耗費大量時間,而轉譯執行緒顯示Gfx.PresentFrame或<GraphicsAPIName>.WaitForLastPresent,則遊戲會受 GPU 限制。
圖 3. Unity Profiler 的 GPU 繫結範例 (按一下可放大)。 - Perfetto:分析 CPU 核心指派作業和執行緒執行詳細資料。 透過詳細檢視執行緒執行資訊,這項分析有助於找出效能瓶頸。
CPU 負荷:追蹤記錄指出,
GameThread和RenderThread的工作負載與 VSync 結合後,會導致 RHI 執行緒的QueuePresent延遲,因此表示這是 CPU 繫結情境。
圖 4. Perfetto 追蹤記錄,其中包含 CPU 執行詳細資料 (按一下即可放大)。 GPU 負荷:如果 GPU 完成時間超過影格時間限制 (例如 25 毫秒),遊戲就會受 GPU 限制。追蹤記錄指出 GPU 完成時間超過 25 毫秒,這表示是受 GPU 限制的情況。
圖 5. 含有 GPU 負荷詳細資料的 Perfetto 追蹤記錄 (按一下即可放大)。
- Unreal Insight (Unreal Engine):分析追蹤記錄,查看
使用 Unreal Engine 的 stat 指令:
stat unit:比較分配給遊戲、繪圖和 RHI 執行緒的時間。如果「遊戲」和「繪製」時間較短,但 RHI 時間持續超過影格時間限制,則遊戲會受 GPU 效能限制。舉例來說,如果所需 FPS 為 30 (相當於每個影格 33.33 毫秒),且「遊戲」和「繪圖」執行緒持續保持在 10 到 15 毫秒範圍內,但 RHI 持續超過 30 毫秒,則強烈建議使用 GPU 繫結情境。
圖 6. Stat 單位有助於估算 GPU 繫結條件。 stat VulkanRHI:檢查「佇列提交」和「佇列呈現」的持續時間。
圖 7. Stat VulkanRHI 可協助估算 GPU 繫結條件 (按一下可放大)。 stat slow:仔細檢查分配給遊戲、算繪和 RHI 執行緒的時間,找出阻礙。
查看成效指標:使用全面的遊戲成效分析結果。Android 裝置:
- CPU 限制:CPU (標準化) 使用率超過 15%,但 GPU 使用率和 FPS 偏低。
- 受 GPU 限制:GPU 使用率超過 90%。
一般來說,如果 FPS 和 GPU 使用率偏低,但 CPU 使用率超過 15%,則可視為 CPU 負載過重。
圖 8. CPU 和 GPU 用量的效能指標。
盡量提高 CPU 效能
如果分析結果顯示遊戲受到 CPU 限制,請進一步調查,找出造成瓶頸的特定執行緒或 API。
如需詳細指引,請參閱「Android 的 CPU 和 GPU 最佳化訣竅」。
最佳化 GPU 效能
如果分析結果顯示遊戲受 GPU 限制,請使用影格偵錯工具進一步分析轉譯管道和繪圖呼叫。
如需詳細指引,請參閱「Android 的 CPU 和 GPU 最佳化訣竅」。
驗證最佳化成效
- 進行 A/B 測試:建立已導入最佳化功能的建構版本。
- 評估效能:使用與初始分析相同的工具和方法,評估最佳化建構版本的效能。
- 比較結果:比較新效能資料與初始資料,確認已解決瓶頸,且達到 FPS 和溫度目標。
- 反覆執行:重複分析和最佳化步驟,直到達到預期成效為止。