2019年3月21日(北米時間)、世界最大級のゲーム開発者のカンファレンス、GDC(ゲーム・デベロッパーズ・カンファレンス) 2019にて行われた『Marvel's Spider-Man』のセッションの模様をお届けする。

 2019年3月18日~22日(現地時間)、アメリカ・サンフランシスコで行われている世界最大級のゲーム開発者のカンファレンス、GDC(ゲーム・デベロッパーズ・カンファレンス) 2019。本記事では、インソムニアック・ゲームズが手掛けたプレイステーション4用ソフト『Marvel's Spider-Man』のセッションの模様をお届けする。

 GDCの期間中、『Marvel's Spider-Man』のセッションは数多く行われており、今回取材したセッションのタイトルは、“Procedurally Crafting Manhattan for 'Marvel's Spider-Man'”となっており、プロシージャルを使って、同作の舞台となるマンハッタン(オープンワールド)を、どのように作ったのかという内容。セッションには、インソムニアック・ゲームズでテクニカルアーティストを務めるデイビット・サンティアゴ氏が登壇した。

デイビット・サンティアゴ氏

 まず、サンティアゴ氏は企画の始まりについて、ミーティングでプレイステーション4タイトルを制作することが決定した際には、社内が騒然したことを明かしつつ、「それが『スパイダーマン』のゲームだと判明したときは、本当に信じられなかった」と当時を振り返った。

 そこから、『Marvel's Spider-Man』の舞台である広大なマンハッタンを作るにあたり、『Sunset Overdrive』(2014年にXbox One用ソフトとして発売され、2018年にはPC版も発売された)で地形を制作していたサンティアゴ氏が担当することになったのだという。

 そして、開発がスタートし、クリエイティブ・ディレクターのブライアン・インティハー氏がプレゼンテーションで示していたゲームの核となる部分を見た、サンティアゴ氏は「比較的短い期間で、あれだけの物量を作るのか」と思ったそうで、それをどうやって実現していったのかがセッションでは語られた。

 サンティアゴ氏は、最初に『Marvel's Spider-Man』の規模は、これまでの作品とは段違いだったことを明かした。具体的には

  • 6kmx3kmのプレイアブル空間
  • 9個の地区
  • 544本の通りと1202本の路地
  • ビルは8300以上
  • 建造物群でも2350以上
  • 個別にカスタマイズ可能な店舗350
  • 犯罪数:3000 などなど

 といった感じ。かなり大規模な開発となるが、インソムニアック・ゲームズは総勢200人ほどの会社で、しかも複数タイトルの開発が同時進行しているため、人数を大幅に増やすことはできない。そこで、マクロなどを含む自動化と、プロシージャル生成を含むパイプラインが開発の鍵を握ることになった。

 なお、ここでいうプロシージャル生成は“生成したものをそのまま使う”のではなく、あらかじめ定義したルールやパラメーターに沿って、いままで“人間がひとつずつ”作っていたコンテンツの大部分を生成するというアプローチのことを指す。

 インソムニアック・ゲームズにとって“ゲーム体験を可能な限り手動で作り込む”のは重要なことであるため、今回のプロシージャル生成システムは、アーティストやゲームデザイナーが最高のスタートを切り、作り込みに時間を回せるよう下地を整えるところを目指したそう。掲げた目標は、完成度80%のものを生成するシステムづくり。

 ちなみに、『Sunset Overdrive』でもいろいろなことを試していたそうで、「特定のエリアに行けないよう塞ぐといった作業は、建物がとてもユニークだったので、手作業でやったほうが効率的だった」というエピソードも披露された。

 そして、今回作ることにしたのは以下の4つ。

  • 地形
  • 建物(マークアップ付き)
  • 歩行者や車両の移動領域
  • プロップ(小道具、たとえば道にある消火栓など)の仮組み

地形

 まず、地形について。道や路地はすべての基礎になるため、ここがしっかりしていないと、その上にある何もかもが影響を受けてしまう。ほかのものと強い依存関係があると言えるが、「これが本講演の大きなポイントになるので覚えておいてください」とサンティアゴ氏は力説。

 そんな地形は、形状に関する調整と、(犯罪の発生範囲など)ゲームデザインに影響する調整が必要だったそう。当然ながら、このマップをまるごと作るのは非現実的なので、ストリーミング読み込みする単位を1辺120メートルのタイルとして区切り、ゲームデザインを進めていく上でもしっかり意識して、タイルをまたがないようにしたそう。また、海岸線のあたりではタイル数を抑えるため複数個をまとめたりもしているとのこと。

 地形にはプロップも含まれ、マンホールの蓋から信号機まではここで定義された条件に沿って生成されるようになっている(仮なので後にゲームデザイナーが調整可能)。

 なお、セントラルパークについては、重要であると考え、ほかのエリアとは違い、完全にプロシージャル要素なしで作り込んだという。

建物

 続いて、建物についてはグレイボックスにモジュール化した外装を自動で適用するようにしており、ウォータータンクなどのプロップも自動で配置される。なお、建物はすべて“地形(道や路地)が変われば作り直しになる”という潜在的なポイントを内包しているとのこと。

歩行者や車両の移動領域

 プロシージャルボリュームを作り、密度を設定、それに応じて人なら歩道で曲がるポイントから曲がるポイントへのパスをつなげ、クルマなら車道で同様につなげたそう。バス停や駅などにも同様の処理を行い、その情報でトラフィックノードを作ることで、歩行者や車両がちゃんと動くようになった。

 車道については車線数なども調整できるほか、曲がるときの適切な方向指定なども行える。また、バス停には止まらないようにしたり、2車線から1車線になる角や一方通行などの特殊な処理も適切に対応できるようになっているとのこと。

デカール

 おもに路上のプロップなどのこと。その中でも意外とたいへんだったというのがゴミの処理。ゴミはまんべんなく存在しないといけないけれども、人やクルマ通りが多いところでは、落ちていないようにする必要があった。

 そのほか、水溜りは一定の雨が降ると生じるようになっていたり、ライティングのプロシージャルも行われていることが明かされた。

マップ俯瞰図のモデル

 俯瞰図はゲーム内の状況に応じて表示するため、LOD(カメラからの距離に応じてモデルのディテールを切り替え、シーンの計算負荷を軽減する方法)が最低とはいえ何度も生成必要があったそう。

 これでプロシージャルに生成したい内容はすべてカバー。ここまでをプリプロダクション段階とし、1年未満で制作したそう。

 もちろん、その後にもゲームデザイナーからの要望に応じて修正を加えていった。たとえば“ジェットパック兵の犯罪”をデザインするうえで“64平米以上の面積がある屋上で、なおかつもうひとつ64平米の屋上が40m以内にあり、両者の高低差が20m以上、さらに両者への経路と路地に降りる経路が明確な場所”というような条件で場所を絞り込み、それをうまく分散させるなどの対応も行ったそう。

 ただ、犯罪を移動させると関連するプロップが移動するため、別のタイルにも影響が出るなど依存関係が複雑になってしまったとのこと。デイビット・サンティアゴ氏は、依存性の例を出して、データ粒度や分類をきれいにしないと雪だるま式に問題が増えてしまうと語った。

パイプライン整備

 そして、ここからパイプライン整備に取り掛かっていくのだが、整備にはHoudini(※カナダのSideEffects社が提供している3DCGソフトウェア)を使用したそう。全体のイメージは以下の通りとのこと。

 最初はデザイナーが描いたマップを読み込ませて、建物(色や大きさなども考慮)や道路を自動的に生成。道路は、“7割の道路を一方通行にして、1車線を駐車用、もう1車線を交通用にして”というような指定をするだけでいいそう。さらに建物については形状的・ビジュアル的な両面からモジュール化を進めて効率化を進めていったのだという。

 その後はゲームデザイナーがゲームプレイに合わせて調整しているものの、基本的にはほとんどプロシージャルに生成したものがゲーム本編でも使用されているのだという。

 フェーズ2の時点でのプロシージャル生成システムの目標は、生成したものの8割について完成状態にあるか、80%の進捗状態にあるか、というところまでもっていくことだったと、サンティアゴ氏は語る。残りはアーティストが短縮できた時間でしっかりと仕上げてくれるからとのこと。

 フェーズ3では手動での作り込みを支援することに徹し、便利機能を提供したり検証プロセスを支援。しかし要素が増えるたり、調整が入ったりすることにより、想定したパイプラインでは物事が進まなくなってしまうという問題が発生したようだ。

 さまざまな点が相互作用してくるため、完了状態を複数の側面で管理しつつ進めないと、せっかく作り込んだ内容が生成したコンテンツで上書きされてしまう。依存関係が複雑だからこそ、何かひとつを変えたときに、ほかの点に与える影響も複雑になっていたそう。

 そこで何週間もかけてさまざまなチームに聞き取りを行い、目指す目標デザインとアートの両面で立て直し、何をもってハンドオフとするかを決め、完了の定義を共有。そうして、新しいパイプラインを作り、依存関係に合わせてモジュール化したことで(その後もくり返し改善を続け)、ようやく完成に至ったとのこと。

 最後に教訓として

  • 「厳密なワークフローは最高だけど、制作に入ったら柔軟性が大事だと知っておこう」
  • 「生成したコンテンツは早めに固めてしまう」
  • 「プロシージャルにするなら区分ごとにモジュラー化する」
  • 「依存関係はできるだけ少なく、まとめて」
  • 「プロシージャルコンテンツはタグ付けしてわかるようにしよう」
  • 「最後の判断は人間ができるようにしよう」

 と開発を振り返ったサンティアゴ氏。今回は、「80%をプロシージャルに”という目標は達成できた」とのことで、「今後もこの教訓を活かしていきたい」と語り、セッションを締めくくった。