Choose your operating system:
Windows
macOS
Linux
Frame Pacing (フレーム ペーシング) は、デバイスのネイティブ リフレッシュ レートより低いフレーム レートでフレームのレンダリングを行うよう、アプリケーションを制限するシステムです。この機能によりアプリケーションは、レンダリングの一貫性と安定性を優先して、フレームレートを制限しない実行よりもスムーズなユーザー エクスペリエンスを実現できます。 In Unreal Engine 4 (UE4) のフレーム ペーシングは、プロジェクトの構成を記述する Device Profiles (デバイスプロファイル) を使用してデバイスごとに設定できます。
デバイスプロファイルでフレーム ペーシング設定を編集する
フレーム ペーシングは、対象のデバイスを記述した
DeviceProfiles.ini
ファイルの CVars で制御します。
-
iOS デバイスの場合は
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
でデバイスプロファイルを追加可能 -
Android デバイスの場合は
[/Script/AndroidRuntimeSettings.AndroidRuntimeSettings]
でデバイスプロファイルを追加可能
フレーム ペーシングを制御するパラメータを以下に示します。
パラメータ |
使用方法 |
説明 |
||
---|---|---|---|---|
|
|
True に設定すると、すべてのフレーム ペーシングを許可します。 |
||
|
|
True に設定すると、対応するデバイスで 120Hz を許可します。 |
||
4.24 以前で利用可能 |
||||
|
|
4.24 以前でフレーム ペーシングのリフレッシュ レートを設定する従来の変数で、1 の値を 60Hz のリフレッシュ レートとして扱います。 |
||
4.25 以降で利用可能 |
||||
|
|
|
||
|
|
デフォルトの設定は 0 で、この値を 1 に設定すると Android デバイス標準の UE4 フレーム ペーサーの代わりに、Google が提供する Swappy フレーム ペーシング ソリューションを有効化します。Swappy は UE4 フレーム ペーサーと同じ CVar を使用します。 |
高リフレッシュ レートのガイドライン
フレーム ペーシングの最大リフレッシュ レートは通常 60Hz に制限されていますが、
bEnableDynamixMaxFPS
を有効化するとこの制限を 120Hz に上げられます。60 Hz を超えるリフレッシュ レートをサポートするモバイル デバイスの例を示します。
-
Samsung Galaxy S20
-
OnePlus 7T
-
Google Pixel 4
-
iPad Pro 第 2 世代以降
Android 向け Swappy フレーム ペーシング
Unreal Engine 4.25 は従来のフレーム ペーシング システムに加えて、 Android Game SDK で Google が提供する Swappy フレーム ペーサー を統合しています。
通常、Android ハードウェアはフレーム バッファーを使用して、フレーム準備遅延の検出時に過去のフレームを表示することで画面のテアリングを防止します。ところが、ゲームに使用するレンダラの多くがこのプロセスに対応しておらず、同調せずに表示したフレームよりも先に進みます。通常は入力のサンプリング後に遅延が発生するので、フレームの表示時間が大幅に変動し、タッチスクリーン制御で入力のレイテンシーが増大します。
Swappy はこのビヘイビアを安定させるために設計された Android 独自のフレーム ペーシング ソリューションであり、フレーム ペーシングの機能を提供するのはもちろん、ゲームのレンダリング サイクルと Android デバイスの更新サイクルの効率的な通信を可能にします。これは他のハードウェアすべてに使用してきた、従来の UE4 フレーム ペーサーの代替手段です。
Swappy を有効化する
4.25 の時点で Swappy にはさらなるテストが必要で、現状 Unreal の Android プロジェクトでデフォルトのフレーム ペーサーではありません。しかし従来のフレーム ペーサーと比較して、実質的にスムーズなパフォーマンスを実現しています。そのため、これを有効化することを推奨します。今後のバージョンのエンジンでは Swappy が Android に対する新しいデフォルトのフレーム ペーサーになる予定です。
Android プロジェクトで Swappy を有効化するには、使用する Android プロファイルに a.
UseSwappyForFramePacing=1
を追加します。また、すべての Android デバイスで有効化する場合は、これを
Android_Default
に追加します。
C++ でフレーム ペーシングを制御する
フレーム ペーシングを C++ で制御する場合は
FPlatformRHIFramePacer
インターフェースから static 関数を呼び出します。こうした関数のパラメータとして使用する場合は、フレームのペースを 32 ビットの整数として渡します。
FPlatformRHIFramePacer::SupportsFramePace
は、指定したフレームのペースが対象デバイスのリフレッシュ レートと互換性があるかどうかを確認します。
FPlatformRHIFramePacer::SetFramePace
は指定する整数値をペースに設定して、
FPlatformRHIFramePacer::GetFramePace
は現在のフレームのペースを返します。