「ロードオーダー」って言葉、よく聞きます。簡単に言うと、MODの読み込み順番のことです。先に読んでも後に読んでも、読み込むなら同じでしょ?と思うかもしれませんが、これが結構クセモノです。
SkyrimでMODを使うにあたり、最初から最後まで付いて回る難敵です。
競合イメージの図解
ざっくりの競合イメージです。MOD_A、MOD_B、MOD_Cという3つのMODがあるとします。上の段のテトリスみたいなのがそれぞれのMODのイメージです。書いてあるパラメータによって形が違うと思ってください(アドレスのイメージ。アドレスはまた別の記事で説明します)。
下の段は、組合せ別にMODを導入してみた時のイメージです。 上の段のテトリス画を重ねてみる感じです。
左の図、AとBを導入した時は、どこも色が重なっていません。競合が無いことを意味します。真ん中の図、AとCを導入した時は、重なって色が濃くなってる箇所があります。右の図だとさらに三つ巴で色が濃くなってます。この「重なり合っている」ことが競合のイメージです。
重なり合っている部分は、各MODがそれぞれ固有のパラメータを持っています(同じ値の場合もあります)。最終的にどのMODのパラメータが有効になるか?というと、一番上に重ねたテトリス画のMODのパラメータが有効になります。一方で、重ねられた側のパラメータは全て上書きで潰されることになります。
一番上=ロードオーダーが一番後を意味します。
こんなイメージ。
※わからなかったら今は飛ばして大丈夫です。
TES5editの競合の見方の記事で、ロードオーダー下位の値が繰り上がって有効になることは無いと書きましたが、それは「ひとつのアドレスの中」での話です。アドレスそのものは最後に更新した値が有効値になります。
Skyrim.esmの中身の簡単な説明
esmは「台帳」である、という話をしました。かなりアバウトな説明をしてきましたが、もう少し本物に近い説明をします。「台帳」と「付箋紙」であることは変わりませんので、それは覚えたままでいてください。
上の図は、Skyrim.esmをCK(CreationKit)で覗いた時に存在するカテゴリ(台帳)です。
いくつか台帳の例を書いてます。
Actor・・・AlvorさんやLydiaさんといったキャラクターが入っている、「名簿」です。
Race・・・NordやOrcといった「種族」です。
SoulGem・・・Azura'sStar、PettySoulGemなどの「ソウルジェム」の台帳です。
Armor・・・EbonyArmor、SteelArmor等、「鎧」の台帳です。
もちろん実際はもっと膨大で様々な「台帳」が入っています。あくまで一例です。
skyrim.esmは絶対一番最初に読み込まれるesmなので、ロードオーダーは「常に0番」です。
ここでロードオーダー「1番」になるMODを考えて見ます。
1つのespでSkyrim.esmを変更する
Test.espというMODを導入してみます。基本の台帳であるSkyrim.esmの上に、Test.espという「付箋紙」を貼り付けて、台帳を書き換えます。
上の図から、次のことがわかります。
- 新規Actor「Goly」の追加。(継ぎ足す付箋紙)
- 新規Race「NordicDaedra」の追加。(継ぎ足す付箋紙)
- Armor「SteelArmor」の変更。(上に貼る付箋紙)
種族とキャラを追加して、既存の鎧のデータを書き換えるMODのようです。espはこれ1つなので、今のところ何の問題もありません。
2つのespでSkyrim.esmを変更する
新キャラ「Goly」は欲しいけれど、「SteelArmor」は別のMODで変更したい!という場合を想定します。2つめのesp、Steel.espというMODを使ってみます。ロードオーダーはSkyrim.esmが0、Test.espが1なので、Steel.espは「2」になります。
こんな感じになります。上の図より、Steel.espのしていることは、
- Armor「SteelArmor」の変更。(上に貼る付箋紙)
であることがわかります。「SteelArmor」はすでにTest.espにおいて書き換えている項目です。でも気に入らないので、そこを再度Steel.espで書き換えています。こういった多重の書換えを、「競合」と呼びます。競合には、起きても不都合のないものから、CTD(Crash To Desktop)に直結するものまで様々です。鎧ひとつくらいなら?と思うかもしれませんが、状況によってはこれ1つでCTDを引き起こすことも有り得ます。
今回はTest.espで書き換えられたSteelArmorが気に入らないので、Steel.espで再度書き換える、意図的な競合なので、問題のない上書き競合です。
ロードオーダーの違いによる不具合
先ほどまでのロードオーダーは、
0・・・Skyrim.esm
1・・・Test.esp
2・・・Steel.esp
でした。ですが、もしロードオーダーが
0・・・Skyrim.esm
1・・・Steel.esp
2・・・Test.esp
となっていたら、どうでしょう?
この図のようになります。SteelArmorの項目を、Steel.espで書き換えた後に、Test.espで上書きしてしまいました。これではtest.espを単体で入れた時と全く同じです。Steel.espの変更が完全に潰されました。これはロードオーダーのミスによる、不具合の起きる競合です。
このように、あるMODの変更項目が、意図しない上書きで潰されることが、不具合の起きる競合です。
潰されることを想定していないからです。
気に入らない変更を更に上書きして潰す場合も、見た目には全く同じですが、この場合は「意図している」為、問題のない競合です。
潰されることが想定済みだからです。
しかし、想定外のバグに繋がる可能性は無いとは言えないので、注意が必要です(Wild Edits)。
まとめ
- 競合箇所はロードオーダーが一番後のMODのパラメータが有効になる。
- 導入したMOD自体が同じでも、ロードオーダーによって期待通りの結果にならないことがある。
- 上書き競合は、意図的に行う分には問題無い。バグになる可能性は別。
※意味判らなかったら飛ばして大丈夫です。
鎧1つのMODでもCTDする例として、スケルトンとボディメッシュの不一致があります。BBP対応の鎧MODを導入して、スケルトンが非BBPの場合です。これはゲーム開始後即座にCTDする訳ではなく、進入したセル内で不一致が発生した場合にCTDとなります。
例えばクリーチャーが装備する鎧までBBPにリプレイスされたしまった場合、該当クリーチャーが存在するセルに侵入した時点でCTDとなります。
続きはこちら