menu
バージョン
2022.1.18.8567
2024.1.1.8691
2023.1.9.8628
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
2024.1.1.8691
2023.1.9.8628
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
このメソッドは、以下の場合に適しています。
メモリの使用量を抑えるため、メディアを非常に細かく分ける必要がある。
どのメディアアセットをどのSoundBankにアサインするのかを管理する手間を省きたい場合。
Action Eventの準備とは何でしょうか。PrepareEvent()
関数を呼び出す時に、システムがそのAction Eventを分析して、このEventに関連するすべての構造やメディアがメモリにロードされているかを確認します。ロードされていなければ、システムが自動的に不足情報をディスクからストリーミングします。イベントのプリペア(用意)状態は、プリペア状態を明確に解除するまで、続きます。
info | 注釈 |
---|---|
事前にプリペア(用意)できるのは、アクションイベントだけです。PrepareEvent(プリペアイベント)方式はダイアログイベントに使えません。 |
この方式で最低1つのSoundBankを作成する必要がありますが、構造部分はイベントと同じバンクに入れることも全く別のSoundBankに入れることもできます。
PrepareEventメカニズムを使用するSoundBankを構築するときの条件は、必要なイベントや構造が必ず1つ以上のSoundBankに存在することと、個別のメディアアセットがファイルシステムでアクセスできることです。なお、構造データを複数のSoundBankに分割して入れると、メモリ効率が改善されます。
アクションイベントをプリペアする前に、そのイベント自体が、SoundBankからメモリにロードされた状態でなければなりません(LoadBank()を使う)。これは、イベントの中に、そのイベントをプリペアするための前提条件が入っているからです。
info | 注釈 |
---|---|
AK::SoundEngine::PrepareBankと組み合わせて、イベントをプリペアすることも可能です。PrepareBankメカニズムを使う最大の利点は、バンクをイベント用バンクと、メディア用バンクに分ける必要がないことです。このメソッドでは、全てのコンテンツを同じSoundBankに入れますが、AK::SoundEngine::PrepareBankが呼び出された時に、メモリにロードされるのはバンクのメタデータコンテンツだけです。ゲーム側でメディアが必要になれば、PrepareEventを使ってロードできます。 |
イベントをプリペアする場合に、SoundBankを設定するには:
"Event"というサウンドバンクを1つ作成して、SoundBank Editorにロードする。
「Event」サウンドバンクにプロジェクトのアクションイベントをいくつか追加するか、単純にイベントのワークユニットををいくつか追加します。
Media 列のチェックボックスを外し、Events列とStructures列のチェックボックスだけを選択したままにする。 PrepareEvent()を使用する場合は、メディアをバンクでなくディスクから直接ロードする必要がある。
info | 注釈 |
---|---|
今回の例では、全てのイベントと構造を1つのSoundBankに入れてあります。これは小規模なプロジェクトでは可能ですが、一般的には、コンテンツを複数のSoundBankに分割した方が良いでしょう。またそれぞれのイベントにロードすべき他のサウンドバンクへのレファレンスが含まれるため、改めてロードしたりSDKコマンドから準備しなくてもよい構造用バンクを別に作成することもできます。 |
これらのSoundBankを生成して、生成されたSoundBankフォルダを、ゲームアプリケーションにコピーする。
info | 注釈 |
---|---|
1つのSoundBankに入っている構造データを、ランタイムに分割することはできません。このため、AK::SoundEngine::PrepareEvent()を使用している時に、ほかのSoundBankに入っている構造データが必要になると、そのSoundBankに入っているすべての構造データが一度にロードされます。事前にプロジェクトの構造データを複数のSoundBankに分割すると、メモリにロードされてしまう不要な情報の量を抑えることができます。 |
統合の詳細についてはWwise SDKドキュメントのPreparing Action Eventsをご覧ください。
AK::SoundEngine::PrepareEvent()
の呼び出し(Call)は、I/Oファンクションの呼び出しとして扱われます。前例では、ブロッキングファンクション(Blocking function)を使いました。AK::SoundEngine::PrepareEvent()
関数の他のオーバーロードを使い、非ブロッキング呼び出しにして、別のコールバックで、完了通知を回復(Revive)できます。
Action Eventを準備するメリットとデメリットを下表に示します。
メリット |
デメリット |
---|---|
SoundBankの生成プロセスがシンプルである。 メディアを非常に細かく分割できる。 全体的なメモリの節約を維持できる。 プロセスを自動化しやすい。 |
メディアアセットを1つ1つロードするため、ディスクの読み込みとシークの回数が増える可能性がある。 使用されるメモリの合計量の制御が減少します。 Interactive Music の操作は複雑になります。 |