0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ゲーム中の複数キャラボイス管理テクニック(ADX2 for UE4)

Last updated at Posted at 2020-01-28

はじめに

UE4.23+「ADX2 LE v2.10.05」を使用します。
アンリアルエンジン4とサウンドミドルウェア「ADX2 for UE4」を連携させ、
ゲーム内で複数のキャラクターボイスを切り替えて扱う際の再生管理を容易にします。

前提

「ADX2 for UE4 LE」を使用します。導入や簡単な使い方は以下の記事にあります。
ADX2 for UE4の導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a
ADX2 for UE4の導入で、一歩上のサウンド表現を(実践編)
https://qiita.com/SigRem/items/c089b71c42e898980a46

#やること

  • AtomCraftでキャラクターごとにキューシートを作成
  • UE4にインポート
  • ブループリント処理によるボイス再生
  • キューシートを切り替え、複数キャラボイスに対応

実装

##AtomCraft側の作業

複数のキューシートを作成する

今回扱う処理は実にシンプルで、異なるキューシートで同じ名前のキューが共存できることを利用して動的にサウンドを差し替えるものです。
Intro.png
キューシートは「キャラクターボイスリスト」で、キューは「ボイスデータ」そのものとして考えられます。
キャラAとキャラBのボイス再生処理はまったく同じものを使用していながら、それぞれのキャラクターが持つ「ダメージ」時などボイスを再生しています。

サンプルとして、ワークユニットツリーにキャラクター2人のキューシートを作成します。
A01.png
A02.png
各キューシートに同じ名前のキューを作成します。
作成するキューのタイプは特別な処理がなければ「ポリフォニック」です。
A03.png
片方のキューシートに作成したキューをコピペしてしまえば楽かも。
A04.png
A05.png

キューに対して、対応するボイスのサウンドを入れます。
A06.png
再生ボタンを押して、キューとボイスが正しいか確認すると安全です。

キューシートのビルド

AtomCraftでの作業はこれで完了ですので、キューシートをビルドします。
A07.png
すべてのキューシートにチェックがついていることをチェックしてからビルドします。

UE4側の実装

キューシートのインポート

ビルドしたデータをすべてインポートします。キューシートごとに分割されたファイルとして吐き出されているので、インポート漏れがないように注意してください。
B01.png

Atom Configファイルの設定

Project SettingsのCriWareタブで、今回使用するAtom Configファイルを設定します。
B02.png

ブループリントでキャラクターボイスを再生する

導入編の記事ではレベルに直接Atom Cueを置いて再生していましたが、配置していない音声も再生できるよう、その場でボイスデータを取得してロードしてみましょう。
暫定としてレベルブループリントに処理を書きます。
「Load Atom Cue Sheet」でキューシートを呼び出します。「Cue Sheet」は作成したキューシートのうち、どちらか片方のキャラクターのものを指定します。
B03.png
「Get Atom Cue by Name」でAtom Cueにアクセスします。「Load Atom Cue Sheet」のReturn ValueからTargetの青ピンにつなげます。
これはキュー名で取得するノードですので、再生したいキュー名を入力します。
B04.png
「Play Sound at Location」ノードで実際に再生します。再生場所は「Get Player Character」で取得したプレイヤーキャラの座標にしています。
B05.png
もっと厳密に指定するなら、キャラクターメッシュの口部分にソケットを仕込んでおき、その座標を取得するのがいいでしょう。

この時点でゲームを再生してみると、Tキーを押すとキャラクターの声が流れます。

その他のキューシート、キュー取得法

「Load Acb」ノードを使えば、Acbファイル名を指定して直接キューシートを読むことができます。
B08.png

「Get Atom Cue by Name」以外にも、「Get Atom Cue by ID」や「Get Atom Cue by Index」を使うことでキューのIDやインデックスを指定してアクセスすることもできます。
B06.png
B07.png

キューを差し替えてキャラクターボイスを変更する

ゲーム中にリアルタイムで参照するボイスを切り替えてみます。
以下はなんの変哲もない、「1」キーを押したらキューシートをロードする処理です。
B09.png
「Return Value」のピンを右クリックして「Promote to Variable」をクリックし、ロードしたキューシートを変数化します。
B10.png
Sound Atom CueSheetタイプの変数が出来上がるので、名前を適当につけます。
B11.png
同じように処理を作り、1キーを押したらキャラクターAのボイスが載ったキューシートが、2キーを押せばキャラクターBのボイスが載っているキューシートが読まれるようにします。どちらも変数「Current Cue Sheet」を上書きされるので、最後に読んだキューシートが参照されます。
B12.png

あとは先ほどと同じようにボイスを再生します。
B13.png

この状態でゲームを再生すると、1キーを押した状態だとキャラクターAの、2キーを押した状態だとキャラクターBのボイスが流れます。
ゲームは同じ「ダメージ」を受けた状態でも、読んでいるキューシートによって違うキャラクターの声が再生されるわけです。
上記の「Load Acb」ノードを使えば文字列でキューシートを指定できるので、より多くのキャラクターが登場する場合に便利です。

補足

キューシートさえ読んでしまえば、ブループリントノードからAtom Cueを読み出すことが可能です。
アセットにキュー自体が含まれていなくても、ゲーム中にその場でキューを再生できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?