Unreal Engine での Android Dynamic Performance Framework(ADPF)のスタートガイド

Android Dynamic Performance Framework(ADPF)は、アプリケーションのパフォーマンスを最適化したいデベロッパー向けの Google の強力なツールです。ADPF は、サーマル API を介して、デバイスの熱状態に関するリアルタイム情報を提供します。この情報は、アプリのグラフィック設定の調整に使用されます。

調査目的で、Arm は Unreal Engine と ADPF を使用してデモを開発し、ADPF を使用してゲームのパフォーマンスを最適化する方法を調査しました。

ADPF は熱ステータスをモニタリングし、それに応じてゲームエンジンでグラフィック品質を調整します。

デベロッパーを念頭に置いた目標は、ゲームプレイ エクスペリエンスとデバイスの電力消費に影響を与えることなく、ユーザーがゲームを長時間プレイできるようにすることです。

始める前に

デモを詳しく見る前に、ADPF に関する Google の公式ドキュメントをご確認ください。このドキュメントは、ADPF の使用方法に関する詳細な分析情報とガイダンスを提供する貴重なリソースです。

ただし、カスタマイズ可能な学習を希望される場合は、ADPF サンプル リポジトリに、Android アプリに ADPF を実装する実用的な例が含まれています。

グラフィック設定の調整

Unreal Engine のコンテキストでは、パフォーマンスを維持するためにグラフィック設定を動的に調整できます。

ADPF の Thermal State モニターと Thermal Headroom API を使用して、サーマル スロットリングをモニタリングしました。デバイスがスロットリングを開始したら、シャドウの品質、反射の品質、テクスチャの品質などの画質設定を調整できます。

Unreal Engine の次のグラフィック品質設定は、さまざまな設定を変更するために使用されます。

  • ViewDistanceQuality
  • ShadowQuality
  • GlobalIlluminationQuality
  • ReflectionQuality
  • AntiAliasingQuality
  • TextureQuality
  • VisualEffectQuality
  • PostProcessingQuality
  • FoliageQuality
  • ShadingQuality
  • OverallScalabilityLevel

実世界の脅威に対するテスト

Arm は独自のデモゲームを作成しており、モバイル グラフィックスとゲーム技術の研究に使用しています。今年は、そのうちの 1 つである SteelArms デモで ADPF をテストしました。

SteelArms には、さまざまなレベルのグラフィック インテンシティと、かなりの CPU ワークロードがあります。最新のモバイルゲームのように構築されているため、最新のスマートフォンでゲームの動作をモデル化できます。また、Arm ベースのモバイル デバイス上のゲームでさまざまなテクノロジーがどのように機能するかをテストすることもできます。

結果

図 1: ADPF ありと ADPF なしの SteelArms の全画面比較。

上の画像は、ADPF が有効になってグラフィック設定が調整されたときの、最高品質(シネマティック)と最低品質(低)の違いを示しています。この変化は段階的であり、ゲームプレイ中にユーザーが気付くことはありません。

図 2: ADPF 統合ゲーム: 分割画面。

左側(青いロボット)に最高のグラフィック設定、右側(赤いロボット)に最低のグラフィック設定を表示した分割画面ビュー。

図 3: ADPF 統合ありのゲーム: 詳細の比較
図 4: ADPF 統合済みのゲーム: 並べて表示。

上の図 3 と 4 は、ロボットの同じビューを並べて示しています。よく見ると、ADPF を使用して調整されたグラフィック設定が表示されています。リングの床、ロボットの肩、リングロープ、観客に注目してください。いずれも品質が少し低く、ADPF を使用して作成されています。

スロットリングが差し迫っている場合、SteelArms デモではこれらの効果がスケールダウンされました。ポストプロセッシングと視覚効果におけるこのような小さな低下は、見つけにくいものです。また、通常、ユーザーは再生中にそれらに気付くことはありません。つまり、ゲームプレイ エクスペリエンスを損なうことなく、ゲームのビジュアル エクスペリエンスのほとんどを維持できます。ゲームの電力パフォーマンスとデバイスのバッテリー駆動時間を維持しながら、これらすべてを行うことができます。

前述のように、デモ目的で、品質設定が最も高い画像と最も低い画像を比較しています。そのため、よく見ると違いがわかる場合があります。ただし、ゲームプレイ中にダウンスケールしても、安定したゲームプレイ エクスペリエンスを維持しながら、ユーザーにはほとんど気付かれません。

結果

図 5: ADPF が有効または無効の場合の FPS、デバイス温度、熱状態、ヘッドルームの比較(フレームレートが約 57% 向上)

デバイスが過熱せず、1.0 の熱ヘッドルームの範囲内に収まります。

消費電力

図 6: ADPF を有効または無効にしたときの消費電力の比較

ADPF の結果

ADPF をオンとオフにしたときの結果は、前述の図に示されています。ゲームのフレームレートとコアの消費電力に違いがあることを示しています。ADPF をオンにすると、フレームレートが最大 57% 向上します。ADPF がオフの場合、GPU は大量の電力を消費します。大きな CPU コアでは、GPU ワークロードと一致する電力スパイクが発生します。処理量に追いつくためです。ADPF がオンの場合、大きな CPU コアはスロットリングに応答し、デバイス内のすべてのコアの全体的な消費電力を削減します。

まとめ

ADPF を使用すると、ゲームの消費電力を大幅に削減できます。最終的には、ゲーマーのプレイ時間が長くなり、バッテリー駆動時間が長くなり、使用しているデバイスの温度が低下します。デベロッパーの観点から、ADPF はゲームの正しいフレームレートを維持します。品質設定を柔軟にスケールダウンしながら、優れたゲームプレイ エクスペリエンスをユーザーに提供できます。

新しいデバイスと古いデバイスの両方で ADPF を使用できます。これにより、追加の最適化作業を行わなくても、以前の世代のデバイスでゲームを高い基準で実行できます。