
パシフィコ横浜ノースの現地とオンラインの両面で実施されたゲーム開発者向け大規模カンファレンスCEDEC 2023。「FINAL FANTASY XVI:サウンド開発日誌 ~迫力の演出の裏の、地味な実装の工夫たち~」のセッションレポートをお届けします。
このセッションにはスクウェア・エニックスのサウンド部の環境音担当のサウンドデザイナー久保田真梨氏とレコーディングエンジニア/ダイアログエディターの木部寛之氏、ボイス編集/実装業務の松尾友弥氏、環境音実装の絹谷剛氏の4名が登壇しました。

7人のサウンドメンバーが集ったサウンドチーム
このセッションはゲーム開発においてどうしても注目度が低く、忘れされがちなポジションである「サウンド」を中心としたセクションの日記の様な話です。


『FF16』のボイスアセットは1言語あたり約2万5千ファイルが存在し、英語と日本語、フランス語、イタリア語、ドイツ語、スペイン語(ラテンアメリカ)の6言語を含めると15万ファイルまで膨れ上がります。

さらに英語音声を基準とした1言語あたり約9000ファイルを、誤差1f未満(1f=1,470samples、30fpsに対しての44.1kHz)にしなくてはなりません。加えて、先の5言語が加わると約4万5千ファイルの尺合わせが必要になる膨大なものになってしまいます。

通常のワークフローにおいては、サウンドデザイナーが手作業でアセットを作成し、大量のwavファイル→内製オーサリングツール→大量のアセットを作る→開発環境で実装という順序を経ることが一般的です。

しかし『FF16』では、テキストさえあればシナリオ収録前にテキスト・トゥ・スピーチでダミー音声を作成すると、アセットに変換されて実機上で動作するというという仕組みが出来ていました。そのおかげで、音声の収録後にwavをボイスツールに通すだけで自動的にアセットにコンバートして振り分けられるようになっています。つまりダイアログエディターは、音を鳴らすことについてほぼノータッチでした。


しかし、サウンドのコンバート環境はサウンド部でなく開発チーム本体の管轄であり、チームが合流した時点でこの仕組みが出来上がってしまっていたために、ツールへの要望が出しにくかったと語ります。また自動コンバートではタイムラグがあったために、少しの変更でも処理が終わるまで待つ必要があり、この処理時間で苦しめらていました。

そのため、納品されたwavをツールへ入れるだけだったはずでしたが、部署間の連携やローカライズを通じた「言語の壁」、コロナ禍でのリモートワークによってコミュニケーションやクオリティコントロールが行き届かなかったことから、納品データをチェックしているうちに「全部見直さなきゃな…。見直さないとまずいな」と全数チェックと再処理をすることになってしまったのです。

そこで、当初ベテラン3人で対処していたため「人を増やそう!」となり、中途採用や配置換えから最終的に7人体制へと拡充。言語別に担当が振り分けられました。なお加わった4名は音を扱う実務経験がある人たちでしたが、MAと録音、効果音、新卒2年目の人で、ゲーム開発の経験値が低めです。さらにベテランもそれぞれ専念することがあったため非常にタイトな状況でした。


膨大なファイル量と戦うためのツール制作・活用―ボイスセクションの場合
『FF16』のボイスは、膨大なファイルの量と情報量との戦いです。前述の通り、6言語で約15万ファイルがあると、データの配置やコピーだけでも相当な時間を取られてしまいます。準備作業の時間も取られてしまうために、それらを短縮して口パク合わせなど本来やるべき調整作業へ当てる時間を増やしたいと考えました。

情報共有などは調整依頼をする手段がメールやSlack、ダイレクトメッセージなどで行っていましたが、情報の取りこぼしや共有漏れがありました。そのため、自動化の調整作業では自作ツールやREAPERのカスタムアクションを用いることや、チームにおける情報共有をExcel Onlineで集約しています。

自動化したものは、ワークフローのデータコピー、台本成型、カットシーンなどの口パクなどのwavデータの配置作業などです。口パクへのwavデータ配置については、自作ツールのみだと完全に配置出来なかったためREAPERのカスタムアクションを組み合わせて自動化を実現しました。
納品データをコピーするときに使うツールです。データ納品時のフォルダが収録日とキャラ名ごとに分けられていましたが、キャラ単体で無くシーンごとに調整を行うために、収録日とキャラ名の括りを手動で外すことを自動化。これによって、自動化前までは6分かかっていたものを14秒にまで高速化させます。

さらに、不規則に指定されたファイルを、リストに記載されたファイルへコピーするというものでは、自動化によって7分45秒から1分30秒まで短縮。台本データから必要な情報を抽出するツールでは、自動化前までは3分だったものが自動化後には24秒にまで短縮できました。


REAPER上でwavファイルを口パク位置に移動さえるためのツールは、108ファイルの1シーンを手作業で行うのに20分42秒かかっていましたが、自動化後は48秒にまで短縮できました。


続いて自動化作業によって実現したDAW内での作業を紹介しました。まずデータをインポートしてカスタムアクションを実行→台本を取り込むためにリージョンの名前を変更→台本成形ツールで作った台本をREAPERにインポート→wavファイル上にテキストデータが配置→再生のためのダイナミクスを調整して再生です。

Excel Onlineでの情報共有では、作業の進捗など様々なことを共有していました。Perforceでの共有も可能だったものの、変更内容をサブミットするために手間が掛かるため、リアルタイムで変更が反映されるため情報共有に使っていたと語ります。

しかし、音の作業なためリアルタイムに時間が掛かってしまうこともあったため、そこは「根性」で乗り切ったと述べました。

Pythonによる独自ツール開発で時短を達成!ダイアログセクションの例
ツールを用いて多くの作業を自動化できましたが、ここではダイアログセクションが、時短についてを語る内容です。これは前述の通り、英語音声よりの誤差1フレーム未満にしなければなりませんでした。