Android 15 では、消費電力を最適化するため、ゲームのリフレッシュ レートがデフォルトで 60 Hz に設定されています。120 FPS などの高いフレームレートをアンロックするには、フレームレート API または Swappy ライブラリを使用して明示的にリクエストする必要があります。
ただし、バッテリー残量やデバイスの温度などの要因に基づいて、システムがこのリクエストをオーバーライドする場合があります。リフレッシュ レートが高いほど、視覚的な滑らかさは向上しますが、消費電力が増え、発熱も大きくなります。そのため、ユーザーが希望するリフレッシュ レートを選択できるようにし、パフォーマンスを注意深くモニタリングして、バランスの取れたユーザー エクスペリエンスを確保することが重要です。
setFrameRate() API を使用する
setFrameRate() API を使用すると、ゲーム デベロッパーは特定のディスプレイ リフレッシュ レートを使用できます。これを行うには、次の 2 つの手順があります。
- デバイスと Android のバージョンの互換性を確認します。
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
)
}
詳しくは、フレームレートのページをご覧ください。
フレーム ペーシング ライブラリを使用する
フレーム ペーシング ライブラリ(Swappy)は、C/C++ Android ゲームエンジンでの VSync 管理とフレーム スケジューリングを簡素化するために設計されたオープンソース ライブラリです。このツールは、リフレッシュ レートの最適化プロセスを効率化し、setFrameRate() などの機能に対する高レベルの抽象化レイヤとして効果的に機能します。さらに、Swappy にはゲームの全体的な滑らかさとパフォーマンスを向上させる追加機能が用意されています。
詳しくは、Swappy のページをご覧ください。
最適な結果を得るためのその他のヒント
次のセクションでは、いくつかの重要なヒントを紹介します。
- 動的フレームレート切り替え。
- パフォーマンス モニタリング。
- ディスプレイの最大リフレッシュ レートに基づいて FPS オプションを提供します。
動的フレームレート切り替え
パフォーマンスと電力消費の両方を最適化するには、ゲームで動的フレームレート切り替えの実装を検討してください。この技術により、負荷の高いシーンでは 120 Hz などの高いリフレッシュ レートに、負荷の低いシーンやバッテリー駆動時間が気になる場合、または 60 FPS 未満をターゲットとする場合は 60 Hz などの低いリフレッシュ レートにシームレスに移行できます。120 Hz で常に動作すると、発熱が過剰になり、バッテリーの消耗が早まるため、ユーザー エクスペリエンスが低下する可能性があります。現在のレンダリング負荷とデバイスの状態に基づいてリフレッシュ レートをインテリジェントに調整することで、視覚的な忠実さと電力効率のバランスを取ることができます。
Performance Monitoring
高いリフレッシュ レートでゲームが最適に動作するようにするには、フレーム カウンタやパフォーマンス オーバーレイなどのパフォーマンス モニタリング ツールを統合します。これらのツールは、ゲームの実際のフレームレートに関するリアルタイムのフィードバックを提供し、目標の 120 FPS を常に達成しているかどうかを確認できます。
フレームレートが大幅に変動する場合は、特定のデバイスで達成可能な低いフレームレートをターゲットにすることを検討してください。これにより、最高のリフレッシュ レートを目指す際に発生する可能性のあるパフォーマンスの低下を回避し、スムーズな操作性を実現できます。
最大ディスプレイ リフレッシュ レートに基づいて FPS オプションを提供
ゲームは、現在のデバイスでサポートされている最大ディスプレイ リフレッシュ レート(60 Hz、90 Hz、120 Hz など)を検出し、それに応じて FPS 設定を制限する必要があります。たとえば、デバイスが 60 Hz までしかサポートしていない場合は、プレーヤーの混乱を避けるため、ゲーム設定で 60 FPS を超えるオプションを無効にすることをおすすめします。