Unreal Engine製ゲームのPak優先度と署名検証マトリクス
Unreal Engine 4および5(UE4/UE5)を採用するゲームタイトルでは、3Dメッシュや音声、ブループリントデータが .pak または近代的なIoStoreコンテナ(.utoc/.ucas)にパッケージングされています。近年のゲームアップデートでデジタル署名(.sig ファイル)による改ざん検証やZenLoaderマニフェストが導入された結果、単純に ~mods フォルダへファイルを配置するだけではMODが完全に無視されるか、起動時にアサーションエラーで強制終了します。
| パッケージング形式 | 配置先ディレクトリ | 必要なバイパス手法 | 不整合時の主な症状 |
|---|---|---|---|
| 従来の標準Pak | Content\Paks\~mods | 不要(アルファベット順で自然適用) | 署名チェックなしなら即座に反映 |
| 署名付きPak (.sig必須) | Content\Paks\~mods | ダミー.sigの配置またはUE4SSメモリパッチ | ゲーム側でMODが無視されるかクラッシュ |
| IoStoreコンテナ (.ucas/.utoc) | Content\Paks\~mods | TOCバージョンとエンジン仕様の一致 | エラー: ChunkIndex != INDEX_NONE |
| 複雑なロジック/BP拡張 | Binaries\Win64 | Unreal Engine Scripting System (UE4SS) | 注入失敗により機能が無効化 |
ステップ1: ファイル命名規則とマウント優先順位
Unreal Engineの仮想マウントローダーは厳密な文字列ソートに従ってファイルを走査します。本体データを安全に上書きするための配置手順:
- ゲームのPak格納先を開きます:
[ゲームフォルダ]\Content\Paks\
- ここに
~modsという名前の新規フォルダを作成します(チルダ記号~はASCIIコード順で英数字より後になるため、最後にロードされ優先度が高くなります)。 - MODファイルの先頭に
z_や数字を付加してリネームします:
pakchunk0-WindowsNoEditor_z_CustomSkin_P.pak
- ファイル名末尾の
_Pは「Patch」を意味し、エンジンローダーに対して最優先で適用すべきパッチとして認識させます。
ステップ2: .sig デジタル署名チェックの回避
ゲーム起動時にMODが読み込まれない場合、署名検証機構が動作しています:
方法A: 公式.sigファイルの複製偽装
- 公式の
Content\Paks内にある容量の小さい.sigファイルを探します(例:pakchunk0-WindowsNoEditor.sig)。 - このファイルを
~modsフォルダ内にコピーします。 - MODのPakファイル名と完全に同一の名前にリネームします:
pakchunk0-WindowsNoEditor_z_CustomSkin_P.sig
方法B: UE4SSによる動的メモリスキャンパッチ
厳格なハッシュ検証が行われている最新タイトルの場合:
- 対象ゲーム用の
UE4SSをダウンロードし、メイン実行ファイルがあるBinaries\Win64に配置します。 UE4SS-settings.iniを編集します:
[General]
EnableSigScanner = 1
- これにより、ゲーム起動時に
FPakFile::CheckSignature関数の戻り値がメモリ上で常時Trueに書き換えられ、全MODの署名チェックが無力化されます。
ステップ3: IoStore(ucas/utoc)関連のクラッシュ対応
UE5等の最新IoStore採用タイトルの場合:
- MODが
.pak,.ucas,.utocの3点セットで構成されているか確認します。 - IoStore専用タイトルに単一の古い
.pakのみを導入するとAssertion failed: ContainerIDでクラッシュします。MOD配布元の対応バージョンを確認してください。