はじめに
アンリアルエンジン4とサウンドミドルウェア「ADX for UE4」を使いて、ゲーム中などにキャラクターのボイスなどを再生する際、BGMやBGSの音量を下げることでプレイヤーを台詞に集中させることができます。
また、重要な効果音や台詞の発声時にBGMを一時的にミュートすることで、「必殺技時の暗転」や「謎を解いた際のファンファーレ」などが効果的に演出できるようになるでしょう。
このように「あるサウンドを再生すると同時に他のサウンドの音量を下げる」処理はダッキングと呼ばれています。
ボクシングで上半身を低くする回避テクニック「ダッキング」と同じ語源だそうです。
前提
当記事ではUE4.26.1を使用します。基本的にブループリントのみでの実装を想定しています。
ADXはインディー向けの「LE版」であれば、無料で使用できます。
https://game.criware.jp/products/adx-le/
なお、最近ADX2からADXへ名称が変更になりましたが、ツール構成は変更ありません(2がないから古いほう、というわけではありません)。
記事執筆時点のADX for UE4のSDKバージョンはv1_29です。
ADX2 for UE4の導入や基本的な使い方は以下の記事にあります。必要に応じて参照してください。
ADX2 for UE4の導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a
ADX2 for UE4の導入で、一歩上のサウンド表現を(実践編)
https://qiita.com/SigRem/items/c089b71c42e898980a46
実装
AtomCraftでREACTを設定する
AtomCraftでダッキングを設定するための機能がREACTです。
これは音量以外にも、AISACコントロールの値を変化させる用途でも使用できます。
今回はテスト用に3つのマテリアル(音源)を用意しました。
それぞれキャラクターのボイス、BGM、効果音となっています。
カテゴリ、REACTの作成
まずはボイス、BGM、効果音を分類するために「カテゴリ」を作る必要があります。
プロジェクトツリーの「カテゴリ」を右クリックし、「新規オブジェクト」→」「カテゴリグループの作成」を選択します。
ゲームのメイン部分で使用するカテゴリグループを想定して「Main」と名付けました。
さらにカテゴリグループ「Main」を右クリックし、「新規オブジェクト」→「カテゴリの作成」で詳細なカテゴリを作っていきます。
カテゴリグループ「Main」に3つのカテゴリを作り、それぞれ「BGM」「SE」「Voice」と名付けました。
ダッキング処理のためのREACTを作成します。
プロジェクトツリーの「REACT」を右クリックし、「新規オブジェクト」→「REACTの作成」を選択します。
分かりやすい名前をつけ、ダブルクリックするとREACTの設定画面が開きました。
タイムラインの編集に戻りたいときは、画面下の「タイムライン」タブをクリックします。
ダッキングの設定
ダッキングの設定をしていきます。
まずはこのREACTの用途をメモしておきましょう。
ダッキング処理には、実際に変化させるカテゴリを指す「変化カテゴリ」と、そのトリガー(きっかけ)となる「トリガーカテゴリ」が必要です。
今回想定するシチュエーションではボイス再生中にBGMを小さくしたいので、変化カテゴリが「BGM」、トリガーカテゴリが「Voice」と設定します。
REACTタイプは「ダッカー」のままで大丈夫です。
音量の遷移を設定していきます。
まずはボイス再生中のBGM音量を「変化レベル値」として「0.40」に設定します。
グラフが変化するので、視覚的に調整しやすいかと思います。
「変化時間」「戻り時間」はダッキング状態に遷移する際、通常状態に戻る際にかかる時間です。ミリ秒単位で指定します。
「500」では0.5秒で遷移することになります。
「変化カーブタイプ」で遷移する際のカーブを指定できます。
ホールドタイプが「再生中」では、ボイスが再生されている間ダッキングが維持されることになります。
ホールドタイプを「固定時間」にすると、ボイス再生時に指定の時間だけダッキング状態になります。
用途を考えると、今回は「再生中」が適当でしょう。
キューにカテゴリを設定する
キューを作成し、カテゴリを設定することでダッキングが実現します。
マテリアルに合わせて3つのキューを作りました。
キューを選択し、インスペクターの「カテゴリ」をクリックします。
カテゴリの編集ウィンドウが開くので、該当するものにチェックをつけます。
すべてのキューに対して行います。
キューシートのビルド
ここまでできたら、キューシートをビルドしてUEに持っていきます。
UE4でサウンドを再生する
キューシートのインポート
ビルドしたacf、acbファイルをコンテンツブラウザにインポートします。
ツールバーの「Edit」→「Project Settings」でプロジェクト設定を開きます。
「CriWare」タブの「Atom Config」にacfファイルを指定します。
BGM、ボイスを再生する
まずはBGMを直接配置してしまいましょう。
コンテンツブラウザからBGMとなるキューをレベルにドラッグ・アンド・ドロップします。
効果音とボイス再生処理をレベルブループリントに書いてテストします。
レベルブループリントを開きます。
Input KeyとSpawn Sound at Locationを使い、ふたつの再生用イベントを用意します。
Spawn Sound at LocationノードはAtomカテゴリのノードを使用しないと、AtomCraftでビルドしたキューが使えないので注意してください。
実際に実行してみましょう。効果音を再生してもBGMの音量は変わりませんが、ボイスを再生するとBGMの音量が抑えられボイスが聞き取りやすくなるはずです。
もし効果が分かりづらいなと感じたら、AtomCraftでREACTの「変化レベル値」を下げてみてください。