ニュース

美しく描かれた東京の街にはこんな裏側が!? 「Ghostwire: Tokyo™」開発事例で公開された数多の手法

【UNREAL FEST EXTREME 2022 SUMMER】

5月23日〜5月28日 開催

 Tango Gameworks(ゼニマックス・アジア)は5月27日、ゲームエンジン「Unreal Engine(以下、UE)」について学べるオンラインイベント「UNREAL FEST EXTREME 2022 SUMMER」にて、PS5/PC(Steam)用箱庭型アクションアドベンチャーゲーム「Ghostwire: Tokyo™」の開発事例紹介を行なった。

 本セッションでは、「Ghostwire: Tokyo™」にてレベルストリーミングとLOD・VFX、さらには各アーティストとのやり取りなど、幅広く携わったプログラマー奥川剛氏のプレゼンの元、本作の大きな特徴ともいえる美しく描かれた箱庭型の東京の街をUEを用いて表現するために行なった様々な創意工夫が明かされた。UE4末期タイトルとして投入できる要素を全て投入したと語られる手法の数々を見てみよう。

高所からでも一面ビル群。都会らしさを生み出す背景のコツ!

 最初に語られたのは本作の背景についてだ。「Ghostwire: Tokyo™」の大きな特徴でもある箱庭型の町は、東京が舞台となるためマップのほとんどがビルとアスファルトで構築されており、自然地形がほぼ存在していない。そして、箱庭とはいえ相当な広さを持っていることから、その物量・読み込み・破棄の頻度が起因して相当な負荷となりえる特徴を持っている。

 そんな本作のベースには、大きなワールドの管理を簡略化することを目的とした「ワールドコンポジション」が採用されている。ランドエスケープは未使用で、サブレベルは2100となっており、コンビニの店内といったような複数箇所で共有できるインスタンスレベルを併用しているため使われているレベルは多い。ほぼワールドコンポジション内で完結しているためレベルをジャンプする際のロードがほとんど入らないのも特徴だ。

 そして、都市型の広い背景をUE4で表現するためにキーとなったのが、独自に実装した「階層レベルLOD」だ。本作は都市内部を縦横無尽に飛び回るゲームとなっていることから、高い所から夜の街並みを見渡すというシチュエーションが重要となっている。しかし、通常のLODだと距離が遠くなった際にモデルが消えてしまう仕様となっているため著しく見た目を損なってしまうのだ。「階層レベルLOD」を使えば、どんなに遠い景色になったとしても建物が全て見えている状態を保つことができる。

【階層レベルLOD】

 適用結果が下記のようになっており、階層レベルLODを使った場合は本来消えてしまっていた街の遠景を残すことに成功している。さらに、階層レベルLODの周辺においてライトのレベルがロードされてしまい停電したように見えてしまっている問題を、Gバッファを参照しながらリライト処理を行なう「夜景シェーダー」というポストエフェクトを作成することで見事に解決している。本作の東京の夜景に対する強いこだわりを感じられる。

 この「階層レベルLOD」の実装によって、目標としていた全ての建物の表示という今作で重要となる遠景のクオリティを格段に上げることができたほかにも、レベルを巻き込んだLODで大幅に描画投入量・マテリアル数を減らすことができたと奥川氏は語る。

 さらに今作では、リソース量の削減と効率化アップのためにインスタンスレベルの適用もされている。主な使用箇所はコンビニの店内、マンションの室内、神社などだ。あらかじめ層毎に分けて設定した内部の一部のサブレベルを変更するだけで”同じフロアだけど違う部屋”といった空間を量産することができるようになっている。他にも、ドアにインタラクトすると暗転を挟んで入る個別のダンジョンのような建物にもインスタントレベルが使用されており、これによってレベル読み替えではなくワールドコンポジション内の移動だけで済ませているのだ。このように様々なバリエーション違いにも対応できることで一点物の特別なリソースを作らずに済む場面も生まれ、リソースの削減に繋がっている。

 マップに存在している配置物に関しては、大小問わず全ての配置物はプログラマが用意した既定のクラスか、完全ネイティブ化していると語る奥川氏。理由としてはパフォーマンスの維持やメンテナンス性の向上のためというのが大きい。本作の場合はそのハイクオリティな箱庭空間ゆえにオブジェクト数が多いことも相まって、担当した各レベルデザイナーや背景アーティストが一挙に負荷の重いものを作成してしまった場合のデメリットが大きいとのことだ。

 とは言えプログラマ以外に完璧な物を求めるのも厳しいと奥川氏は語る。よって本作では風呂敷を広げる初期の段階までは担当のスタッフの自由に作成してもらい、ある程度の時期になったらプログラマが引き取り作り直す方式になったという。

実際に使用された配置物を例に解説が行なわれる。ランドマーク以外のビルはほぼ全てこのクラスで作られているため一点物のメッシュが少なく、それでいて同じメッシュであってもマテリアルがランダムで違うモノになることで全く同じビルも存在しないという軽さとバリエーションの多さの両方を担保する素晴らしい仕様となっている

「VFX」はアーティスト側だけで実装。プログラマの実装コスト・メンテナンスコストの削減にも

 続いて話題に上がったのは「VFX」についてだ。本作の魅力として一点物のユニークな表現・演出が多いことが上げられるのだが、なんとその数多の演出の数々をなるべくプログラマーを介さずなるべくアーティスト側だけで実装できることを目指したと言うのだ。

 そこで重要となったのが「FxObject(以下FO)」というエフェクトのインターフェースとなるアクターで、アプリプログラマーやレベルデザイナーがビジュアルエフェクトシステム「Niagara」等を使わずともこのクラス越しに作業が可能だと言う。このFOは1つのオブジェクト内に複数のアニメーションを保有することができ、中身の構造がわからなくてもFO内にあるアニメーションを呼び出すだけで使用することができる。そのため自分が何を制御しているのか知らなくても使うことができてしまうのだ。

 例をいくつか紹介してくれたのだが、例えば特定のトリガーを踏んだことでFOで作られたアニメーションが再生されるように設定されていて、そのアニメーション中にまた別のFOのアニメーションを呼び出すと言った芸当も可能。他のアクターとの連携をスムーズに行なえることから演出の幅がとてつもなく広い。「一点物のユニークな表現・演出が多い」というのはその作りやすさ・扱いやすさに加えて複合的な要素を絡んだ演出も作れるという点からも納得できる感想だったと言える。

 実際の効果としてもアーティストだけで完結する演出作りや、プログラマの実装コスト・メンテナンスコストの削減に繋がったため想定通りの結果を実現できたと奥川氏も語っている。

【FOを活用した実例の数々】

 「Alemdic」などに比べ安定して使えるという理由で採用された頂点アニメーションツール「VertexAnimationTexture(以下VAT)」は、既存のスキニングやモーフでは表現できないことが表現可能となっている。本作で主に使われたシチュエーションは2つで、「スケルタルメッシュを大量に使うには重すぎるシーン」と「水などの表現をするシーン」だ。サイズの大きいフロートテクスチャを使うためにメモリを気にしないといけないが、既存のシステムより高速になる場合もあることから使いどころが重要となっている。

【スケルタルメッシュを大量に使うには重すぎるシーン一例】
【水の表現のシーン一例:】

「霧」の表現は3つの要素で構成。どこから見ても違和感のない仕上がりに

 独特な世界観を生み出している大きなポイントともなっている天気の演出についても、ゲームの仕様上特に重要となる「霧」について今回は語ってくれた。霧の表現は、カメラに追従して範囲数十メートルのボリュームフォッグパーティクルを出す「近景霧」、景色が抜けた際の遠景部分をカバーする「遠景霧」、高所から街を見下ろした際に霧が覆っているように見た目を維持する「雲海」の3つの要素で構成されており、それぞれがプレーヤーにマップの景色として違和感を与えないようにお互いをカバーしている関係となっている。プレイしていると意外と小さな違和感でも気になってしまうため、細部まで違和感を消す努力を惜しまない姿勢には感服である。

「近景霧」だけだと、景色が抜けた際に遠景には霧はないのに、その遠景の場所に向かったら霧が出ているという矛盾が生まれてしまう。そのために「遠景霧」は遠い場所の矛盾をなくすために、「雲海」は町全体を見た時の違和感を消すためにお互いが作用している

 霧が参照している「霧マップ」は、上空からみたマップ全体のXYの霧の発生状況をテクスチャに投影したもので、プライマリー、セカンダリ、演出バッファの3つで構成されている。開放時の演出やプリミティブ感を消すノイズなど、リアルタイム性の高いものについては毎フレームプライマリバッファを参照しながら、演出バッファに雲のように流れる演出を書き込むことでリアル性を担保している。

他の天気演出で言うと、雨・雪の場合は「近景霧」と同じように基本はカメラ周辺にだけパーティクルを降らせて対応している

「MPC」や「Niagara」、「光過敏症対策」など。効率よく効果的な調整

 「MPC」にはマテリアル内で参照できる数に2個の制限があるため、野良MPCは禁止として頻繁に使用するものと通知していたらきりがないパラメーターを中心に登録したとのことだ。MPCの乱立防止や全体に関係ないパラメーターが入ってないか等の最低限の管理が必須となるが、構造物の物量が多い本作においては重宝したと奥川氏は語った。

【MPC使用例】

 続いて取り上げたのはビジュアルエフェクトシステム「Niagara」についてだ。開発初期段階ではリリースされていなかったため「Cascade」だけで運用していたところ、「Niagara」でしか表現できない物が増えたため「Cascade」で表現できるものはそのまま作り、「Niagara」でしか表現できない物のみ「Niagara」で作る、という形で徐々に導入する形となったとのことだ。既存の「Cascade」で制作した資産をそのまま使えたため変換コストなどがかからず、プログラマ側の負担も最小限で運用できたらしく純粋に表現の幅が広がったことで導入の価値はあったと奥川氏は言う。

【作成したモジュール一例】

 昨今グローバル展開を想定しているタイトルでは対応必須となっている「光過敏症対策」についても今作で実際に行なった施策を紹介してくれた。例えば、敵が近くにいる際に発生する看板やライトが点滅する「予兆演出」では光源となる物体に近づいていくと点滅がどんどん弱くなり最終的には消える、ビルの側面スレスレで落下した場合に窓と壁が交互に高速で表示されることで点滅のように映ってしまう問題をMPCに書かれたプレーヤーの落下速度を取得しカメラとの距離を算出して窓ガラスを黒くする処理を入れるなどあらゆるパターンで問題になり得る箇所を技術力でカバーしている。

 なるべく表現のクオリティを落とさないように条件を限定して対策を行ない、それでいてなるべく負荷にならないように処理はGPU側で完結できるように対応したとのこと。ゲームを制作する上で想定し得る事態に対して配慮は必要不可欠だが、その中でもクオリティを維持しつつ、最初から様々な表現に対応できるように予め施策を加える姿勢は素晴らしい。

【VFXの一例】

 今回「Ghostwire: Tokyo™」にて実際に使用された様々な演出・技術・施策を垣間見ることができた。膨大なコンテンツ量と美麗グラフィックスが魅力の1つである本作が、単純な物量ではなく実は表現方法や技術の工夫で“効率よく効果的に”容量や工程を節約しつつも、それでいて高クオリティを維持していた作品だったというのが驚きつつも見方が変わる発見だった。

 本セッションの最後に奥川氏は本作について、縦横無尽に立体的な探索が可能な都市マップの背景表現や、トレンドの仕様も多く採用できたUE4の末期タイトルとして詰め込めれるだけ詰め込んだ作品だと語っていたが、まさに技術の結晶を凝縮したような作品だったと筆者は感じた。

【Ghostwire: Tokyo™開発事例:ノンリニアな東京の街を表現する | UNREAL FEST EXTREME 2022 SUMMER】