FPS スロットリング

Android の FPS スロットリングは、ゲームモード介入であり、バッテリー消費を抑えるためにゲーム実行時のフレームレートを安定させるものです。この介入は Android 13 以降で利用できます。

リフレッシュ レートの高い(90 Hz や 120 Hz など)ディスプレイを搭載した Android デバイスは増加しており、ほとんどのゲームは高い FPS でペースを維持しようとします。しかし、通常はパフォーマンスやバッテリー駆動時間の優先に関するユーザーの好みは考慮されません。これにより次の問題が生じます。

  • 一貫して高い FPS でペースを維持できないゲームは、FPS が不安定または不均一になります。

  • 高い FPS は、バッテリーの消耗が早くなるため、ユーザーに好まれない場合があります。

FPS スロットリングで可能なのは、フレームレートの「制限」のみです。たとえば、ゲームが当初 60 FPS で動作していた場合、FPS スロットリング介入で 120 FPS にすることはできませんが、40 FPS や 30 FPS にスロットリングすることはできます。

FPS スロットリングを使用することで、最大で 50% の GPU 電力と 20% のシステム電力を削減できます。また、スムーズかつジャンクの少ないフレームレートで、ペーシングされていないゲームを動作させることができます。

ペーシングされていないゲームでは、多くの場合、ピーク フレームレートは高くなりますが、フレーム時間の分散は大きくなります。これは、パフォーマンスに関するプレーヤーの認識に大きく影響します。FPS スロットリング介入で可能なのは、ペーシングされていないゲームのフレーム ペーシングをプラットフォーム側から実現することだけです。

FPS スロットリング介入の結果は、使用するデバイスや環境条件などの要因によって変化します。

アプリによるフレーム ペーシング実装との相互作用

アプリによるフレーム ペーシング実装と FPS スロットリングの両方が適用される場合、一般的に最終的なフレームレートは目標フレームレートよりも低くなります。

始める

ここでは、Android Debug Bridge(adb)を使用し、FPS スロットリングをセットアップして使用する方法を説明します。

ゲームモード介入を有効にする

ゲームモード介入を有効にするには、次のコマンドを使用します。

adb shell device_config put game_overlay <PACKAGE_NAME> <CONFIG>

FPS 介入の設定

目標の FPS スロットリング介入を設定するには、device_config コマンドを使用します。以下に、パフォーマンス モードとバッテリー モードの FPS スロットリングを設定する例を示します。

adb shell device_config put game_overlay <PACKAGE_NAME> mode=2,fps=90:mode=3,fps=30

パラメータの説明:

  • mode [2|3]: 23 は、それぞれパフォーマンス モードとバッテリー モードです。
  • fps [0|30|40|45|60|90|120]: 使用するデバイス(120、90、60 Hz のどのデバイスか)に応じて最高リフレッシュ レートの約数となるフレームレートを選ぶことをおすすめします。0 がデフォルト値です。

各ディスプレイ タイプでサポートされているフレームレートは次のとおりです。

  • 60 Hz のディスプレイ: 60 FPS、30 FPS
  • 90 Hz のディスプレイ: 90 FPS、45 FPS、30 FPS
  • 120 Hz のディスプレイ: 120 FPS、60 FPS、40 FPS、30 FPS

結果の確認

結果を表示して分析するには、FPS カウンタを確認するか、Perfetto トレースをキャプチャします。120 FPS で動作しているゲームで FPS カウンタを表示する方法の例を次に示します。

FPS カウンタを表示する

FPS スロットリングの設定を確認するには、ゲームを実行して、ゲーム ダッシュボードで FPS カウンタを開きます。手順は次のとおりです。

  1. ゲームの実行中に、下にスワイプし、ゲーム ダッシュボードのアイコンをタップします。

  2. [FPS] ボタンをタップして、FPS カウンタをオンにします。

  3. [X] ボタンをタップして、ゲーム ダッシュボードを閉じます。矢印を右にスワイプすると、FPS カウンタが表示されます。

Perfetto トレースをキャプチャする

ゲームのパフォーマンスを詳しく知るには、Perfetto トレースの実施をおすすめします。トレースの実施について詳しくは、クイックスタート: Android でトレースを記録するをご覧ください。

トレースを実施するときは、android.game_interventions データソースを使用します。トレースが完了すると、[Trace Viewer] ページが表示されます。ナビゲーション バーで [Info and stats] を選択し、[Game mode and intervention] のリストを表示します。次に例を示します。

介入リスト例の表

FPS スロットリング介入は「fps=X」の形式で示されています。ここで、X はそのゲームモードのスロットリング FPS です。0 がデフォルト値です。