MODを使う限り避けて通れない難敵、「ロードオーダー」と「競合」です。公式DLCでは競合不具合が起こることは無い(多分・・・)ですが、MODでは何かと問題になります。
競合が発生する理屈と、競合によってどんな不具合が起こるかを見ていきます。
MODの基本構成を知らない人は、まずこちらからどうぞ(いきなりこれ読んでも解らないかもです)。
ロードオーダーとは?
MODの読み込み順序のことです。 単純ですけど、適切に管理しないと様々なトラブルの原因になります。
ロードオーダーの基本
NMMのPluginsタブを見ると、「Load Order」の項目があります。ゲームを起動すると、数字の若い順にプラグインが読み込まれる決まりになってます。
本体であるFallout4.esmは00で、一番最初に読み込まれます。変更できません。
SSの例では、00である本体の次に01の「No Fusion Core Drain.esp」が、その次に02の「EferasShoulderBag.esp」が、Fallout4.esmに対するパッチとして読み込まれます。
ロードオーダーのルール
次に、ロードオーダーとプラグインの中身の関係を見てみます。
前回も例にした、Sledgehammerのチート改造MODです。攻撃力と価格が大幅上昇、そのくせ重量0.5というインチキ仕様。
この時の読み込み順は、
- ロードオーダー00の「Fallout4.esm」が読み込まれる。
- ロードオーダー01の「CheatHammer.esp」が次に読み込まれる。
となります。順番通り。
プラグインには、色々な設定項目が書いてあります。近接武器であるSledgehammerも、そんな設定項目の1つです。これらの各項目は、後から読み込まれた方が有効になるという、絶対ルールがあります。
つまりこの例だと、Fallout4.esmのSledgehammerに対してCheaHammer.espが上書きパッチとなり、Sledgehammerが超絶強化される流れです。
※飛ばしてもOKです。
Form ID:000E7AB9
のSledgehammerを改造しています。SSを見ると0005DF2E
にもSledgehammerがありますが、こちらは特定のNPCだけしか使えないバージョンなので除外してます。こうした「playable」でない装備というのも結構あります。
MODの競合とは?
上記のSledgehammerの改造の場合、Sledgehammerを変更するプラグインは1つだけだった為、何も問題ありませんでした。けれども、もし2つ以上で同じ項目を変更している状態だったらどうでしょう?
想定外の結果になる可能性があります。プラグインに限らず、例えば同じ対象をリテクスチャするMODが複数有っても同様です。ゲームを起動したら、想定と違う結果になってるかもしれません。
このように、1つの項目を複数で変更しあうことで起こる問題が、「競合」です。
プラグインの競合
競合状態の確認
上記のSledgehammer改造MODを入れた状態で、武器のバランスを変更するWeapon Balance Overhaulを追加しました。
ロードオーダーは以下の通り。
- 00 Fallout4.esm
- 01 Cheathammer.esp
- 02 Weaponry Overhaul.esp
この状態でゲームを起動すると・・・
Sledgehammerが弱くなりました。バニラから見たら十分強いですが、チート改造が反映されてません。重量や価格も同様。
そんな時はFO4Editで確認です。
ロードオーダー01のCheathammer.espの変更内容を、ロードオーダー02のWeaponry Overhaulが潰しています。
これはどちらのMODが悪いか?という話ではなく、Sledgehammerという武器を2つのMODが変更し合っている、つまり競合していることが原因です。
競合対策には、FO4Editが必須になります。これを使わずに「競合だ、干渉だ」と大騒ぎしてみた所で、理にかなった対策のしようがありません。
競合の解決策
競合状態になったら、何をゲームに反映させたいのか?を考えます。
この場合は、
- Cheahammer.espで、Sledgehammerをチート改造したい
- Sledgehammer以外の武器は、Weaponry Overhaulで強化したい
ということが目的です。
したがって、ロードオーダーを入れ替えることで競合を解消できます。
01と02を入れ替えます。Cheathammer.espを後方に変更。
- 00 Fallout4.esm
- 01 Weaponry Overhaul.esp
- 02 Cheathammer.esp
チート仕様に復活しました!
一度Weaponry Overhaul.espでSledgehammerも変更されますが、Cheathammer.espで更に上書きする為、最終的なSledgehammerの性能はCheathammer.espが有効になります。
Weaponnry Overhaul.espの立場から見れば、競合によりSledgehammerの値が潰された形になります。ですが最終状態としてこの値を望んでない為、これは意図的に上書きされた競合です。ロードオーダー最後の値が有効になるだけなので、何度も上書きすること自体には、何も問題ありません。
この例では、Cheathammer.espで変更した武器が1つだけだったので、ロードオーダー変更で解決できました。けれども複数を変更するMOD同士だと、ロードオーダーだけで解決できない競合も発生します。例えば競合する3つのMOD環境下で、
- SledgehammerはMOD『A』
- RipperはMOD『B』
- SawはMOD『C』
を適用したい、みたいな。
こういうケースでは、「互換パッチ」が必要です。競合するMOD同士、自分が欲しい項目の「いいとこ取り」をしたespを自作します。武器に限らずこういう競合は多いので、MODの数が増えてくると必ず必要になります。作らない人は・・・強行してるだけです。
アーカイブファイルの競合
アーカイブファイル(ba2)はプラグインのロードオーダー順に並ぶ為、プラグイン同様にロードオーダーの影響を受けます。
例えば同じオブジェクトを変更するテクスチャが、複数のアーカイブファイルに入っていた場合、ロードオーダー最後のテクスチャが優先になります。
ルーズファイルの競合
フォルダに展開されたルーズファイルは、ロードオーダーに関係なく常に最優先となります。 同じファイルがロードオーダー最上位のアーカイブファイル内に存在しても、ルーズファイルの方が優先されます。
ルーズファイル同士が競合する場合は、HDD上に同一ファイルが存在できない以上、インストーラやOSから「上書き」するか否かのダイアログが出ることになります。
ルーズファイルの注意事項をひとつ。
アンインストールミス等により、ルーズファイルとして「ゴミ」が残ってしまうと、このゴミファイルが最優先になってしまいます。該当ファイルは絶対にアーカイブファイルから読み込まれることがありません。
まとめ
- ロードオーダーとはプラグインの並び順。
- ロードオーダーが後のプラグインほど優先度が高い。
- ロードオーダー次第では競合が発生する。
- アーカイブファイルもロードオーダーに依存する。
- ルーズファイルは常に最優先。
関連記事
Skyrimブログの方で、もう少し概念的な話をしてます。