Wwise SDK 2022.1.17
|
Wwiseでは、セカンダリ出力には、通常のTVオーディオ出力ではないいずれの物理的オーディオエンドポイントを指定します。The most common secondary outputs are headsets, game controller speakers, and haptic feedback for game controllers. Haptic feedback integration is described in detail in Wwiseモーションの統合. This topic focuses on audio outputs (headsets and controller speakers).
You can use secondary outputs to define separate mixes for each of these outputs without affecting the main speaker/TV mix. The same Wwise feature set applies to the secondary outputs as for the regular mix. The only difference is that the output targets controllers instead of the speaker/TV.
オーサリング側では、オーディオデバイスの別のミックスを設定できるように新しいマスターバスを作成します。次にその新しいバスの Audio Device ShareSet プロパティを変更して、別のデバイスにポイントさせます。なお、サードパーティが作成したオーディオデバイスプラグインを使用する場合は、まずプラグインタイプに合ったオーディオデバイスシェアセットを作成する必要があるかもしれません。これで、音を通常通り新しいバスや子バスにルーティングできます。Wwiseで使えるオーディオデバイスに関する情報は、Audio Devicesを参照してください。
1つのセカンダリアウトプットインスタンスだけに通常は紐づけられるようなサウンドの、望ましいメソッドは、アウトプットバスを直接設定することです。例えば、プレイヤーが発射するガンショット、テニスラケットの打音、PDAの音、ゲームプレイのフィードバックなど。ただし、User SendやGame Sendを使って、ほかのバス階層の中のAuxバスにセンドすることができます。これは同じサウンドが複数のアウトプットとテレビから同時に聞こえてくる場合に向き、例えばスパイカメラやアナウンスなどが考えられます。
複数のコントローラとTVで同時に、同じソースを使用して、同じサウンドを再生することは可能です。デザイン側では、ゲームを何人のプレイヤーがプレイしているかの知識はありません。バス階層は、ゲーム側から登録されている各出力へのルーティングのテンプレートとして使用されます。よって各出力は、再生されるサウンド、ゲームオブジェクトでアクティブなRTPC ならびにSwitch値によって、異なるミックスやエフェクトが適用されている可能性があります。以下のセクションの 例 で、このような場合を見てみます。
TVやゲームコントローラなど、多くのデバイスで同じオーディオを出力する場合、デバイスの間でのレイテンシに気づくことがあるでしょう。これは、オーディオ信号パスにおける、ハードウェアの違いのため、避けることはできません。コントローラ側では、この信号は無線のチャンネルを通過しなければならず、これが有線のコントローラと異なるディレイを与える可能性があります。TVでは、一度信号がコンソールを出ると、受信機および/またはTVを通過し、これのプロセッサーがある程度のディレイを追加します。AVの設定によって発生するディレイが各システムで異なるため、スピーカー/TVならびにゲームコントローラへ同時にルートされるサウンドを同期させるのは不可能です。サウンドをデザインする場合、この制限を考慮する必要があります。
同じタイプの複数の出力の場合(例えばゲームコントローラのスピーカーなど)、デバイスの各インスタンスを差別化する必要があります。通常のリスナー・ゲームオブジェクトの概念が、特定リスナー・エミッタのルーティングを許容するので、これを利用します。詳細については 概念:リスナー を参照して下さい。AK::SoundEngine::AddOutput
を利用して出力デバイスとリスナーを関連付けることは、プログラマーの責任になります。プログラマーは、リスナーとゲームオブジェクトの関連付けを、AK::SoundEngine::SetActiveListeners
を使って設定します。1つの音を同時に複数のデバイスで再生する場合は、複数のリスナーを指定できることを、覚えておいてください(以下の例を参照)。
注釈: 特定のタイプ(例: システム、DVR)で1つの出力しかない場合は、複数のリスナーを設定する必要はありません。この場合Wwiseは、Wwiseプロジェクトで指定したルーティングに依存できます。プレイヤーを特定した出力(例: ゲームコントローラスピーカー、コミュニケーションなど)の場合も、シングルプレイヤーのゲームであれば、同じことが言えます。つまり、ゲームでアクティブなコントローラが1つだけの場合です。リスナーに関する詳細は、 リスナーの統合 をご覧ください。 |
注釈: プレイヤーデバイスの場合、ゲームコントローラがシステムに接続したり、接続が切れたりする度に、ゲームコードがAK::SoundEngine::AddOutput とAK::SoundEngine::RemoveOutput をコールする必要があります。Wwiseは、どのデバイスがどのリスナーに、そして概念としてどのプレイヤーに関連付けるられているのかを、自動的に検知することができません。システムデバイス(メイン出力、DVRなど)は、Wwiseが自動的に対応します。 |
これらの例はPS4向けに書かれましたが、他の全てのプラットフォームにも適用できます。関数AK::SoundEngine::AddOutput
のドキュメンテーションを確認してください。複数の出力を管理する実際の事例を見るには、 Integration Demoサンプル や、DemoMotionページ(マルチプレイヤ)や、BGMDemoページ(DVR/BGM管理)を参照してください。
注釈: これらの例は読みやすくするために、ファンクションコールの前に必要なAK::SoundEngine を省略してあります。 |
UserIDsを得るためのコード (PS4 のみ):
1つのゲームコントローラ出力でのサウンド:
2つの異なるコントローラでの同じサウンド:
2つの異なるコントローラでの、異なるサウンド:
1つのゲームコントローラとTVでの同じサウンド:
これは、Windowsでセカンダリアウトプット、つまり主にヘッドフォンを追加する例です。
注釈: Windowsでは、全てのデバイスが"System"デバイスと呼ばれます。そこで、デバイスを追加するときに、デバイス同士を区別できなければなりません(詳しくは 複数出力のための、デバイス、リスナー、およびゲームオブジェクトの設定 for information 参照)。このため、別のリスナーが必要となります。 |