背景
NEW STATE Mobile は Krafton のバトルロイヤル ゲームで、2021 年 11 月に全世界でリリースされ、リリース 1 か月で 4, 500 万回以上ダウンロードされました。KRAFTON, Inc. は、独立系ゲーム開発スタジオの集合体で、世界中のゲーマーに革新的で魅力的なエンターテイメント体験を生み出しています。PUBG Studios、Bluehole Studio、Striking Distance Studios、RisingWings、Dreamotion、Unknown Worlds で構成されており、それぞれが独自の専門知識を有しています。NEW STATE Mobile は Unreal Engine 4 で開発され、独特のゲーミング機能による GPU の高使用率に起因する発熱とバッテリーの消費量の削減に向けてさまざまな試みがなされました。
ゲーマーは遠距離のバトルをプレイできるため、ゲームエンジンはかなり遠くからシーンをレンダリングできる必要があります。また、戦場には多数の植生が存在するため、それらの植生が過剰に吸収されると、パフォーマンスの低下に大きく影響します。そこでチームは Android GPU Inspector(AGI)を導入し、ゲームの GPU 使用を最適化してボトルネックを解消することにしました。
図 1: NEW STATE Mobile のスクリーンショット
Eyecon の取り組み
NEW STATE Mobile は AGI を使用して大量の GPU カウンタ情報にアクセスし、それに応じて GPU の使用を最適化しました。チームは AGI が提供する GPU アクティビティ プロファイリング データを利用して、不要なレンダリング パスを特定しました。GPU 使用率とメモリ帯域幅を占有しているセグメントを特定した後、GPU カウンタと GPU アクティビティを行き来して最適化の進捗状況を確認し、正しい方向に向かっているかどうかを確認しました。
図 2: NEW STATE Mobile のスクリーンショット
同社が AGI を使用してゲームのパフォーマンスについて学んだことをいくつか紹介します。
ベースパスの最適化: Depth prepass は Early-z の使用を増やすテクノロジーであり、フラグメント シェーディングの使用を減らすのに役立ちました。Depth prepass は特に LOD0 に使用されました。LOD0 は画面スペースの大部分を占めるため、追加の描画呼び出しによる負荷が最小限に抑えられます。また、32 ビットのシーンカラー形式を使用すると、レンダリングパス全体のパフォーマンスが向上します。UnrealEngine4 のデフォルトの SceneColor 形式は FloatRGBA(64 ビット)です。32 ビット形式を使用すると、メモリ帯域幅を半分に削減できます。
測定された影響: 深度プリパスの適用後、GPU 使用率が 7.5% 低下しました。深度プリパスにより、さらに多くのフラグメントが Early-Z になる可能性があります。フラグメントのシェーディングに必要な時間が 2% 短縮されました。32 ビットの scenecolor フォーマットにより、GPU 使用率が 5.3% 減少しました。Shaders PENDING が 2% 減少し、システムメモリからの合計 GPU 読み取りが 330 MB/秒減少しました。GPU がシステムメモリに書き込む量は 78 MB/秒、テクスチャ メモリの読み取りも 43 MB/秒削減されました。
シャドウパスの最適化: メッシュをシャドウ キャスターとして使用する場合、高ポリゴン LOD を使用しても品質は変わりません。低ポリゴン LOD を使用することをおすすめします。これにより、三角形の数を削減できます。Unreal Engine 4 では、コンソール コマンド「ForceLODShadow」を使用して低ポリゴン LOD を使用できます。
測定された影響: 影に使用される三角形の数が約 12 万個減りました。AGI の GPU カウンタデータによると、GPU 使用量が約 2% 減少し、システムメモリから読み取られる GPU メモリの量が 130 MB/秒に減少し、GPU からシステムメモリへの書き込み量が約 23 MB 減少しました。
自動インスタンシング: シャドウパスの最適化とベースパスの最適化の両方に適用できる自動インスタンシングでは、実行時に同じレンダリング コマンドをマージして、一度にすべてレンダリングできます。これにより、NEWSTATE モバイルではパフォーマンスを損なうことなく、個々のオブジェクトにグローバル イルミネーションを適用できるようになりました。自動インスタンス化は UnrealEngine4 で提供される基本機能です。
測定された影響: 描画呼び出しが 500 回減少しました。これにより、描画呼び出しを約 48% 削減できました。GPU 使用率が約 3.5% 低下しました。これらの測定値は OpenGL を使用して実施されました。
図 3: GPU 使用量の削減を示す内部データ
結果
NEW STATE Mobile は AGI を使用することで GPU 使用率を 22% 削減しました。深度プリパスとシャドウパスの最適化によって、GPU 使用量がそれぞれ 19% と 3% 減少しました。描画呼び出しと、GPU がシステムメモリから読み書きする合計メモリも大幅に削減されました。
始める
Android GPU Inspector(AGI)を使用して、パフォーマンスの問題と最適化が必要な領域を特定し、Android デバイスに対するゲームの影響を分析する方法について学習します。