Murderous Pursuitsのダイアログや会話のデザイン - パート2

ゲームオーディオ / サウンドデザイン

再びジェイミーです。Murderous Pursuitsの会話とダイアログシステムについてのブログの後半です。

もしパート1を読んでいなければ、ここをクリックして読んでみて! 

前回は、このゲームでSimlishを使うことになったいきさつと、どのような編集作業や処理が発生したかを説明しました。それでは、私たちが使ったオーディオミドルウェアソリューションWwiseの内部で、何が起きているのかを、みていきます。まず、こちらが会話用コンテナの階層構造ですが、大まかな内容が分かると思います。

05_Convo_Container

一番上にあるのがVOX_CharConvo(ボイス、キャラクターのカンバセーション)という名前のSwitch Containerで、どのキャラクターが話すのかを決めるためにあり、そこで指名されたSwitch Containerは、再生されるSimlishオーディオ、またはカンバセーション(会話)オーディオの種類を選択します。Brute(粗野な男)用のコンテナであるVOX_BruteConvoを展開表示しています。会話の種類ごとにRandom Containerが設定され、オーディオイベントがトリガーされると、複数のサウンドが入ったグループから、ランダムに、1つのオーディオファイルが選択されます。

ただ、上図からも分かるように、Neutral、Positive、Negativeの3つのコンテナは、少し違います。これらのコンテナの場合は、中のファイルをランダムに選択して再生するだけでなく、会話の流れを維持しながらも、長さや言葉が異なるSimlishフレーズから選ぶのです。フレーズの種類や言葉をランダムに選択させる設定はとても簡単で、単純にRandom Containerを増やせばいいだけです。一方、実際のフローにおいては、もう少し細かい作業が必要でした。BruteのConvoコンテナの中にあるNeutralコンテナのProperty Editorの設定が、こちらです:

 06_Neutral_Container

ここで、いくつかのことが起きています。まず、Initial Delayの設定を見てください。

 07_Init_Delay

これがループするアニメーション開始のベーシックなオフセット値として機能し、その値を選択するのにランダマイザーを使っています。何も特別なことはありません。

次に、Play Type

 08_Play_Type

Neutralコンテナの中の6つの選択肢の中から、ランダムに1つ選択するように設定されています。普通の使い方では、マシンガンのような繰り返しを避けるために、すでに再生したオーディオクリップは繰り返さないようにします。ところが、ここではすでに使われたサブコンテナも含め、どのサブコンテナが選ばれてもいいのです。なぜなら、異なるタイプ間のトランジションをカバーするのに役立ち、もっとダイナミックで変化に富んだ会話が可能になるからです。

Play Modeは、ContinuouslyのLoopに設定してあるので、継続的にループします。

 09_Play_mode

キャラクターは、おしゃべりを停めるイベント、例えば、ほかの人が話し始めたり、近くで誰かが殺されてそれに反応したりするときまで、ずっと話し続けます。Admiral(司令官)などはいつまでもしゃべり続けることができるキャラクターですが、モノローグは避けたいところです。TransitionのDelayは、ランダムオフセットを考慮すると0から0.4秒になるように設定されているので、キャラクターのフレーズに入っている自然なギャップや沈黙とは別に、キャラクターが息をつける間をつくり出せます。

クリップとクリップの間をクロスフェードさせることを、最初は試みましたが、オーディオストリーミングのように聞こえてしまい、実際にはどうしても不自然でした。また、Simlishで聞くQuestionの断片     は、最後に必ず少しだけ、沈黙が入っていて、声優のしゃべりの抑揚と組み合わせると、会話が少しだけ宙に浮かび、より自然な流れになりました。

最後に、ウェイト付けについて。

10_Weightings

キャラクターのセリフはどちらかというとSimlishになる傾向が強く、Simlishでない1つ1つの単語が目立つようにしてあり、単語が連続して流れる可能性を最小限にしながらも、可能性は残してあります。

Playback設定とは別に、WwiseのWwise Silenceを使い、Randomコンテナに必ずサイレンスのオーディオクリップを2つずつ入れました。これらのクリップは、入っているコンテナによって長さも違い、聞き疲れを軽減し、会話がもっと自然に流れるように「一時停止」の時間を投入してくれます。サイレンスのクリップが複数、連続してトリガーされる可能性もありますが、それは問題ありません。誰もがずっとしゃべり続けるわけでは、ありませんから。

Wwiseで1人のキャラクターだけを聞いてみると、こうなります。

 
 

これだけでも、悪くないです。では、インゲームだと?

 
 

結構良くなりました。人が集まっている横を通り過ぎるときに、その会話がとぎれとぎれ耳に入ってくると、ワールドに人が多いように感じられ、生き生きとしてきます。WwiseのShareset機能も活用し、音と距離の関係をコントロールしました。Sharesetsはロールオフ、つまり距離に応じた減衰の設定のことで、個別にサウンドの設定をする代わりに、複数のサウンドをグループにまとめて設定できます。Convoコンテナは、次のような設定にしました:

Shareset

 

カーブでボリューム低減をコントロールし、遠いところでは、ハイパスやローパスのフィルターを入れます。緑のカーブは、音がサウンドフィールドのどれだけを占めるのかを決めるSpreadです。Spreadが最小のときは点音源となり、音の発生している方向が簡単に判別できます。最大のときは、プレイヤーの周りのどこにいるかに関係なく、音がサウンドフィールド全体に広がります。誰かの隣にいるときは75%に設定し、話す人の方向がまだ分かるようにして、近くにいることを強調し、音がサウンドフィールド全体に広がることで、プレイヤーも会話に参加しているかのような印象を与えます。

また、私はCone Attenuation(減衰の円錐)の機能も使い、音源の向いている方向によってボリュームを減衰させたり、フィルターを投入したりしました。音は人間の口、つまり体の前側から出るので、話者の後ろにいるときは、少し音が小さく聞こえた方が分かりやすくなります。ここで短い動画を見てください(右下に注目すると、何を変えているのかが分かります):

 

 

 

ゲーム中の再生は、少なくとも私にとって、比較的シンプルです。プログラマーが、UnityでAnimというカスタム設定のEventをつくってくれ、私がアニメーションにWwiseイベントを添付できるようになり、アニメーションがループしている場合は、スタート用のアニメーションを別に設け、常にオーディオを再トリガーしてしまうのを防ぎました。Wwiseイベントの中に、会話の種類を選択するSwitchアクションと、VOX_CharConvoコンテナのPlayアクションを入れています。キャラクターの選定はプログラムコードで処理します。また、すべてのダイアログタイプに使える、わずかなフェードアウト付きの汎用Stopイベントもあり、キャラクターが動き出したときや、ほかのアニメーション(攻撃など)などで、トリガーされます。美しくはありませんが、ちゃんと動きます。

AnimというEventは文字列の引数を受け取り、この場合はWwiseのイベント名ですが、それをAKSoundEngine.PostEvent コールの中で使用します。オーディオを必要とする、移動以外のすべてのアニメーションにこれを利用していて、複数のAnimイベントをアニメーションのタイムライン上にバラバラに設定するのではなく、必要な全アクションを1つのWwiseイベントにベイク(bake)しました。バラバラに設定すると、遅くなったり誤動作したり、全般的に信頼できないことに気付いたので、Audiokineticの人たちが単一イベントの方法を提案してくれ、すんなりうまくいきました(マックス、ありがとう!)。簡単な例として、Bludgeon Attackというイベントがありますが、14種類のActionsが入っています:

13_Attack_event

それでは、ここまで。ゲームオーディオは、まるでブラックボックスのように見えるかもしれないので、舞台の裏方を覗いて、プロセス全体の一部で、どのようなことが起きているのかが少し分かったと思いますし、プレイヤーの耳に届くまで、どれだけの作業が必要なのかも見えてきたと思います!Wwiseに興味があれば、無料でダウンロードできるし、たくさんのチュートリアルやリソースもそろっているので、試してみてください。 ここで 入手できます。

Unityと一緒に使ってみたければ、Berrak Nil Boyaの動画がお勧めで、Unityから出ているチュートリアルから始まり、そのあとに、もっと面白いテーマにつながっています。Unityの一部レイアウトが、あとから変更された可能性もありますが、使い方は全部一緒です!

ここで、声優さん達に大きな拍手を送りたいと思います。彼らのサイトも見てみてね:

アリー・マーフィー(Ally Murphy)
アメリア・タイラー(Amelia Tyler)
デービッド・マッカリオン(David McCallion)
ジェイ・ブリトン(Jay Britton)
ケニー・ブライス(Kenny Blyth)
キム・アラン(Kim Allan)
トニー・フルーティン(Toni Frutin)

そして、Murderous PursuitsをSteamでチェックするのも忘れずに!

読んでくれて、ありがとう。
ジェイミー

この記事は、最初にBlazing Griffinのウェブサイトに2回に分けて掲載されました。

ジェイミー・クロス(Jaime Cross)

ジェイミー・クロス(Jaime Cross)

ジェイミー・クロスは、英国スコットランドのBlazing Griffin Gamesのサウンドデザイナー。北部ダンディーのアバティー大学を卒業後、2011年よりゲームオーディオ業界で経験を積み、2013年にダンディー拠点のゲームカンパニーTeam Junkfishを共同設立した後、2017年に現職に。IGDA Scotlandの役員を務め、ゲーム用オーディオの地位改善と開発を推進する。

www.speedyjx.com

www.blazinggriffin.com

 @speedyjx

コメント

Replyを残す

メールアドレスが公開されることはありません。

ほかの記事

Hitman 2 - 最新のCPU向けに、リバーブを強化

6コアや8コアのCPUが広く使われるようになり、余裕のある処理能力がゲームに提供されるようにました。 そのパワーの一部を、プレイヤーのオーディオ体験 ...

22.10.2019 - 作者 ステパン・ボエフ(Stepan Boev)

『 It Takes Two 』のサウンドの裏側 ― Hazelightオーディオチームに聞く ―

Hazelight Studiosの『It Takes...

26.1.2022 - 作者 Hazelight

Wwiseで作成するドップラー効果

2.2.2022 - 作者 徐巍

『Suspects: Mystery Mansion』のGMEボイスチャットシステム

はじめに これはWildlife Studiosが作成したゲーム、『Suspects: Mystery...

24.8.2022 - 作者 フェリペ・ロペス(Felippe Lopes)

Strataワークフローを加速化する方法 パート2: Open Associated REAPER Project(関係するREAPERプロジェクトを開く)

はじめに ...

25.7.2023 - 作者 Audiokinetic

1人称視点のホラーゲームを単独で開発する

経歴 アレッサンドロ・グッツォと申します。私は1人称視点のホラーゲーム『The Land of Pain』と『The Alien...

14.11.2023 - 作者 アレッサンドロ・グッツォ

ほかの記事

Hitman 2 - 最新のCPU向けに、リバーブを強化

6コアや8コアのCPUが広く使われるようになり、余裕のある処理能力がゲームに提供されるようにました。 そのパワーの一部を、プレイヤーのオーディオ体験 ...

『 It Takes Two 』のサウンドの裏側 ― Hazelightオーディオチームに聞く ―

Hazelight Studiosの『It Takes...

Wwiseで作成するドップラー効果