本日共有したコンテンツは、LILITHが開発した人気のインディーズゲームAbiからのもので、現在高い評判を獲得しています。 該当プロジェクトをテストしたところ、ローエンドおよびミッドレンジの携帯電話でフレーム率が低く、デバイスの発熱の問題がより深刻になることがわかりました。開発スタッフとのコミュニケーションを通じて、問題の原因を分析し、分析プロセスとソリューションを共有しました。
一、問題の説明
このシーンでゲームをテストすると、ローエンドデバイスとミッドレンジデバイスのパフォーマンスが低下し、デバイスの発熱問題がより深刻になります。
二、問題の再現
開発チームから提供された例に対して分析した結果、ローエンドデバイス(Redmi 2 & Redmi Note 2)においてこの問題が再現されました。具体的なCPUコストは、下の図で示している。Redmi 2 & Redmi Note 2において、いずれも25フレーム以下となります。
Redmi Note 2:Gfx.WaitForPresent – 平均46ms
Redmi Note 2:Gfx.WaitForPresent – 平均31ms
三、問題の分析
Gfx.WaitForPresentはローエンドでの温度が持続的に高まっています。これは、現在のパフォーマンスのボトルネックがCPUではなくGPUにあることを示しています。そのシーンをテストした結果を踏まえて次のことがわかりました。
(1)Android側でAA機能が無効になっています。
(2)シーンには2つのRealtime Directional Lightがあり、両方のRealtimeシャドウがオンになっています。
(3)シーンには5〜6個のRealtime Point Lightがあります。
検出結果から、シーンにはRealtimeの光源が多すぎます。これが、GPUの過剰な圧力の主な理由です。 シーン内の1つのDirectional LightのみをImportantな光源として予約し、他の光源は「Importantでない」に設定しましたRedmi Note2デバイスのパフォーマンスを次の図に示します。Gfx.WaitForPresentは平均14msに削減され、フレーム率は45FPSで安定しました。
同時に、Directional LightのRealtimeシャドウをオフにしようとしましたが、パフォーマンスの向上は明らかではありません。これは、シャドウがGPU側の主なプレッシャーではないことを示しています。
さらに、2つの異なる状況でデバイスのコスト消費量もテストしました。 最適化されていない場合、モバイルデバイス(テストデバイスはXiaomi 5S)の電力消費率は20.07%/時間です。Importantな指向性ライトを1つだけ予約すると、モバイルデバイスの電力消費率は16.44%/時間、つまりデバイス電力消費率は20%節約されます。
四、結論
上記の分析から、ローエンドデバイスとミッドエンドデバイスでの現在のゲームシーンの低フレーム率と主な理由は、GPUパフォーマンスの圧力が大きすぎることであり、根本的な原因はシーンで使用されているRealtime光源が多すぎることです。 この点に関して、開発チームは、実際の状況に応じてシーン内のImportantなRealtime光源の数を可能な限り制御し、GPUのパフォーマンス圧力を軽減することをお勧めします。
UWA Technologyは、モバイル/VRなど様々なゲーム開発者向け、パフォーマンス分析と最適化ソリューション及びコンサルティングサービスを提供している会社でございます。
UWA公式サイト:https://jp.uwa4d.com
UWA公式ブログ:https://blog.jp.uwa4d.com