パフォーマンスと温度管理の改善は、Android で成功するゲームを開発するために不可欠です。従来、デベロッパーはゲームの忠実度を下げるかレンダラをさらに最適化することで、こうした問題に対処する必要がありました。こうした変更はゲームに固有の傾向があり、多くの場合、柔軟性に欠けます。
Android エコシステムには、アダプティブ パフォーマンス API がデベロッパーに提供されています。アダプティブ パフォーマンス機能の統合を簡素化し、エコシステムの断片化を減らすために、Google と MediaTek は共同で Android Dynamic Performance Framework(ADPF)と MediaTek Adaptive Gaming Technology(MAGT)の統合を進めています。
ADPF を使用すると、デベロッパーはリアルタイムの熱状況に基づいてゲームのワークロードを調整し、現在のワークロードのパフォーマンスを最適化するためのヒントを OS に提供できます。これらの信号を使用して、解像度、フレームレート、さらにはリソース読み込み戦略など、忠実度とパフォーマンスの設定を調整できます。これにより、パフォーマンス、温度、忠実度のバランスが取れやすくなり、Android ゲーマーに可能な限り最適なエクスペリエンスを提供できます。Android エコシステムでは、この技術が十分に活用されています。Kakao Games の Ares は、Thermal API に応じて実行時のワークロードを調整することで、FPS の安定性を 96%まで高めることができました。
MediaTek は Android 向け SoC のリーディング プロバイダです。同社は、新しい Dimensity 9300 など、多数のチップを製造しています。MediaTek は、2021 年から提供されている MAGT SDK も提供しています。この SDK は、MediaTek SoC のパフォーマンスを調整するための高度な機能(リアルタイム パフォーマンスに関する詳細な情報やワークロードの増加のヒントなど)を提供します。MediaTek はデベロッパーに MAGT を提供するだけでなく、強化された ADPF 機能の提供を開始しました。
![](https://developer.android.com/static/images/cards/distribute/stories/mediatek_google.jpg?authuser=7&hl=ja)
ADPF によるサーマル スロットリングを防ぎ、パフォーマンスを最適化する
MediaTek を使用すると、ADPF フレームワークは現在の温度とターゲット デバイスの温度にアクセスして、重大なスロットリングを防ぐことができます。ADPF の getThermalHeadroom()
関数を使用すると、デバイスが重大なスロットリングに達する前に、利用可能なサーマル ヘッドルームの推定値を取得できます。この推定値を使用して、デバイスがスロットリングをトリガーしないようにワークロードを動的に調整し、全体的なユーザー エクスペリエンスを向上させることができます。
アプリ(Unity の Boat Attack デモを例として使用)は、Performance Hint Session API を使用してパフォーマンスを最適化します。updateTargetWorkDuration()
関数と reportActualWorkDuration()
関数を使用して、各フレームのターゲット フレーム時間と現在のフレーム時間をそれぞれ提供します。MediaTek プラットフォームは、2 回の reportActualWorkDuration()
呼び出し間のワークロードを計算し、適切な CPU 容量を割り当て、ワークロードをターゲット期間内に完了できるようにします。
その結果、MediaTek プラットフォームは消費電力のバランスをとりながら最適な 1 秒あたりのフレーム数(FPS)を一貫して提供し、スムーズなユーザー エクスペリエンスを保証します。
フレームレートの向上、消費電力の削減、ゲーム セッション時間の延長を実現します
全体として、Unity Boat Attack のデモはフレームレートを 8.5 fps 向上させ、消費電力を 12% 削減し、25 分以上の長いゲーム セッションを実現しました。FPS の標準偏差が 25% 低下しました。 このような劇的な改善により、ゲームの忠実度が向上し、熱的にサステナブルな方法でプレイ セッションを長期間実行できます。
![](https://developer.android.com/static/images/cards/distribute/stories/mediatek_table.png?authuser=7&hl=ja)
![](https://developer.android.com/static/images/cards/distribute/stories/mediatek_fps.png?authuser=7&hl=ja)
忠実度設定を調整しなくても、パフォーマンスのヒント セッションを有効にするだけで、ワークロードは平均レンダリング スレッド時間を約 10% 短縮できました。
MediaTek SoC の適応型パフォーマンスの今後の展開
ADPF は今後数年間でアップグレードされ、新機能が追加され、デバイスに依存しない新しい機能が MAGT に追加されます。MediaTek デバイスをさらに活用したいデベロッパー向けに、MAGT SDK には MediaTek チップセット アーキテクチャを独自にターゲットとする高度な機能が含まれており、まもなく ADPF のコア機能も提供される予定です。
![](https://developer.android.com/static/images/cards/distribute/stories/mediatek_logo.png?authuser=7&hl=ja)
![](https://developer.android.com/static/images/cards/distribute/stories/android_logo.png?authuser=7&hl=ja)
Android の適応性を使ってみる
Android Dynamic Performance Framework は、Unity、Unreal、Cocos Creator のゲームエンジン用のすべての Android ゲーム デベロッパーが、Google のネイティブ C++ ライブラリを通じて利用できるようになりました。
- Unity デベロッパーの方は、アダプティブ パフォーマンス プロバイダ v5.0.0 をご利用ください。Thermal API は、Android 11(API レベル 30)以降のほとんどの Android デバイスでサポートされており、Android 12(API レベル 31)以降の Performance Hint API でサポートされています。
- Unreal のデベロッパーは、Android 12(API レベル 31)以降をターゲットとするほとんどの Android デバイス向けの Android Dynamic Performance Unreal Engine プラグインを使用できます。
- Cocos Creator の場合は、v3.8.2 から Thermal API を使用し、v3.8.3 から Performance Hint API を使用できます。
これらのゲームエンジンでは、Thermal API が Adaptive Performance と統合されており、デバイスの温度情報を取得できるように、Performance Hints API は Update()
または Monitor()
のたびに自動的に呼び出されます。追加の作業は必要ありません。
最後に、カスタム エンジンの場合は、ネイティブ ADPF C++ サンプルを参照できます。
参考情報
Android Dynamic Performance Framework を使用してゲームの FPS を安定させ、サーマル スロットリングを減らす方法を確認する。
MediaTek SoC での高度なパフォーマンス調整については、MediaTek Adaptive Gaming Technology をご覧ください。