バージョン

menu_open

ユーザーミュージック (BGM) の扱い

多くのコンソールでは、ゲームの音楽をユーザー個人のライブラリに所有する音楽に入れ替えることが可能です。この機能は、Wwiseではほぼ自動的に行われます。しかし、いくつかのプラットフォームでは、その実装と動作が異なります。

すべてのプラットフォームで初期設定は同じです: サウンドデザイナーは、ユーザーが所有の音楽を再生し始めた場合にミュートされるバスをタグする必要があります。これは "Mute for Background Music" チェックボックスで指定できます。コード側では、プラットフォームによって追加の詳細が必要になります。D

PS3でのBGM設定詳細

なお、PlayStation 3でバックグラウンドミュージックのオプションを有効にするには、サウンドエンジンの初期化設定(Initialization settings)の中にあるスイッチ (AkPlatformInitSettings::bBGMEnable)も、有効にする必要があります。

Xbox 360でのBGM設定詳細

このプラットフォームでは、特別なコーディングの必要はありません。

AndroidでのBGM設定詳細

AkPlatformInitSettings の jNativeActivity メンバーを必ず入力してください。Mute/Unmuteアクションは、ユーザがミュージックプレイヤのアプリケーションからゲームに切り替えた時のみに実行されます。つまり、ユーザのミュージックが独自に終了した場合はUnmuteアクションがありません。

iOSでのBGM設定詳細

サウンドエンジンの初期化設定でAudioSessionのMixOtherフラグが設定されている場合は、Mute/Unmuteアクションはユーザがミュージックプレイヤのアプリケーションからゲームに切り替えた時に限り実行されます。つまり、ユーザのミュージックが独自に終了した場合はUnmuteアクションがありません。iOS 8以降でAVAudioSessionCategoryAmbientカテゴリを使用している場合、全てのアプリケーションによるオーディオ中断でゲームミュージックのミュートやアンミュートが実行されます。

DVRが利用できるプラットフォーム(XBox One ならびに PS4) でのBGM。

プラットフォームの中にはDVR機能があり、ゲーマーがそのゲームプレイを録画して、公開できるものがあります。そこで、ゲームオーディオの一部でありユーザーが置き換えることのできるゲーム音楽の著作権について、法的な問題が発生します。ゲームスタジオ側は音楽をゲームに使う権利を有しているものの、いかなる形式であれエンドユーザーが配信する権利はありません。このため、このプラットフォームでは通常ユーザーのBGMの録音を禁止しています。

対策としてCPU負荷が最も低いのは、ゲームの音楽を他と分けてミックスすることです。これは、セカンダリアウトプット機能で行います。

オーサリングツールでのBGM設定詳細

オーサリングツール上の操作としては、ミュージックオブジェクトをマスターセカンダリバス、またはその下のバスにルーティングするだけです。プロジェクトを別のBGM出力をしない、古いタイプのプラットフォームでも実行する場合には、そのプラットフォームのために Output Bus プロパティを Unlink して、音楽をメイン階層の異なるバスにルートする必要があります。

サウンドをゲームコントローラでも再生するゲームの場合は、コントローラ用のサウンドもこのバス階層を利用します。音楽がコントローラサウンドに混じったり、その逆が生じたりする心配はありません。リスナーとゲームオブジェクトのペアリングを行い、最終的なルーティングを決めるという追加のステップがあります(下記参照)。これはゲームプログラマーの担当です。プレイヤー同士のコントローラでサウンドの混乱が起きないのと同様に、音楽は内部的に別のミキシング階層に送られるのです。

ゲームコードでBGM出力を設定する

ゲームで使用する場合には、BGM出力は手作業で追加する必要があります。 これは、AKSoundEngine::AddSecondaryOutput を利用してい行います。通常のリスナー/ゲームオブジェクトの概念を利用して、このデバイスに排他的にサウンドをルートします。このゲームでは、TV出力に使用するものとは別のリスナーを使用する必要があります (通常 0)。詳細については 概念:リスナー を参照して下さい。プログラマーは、AKSoundEngine::SetActiveListeners または Ak::SoundEngine::RegisterGameObj を使用してこのリスナーに聞こえる必要のあるゲームオブジェクトのリスナーマスクを設定しなければなりません。

//Add a BGM output, associated with listener #8 (Why 8?Because it is not 0 which is usually associated to the player).
AddSecondaryOutput(0 /*Unused for BGM*/, AkSink_BGM,  0x80 /*Listener 8 (8th bit)*/);

//Setup a game object to emit sound to the listener 8
RegisterGameObj(MY_MUSIC_OBJECT, 0x80);

//Play the music. This sound must be routed to the Master Secondary Bus (or any sub bus)
PostEvent("Play_Cool_Music", MY_MUSIC_OBJECT);

このページはお役に立ちましたか?

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう