シリーズのはじめに、とりあえず暫定として、
- 規模の大きなプラグイン=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に対して貼り付けたり継ぎ足したりしています。
Steel.espの導入
さらにもう1つ、ロードオーダー2番でSteel.espを導入しました。これも過去の記事からのリサイクルです。変更内容は1点だけ、
- Armor「SteelArmor」の変更。(上に貼る付箋紙)
となっています。
赤い付箋紙を使い、こちらもSkyrim.esmに対して貼り付けています。結果的にSteelArmorは2枚の付箋紙が貼られた「競合」状態になっています。
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としてみました。「Goly」と「NordicDaedra」の項目が、それぞれ太枠の中に合体したイメージです。こうしてesmになれば「台帳」に昇格します。図のSteelArmorのように、台帳(esm)で台帳(esm)を書き換えてもOKです。
Test.esmをSteel.espで書き換え
Steel.espで「NordicDaedra」の項目に、付箋紙を貼ることができました。
ただしこれによって、Steel.espはTest.esmをマスター指定したことになります。
Steel.espでTest.esmをマスター指定すれば、「NordicDaedra」種族を参照して、同種族の新キャラ「Gorigoly」を作ることもできます。
マスター指定とは
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を探したり)
シリーズの続きはこちらからどうぞ