【軽めの進捗報告】Addressableで使用メモリの節約術
いつもありがとうございます!
頂いたコメントが多すぎてもはやどこから返していいものか分からず、
取り返しのつかない状態になっているねこのめめっです汗(ほんと申し訳ない)
前回の投稿から2週間たったので簡単になりますが進捗報告です。
進捗報告
新技の制作
アニメーションはアキレス腱固め?の続きを製作中
基本的なループパターンと技返しの状態まで作りました。
ここから詰めていきます。
メモリ消費量の節約
そしてここからは内部システム的な作業。
まずは不要なテクスチャを整理して使用しているメモリとディスク容量を改善しました。
何気に3Dモデルとかよりテクスチャが容量やらなんやら消費が激しいですよね。
Live A Battleはそれなりにリッチなモデルとテクスチャを使っているのでメモリの消費が大きいんですよね。
そこでオプションでクオリティセッティングなどである程度落とすことはできるのですが、それを見直してみることに。
ある程度スペックあると最初のロード以外は気にならないんですが、二つ前のPCだとロード時間が気になったので…(二つ前のPCは古すぎかな?)
現状だとキャラセレクトと対戦シーンが一番メモリの消費が多く、理由はキャラ、衣装、衣装用のテクスチャを一度すべて読み込んでしまうからなんです。
Unityの仕様上メモリ管理はUnityが自動でしてくれるんですが、これをある程度自分で調整できる機能を知ったのでそれを試してみているところです。
Addressableというシステムなんですが、簡単に言うとシーン始まり時にすべてのアセット(オブジェクトとかモデルとか)を読み込むんじゃなくて、必要に応じて読み込むシステムを試しています。
このシステムで、例えばキャラセレクトシーンでいうと、キャラを選択表示させたい時にだけ読み込んで、表示させないときは消すという感じです。
対戦シーンも必要なキャラのみを読み込めるので、メモリの消費を抑えることができます。
なので、このシステム導入での最大のメリットはシーンの切り替わり時のロード時間が速くなることですね。
ただし、デメリットもあり、必要に応じて読み込むためキャラの読み込みに時に時間がかかるということです。
例えばキャラセレクト時なら、コスを選択する際に選択コスを切り替えるたびに読み込み、削除を繰り返すので、コス選択のレスポンスが若干悪くなるかもしれません。
対戦シーンでのキャラ読み込みの遅延テストの動画です。
キャラの表示と衣装の表示が遅れているのがわかります。
まだテスト中なので、初期方向がおかしくなっていますが、これは後で直します。
それと実際に本実装するときは、読み込まれているシーンは暗転して隠します。
開発中の裏側みたいなもんですねw
それでこれが対戦シーン(初回起動から一回目)でのメモリ消費量の差です。
見るのは小さいですがプロセスのところ(物理メモリはパソコン全体の使用量)
新しく改善したもの↓
改善前のもの↓
コミットの部分で1.7gbくらい減っているのがわかります。
とはいってもこのリソースモニターの見方ってよくわからないんですよねw
見るのはコミットでいいのかな?
どっちにしても、使用量は減っているのがわかります。
メモリは蓄積されていくものなのでそれの開放とともに制作と検証をさせていただいています。(絶賛!脳みそパンク中w)
新しいシステムなのでちょっと勉強と、検証の繰り返しに時間をいただいています。