多くのコンソールでは、ゲームの音楽をユーザー個人のライブラリに所有する音楽に入れ替えることが可能です。この機能は、Wwiseではほぼ自動的に行われます。しかし、いくつかのプラットフォームでは、その実装と動作が異なります。
すべてのプラットフォームで初期設定は同じです: サウンドデザイナーは、ユーザーが所有の音楽を再生し始めた場合にミュートされるバスをタグする必要があります。これは "Mute for Background Music" チェックボックスで指定できます。コード側では、プラットフォームによって追加の詳細が必要になります。
AkPlatformInitSettings の jNativeActivity メンバーを必ず入力してください。Mute/Unmuteアクションは、ユーザがミュージックプレイヤのアプリケーションからゲームに切り替えた時のみに実行されます。つまり、ユーザのミュージックが独自に終了した場合はUnmuteアクションがありません。
サウンドエンジンの初期化設定でAudioSessionのMixOtherフラグが設定されている場合は、Mute/Unmuteアクションはユーザがミュージックプレイヤのアプリケーションからゲームに切り替えた時に限り実行されます。つまり、ユーザのミュージックが独自に終了した場合はUnmuteアクションがありません。iOS 8以降でAVAudioSessionCategoryAmbientカテゴリを使用している場合、全てのアプリケーションによるオーディオ中断でゲームミュージックのミュートやアンミュートが実行されます。
プラットフォームの中にはDVR機能があり、ゲーマーがそのゲームプレイを録画して、公開できるものがあります。そこで、ゲームオーディオの一部でありユーザーが置き換えることのできるゲーム音楽の著作権について、法的な問題が発生します。ゲームスタジオ側は音楽をゲームに使う権利を有しているものの、いかなる形式であれエンドユーザーが配信する権利はありません。このため、このプラットフォームでは通常ユーザーのBGMの録音を禁止しています。
対策としてCPU負荷が最も低いのは、ゲームの音楽を他と分けてミックスすることです。これは、セカンダリアウトプット機能で行います。
オーサリングツール内で、ミュージックオブジェクトをデフォルトのマスター Audio Bus以外のマスターバスにルーティングする必要があります。多くのプロジェクトでは、新しいマスターバスを作成することから始めます(Master Mixer HierarchyのWork Unitを右クリックして、Add > Child)。デフォルトで、全てのバスがシステム出力にルーティングされます。Audio DeviceのShareSetを変更して、DVR出力にポイントさせます。
全てのプラットフォームがDVRに対応しているわけではないので、注意してください。Register the main listener. それらのプラットフォームでは、オーディオデバイスプロパティをアンリンクさせて、システム出力にポイントさせる必要があります。または、ミュージックオブジェクトの Output Bus プロパティをアンリンクします。
ゲームで使用する場合には、DVR出力は手作業で追加する必要があります。 これを行うにはAK::SoundEngine::AddOutput()
を使って、オーディオデバイスシェアセットの名前(またはID)と AkOutputSettings
のほかのパラメータを送ります。
![]() |
Note: PS4に関する重要事項 Mute for Background Music機能を使うには、セカンダリアウトプットを AK::SoundEngine::AddOutput() を使って追加します。この出力が使われていない場合は、ユーザー音楽がスタートしたことをPS4システムは通知しません。 |
例は、 <Wwise installation path>/SDK/samples/IntegrationDemo/DemoPages/DemoBGM.cpp を参照してください。