モバイル デバイス向けフレーム ペーシング

モバイル デバイス向けフレーム ペーシングの有効化とカスタマイズ

Windows
MacOS
Linux

[TOC end:1]

Frame Pacing (フレーム ペーシング) は、デバイスのネイティブ リフレッシュ レートより低いフレーム レートでフレームのレンダリングを行うよう、アプリケーションを制限するシステムです。この機能によりアプリケーションは、レンダリングの一貫性と安定性を優先して、フレームレートを制限しない実行よりもスムーズなユーザー エクスペリエンスを実現できます。In Unreal Engine 4 (UE4) のフレーム ペーシングは、プロジェクトの構成を記述する Device Profiles (デバイスプロファイル) を使用してデバイスごとに設定できます。

デバイスプロファイルでフレーム ペーシング設定を編集する

フレーム ペーシングは、対象のデバイスを記述した DeviceProfiles.ini ファイルの CVars で制御します。

  • iOS デバイスの場合は [/Script/IOSRuntimeSettings.IOSRuntimeSettings] でデバイスプロファイルを追加可能

  • Android デバイスの場合は [/Script/AndroidRuntimeSettings.AndroidRuntimeSettings] でデバイスプロファイルを追加可能

フレーム ペーシングを制御するパラメータを以下に示します。

パラメータ

使用方法

説明

FrameRateLock = [value]

FrameRateLock=True

True に設定すると、すべてのフレーム ペーシングを許可します。

bEnableDynamicMaxFPS = [value]

bEnableDynamicMaxFPS=True

True に設定すると、対応するデバイスで 120Hz を許可します。

4.24 以前で利用可能

rhi.synchinterval = [value]

rhi.synchinterval = 1

4.24 以前でフレーム ペーシングのリフレッシュ レートを設定する従来の変数で、1 の値を 60Hz のリフレッシュ レートとして扱います。

4.25 以降で利用可能

r.setframepace [value]

r.setframepace 30

r.setframepace 30 4.25 で iOS と Android に推奨する新しい方法で、リフレッシュ レートを指定する値に直接設定します。

a.UseSwappyForFramePacing = [value]

a.UseSwappyForFramePacing=1

デフォルトの設定は 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 は現在のフレームのペースを返します。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback