【Unity】サウンドアセットの軽量化
ゲーム開発において、BGMや効果音は必要不可欠です。しかし、サウンドアセットの容量がそのままゲームの容量に上乗せされてしまうため、たくさんのBGMや効果音のあるゲームはそれだけ大きな容量のゲームになってしまいます。
Unityにおけるサウンドの欠点を補ってくれるADX2やCRIを使って実装していれば問題ないですが、使用したことがない場合は学習コストもかかってしまうため身近であるAudio Clipで実装できるのが理想です。
見直す点①:オーディオファイルの形式
Unityでサポートされているファイルはmp3やwavなど8種類ほどあります。
ぶっちゃけUnity上でインポート後に圧縮設定が行えるので法人でなければそれほど気にする必要はないかもしれませんが、wavかoggをオススメします。
mp3がよく聞くオーディオ形式だと思いますが、数年前までライセンス料が発生していました。現在は特許もソフトウェアライセンスプログラムも終了しサポートがなくなっていますが、ネット上では様々な意見が飛び交っているため保証ができません。
見直す点②:圧縮設定
こちらはメモリやCPUに大きく関わるものになります。
小規模な開発であればそこまで気にしなくても良いと思いますが、この圧縮設定を見直すことによってデフォルトから数倍も負荷が軽くなります。
やったほうがいい設定を紹介します。
Force To Mono
モノラル変換です。これにチェックを入れると約半分のファイルサイズになります。
特別ステレオの必要がなければチェックを入れておくのをオススメします。
Load Type
デフォルトではDecompress On Loadになっています。これは、圧縮されているオーディオファイルを展開してメモリにロードするのでBGM等サイズの大きいものを使えば使うほどメモリを大幅に使用してしまいます。
残りは、Compressed In MemoryとStreamingがありますが、メモリ再生とストリーム再生はご存知でしょうか?
メモリ再生は、再生時に展開を行うのでCPU負荷がかかります。主に効果音等で推奨されています。メモリ再生にする場合はCompressed In Memoryを設定しましょう。
ストリーム再生は、ロードしながら再生を行うためメモリに負荷がほとんどかかりません。しかし、処理負荷がかかってしまいます。ストリーム再生の場合ロード完了を待つ必要がないので遅延が発生しません。そのため主にBGMで推奨されています。
ストリーム再生にする場合はStreamingを設定しましょう。
Compression Format
品質に関わる圧縮方法の設定です。
これは基本的にoggファイルで使われているVorbisという圧縮方式で問題ないです。
これは、品質を下げずにファイルサイズを大幅に落とせる優れもので、さらにQualityオプションで圧縮率を調整することもできます。
他には、品質に特化したPCMや大量の効果音を鳴らす際にCPU負荷を抑えられるADPCMがありますが、Vorbisで良いでしょう。
デフォルトでも問題なく再生できます!しかし、アプリをリリースする場合などどうしてもファイルサイズを抑えたい場合が出てくると思います。そのときはこういったサウンドに関しても見直してみると大幅に改善できると思うのでよかったら参考にしてみてください!