Unity を検索

Adaptive Performance 4.0 によるモバイルパフォーマンスの最適化

2022年6月29日 カテゴリ: Engine & platform | 11 分 で読めます
Image of performance chart/bar on top of a dark red background
Image of performance chart/bar on top of a dark red background
シェア

Is this article helpful for you?

Thank you for your feedback!

Unity 2022.1 TECH ストリームをダウンロードし、Adaptive Performance 4.0 に触れてみてください。新たに追加された物理、デカール、カスタマイズ、レイヤーカリングをカバーする 4 つのスケーラーと、ビジュアルスクリプティングのサポートによってアプリのパフォーマンスを最適化し、Samsung デバイスで Android のパフォーマンスをさらに向上させましょう。

Unity 2022.1 では、次の長期サポート(LTS)リリースを形作る、革新的な新機能をいち早く利用できます。検証済みパッケージである Adaptive Performance 4.0 では、アプリのスケーリングを拡張し、全体的なパフォーマンスを向上させるための素晴らしい新機能が追加されています。

GDC 2022 の Samsung と共催した講演『Unfolding your gaming potential with Galaxy GameDev』で Adaptive Performance 4.0 の最新アップデートを共有しました。この記事の続きでは、その要約をまとめてお伝えします。

ビジュアルスクリプティング

ビジュアルスクリプトの統合により、誰でも Adaptive Performance を活用してアプリケーションを拡張し、バッテリー寿命を延長することができます。Adaptive Performance 4.0 をインストールすると、Unity のビジュアルスクリプティングシステムがユニットを提供し、C# で何も実装せずに Adaptive Performance のメトリクスにアクセスすることができるようになります。

A screenshot of Unity's visual scripting menu
Adaptive Performance 4.0 がアクセスできる Unity のビジュアルスクリプティングシステムのユニット

つまり、ビジュアルスクリプティングパッケージをインストールすると、Unity は自動的に Adaptive Performance ユニットをアクティブにするのです。インストール後、既存のビジュアルスクリプトグラフを持つプロジェクトに Adaptive Performance を追加することもできますが、ユニットを再コンパイルする必要があります。詳細なデモとベストプラクティスについては、Adaptive Performance サンプルのドキュメンテーションをご覧ください。

Unity が Adaptive Performance ユニットを再生成するので、任意のスクリプトグラフの背景を右クリックして、グラフに新しいユニットを追加することができます。Adaptive Performance サブメニューで、ユニットを探します。

『Boat Attack』におけるパーティクル

ここでは、ビジュアルスクリプティングにおける Adaptive Performance の使用例を紹介します。下の画像は『Boat Attack』で使われているものの一部を表示したもので「throtting imminent」ではすべてのパーティクルが無効になり、警告が存在しない場合は有効になります。水波の飛沫、ボートのエンジンの煙、パラグライダーの軌跡形成などのエフェクトは、CPU や GPU の負荷が大きいため、調整を行っています。これにより、ゲーム自体に最小限の変更を加えるだけで、パフォーマンスを向上させることができます。

Visual Scripting flowchart

デバイスの熱に関する警告の状態が変わるたびに、パーティクルシステムにそれを伝え、パーティクルシステムを停止させたり、再起動させたりしています。もちろん、これはゲームのニーズに応じて調整することができます。例えば、エフェクトを完全に無効にするのではなく、エミッターの数やソース画像の品質を調整することもできます。

すべての Adaptive Performance API は、ビジュアルスクリプティングでも使えるように再構築されています。API の完全なリストとその関連情報は、ビジュアルスクリプティング統合ドキュメンテーションに記載されています。

スケーラー

すでに利用可能な数多くのスケーラーに加え、Adaptive Performance 4.0 には新たに 4 つのスケーラーが追加されました。

  • レイヤーカリングスケーラー
  • デカールスケーラー
  • カスタムスケーラー
  • 物理スケーラ

インデクサーシステムと、これを基礎として構築されたすべてのスケーラーの利点は、以下のとおりです。

  • フレームレート安定化
  • 最小限のスロットリング
  • スロットリングからの回復
  • 実行時のコンテンツの自動調整
  • 数百万台のデバイスでソースを再コンパイルすることなく調整が可能
  • 統合が簡単
  • 高品質
  • 低メンテナンスコスト

Adaptive Performance Unity Profiler モジュールは、スケーラーがどのように変化するかを表示するため、スケーラーがうまく機能しているか、それとも微調整が必要かを確認することができます。以下の例は『Boat Attack』を Samsung Fold3 で開いた状態で動作させたもので、かなり高い解像度が使用されています。

Boat attack's main menu's scalers

Boat Attack』が起動してすぐにメニューシーンにたくさんのスケーラーが現れ、キャプチャが行われる前にこれらのスケーラーは安定しました。この例では、温度が急激に上昇し、デバイスがスロットリングの状態になります。

Adaptive Performance は、明らかにボトルネックになっている GPU への影響を軽減し、状況を安定させようとします。そのため、シャドウスケーラーでどんどん画質を落としていくのですが、それだけでは足りないので、視野距離も解像度も落としていくのです。その後、フレームレートが安定し、デバイス温度も下がります。ゲームはスロットリングから脱出し、フレームレートは 60fps に上昇します。

レイヤーカリングスケーラー

レイヤを使用すると、実行時にレイヤーカリングを行う距離を動的に調整することができます。

この機能は、最適なパフォーマンスと熱安定性を得るために、レイヤーカリングを行う距離をいつ、どの程度増減させるかなど、インデクサーのシステムを使って特定の判断を行うものです。

Adaptive Performance と同梱されたサンプルは、節目となるフレームレートに達するまで中程度の CPU 負荷でループし、その後レイヤーカリングを行う距離を減少させるというものです。その結果、CPU や GPU の負荷によってレイヤーカリングを行う距離が変化します。

各レイヤーのカリング距離に異なる値を設定することで、その値に応じてスケールさせることができます。これにより、どのオブジェクトを早めにカリングすればパフォーマンスを抑えられるかを判断することができます。この方法の詳細については、こちらのコードサンプルを参照してください。

アダプティブデカール

アダプティブデカールはビジュアルエフェクトに狙いを定めています。『Amazing Adventures of Dr. Arm』には、パーティクルやデカールプロジェクターを多用するボス戦のシナリオがあります。モバイルデバイスが熱くなり、スロットリングが起きそうになると(あるいはすでに起きていると)、放出されるパーティクルの数が落ちます。この場合、風になびく葉っぱや小さな火花など、絵作りの上で重要度が低いエミッターは完全にオフにされます。また、スケーラーによりデカール距離も短縮されます。

警告なし

A character wielding a sword faces a cloaked wizard in a forest, who makes red thunderbolts fall from the sky
(画像提供:Arm)

スロットリング

A character wielding a sword faces a cloaked wizard in a forest, who makes red thunderbolts fall from the sky
(画像提供:Arm)

さらに、一部のパーティクルでは衝突が無効化されています。熱負荷が下がれば、エフェクトを厚くして再びこれらのエフェクトを表示させることができます。

カスタムスケーラー

カスタムスケーラーはフォグスケーラーを実装しています。また、必要なスケーラーがすぐに使えない場合、独自のスケーラーを作成することも可能です。カスタムスケーラーは、熱負荷が大きくなるとフォグを増加させ、視界距離を短くします。この動作によりシステムの負荷が減少し、熱負荷の高い状態から回復することができます。

ポストプロセッシングは、油断するとフレームをレンダリングする際に最もコストがかかる部分の 1 つに早変わりします。ポストプロセッシングはゲームプレイに絶対に必要というわけではありませんが、雰囲気を盛り上げたり、開発チームが苦労して作ったアートを引き立てたりすることができます。

Adaptive Performance は、ゲームのポストプロセッシングエフェクトの全範囲を含めることができるメリットがありますが、デバイスからの要求がピークに達する瞬間には、その時不要なエフェクトを落とすこともします。『Amazing Adventures of Dr. Arm』では、スロットリングが進んでいるとき、主にシーンの雰囲気を高めるために使われているだけで、ゲームプレイに大きな影響を与えるものではない特定のエフェクトをオフにします。フォグ、ブルーム、被写界深度、SSAO(スクリーンスペースアンビエントオクルージョン)、モーションブラーなどは、大きな効果があるものの、ゲームプレイに不可欠ではないビジュアルエフェクトの良い例です。これらを調整することにより、ゲームのパフォーマンスを大幅に向上させることができます。

警告なし

Scene with a forest and field background with an figure aiming at a target through fog
(画像提供:Arm)

スロッ トリング

Scene with a forest and field background with an figure aiming at a target
(画像提供:Arm)

Adaptive Physics

Adaptive Physics は、物理エンジンが更新処理を行う固定のデルタ時間を調整します。他のシステムで使用する場合は、それらも同様に調整されます。しかし、他のシステムで固定のデルタ時間を使用している場合、固定のデルタ時間よりも細かい設定を採用するために、独自の物理スケーラーを作成した方がいいかもしれません。  

上記の Time.fixedDeltaTime のオリジナル値とスケールダウンされた際の値の比較をご覧ください。オリジナルの平均フレーム時間は 28ms、スケールダウンされた際の平均フレーム時間は 21ms です。

Adaptive Performance チームは、パッケージとそのプラットフォームのリーチを広げるために常に努力しており、今後登場する新しいプロバイダーにも期待しています。いつものように、Adaptive Performance フォーラムでのご意見をお待ちしています。ご遠慮なく投稿してください。

2022年6月29日 カテゴリ: Engine & platform | 11 分 で読めます

Is this article helpful for you?

Thank you for your feedback!

関連する投稿