『Tell me Why』はXboxとPCでリリースされ、5.1サラウンドに完全対応しています。ストーリー性のあるゲームには、 ファイナルミックスの段階で特別な配慮が必要です。シネマティックな瞬間や、ストーリーのひとコマが、それぞれユニークなので、プレイヤーに特定の気持ちを伝えるには、体系的なアプローチだけを頼りにするわけにはいきません。プレイヤーが安心して、余計なことを気にしなくてもいいように、常にオーディオを調整する必要がありました。
ミキシングのワークフロー
ミキシングのアプローチは、映画のリニアなミキシングに似ているところがあります。できるだけ細かいところも表現できるように、掘り下げてミキシングしていきました。
先に進む前に、これから説明する点をすべて包括しているゲームシーケンスを、1つ紹介します。
シネマティックワークフローの流れ
ミキシングに関する決断は、できるだけ自由に行いたいと私たちは考えました。そこで「ステム」を単位とした、以下のようなワークフローで進めました。
ステム名 | チャンネル | ポジショニングタイプ | リバーブタイプ | Center % |
ダイアログ | 3.0 | Listener Relative | ランタイム | 75 |
フォーリー | 3.0 | Listener Relative | ランタイム | 75 |
SFX | 5.1 | Balanced Fade | ベイク + ランタイム | 0 |
フットステップ | 3.0 | Listener Relative | ランタイム | 75 |
アンビエンスベッド | 4.0 | Balanced Fade | ベイク | 0 |
このワークフローのおかげで非常に柔軟に対応でき、ボリュームレベルやEQやリバーブをステムごとにエンジンで調整したので、ReaperとUnrealを行ったり来たりする手間を減らせました。
フットステップのシネマティックの管理
シネマティックのフットステップは、Unrealのアニメーションシーケンスから直接、管理しました。カスタムツールを活用し、足骨が地面に着くときにUE Notifiesを生成させました。
このノティフィケーションが地形のマテリアルを追い、適切なフットステップ用のスイッチマテリアルをトリガーします。おかげでReaperでフットステップを手作業でシンクさせる必要はありませんでした。正しいジェスチャースイッチを設定すれば、あとは検知したコリジョン数が多くなりすぎないように、不要なノティフィケーションを落とせばいいのです。
UEシーケンサーのRTPCトラック
先ほどの動画の例では、アリソンの緊張感が高まるにつれ、時計の音が大きくなるのが分かります。このような状況では、どのバスのレベルであれ、シーケンサーに直接送ることができる機能を使いました。
Unrealのカーブを使い、シネマティック内で、正確な自動化を設定できます。WwiseのRTPCはdBの絶対値で設定されるので、妙なdB変換の心配はありません。この機能をアンビエンスとミュージックのバスで多用し、会話の存在感を強めたり、前述のテンションをつくり出したりしました。
ダイアログの一貫性を維持。
何種類ものダイアログに、どう対応?
ダイアログは『Tell Me Why』の中核をなし、その中でプレイヤーは貴重かつ必須の情報を数多く入手します。
ゲームに組み込まれたダイアログは、4種類あります:
Cinematics: カットシーン中に再生されるダイアログ。プレイヤーは自分の動きやカメラを制御できません。
Inspector: プレイヤーは自由に動けません。カメラを制御し、内部のオブジェクトとやり取りできますが、ゲームワールドの中を再び自由に動き回るには、Inspectorを出る必要があります。
Exploration: プレイヤーが自分の動きやカメラの動きを、完全に制御できます。
Bond: タイラーやアリソンの記憶に関連するダイアログです。
この4種類のダイアログのために、エンジン内でいくつかのインテグレーションシステムが必要でした。そして、すべてのダイアログサウンドがゲーム中に等しく聞こえるように、Wwiseの設定を検討しました。
ダイアログタイプ | チャンネル | リスナーポジション | Center % | 距離に伴うランタイムフィルタ |
Cinematics | 3.0 | Balanced - Fade | 75 | High Shelve EQ |
Inspectors | 3.0 | Balanced - Fade | 75 | 該当なし |
Exploration | 5.0 | Listener Relative | 75 | High Shelve EQ |
Bond | 4.0 | Listener Relative | 0 | LPF |
CinematicsとInspector
『Tell Me Why』には、ゲームプレイとシネマティックの間のシームレスな遷移が多数あります。2つのタイプのゲームモード間であまり差が出ないように、2Dと3Dの妥協点を見出す必要がありました。
そこで、対象となるオーディオのフロントパンニングを修正するために、組み込みのAzimuth(方位)パラメータに基づいて変化するような、Balanced-Fadeの空間配置を使いました。これで、ゲーム内の大部分のケースを網羅できました。
なお、特定のカメラショットではフレームサイズによく合うように、パンニングの最小値・最大値の微調整が必要となることもありました。
微調整したパンニング値の例が、動画の1分12秒あたりで聞けます。警官のセリフがどんどん加工されるにつれ、そのボイスに、ランタイムにハードパンのエフェクトを適用しました。
Exploration
Explorationダイアログはすべて、IAもPlayerも3Dに設定しました。プレイヤーは、IAやNPCを、周辺の場所から正確かつリアルに感じ取ることができます。また、これを達成するためのチャンネルコンフィギュレーションは、5.1に設定しました。
距離に基づいたフィルターに関して、距離に応じた高周波の減衰には、パラメトリックEQをHigh Shelfの形で使いました。オクルージョンは、WwiseのLPFフィルタの傾斜がそのようなフィードバックにとても適しているので、ローパスフィルタだけを使いました。
一部の状況では、リスナーの後ろのNPCダイアログも処理することにしました。NPCがリスナーの後ろにいても、まだ近ければ、彼が画面に出ていなくても聞こえてきます。私たちの観点からは、ちょっと微妙で、しっくりきません。そこで、NPCのダイアログは、Azimuth RTPCで制御されるボリュームとリバーブ、センドレベルで処理することにしました。
Bond
BondのダイアログをWwiseでリアルタイムに処理することで、5か国語対応ゆえのセリフの多さに対応しました。これだけ多くのファイルの、幅広いオーディオスペクトラムに問題なく対応できる処理が必要でした。
リアルタイム処理とした2つ目の理由は、Bondのダイアログが、ゲームで行動している最中に発生する可能性が高かったからです。Bondゲームプレイの仕組みが成立するためにセリフが聞き取れることが必要だったので、コードで指定された範囲の外にプレイヤー出たときに、リアルタイムでダイアログを変更する必要がありました。
最終的に、軽いリバーブやディレイとなりました。ここでも、美しいLFOをドライレベルやウェットレベルに適用し、エフェクトのバリエーションを広げました。
親密な場面で、プレイヤーを邪魔しないには?
シネマティックス内で再生されるアンビエンスはゲームプレイ中のものと同じなので、シネマティックス中に、望まれないランダムなFXの再生が発生してしまうことがよくありました。誰もアリソンとタイラーの親密な時間に、カラスやチェーンソーの音を聞きたいとは思いません。このような動作を回避するために、コードでWwiseに、プレイヤーがシネマティックステートであるかどうかを定義するステートを送ります。そして、このステートをボリュームに対して使い、シネマティックス中の不要な音を除外します。
もう1つ、シネマティックス中のやっかいな問題は、ショット・リバースショット中の3Dサウンドやアンビエンスベッドのボリュームに一貫性がないことです。
この対処には、素晴らしいツールをいくつか使いました。
まず、シネマティックス中のリスナーポジションをフリーズできる、専用のシーケンサートラックがありました。これで、カメラが離れてもリスナーの位置と角度を維持できます。
ただし、シネマティックスによっては、リスナーがいつも通りにカメラを追うことが求められることもあります。そのようなときは、前述のシネマティックステートを利用して、WwiseのSpeaker のパンニングレシオを変えるRTPCを駆動させます。この技で、シネマティックス内の、スペーシャリゼーションを適用するサウンドを選べます。
ロックダウンと、在宅状態でのミックスチェック
コロナ禍は、もちろん『Tell Me Why』の開発に大きな影響を与え、3か月間、ミキシングルームではなく自宅環境で仕事をしました。最終的なミキシングセッションに備えるために、代替案を考えなければいけませんでした。
いつもならファイナルミックスは補正したスピーカーを75 dB SPLで使います。この値はプロスタジオには向いていますが、近所の人や同じマンションの住人にとって、75 dbSPLは大きすぎます。ヘッドフォンを使うのは、皆さんがご存知の通り、選択肢にはなりません。そこで、主にWwise Loudness Meterに頼るというリスクを取りました。
できるだけ頻繁に、4つのメインバスのラウンドネスを同時にモニタリングすることにしました。WwiseのLoudnessメーターで分析したいバスを選べるので、シーンが変わってもアンビエンスやダイアログの一貫性が保たれているかを確認するには、ぴったりの方法です。この迂回策は、フルタイムのレビューとミキシングの代わりになりませんが、ファイナルミックスに落ち着いて臨むための効率的な手段です。ロックダウンが終わる頃にファイナルミックスを仕上げるための役に立ちました。
マスタリング
ダイナミックレンジ
『Tell me Why』は、オーディオのダイナミック性を管理するのに苦労したゲームでした。静かな環境が多く、声優の演技による微妙なバリエーションを保つために、ダイアログをあまり圧縮したくありませんでした。静かな環境、例えばルームトーンやエアーベッドは、大型のスタジオモニターで聞けば管理するのは難しくありません。ところが、スタジオで設定したモニター設定が、小さなテレビ画面にそぐわないことに、私たちは気付きました。
私たちは制作の初期段階に、プレイヤーの一般的なオーディオ設定にかかわらず、自分たちの意図を維持する方法を探ることにしました。メインバスのボリュームや圧縮の閾値を変えるのに、ステートに基づいた非常にシンプルなシステムを使いました。目標は、これらメインバスのレベルを変更するだけでなく、それぞれのダイナミック性を制御し、メインバス同士のバランスを変更することでした。
このシステムのおかげで、例えば小さいスピーカーコンフィギュレーションだけで、アンビエンスのボリュームを上げることなどができました。プレイヤーはオプションメニューでスピーカーコンフィギュレーションを選択するだけでいいのです。
3種類のスピーカーコンフィギュレーションを提供しています:
Low: テレビ内臓スピーカーに適しています。
Medium: テレビサウンドバーや、小型2.1キットなど、中型スピーカーに適しています。
High: 特にサラウンドセットアップなどの、大型スピーカーに適しています。
以下はダイナミックレンジのオプションに関連した、バスボリュームの違いを示す例です:
アンビエンスBus | ミュージックBus | フォーリーBus | |
Low | + 6db | + 2db | + 2db |
Medium | + 3db | + 1db | + 1db |
High | なし | なし | なし |
こちらはコンプレッサの閾値変更の例です:
さらにHeadphone Modeも提供し、デフォルトの パンニングルール に変更を加え、Bondに関連した一部サウンドのスペーシャリゼーションをより正確に、SpeakerPanning機能で表現します。
SurroundからStereoへのダウンミックス
サラウンドとステレオのセットアップで私たちが感じとった違い、とくにリバーブやアンビエンスの差は、私たちがよく遭遇したもう一つの問題です。
ゲームでサラウンドを使うとき、没入感を深めようとして、バックチャンネルに信号を多く送る傾向があります。その副作用として、ハードウェアプラットフォームのダウンミックスルールを適用したときに、フロントスピーカーに送られる信号が多くなりすぎます。
Windows 10や、Xboxのプラットフォームでは、下図のように ITUのダウンミックス係数 の標準規格を適用します:
『Tell Me Why』ではこの推奨規格を排除して、リバーブやアンビエントのバスなどのダウンミックスによる影響が大きいバスに、カスタム設定の係数を適用しました。この機能のおかげで、ステレオダウンミックスについて心配する必要がなくなりました。
私たちは、Wwiseの GetSpeakerConfiguration 関数で、プラットフォームが2.0で実行されているのか、それとも5.1 / 7.1サラウンドなのかを、自動的に検知しました。ステートがこの情報を受け取り、私たちが修正したいプロパティを、駆動させます。これはランタイムに作動するシステムなので、プレイヤーが自分のハードウェアで行ったすべての変更が、活かされます。
システムをさらに洗練させるために、バスの個別のチャンネルに対応できるカスタムプラグインを開発しました。このプラグインを、処理したいバスにインサートして、ボリューム減衰を適用するだけです。以下の例では、リバーブバスのバックチャンネルに、12 dBの減衰が適用されています。
以下のランタイムの測定値を見ると、サラウンド信号でセンターとバックの両チャンネルに過大に送られるようなワーストケースのシナリオで、ボリュームのオーバーロードを削減するのに、カスタム係数が役立っています。
|
ルイス・マルタン(LOUIS MARTIN) |
コメント