エピック ゲームズ ジャパンが主催するUnreal Engine(以下、UE)の公式イベント「UNREAL FEST 2023 TOKYO」が、6月2日(金)・3日(土)の2日間にわたってベルサール秋葉原(東京・秋葉原)で開催された。
本記事では6月2日(金)に行われた大型勉強会「Unreal Showcases」の中から、セガの講演「『龍が如く 維新! 極(きわみ)』開発事例:内製エンジンからの移植とUE4活用」の模様を一部レポートする。
関連記事
・活用プロセスの変革で新たな価値をつくり上げる。東急建設がTwinmotionを活用した東京メトロ銀座線渋谷駅移設プロジェクト〜UNREAL FEST 2023 TOKYO(1)
イベント概要
UNREAL FEST 2023 TOKYO
日時:6月2日(金)~3日(土)
場所:ベルサール秋葉原
unrealengine.jp/unrealfest/2023
全9言語への対応や同一プラットフォーム上での映像の高品質化など、様々な課題にUEで挑む
「『龍が如く 維新! 極』開発事例:内製エンジンからの移植とUE4活用」には、本作のリードプログラマを務めた加藤達也氏と松田 剛氏、テクニカルアーティストの伊地知正治氏が登壇。2023年2月に世界同時リリースされたばかりの『龍が如く 維新! 極』について、開発で得られた知見を披露した。
『龍が如く 維新! 極』は2014年に発売された『龍が如く 維新!』を刷新し、全9言語に対応したリメイク作品である。オリジナル版は内製のゲームエンジンを用いていたが、リメイク版ではUnreal Engine 4.27 Plusを採用。龍が如くスタジオにとってもUEでの開発は初めての経験だった。
プラットフォームはPlayStation 5/PS4/Xbox Series X|S/Xbox One/Windows/Steamに対応。オリジナル版はPS4/PS3の2機種対応だったため、PS4の場合は同一プラットフォームでのリメイクという、かなり特殊な事例に挑むことになった。これはリメイク版は海外ファンからのリクエストを受けて制作が始まったため、当初は日本での発売を想定していなかったという背景に起因する。
しかし開発途中で「『龍が如く』は日本で盛り上がってこそ」という意見が社内から出て、日本でのリリースが決定。そのためすでにプレイ済みの国内ユーザーに向けて新たな要素を追加するなど、仕様面でのアップデートが求められた。また同一プラットフォームゆえに簡単に比較できてしまうため、より高品質な映像を追求するといった技術面でのアップデートもしなければならなかった。
そのチャレンジにおいてUEを採用した決め手について、加藤氏は「『維新』の舞台である1860年代を最も綺麗に表現できるエンジンだと判断したためです」とコメント。自然光を綺麗に表現できる物理ベースレンダリングに強みがあり、「UEで初めてカットシーンを動かしたときに、このエンジンならいけると確信しました」と制作をふり返った。
なお開発環境は、PCスペックがCPU・Intel Core i9-10940X(14C/28TH)、GPU・GeForce RTX 3060、メモリ・64GB、SSD・2TB、バージョン管理ツールはTortoiseSVN、ツール・ミドルウェアはIncredibuildを使用した。
龍が如くスタジオはバグ修正を行うQA(Quality Assurance)エンジニアリング技術に定評があり、本作では『龍が如く』シリーズで使われているドラゴンエンジンから「全自動バグ取りシステム」をUEに移植した。
さらにスタジオの全プロジェクトをサポートするQuality Engineering Teamを結成し、UEでの開発環境をサポート。これによって自動バグ報告、クラッシュレポート、自動テスト、ログ分析を容易に行えるようになった。
バグ報告システムは開発版のみ、クラッシュレポーターをUE標準から独自のツールに置き換えた。クラッシュした瞬間のスクリーンショットを撮影し、パッケージのバージョンやプレイヤーの位置、どのシナリオで発生したのかといった情報を添付する機能を備え、プロジェクト管理システム・Redmineのチケットを1クリックで作成できる便利なツールである。
最終的に自動テストの稼働数はピーク時で316台、総稼動時間は45万時間、エラー検知数は4万5千件に上り、作業の効率化に貢献した。
オリジナル版からリメイク版への移植は要素ごとに臨機応変に進めていった。例えば多言語対応に関しては、テキストの一部はCSVやExcel、XMLなどのファイルで外部データ化されていたものの、独自バイナリーやスクリプト、ソースコードなどに分散していたという問題があった。これはオリジナル版は日本語のみのためローカライズを意識せず、開発スピードを重要視していたためだ。
そこでテキストを一元管理し、UEのローカライゼーション機能を活用することになった。テキストを内製ツールのデータベースに集約し、テキストが埋め込まれていた箇所をラベル(key)に置換。UEが対応しているPortable Objectファイル形式で出力した。
アニメーションやカットシーンなどのデータに関してはUEにコンバートしたが、イベントスクリプトは各種機能が200種類以上あり、UEの機能に1つ1つ置き換えるのはコストが大きいと判断された。独自形式のまま使用するため、データのロード処理をアプリに移植し、ロード後にUEで扱えるように値を補正した。
この方法のデメリットはUEのエディタで編集できない点にあり、スクリプトはオリジナル版の編集環境を復活させて対応することになった。
上記のイベントスクリプトのように、UEの機能に置き換えるのが難しかったり、コストがかかったりするものは、オリジナル版からプログラムソースコードをそのまま移植する方針を立てた。UEと内製エンジンのプログラミング言語がどちらもC++だったことが幸いしたかたちだ。
しかしソースコードの移植にあたっては複数の問題が発生した。まずUEと内製エンジンで座標系や長さの単位が異なることに由来するバグが生じた。これらのバグはクラッシュしないため、実際にその絵を出して目視で確認する必要があった。
対応には変換マクロを用いたが、全ての箇所をマクロで置き換えたパートと、UEとの受け渡しの箇所だけを書き換えたパートが混在してしまうという混乱も起きてしまった。
加藤氏はプロジェクトの方針を定めずに各自の裁量に任せたため、どちらでつくられたのかが不明瞭となってしまったことを反省点に挙げた。値だけではUEに変換したものかどうかがわからないため、変換済みのものを再度変換してしまうといったミスも生じたという。
さらにUEのC++は独特な記述方法だったためオリジナル版のソースコードをそのまま流用できなかったこと、オリジナル版のソースコードはShift_JIS、UEのソースコードはUTF8、UEのAPIはUTF16で計3種の文字コードが混在していた点などが、移植にあたって苦労が多い要素だった。
プロップに関してはオリジナル版では内製ツールで管理・制御していたものを、UE上で使えるようにスタティックメッシュ、スケルタルメッシュへ変換。イベントスクリプトと同じ独自形式のデータではあるが、データをそのまま使っていないところがポイントとなっている。
プロップはステージに配置したり、キャラクターにバインドしたり、エフェクトが再生されたりと、影響範囲が多岐に渡るため、他のデザインデータと同じフローに乗せる必要がある。そこで独自形式のファイルを一般的なFBXに変換してインポートし、UE上のエディタで扱えるようにした。
物理形状の移植はUEの自動生成機能を利用。ほとんどのプロップが問題なく動作し、加藤氏は自動生成機能の優秀さを実感したそうだ。
グラフィックスの高品質化は基本的にはリソースを追加する方針であり、オリジナル版のテクスチャを高解像度化してマルチマップも加えた。オリジナル版と比較すると血液の液体表現や人物の透明感、刀や着物の質感などが大きく向上している。
プラットフォーム間の差に関しては同一リソースのまま解消するため、UEの機能でテクスチャサイズを変更。レンダリング設定とシェーダの切り替えで吸収した。たとえばハイエンドプラットフォームでは肌の表現にBurley Subsurface Scatteringを用いたが、ローエンドの場合は通常のSubsurface Scatteringに留めるような処理を行った。
松田氏は『龍が如く 維新! 極』の開発を通じて、「今回のケースでは様々な工夫が必要でしたが、Unreal Engineの強力な機能とリソースを有効活用することで極クオリティを達成いたしました」と仕上がりに自信を見せた。
講演ではそのほかに、伊地知氏がNiagaraを用いたエフェクト制作についてのテクニックを紹介するなど、幅広い分野についてのノウハウが明かされる貴重な内容となった。
TEXT_高橋克則 / Katsunori Takahashi
EDIT_山田桃子 / Momoko Yamada