みなさん、こんにちは。こちらはUWA Technologies(略称UWA)です。
今日は「あなたのモバイルゲーム開発の最適化時間を数ヶ月節約する方法」の最後のパート「メモリ」についてご説明いたします。
前回の文章をまだ読まれていない皆様は、是非移動してご覧ください。
「あなたのモバイルゲーム開発の最適化時間を数ヶ月節約する方法(レンダリング編)」
「あなたのモバイルゲーム開発の最適化時間を数ヶ月節約する方法(UI+ロード編)」
##メモリ
メモリパートに最も重要なのはメモリの割り当てとメモリリークです。
ほとんどのプロジェクトでは、アセットメモリとMonoメモリという2つの大きなメモリ割り当てがあります。 ここでは、最初にアセットメモリについて説明します。
###アセットメモリ
UWAレポートでは、テスト中にテクスチャメモリの割り当てを記録できます。 大事なのは、Monoメモリとテクスチャフォーマットです。
また、メモリの詳細を知りたい場合は、クリックして詳細を表示できます。
###実例
これはゲーム「Kiwame」からのデータです。テクスチャの詳細情報を見ることができます。 この中に、「アセット名」、「メモリ割り当て」、「解像度」、「フォーマット」などが含まれます。NewUI1_rgbが16 MBで非常に大きいことがわかります。 開発チームはそれを チェックして、最適化する必要があるかどうかを確認できます。
また、アセット管理にも注意する必要があります。表から1つ以上のアセットを選択、それらの使用情報がチャートに表示されます。アセットがいつロードされ、いつアンロードされるかを確認でき、メモリリークを分析することには非常に有用であります。
##メッシュ
次にメッシュの詳細を見に行きます。
アニメーションクリップ、オーディオクリップ、シェーダー、フォント、RT、パーティクルシステムなど、すべての詳細情報を直接かつ迅速に見ることができます。
###結果
これは 、テクスチャ、およびオーディオの最適化の結果です。
##Monoメモリ
二番目に大きいメモリはMonoメモリです。
###結果
こちらは結果です。25日をかかって、Monoメモリは150MBから50MBに最適化されました。
##メモリリーク
メモリ部分に、非常に難しい難問があります。それはメモリリークです。以前には、メモリリークを分析して解決するには、2〜3か月は常に必要でした。
UWAレポートでは、常駐Monoメモリを表示できます。グラフにMonoメモリがこのように増える一方で、下がらない場合には、つまり、メモリリークが発生したということです。
じゃあどうすれば修正できますか? チャートの2つのサンプルを比較して、Monoメモリの増分を見つけます。
このプロジェクトでは、メモリのほとんどの増加が、InstantateGamObjectという関数のInstantiateによるものであることがわかります。
これらは、garbage collectedできない変異体です。 そして、開発チームは関数を直接チェックして、どのコンテナーがそれらを参照しているかを確認できます。その後、コードをすばやく最適化できます。
###結果
これが結果です。 3日後、このプロジェクトでは、メモリリークの問題がほぼなくなりました。
これは別の例です。 ただ1日で、メモリリークの問題が改善しました。
現在、中国でUWA GOTを使っているゲームプロジェクトは、メモリリークの問題は約3日で大幅に改善できます。
過去のメモリリークの割合は約50%でしたが、昨年、UWA GOTでMonoメモリ分析を開始して以来、割合は25%に低下しています。
####今回、UWA GOTが日本のゲーム開発者たちに役立つことを願っています。
UWAおよびUWA GOTについてもっと了解したい場合には、UWA公式サイトに移動してください。
UWA GOTを使っていたnowsprintingさんも自身のブログでUWA GOTについて詳しく説明してしましたが、興味があれば「やらなイカ?」に移動してご覧ください。
UWA Technologyは、モバイル/VRなど様々なゲーム開発者向け、パフォーマンス分析と最適化ソリューション及びコンサルティングサービスを提供している会社でございます。
UWA公式サイト:https://jp.uwa4d.com
UWA公式ブログ:https://blog.jp.uwa4d.com