読者です 読者をやめる 読者になる 読者になる

Skyrim箱庭DIY

MODによる固有の環境不具合は自分で直して快適ゲーム。CTDにさようなら。Do It Yourself!!

(初心者におすすめ4)Skyrimのロードオーダーと競合について



スポンサーリンク

「ロードオーダー」って言葉、よく聞きます。簡単に言うと、MODの読み込み順番のことです。先に読んでも後に読んでも、読み込むなら同じでしょ?と思うかもしれませんが、これが結構クセモノです。

SkyrimでMODを使うにあたり、最初から最後まで付いて回る難敵です。

競合イメージの図解

ざっくりの競合イメージです。MOD_AMOD_BMOD_Cという3つのMODがあるとします。上の段のテトリスみたいなのがそれぞれのMODのイメージです。書いてあるパラメータによって形が違うと思ってください(アドレスのイメージ。アドレスはまた別の記事で説明します)。

競合イメージ図

下の段は、組合せ別にMODを導入してみた時のイメージです。 上の段のテトリス画を重ねてみる感じです。

左の図、AとBを導入した時は、どこも色が重なっていません。競合が無いことを意味します。真ん中の図、AとCを導入した時は、重なって色が濃くなってる箇所があります。右の図だとさらに三つ巴で色が濃くなってます。この「重なり合っている」ことが競合のイメージです。

重なり合っている部分は、各MODがそれぞれ固有のパラメータを持っています(同じ値の場合もあります)。最終的にどのMODのパラメータが有効になるか?というと、一番上に重ねたテトリス画のMODのパラメータが有効になります。一方で、重ねられた側のパラメータは全て上書きで潰されることになります。 

 

一番上=ロードオーダーが一番後を意味します。

こんなイメージ。

 

ロードオーダーイメージ図

 

※わからなかったら今は飛ばして大丈夫です。

TES5editの競合の見方の記事で、ロードオーダー下位の値が繰り上がって有効になることは無いと書きましたが、それは「ひとつのアドレスの中」での話です。アドレスそのものは最後に更新した値が有効値になります。

 

Skyrim.esmの中身の簡単な説明

esmは「台帳」である、という話をしました。かなりアバウトな説明をしてきましたが、もう少し本物に近い説明をします。「台帳」と「付箋紙」であることは変わりませんので、それは覚えたままでいてください。

skyrim.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という「付箋紙」を貼り付けて、台帳を書き換えます。

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で改ざん

こんな感じになります。上の図より、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

 

となっていたら、どうでしょう?

ロードオーダー次第ではMODが無意味になる

この図のようになります。SteelArmorの項目を、Steel.espで書き換えた後に、Test.espで上書きしてしまいました。これではtest.espを単体で入れた時と全く同じです。Steel.espの変更が完全に潰されました。これはロードオーダーのミスによる、不具合の起きる競合です。

 このように、あるMODの変更項目が、意図しない上書きで潰されることが、不具合の起きる競合です。

潰されることを想定していないからです。

 

気に入らない変更を更に上書きして潰す場合も、見た目には全く同じですが、この場合は「意図している」為、問題のない競合です。

潰されることが想定済みだからです。

 

しかし、想定外のバグに繋がる可能性は無いとは言えないので、注意が必要です(Wild Edits)。

 

まとめ

  • 競合箇所はロードオーダーが一番後のMODのパラメータが有効になる。
  • 導入したMOD自体が同じでも、ロードオーダーによって期待通りの結果にならないことがある。
  • 上書き競合は、意図的に行う分には問題無い。バグになる可能性は別。

 

 ※意味判らなかったら飛ばして大丈夫です。

鎧1つのMODでもCTDする例として、スケルトンとボディメッシュの不一致があります。BBP対応の鎧MODを導入して、スケルトンが非BBPの場合です。これはゲーム開始後即座にCTDする訳ではなく、進入したセル内で不一致が発生した場合にCTDとなります。

例えばクリーチャーが装備する鎧までBBPにリプレイスされたしまった場合、該当クリーチャーが存在するセルに侵入した時点でCTDとなります。

 

続きはこちら