バージョン

menu_open

メソッドNo.2: 複数のコンプリートなSoundBank

このメソッドは、以下の場合に適しています。

  • ゲーム、つまりゲームのオーディオコンテンツやモーションコンテンツを、複数のセクションに分割できる。

このメソッドは、シングルプレイヤーゲームなど、可能性のある全てのサウンドやモーションが、ゲーム中のプレイヤーの現在地のみで決まるゲームに適しています。コンテンツを複数のSoundBankに分けることで、メソッドNo.1より効率的にメモリを管理できる上に、オーディオやモーションを比較的簡単にゲームに実装できます。

まず最初に、SoundBankの分割方法を決めます。例えば、以下のようにSoundBankを分割することができます。

  • 1つの汎用SoundBankに、ゲーム中に発生する可能性がある、全てのイベントを入れる。このSoundBankは、常にメモリにロードされている。

  • レベルごとにSoundBankを1つ、または環境ごとにバンクを1つ、設定する。メインキャラクターの現在地によって変わるサウンドやモーションを入れる。

  • さらに、ゲームの独自要件に基づいて、他のSoundBankをいくつか用意しても良い。

Wwiseで、コンプリートな(全てそろった)SoundBankを複数、作成するには:

  1. ゲームに必要なSoundBankを作成して、例えば、 「CommonEvents(共通イベント)」「Level_1」「Level_2”」「Level_3」などそれぞれに適切な名前を付ける。

  2. Wwiseで、イベントを、複数の仮想フォルダに分ける。1つのSoundBankに対して、1つの仮想フォルダを作成して、各仮想フォルダを該当するSoundBankにドラッグする。サウンドバンクに仮想フォルダを追加することで、プロジェクトに新しいイベントが追加されても、その都度サウンドバンクのコンテンツを編集する必要がない。仮想フォルダの中身に変更があれば、そのSoundBankが自動的に更新される。

  3. 全てのイベントを、適切なSoundBankに追加する。この手順は、元のフォルダにないイベントがあれば、それを追加するための手順である。あるイベントを複数のSoundBankに入れる必要があれば、必要な全てのSoundBankにそのイベントを追加すれば良い。

  4. これらのSoundBankを生成して、生成されたSoundBankフォルダを、ゲームアプリケーションにコピーする。

複数のコンプリートなSoundBankを、ゲームに実装するには:

  1. ゲーム中に、適切なタイミングで適切なSoundBankをロードすれば良い。例えば、ゲームの最初に汎用SoundBank(General SoundBank)をロードして、他のSoundBankは、プレイヤーのゲーム中の実際の位置に基づいて、ロードできる。なお、ゲームによっては、レベル間のトランジションのために、複数のレベルを同時にロードするので、多くのメモリが必要なものもある。

    このようなSoundBankをゲームにロードする方法として、以下のサンプルコードを参照。

                
                // Initialize the sound engine here. 
                ...
    
                // Load the Init bank and the Common SoundBank. 
                AkBankID  bankID; // Not used in this sample. 
                AKRESULT eResult = AK::SoundEngine::LoadBank( L"Init.bnk", bankID );
                if ( eResult == AK_Success )
                {
                  eResult = AK::SoundEngine::LoadBank( L"MyAllInONeBank.bnk", bankID );
                }
    
                ...
                // And at various places in the code, based on the actual needs:
                eResult = AK::SoundEngine::LoadBank( L"Level_1.bnk", bankID );
                ...
                eResult = AK::SoundEngine::LoadBank( L"Level_2.bnk", bankID );
                ...
                eResult = AK::SoundEngine::LoadBank( L"Level_3.bnk", bankID );
                ...
                eResult = AK::SoundEngine::UnloadBank( L"Level_1.bnk" );
                ...
                eResult = AK::SoundEngine::UnloadBank( L"Level_2.bnk" );
                ...
                eResult = AK::SoundEngine::UnloadBank( L"Level_3.bnk" );
              
    [注釈] 注釈

    LoadBank()コマンドの代わりに、AkBankContent_Allコマンドを使ってSoundBankをプリペア(用意)することもできます。SoundBankをプリペアすることのメリットは、メモリに入っているメディアの重複を避けられることです。Wwise SDKドキュメンテーションの「Preparing Banks」セクションを参照してください。

その他

Multiple Complete SoundBankを利用するメリットとデメリットを下表に示します。

メリット

デメリット

"All-in-one" SoundBankのテクニックより、メモリ使用量が大幅に削減される可能性がある。

ゲームに簡単に実装できる。

オンラインゲームや、イベントベースのゲームなど、オーディオ要件やモーション要件が、メインキャラクターの現在地などの単純な事実以外で変わるゲームには、適していない。

重複したデータがSoundBankに入っていれば、メモリにロードされたメディアファイルが重複する可能性がある。

異なるSoundBankに似たようなコンテンツが入っていることがあるので、ディスク上のSoundBankの合計スペースが、増える可能性がある。


このページはお役に立ちましたか?

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう