Game Mode API

Game Mode API を使用すると、ユーザーが対応するゲームモードを選択したときに、パフォーマンスとバッテリー駆動時間に対してゲームを最適化できます。

または、デベロッパーが更新をやめているゲームのパフォーマンスを向上させるため、ゲームモード介入に関するリクエストを送信できます。

Game Mode API と介入は以下で利用できます。

各ゲームは、Game Mode API の動作を実装したり、ゲームモード介入設定を OEM に提案したり、ゲームモード介入をオプトアウトしたりできます。

セットアップ

ゲームで Game Mode API を使用するには、次の手順で行います。

  1. Android 13 SDK をダウンロードしてインストールします。

  2. AndroidManifest.xml ファイルで、<application> 要素の appCategory 属性を設定して、アプリをゲームとして宣言します。

android:appCategory="game"
  1. 以下をメイン アクティビティに追加して、現在のゲームモードを照会します。

Java

// Only call this for Android 12 and higher devices
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ) {
  // Get GameManager from SystemService
  GameManager gameManager = Context.getSystemService(GameManager.class);

  // Returns the selected GameMode
  int gameMode = gameManager.getGameMode();
}

Kotlin

// Only call this for Android 12 and higher devices
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
  // Get GameManager from SystemService
  val gameManager: GameManager? = context.getSystemService(Context.GAME_SERVICE) as GameManager?

  // Returns the selected GameMode
  val gameMode = gameManager?.gameMode
}
サポートされるゲームモード 説明
サポート対象外 ゲームで Game Mode API のサポートを宣言しておらず、ゲームモード介入もサポートしていない。
標準 ユーザーがゲームモードを選択していない、またはユーザーが標準モードを選択している。
パフォーマンス バッテリー駆動時間の減少および忠実度の低下と引き換えに、最小の遅延フレームレートを実現します。
バッテリー 忠実度またはフレームレートの低下と引き換えに、できるだけバッテリー駆動時間を延長します。
  1. onResume 関数にゲームモードの状態をクエリするコードを追加します。

    ユーザーがバッテリー モードを設定した例

ベスト プラクティス

ゲームがすでに複数の忠実度目標とフレームレート目標をサポートしている場合は、パフォーマンス モードとバッテリー セーバー モードに適した設定を特定する必要があります。

  • 最高のデバイス フレームレートを安定して継続させるには、忠実度をわずかに下げて、フレームレートを高めることを検討してください。

  • バッテリー駆動時間を改善させるには、低いディスプレイ リフレッシュ レート(30 Hz や 60 Hz)を選択することや、フレーム ペーシングを使用して目標レートを下げること検討してください。

ファーストパーソン シューティング、マルチプレーヤー型オンライン バトルアリーナ(MOBA)、ロールプレイング ゲーム(RPG)などの忠実度の高いゲームでは、ユーザーの没入感を高めるために、安定した高いフレームレートを達成することに焦点を当てる必要があります。

忠実度と気軽さの両方を重視するゲームでは、ピーク時のフレームレートを下げてプレイ時間を延長するバッテリー セーバー モードをサポートする必要があります。

ゲームモードのサポートを宣言する

ゲームモードのサポートを宣言し、OEM によるゲームモード介入をオーバーライドするには、まずゲームモード設定を AndroidManifest.xml ファイルの <application> 要素に追加します。

<application>
    <meta-data android:name="android.game_mode_config"
               android:resource="@xml/game_mode_config" />
  ...
</application>

次に、プロジェクトの res/xml/ ディレクトリに、次の内容の game_mode_config.xml ファイルを作成します。

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

ゲームモードを切り替える

ゲームモードを切り替えるには、ゲーム ダッシュボード(Google Pixel デバイスで利用可能)または OEM が提供する同様のアプリを使用します。または、開発中にゲームモード シェルコマンドを使用することもできます。

ゲーム ダッシュボードを使用しており、ゲームの起動時に最適化アイコンが表示されない場合は、アプリを Google Play Console にアップロードし、Google Play ストアからインストールする必要があります。Play ストアでのアプリのテストについては、App Bundle と APK を内部で共有するをご覧ください。

ゲーム ダッシュボードのアクティビティ 図 1. Google Pixel で実行中のゲームにオーバーレイ表示されるゲーム ダッシュボード。

図 1 では、実行中のゲームのゲームモードを最適化ウィジェットで変更できます。ウィジェットに示されているように、ゲームは現在 PERFORMANCE モードで実行されています。

開発中にゲーム ダッシュボードのないデバイスを使用していて、メーカーからアプリごとにゲームモードを設定する方法が提供されていない場合は、adb を使用してゲームモードのステータスを変更できます。

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

サンプルアプリ

Game Mode API のサンプルでは、FPS を最適化して解像度の上限をレンダリングし、アプリの消費電力を約 25% 削減する方法を紹介しています。

次へ

ゲームのアップデートを提供できない場合にゲームのパフォーマンスを改善する方法については、ゲームモード介入をご覧ください。