Proton上のFINAL FANTASY XIII三部作の動作

Last modified: 2021-09-13

要約すると以下のようになる。

  • 全作品エンディングまでプレイ可能
  • いずれの作品においても、フレームレート急低下が頻繁に起きる場合はasync対応のDXVKを推奨
  • FF13はFF13Fixを使うと快適になる
  • FF13-2はFF13Fixである程度快適にはなるが、それでも重く、高いスペックが要求される
  • LRFF13は元から前の2作品と比べて快適だがFF13Fixは効果なし

少なくともFF13とFF13-2の2作品は、Steamのユーザが所在するリージョンによって異なる版(日本在住であればアジア版)となっており、データファイル群の中身(収録ボイスやテーマソングなどを含む)が異なるが、実行ファイル部分は共通しているようで、作者がアジア以外のリージョンで開発しているFF13Fixは(手元の環境で)アジア版でも問題なく動作している。
全ての言語を1つの版に収録せずにリージョンによって版が異なる理由として、テーマソングなどの権利関係もあるのかもしれない。

動作確認に使用したハードウェア環境

  • CPU: AMD Athlon 220GE (Zen 1世代, 2C4T 3.4GHz)
  • GPU: AMD Radeon Vega 3 (Raven Ridge世代内蔵GPU)
    • DDR4-2400 4GiBx2枚 (APU自体は2666までの対応なので本来の性能が出しきれていないが、元々の性能も高くはない)
    • VRAMは768MiBまたは1GiBの割り当て設定
      • VRAM割り当て量を2GiB以上にしても、後述の画質設定においてはフレームレート向上につながっていない結果となったため、システムメモリの容量とのバランスを考えて無意味に増やしすぎないようにした

FINAL FANTASY XIII (292120)

  • Protonを使用してエンディングまで動作を確認済み
    • 実績についてはクリア後を想定したものが幾つも未解除(未取得)の状態になっている
  • FF13Fixを使用することでフレームレートが劇的に改善
    • [Steam Library]/steamapps/common/FINAL FANTASY XIII/white_data/prog/win/bin/内にFF13Fixのd3d9.dllFF13Fix.iniをコピー
    • 同ディレクトリのffxiiiimg.exeuntouched.exeの名前でコピー
    • GE版Protonに含まれるDXVK(async対応)のdist/lib/wine/dxvk/d3d9.dllを同ディレクトリ内にdxvk.dllの名前でコピー
      • DXVK_ASYNC=1 %command%として実行することで非同期処理を有効化
        • フレームレート低下軽減の代償として一部オブジェクトの描画の遅延が発生することを一部イベントシーンにて確認
  • 全体として見ると、ゲームとしてプレイに大きな支障が出るようなパフォーマンス上の問題はなく、なおかつ体感的には8-9割以上の時間は以前PS3版をプレイしたときよりも滑らかに動いた

DXVKのバージョン1.9で修正された不具合の一覧に本作品のNVIDIA GPU使用時のエフェクト処理に関する描画不具合が含まれているため、NVIDIAの場合はDXVKのバージョン1.9以上を推奨する。

画質設定

ハードウェア環境がローエンドのため、ランチャから指定できる最も軽い設定での動作を確認した。

  • 画面解像度: 1280x720
  • 影の解像度: 512x512
  • アンチエイリアシング: x2

ソフトウェア環境

  • OS: Ubuntu 20.10, 21.04 (LXQt上で実行)
  • Proton: 5.13, 6.1-GE-2, 6.3など
    • GE版はランチャが起動しなかったり日本語部分が文字化けしたりした
    • 公式のProtonにGE版のasync版DXVKを組み合わせて使用
      • CPUとGPUのスペックが十分にあればasync版を使用せずに十分快適にプレイ可能と思われる
  • DXVK: 2021年4月時点の最新バージョンのasync版
  • Mesa: 21.0.x系, 21.1.x系, 21.2.x系
  • AMDVLK: 2021.Q2.2, 2021.Q3.6
  • FF13Fix: 1.6.4

動作詳細

マップ内移動シーン

  • 移動中にフレームレートが極端に落ち込む(手元のハードウェアではひどいときに10fps程度まで下がる)ことがところどころであり、特定の場所を通る時に落ち込みが発生するところもあった
    • 移動中のフレームレート落ち込み全てが該当するかどうかは不明
  • 序盤は地形がシンプルなので、ある程度進んだところで遅くなると予想していたが、第3章から後も十分に軽く、手元のハードウェアでは最後まで快適にプレイ可能
  • 第8章の前半は人の密度が高いところがあり、他の場所よりはフレームレートが低い印象
    • 特に開始直後

イベントシーン

  • ムービー(動画ファイル)が再生されていると思われる部分については問題なし
    • 画面の動き(30fpsで固定されているような動きでSteamオーバーレイ上のフレームレート表示が60fps)やキャラクターの描画(低画質設定の場合に区別しやすい)、ディスク読み込みの状況などからムービーの再生で作られているシーンは結構分かる
  • 動画ではないイベントシーンの全てが完全に滑らかだったかは記憶がはっきりしていないが、基本的にはスムーズに動いていた

戦闘

  • 基本的には処理が重いときを除いて45-60fpsが出る
    • 終盤のボス戦などで、一部の攻撃エフェクトによって一時的に手元のハードウェアでは20-30fps台にまで落ちることがあるが、エフェクトが消えればすぐ高いフレームレートに戻る上にカクつきを体感するレベルではないため、支障はない
  • 第7章最後のボス戦や第13章の敵数体との雑魚戦闘などでフレームレートが長時間低めになることがあった(手元のハードウェアで30fps台)が重さを感じるレベルではない
  • 戦闘シーンに切り替わった直後にカクつきが少しだけ出る
    • ポーズ画面からのイベントスキップ操作後にイベント戦闘に入ると、手元のハードウェアでは戦闘画面に切り替わった直後に少しだけカクつく

成長システム(クリスタリウム)

  • 中盤までは非常に滑らかな表示
  • 終盤になると表示階層によっては手元のハードウェアで30fps台ぐらいにまでフレームレートが下がるが、急激に落ち込むことはない

他のメニューなど

  • クリスタリウム以外のメニュー項目の表示には動作上の問題もパフォーマンス的な問題もない
  • FF13Fix(1.5/1.6系固有と思われるが古いバージョンは未テスト)の副作用でセーブデータ選択後のロード画面ではフレームレートが低めに表示される場面があるが、ゲーム開始後には快適に動くので、プレイの上では問題はない

FINAL FANTASY XIII-2 (292140)

  • Protonを使用して全実績の解除(取得)まで動作を確認
    • クリア後に解除されるDLC部分は一部のみ確認済み
  • FF13Fixを使用することでフレームレートがある程度改善
    • [Steam Library]/steamapps/common/FINAL FANTASY XIII-2/alba_data/prog/win/bin/内にFF13Fix 1.4.6のdinput8.dllFF13Fix.iniをコピーし、winecfgdinput8のDLLオーバーライド設定(ネイティブ版を優先する設定)を追加
      • winecfgSTEAM_COMPAT_DATA_PATH=/path/to/steam_library/steamapps/compatdata/292140 STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam_installation /path/to/Proton\ X.Y/proton run winecfgの形で実行
    • GE版Protonのdist/lib/wine/dxvk/d3d9.dllを同ディレクトリ内にd3d9.dllの名前でコピー
      • DXVK_ASYNC=1 %command%により非同期処理を有効化
    • FF13Fix 1.5/1.6系を使用した場合、副作用として、タイトル画面やヒストリアクロス(Historia Crux)画面および各マップ選択後の読み込み時にフレームレートが非常に低くなって読み込み時間も長くなってしまうため、1.4系を推奨
  • ゲームとして遊べなくはないのだが、最低画質でも全体的にフレームレートが前作と比べて明らかに低く、1280x720では秒単位で固まることも起きる
    • 人が多数配置されているマップが前作より増えている関係で前作よりも負荷自体も高いと思われるが、戦闘シーンのフレームレートまでも前作から大きく低下しており、何か重くなっている原因があるのかもしれない
  • 現状では手元のハードウェアではスペック的に微妙な印象(快適とは言えない)
    • ffxiii2img.exe-Width=960 -Height=540 -Shadow=512 -MSAA=0オプションを付け、ランチャで指定可能な最低画質よりも更に少し画質(画面サイズとアンチエイリアシングの設定)を下げて実行するようにしたところ、重さはやや改善されて、一部シーンを除いて一応遊べる印象にはなった
  • 頻繁ではないが、突然ゲームが落ちる現象を複数回(全実績解除までの間に合計4-5回程度)確認
    • 場面によっては自動で既存のセーブデータが上書きされるため、データが破損する可能性はゼロではない
    • 1つのセーブデータだけで進めていくよりは、なるべく2つ以上のデータに対して切り替えながらセーブしていったほうが、万が一データが破損したときのための備えになるかもしれない
      • ただし本作のセーブデータはサイズが大きく書き込み時間が長いという問題もある

画質設定

前作と同じ、ランチャから指定可能な最低画質。

  • 画面解像度: 1280x720
  • 影の解像度: 512x512
  • アンチエイリアシング: x2

EPISODE 2のクリアから先は以下に相当するオプションを指定してprotonコマンドで実行する形にした。

  • 画面解像度: 960x540
  • 影の解像度: 512x512
  • アンチエイリアシング: 無効

ソフトウェア環境

  • Proton 5.13, 6.1-GE-2, 6.3など
    • GE版はランチャが起動しなかったり文字化けしたりした
    • 公式のProtonにGE版のasync版DXVKを組み合わせて使用
      • CPUとGPUのスペックが十分にあればasync版を使用せずに快適にプレイ可能かもしれない(滑らかに動いている動画は見つかる)
  • async版DXVK 2021年4-5月時点の最新バージョン
  • Mesa: 21.0.x系, 21.1.x系, 21.2.x系
  • AMDVLK: 2021.Q2.2, 2021.Q3.6
  • FF13Fix: 1.4.6, 1.6.4

動作詳細

マップ内移動シーン

  • 手元のハードウェアでは、ランチャから指定可能な最低画質で実行した際にEPISODE 2の舞台(雨天時)において15-35fpsの範囲(概ね20-35fpsの範囲内)で推移
    • 他の場所でも天候エフェクトがかかるところがあるが、雪よりも雨が重い印象
  • EPISODE 2,4のマップは特に重い印象があり、いずれも移動は快適とは言えない
    • これらのマップでは人の数も多く、負荷が高い原因となっている可能性がある
  • ごく一部の狭いシンプルなマップは滑らかに動く

イベントシーン

  • オープニングイベントは全体的に重め
  • 二人の主役を操作するパートからはイベントシーンで重いということは多くない
  • セーブデータロード時のダイジェスト映像は30fps固定で滑らかに動くが、これはムービーと思われる

戦闘

  • オープニングイベントの戦闘は負荷が高く重め
  • EPISODE 2の雨天時の雑魚戦闘で、手元の環境では低いときに20fps台となって明らかにカクカクした動作と感じる
  • 最終ダンジョンの一部の雑魚戦闘(機械系の小さな敵が多めに出るパターン)では、特に継続してフレームレートが低めとなった
  • 戦闘終了後の画面は滑らか

成長システム(クリスタリウム)

  • クリスタリウム画面は非常に滑らかに動作する

他のメニューなど

  • 敵や仲間モンスターなどが表示される一部のメニュー項目では最大フレームレートが30fpsとなっている
    • プログラム側の仕様の可能性もある

LIGHTNING RETURNS FINAL FANTASY XIII (345350)

  • 1周目NORMAL MODE(14日間),2周目HARD MODE(14日間)でエンディングまで動作を確認済み
    • 2周目にて全実績解除済み
    • DLCは無効の設定
    • 引き継ぎでの開始は(ゲームシステム的には他にも機会があるが)エンディング後にのみ行った
      • HARDでの14日間は2周目程度の能力だと最終ボスが強く感じる人が多いため、2周目でこの最終ボスに挑戦したい場合は貴重な回復アイテムの準備を計画的にしておくと比較的楽
    • 終極の冥宮(Ultimate Lair)は1周目と2周目の両方でクリア済み・アイロネート(Aeronite)は2周目HARDでのみ撃破を確認
    • まだ3周はしていないためエネミーレポートは未完成(メインクエストのボスの一部のみ未確認)
    • エネミーレポートに関連する未クリアのサイドクエストが1つある以外はクリアを確認済み
  • フレームレートはFF13-2ほど低くはならないが、一時的な急激低下(カクつき)はそれなりに頻繁に発生するので、GE版Protonに含まれるasync対応版DXVKを用いてDXVK_ASYNC=1 %command%で実行したほうが快適
    • GE版Protonのdist/lib/wine/dxvk/d3d9.dllをゲームの最上位ディレクトリ(LRFF13.exeと同じ階層)にコピー
    • DXVK_ASYNC=1で動かすと非同期処理の影響で描画の遅延が発生することがある
      • 初見のイベントシーンなどで、主人公を含む人物の外見がごく短時間の間、真っ黒のシルエットになることが結構な頻度である(段階的に未描画部分が描画されていく)
        • イベント前のセーブデータを読み込んでから同じイベントを再度見るとこの現象は発生しにくく、Vulkanシェーダのキャッシュが効いているものと考えられる
      • メニューを開いたときの主人公のグラフィックの表示の際にも、最初のごく短時間の間だけ黒く表示される場所が(部分的または全体に)出るときが結構な頻度である
  • キーの割り当てを変更しようとすると入力待ちの表示のまま操作不能(無反応)になることがあるが発生条件は不明
    • タイトル画面の “コンフィグ” から設定できたことはある
    • 最初の戦闘後のカメラ設定についての選択肢まで進んで突然操作不能になったこともあるので、Wine/Protonのキーボード入力関係の処理に問題がある可能性もある
    • とりあえずPROTON_NO_XIM=1を付けて起動するように設定したが、その後はエンディングまでゲーム中のキー入力の不具合はない
  • DXVKの特定バージョンで描画バグがあったが、最新のバージョンでは修正済み
  • キャラの一部が細かく震える現象が稀に発生する

画質設定

負荷がかからない設定にしているが、最大フレームレートは60fpsになるようにした。ウィンドウ内のメニューから設定する。

  • 画面解像度: 1280x720
  • フレームレート: 変動
  • 表示領域の拡縮: なし
  • その他の項目: 全て “標準”

手元の環境では、ここから一部の画質設定をある程度上げてもプレイに大きな支障はなさそうな印象。30fpsでよいなら色々上げることも考えられるが、画質よりも滑らかに動くことを優先した。

フルスクリーンを解除するにはウィンドウのメニューを開く必要があるが、これをうまく開けないことがある。

ソフトウェア環境

  • Proton 5.13, 6.3
    • 公式のProtonにGE版のasync版DXVKを組み合わせて使用
      • CPUとGPUのスペックが十分にあればasync版を使用せずに快適にプレイ可能と思われる
    • 同じバージョンの最新のasync版DXVKを使用して、オープニングイベントのマップにおけるフレームレート(移動時および戦闘時)を比較すると、手元のハードウェア環境では5.13系使用時には60fpsまで出るが、6.3系だと何故か30fpsまでしか出ない
  • async版DXVK 2021年6-7月時点の最新バージョン
  • Mesa: 21.1.x系, 21.2.x系
  • AMDVLK: 2021.Q2.2(1周目と2周目で使用), 2021.Q3.6

FF13Fix(検証した時期の最新である1.6系)は手元の環境では効果が感じられないため使用していない。使用した場合でも、ログにはパフォーマンスに関する変更の適用についての出力はない。

動作詳細

マップ内移動シーン

  • 人がそれほどおらずエフェクトなどの負荷もないエリアでは基本的に45-60fps出る
  • 市街地で人がそれなりに多くても50fps以上出ることがある一方で、async版DXVKを使用していてもフレームレートが一時的に一瞬大きく低下することも稀にある
  • 同じ場所であっても、夜になると昼間よりもフレームレートが下がる場所もある
  • ウィルダネス(The Wildlands)にあるヤクトの森(The Jagd Woods)南東部の風ヶ原(The Grasslands)に近い場所や農村カンパスファーム(Canopus Farms)内は、前述の画質設定でも何故か他の場所より低めの30-40fps台ぐらいになった

イベントシーン

  • 場面(エフェクト負荷など)によってはフレームレートがある程度下がることはあるが、基本的にはイベントシーン時に重くなるということはない
  • オープニングイベントの最終到達地点におけるイベントではエフェクトの関係か30-40fps台になってやや重い印象

戦闘

  • 重いエフェクトによって一時的にある程度フレームレートが低下することはあっても、基本的には45-60fpsが出ている
  • 本作の戦闘は味方側のキャラ数が少ない(条件によって補助要員x1が加わるだけ)ため、過去の2作品より戦闘時のグラフィック負荷がある程度軽いと思われる
  • 派手なエフェクトのある戦闘であってもカクつきを体感することはなかった
  • “ガッブル(Niblet)x10” などのように小型の敵が多数出る戦闘であってもカクつきを体感することはなかった

メニュー項目

  • FF13-2では30fpsが上限だった敵の情報の表示画面なども含め、60fpsで滑らかに動く

Gallium Nineでの動作について

Mesa 21.1系時点では3作品全て動作自体はするのだが

  • 準備が面倒
  • 手元の環境では3作品全てにおいてDXVKのほうが明らかに高いフレームレートで動作した
  • FF13ではGallium Nine使用時にのみ発生する描画不具合が複数ある

という理由で

  • NVIDIA GPUでNouveauドライバを使用している場合
  • Vulkan非対応なGPUを使用している場合

を除いて推奨はできない。

ただし、手元の環境ではDXVKはValve社が開発した “ACO (AMD compiler)” と呼ばれるAMD GPU用の高速なシェーダコンパイラが有効な “RADV” のVulkanドライバ上で動かしており、Gallium Nineが使用する “RadeonSI” のGalliumドライバは、試した時期においてACOをまだ採用していないことから、将来これに対応した場合に差が縮まるなどの可能性はあると考えている。

Intel GPU(Irisドライバ)を使用している場合の比較データはなく、DXVKとどちらが快適かは不明。

ProtonでGallium Nineを使用する上での注意

Protonはprotonという名前の実行用スクリプトの中でd3d9.dllを毎回DXVKまたはWineのファイルで上書きするようになっており、そのままではGallium Nineを使用してゲームを起動することができない。

[引用]ファイル名:proton
class CompatData:
    # ...
    def setup_prefix(self):
        with self.prefix_lock:
        # ...
            if use_wined3d:
                dxvkfiles = ["dxvk_config"]
                wined3dfiles = ["d3d11", "d3d10", "d3d10core", "d3d10_1", "d3d9"]
            else:
                dxvkfiles = ["dxvk_config", "d3d11", "d3d10", "d3d10core", "d3d10_1", "d3d9"]
                wined3dfiles = []

このdxvkfileswined3dfilesからd3d9を消して上書きして実行するとGallium Nineを用いて起動できるようになる。

[一部]ファイル名:proton
class CompatData:
    # ...
    def setup_prefix(self):
        with self.prefix_lock:
        # ...
            if use_wined3d:
                dxvkfiles = ["dxvk_config"]
                wined3dfiles = ["d3d11", "d3d10", "d3d10core", "d3d10_1"]
            else:
                dxvkfiles = ["dxvk_config", "d3d11", "d3d10", "d3d10core", "d3d10_1"]
                wined3dfiles = []

Protonのバージョンが上がったときにはこの編集を再度行う必要が出ることがある。

Proton 5.13以上では “Steam Linux Runtime (Soldier)” のコンテナがGallium Nineを扱えない問題があるため、(将来Gallium Nineがサポートされるまでは)コマンドでProtonを実行する必要がある。