Android ゲームは、主にスマートフォンやタブレットなどのバッテリー駆動のデバイスでプレイされます。ゲームの電力効率を最適化して、ユーザーがゲームを長くプレイできるようにし、デバイスの充電が完了していなくてもゲーム セッションを安心して開始できるようにします。
最適なディスプレイ リフレッシュ レートを使用する
ディスプレイのリフレッシュ レートは、デバイスのディスプレイ パネルが変化して新しい情報を表示する速度です。従来、ハンドヘルド デバイスでは 60 Hz のリフレッシュ レートを使用して、ディスプレイ コンテンツを 1 秒間に 60 回更新していました。最新のデバイスには、90 Hz や 120 Hz で更新できる、より高いリフレッシュ レートのディスプレイが搭載されていることがよくあります。リフレッシュ レートを高くすると、スクロールなどの操作のユーザー エクスペリエンスが向上しますが、ディスプレイ パネルの消費電力が増加します。
ゲームの目標フレームレートは通常 30 fps または 60 fps です。ディスプレイのリフレッシュ レートがゲームのターゲット フレームレートよりも高い場合、リフレッシュ レートを高くしてもメリットはなく、消費電力のみが増加します。リフレッシュ レートの高いデバイスでは、ゲームのターゲット フレームレートにできるだけ近づけるようにディスプレイのリフレッシュ レートを調整します。
Swappy フレーム ペーシング ライブラリを統合または有効にする
Android Game Development Kit(AGDK)には、Swappy というフレーム ペーシング ライブラリが含まれています。Swappy は、ゲームのフレームレートにできるだけ近づけるように、デバイスのディスプレイのリフレッシュ レートを最適化します。カスタム ゲームエンジンを使用している場合は、Frame Pacing ライブラリ ガイドで、ライブラリをエンジンに統合する方法を確認してください。
Swappy は Unreal Engine(モバイル デバイスのフレーム ペーシング)と Unity エンジン(PlayerSettings.Android.optimizedFramePacing)にすでに統合されており、ゲーム プロジェクトで有効になっている場合はディスプレイの更新レートを最適化します。
Android フレームレート API を呼び出す
フレーム ペーシング ライブラリを統合する代わりに、Android フレームレート API を使用してディスプレイのリフレッシュ レートを直接調整します。
グラフィックに Vulkan API を使用する
Android は、古い OpenGL ES API と新しい Vulkan API の 2 つのグラフィック API をサポートしています。Vulkan は現在、Android のメインのグラフィック API であり、OpenGL ES よりも効率的です。Vulkan のメリットと使用方法については、グラフィックに Vulkan を使用するをご覧ください。
デバイスの熱状態に対応する
デバイスの CPU と GPU の使用率が高いと、熱が発生します。デバイスの温度が上昇すると、電力効率が低下します。デバイスが熱くなりすぎると、CPU と GPU の速度が低下し、消費電力が削減されてデバイスが冷却されます。この動作はサーマル スロットリングと呼ばれ、ゲームのパフォーマンスとバッテリーの消耗率に影響します。Android Thermal API を使用してデバイスの熱状態をモニタリングし、ゲームのワークロードを調整して熱スロットリングを防ぎます。
デバイスのゲームモードをクエリする
ゲームモードは、パフォーマンスとバッテリー駆動時間のどちらを優先するか、または中間のデフォルトを選択するかをユーザーが指定できる機能です。ゲームが可変パフォーマンス構成をサポートしている場合は、Game Mode API を使用してこの設定を確認し、それに応じてゲーム設定を変更します。