前回は100個のサウンドを鳴らして、CPU使用率やメモリサイズの比較を行いました。
単純比較ではストリーム再生がCPUとメモリともに負担が大きいという結果が出ましたが、やはり長いファイルを演奏するときにストリーム再生は真価を発揮します。
今回は、長さの違うサウンドファイルも用意して、より実際のゲーム製作に近いシチュエーションで調べていきましょう!
今回使うファイル定義
まず、サウンド「BGM」「ジングル」「効果音」の三種類に分類します。
Compression Formatごとのデータサイズは、以下の通りです。
長さ | PCM | Vorbis (Quality100) | Vorbis (Quality1) | ADPCM | |
---|---|---|---|---|---|
BGM | 120秒 | 21.9MB | 6.5MB | 0.8MB | 6.2MB |
ジングル | 10秒 | 1.83MB | 507.4KB | 55.1KB | 0.5MB |
効果音 | 1.5秒 | 283KB | 61.8KB | 6.9KB | 79.2KB |
そのうえで、BGMを20ファイル、ジングルを10ファイル、効果音を100ファイル用意します。
Compression Formatごとの合計データサイズは、以下の通りです。
- PCM:約485MB
- Vorbis(Quality100):141.4MB – 圧縮率29%
- Vorbis(Quality1):16.9MB – 圧縮率3.5%
- ADPCM:136.5MB – 圧縮率28%
これら130個のファイルを同時に再生して、負荷を調べます。
CPU使用率
CPU使用率の違いは以下の通りです。
Decompress On Load | Compressed In Memory | Streaming | |
---|---|---|---|
PCM | 3.00% | 3.20% | 4.40% |
Vorbis (Quality 100) | 3.00% | 21.50% | 21.80% |
Vorbis (Quality 1) | 3.40% | 10.70% | 10.60% |
ADPCM | 6.90% | 8.80% | 7.10% |
赤文字の二か所が特にCPU負荷がかかっていることが分かります。
Unity上の圧縮の選択肢としては、音質と圧縮率に優れたVorbisが一番にあがりますが、発音体が多い場合はCPU負荷が顕著に表れます。
メモリ使用量
続いて、メモリ使用量の違いは以下の通りです。
Decompress On Load | Compressed In Memory | Streaming | |
---|---|---|---|
PCM | 489.4MB | 489.4MB | 29.8MB |
Vorbis (Quality 100) | 491.1MB | 145.7MB | 31.5MB |
Vorbis (Quality 1) | 491.1MB | 21.2MB | 31.5MB |
ADPCM | 489.4MB | 140.8MB | 29.8MB |
Decompress On Loadでは無圧縮のPCMをメモリに置くことになるので、膨大なデータサイズとなります。
オリジナルのデータサイズがそのままメモリに載るといえます。
Compressed In MemoryではCompression Formatの合計サイズに4MB程度の「Other Memory」「Sample Sound Memory」が加わった値になります。
圧縮後のデータサイズの合計を見れば、オーディオメモリサイズの予測がつきますね。
Streamingは前回の記事で触れたように、オブジェクトが増えるごとにおよそ248KBメモリサイズが増加します。
今回は130個のオブジェクトで音を鳴らしているので、130×248KB=約31.5MBとなります。
誤差はありますが、ほぼほぼ予想通りの値です。
このことから、発音オブジェクトの最大数が分かれば、オーディオの使用メモリサイズが予測できます。
また、Vorbisは他と比べて「Other Memory」として若干多くメモリを使うようなので、その分が増えています。
今回のまとめ
今回は「データサイズ」「CPU使用率」「メモリ使用量」の三つの視点で調査を行いました。
それぞれでメリット・デメリットがはっきりしたかと思います。
たとえばBGMや環境音など長いサウンドではStreaming。
システム効果音やバトルで使われそうな短めのサウンドはCompressed On Memory。
頻繁に呼ばれそうなサウンドは、CPU負荷が最も少ないDecompress On Load……というような振り分けが理想的といえます。
Compression Formatは容量が許せばPCMが理想ですが、今回のような500MBものデータサイズはさすがに大きすぎるので、VorbisやADPCMの特性を理解したうえで設定するのがベストです。