重要なお知らせ:誠に勝手ながら当サイト(unityroom質問掲示板)は2021年10月31日をもちまして閉鎖させていただきます。ご利用誠にありがとうございました。

unityroom.com については引き続きご利用いただけます。

+1 支持
825 閲覧

unityroomで公開したゲームの容量削減を検討したいと思います。

  • 画像ファイル(png)の最適化
  • 画像のアトラス化
  • 音声ファイルの最適化(これが特によくわかりません)

などなど試みているのですが,今ひとつ効果がありません。「この辺を見ると良いかも」「これをやると効果的でした!」というアドバイスや経験談などあれば,ぜひお願いいたします。

また,参考資料やサイトなどあれば,ぜひ教えていただきたいです! 

初心者 (150 ポイント)
編集 | 825 閲覧

ログインまたはユーザー登録してから回答してください。

回答 2

+3 支持
とりあえず自分が知る限りで……

まずは具体的な容量の内訳を確認するのが良いと思います。

1.びるどします
2.ビルド後、consoleウインドウの右上のメニューを開きます
3.メニューから"open editor log"を選択します
4.テキストエディタが開きます。下の方にアセット別の容量のデータがあります。

だいたいは、大部分をテクスチャが占めている結果が出ると思います。
次いで音声ファイル。
容量別にソートされるので、上の方から対処すると効率的です。

■使っていないものが組み込まれていないか確認

Unityはビルド時に、使用しているリソースを判断してビルドしてくれますが、
完璧ではありません。例えばResourcesフォルダに入っているものは問答無用で組み込まれます。
例え実際のゲーム中で登場する事が無くても、シーンに配置(あるいは参照)されていれば組み込まれてしまいます。
そういった可能性を検証して、もし不必要に組み込まれているものがあれば除外していきます。

■テクスチャ圧縮

ここらへんは試されているかとも思いますが。
テクスチャを選択し、ImportSettingをごにょごにょし、サイズを削減します。
・圧縮アルゴリズムを使う
・ミップマップテクスチャの使用をやめる(ただし、代わりに描画パフォーマンスに影響します)
・そもそもの全体サイズ(Max Size)を小さくする

特に3番目かなと。アセット素材だとそのままだと4096x4096みたいなのがあるので……

アトラスはどちらかと言えば描画パフォーマンスの改善(SetPass Callの削減)なので
容量にはそこまで大きく影響はしないかなと思います。

■音声圧縮

手っ取り早いのは、Import SettingのQualityを下げてしまう事ですが、
言うまでもなく音の質が下がるので、慎重に行う必要があります。
特にBGMはがむしゃらにQualityを落すと、判る人には即判るレベルで劣化します。

直接波形を弄る方法としては、残響音のカットでしょうか。
SEの中では、かなり多めに残響を取ってるものもあります(素材系なら尚更)。
もしBGMが流れる中で再生されるSEの場合、後半の残響はほぼ聞こえない事も考えられるので、
適当な波形編集ソフトで残響をカットするのは手です(メジャーなのはSoundEngineでしょうか)。
後半部分の残響をカットすれば、確実に容量は減ると思います。
残響がいきなり止まるのが多少不自然に聞こえる場合はさらにフェードアウト処理を加えると良いと思います。

あとは3Dゲームの場合、モーションなんかが可能性に加わると思いますが、
自分はあまりその手のゲームを作らないので……モーションの圧縮設定も確かあったはずです。

補足:もしかしたらwebGLだと事情が変わるものもあるかもしれません。特にオーディオ周り。
 
 
達人回答者 (6.2k ポイント)
0
早速の回答ありがとうございます!
順番に追って調べてみます〜 やはり地道に削減していくのが良さそうですね。

モーションはキーフレームを間引くとか,あれこれやってみます! もともと手で付けているのでそこまで多くはないんですが,ちょっとずつ削減を試みてみます。

ビルドの後のログもよく見てみます! ↓を使い始めてみました。ソートのし直しとか色々とできて便利だなぁという印象です。

- Build Report Inspector
https://docs.unity3d.com/Packages/[email protected]/manual/index.html
+1 支持
サウンド周りは上の人が言ってるようにインポートクオリティを下げるのが、とても効果的と思います。

他には、似た物のピッチ変化での代用、Wavファイルをやめる、BGMは小さく切ってループを多用する等でしょうか。

グラフィックに関しては、良くあるのがアセットについてるテクスチャが使っても居ないのに参照されているとかあります。(大体お試しで使って消し忘れてたり)

アセットについてるテクスチャはサイズが大きい事も多いので消すかサイズ変更するのが良いと思います。

ここら辺はやはりメモリプロファイラ一回みてみた方が良いと思います。

大きい四角はつぶしやすいので、思ったよりも効果的と思います。
0
回答ありがとうございます!

アセットの消し忘れはよくやっちゃいますね :-( 気をつけます。
プロファイラーもよくよく観察してみます〜

関連する質問

0 支持
1 回答
0 支持
2 回答
0 支持
1 回答
Hakusa 初心者 (150 ポイント) 2020 12/22 質問 | 401 閲覧
0 支持
2 回答
2021-02-08 質問・回答をMarkdownで入力できるようにしました。
2020-09-03 新たなスパム対策を導入しました。

175 質問

159 回答

163 コメント

215 ユーザー