先日、CEDECというゲーム開発者向けの技術交流会にて、「逆転裁判のスクリプトシステムによる実演を交えた3Dアドベンチャーの作り方」というセッションが開催になるよ、とお知らせしました。
ニコニコ生放送で生中継されたのですが、そのタイムシフトを見てみたので、内容を紹介したいと思います。

■「CEDEC 2015」生中継2日目(サブホール) - 2015/08/27 11:20開始 - ニコニコ生放送
http://live.nicovideo.jp/watch/lv232410119

このブログにいらっしゃる方の中にはもちろん、ゲーム開発者ではない、そもそもプログラミングなんて縁もゆかりもない、という方も大勢いらっしゃると思います(私もそうです)。
ですので、「ゲーム開発者向けの技術交流会」というと、専門的で難しい内容なのでは‥‥? と思うかもしれませんが、このセッションに関しては、そんなに難しい話はありません。
ExcelのVBAをいじったことがあるとか、RPGツクールなどでゲーム制作をしてみたことがあるとか、それくらいのパソコンの知識がある方ならだいたいは解るんじゃないかな。難しそうなところはすっ飛ばして、ゲーム画面だけ見ていても楽しいですし。
「大逆転裁判」の画面も色々と出てくるし、逆転裁判シリーズ制作の進化も伺え、普段あまり表には出ない、「シナリオがどうやってゲーム画面になるのか?」が実際に見られるのは、逆転裁判ファンとしてもなかなか面白いと思いますよ。
タイムシフトが見られる方は是非どうぞ。

では、内容について。

・冒頭のタイトルコールがやたら豪華(大逆転裁判の龍ノ介役・下野紘氏と、寿沙都役・花澤香菜氏によるコール)

・木本雅博氏の自己紹介。関わったタイトルは「逆転裁判5」「大逆転裁判 -成歩堂龍ノ介の冒險-」

・逆転裁判の紹介。
 大逆転裁判のスクリーンショットを使って紹介しているのだが、ネタバレ回避のために、わざわざ弁護士も検事も被告人も龍ノ介を使ったオリジナル画像を使うという凝りっぷり。

・基本的な作業の流れ。まずシナリオ、そこからゲームにしていく過程について。

・シナリオ例。
 逆転裁判では、シナリオの書き方のルールがある(発言者の名前の前には「■」を入れる、とか)。
 このルールの元にスクリプト変換すると(要するに、ゲーム画面にするためのプログラムを実行する)、ゲーム画面になる。ちなみにここでも「大逆転裁判」の画面が使われた。

・スクリプト変換したゲーム画面を、演出家が文字速度やモーション切り替えタイミング、サウンド、画面効果‥‥など諸々を指定していく。
 この演出が加わった動画を公開。ちなみにその動画は大逆転裁判法廷パート冒頭と似た感じに。

・ここまで済ませたら実行用データになる。XMLデータみたいな見た目になる(XML - Wikipedia。わからなくても問題なし)。

・逆転裁判4の頃のシナリオデータについて。
 この頃は、テキストに直接待ち時間など演出指定していたが、記述ミスしやすい、コマンドを覚えにくい、修正しにくいなど欠点があった。
 ちなみに「コマンド」とは、「この台詞は○秒で表示」とかいちいち書くのは大変なので「W10」みたいに短縮した形で指定している、ということ。

・逆転検事2からは、Excelベースのスクリプト記述環境で、それまでの問題を解決するようにした。
 要するに、「逆転裁判専用のシナリオ・演出用エディタ」みたいなものをExcelで作った。
 コマンドはドロップダウンリストで出てくるようになったり、引数の説明も入るようになった。記入ミスした時にエラー表示も出せるようになっている。
 その他、色々な機能の説明。逆転裁判5の時はローカライズ対応機能も使われた。

・スクリプト変換ツールの説明。
 シナリオをゲーム画面にする。ここでは定形処理、定形演出を組み込むことによりミスや負荷を低減。
 この時にモーションやカメラ、メッセージ表示スピード等を指定。ルール化できる部分は予め組み込んでいる。

・複数のスクリプトファイルを扱う時の問題。
 ファイルは色々な理由で、約500ファイル以上に分割されることになる。
 ゲーム進行によりフラグや所持品が異なるが、全てのファイルで色々と指定しておくのは大変。
 ということで、プリセットスクリプトというものを用意して、これだけでフラグの管理が出来るように。

・ファイル分割の問題としてもうひとつ、「特定のシーンから始めた時と、直前のシーンから続けた場合で、キャラモーションやサウンド等の状態が変わってしまう」という現象が起きてしまう。
 解決するために、「ひとつのファイルが終わる時、次のファイルに引き継ぐための情報」を用意している(メタデータによる解決)。
 これは、2つのファイルが繋がっているかどうか? のチェックにもなる。

・逆転裁判5と大逆転裁判の「3D表現」について。
 大逆転裁判は、逆転裁判5の経験を踏まえて3Dを生かした演出機能を強化。
 例えば、キャラの平行移動、ヨリ、回転(ちなみにここでのモデルはホームズ。こういう例を見せるのに使いやすいらしいw)、カメラ制御、移動方法‥‥など。
 また、今回色々使われた、視線制御についても説明。視線が違うと印象がかなり変化する。

・実演。
 亜双義と寿沙都の簡単なテキストから、実際にスクリプト変換ツールを使って変換、MT Framework(*カプコンが自社のゲーム開発用に作成し使用しているゲームエンジン。ここでは3DSの画面みたいなものが出てきました。MT Framework - Wikipedia)で動かす、という実演。
 途中で演出(キャラのモーションタイミングや音など)を変更し、すぐに出力できるというのも実演された。

・質疑応答。の時の画面が大逆転裁判のメイン4キャラ。w

Q. コマンドはカプコン独自?
A. そのとおりです。

Q. 演出家はチームの中でどういう立場なのか。
A. 逆転裁判チームではプランナー。大逆転裁判はプランナーが3人で、外部にも頼んでいるが合わせて5人前後。逆転裁判においては、ディレクター=シナリオライターなので、ディレクターが直接プランナーに指定したり話し合って演出を付けている。

Q. ローカライズの時のコマンドミスなどの事例はあるのか。
A. コマンド移し替え機能があるのと、コマンドの差があるかチェック機能も付いている。どうしても英語の文字数の関係で違いは出てきてしまう。

Q. モーションが増えたり減ったりした時の対処は? 変更があった時にチーム内でどう共有しているのか?
A. モーションについては、時間がどれくらいかをまず決めてあるので、それが変わらないのなら、デザイナー側でデータをアップデートすれば自動的に反映される。そのモーションを使っている場所を検索するツールもある。モーションやコマンドが増えた場合は自動でアップデートされるので特に問題ない。

Q. 3D表示で、背景とキャラクターが合わない場合とかがあると思うのだが、そういう時のノウハウとかがあれば。
A. 法廷パートでは映る場所が決まっているので、キャラクターが入るかどうか画角の調整ができるようにしてあるので問題は特になかった。
探偵パートでは、バストアップのキャラクターを3D空間に混ぜ込んでいるという形を取っており、背景とキャラクターを映すカメラは別にしてある。別なので、背景が動いてもキャラクターがずっと動いてついてくるということが起きるが、そこはフェードイン・フェードアウトなどをうまく使うとそんなに気にならないようにできる。キャラを映すカメラの画角は固定しているので、3Dでもキャラがなじまないということはさほど起きない。背景を動かす時は基本的にキャラを消し、どうしてもキャラが必要な時は画角も一緒に調整するようにしている。
3DSなので、合わせて深度もスクリプトで調整するようにしていて、通常のカメラでは問題ないが、演出的に近づいたり遠ざかったりしたい時は、スクリプターが直接値を調整している。

Q. Excelのスクリプトは何で実装しているのか? VBA(VBA - Wikipedia)なのか? 裏側は結構膨大になってしまうように思えるが。
A. 基本的にはVBA。そのとおりで、裏側には色々とデータがあります。

Q. 条件分岐はどのように記述しているのか?
A. 条件分岐もコマンドで記述し、フラグもドロップダウンリストで選べるようになっている(ジャンプ命令など実演)。
  AかつB、AまたはB、のようなコマンドはない。

Q. スクリプトの実行時にどこでエラーが出たか? のようなものをExcelで出せるか?
A. MT Framework実行時にExcelの何行目を実行しているかが隣に出るようになっている(実演)。出力時にExcelの何行目なのか表示できるようスクリプト自体に仕込んである。なのでエラー箇所がExcelの何行目なのかもわかりやすい。この手のデバッグ機能は発売時にはもちろん削除される。

ちなみに、ゲームニュースサイトではGpara.comとファミ通.comがレポートしています。

■[CEDEC2015]『逆転裁判』の演出を作り上げるスクリプトシステムをExcelで
http://www.gpara.com/infos/view/26836

■『逆転裁判』らしさが生まれる秘密! “逆転裁判のスクリプトシステムによる実演を交えた3Dアドベンチャーの作り方”【CEDEC 2015】 - ファミ通.com
http://www.famitsu.com/news/201508/28087129.html


*ここで何ですが、明日8月29日のブログ更新は私事につきお休みさせていただきます。30日はたぶん更新できると思います。