MODクリーニングの定義には、すでに説明しました「Identical To Master edit」以外にも、あと2つ言葉があります。「Deleted Reference」と「Wild Edit」です。この2つは、自分の中でもちょっと怪しい部分があるのですが(言葉の定義の範疇をイマイチ正しく理解できていない)、わかっている範囲でまとめてみようと思います。
Dirty Editsのみのクリーニングで終わりにしてる人が多いと思いますが、「Deleted Reference」が問題起こすこともあります。最悪確定CTDコース。今回はこちらの修復を試してみます。
※自動修復できない場合もありますが、その場合はマニュアルで直すしかありません。自動修復できない方は、いわゆる「バグ」に相当する物だとは思いますが。
「Identical To Master edit」についてや、その削除については過去記事を見てください。「MODクリーニング」と言った場合、大抵はIdentical To Mastar(ITM) editの削除を指しています。
- Deleted Referenceとは?
- Breezehomeの宝箱を削除してしまう場合
- TES5Editの自動クリーニングでDeleted Referencesを修正
- 自動クリーニングで直せないDeleted Reference
Deleted Referenceとは?
今更ですが。MODは基本的に「バニラ環境」を基準に改造しています。共通環境ですね。よって、あるMODがバニラに有る筈のオブジェクトを削除してしまった場合、そのオブジェクトを使う前提のMODに不具合が起こることが想定されます。このように、有ると思っていた参照先のオブジェクトが無くなっている現象を、「Deleted References」と定義されている、だと思います。
有るべき物が無くなったことにより、スキップされるだけならまだ良いですが、場合によってはCTDしたりフリーズしたりと、何が起こるか分かりません。
※例を出しますが、もしかしたら言葉の定義と異なる物もあるかもしれません。ちょっと知識不足につきご了承ください。
Breezehomeの宝箱を削除してしまう場合
Breezehomeのプレイヤーの部屋にある宝箱を「削除」する例です。変更部分だけの表示にフィルタしてあります。
本来存在する筈のオブジェクトが無くなってしまったので、Ref ID:000F3922の宝箱を使うMODがあった場合、不具合が想定されます。参照先が消失してしまう、「Deleted References」です。
TES5Editの自動クリーニングでDeleted Referencesを修正
完全復旧するわけでは無いですが、TES5Editの自動クリーニングで、CTDやフリーズといった事態を回避する為の修正ができます。
Identical To Master editの時と同じように、「Apply Filter for Cleaning」を選択。
フィルタの適用が終わったら、「Undelete and Disable References」を選択します。これで作業完了です。
クリーニング後の宝箱です。「Delete」から「InitiallyDisabled」に変更されています。何をしているかというと、箱の存在自体は消さずに、プレイヤーから見えない地中深くに沈めています。Z座標が超マイナスです。手の届かない所に行ってしまいました。
これにより、削除と同じ効果を得つつも存在そのものは残っているので、参照先が消失したことによる不具合は回避できます。箱が本来の場所に無い為にゲーム中で不具合がおこる場合は、マニュアルで別の競合対策が必要になります。
・・・ということだと思っているのですが。違ってたら指摘貰えると助かります。
自動クリーニングで直せないDeleted Reference
存在自体を復活させて、見えない所に追いやることでCTDやフリーズのリスクを潰しているわけですが、できないこともあります。
削除されたNavmesh
NPCの移動範囲のガイドとなるNavmeshですが、これは復旧させて沈めるという訳にいかないと思うので、「削除されているぞ」という警告が出るだけです。Navmeshに起因した問題があるかどうかは、マニュアルで確認する必要があります。
HeartFires.esmの例。Navmeshが5個消されてる旨のWarningが出てます。問題の有無は個別で調べないといけません。
BreezehomeのNavmeshに関しては、古いMODを使った場合にCTDが起きます。詳しくは別記事で。
Base IDが削除されている場合
これを定義としての「Deleted Reference」と言って良いのかちょっと怪しいのですが、似たような状況を。
見た目がSteelArmorだけど軽装カテゴリな、「Light Steel Armor」という鎧が入ったMODを作りました。Armor1.espという名前です。
別の人がこのMODを気に入り、LightSteelOutfit.espという、「Light Steel Armor」をNPCに着せるOutfitを作りました。Armor1.espをマスター指定したMODになります。Outfitの中に、ARMO:01000800が入っています。Armor1.espのデータを参照しています。(espのマスター指定なんで自己責任っちゃ自己責任ですけど、まあ例として)
LightSteelOutfit.espでは、Heimskrさんに「Light Steel Armor」を着せるようです。
こんな感じで演説してました。いつもご苦労なこってすね。
ここまでをまとめてみます。
- ある人が、「Light Steel Armor」の入ったArmor1.espを作った。
- 別の人がLightSteelOutfit.espを作り、Armor1.espをマスター指定して、Heimskrさんに着せた。
ということです。
さて、この後です。Armor1.espがバージョンアップしました。
大人の事情により、「Light Steel Armor」のアドレスが、01000800から、01000801に変更されました。さて、これをマスター指定していたSteelOutfit.espはどうなってしまうでしょう?
赤枠の中です。参照先であった01000800は消滅したので、解決不可能のエラーになっています。
これを定義上の「Deleted Referense」といって良いのかわかりませんが。(MODの上書きが原因でこういったことは起きないから。マスター側espが直接改変されない限り)
確かなことは、こういったケースは自動クリーニングしても直してくれません。参照先がアドレスもろとも消滅しているので、何が起こるか分かったもんじゃありません。
幸いHeimskrさんの鎧が消滅しただけで、CTDにはなりませんでした。とはいえ、こういったエラーはいつ何が起こるか怪しすぎます。たまたま鎧だったからセーフなだけかもしれません。
自動で対処してくれないので、ダウンロードしたMODであれば作者さんにそっと連絡したり、自分で改造した結果であれば、即座に修正したほうがいいです。
ちなみにDawnguard.espのWeatherの項目に、同じような不具合があります。Unofficial Dawnguard Patchで修正されているのですが、Weather情報をさわるMODがある場合、元に戻っている場合があります。下のSSはRealistic Lighting Overhaulで元に書き戻されている例です。これはRLOが悪い訳ではありません。必要項目以外はバニラの値を使う以上、当然の措置です。悪いのはバニラのバグです。
もうひとつ例です。Clothing and Clutter Fixesで追加されているKeyword。マスター指定した上でこれを別のMODに組み込む人は居ないと思いますが。
SSの通り、ロードオーダー05になっているCCFで新規作成されたKeywordですが、上位2桁が01になっています。これをマスター指定して使った場合、01なので自動でマスター指定されるのはUpdate.esmになります。
しかし実際には05であるCCFにデータがある為、これも同様に参照先のデータが見つからないエラーとなります。
「Deleted Reference」の定義からは外れてる気がしなくもないですが、関係ありそうなことを書いてみました。
この辺で終わっておきます。
次は「Wild Edit」です。これは「ModderもUserも悪くないのに発生してしまった想定外のバグ」といった所なので、今までのクリーニングとはちょっと話が違います。手作業による仕様的なバグ取りです。興味のある人は、よかったらどうぞ。
続きはこちら。