Linux(SteamDeck)でWin用のゲームメモリ改造系ツールを動かす方法

Steam版のFinal Fantasy Pixel Remasterにはブーストモードが無い

FF5ピクリマのゲーム自体は結構前に買ってたんだけど、プレイし始めたのは最近で、Steam版にはブーストモードを含めたPS4/Switch版のアップデートが入ってないことを先週知ったところ。

まあ、別にそんな困らないんだけど、FF5は色々組み合わせて遊ぼうとするとアビリティ習得に結構レベリングが必要なので、ブーストできないのは結構面倒臭い。

で、流石にメジャーなPCゲームなんで探せば何かツールあるんじゃないかなーと思ったら案の定あった。

FLiNG Trainer - PC Game Cheats and Mods ってところにPCゲームのチートツールが色々集まってる。 FF5Final Fantasy V (Pixel Remaster) Trainer - FLiNG Trainer - PC Game Cheats and Mods にあった。 これを使えば獲得ABPのN倍が実現できそうである。

しかし、ここは割とマシな方なんだけどそうは言ってもこの手のチートツールは結構怪しいところあるので、実行は自己責任で。

メモリ改造ツールをLinuxで動かす

ここから本題。この種のツールは実行中のプロセスにアタッチして特定のメモリ領域を書き換えることによって成り立っている。

なので、Steamで起動しているFF5のプロセスがツール側から認識できる必要がある。

LinuxでSteamのゲームを起動する場合、Linuxネイティブで起動するものを除くと大抵はProtonというWineからforkしたWin APIの互換実装を利用することになる。

要はWine上で動いている訳だが、何も考えずにwineコマンドでこの手のツールを起動してもプロセスは認識できない。

WineはWINEPREFIXで指定されるディレクトリに擬似的にCドライブやレジストリの値を保存する。デフォルトは~/.wineだ。このWINEPREFIXごとに独立した環境として起動するのでWINEPREFIXを揃えてやる必要がある。

じゃあSteamで起動した時にはどうなっているのか。Linux上のSteamでWin向けのゲームをインストールするとゲームごとに独立したWINEPREFIXが自動的に作成される。例えば/mnt/steamがSteamのゲームインストール先として登録されていた場合、WINEPREFIXの場所は/mnt/steam/steamapps/compatdata/<game id>/pfxになる。今回のFF5ピクリマのケースだと/mnt/steam/steamapps/compatdata/1173810/pfxだ。ちなみにゲーム本体は/mnt/steam/common/<game title>にインストールされる。

SteamのGame IDの調べ方は色々あるが、手っ取り早いのはSteamライブラリからスクリーンショットの管理画面を開いて、そこから保存ディレクトリを開くこと。screenshotsの親ディレクトリがGame IDごとに分類されているはず。ググってもすぐに出てくるしCLIで取れる様にするツールもある。

という訳で、WINEPREFIXの指定場所が分かった。

後は、実行しているWineというかProtonを揃えておく必要がある。

Steamで利用しているProtonがどこにインストールされているかというとこれは結構マチマチなので、起動時にpsコマンドでも打ってそこかだそれっぽいのを探す方が良いかもしれない。

自分はProtonを更にforkしたProton-GEというやつを使っていて、その場合は~/.local/share/Steam/compatibilitytools.d/GE-Proton8-19/に入っていた。

この中の~/.local/share/Steam/compatibilitytools.d/GE-Proton8-19/files/bin/wineを使ってツールを起動する。最終的なコマンドとしては以下の様になる。

WINEPREFIX=/mnt/steam/steamapps/compatdata/<game id>/pfx ~/.local/share/Steam/compatibilitytools.d/GE-Proton8-19/files/bin/wine <trainer tool exe>

上手く環境が噛み合っていれば、ツール側からゲーム本体のプロセスが認識できる様になる。

他にもsteamtinkerlaunchのcustom commandを使って起動時に同時に別のexeを動かすなどの方法も使えそうだったのだが、どうも自分の環境ではツール側の起動に失敗する問題があった。流石にこの辺りは良く分からん。

後は、ツールのUIでポチポチやれば良い。自分はこれで一応上手くいった。

という訳で、今回も非常に需要の少なそうなGentoo LinuxでゲームをやるためのTips記事だった。