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

Skyrim箱庭DIY

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

(初心者におすすめ8)esmとespの違いについて



スポンサーリンク

シリーズのはじめに、とりあえず暫定として、

  • 規模の大きなプラグイン=esm
  • 小さなプラグイン=esp

と覚えておいて、と書きました。あくまで暫定だったので、実際のところ正確ではありません。大抵はそんな感じなのですが、場合によっては

  • 非常に規模が大きいけれどもesp
  • 殆どエントリ無いけどesm

ということもありえます。本当のところどう違うの?ということを、今回は具体的に説明していきます。

ちょっと復習です。忘れちゃった人は、もう一度目を通してみてください。

 

 その次には、esmは基本台帳espは台帳を変更する付箋紙。と説明しました。

 

よろしいでしょうか。

 

espという「付箋紙」を貼れる対象の制限

Test.espを導入

過去の記事で使った「Test.esp」をリサイクルします。変更内容は3点。

  • 新規Actor「Goly」の追加。(継ぎ足す付箋紙)
  • 新規Race「Nordic Daedra」の追加。(継ぎ足す付箋紙)
  • Armor「SteelArmor」の変更。(上に貼る付箋紙)

 

ロードオーダー

0・・・Skyrim.esm

1・・・Test.esp

とします。青い付箋紙である「Test.esp」を、Skyrim.esmに対して貼り付けたり継ぎ足したりしています。

Test.espの台帳

 Steel.espの導入

さらにもう1つ、ロードオーダー2番でSteel.espを導入しました。これも過去の記事からのリサイクルです。変更内容は1点だけ、

  • Armor「SteelArmor」の変更。(上に貼る付箋紙)

となっています。

赤い付箋紙を使い、こちらもSkyrim.esmに対して貼り付けています。結果的にSteelArmorは2枚の付箋紙が貼られた「競合」状態になっています。

Steel.Espの中身

0・・Skyrim.esm

1・・・Test.esp

2・・・Steel.esp

となりました。

ここまでは以前の記事と同じです。

ロードオーダー2番の「Steel.esp」に注目します。書き換えている(付箋紙を貼っている)のは、Skyrim.esmの「SteelArmor」のみです。ですがもしここで、

Test.espの「NordicDaedra」に対して変更を加えたい

と思った場合、どうしたら良いでしょうか?

「今まで通り付箋紙貼って書き換えればいいんじゃ?」という気がします。ところが出来ないんです。(不可能では無いですが、原則NGです)

今まで「台帳」であるesmに対して「付箋紙」であるespを貼ることで、「台帳」の上書きをしてきました。大事なことなので2度言います。esmに対してespです。

原則、espに対してespを貼り付けて書き換えることはできません

「SteelArmor」のところを見て、青と赤の付箋紙2枚貼られてるじゃないか!?と思うかもですが、これはSkyrim.esmの「SteelArmor」に対して2つのespが書き換えをした(付箋紙を貼り付けた)結果、競合しただけです。

Steel.espが、Test.espの「SteelArmor」を書き換えた訳では有りません

 つまり、esmに対してespで書き換え可能というルールに則り、Test.espがTest.esmであれば解決ということになります。

 

espをesm化する

test.esmに昇格

Test.esmとしてみました。「Goly」と「NordicDaedra」の項目が、それぞれ太枠の中に合体したイメージです。こうしてesmになれば「台帳」に昇格します。図のSteelArmorのように、台帳(esm)で台帳(esm)を書き換えてもOKです。

 

Test.esmをSteel.espで書き換え

Test.esmをSteel.espで改ざん

Steel.espで「NordicDaedra」の項目に、付箋紙を貼ることができました。

ただしこれによって、Steel.espはTest.esmをマスター指定したことになります。

 

マスター参照

 Steel.espでTest.esmをマスター指定すれば、「NordicDaedra」種族を参照して、同種族の新キャラ「Gorigoly」を作ることもできます。

 

マスター指定とは

マスター指定NMM

 NMMのプラグインリストです。赤枠で囲んである所を見てください。

これはgoly.espがマスター指定しているプラグインのリストです。

これは、

goly.espはSkyrim.esmとUpdate.esmに対して付箋紙貼るよ!

という前提条件です。マスター指定しているプラグインが無かった場合、タイトル画面で即CTDとなります。せっかく付箋紙用意しても、貼る対象が無なったらCTDです。

つまり、マスター指定というのは「付箋紙を貼る対象の台帳を指定する」ということです。原則として、マスター指定はesmに対してのみ可能です

 ※TES5EditやWryeBash等を使えばespにも出来るのですが、CKではできません。

 

esm化のデメリット 

何でもesm化すれば便利な気もしますが、そうでもありません。 

CKで変更ができなくなる

CKではesmに対してActiveを立てて書き換えることができません。結構不便です。TES5Editでは書き換え可能ですが、esmへの直接書き換えによる改造はお勧めしません。後述します。

 

ロードオーダーの自由度が少なくなる

esmはespより先にロードされなければならないというルールがあるので、ロードオーダーの並べ替えに制限が出来ます。esm同士でしか並び替えできないということです。

追加(継ぎ足す付箋紙)なら問題無いですが、esmであまり多くの変更(上に貼る付箋紙)を作ってしまうと、上書き競合が起こりやすくなります。改造でesm化するときは注意してください。

 

マスター指定されることによる問題

esmになるとマスター指定を「される」ことになります。これは、他のespによりesmの項目が参照利用されることを意味します。Steel.espがTest.esmの「Nordic Daedra」種族を参照して、新規Actor 「Gorigoly」を作ったことと同じです。この例の場合、もし「Nordic Daedra」種族を変更した場合、これを参照している「Gorigoly」にも影響が出ます。

esm内の参照されている項目を書き換えると、参照している全てのespに影響が出ます。特にアドレスの変更や、項目そのものの削除をした場合、espは存在しない項目を参照することになるので、様々な不具合が想定されます。

esmは他のespから参照されることを前提にする必要があります。それに比べてespは自由人です。これが、原則として規模が大きい=esm、規模が小さい=espとなる理由でもあります。サーバーと端末みたいな関係とも言えます。この「参照される」という前提条件があるので、esmはespよりも先にロードされなければなりません。

espをマスター指定したespを作った場合、参照されることを前提にしていないので、バージョンアップで突然使えなくなるかもしれません。esmの場合もありえますけど、この場合は変更履歴として情報公開されると思います。

 

 

例外的なesm

USKPのように、「esmフラグを立てたesp」という物があります。これはespファイルでありながらesmの前にロードオーダーを持っていくことのできるespです。中身は実質的にesmなのですが、取り扱いはespとなっています。マスター指定を回避する為、CKでの利便性の為、実際の目的は分かりませんが、こういうタイプもたまにあります。

 

まとめ

  • espに対してespでデータを変更できない
  • esmに対してのみespでデータを変更できる
  • 変更対象のesmが増えるごとに、マスター指定対象が増える
  • 何でもesmにすれば便利という訳ではない

  

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

実際はWryeBashやTES5Editでespをマスター指定することができます。互換パッチではよくあることです。しかしCKでセーブした時点で、espのマスター指定は全部解除されますので要注意です。

スクリプトを使って必要なespのロードオーダーを取得して、そこからアドレスを割り出す手段もあります。(WetAndColdあたりがやってますね。GetSnowyを探したり)

 

 

 シリーズの続きはこちらからどうぞ