リフレッシュ レートを最適化する

Android 15 では、ゲームのデフォルトのリフレッシュ レートを 60 Hz に設定して、消費電力を最適化しています。120 FPS などのより高いフレームレートを有効にするには、Frame Rate API または Swappy ライブラリを使用して、フレームレートを明示的にリクエストする必要があります。

ただし、バッテリー残量やデバイスの温度などの要因に基づいて、システムがこのリクエストをオーバーライドすることがあります。リフレッシュ レートを上げると映像の滑らかさは向上しますが、消費電力も増加し、熱も発生します。したがって、ユーザーが好みのリフレッシュ レートを選択できるようにし、パフォーマンスを慎重にモニタリングして、バランスの取れたユーザー エクスペリエンスを実現することが重要です。

setFrameRate() API を使用する

setFrameRate() API を使用すると、ゲーム デベロッパーは特定のディスプレイの更新レートを使用できます。これを行うには 2 つのステップがあります。

  1. デバイスと Android バージョンの互換性を確認します。
  2. setFrameRate() を使用して高 FPS をリクエストします。

デバイスと Android バージョンの互換性を確認する:

メソッド Display.getSupportedModes() を使用して、デバイスが 90 Hz、120 Hz、またはその他のリフレッシュ レートをサポートしているかどうかを確認します。デバイスが 60 Hz に制限されている場合、この上限を超えることはできません。

Kotlin

val display = windowManager.defaultDisplay
val supportedModes = display.supportedModes
for (mode in supportedModes) {
  Log.d("DisplayInfo", "Supported mode: ${mode.physicalWidth}x${mode.physicalHeight}, ${mode.refreshRate}Hz")
}

高 FPS をリクエストする

レンダリング ループの開始時、ゲーム ウィンドウの初期化中、またはターゲット FPS がディスプレイの更新レートを変更する必要がある場合は、setFrameRate() を呼び出します。

より高いレートをリクエストしても、省電力モードやサーマル スロットリングなどの要因により、リフレッシュ レートが 60 Hz に制限される場合があります。ゲームのレンダリング パフォーマンスがターゲット FPS に達していない場合、高いリフレッシュ レートをリクエストすると、不要な電力消費が発生し、デバイスの温度が上昇する可能性があります。

次のスニペットは、setFrameRate() API を使用して更新頻度が高くなりすぎないようにする方法を示しています。

Kotlin

val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
  window.setFrameRate(
      targetFps,
      Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
      0
  )
}

詳しくは、フレームレートのページをご覧ください。

Frame Pacing ライブラリを使用する

フレーム ペーシング ライブラリ(Swappy)は、C/C++ Android ゲームエンジンでの VSync 管理とフレーム スケジューリングを簡素化するように設計されたオープンソース ライブラリです。このツールは、更新レートの最適化プロセスを効率化し、setFrameRate() などの機能に対する上位レベルの抽象化レイヤとして効果的に機能します。さらに、Swappy には、ゲームの全体的なスムーズさとパフォーマンスを向上させる追加機能が用意されています。

詳しくは、Swappy のページをご覧ください。

最適な結果を得るためのその他のヒント

以降のセクションでは、いくつかのヒントをご紹介します。

  1. 動的フレームレート切り替え。
  2. パフォーマンス モニタリング。
  3. ディスプレイの最大リフレッシュ レートに基づいて FPS オプションを提供します。

動的フレームレート切り替え

パフォーマンスと消費電力の両方を最適化するには、ゲームに動的フレームレート切り替えを実装することを検討してください。この手法により、負荷の高いシーンでのスムーズなゲームプレイのために 120 Hz などの高いリフレッシュ レートと、負荷の少ないシーンやバッテリー駆動時間の懸念がある場合、または 60 FPS 未満をターゲットとしている場合の 60 Hz などの低いレートをシームレスに切り替えることができます。120 Hz で常に動作していると、過度の発熱やバッテリーの急速な消耗につながり、ユーザー エクスペリエンスに悪影響を与える可能性があります。現在のレンダリング負荷とデバイスの状態に基づいてリフレッシュ レートをインテリジェントに調整することで、視覚的な忠実度と電力効率のバランスを取ることができます。

パフォーマンスのモニタリング

高いリフレッシュ レートでゲームが最適に動作するようにするには、フレームカウンタやパフォーマンス オーバーレイなどのパフォーマンス モニタリング ツールを統合します。これらのツールは、ゲームの実際のフレームレートに関するリアルタイムのフィードバックを提供するため、目標の 120 FPS を常に達成しているかどうかを確認できます。

フレームレートが大幅に変動する場合は、特定のデバイスで達成可能なフレームレートを低くすることを検討してください。これにより、最大のリフレッシュ レートを追求する際に発生する可能性のあるパフォーマンスの不具合を回避し、よりスムーズなエクスペリエンスを提供できます。

ディスプレイの最大リフレッシュ レートに基づく FPS オプションを提供する

ゲームは、現在のデバイスでサポートされている最大ディスプレイ リフレッシュ レート(60 Hz、90 Hz、120 Hz など)を検出し、それに応じて FPS 設定を制限する必要があります。たとえば、デバイスが最大 60 Hz しかサポートしていない場合は、プレーヤーが混乱しないように、ゲーム設定で 60 FPS を超えるオプションを無効にすることをおすすめします。