在 Android 上開發成功的遊戲,改善效能和熱能管理是不可或缺的一環。一般來說,開發人員必須降低遊戲保真度或進一步最佳化轉譯器,才能解決這些問題。這類變動通常與遊戲相關,而且往往缺乏彈性。
Android 生態系統中有數個參與者為開發人員提供自動調整效能 API。為簡化自動調整效能功能的整合作業,並減少生態系統中的分段程序,Google 和 MediaTek 正攜手整合我們的產品:Android 動態效能架構 (ADPF) 和 MediaTek Adaptive Gaming Technology (MAGT)。
ADPF 可讓開發人員根據即時熱力狀況調整遊戲工作負載,並提示 OS 為目前的工作負載最佳化效能。您可以使用這些信號調整擬真度和效能設定,例如解析度、畫面更新率,甚至是資源載入策略。這可讓您在效能、熱力和擬真度之間取得更好的平衡,讓 Android 玩家盡可能享有最佳體驗。Android 生態系統一直將這項技術 應用在各種層面Kakao Games's Ares 透過在執行階段調整工作負載以回應熱力 API 後,成功將 FPS 穩定性提高至 96%。
MediaTek 是 Android 上首屈一指的 SoC 供應商,該公司打造出多個晶片,例如新的 Dimensity 9300。MediaTek 也提供自 2021 年起已推出的 MAGT SDK。這個 SDK 為 MediaTek SoC 提供效能微調的進階功能,例如針對即時效能的詳盡資訊,以及工作負載增加的提示。除了為開發人員提供 MAGT 外,MediaTek 也開始提供進階 ADPF 功能。
使用 ADPF 防範過熱保護情形,同時提升效能
MediaTek 可讓 ADPF 架構存取目前和目標裝置溫度,防止嚴重過熱保護。應用程式可以利用 ADPF getThermalHeadroom()
函式,在裝置達到嚴重節流前,預估可用的熱力上升空間。透過這項預估值,應用程式可以動態調整工作負載,避免裝置觸發節流,進而改善整體使用者體驗。
應用程式 (以 Unity 的 Boat Attack 示範為例) 也會使用 Performance Hint Session API 最佳化效能。此方法分別透過 updateTargetWorkDuration()
和 reportActualWorkDuration()
函式提供每個影格的目標影格時間和目前的影格時間。MediaTek 平台會計算兩次 reportActualWorkDuration()
呼叫之間的工作負載,並分配足夠的 CPU 容量,以確保工作負載能在目標持續時間內完成。
因此,MediaTek 平台持續在每秒提供最佳影格 (FPS) 時,同時在耗電量均衡的情況下,提供流暢的使用者體驗。
提升畫面更新率、減少耗電量及延長遊戲時間
整體而言,Unity Boat Attack 示範將影格速率提高 8.5 FPS、耗電量減少 12%,並讓遊戲工作階段的時間更長,也縮短了 25 分鐘以上。FPS 標準差已降至 25%。 這種大幅改進的改進空間可讓您提高遊戲的保真度,並以熱衷的方式長期執行遊戲過程。
即使沒有調整擬真度設定,只要啟用效能提示工作階段,工作負載的平均轉譯執行緒時間幾乎就能減少將近 10%。
MediaTek SoC 的自動調整效能後續步驟
ADPF 將於未來幾年升級,除了加入新功能外,還加入 MAGT 不支援裝置的全新功能。如果開發人員想更充分運用 MediaTek 裝置,MAGT SDK 包含專門針對 MediaTek 晶片組架構的進階功能,不久後也會提供核心 ADPF 功能。
開始使用 Android 適應性功能
Android 動態效能架構現已開放所有 Android 遊戲開發人員使用,包括 Unity、Unreal、Cocos Creator 遊戲引擎,以及我們的原生 C++ 程式庫。
- Unity 開發人員可以開始使用自動調整效能供應商 5.0.0 版。請注意,搭載 Android 11 (API 級別 30) 的大多數 Android 裝置,以及 Android 12 (API 級別 31) 的 Performance Hint API 都支援 Thermal API。
- 對於 Unreal 開發人員,您可以開始使用 Android Dynamic Performance Unreal Engine 外掛程式,這類外掛程式適用於指定 Android 12 (API 級別 31) 以上版本的大多數 Android 裝置。
- 若為 Cocos Creator,您可以從 3.8.2 版和 3.8.3 版起開始使用 Performance Hint API。
對於這些遊戲引擎,熱度 API 已與 Adaptive Performance 整合,可協助您擷取裝置熱力資訊,且每 Update()
或 Monitor()
都會自動呼叫效能提示 API,您無需進行任何其他操作。最後,如果是自訂引擎,您可以參考我們的原生 ADPF C++ 範例。
其他資源
瞭解 Android 動態效能架構如何協助您穩定遊戲的每秒影格數並減少過熱保護。
瞭解 MediaTek 自動調整遊戲技術,瞭解如何在 MediaTek SoCs 上進行進階效能調整。