『ドラゴンクエストモンスターズ3』で実践された、多種・大量の3Dキャラクターを制作するための工夫。鍵は「仕様の共通化」と「自動化」にあり

2023年12月1日、大人気シリーズ「ドラゴンクエストモンスターズ」の最新作、『ドラゴンクエストモンスターズ3 魔族の王子とエルフの旅』が発売されました。

今作の特徴は、登場する「モンスター種類の多さ」にあります。Unityを採用し、制作された『ドラゴンクエストモンスターズ3』。いかに大量・多種のモンスターを制作し、管理していたのでしょうか。

制作の裏側と、Unity導入の効果を尋ねるべく、本記事では制作を担当した株式会社トーセと、株式会社サファリゲームズからお三方を招いてインタビュー。

トーセに所属し、パフォーマンスの最適化や進行アシスタントを担当した時田康孝氏、同じくトーセのアーティストであり、アーティストのマネジメントを担った矢部建徳氏。サファリゲームズで3Dゲーム制作チームの課長を務め、今作ではアートディレクターを務めた土井達哉氏です。

約500種類という大量の3Dモンスターたちを生み出し、管理した苦労や工夫をうかがい、Unityを活用した制作の効率化とクオリティ向上のヒントをいただきます。

目次

エディタ拡張で、デザイン業務を大幅に効率化

——『ドラゴンクエストモンスターズ3』の制作において、特に活用したUnityの機能を教えてください。

矢部:最初に挙げたいのは、Cinemachineです。シリーズの過去作との違いはさまざまなのですが、特徴的なのは「モンスターの大きさの自由度が高いこと」。多様な大きさのモンスターが登場するため、カメラをうまく制御してどのような大きさのモンスターでもしっかりとカメラに収まるように調整する必要がありました。そこで活用したのが、Cinemachineです。

より具体的に言えば、Cinemachine Target Groupという機能でモンスターを捉え、Framing Transposerを用いることで自動でカメラを制御し、しっかりとモンスターがフレームインするように工夫していました。これによって、効率的にモンスターを捉える仕組みを設計できたと感じています。

スライム4匹のターゲットグループが設定されているバーチャルカメラの設定例。バーチャルカメラによってFollowがターゲットグループに、BodyにFraming Transposerが設定されている

土井:具体的な機能の話ではないのですが、デザイナー視点から言えば、シェーディング調整や背景のレイアウト、エフェクトの作成など、さまざまなデザイン業務がUnityのエディタ上で完結させられるのが助かりましたね。DCCツールとの行き来が少なくて済むので。

その結果、高速でイテレーションを回すことができましたし、Unityのエディタはデザイナーが使い慣れているDCCツールにUIがよく似ているので、操作に迷うことがなく、結果的に本来のデザイン業務に時間を割けるようになりました。

——デザイン業務もUnityに寄せていたのでしょうか。

土井:そうですね。Unityのエディタは拡張しやすいことが特徴ですよね。この点は、グラフィックプログラマーとのスムーズな連携を実現することにも寄与してくれました。というのも、今作の特徴は登場するモンスターの種類の多さです。とにかく扱うデータ量が多いので、いかに必要な設定を自動で済ませるか、あるいはワンアクションで済ませられるかが制作上のポイントでした。

そこで、グラフィックプログラマーに依頼をして、モデルのインポートの際に発生するさまざまな作業を自動化したり、GUIを作成してもらったりしながら、デザイン業務を効率化するための拡張を進めました。

時田:エンジニア目線でもUnityのエディタ拡張は便利で、さまざまな局面で利用しました。たとえば、マップのコリジョンの角度を可視化する際にはGizmo(※ギズモ、シーン内のゲームオブジェクトに関連付けられたグラフィックス。各ウィンドウ中の任意のオブジェクトをより可視化したり、ガイドラインを描画したりする機能)を使い、デバッグ用にわかりやすく表現しました。

他にも、地面にアトリビュートのような仕掛けを施して、足音やエフェクトの処理をすることも。太陽の位置変更も、エディタ上で設定できるようにしました。

コリジョンのデバッグモードをONにした様子。コリジョンの白い部分が歩行可能エリアで、一定以上の角度がついていると赤く表示され、歩行ができなくなる。キャラクターが明らかに歩けそうな部分が赤くなると調整の対象となる

それから、エンジニアとしては、C#で実装できることがありがたいですね。開発の終盤でも、秒単位でビルドが終えられたので、イテレーションの高速化につながっています。

また、アセットをテキストファイルで扱えることのメリットも大きい。今作ではゲームの要素として「四季」を取り入れました。季節によってマップも変化していくわけですが、たとえば夏のマップを制作したのち、マテリアル部分のテキストだけを書き換えてあげれば、他の季節のマップもすぐに完成します。テキストファイルだからこそ複製がしやすく、この点も制作の効率化に一役買ってくれたと思っています。

モンスター500種類を効率的に制作するための「仕様の共通化」と「自動化」

——モンスターやマップの制作など、作業の大部分をUnity上で完結させていたのですね。

土井:はい。当初は外部のプラグインなどを用いて拡張しようとしていたものの、制作を進めるうちにエラーが起こるようになったんです。そこで、機能を削っていった結果、残したプラグインは一部あるものの、基本的にはURPのポストプロセスのみで画作りしました。標準搭載されている機能だけで完結させられることは、Unityを活用する大きなメリットだと思います。

——アーティストのみなさまから「使い慣れたDCCツールで作業がしたい」といった要望は出ませんでしたか?

土井:出ませんでしたね。というのも、今作ではたくさんのモンスターをつくる必要があったため、「なるべく早く、すべてのモンスターをゲーム環境に乗せきる」ことを最優先していました。とにかくデータを実装し、確認した上で、ブラッシュアップが必要な箇所を特定していく、という流れで進めていたんです。

今作でモンスターは最重要ともいえる魅力。もちろん、丁寧につくる必要がありましたが、総勢500種類のモンスターを実装するためには、一体ずつの細かな調整ばかりに時間を割けない事情もあります。そのため、とにかくまずはすべてのモンスターを形にして、それから必要に応じて調整する、というアプローチを取ったんです。

——多種のモンスターを制作し、管理するための工夫があれば教えてください。

土井:たくさんのモンスターを扱う点で重要だったのが「仕様の共通化」と「自動化」です。エディタを拡張し、実装を自動化することでヒューマンエラーを起こさずに個体数を揃えることを意識していました。

DCCツール側では階層整理、アニメーションのベイク処理、出力設定を自動化し、Unityではプレハブの作成や、「毒やマヒといった状態異常を個体のどこに表示するか」といったエフェクト用のノードの追加などを、エディタを拡張することで一括で実行できるように。これが特に有効でしたね。

エディタ拡張の例。プレハブやAnimatorControllerが存在しないフォルダで実行するとそれらが作成される
自動作成されたエフェクト用ノードの参考位置

また、今作は基本的なデザインが共通していながら、カラーが異なる別種のモンスターが登場します。たとえば、本体カラーがブルーの「スライム」と、オレンジの「スライムベス」といった形ですね。それらを実装する際に有用だったのが、プレハブバリアントです。

ベースになるモンスターの情報やコンポーネントをそのまま引き継げますし、マテリアルを差し替えるだけで実装を完了させられます。ベースのモンスターに加えた変更を、色違いのモンスターにもすぐに適応できるのでとても助かりました。

色違いモンスターの設定<1> :スライムとスライムベスを例にすると…
色違いモンスターの設定<2>:スライムベスのプレハブでは Base の部分が Slime になっている。このことからスライムベスのプレハブは、スライムのプレハブの情報を継承していることがわかる。AnimatorコンポーネントのControllerも「AC_Slime」とスライムと共通している
色違いモンスターの設定<3>:色違いを表現するために、唯一、メッシュレンダラーのマテリアルだけがスライムベス専用のオレンジ色のマテリアルにオーバーライドされている

時田:その他の工夫としては、500種類のデータが出揃う前からモンスター用のビューアーをつくり、パフォーマンスを常にチェックする体制を整えていました。レギュレーションの閾値をオーバーしていないかどうかを常に確認・共有しながら開発を進めることで、手戻りが発生しないよう気を配っていましたね。

Polybrushを「異業種間のコミュニケーション」に活用

——その他には、どのような機能が制作に寄与しましたか?

土井:さまざまな機能が役に立ちましたが、その中でもPolybrushは背景制作において欠かせない機能でした。地形のスカルプや頂点カラーペイントなど、Polybrushには多彩な機能がありますが、その中でも特に役に立ったのが「オブジェクトの散布機能」です。

先ほど、ゲームの要素に四季を導入したとお話をしましたが、そうなると季節を表現する「植生」がマップを制作する上で重要になりました。その中で、ランダムにオブジェクトの配置やサイズを決定し、重なりがないように多様なオブジェクトを配置できる散布機能がとても有用だったんです。植生のレイアウトを効率的に進める上で、Polybrushは欠かせませんでしたね。

Polybrushで実際に使ったツールの設定ウィンドウ例。Brush Settings にてブラシのサイズなどを微調整できる。また、その下部で植生同士の重なりを避けるためのAvoid Overlap設定や、実際に散布するアセットの登録ができる部分を用意。上図のように2種類の木をLoadoutに登録し、2種類をランダムに配置できる状態

また、Polybrushは思わぬところでも役に立ちました。

——思わぬところ?

土井:はい。Polybrushの存在が、異職種間のコミュニケーションを円滑に進めることに貢献してくれたんです。

Polybrushの「頂点ペイント」機能によって、プランナーとデザイナー間のやり取りがスムーズになりました。具体的に言うと、指示出しにPolybrushを活用できたのです。

プランナーがProBuilderである程度のレベルデザインをつくり、その中でも最も強調したい部分などにPolybrushで頂点ペイントをしてもらい、「ここをよく見せたい」とデザインの意図を説明していました。そうすることによって、異業種間で発生する特定のコミュニケーションもUnity上で完結させられました。

DCCツールではこのようなことはできなかった、あるいはやろうと思っても手間のかかる操作が必要になったと思います。プランナーが使い慣れているツール上でこのようなコミュニケーションを図れたのは、作業性の向上につながりましたね。

Unityを導入することによって「言葉」を統一する

——Unityの導入は運用面、あるいは作業フローにどのようなメリットをもたらしましたか?

土井:制作がコロナ禍にかかっていたため、リモートで画面共有をしながら作業を進めていました。そういった環境だったこともあり、なるべくUnity内で作業を完結させるという方針が作業を円滑に進める要因になったと感じています。

というのも、各種DCCツールとUnityには機能的に似たツールが備わっていますが、同じようなツールだとしても呼称が異なることがあるんです。そのため、アーティスト側からエンジニアに何かしらの要望を出すとき、別々の画面(DCCツールとUnity)を見ている場合、説明コストがかかってしまうことがあった。つまり、その都度「どういったツールのことを指しているのか」を説明する必要があったわけですね。

しかし、全員が基本的にUnity上で作業をしている場合、すべてのツールを同じ呼称で認識しているためすれ違いが起こらず、コミュニケーションコストも大幅に下がりました。

時田:HPやMPのゲージといった汎用プレハブを用意して、「このような画をつくる場合は、このプレハブをここへ配置する」といったルールをアーティストと共有し、アセットをつくってもらっていました。

そういったルールをつくる際にも、共有のワードをつかえることは大きなメリットでしたね。「すべての制作メンバーが共通のワードを用いてコミュニケーションを取れること」も、Unityで作業を完結させることの大きなメリットの一つだと思います。

——最後に、本作の制作を通じて感じた、Unity導入のメリットをお聞かせください。

土井:とてもシンプルでコンパクトなつくりになっているからこそ、どのような職種の方がつかっても、オペレーション上の問題が起こりにくいことが最大のメリットだと思います。DCCツールや他のゲームエンジンで作業していた方でも、直感的に操作できることもUnityの大きな強みでしょう。

今後も、特に3Dゲームをつくるのであれば、Unityは最も有力な選択肢であり続けるのではないでしょうか。

目次