エピック ゲームズ ジャパンが主催するUnreal Engine(以下、UE)の公式イベント「UNREAL FEST 2023 TOKYO」が、6月2日(金)・3日(土)の2日間にわたってベルサール秋葉原(東京・秋葉原)で開催された。

本記事では6月2日に行われた大型勉強会「Unreal Showcases」の中から、株式会社トーセの講演「クライシス コア -ファイナルファンタジーVII- リユニオン開発における心得と制作手法」の模様を一部レポートする。

記事の目次

    関連記事

    活用プロセスの変革で新たな価値をつくり上げる。東急建設がTwinmotionを活用した東京メトロ銀座線渋谷駅移設プロジェクト〜UNREAL FEST 2023 TOKYO(1)
    内製エンジンからUE4への移植に挑んだ『龍が如く 維新! 極』開発事例 〜UNREAL FEST 2023 TOKYO(2)
    ゲーム開発時に経験した「しくじり」を、UE開発者向けに解説 〜UNREAL FEST 2023 TOKYO(3)
    Unreal Engineをハブとしてアイデアを結集した、SUBARUの走行デザインレビューシステム〜UNREAL FEST 2023 TOKYO (4)
    特徴的なグラフィックでインディーゲームをつくるクリエイター4名に聞く、画づくりの秘訣 〜UNREAL FEST 2023 TOKYO(5)
    作品内の街全体をUEで創る漫画家・浅野いにお氏に聞く「Unreal Engine to 漫画」 〜UNREAL FEST 2023 TOKYO(6)

    イベント概要

    UNREAL FEST 2023 TOKYO

    日時:6月2日(金)~3日(土)
    場所:ベルサール秋葉原
    unrealengine.jp/unrealfest/2023

    UEを用いてPSP専用ゲームをリマスター

    講演「クライシス コア -ファイナルファンタジーVII- リユニオン開発における心得と制作手法」には株式会社トーセよりシニアアーティストの浅野剛士氏、シニアアーティスト兼ゲームディレクターの江見勝也氏、プログラムディレクターの山口晴之氏が登壇した。

    『クライシス コア -ファイナルファンタジーVII- リユニオン』は2022年12月にリリースされたアクションRPG。2007年発売のPSP専用タイトル『クライシス コア -ファイナルファンタジーVII-』をHDリマスターし、グラフィックやシステムをはじめとする数々の要素を一新した作品である。

    クライシス コア-ファイナルファンタジーVII- リユニオン
    www.jp.square-enix.com/ccffvii_reunion
    © SQUARE ENIX
    CHARACTER DESIGN: TETSUYA NOMURA

    約15年前のタイトルを現代に蘇らせるにあたって、まずは開発スタッフで原作をプレイして意見を収集した。開発期間が限られていたため、どこに力を割くべきなのかを明確にし、全員が同じ意識を共有してプロジェクトを進めていったという。

    開発に際しては、オリジナル版の再現度を重視する方針が立てられた。原作は全世界250万本を売り上げた多くのファンから愛されているタイトルであり、ユーザー体験を大きく変えないことを目指したためだ。

    また原作の処理をベースに実装すれば、開発コストを抑えられるというメリットもあった。操作性を向上させる新規要素については、効率良く開発できるUE4を採用した。

    PSPの処理をUE上でそのまま再現できるよう、原作のプログラムを完全移植。一般的なリマスターの開発では、原作の描画処理をエミュレートする場合が多いが、本作ではUEの描画システムに置き換えて、UEのエディタ機能を用いている。山口氏は「イメージとしてはUEをゲームエンジンではなく、グラフィックエンジンとして使用する感じです」と解説した。

    ▲開発フローは「移植フェイズ」と「新規実装・調整フェイズ」の2段階
    ▲「移植フェイズ」はプログラマーのみの作業となり、先行して対応した

    「原作プログラムの移植」では、PSPの処理がUE上で動くようにプログラムを修正する必要があった。PSPとUEのプログラム言語はどちらもC++だが、PSPのプログラムには固有の処理が含まれていたり、コンパイラが異なるため、ソースコードをそのまま移してもビルドエラーが出てしまうからだ。

    UEの環境に直接移行させると大量のエラーが生じるため、Windowsのコンソールアプリにいったん移植し、問題ないことを確認してからUEに移植した。この作業はUEでC++が使えることもあって、想像していたよりも容易に進められたそうだ。

    山口氏は「過去のタイトルの多くはC++でつくられているので、移植開発においてUEを使用する選択肢は大いにあると感じました」と、UEが過去作の移植開発にも有用だという実感を伝えた。

    ▲移植の作業内容。PSPは32bit環境、UEは64bit環境。ビルドエラーの修正と64bit対応の修正を同時に行うと難度が上がるため、先に32bit環境で作業した。右のウィンドウではログだけの状態だが冒頭シーンのメッセージが表示されており、PSPの処理が動いていることが確認できる。ちなみにこの状態でもログを見ながらバトルをプレイ可能

    「UEの描画システムへの変更」は、原作のパラメータをUEに渡すという方法をとった。最初に原作のモデルやモーションのバイナリファイルを、3Dモデルの汎用フォーマットであるFBXファイルに変換。UEのアセットとして登録した。

    次に原作のモデルなどのリソースを読み込み、関数内で対応するアセットを読み込んでハンドルを受け取る。一例として「CreateChar」は原作プログラムのキャラクター生成関数で、モデルIDをUEに渡すことでモデルアセットがロードされ、その結果としてハンドルを受け取って、原作プログラム側で保持する。

    最後にハンドルを介してアセットにパラメータを設定する。例えば「SetPosition」が座標設定関数、「SetMotion」がモーション設定関数となり、それぞれ座標とモーションIDをUEに渡して、アセットのパラメータを変更している。

    ▲UEの描画システムへ変更することで、ログしか表示されなかったウィンドウにモデルが表示されるようになった。これはPSPモデルをアセット化したもので、原作のプログラムによって制御されている。移植が完了しているため、この状態でエンディングまでプレイできる
    ▲続く新規実装・調整フェイズで、PSPモデルを新たなアセットに差し替えた。ビジュアルは大きく向上したものの、想定したクオリティには達しなかったため、カット単位でブラッシュアップを施すことに

    原作をより美しく、より遊びやすくするテクニック

    本作では新規実装や調整が数多く行われたが、講演ではイベントシーンとバトルシーンに絞って紹介された。イベントシーンでは、シーケンサーでライティングやエフェクトなどを調整できるようにした。スクリプトは原作のものを利用してキャラクターの制御やセリフの設定を行い、シーケンサーと同時に再生するしくみとなっている。

    ▲シーケンサーによるイベントシーンの調整
    ▲イベントの尺はスクリプト側で管理し、基本的にシーケンサーと同じ尺にした。しかしキー入力処理が入るイベントの場合は、スクリプトはキー入力待ちで止まるが、シーケンサーは止まらずに先に終わってしまう。その場合はシーケンサーの最終フレームを維持することで対処した
    ▲シーケンサーで調整するとはいえ、イベントはスクリプトで動いているのでシーケンスデータは存在しない。そこでスクリプトからシーケンサーのトラックを生成するツールを作成した

    さらに、スクリプトでも簡易的にイベントを調整できる機能を用意した。ただスクリプトは修正後に変換して再読込する必要があり、シーケンサーのようにイベントを確認しながらの調整はできない。そのためエディタで画面を見ながら、詳細パネルで編集した値をスクリプトのパラメータとして出力するツールを作成した。

    ▲スクリプトによるイベントの調整も可能となった
    ▲ライトを選択して各種調整を行うと、左のキャラクターの画面が変化する。ファイル出力ボタンを押すと、JSONファイルとして出力され、スクリプトからカット単位で参照される
    ▲左が調整前、右がシーケンサーやスクリプトでの調整後。ライティングやポストプロセス、エフェクトなどが追加され、グラフィックが向上している

    バトルシーンにおいても原作からの変更点が多数存在する。例をあげると、リマスター版ではユーザーが自由にカメラを動かせるようになった。他にも、背景データは原作のものを流用したが、背景が狭かったためエリアを広く見せる補正などが行われている。

    ▲カメラを制御するパラメータをデータテーブル化した。映っているのは代表的なパラメータや制御点の一部
    ▲バトルがしやすい環境をつくるためにパラメータ設定をプリセット化して、シチュエーションに合わせて呼び出した。画像はボス戦のレイアウト。全身が画面内に収まるように距離やアングルを変えたカメラのデフォルトプリセットを用意し、呼び分けている

    キャラクターのアクションについては、通常攻撃、アビリティ、魔法などがスムーズに繋がって一連のコンボに見えるように、モーションや遷移処理を強化した。アクションゲームとして原作以上に操作感を向上することが目指されている。

    • ▲アクションをスムーズに繋げるために、モーションデータをアセット化。スクリプトで制御されていた機能を通知に置き換えて、エディタで微調整を加えた
    • ▲実際に使用した通知機能の一部

    シェーダアニメーションに関しては、全身を光らせるなどの処理によってバフ・デバフ効果がかかっていることをわかりやすくした。特に本作はゲームシステム上、バフ効果が自動でかかる場面が多い。

    江見氏は「バトル中であってもバフ効果の恩恵を受けていることがしっかりと認識でき、かつプレイを阻害しないように注意して実装しました」と注意点を語った。

    • ▲シェーダ表現はFlow、Line、Ringの3種類を用意
    • Flow、Line、RingにRIM、Flicker、Flip、MultiColorを組み合わせ、パラメータを調整して表現をつくった

    これらのシェーダアニメーションはアニメーションシーケンスのカーブエディタを用いて、全てのマテリアルパラメータを直接制御できるようにエンジンを改造した。

    アニメーションシーケンスのカーブエディタ

    理由としては、プレイ イン エディタ(PIE)を介さずに、リアルタイムでシェーダアニメーションの調整・確認をしたかったことと、作成した表現を他のキャラでも流用したかったことの2つを挙げた。

    エンジンを改造したのは、もともとの機能ではColor値を操作できなかったからだ。改造によってカーブでの操作が可能になった。最終的には加算アニメーションによって他キャラクターに適用し、異なる骨構造のキャラクターにも同じ表現を施せるようになった。

    最後はキャラクターアニメーションの制御について紹介された。本作ではアニメーションBPを用いずに、原作のしくみで実装している。その最大の理由は、原作のアニメーション制御をそのまま再現したかったからだ。

    原作処理の中にはアニメーションに関する様々な制御がなされていたため、開発初期にはアニメーションBPで再現することによる時間やコストが予想できなかったという。また社内の別プロジェクトではアニメーションBPを中心に開発していたが、手動マージやCookに時間がかかっていたため、作業が短縮できるのではないか、という副次的な期待もあった。

    デメリットとしては、UEを用いないためにイテレーションが低下してトライ&エラーに時間がかかること、アニメーションノードの繋げ方を全てプログラムで書く必要があり、煩雑なソースコードになってしまったことを挙げた。

    トライ&エラーの問題については、最初にアニメーションBPで構成し、実装時にC++にすることで回避し、ソースコードについては、細やかにコメントを書くことで可読性を上げるという方法で対処した。

    講演ではそのほかにも、エフェクトのOverDrawや髪の毛のチラつきの対策、全プラットフォームでグラフィックの印象を統一する方法など、幅広い話題が飛び出した。

    講演の後に行われた質疑応答では「キャラクターモデルのデータは原作からどれくらい流用していたのでしょうか?」という質問があった。浅野氏は骨構造に関してはほぼそのまま流用しており、指などボーンがなかったものに関しては追加した、とコメント。特に驚いたのは、原作のフェイシャルデータが現在でも実用に耐えうるレベルだったことだと明かした。

    「フェイシャルは最近のタイトルに比べるとボーン数はかなり少なめです。PSPのデータなので骨もかなりテクニカルな入れ方になっていますが、そのまま使っても違和感がありませんでした。それだけ原作のフェイシャルモーションの質が高かったのだなと感じました」とふり返った。

    UEを活用したリマスター事例について解説した同講演。原作リソースの活用や移植手法の具体例のほか、UEを活用したシーンの制作事例など、実践的な内容が多く紹介された。

    講演動画

    講演資料

    TEXT_高橋克則 / Katsunori Takahashi
    EDIT_山田桃子 / Momoko Yamada