UNISOC 運用 ADPF 提升 Android 遊戲效能

對 Android 遊戲開發人員來說,如何提升效能和管理熱溫是一大挑戰。為提供最佳玩家體驗,開發人員需要工具來平衡高影格速率與持續的耗電量。Android 動態效能架構 (ADPF) 提供一組重要的 API,可讓遊戲直接與裝置的電力和熱溫系統互動,進而進行微調最佳化。

UNISOC 採用這些工具,在 SoC 上提供優異的遊戲體驗。自 Android 14 開始,UNISOC 產品全面支援核心 ADPF API,包括效能提示、熱溫和遊戲模式/狀態。為進一步提升 SoC 的效能,紫光展銳在自家 UNISOC Miracle Gaming 引擎中採用這些 ADPF API,監控系統工作負載並動態調整效能,確保遊戲體驗更流暢穩定。

圖 1:UNISOC Miracle Gaming
圖 1:UNISOC Miracle Gaming

使用 ADPF 最佳化效能和熱溫

UNISOC 實作 ADPF 後,開發人員就能使用強大工具即時管理遊戲效能。

  • 效能提示:應用程式可透過 PerformanceHintManager 將資訊傳遞給系統,讓 SoC 在適當時間分配適當資源。遊戲提供工作負載的提示並回報影格的實際時間長度,有助於系統動態加速繪圖和圖層組合,進而提升效能一致性。

  • 熱能 API:為避免熱能節流造成干擾,開發人員可以使用 getThermalHeadroom() API。這項函式會預測裝置的熱力狀態,讓應用程式在過熱前主動調整工作負載。這項預測功能是穩定遊戲影格速率的關鍵,可確保長時間的激烈遊戲過程順暢無礙。

  • 遊戲模式和遊戲狀態 API:這些 API 可改善遊戲與系統之間的通訊。GameMode 可讓使用者發出意圖信號 (例如在遊戲中選擇「效能」設定),而 GameState 則可讓遊戲將目前狀態 (例如載入、播放等) 通知作業系統。在幕後,系統可以運用遊戲解析度縮放和遊戲 FPS 覆寫等介入措施,根據這個脈絡將效能最佳化。

提升影格速率和電源效率

在 UNISOC SoC 上整合 ADPF,可顯著提升影格速率、電源消耗量和整體遊戲體驗。在 NCSOFT 熱門遊戲《天堂 W》的測試中,無論使用哪種圖像設定,都能明顯感受到效能提升。

在畫質中等的情況下,遊戲的影格速率顯著提升 28.1% ,同時耗電量減少 3.7%,兼具體驗更流暢和效率提升的雙重優勢。

其他設定的結果也令人驚豔:

  • 在高畫質設定下,幀率大幅提升 50.1%,但耗電量僅增加 3.1%,顯示 ADPF 有能力釋放大量效能空間。

  • 在低畫質設定下,玩家的畫面更新率提升了 11.5% 耗電量則相應增加了 9.9% ,顯示即使在較不吃效能的設定下,也能提升效能。

圖 2:低畫質畫面更新率
圖 2:低圖像影格速率
圖 3:中等圖形影格速率
圖 3:中圖像影格速率
圖 4:高圖像影格速率
圖 4:高圖像影格速率
圖 5:耗電量
圖 5:耗電量

此外,UNISOC 也展示了「Adaptive Optimization」(適應性最佳化) 功能。使用者啟用這個選項後,應用程式就能根據系統回饋自動調整紋理、樹葉和效果品質等圖像元素,確保提供更穩定的影格速率。

UNISOC SoC 的適應性效能後續發展

UNISOC 致力於深化與 ADPF 的整合。隨著架構演進,UNISOC Miracle Gaming 引擎會持續整合最新的核心 ADPF 功能,確保開發人員和遊戲玩家在 UNISOC 裝置上,享有最先進的效能和散熱管理技術。

開始使用 Android 適應性功能

Android Dynamic Performance Framework 現已開放所有 Android 遊戲開發人員使用,適用於 Unity、Unreal、Cocos Creator 遊戲引擎,以及原生 C++ 程式庫。

  • Unity 開發人員可以開始使用自適應效能供應器 5.0.0 版。請注意,Android 11 (API 級別 30) 以上版本的大多數 Android 裝置都支援 Thermal API,而 Android 12 (API 級別 31) 以上版本則支援 Performance Hint API。

  • Unreal 開發人員可以開始使用 Android Dynamic Performance Unreal Engine 外掛程式,適用於指定 Android 12 (API 級別 31) 以上版本的大多數 Android 裝置。

  • 如要使用 Cocos Creator,可以從 v3.8.2 開始使用 Thermal API,並從 v3.8.3 開始使用 Performance Hint API。

  • 如為自訂引擎,請參閱原生 ADPF C++ 範例