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

Fallout箱庭DIY

「箱庭DIY」Fallout分室

【Fallout4】FO4Editによる互換パッチの作成はじめ

FO4Edit MOD基礎 競合対策


スポンサーリンク

ローカル環境に依存した競合対策として、互換パッチの作成が欠かせません。必要性と競合の起こる原因を見ながら、超簡単なパッチを作ります。

パッチの作成をしたこと無い人も対象にしていますが、最小限のFO4Editの使い方は知っている前提で進めます。知らない人は、以下の記事の内容だけ押さえておいてください。

なんで互換パッチが必要?

 具体的なパッチ作成の前に、プラグインの基本ルールと、それに伴うパッチを作らなくてはいけない理由。

 

プラグインによるマスターファイルの上書きルール

Fallout4.esmのAmmunition(Ammo 弾薬)カテゴリの、プラズマカートリッジです。サバイバルモードで有効になる弾薬重量も設定されています。

サバイバルモード対応のFallout4.esm

 

ここにBetter Item Sorting英語版(以下BIS)のesp版を導入します。

大抵の人が知ってるであろう有名MODだと思います。アイテムをカテゴリ別に分類してソートしてくれまる便利MODです。構造はシンプルで、武器やアーマー以外の全てのアイテム名を、カテゴリの"タグ"が付いた名前に書換えます。

BISによるタグ付きネーム

今見ているプラズマカートリッジは"弾薬"なので、そのようにタグの付いた名前に変更されています。

 

プラグインによる上書き更新のルール

FO4Editの使い方記事でも書いてますが、MODによる改変というのは、ロードオーダー上位が下位のレコードを上書きすることで成立します。なのでこの場合は、Fallout4.esmのプラズマカートリッジのレコードをBISのレコードで上書きすることで、弾薬名が"タグ付き"に変更されます。

プラグインの上書きルール

ここでQuestion。あまりプラグインに詳しくない人は、是非試してみて欲しいです。

実はこのesp版、現在(16年9月)は1つ問題が発生しています。BISが悪いのではなく、Fallout4.esmのバージョンが上がったことで起きてしまったトラブルです。

上のSSで既に見えていますが、何処かわかりますでしょうか?

ヒントは、「全て上書きされてしまう」ことで発生する問題です。見比べてみると気付くと思います。

 

では答を。

16年9月現在、このMODはサバイバルモード適用以前のFallout4.espから作られている影響により、弾薬重量のレコードが「空欄状態」に上書きされてしまいます

空欄で上書きされる不具合

0ならまだしも「空欄」の為、現在のバージョンにおいてどんなレコードが読まれてしまうか不安な所です。けれども動作上は、サバイバルモードで弾薬重量が加算されないだけでした。つまり0と同じ扱いで、乱数的に重量が増加することは無さそうです。

 

バージョンによる差分の影響で、こういう「上書き」によるトラブルは、他でも発生する可能性があります。例えばHUD用Effectに関連するレコードを古いベースで上書きした場合、HUD使用時にクエストNPCから敵対されるかもしれません。


MOD同士の上書き競合

MOD間の競合に関しても、仕組みは同じです。自分の環境には好ましくないレコードに書き変わることが、よくあります。ロードオーダーだけの管理だとほぼ確実に発生していますが、影響度の小さいものは気づかないことが多いです。さっきの例でも「サバイバルモードで弾薬に重量付くなんて知らなかった!」という場合には、気づかずスルーする可能性もあるでしょう。

例えばBetter Item SortingArmorsmith Extendedを併用すると、

  • アイテム名のタグが消える(STRINGS版、esp版)
  • 服(外套系)とアーマーの併用ができなくなる(esp版)
  • Ballistic Weaveの追加が自由にできなくなる(esp版)

等の問題が起きます。上記のように、変更して欲しくないレコードまで書き換えられてしまう影響です。

けれども、あまり使わないアイテムのタグが消えていても気づかないかも知れません。趣味上着ることの無い服に至っては、Ballistic Weaveが付かないことに気づいたとしても、困らないのでそのまま放置になるでしょう(不安定になる等の問題にはならないです)。

 

 

どうして必要無いレコードまで書き換える?

さて、ここで疑問に思った人もいるかもしれません。

 

どうしてBetter Item Sortingは名前”だけ”を変更してくれない?

 

 

レコード変更項目細分化の限界

名前だけを変更して重量を触らなければ、そもそもこんな問題起こらないのは??

オブジェクトとレコード

感覚的にはもっともな話なのですが、残念ながらこれはオブジェクトの構造上不可能となっています。

 

プラズマカートリッジは、FormID0001DBB7のオブジェクトです。

プラズマカートリッジのオブジェクト

レコードの書き換えというのは、このオブジェクト単位で行わなければなりません。つまり何か1つでもレコードを変更したいと思ったら、ひとつのオブジェクトをまるごと全部書換える必要があります。部分的なレコード変更ができないのです。

 

STRINGS変更は例外で、文字列だけを変更することができます。ただし大抵はFallout4.esmのSTRINGSを置き換える為、ロードオーダーは最弱になります。バニラアイテムの改変MOD等でかぶった場合は、確実に潰されてしまいます。

 

ちょっと例を変えて、コンバットアーマーの防御力アップ(01)と、軽量化(02)をするプラグインが同時にロードされた場合です。

双方が変更したいレコード自体は、それぞれ別の箇所です(マスクの掛かっていないレコードのみ)。しかし"コンバットアーマー"というオブジェクトを丸ごと全部書き換えなければならない為、実際にはこの2つは競合してしまいます。

コンバットアーマーの競合

この例の場合は、01の方が全面的に潰されることになります。

 

目的外のレコードの埋め方

プラズマカートリッジに戻ります。

BISの主目的は「名前を”タグ付き”に変更する」ことだけなのですが、名前以外の全てのレコードも一緒に書き込まなければなりません。もしカラッポだったら、それは削除を意味します。まさに弾薬レコードがそうなってます。

BISの名前以外のレコード対処

興味対象ではない、名前以外のレコードは何を書く?ということになるのですが・・・これは必然的に、マスターファイルのレコードで埋めておくという以外の選択肢が有りません。つまりこの場合は、Fallout4.esmのレコードで埋めることになります。でないと他のレコードも変更するMODになってしまいます。

 

マスターファイル(マスター指定)に関しては別記事にて。

 

したがってBISは、

 

名前以外の項目はMOD作成当時のFallout4.esmのレコードを書き込む

 

という構造になる訳です。

他のMODに関しても勿論同じで、必要な部分以外はマスターファイルのレコードで埋めるというスタイルです。

以上の理由から、同一IDのオブジェクトを変更するMODが複数存在する場合は、例え本来変更すべきレコードが異なる場合においても競合が発生します。

BISは多くのアイテムを"タグ付き"に変更する為、武器やアーマー以外のあらゆるアイテムに関して「1度目の上書き変更」を行っています(これはSTRINGS版も同じ)。したがって、ここに別のMODで2度目の変更が加わった時点で競合が確定します。武器やアーマー以外のバニラアイテムを変更するMODを入れた場合は、ほぼ確定になります。タグの消えてるアイテムの1個や2個、心当たりがあるんじゃないでしょうか。

そんな事情で、esp版のBISを使用かつロードオーダーを後ろ(優先度高め)にした場合は危険です。アイテム系MODによる変更を全て潰し、最終レコードとしてBISが名前以外全てバニラに書き戻します

 

 

互換パッチによる最終レコードの更新

さて、いよいよパッチです。今回のケースは互換パッチというよりバグフィクスに近いですが、競合不具合を修正するという意味では全く同じ構造になります。

この状況を修正するには、

 

新規espをロードオーダー上位に作り、両立するレコードに書き直す

 

しかありません。これが互換パッチの基本的な役割です。

プラズマカートリッジの場合であれば、

  • BISによるタグ付きの名前
  • 弾薬の重量
  • 他はFallout4.esmのまま

このようなレコードで最終的に上書きすればOKになります。

patch.espを新設しました。BISによって空いてしまった弾薬重量の穴を塞ぎつつ、名前はBISと同じにしてあります。

esp版BISの修正パッチ

FO4Editの使い方記事に書いた通り、プラズマカートリッジのオブジェクトである0001DBB7Copy as override intoを使って新規espを作っています。BISをから作って重量を変更しても、Fallout4.esmから作って名前を変更しても、どちらでも同じです。BIS準拠の名前と弾薬重量の両立が目的です

もっとも次に更新されれば確実にこの穴は塞がる筈なので(今のFallout4.esmをベースに作る筈なので)、こういう場合は互換パッチではなく、直接書き込んでしまってもOKだと思います。

名前はただの「文字列」なので、BISをマスター指定することなくパッチを作ることができます。

以上で終了です。

 

あとは実践編をぼちぼち書いていく予定です。

簡単な所でBetter Item SortingArmorsmith Extendedの互換パッチ、

もう少しだけ面倒になる、BISとUnofficial Fallout 4 PatchBranded Alcoholの3種共存パッチ、

あとはAEとCombat Helmet Illuminationの共存パッチと、光源はあるけどライト自体が光ってない場合の修正改造あたりを。既に実験とSS撮影済。

 

Copyright © 2015 Fallout Hakoniwa DIY All rights reserved .

S.kutsumiya@gmail.com