遊戲模式干預

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

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

您可以讓遊戲支援及管理 Game Mode API,進而覆寫原始設備製造商 (OEM) 提供的遊戲模式介入措施。

以下裝置支援 Game Mode API 和介入措施:

每個遊戲都能:

  • 實作 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) 設定的干預功能。

資源

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