著作権のある音楽は、一般的にPS4やXbox OneのDVRでの録音は禁止されています。どちらのコンソールでも、音楽だけを別に管理して録音するのを防止する、専用のバーチャルデバイスがあります。Wwiseでも、音楽だけを違う階層で別にミキシングすることになります。インテグレーションのデモプロジェクトで、これを実装してみました。NonRecordable_Bus、RecordableMusic、NonRecordableMusicの設定を確認できます。コードの観点からは、DemoBGM.cppを見てください。
以下の通り、NonRecordableMusicは、Non Recordable Busへとルーティングされ、ここから信号がDVR_Bypassアウトプットにアウトプットされます。
コード的には、これを実装するための作業はそれほどありません。アウトプットを初期化するために、ゲームがAudio Deviceシェアセットの名前を使い、 AK::SoundEngine::AddOutput()
をコールする必要があります。
Wwise Advanced Profilerを使うと、各サウンドが別々のバスや別々のアウトプットに行くのが分かります。これが、Xbox OneやPS4の通常の流れです。(中間のバスミュージックは、省略しています。)
DVR機能は、ほかの対応プラットフォームには存在しないので、何か違う処理が必要です。その場合、当然ゲーム中に音楽を失いたくないので、正しくルーティングするようにします。対処するには、Audio Deviceプロパティをアンリンクするだけです。マスターバスのプロパティエディタで、Audio Deviceプロパティをアンリンクすることもできます。以下の例では、Non Recordable Busのアウトプットを通常のシステムアウトプットにしました。ただしXbox OneやPS4ではDVR_Bypassにアウトプットされるので、リンクアイコンは半分オレンジ色です。以上を、インテグレーションデモプロジェクトで設定しました。この場合、コードでアウトプットを初期化するためのAK::SoundEngine::AddOutput
をコールする必要はなく、それはシステムのアウトプットが起動時に必ず初期化されるからです。
両方のサウンドを再生すると、2つのソースのシグナルが別々のバスを通り、最終的に同じシステムアウトプットでミキシングされるのが分かります。