バージョン
このメソッドは、以下の場合に適しています。
ゲームのメモリに保存するアセットが、大量にある。
サウンドデザイナーが、ゲームのメディア要件を事前に予測するのが困難である。
あるイベント用に再生するサウンドやを決めるのに、SwitchやStateを活用するプロジェクトである。
サウンドを、定義されたセクションに簡単に分割することができない。
中には非常に複雑なゲームもあり、サウンドやモーションをトリガーする時に様々な要因が関与し、例えば、ゲームに出てくる素材、ゲーム内の時間、ゲームオブジェクトの動き、さらにオンラインマルチプレイヤーゲームの場合は、他のプレイヤー達のアクションまでもが、関係することもあります。イベントベース、またはオブジェクトベースの環境では、サウンドをロードするタイミングを、他のゲームオブジェクトとの距離関係に基づいて決めることができます。例えば、ロードする複数のSoundBankのリストを、ゲームオブジェクトごとに設定して、そのゲームオブジェクトが一定の範囲内にある時、または単にゲーム中で存在する時に、これらのSoundBankをロードするのも、1つの方法です。
また、SwitchやStateによって、再生するオブジェクトが変わります。オブジェクトを再生させるイベントを、SoundBankに追加する時に、再生される可能性のある全てのメディアも自動的に追加されます。例えば、「Play_Footstep(足音を再生)」という1つのEventがあるとします。Switchの切り替えによって現在の地面素材が指定され、これに基づいてイベントが適切なサウンドを再生します。この方法は確実ですが、例えば、ゲームプレイがロンドンのビルの中で進行しているのに、「footstep_sand.wav(砂の足音)」や「footstep_winter.wav(冬の足音)」などのサウンドをメモリに入れておくことは、無駄になりかねません。
この場合、メモリを無駄使いしないために、1つのSoundBankにEventやオブジェクト構造を追加し、次に各SoundBankにどのオブジェクトを入れるのかを指定します。例えば、様々な地面の上の足音の例を考えて見ましょう。この場合、以下のSoundBankを作成します。
「EventBank(イベントバンク)」: 「Play_Footstep」のイベントと構造を入れたバンク。
The "Winter_Footstep_bank", which would contain the media for the footsteps that only occur in some part of the game (winter).
The "Desert_Footstep_bank", which would contain the media for the footsteps that only occur in some part of the game (desert).
「Common_Footstep_bank(一般足音バンク)」: どこでも発生する足音(床板、コンクリートなど)用のメディアを入れたバンク。
例えば、ゲームに3種類の地面があるとします(雪、砂、コンクリート)。Wwiseでは、Switch Containerを1つ設定して、Switch「ground_texture(地面素材)」に従い、3つのRandom Containerの1つを、再生します。3つのRandom Containerには、指定された地面の足音サウンドとして、それぞれに4種類のサウンドが入っています。
メディアをマイクロマネージ(細かく分別)するSoundBankを、Wwiseで作成するには:
"EventBank"というSoundBankを1つ作成して、SoundBank Editorにロードする。
イベント"Play_Footstep"を、SoundBank Editorの、Addタブにドラッグする。
本イベントのMedia列のチェックボックスを外し、Events列とStructures列のチェックボックスは、選択したままにします。
3種類の地面素材に対して、SoundBankを1つずつ作成する。
3つのSoundBankに、それぞれの地面素材に関連するRandom Containerを、1つずつドラッグして入れる。
注釈 | |
---|---|
3つのRandom Containerをドラッグ&ドロップする代わりに、個々のサウンドをドラッグ&ドロップして入れることもできます。ただし、コンテナを使うと、コンテナの中身が変更されても、コンテナ内のサウンドが全て自動的にSoundBankに追加され、マニュアル操作で変更点を修正しなくて済む、というメリットがあります。 |
地面素材の3つのサウンドバンクはそれぞれEvents列とStructures列のチェックボックスを外し、Media列のチェックボックスだけを選択したままにします。
これらのSoundBankを生成して、生成されたSoundBankフォルダを、ゲームアプリケーションにコピーする。
この時点で、バンクは合計4つあり、最初のSoundBankの中に、再生するオーディオに関するイベント(Event)データと構造(Structure)データがあり、それ以外の3つのSoundBankには、それぞれ1つの地面素材に関連するメディア(Media)だけが入っている。
For integration details, see Micromanaging Media in the Wwise SDK documentation.
ここでは具体的な例を1つあげましたが、このテクニックは他にも多様な使い方があります。SoundBankごとに入れるオブジェクトやEventを1つずつ決めるため、すべてのSoundBankの中身を完全にコントロールできます。なお、ゲームの全てのオブジェクトに対して、SoundBankを1つずつ作成することもできますが、新しいサウンドやができるたびに、そのSoundBankをゲームの適切な場所でロードするために、新たなコードが必要となり、常に維持するのが非常に難しくなります。どのゲームでも、設定の細かさと、ゲームへの実装のしやすさの間で、ちょうど良いバランスを見つけることが最終目的となります。
注釈 | |
---|---|
サウンドを1つ1つロードする方法を検討しているのであれば、SoundBank全体をロードするのではなく、Eventの準備機能の方が、適しているかもしれません。イベントのプリペアについては「アクションイベントをプリペアする(Prepare Event方式)」を参照してください。 |
メディアをマイクロマネージするメリットとデメリットを、下表に示します。
メリット |
デメリット |
---|---|
メモリ使用の最適化には、最も適している。 ゲーム中のどの時点に、どのメディアをロードするのかを、完全にコントロールできる。 ほかより大きくなりがちなメディアSoundBanksで、 「SoundBank backward compatibility」を確保できる。 |
どのSoundBankをいつロードするのかを判断するには、サウンドデザイナーとゲーム開発者の間で緊密な連絡が必要となる。 |