Unityでインディゲームを作る!

Unityでのゲーム制作を目指し、それに関わる話題についてのブログ

Audio編 Unity eBook "Optimaize Your Mobile Game Performance" を読み解く

Optimize_Your_Mobile_Game_Performance

 Unityが無料で発行しているeBook "Optimize Your Mobile Game Performance"を読み解いていこう!というこの企画もいよいよ後半戦!今回はAudio編です。

 

Audio

 通常、オーディオがパフォーマンスのボトルネックになることは無いのですが、それでもメモリを節約する最適化を行うことは出来ます。

 

可能ならば、サウンド・クリップをモノラル化する

 もし、あなたが3D空間オーディオを利用している場合、サウンド・クリップをモノラル(1ch)とするか、Force To Mono設定を有効にするかしてください。

 実行時に位置情報的に使われているマルチ・チャンネルはモノ音源に押しつぶされ、これはCPUのコストを増やし、メモリも無駄使いしてしまいます。

 

出来る限り、ソース・アセットとして非圧縮のオリジナルwavファイルをインポートする

 もし、MP3やVorbisのような圧縮フォーマットを使用している場合、Unityはビルド時に音源を解凍した後で再圧縮することになります。

 この結果、二度もデータを損失する工程を経てもたらされるのが、最終的なクオリティの劣化です。

 

クリップを圧縮して、圧縮ビットレートを下げる

圧縮によって、クリップのサイズとメモリの使用率を減らそう。

・大体のサウンドにはVerbisを使う。(非ループ音源にはMP3)

 

・短くて、頻繁に使用される音源にはADPCMを使う。(足音や銃声など)

 ADPCMは非圧縮のPCMに比べると圧縮されていますが、再生時に素早くデコードされます。

 

 多くの場合、モバイル・デバイスでのサウンドエフェクトは22,050Hzであるべきです。(※おそらく周波数帯域のこと?)

 低設定を使っても、最終的なクオリティにそれほど影響は与えませんが、しかし自分の耳で判断してください。

 

適切なロード・タイプを選択しよう

クリップのサイズごとに設定は変わります。

・小さなクリップ(200KB以下)はDecompress on Loadにする。これは16bitのPCMに解凍する際にCPUとメモリに負荷を発生させるので、短い音にだけ望まれる。

 

・中くらいのクリップ(200KB以上)にはCompress in Memory

 

・大きなクリップ(BGM)はStreamingに設定する。さもなくば、一度にそのオーディオ・クリップ全体がメモリに読み込まれることになります。

 

ミュートされたAudio Sourceはメモリからアンロードする

 ミュート・ボタンを実装した時に、単純にボリュームをゼロにする、ということはしないでください。

 Audio SourceコンポーネントをDestroyすることで、メモリからアンロードすることが出来ます。これにより、プレイヤーが頻繁にオンとオフを切り替える必要が無くなります。

 


 

 というわけで、Audio編でした。オーディオ・アセットのインポート設定が良く分かっていなかったので、細かい部分ですが助かりました。

 

次回はAnimation編です。