遊戲模式干預

遊戲模式乾預是原始設備製造商 (OEM) 針對遊戲所設定的最佳化功能,可改善開發人員不再更新的遊戲效能。例如:

  • 使用 WindowManager 後端緩衝區大小調整功能。
  • 使用 ANGLE 而非原生 GLES 驅動程式。

您可以讓遊戲支援及管理 Game Mode API,藉此覆寫原始設備製造商 (OEM) 提供的遊戲模式乾預功能。

支援 Game Mode API 和乾預功能:

  • 選取「Android 12」裝置
  • 搭載 Android 13 以上版本的裝置

每款遊戲都可以:

  • 實作 Game Mode API 行為。
  • 向原始設備製造商 (OEM) 提出遊戲模式乾預設定
  • 明確選擇不採用遊戲模式介入措施。

背景

本節說明遊戲模式介入措施的功能,以及如何針對各種模式最佳化遊戲。

WindowManager 後端緩衝區大小調整

WindowManager 後端緩衝區調整大小干預功能可以降低裝置的 GPU 負載。此外,當遊戲設有目標畫面更新率時,還能降低電池耗電量。

啟用大小調整功能可減少高達 30% 的 GPU,以及整體系統耗電量的 10%。結果可能會因使用的裝置、環境條件和其他因素 (例如同時處理) 而有所不同。

在 GPU 負載降低時,依賴 GPU 效能但未設定速率的遊戲可能會獲得較高的畫面更新率。

強烈建議您讓所有遊戲都保持適當的步調,因為不平均的畫面更新率會大幅影響使用者感受到效能。

FPS 節流

Android 每秒影格數 (FPS) 節流是一種遊戲模式介入措施,能夠讓遊戲以更穩定的影格速率執行,進而降低電池耗電量。此措施適用於 Android 13 以上版本。詳情請參閱「FPS 節流總覽」。

評估遊戲模式介入措施

本節會使用 adb 指令。

設定模式

您必須先在應用程式的遊戲模式設定檔中停用遊戲模式,才能測試遊戲模式乾預功能。否則平台會略過這些動作,並僅遵循遊戲內最佳化項目。

<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsBatteryGameMode="false"
    android:supportsPerformanceGameMode="false"
/>

(選用) 備份現有的裝置設定

如果是 Pixel 或其他裝置,裝置設定中可能已存有遊戲幹預設定。您可以使用下列指令查詢設定:

adb shell device_config get game_overlay <PACKAGE_NAME>

如果查詢傳回 null,請忽略現有設定。否則,請儲存並在評估後重設。

評估幹預

如要自行評估 WindowManager 後端緩衝區大小調整介入措施,請使用下列指令,在遊戲模式中設定不同的 WindowManager 緩衝區調整大小值。

adb shell device_config put game_overlay <PACKAGE_NAME>
mode=2,downscaleFactor=0.9:mode=3,downscaleFactor=0.5

在上述範例中,mode=2 為「效能」,mode=3 為「省電模式」。downscaleFactor 值會指定為套用至大小調整設定的百分比 (例如 0.7 為 70%,0.8 為 80%)。90% (0.9) 的調整比例幾乎可以忽略,但 50% (0.5) 則非常重要。

警告:在 Android 12 中,子程序可能無法正確調整大小。請特別注意,確保浮動式訊息和彈出式視窗正確顯示。建議您將大小調整設定限制為至少 70%。

設定新的大小調整價值後,請切換遊戲模式,瞭解 WindowManager 後端緩衝區調整大小幹預功能對遊戲有何影響:

adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>

確認每個遊戲模式選項結束後,您都要重新啟動遊戲。縮減規模介入措施需要重新啟動應用程式。

選擇不採用干預功能

您可以選擇不採用是否要為遊戲套用介入措施。每項干預功能都有專屬的停用設定。

  1. 用來控制選擇加入和停用遊戲模式的同一個 XML 設定檔案,也可用於介入設定:
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:allowGameDownscaling="false"
    android:allowGameFpsOverride="false"
/>
  1. 重新建構並再次提交遊戲,以選擇不採用干預功能。

根據預設,除非您明確選擇不採用遊戲,否則系統會使用原始設備製造商 (OEM) 設定的干預功能。

資源

如要進一步瞭解如何評估及最佳化遊戲效能: