Game Developers Conference(GDC) 2010現地レポート
「FF XIII」で開発された効果音作成システム「MASTS」とは?
物理演算による自動発音システムで効果音を作る方法を紹介
GDCではスクウェア・エニックスのセッションが3つ行なわれたが、この記事ではそのうちの2つ、現地時間の11日に開催されたサウンドの講演と、12日に行なわれたカットシーンの講演についてお届けする。
11日の講演は「FINAL FANTASY XIII's Motion-Controlled Real-Time Automatic Sound Triggering System」というタイトルで、「ファイナルファンタジー XIII」に使用された、リアルタイムに自動生成する効果音の作成方法について、スクウェア・エニックスの土田善紀氏と矢島友宏氏が解説した。
12日の講演は、リアルタイムレンダリングのカットシーン作成をフローチャートに沿って解説していくというもので、カットシーンモーションディレクターの田中雄介氏と、カットシーンディレクターの小林功児氏が講演を行なった。この講演は、2009年に横浜で開催された「Autodesk Day at SIGGRAPH ASIA 2009」のセッションのショートバージョンといえる内容だったので、この記事では講演の雰囲気のみをお伝えするに止める。内容の詳細についてはこちらのほうがより詳しいので、参照して欲しい。
■ 「FF XIII」以前の、効果音作成の手法
オーディオ部門のテクニカルディレクターとして、社内で作るゲームのサウンドプログラム全般を手がけている土田善紀氏 |
「FF XIII」のサウンドディレクション、サウンドマップの作成などを担当した矢島友宏氏 |
新しい効果音自動作成システム「Motion-Controlled Real-Time Automatic Sound System(MASTS)」 |
「FF XIII」の効果音は様々な方法で作られたものが使用されているが、今回の講演では主に、「Motion-Controlled Real-Time Automatic Sound System」通称「MASTS」での効果音作成方法について語られた。最初に、矢島氏が「MASTS」の開発に至るまでの状況と、そのシステムで目指すものを示した。
「FF XIII」に実装されているすべての効果音は、矢島氏が考える究極の音「物理計算によるアコースティックレンダリング」に近づけるべく設計されている。PS2までのコンソールでは、マシンスペックの問題で実現することが不可能だった。そのため、そこに含まれる要素を「空間演出」、「物体のスケール感の演出」、「足音や挙動による感情の演出」の3つに分けて表現していた。
「空間演出」については、効果音の配置ツールなどを使って距離を表現することで、空気感と臨場感を向上させた。「物体のスケール感」については、「スケール感を設定したうえでサウンドのトーラスバランスをとる」ことが大切だという。
RPGでは、本来あってはいけないような巨大物体が超高速で通過していくような、スケール的にファンタスティックな状況が発生する。それをそのまま現実の音に当てはめてしまうと、一定以上には音量を上げることができないため、スピーカーの限界を超えることになってしまう。「そこで、一定の状況では、音圧が一緒くたにならないように工夫しています」(矢島氏)。また、同じ音が何度も鳴るような場面でも、発音の制御システムを使って、それぞれの音圧をコントロールしている。
3つめの「足音や挙動による感情の演出」は矢島氏がもっともこだわってきた部分だ。キャラクターがどんな地形を歩いているか、どんな踏み具合なのかというデータに衣擦れの音を重ねる。しっかりと踏みしめて怒りを表現したり、軽いステップでうれしさを表現したりと、音からキャラクターの気持ちを表現していく。「すべての効果音作成のうち30%くらいはこれを作っています」(矢島氏)という力の入れようだ。
2000年に発売されたプレイステーション用のゲーム「ベイグランドストーリー」では、合計で3,000個近い足音と挙動音をすべて手動で作り一歩一歩違う足音を手でつけるという職人芸的な手法がとられた。しかしこの方法は1つの音を修正すると、そのキャラクターの足音と挙動音を、すべてチェックする必要があり、調整に手間がかかった。
プレイステーション 2用のMMORPG「FF XI」では逆に職人芸を排除して、足音と挙動音は完全に自動化された。あらかじめイベントテーブルを組んでおいて、完全にルール化したものをキャラクターに紐付け、自動的に足音や挙動音が出るようにした。そうした理由は、MMOなので、ユーザーがどんな場所を歩くかコントロールできないことと、将来的に拡張パックが出ても対応できるようにするためだったが「本来自分のやりたいことである足音による感情表現を犠牲にして、こだわりがあまり入っておらずシステマチックな作品になっています」(矢島氏)と、クリエイターとしては物足りない結果になった。
次に手がけた「FF XII」では、そういった過去のテクニックの集大成として、カットシーンは手動で作り、それ以外のシーンではイベントテーブルを使って自動的に効果音を鳴らすという方式をとり、効率性とクオリティを両立させた。「非常に高いクオリティでバランスを調整することができて、クリエイターとしては満足することができました」(鳥山氏)。PS2の開発では、この方法で成功を収めることができた、さらに次の世代となるPS3やXbox 360の開発では、今以上に作業量が増えて、もはやこの方式では対応しきれないだろうと予想された。
次世代機になって起きることが予想される問題点は3つあった。1つは、モーションキャプチャーで作っている部分に修正が入ると、効果音が手付けだった場合、サウンドの修正量が膨大になること。2つめはチャプチャーのデータが完成しないと作業に入れないので、サウンドチームの作業が後半に集中することになり、時間的に間に合わない可能性があること。そして3つめは、ハートの性能が上がってモーションのブレンディングで自然な動きが作れるようになってきたが、手動で音を作っている部分では、絵と完全にシンクロしていない所があったり、モーションを重ねている部分で非常に音が不自然にきこえてしまうことがあった。
そこでPS3で開発する「FF XIII」のために、まったく新しい音声作成ツールとして構想されたのが、前述した「Motion-Controlled Real-Time Automatic Sound System(MASTS)」だ。矢島氏の理想とする「物理計算によるアコースティックレンダリング」という目標に少しでも近づけることを目的に、まずは挙動と連動した物理計算システムの構築、そして完成版では音の自動生成も可能にするという構想が練られた。
初期には骨のIDを直に見るという構想ではなく、関節にジャイロ型のセンサーを埋め込んで制御するというイメージだったが、プログラマーとのディスカッションの中で骨のIDを判断材料にした方がいいという形が提案されて、採用されることになった。プログラマーへのオーダーは「最初はすごくいやな顔をされましたが、なんとか口説いて回りました」(矢島氏)という状況だったが、最終的にはすべてをプログラマーに任せることになった。
【スクリーンショット】 | ||
---|---|---|
「ベイグランドストーリー」、「FF XI」、「FF XII」はそれぞれ違う体制で効果音が作られた | ||
過去の開発で作成した、足音の数の一覧 | 新しいサウンドシステムへのアプローチの構想 | 「MASTS」を使ったデバッグ画面。画面中央の赤い玉が、足音が出ていることを表している |
■ 3段階に分かれて、音を自動生成する「MASTS」のシステム
「MASTS」による効果音作成の、データフローの模式図 |
「MASTS」の実際の運用については、サウンドプログラマーの土田氏が説明した。最初にデバッグモードのバトルシーンのムービーを使って、実際にMASTSが運用されているデバッグ画面が紹介された。画面内では、戦闘中のキャラクターの動きに合わせて、発音していることを示す球体状の印が高速で表示された。球体の色の違いは、発生している音の違いで、キャラクターの動作に併せてMASTSが適切な音を選んでいる様子を見ることができた。
足音や環境音を出すためのワークフローは次のようなものだ。まずゲーム側からキャラクターに関する情報が入力され、MASTSの判定部が計算してゲーム側に返す。ゲーム側では返された情報を基に更に詳細を決定して、それとサウンドドライバー側に返す。サウンドドライバーには専用のデバッガーが用意されており、内部挙動をモニタリングできるようになっている。ワークフローは3つのフェイズから成り立っている。
1:情報入力フェイズ
発音に必要な情報を集めるフェイズ。基本となる情報は、向きや移動速度となどキャラクター全体の情報、骨のモーション結果の情報、地面や壁との物理判定結果の衝突情報、キャラクターごとのスクリプトのタイプなど。そして補助情報として、現在のキャラクターのとっているモーションの情報も収集する。
キャラクターの情報は、移動方向と正面の2方向に分けて収集される。進行方向を向いていないアクションでの誤判定を避けるため、別々に入力する必要があった。また、キャラクターの経過時間も必要になる。「ゲーム内ではよく全体の進行が止まったり、カットシーンでキャラクターにポーズがかかったりしますので、このデータが必要になりました」(土田氏)。また、次の判定フェイズでも、集められたデータの時間変化や履歴が必要になる。
こうして一定期間分蓄積された情報は、ユーザーの入力やモーションブレンディング、物理演算などがすべてかかった後の最終的な情報がゲーム側からMASTS側へと入力される。情報はMASTS側で解析され、座標、回転角、速度、加速度の4つに分解してから確保される。
【スクリーンショット】 | ||
---|---|---|
情報入力フェイズでは、キャラクターの情報や環境の情報を収集する |
2:判定フェイズ
判定フェイズでは、発音をするかしないかを判断する。発音をする場合、なんの音を鳴らすのか、どのような形でならすのかという計算を行なう。
挙動音の中でも、衣擦れはキャラクターの基本情報のみを材料にして判定する。計算には、腕や肩の骨の角度、背骨やキャラクターの中心軸と、腕との通過判定から、発音するタイミングを決める。その時の通過速度やモーションによって、音量やならす音の種類を変えることができます。しゃがみと立ち上がりでは、腰やひざの位置情報も使う。
足音の発音には、情報入力フェイズで集められたすべての情報を使って判定が行なわれる。基本的には、足が地面に設置したタイミングで鳴らずが、前進なのか後退なのかなどによって音が替わり、移動速度が速くなると走る音に変わる。
【スクリーンショット】 | ||
---|---|---|
判定フェイズでは、収集した情報をもとに適切な音と音量を判定する |
3:発音フェイズ
発音フェイズは、MASTSから送られてきた音の種類と音量の情報をもとに、実際に音を鳴らすフェイズ。前のフェイズで判定されたデータテーブルに変換する。このテーブルには、例えば「キャラクターは主人公で、金属の靴を履いて、地形は草地で、天候は雨の時のジャンプ音という形式に変換されます」(土田氏)。
こうして効果音が発音されることになるが、実際には距離クリップや最大発音のクリップによって、発音の優先度の取捨選択が行なわれるので、鳴らない場合や、計算よりも大きな音だったり、小さな音だったりする。
【スクリーンショット】 | ||
---|---|---|
発音フェイズでは判定フェイズの結果をもとに発音する |
■ サウンドデザイナーのこだわりを反映させることができるスクリプト
一元管理しづらいキャラクターには、個別の解決方法を用意した |
二足歩行のキャラクターの発音は、上記のようなシステムを基本としている。しかし「FF XIII」には、空を飛んでいるキャラクターや、四足歩行、地面を這っているキャラクターもいる。これらのキャラクターには、当然二足歩行と同じ計算式は使えない。
その問題は、サウンドデザイナー側で設定できる専用のスクリプトエディターを使うことで解決している。キャラクターごとにどのスクリプトで計算を行なうかが決まっている。スクリプトの種類は汎用キャラクターで5種類、特種なキャラクターで3種類あり「かなりシンプルに作っています」(矢島氏)という。
このスクリプトには、判定に用いる骨の種類や、計算式、関数に与えるパラメーターやしきい値、ボリュームを算出する際の計算式などを個別に記述することができる。デザイナーサイドのみで完結するので、新しいキャラクターが追加されたり、変更があった際に作業が簡潔に行なえるというメリットがある。デザイナーの作業を簡略化するために、スクリプトの入力ツールと、プレビューツールも併せて作成された。この入力ツールはGUIで要素を選択するだけで、スクリプトが組めるようにしてあり、その場ですぐにプレビューできる便利なものだ。スクリプトによってサウンドデザイナーの細かいこだわりも反映できるようになった。
MASTSによって、作業効率を上げながらこだわりも盛り込めるようになった。しかし、いくつかの問題も発生した。
例えば、カットシーンでカメラに写っていないキャラクターが棒立ちになっていたり、歩かずに瞬間的に座標を移動するような従来の手法をとると、システムがうまく動かないことがあった。また移動量が0のアクションで誤判定を起こしたりした。また、普段はずっと空中に浮いていて足のモーションがないのに、時々歩いたりジャンプしたりするキャラクターがいたり、逆にずっと地面を這いずり回るキャラクターもいた。これらはいずれも、あまりにも想定を超えていて、データを入力してもプログラムがうまく対応できなかった。
そこで、いくつかの解決方法がとられた。まずプログラムに自動的にイレギュラーを検出する装置を用意した。これで瞬間移動や、普段地面から浮いているといった問題は解決した。ここは「残念ながらスクリプトではなくハードコーディングです。どうスクリプト化するかが今後の課題です」(土田氏)。
それでもどうしても対応できないものには、手付けと両立する方法がとられた。「問題のあるモーション空間に対して、一時的にNASTSをオフにして手動で発令指令を出せるようにしました」(土田氏)。しかしこの方法では作業量が増えてしまうので、「さらにMASTSのプリレンダリングを可能にするという機能を用意しました。ゲーム上でリアルタイムに行なっているものと同様の判定計算を、モーションデータ作成ツールでも走らせるようにして、クリップを受け取らせることにより、必要な部分だけの修正ですむようにしました」(土田氏)。
また、どこで異常状態が起こっているのかを見つけやすいように、MASTS専用のデバッガーを用意した。このデバッガーは、MASTSの情報を表示して異常を見つけやすくするだけでなく、状況の保存と再生が可能な目玉機能があった。このおかげで後から何度でも状況を再現することができ、検証効率が大幅にアップした。
【スクリーンショット】 | ||
---|---|---|
スクリプトの一例。下にあるのが実際のスクリーンショットで、上はそれを翻訳したもの | ||
「MASTS」とサウンドドライバーのデバッグツールの画面 |
■ 今後のために、音自体も物理によって生成するようなシステムを研究中
MASTSを使うことで、カットシーンの製作工数は3分の1に縮小された。足音や挙動は、かなりファンタジックで特殊なものをのぞいては、ほとんどが自動で生成されている。今回作った音の総数は5,200個程度だが、今後はこれをテンプレート化してライブラリとして使用できるようになる。手付けを廃止したことで、モーションチームやディレクター、カットシーンプランナーと調整を行なうことなく、サウンドチームが独自のスケジュールで調整を進めることができたのもメリットだ。
今回は、スクリプトで作れない部分をハードコーディングしたりと、結果的にプログラマーに依存するかたちでのコストカットになっているが、「開発全体から見ると、従来よりもコストカットに繋がっている。今回はシステムを作るためのコストがかかったが、今後の作品に対する費用対効果は大きいと思います」と矢島氏。
今後の取り組みとしては、最初に目標として掲げた「物理計算によるアコースティックレンダリング」への道筋で、「MASTSは真ん中に位置していまして、まだ完全版ではありません」と矢島氏。そして今後は、骨IDを見ているという点を利用して、銃や剣を抜くところから、アクセサリー、乗り物など、ゲーム中の骨と座標がとれるものに応用していき、手間のかかるものはすべて自動化していきたいと考えている。
スクリプトで制御パターンの応用も利き、それをすべてテンプレート化して、次回の開発時にははじめの段階である程度オートアジャストして、その後スクリプトで調整をかけていくという形にしたいとのこと。こうすることで、同じ歩くという動きを毎回、アサインしたりテーブルデータを再構築する必要がなくなる。
「物理に向かってということで、将来的には音自体も完全に物理化していきたいと思っています。どこまでできるかはまだわかりませんが、開発はスタートしていて、現在は研究の段階です。今後の作品に期待していただきたいと思っています」(矢島氏)。
2つの講演からは、「FF XIII」の開発では、内製のゲームエンジンである「クリスタルツールス」を中心に、ゲーム開発という側面以上にツール開発や新しいシステムの構築に注力されているという印象を受けた。「FF XIII」という単体のゲームを目的とはせず、その後に続くゲームの開発を視野に入れている。開発コストが高騰し、開発に関わる人数が増えていく中で、全社的な開発体制を整えていく過程で生み出されたのが「FF XIII」であり、ここが到着点ではない。
ディレクターの鳥山求氏の講演でも、今回はシステムを構築しながらの開発だったので、ゲームデザイン的に妥協しなければならない点があったと認めている。これらの開発体制が本当に真価を発揮するのは、体制作りが終わった次回昨以降の作品と言うことにある。そういった意味で、今後ローンチされる「ファイナルファンタジー XIV」や「ヴェルサス XIII」、「アギト XIII」などでどのような革新を見せてくれるかが楽しみだ。
□Game Developers Conferenceのホームページ(英語)
http://www.gdconf.com/
□Game Developers Conferenceのホームページ(日本語)
http://japan.gdconf.com/
(2010年 3月 15日)