アトラスが語る『真・女神転生V』の開発環境・エンジン設計事例紹介ー効率的なUE4での開発をどのように実現しているか【UNREAL FEST 2022】

2022.06.16
注目記事ゲームづくりの知識ルールをつくる見た目を良くするゲームの舞台裏講演レポート公開資料まとめUNREAL FEST 2022アンリアルエンジン
この記事をシェア!
Twitter Facebook LINE B!
Twitter Facebook LINE B!

Epic Games Japan主催のUnreal Engine大型勉強会「UNREAL FEST EXTREME 2022 SUMMER」が、2022年5月23日(月)から5月28日(土)までの日程で開催されました。4日目に行われた『「真・女神転生Ⅴ」における開発事例紹介』と題した講演では、効率的にゲーム開発をするにあたり、どのようにUnreal Engineの開発環境を整備・設計を行ったか、『真・女神転生Ⅴ』における株式会社アトラスでの開発事例が紹介されました。

TEXT / 田端 秀輝
EDIT / 神山 大輝

目次

真・女神転生V(以下、本作)』は、株式会社アトラスを代表するRPG、『真・女神転生』シリーズのNintendo Switch向け最新作です。敵キャラクターである悪魔と会話することで「仲魔」として行動を共にすることができるのが特徴のひとつであり、本作では200を超える悪魔が3Dモデルにて表現されています。

登壇したのは、本作のリードプログラマーを勤めた株式会社アトラスのチーフプログラマー小山田 佳樹氏

今回の講演では、アンリアルエンジン(以下、UE)での開発を検討している、あるいはプロジェクト開発が中盤より前である開発者を対象に、UEでの開発事例が紹介されました。処理負荷軽減のためにやるべきことから、組織での開発ならではの作業分担に至るまで多岐に渡る内容となっています。

なお、今回の事例紹介はUE4.23.1時点での内容になります。

開発環境について

最初に、UEで開発を行う際のスタッフの学習コスト、エンジンの保守コストについての説明がされました。

学習期間について、デザインオペレーターであれば数週間〜1ヶ月、コアスタッフであれば数ヶ月は必要となるとのこと。エンジンをプロジェクトにあわせて改造・最適化する場合は、アップデートを自分たちで行う必要があり、改造範囲が増大すればコストも増大していきます。無改造の場合も、エンジンのアップデートで仕様が変わることで、自分のプロジェクトに影響がでたり、SDKの対応具合が変わったりすることもあります。

次に、コストに関する注意を踏まえたうえで、UE4の開発環境をどう構築していったかが紹介されました。本作の開発環境は、メンバーの「時間の拘束」を最小限に留めることを目標として構築されました。具体的には、以下の項目をより効率よく使用できるようにしたとのことです。

本作のUE4開発環境は、アーティスト向けの配布用エンジン「InstalledBuildEngine」と、エンジニア向けの改造用エンジン「SourceBuildEngine」の2つがあります。

ビルド環境を必要としないアーティストは、Visual StudioなどのPCのツール環境に依存しないコンパイル済のエンジンを使用しています。取り回しが容易であるという利点がある一方で、エンジン側の修正が必要になった際、コード修正できないことが課題として挙げられました。

エンジニア向けエンジンは、エンジン自体の独自改造や拡張が可能です。しかし、修正を行う度にビルドが必要となるため、膨大なソースコードの管理とビルドコストがかかってしまうことが課題と説明されました。

開発時期によってもエンジンの使い方が異なり、研究期間ではEpic Games Launcher版で機能確認・検証を行い、開発初期では無改造のInstalledBuildを運用しています。無改造ゆえに、Unreal Developer Network(UDN)で質問がしやすく、エンジン設計のルールもここから徐々に作り始めています。

開発中期では、エンジンアップデートを行ったところトーンマッパの仕様変更で一部の色味が変わったなど既存の作業に影響が出ることがあったため、この時期から「デフォルト設定を変更する」「一部の処理の仕様を前のバージョンに戻す」などの小規模なエンジン改造を解禁するようになりました。

開発の後期では、エンジンへの直接修正も解禁しましたが、UE4のバージョンアップ時のアップデートコストを考え、はじめは影響範囲の小さなものから改造し、バージョンを固定させてからプロジェクトで使用しない機能のオミットやコードへの直接修正をしていったそうです。バージョンを固定する直前のSDKの更新はリスクがあるため、事前にSDKのバージョンも確認しておくことが肝心とのことです。

さらに開発を効率化させるために、ビルドやパッケージングにおいて以下のツールを使用しています。

  • コンパイルにはIncrediBuild
  • ライトビルド用にUnreal Swarmを使用
  • アーティスト向け環境へのプロジェクトソースコードのバイナリ更新のため、Jenkinsでビルドを実行

エディター上での作業を止めないように、自動作成されるパッケージでの実機確認のみとし、Launcher上での確認は非推奨に。プラットフォーム特有の問題などを確認したい時は、当該アセットだけエクスポートして、新しいプロジェクト内で作業する

エディターについて

エディタールール

『真・女神転生V』の開発現場でのエディタールールがいくつか紹介されました。

  • 命名規則については事前にある程度決定
  • マージできないバイナリファイルを多く扱うため、ソースコントロールは常に有効状態
  • 変更1つで環境が大きく変わるため、プロジェクト設定の変更は許可制
  • 作成者以外意図が分からない状況を避けるため、コリジョンプリセットはカスタム使用禁止。必ずプリセット化を行う
  • TESTや実験目的のデータは除外が簡単にできるようまとめる
  • 各アセットのUE4バージョンを表示するように変更
  • UE起動時の高速化のため、スタートアップレベルには一切アセットを設置しない

エディター拡張

プロジェクトを効率的に進めることを目的に、エンジンに影響のないエディター拡張は開発の初期から行われています。また、エディター拡張はデザイナーからの要望によるものが多かったとのこと。

拡張の際にエディターの環境設定-一般-未分類から「UIの拡張点の表示」をONにしておくと、各エディターの拡張用名称がわかるため、ソースコードから検索しやすくなる

Editor Utility Blueprintを用いることで、悪魔のスクリーンショットの作成、背景のプリセット変更などビューポート上での汎用操作の効率化が図れる

さらに、アニメーションビューワー上で指定カメラオフセットに切り替える機能を追加することで、アーティストがゲームをプレイしなくてもLOD調整やミップ確認ができるように、エンジン改造によるエディター拡張も行っています。

レベル構成について

本作では、パーシスタントレベルに含まれるサブレベルは、マップのロード設計のために全て非常駐扱いにしています。

ゲーム中の要素はレベル単位で行うように設計されており、イベント開始でイベントのサブレベルをロード、バトル開始でバトルのサブレベルをロード、施設に入ると施設のサブレベルをロードする、というようになっています。

講演では、パーシスタントレベルを空にするということが強調されました。これは、専用処理をパーシスタントレベルで行ってしまうと、サブレベルを他のパーシスタントレベルに接続させた際に動かなくなってしまい、レベルの流動性に問題が生じるからとのことです。

とあるマップでのレベル構成(担当者ごとにサブレベルを分けている)

デザイン設計について

全体的なデザイン設計

開発初期に行うべきこととして、キャラクター、背景、エフェクト、ポストプロセスライトなどのデザイン要素を1レベルにまとめ、製品としてどこまで持っていくかのビジュアルショーケースを作成することが挙げられました。

この作業によって、デザインのレギュレーションやGPUのバジェットなどが素早く決定できるとのこと。講演内では、ポストプロセスとライトといった全体に影響するものだけでも早めに決めた方がいいと強く勧めていました。

ディファードレンダリングを使用する場合、半透明処理をいれると処理負荷やビジュアル面で色々問題が起こる可能性があるとのこと。デフォルトで入っているポストエフェクトは、アンチエイリアシング以外を切った方が、「どの色が乗っているか」を効率よくチェックできる

マテリアル設計について、本作では、『マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD』を参考に、マテリアル大量増加を回避するためにマスターマテリアルと子・孫インスタンスでの管理を行っています。マスターマテリアルは「背景」「キャラ」「エフェクト」の3種類に分類されます。

テクスチャの差し替えや既存パラメーターの調整を主とするオペレーターにとって、マテリアルを詳しく理解する必要がないため、学習コスト・管理コスト面で優れている

ただし、マスターマテリアルで必要な機能が精査されていないと不要な機能を多数搭載することになり、描画負荷が発生する

マテリアルを最適化する場合、GPUプロファイルを行ってどこにネックがあるか確認する必要がある

モデルのデザイン設計

3DCGモデルについては、最初に本作で使用するモデルの頂点数・ボーン数の目安が紹介されました。『真・女神転生』シリーズは悪魔の活躍が見どころであるため、悪魔のモデルのボーン数はパフォーマンスの最大限まで許容されています。人間キャラクターは3万ポリゴン(300ボーン)、ボス悪魔は3万~4万ポリゴン(300~400ボーン)と、Switchタイトルであることを考えると非常にリッチな作りとなっています。

続いて、背景モデルが紹介されました。荒廃した東京を舞台にした超広域マップは、Unreal Engine上でおよそ「4km×4km」のサイズとなっており、他のゲームと比べると非常に大きいとのこと。マップの地形はランドスケープにて作成されており、木や岩などの自然物は、ゲーム的な演出がない限りフォリッジで配置されています。

ダンジョンについては、通路や曲がり角など構成要素がパーツに分解されアクター化されていて、ツールによって配置ができるようになっています。

高速化やメモリ軽減、調整のしやすさにつながるTIPSも紹介された

アニメーションのデザイン設計

本作には200種類を超える悪魔が登場しますが、特殊な形状を持ったものが多く、悪魔のモデルに対して単純なアニメーションリターゲットをかけてもうまくいかなかったとのこと。そのため、形状の特徴からベースとなる悪魔のテンプレートを作成し、そこから各悪魔モデルにセットアップを行いました。

首が8つある「龍王ヤマタノオロチ」や、豹の頭が胸部にある「堕天使フラロウス」など、悪魔の形状は多種多様です。そのため、悪魔テンプレートからリターゲットしても、実際の悪魔の形状にあわせて足、腰、目、踵、上体などのボーンを再設定し、細かいチューニングをする必要があります。

主人公の髪の物理挙動にはKawaiiPhysicsを採用。自然な物理挙動よりも広がる髪のシルエットを優先させるため、毛先に行くほど首のひねりを打ち消すロール回転をいれる改造をしている

ポストエフェクト、ライティングのデザイン設計

ポストプロセスについては、Epic Games Japanが制作したスライドをベストプラクティスとして参考にしたそうです。

LightMassについては、『UE4 Lightmass Deep Dive ポストモーテム』を参考にしています。講演で紹介された本作におけるライトの決め方は以下の通りです。

  1. デザインのイメージを固める
  2. ディレクショナルライトやスカイライトで方向性の8割を決める
  3. 露出で明るさを調整する
  4. ポイントライトスポットライトを適宜配置する
  5. 最後にハイライトやスフィアキャプチャーなどの微調整を行う

ポイントライトスポットライトありきの絵作りをすると、調整コストがかかってしまうので、本作では「松明や証明器具があるから」というような明確な理由が無ければ使用していない

デカールはStaticMeshのみにレンダリングされるようになっている。スライドに掲載されている「鬼女マーメイド」の水面の効果は、床にはレンダリングされるが、岩を含めたキャラクターにはレンダリングされない

UIのデザイン設計

UIテクスチャは基本的にオンメモリで実装しており、シーン遷移後でのみ使うショップなどの施設は都度呼び出しを行っています。

また、ウィジェットブループリント(WBP)でUI制御管理を行い、SpriteStudioでテクスチャとアニメーションの管理を行うことで、プログラマーとデザイナーの作業分割をしています。

後からUIを実装するというプロジェクトでも、処理負荷コストのバッファを取るべきとのこと

システム分析

ブループリントについて

本作の開発現場では、規約の多さによる動きづらさとスクリプトの良さを消してしまう可能性を考慮して、細かなブループリント規約は作りませんでした。

C++で書くべきかブループリントで作るべきかの問いについては、CPUプロファイルの結果改善の余地があるものはC++化を検討する流れにしたということでした。特に大量のループ処理をするものについてはC++化したほうがよい傾向にあったようです。

プログラマーのコスト低減や作業の高速化のため、プログラマー以外(スクリプターなど)にブループリントを扱える作業者を増やした

BiginPlayとTickは、実行順がどうなるか分からない状況では使用しないほうが安全である

ブループリントの基底クラスはC++化を行い、共通処理を行うオブジェクトはなるべくインターフェース化してスリムにした。本作では、3割がC++で、7割がブループリント。コア部分はほぼC++で、ゲームロジック部分はほぼブループリントで作成された

アセットのリファレンスに関する注意として、ハードリファレンスとソフトリファレンスの違い、リファレンスのメンテナンスの解説がありました。

また、プロジェクト内のアセットを使ってマップデザイン、ゲームデザイン、進行ブループリントが作成できる、レベルデザイナーの育成の重要性もあげられました。

おまけ

講演の最後に、『真・女神転生V』の開発中に得られたUE上級者向けのTIPSが紹介されました。

  • Asset Localizationを用いたローカライズ
  • プラットフォーム向けパッケージ化時の注意
  • リフレクションキャプチャビルド、ライトビルドのワーニング
  • パッチ作成
  • Profile Guided Optimization(PGO)によるCPUコスト削減を行うタイミング
  • ステンシルテスト
  • テクスチャ周りのメモリ状況
  • RPGにおけるガベージコレクション(GC)について

『真・女神転生V』の開発における経験からつくられた数多くのTIPSを紹介した小山田氏は「多くの方の情報提供を頂いた結果、今日の開発に繋がっています。UEでの開発において情報収集はとても大事です」と、今回の講演を締めました。なお、講演では本記事で記載しきれなかったTIPSがいくつか紹介されています。さらに詳細な内容についてはぜひ公式アーカイブをご確認ください。

真・女神転生V 公式サイトUnreal Engine JP 公式YouTubeチャンネル

©ATLUS ©SEGA All rights reserved.

田端 秀輝

「ゲームと社会をごちゃまぜにして楽しんじゃえ」がモットーの、フリーのコンテンツ開発者。節電ゲーム「#denkimeter」やVRコンテンツ、体験型エンタメの開発をしています。モニター画面の中だけで完結しないゲーム体験が好きで、ここ十数年注目しているのはアイドルマスターです。

関連記事

UE5.5の新機能「Mutable」向け公式サンプル『Mutable Sample』、Fabで無料公開。キャラクターの見た目をリアルタイムで変更できる機能について学べる
2024.11.28
UE公式の大型イベント「UNREAL FEST 2024 TOKYO」の講演アーカイブ動画・スライド資料が公開
2024.11.15
Unreal Engine 5.5がリリース。Selectノードなしで複雑な選択ロジックを作れる「Chooser」正式導入のほか、Navmesh間を橋渡しするNavLinkの自動生成機能が追加
2024.11.13
プレイヤーの動きによって波立つ水面をNiagaraで実装。ホラーゲーム『Still Wakes the Deep』開発者による水の表現手法を解説する記事が、UE公式ブログにて公開
2024.11.11
「UNREAL FEST 2024 TOKYO」最速フォトレポート。約2,000人のUE5ユーザーが集ったリアル会場の雰囲気を写真でお届け
2024.11.02
UE・Unity・GodotをサポートするIDE「Rider」が「WebStorm」とともに非商用に限り無料で使用可能に
2024.10.25

注目記事ランキング

2024.11.27 - 2024.12.04
VIEW MORE

連載・特集ピックアップ

イベントカレンダー

VIEW MORE

今日の用語

ローパスフィルター(Low-Pass Filter)
ローパスフィルター
  1. 電気信号のうち、指定した周波数(カットオフ周波数)以下の信号を通し、それより上を大きく低減させるフィルター。
  2. ゲーム開発において、基本的にはサウンド用語として用いられる。例として、特定のセリフをローパスフィルターによってくぐもった音に加工することで、隣の部屋や遮蔽物の後ろで話しているかのような表現を行うことができる。
VIEW MORE

Xで最新情報をチェック!