オンラインにて8月23日~25日にわたって開催の「CEDEC2022」。ここでは、8月24日に行われたセッション「ELDEN RINGのオープンなフィールドに対応するためのエンジニア取り組み事例紹介」の内容をお届けする。
登壇者はフロム・ソフトウェアより、松本 龍氏。2022年2月に発売した「ELDEN RING」は、フロム・ソフトウェア初のオープンなフィールドを実装しており、またタイトルボリュームが非常に大きなものとなったことから、過去作の作り方が通用しない箇所が多くあり、随所で対応が求められるタイトルとなった。
このセッションは、オープンなフィールドに初めて開発チームが取り組むにあたり、どういう箇所で問題認識・検討があったか、またどういう対応を行ったか――具体的にはステージのデータ構成、ナビメッシュ等各種データの自動生成、リソースの依存関係等各種データの見える化、メモリ超過等のデバッグ情報可視化、など広い範囲からピックアップして紹介していくものとなっている。
「ELDEN RING」ならではの取り組みの数々を紹介
「ELDEN RING」は「DARK SOULS III」と比べてとにかく大きいマップが特徴である。「DARK SOULS III」の「ロスリックの高壁」が216×220mだったのに対し、「ELDEN RING」では同等規模のマップがおよそ13マップほど存在している(DLCで追加されたマップは除外)。
「ELDEN RING」のオープンフィールドは全域で約6100×7400mもあり、地下マップや小規模ダンジョンが各地に点在。ちなみに開発上、「オープンマップ」と呼んでいるという。さらに「ストームヴィル城」のような開発上「レガシーマップ」と呼ばれていたダンジョンがあり、「ストームヴィル城」で500×350m。既にロスリックの高壁の3.6倍もあるのだ。
これだけの広さのものを作ろうとすると、これまでのタイトルと同じ作り方では問題が起こる箇所も出てきてしまう。主に、量産コスト、データ管理、デバッグの問題が挙げられる。
マップ構成・地形形状の構成改修について
「DARK SOULS III」でのケースではひとつのマップごとにデータを管理。接続部付近に移動すると、続きのマップをバックグラウンドでロードしている。画像はロスリックの高壁だが、左上の一ヶ所のみ他のマップに繋がっている。
では「ELDEN RING」では、レガシーマップは基本的に同じ作りで良さそうだということがわかった。過去作に近い作り込まれたマップ構造のダンジョンで、ストームヴィル城など大きなレガシーが7つほど存在し、地下墓地などの小さなレガシーもいれるとリムグレイブの北側だけでも11個のレガシーマップが存在するが、基本は過去作と同等の作り方でやっていけるだろうとのこと。
しかし問題はオープンマップだ。「ELDEN RING」固有の広大なフィールドは移動制限が基本的になく、四方に移動が可能で、オープン上に大小のレガシーが存在し、シームレスにレガシーに移動が可能であることを実現させるためには、作り方そのものを変えなければならない。
そこで、256×256mの正方形を最小としてマップを分割することとなった。さらに大きなグリッドも生成して管理。グリッドの大きさに合わせてプレイヤー周辺のグリッドを読み込ませることとなった。広範囲の遠くを見た時のクオリティを維持するため、大きな配置物は大きなグリッドに属させているのだという。
さらに、マップ構成・地形形状の構成改修にアセットを導入。「DARK SOULS III」のケースでは、マップパーツとオブジェクトの大きなふたつに分かれ、画像ではパーツ単位で色分けされており、区域ごとにパーツが作成されている。なお、点で表示されているのが扉や木箱といったアクション可能なオブジェクトとなる。
しかし「ELDEN RING」では「DARK SOULS III」と異なり、「DARK SOULS III」では破壊可能だったオブジェクトをアセットに取り込み、アセットの形状でメモリを有効に使えるようにしている。上空からの色分け図も、「DARK SOULS III」を比較して建物や自然地形に分かれているのがわかるだろう。
次はナビメッシュについてだ。ナビメッシュとは簡単に説明すると、各NPCキャラクターが移動するときに経路を探索するために使うもので、地面上に生成するメッシュデータとなる。例えば障害物を避けて最短ルートで相手に接近する、横ステップをした先が安全であるかを確認するといったような目的に使用する。
「DARK SOULS III」ではあらかじめ、静的なデータをマップパーツのヒット形状から作成し、飛び降りなど特殊な挙動用情報は手で生成用データを設置して作成していた。
だが、過去作と同じナビメッシュでは、単純に広いためグラフィッカーの手がかかってしまう。また、高低差の多いマップのため、敵もジャンプや飛び降り操作などをどこでも行えるようにしたい、巨大な敵は多少の段差や障害物を無視して移動してほしい、といったような要望をクリアできない。そのため、ジャンプ・飛び降りようのエッジデータを生成するようにしたのだという。
さらに、巨大な敵については別途ナビメッシュを作成。普通のナビメッシュだと海へ落下したりと、敵として運用できないため、一部障害を障害として扱わないように無視して移動できるようにした。なお、メモリの問題もあり、通常の敵と巨大敵の2バリエーションのみ作成したという。
各種情報を情報地図と自動テストで可視化することに
ゲームマップを俯瞰するWebアプリ「情報地図」はCEDEC2021で発表されたため、興味がある人はそちらを見てほしいが、下記マップはリムグレイむ近くの配置物をマークしたものだ。クリックすることでワープしたり、様々なデータへの連携も可能となっている。
この情報地図と、毎朝自動で走らせる自動テストで、全プラットフォームの全マップの各種情報を収集させる。
主にパフォーマンスチェックやメモリチェックで、フレームレートか悪化している箇所がないか、メモリ使用量が危険域になっていないかなどを確認して、情報地図によって効率化。開発中は定期的に確認し、整備が必要な項目がないかを確認したり、調査のための情報を情報地図にて表示するのに使用していたという。
次は、依存関係データベースについて。開発中は、様々な用途でデータの依存関係を知りたいケースが発生する。例えば、このデータを変更するとマップにどのような影響が出てしまうか、このデータを使っているマップやキャラの存在の有無、ネットワークテスト版を作るにあたりネットワークテスト範囲で使用されているデータはなにか、これらを人力で調べるのは難しい。そこで、依存関係データベースを用意することとなった。
依存関係データベースとは、データの依存関係を解析してその結果をデータベースで管理しているツールで、指定のカットシーンやアセットのリストアップなどの確認、テクスチャ画像などが、必要に応じて検索できるようになっている。これによって、ローコスト化に成功した。
レガシーマップにおけるパーツ描画設定の自動生成にも少し触れよう。立体的なマップにおいて、何を描画するのかは最小限にしたいが、フロム・ソフトウェアでの仕組みはフラグリストを持たせて、描画するものだけをグラフィッカーが手動で設定して制御していた。
一方「ELDEN RING」では実際に描画した画像を撮影し、描画されている要素を収集。撮影箇所をナビメッシュから抽出し、撮影する方向を大量に用意。大量の撮影候補から集まった情報から描画グループを構築した。
「ELDEN RING」での要検討事例としては、ジャンプの導入により、マップ構造に立体感が増し、坑道可能範囲が増加し、アセットの導入により描画設定を行わなければならない要素数が爆発的に増加した。「ELDEN RING」でも描画設定の自動生成を行いたいという要望のため、「SEKIRO」チームで提案・開発された自動化の仕組みを「ELDEN RING」に移植し、コスト削減に成功した。
フロム・ソフトウェアならではの「設計職」とは?
最後に、フロム・ソフトウェア以外ではあまり見ないという設計職について簡単にスライドでの紹介をしておこう。
以上、駆け足となったが、「ELDEN RING」での広大なフィールドにどのような技が使われてきたのかを知るきっかけとなってもらえれば幸いだ。決して最新の新技術が使われているとかではないが、様々な既存の技術を使って、プレイヤーや広大なフィールドを駆け回りやすいよう、緻密な設計がされていることがわかるだろう。