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を残す

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

ほかの記事

Wwise 、Unreal Engine 4 、Unity 3Dを使用した足音素材管理

サウンドデザイナーはプリプロダクションの早い段階からシステムのプロトタイプを必要としますが、必ずしもオーディオプログラマーに頼れる状況ではありません。 幸い、そのようなときに...

24.3.2020 - 作者 セバスチャン・ガイヤール (SÉBASTIEN GAILLARD)

Aporia: Beyond the Valley - 幽霊のサウンドをつくる

7.7.2020 - 作者 トローオルス・ニガルド(TROELS NYGAARD)

『Tell Me Why』のオーディオ日記パート3 サウンドデザイン

『Tell Me...

29.9.2021 - 作者 マテュー・フィオレンティーニ(MATHIEU FIORENTINI)

カーレースシステムをWwiseで構築

高校生の頃にPS1でnamco『R4: Ridge Racer Type...

25.5.2022 - 作者 ジョンソン・ジャン(江山)

StrataのPhysicsサウンドエフェクトを体験できる無料サンプルのご紹介 | コリジョンサウンドデザインの限界を打ち破る

Strataの最も汎用性の高いマルチトラックサウンドエフェクトコレクション、「Physics」を体験していただける機会をご提供いたします。Strata Sample...

19.9.2024 - 作者 Audiokinetic

Step Sixteen | UnityとWwiseでステップシーケンサーを作成

はじめに Rogue Wavesのサウンドデザイナー、マットです。Rogue...

1.10.2024 - 作者 マット・スウィーニー

ほかの記事

Wwise 、Unreal Engine 4 、Unity 3Dを使用した足音素材管理

サウンドデザイナーはプリプロダクションの早い段階からシステムのプロトタイプを必要としますが、必ずしもオーディオプログラマーに頼れる状況ではありません。 幸い、そのようなときに...

Aporia: Beyond the Valley - 幽霊のサウンドをつくる

『Tell Me Why』のオーディオ日記パート3 サウンドデザイン

『Tell Me...