Unreal Engine 用の Android Dynamic Performance Framework)(ADPF)プラグインは、安定したパフォーマンスを提供し、サーマル スロットリングを防ぎます。
GitHub からプラグインをダウンロードできます。
ADPF Unreal Engine プラグインの使用方法
プラグインをダウンロードする
プラグインをプロジェクト プラグイン フォルダにコピーする
Unreal エディタで ADPF Unreal Engine プラグインを有効にする
Unreal エディタを再起動する
ゲームをビルドして調理する
![ADPF Unreal Engine プラグインを有効にします。](https://developer.android.com/static/images/games/engines/unreal/unreal-adpf.png?authuser=9&hl=ja)
プラグイン コンソールの構成
このプラグインには、実行時にプラグイン オプションを変更できる次の Unreal Engine コンソール変数が用意されています。
CVar |
有効な値 |
デフォルト値 |
説明 |
---|---|---|---|
r.AndroidPerformanceEnabled |
0、1 |
1 |
Android Performance プラグインを有効または無効にします。このプラグインは Android Adaptability API を使用して、デバイスの温度ステータスに基づいてゲーム設定を調整し、必要に応じて CPU を調整します。 0: オフ(無効) 1: オン(有効) |
r.AndroidPerformanceHintEnabled |
0、1 |
1 |
Performance Hint Manager を有効または無効にします。サポートされている Android デバイスでスレッド ブーストを最適化するには、この設定を有効にします。 0: オフ(無効) 1: オン(有効) |
r.AndroidPerformanceChangeQualities |
0、1、2 |
1 |
熱ステータスでゲームの忠実度レベルを調整する方法を選択します。 0: 設定は何も調整しません 1: サーマル ヘッドルームに応じて設定が調整されます 2: サーマル リスナーに合わせて設定が調整されます |
ADPF Unreal Engine プラグインの仕組み
プラグインはフレームごとに Monitor()
関数を呼び出し、前回のサーマル チェックからの経過時間をチェックします。1 秒以上経過すると、プラグインは現在の温度を読み取り、グラフィック品質の変更が必要かどうかを判断し(ゲームがサーマル スロットリングされているか、サーマル スロットリングのしきい値に近いかなど)、それに応じて設定を調整します。
また、プラグインはターゲット フレームと実際のフレーム時間をパフォーマンスのヒントのセッション API に報告し、必要に応じて CPU 周波数のブーストや CPU スケジューリングの調整を行います。
![ADPF Unreal Engine プラグインのフローチャート。](https://developer.android.com/static/images/games/engines/unreal/ureal-adpf-flowchart.png?authuser=9&hl=ja)
温度の状態に基づいてグラフィックの画質を変更する方法
このプラグインは、Thermal API からのフィードバックに基づいて、Unreal Engine Scalability を使用してグラフィックの品質を調整します。Unreal Engine のスケーラビリティには、3(最高品質)から 0(最低品質)の 4 つのレベルがあります。各レベルは、解像度スケール、ビュー距離、アンチエイリアス、後処理、その他の機能にマッピングされます。
![Unreal Engine のスケーラビリティ。](https://developer.android.com/static/images/games/engines/unreal/unreal-adpf-scalability.png?authuser=9&hl=ja)
ADPF には、サーマル ヘッドルームと温度ステータスの 2 つの方法でデバイスの温度状態を判断できます。サーマル ヘッドルームはより正確な値を提供するため、プラグインはデフォルトでサーマル ヘッドルームを使用し、Thermal Status API を無効にします。
Unreal Engine のスケーラビリティは、次の熱値に基づいて変化します。
サーマル ヘッドルーム
- 0.75 未満: 品質レベル 3
- 0.75 ~ 0.85: 品質レベル 2
- 0.85 ~ 0.95: 品質レベル 1
- > 0.95: 品質レベル 0
温度ステータス
- なし: 品質レベル 3
- 光: 品質レベル 2
- 中: 品質レベル 1
- 重大かつ重大: 品質レベル 0
詳細については、Thermal API をご覧ください。
Performance Hints API
このプラグインには、ゲームスレッド用とレンダリング スレッド(レンダリング スレッドと RHI スレッド)用の 2 種類のパフォーマンスのヒント セッションがあります。この 2 種類のパフォーマンスのヒントは、各フレームの実際の持続時間とターゲット時間をレポートするために使用されます。実際の期間がターゲット期間と異なる場合、システムは CPU 周波数を調整してスケジューリングを適切に選択します。
詳しくは、Performance Hint API をご覧ください。
おすすめの方法
このプラグインは、サーマル スロットリングを防止し、基本的な実装で持続的な目標 FPS を提供します。すぐに結果を得るには、デフォルトの Unreal Engine スケーラビリティ レベルで ADPF を適用します。
ただし、ゲームごとに異なるため、解像度スケール、視距離、アンチ エイリアス、後処理、シャドウ、テクスチャ、エフェクトなどのパラメータごとにスケーラビリティ レベルを微調整して、ADPF がゲームの動的なパフォーマンスを十分に実現できるようにします。
ADPF Unreal プラグインを使用して最適な結果を得るための 3 つの主なステップは次のとおりです。
- ベースラインを確立する: ADPF を使用する前に、ゲームのパフォーマンスを詳細にプロファイリングします。このデータは、プラグインの実装後に比較する際の重要なベンチマークとして機能します。
図 4.ベースラインを確立します。 - Unreal のスケーラビリティを活用する: Unreal のスケーラビリティを試すには、パフォーマンス向上が中程度しか行われない場合でも、試してみましょう。これにより、あまり労力をかけずにパフォーマンスのメリットを得ることができます。
図 5.Unreal のスケーラビリティを活用 - ゲーム内のグラフィック設定を優先する: ゲーム内のグラフィックの品質レベルを最適化します。これらの設定はゲームのコンテンツに合わせて調整されており、スムーズなフレームレートとより優れた温度管理を実現します。
図 6.ゲーム内のグラフィック設定を優先します。