/home/amgsk

Proton環境で動かしているArknights: EndfieldにModsを適用する方法

· amgsk
要約
  • XXMI Launcherを使って、Proton環境で動かしているArknights: EndfieldにModsを適用出来る

TOC


Arknights: EndfieldはSteam外のゲーム(GRYPHLINKランチャー配布)だが、Proton経由でLinux上で動作する。
Windows環境では、3DMigotoというD3D11プロキシDLLをゲームフォルダに配置する方式でEndfieldのモデルやテクスチャを改変するmodが存在する。
しかし、Proton環境ではこの方式が機能しないようだった。 d3d11.dllを先にロードしてしまい、Unknown error (d3d11.dll) エラーが発生してゲームが起動できなかった。

これを解決するためにXXMI Launcherを使用する。
実行時にEndfield.exeプロセスを検知して自動的にDLLインジェクションを行う事ができ、Linux環境でも動作する。

環境

  • OS: Arch Linux (kernel 6.19.6-zen1-1-zen)
  • Proton: GE-Proton10-32 (Proton-GE Latest)
  • シェル: fish(任意)

手順

1. Proton環境のゲームフォルダを確認

Proton環境では、ゲームの仮想Windowsファイルシステムはcompatdata以下にある。

~/.local/share/Steam/steamapps/compatdata/<App ID>/pfx/drive_c/

私の環境ではEndfieldのApp IDは2514955766だった。ゲーム本体のパスは以下の通り。

~/.local/share/Steam/steamapps/compatdata/2514955766/pfx/drive_c/Program Files/GRYPHLINK/games/EndField Game/

Windowsパスとの対応は C:\pfx/drive_c/ に読み替えるだけ。

2. 使用中のProtonバージョンを確認

XXMI Launcherはゲームと 同じProtonバージョン・同じWineプレフィクス で起動する必要があるみたい。

Protonバージョンの確認
1
cat ~/.local/share/Steam/steamapps/compatdata/2514955766/version

出力例: GE-Proton10-32

対応するProtonのパスを確認:

Protonのパス確認
1
ls ~/.local/share/Steam/compatibilitytools.d/

今回は Proton-GE LatestGE-Proton10-32 に対応していた。

3. XXMI Launcherのダウンロードと配置

ポータブル版をダウンロードし、ゲームと同じWineプレフィクス内に展開する。

XXMI Launcherのダウンロードと配置
1
2
3
4
5
6
7
8
# ダウンロード
curl -L -o /tmp/xxmi-launcher.zip \
  "https://github.com/SpectrumQT/XXMI-Launcher/releases/download/v2.1.6/XXMI-Launcher-Portable-v2.1.6.zip"

# ゲームフォルダ内に展開
mkdir -p ~/.local/share/Steam/steamapps/compatdata/2514955766/pfx/drive_c/Program\ Files/XXMI-Launcher
unzip -o /tmp/xxmi-launcher.zip \
  -d ~/.local/share/Steam/steamapps/compatdata/2514955766/pfx/drive_c/Program\ Files/XXMI-Launcher

XXMIランチャーを起動した後、EFMI(Endfield Model Importer)をインストールするためのファイルも同じ場所に配置される。

4. XXMI Launcherの起動

ゲームと同じプレフィクス・同じProtonで起動する。

XXMI Launcherの起動
1
2
3
4
env STEAM_COMPAT_DATA_PATH="$HOME/.local/share/Steam/steamapps/compatdata/2514955766" \
  STEAM_COMPAT_CLIENT_INSTALL_PATH="$HOME/.local/share/Steam" \
  "$HOME/.local/share/Steam/compatibilitytools.d/Proton-GE Latest/proton" run \
  "$HOME/.local/share/Steam/steamapps/compatdata/2514955766/pfx/drive_c/Program Files/XXMI-Launcher/Resources/Bin/XXMI Launcher.exe"

5. XXMI LauncherのGUIでEFMIをセットアップ

  1. 上部のゲームアイコンから EFMI(Endfield Model Importer) を選択
  2. ゲームパスを聞かれたら C:\Program Files\GRYPHLINK\games\EndField Game を指定(自動設定だったと思うが覚えていない…)
  3. 右下のボタンからゲームを起動

xxmi launcherの設定

XXMI Launcher特有のオーバーレイが画面に表示されれば成功。これでProton環境でもmodが適用された状態でEndfieldをプレイできるようになる。
オーバーレイの画面はF12キーで切り替え可能。

EFMIのModフォルダ
1
~/.local/share/Steam/steamapps/compatdata/{APP ID}/pfx/drive_c/Program Files/XXMI-Launcher/EFMI/Mods

6. fishシェルのエイリアス登録

毎回長いコマンドを打たなくて済むよう、fish関数として登録する。

~/.config/fish/functions/xxmi.fish を作成:

fishシェルのエイリアス登録
1
2
3
4
5
6
7
8
function xxmi --description "Launch XXMI Launcher for Arknights: Endfield modding"
    set -l prefix "$HOME/.local/share/Steam/steamapps/compatdata/2514955766"
    set -l steam "$HOME/.local/share/Steam"
    set -l proton "$steam/compatibilitytools.d/Proton-GE Latest/proton"
    set -l launcher "$prefix/pfx/drive_c/Program Files/XXMI-Launcher/Resources/Bin/XXMI Launcher.exe"

    env STEAM_COMPAT_DATA_PATH="$prefix" STEAM_COMPAT_CLIENT_INSTALL_PATH="$steam" "$proton" run "$launcher"
end

以降はターミナルで xxmi と打つだけで起動できる。

7. .desktopファイルでの起動(任意)

ターミナルを使わずアプリケーションランチャーから起動したい場合は、.desktopファイルを作成する。

~/.local/share/applications/xxmi-launcher.desktop を作成:

xxmi-launcher.desktop
1
2
3
4
5
6
7
[Desktop Entry]
Name=XXMI Launcher
Comment=Launch XXMI Launcher for Arknights: Endfield modding
Type=Application
Exec=env STEAM_COMPAT_DATA_PATH="/home/amgsk/.local/share/Steam/steamapps/compatdata/2514955766" STEAM_COMPAT_CLIENT_INSTALL_PATH="/home/amgsk/.local/share/Steam" "/home/amgsk/.local/share/Steam/compatibilitytools.d/Proton-GE Latest/proton" run "/home/amgsk/.local/share/Steam/steamapps/compatdata/2514955766/pfx/drive_c/Program Files/XXMI-Launcher/Resources/Bin/XXMI Launcher.exe"
Terminal=false
Categories=Game;

.desktopファイルでは $HOME~ が展開されないため、フルパスで記述する必要がある。

EOF