Wwise SDK 2024.1.0
|
スイッチは、完全な新規サウンドを必要とする、ゲームのアクションまたは環境の変化のことです。スイッチシステムの目的は次のようなものです:スイッチコンテナをゲームオブジェクトベースで駆動。
例えば、地面テキスチャがスイッチとして設定されている場合、足音が発生する時にどのサウンドを再生するかを決定するのは、地面テキスチャになります。
スイッチグループの例:
このグループ内の様々なスイッチの例:
2つの異なるキャラクターが、同一時に2つの異なる地面テキスチャ上に存在する場合、各キャラクターのスイッチのステートも異なります。
スイッチグループに現在のスイッチがない場合、スイッチグループはデフォルトのスイッチを使用します。このような状況は、ゲームの開始時、または開発中に発生する可能性があります。ゲームコードが存在しないスイッチを参照する場合も、スイッチコンテナはデフォルトのスイッチを使用します。例えば、サウンドデザイナーがスイッチを1つ削除するためにコンテナに変更を加えたにも関わらず、オーディオプログラマーに知らせていない場合、このスイッチはコードに残ります。このコードがゲーム内で実行されると、これが参照するスイッチはすでに存在しないため、デフォルトのスイッチが使用されます。
スイッチの駆動方法には、3つのオプションがあります:SDK の AK::SoundEngine::SetSwitch() メソッド、Wwise イベントで生成される "SetSwitch" アクション、または、RTPC。しかし、これらのオプションを組み合わせると問題が起こりやすくなります。例えば、サウンドデザイナーがEventを作成してその中にSetSwitchのActionを取り入れる一方、オーディオプログラマーがSDKの AK::SoundEngine::SetSwitch() コマンドを使いスイッチを動かすとしたら、Switchをコントロールしにくい事態となるかもしれません。スイッチを実際にどのように動かしたいのかを、サウンドデザイナーとオーディオプログラマーが、スイッチグループごとに、またはプロジェクト全体で、事前に話し合って決めておくことが推奨されます。スイッチがどのように変化するかについての同意がある場合のみ、3つの方法は一緒に使用可能です。例えばスイッチの初期化にはオーディオプログラマーがSDKの AK::SoundEngine::SetSwitch() コマンドを使い、ゲームのそれ以外の部分では、Eventでスイッチを動かせるように残しておくことができます。
SDK からスイッチを設定する方法は2通りあります:文字列の使用(Unicode または ANSI)またはIDの使用。
文字列を使用するとコードが読みやすくなるので、開発中の使用や通常文字列を使用する環境での使用に適しています。ID を使用すると、文字列ルックアップが回避され、文字列マッピングの格納に使用されるメモリを節約します。
SDKからスイッチを設定するには、次のコードを呼び出せばよいだけです:
または
SetSwitch() 関数の3つ目のパラメータは、スイッチを適用する必要のあるゲームオブジェクトです。再生アクションを含むイベントが、このゲームオブジェクトの使用によりトリガーされると、スイッチコンテナで再生するものを選択するために、指定されたスイッチを使用します。 スイッチがゲームオブジェクトに対して設定されていないと、このオブジェクトはスイッチコンテナオプションで指定されたデフォルトのスイッチを使用します。
ゲームオブジェクトの登録を解除すると、このオブジェクトの現在のスイッチも消去されます。このゲームオブジェクトが後ほどまた使用される場合、このスイッチをリセットする必要があります。
更なる詳細は、 統合の詳細 - ゲームオブジェクト をご覧ください。
ID を使用して作業するには、WwiseのGenerate SoundBanks ダイアログボックス内 "Generate header file" オプションでバンクを生成する必要があります。Wwise_IDs.h という名前の定義ファイルには、全ての必要なIDが含まれています。この定義ファイルは、バンクが生成されるたびに更新されます。
ステートグループとスイッチグループの主な違いは、スイッチはゲーム内の各ゲームオブジェクトごとに異なるということです。ステートとスイッチのもう1つの違いは、スイッチの変化は、スイッチコンテナにのみ影響を与えるということです。ステートの変化は、スイッチコンテナに影響を与えますが、さまざまな他のオブジェクト(サウンド、アクターミキサー、バスなど)のパラメータも変更します。
Tip: スイッチがゲーム内においてグローバルで、すべてのゲームオブジェクトに適用される場合、ゲームオブジェクトごとにスイッチを設定する代わりに(すでにグローバルである)ステートを使用してください。これにより、作業の手間が省け、プラットフォームメモリや処理時間を節約できます。 |
スイッチ統合例は、Switch 統合例 をご覧ください。