以下のセクションに目を通して、オーディオ開発プロセス全体を通してプラットフォームバージョンやランゲージバージョンを効率的に管理するためのコツやベストプラクティスを参照してください。
階層の高位オブジェクト、例えばコンテナなどを、右クリックして、ショートカットメニューで、Convertを選択すると、一度に複数のオーディオファイルのコンバージョンができます。オブジェクトグループ全体のコンバージョン設定を行うには、最上位オブジェクトを右クリックして、ショートカットメニューで、Conversion Settingsを選択します。また、Project Explorerで複数のオブジェクトを選択して、それらのコンバージョン設定の一括定義や、一括コンバージョンを行うことも可能です。
多くの場合、ゲーム開発スタジオでは、各プラットフォームを充分に分析して、メモリフットプリント、CPU、帯域幅などのアイテムごとに、「バジェット(配分)」を割り当てます。オーディオチームにも、このバジェットの一部が与えられ、プラットフォームごとにバジェットを効率的に管理するのは、オーディオチームの責任となります。プラットフォームによって、バジェットの割り当てが違うので、オーディオデザイナーは、コンバージョンの様々な設定項目を使いこなして、プラットフォームによって差があるバジェットを効率的に補いながらも、最高のサウンドを提供しなければなりません。Game Profilerを使ってゲーム中のパフォーマンスをモニターして、現状を確認しながら、コンバージョン設定を調節して、バジェット内に納めてください。
バジェットの検討事項として、オーディオフォーマットを考慮する必要があります。プロジェクトに最良のフォーマットを選択するには、Wwiseが対応するフォーマットの、それぞれの特徴を確認してください。一般的に、ファイルの圧縮率が小さいほど、CPU負荷が減りますが、通常圧縮されていないファイルは、より多くのメモリスペースやディスクスペースを使います。
オーディオファイルのエンコーディング方法を決めるための、基本的な提案と情報を、下表に示します。
ファイルフォーマット |
圧縮比率 |
CPU負荷 |
Memory |
一般的な使用例 |
制約事項 |
---|---|---|---|---|---|
PCM |
1:1 |
極小 |
大 |
高い忠実度が要求されるサウンド |
なし。 |
ADPCM |
4:1 |
小 |
中 |
アンビエントサウンド、SFX |
ループ再生は、64サンプルバウンダリに限定。 |
Vorbis |
3-40:1 |
中から高 |
中から極小 |
ダイアログ、ミュージック、アンビエントサウンド、SFX |
メタデータのオーバーヘッドが他のフォーマットよりやや大きいので、非常に小さいサウンド(数10ミリ秒未満)では使用しない。シークには、シークテーブルが必要。 |
WEM Opus |
10-60:1 |
大(ハードウェアアクセラレーション無しの場合)または極小(ハードウェアアクセラレーション有りの場合) |
中から極小 |
ダイアログ、単純なミュージック、アンビエントサウンド、SFX。 | プラットフォーム側の機能により、制約事項が異なる。詳細は下記 「プラットフォーム側の機能によって変わる、WEM Opusの制約事項とメリット」 を参照。 |
デフォルトで、Vorbisエンコーダが使う Seek table granularity(サンプルフレーム)は、16384です。シークテーブルが常に必要となるわけではありませんが、以下の状況では必須です:
Vorbisエンコーダを、From Elapsed Timeに設定したバーチャルボイスと組み合わせて使う場合。
Vorbisエンコーダを、インタラクティブミュージックファイル用に使い、特に、サウンドエンジンが、ファイルの冒頭以外の位置から読み始める必要がある場合。
Vorbisエンコーダで、シークアクションを使う場合。
Vorbisでエンコードされたファイル用に、シークテーブルを有効にするには、以下を行います。
Conversion Settingsダイアログで、Vorbisエンコーダを使用するプラットフォームのEditをクリックする。
Vorbis Encoder Parametersダイアログで、Seek table granularityリストの数字を選択してシークテーブルの精度を指定する。
シークテーブルの精度が細かいほど、メモリが必要となります。サンプルアキュレートなシーク(インタラクティブミュージックや、シークアクション)は、精度が低すぎるとCPU負荷が急増したり、ディスクのストリーミング精度よりも大きいとI/O使用が不足したりすることがあります。目安としディスクのストリーミング精度以下のシークテーブルサイズ、つまり初期化でAkDeviceSettings::uGranularity
で使う値を選択します。
ファイルが小さすぎると、シークが失敗することも | |
---|---|
ファイルが、Seek tableの精度(granularity)のサイズより小さいか、非常に近い場合は、シークが失敗する可能性があります。その場合は、Seek tableの精度を細かくしてください。 |
WEM Opusは、プラットフォーム側の機能によってデコードの処理方法を変えるという点で、独特なフォーマットです。具体的には、プラットフォーム側がハードウェアアクセラレーションに対応していれば、WEM Opusはまず、それを利用しようとします。このため、WEM Opusの制約事項は(そして最終的な利便性も)、対象となるプラットフォームによって変わります。
多くのプラットフォームでは、WEM OpusをCPUでデコードします。この場合の制約事項は、圧縮率が高い代わりに、Vorbisよりも全体的にCPU負荷が大きいことです。
一方、ターゲットとするプラットフォームがOpusハードウェアアクセラレーションに対応していれば、制約事項がなくなり、CPU使用量は非常に小さくなり、シーク中も大きくなりません。このようなプラットフォームでは、ロー(低)レイテンシのハードウェアデコード機能をオン・オフする以下の選択肢が、初期化段階に表示されます。
ローレイテンシのデコードを 無効 にすると、WEM Opusの再生が1オーディオフレーム分だけ、遅くスタートすることがあります(通常はデフォルト設定で10.6ミリ秒の遅れ)。シーク動作でも似たような遅延が発生します。
ローレイテンシのデコードを 有効 にすると、上記の追加レイテンシが発生しません。ただし、同時に多数のWEM Opus圧縮の音を再生すると、ボイススターベーションのリスクが大きくなります。これはサウンドエンジンが、プラットフォームのハードウェアによるデコードが完了するのを待ってから、各種サウンドのミキシングを開始するからです。
なお、このオプションはグローバル設定なので、個々のサウンドで機能をオン・オフすることはできません。そこで、メリットとデメリットを慎重に検討して、あなたのプロジェクトの具体的なユースケースに照らし合わせながら、決めてください。
ターゲットプラットフォームがOpusハードウェアアクセラレーションに対応しているかどうか、そして低レイテンシのデコードのオン・オフの仕方については、プラットフォームのSDKドキュメンテーションを参照してください。