Skyrim箱庭DIY

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

【Skyrim】NEMESIS用MODの作成前準備



スポンサーリンク

NEMESIS
NEMESIS対応MODを作るにあたっての情報が少なそうなので(僕がweb見た範囲ですが・・・動画は基本見ない系)、ちょっと試しに作ってみることにしました。実際の作成はまた別記事作りますので、今回はその為の下準備をまとめておきます。
※あくまで個人的な作成実験の下準備です。全然違う、もっとスタイリッシュなやり方があるかもしれません。模範例を称するつもりは無いのでよろしく( ; ゚Д゚)

moddingにおけるFNISとNEMESISの違い

「behaviorファイルを作り直すMOD」という点ではどちらも同じなのですが、目的が全く異なります。
個人的見解ですが、FNISは「新規アニメーション追加」の為にbehaviorファイルを作り直します。一方NEMESISは「無制限に改変したbehaviorファイル群の再構築」の為にbehaviorファイルを作り直します。
つまりNEMESISの主役はアニメーションファイルでなく、behaviorファイルそのものです。自由に改変したbehaviorファイルを使えば、やれることが広がります。戦闘系アニメーションの劇的進化は知っての通り。新規アニメーション追加は、そこで可能なことの1つに過ぎません。

よってNEMESIS対応MODを作るには、

behaviorファイルはマニュアルで改変する

ことが前提になります。そもそも改変したbehaviorファイルを複数合体させる為のMODなのです。
これは当然リスクもあり、不用意に改変されたbehaviorファイルはトラブル源になる可能性を含んでいます
なので、ポーズMODの類はFNISで作った方が楽かつ安全だと思われます。専用behaviorファイルを自動生成してくれますし(問題起こすbehaviorファイルになるリスクが低い)、バニラのbehaviorファイルもあまり汚しません。だからエロMODは今でもFNISなんじゃないかな、と。

必ずしも、"FNIS=古い"では無いと思います。用途に合わせてどちらで作るかチョイスするのが良いんじゃないでしょうか。


NEMESIS用MOD作成の流れ

behavior関連ツールが32bit版しか無い為、基本的に32bit版で作業します。LEは未所持でも問題無いです。ゲーム環境は64bitのみでも大丈夫。

作業はおおよそこんな流れだと思います。

  1. behaviorファイルをマニュアル改変
  2. 共通behaviorファイルからの差分を抽出(自動)
  3. 抽出した差分のクリーニング(手作業。SBT使用時のみ)
  4. NEMESIS用パッチの完成!

NEMESIS用MOD作成に必要なもの

結構色々使います。最初はそれだけでも苦労するやも・・・

hkxcmd

hkxとxmlの相互変換ツール。テキストエディタで改変する際には必須です。
www.nexusmods.com
テキストエディタはお好きなのを。僕はNotepad++使ってます。

Skyrim Behavior Tool

GUIでbehavior graphを見ながら作業できます。おそらく唯一のbehaviorエディタかと。お約束手順や禁じ手操作等色々あって、動かすだけでも最初苦労すると思います。
github.com
GitHubのプロジェクト名では「Skyrim Behavior Editor」なのですが、起動すると「Skyrim Behavior Tool」になってます。

Basics of Zartar’s Behaviour tool』(NickNak氏、Zartar氏、 ShikiyoKira氏、Distar氏とNemesis Discordの皆様豪華メンバー共著)というPDFがDiscordで探せます。正直これ読まないと、かなり使うのつらいと思います。

こちらは別作者さんの、バグフィクス中バージョン。
github.com


大きな問題の1つとして、セーブ時にいくつかの要素を勝手に書き換えてしまいます。この書き換え部分(Unintentional Edits)はそのままNEMESIS用パッチとして抽出されてしまう為、MODとしてパックする前に不要なパッチは削除した方が良いかと思います。
不要部分の確認法は最後に書いておきます。


HKX Extractor

改変したbehaviorファイルの差分を抽出し、MOD配布されてる形のパッチが作成されます。差分の参照元は、自環境やバニラのbehaviorファイルではないので注意(後述)。
github.com


共通behaviorファイル(SOBA)

NEMESIS対応MODに同梱されてるパッチは、改変部分だけ抽出した差分データです。つまり、

元のbehaviorファイルが共通でないとやばい

のです。
各個人がバラバラのbehaviorファイルを元に差分作ってたら、えらいことになるのは容易に想像がつきますよね。

そこでNEMESIS作者さんから、共通化前提のbehaviorファイルが配布されてます(.xml)。
github.com
多分HKX Extractorの"originals"フォルダに入ってる.hkxも同じだと思いますが、三人称用の"crossbow_direction_behavior.hkx"が無かったかも。
Discordで見つかる、上記pdfも入ったNEMESIS関係詰め合わせセットに入ってる版(.hkx)でも大丈夫そう(けどこっちは一人称用が無かったかも)。


SE/AE版のパッチについて

32bit版behaviorファイルで作業しますが、SOBA環境で抽出したパッチは64bit版でも使えます
NEMESISはLE/SE/AEどれも、前述の"SOBA"behaviorを使ってると思います。NEMESISにもxml版behaviorファイルが同梱されており、それを基準にローカル環境のbehaviorファイルを生成します。FNIS同様、この生成は都度全部作り直しなので、それ以前のbehaviorファイルの状態は問題にならないです(既存behaviorファイルからの追加/削除ではない為)。
つまりxmlの"SOBA"behaviorファイルは32bit版/64bit版共通であり、これを基準にしたパッチは、同様に32bit/64bit共通で使用可能という話です。

各ツールの注意事項と作成前準備

基本的な使い方は、それぞれのドキュメント参照してください。個人的に気づいた補足的注意事項だけメモ。

Skyrim Behavior Tool

GitHubだけでなく、アーカイブ内にもドキュメントがあるので注意。

フォルダ構成

behaviorファイル破損のリスクもある為、ゲームフォルダを直接操作するのはやめた方が良いと思います(まあ再生成すればいいんですけども)。ちなみにロードしただけでもbehaviorファイルのタイムスタンプ全部変わります。
ゲームフォルダである必要は無く、behaviorファイルとスケルトン(.hkxの方)だけ入ったフォルダを対象にすれば動きます。

で、このフォルダ構成がちょっと厄介でして。
試した限りでは、"steam"フォルダから始まる構成でないと読み込みに失敗します。"SteamLibrary"からのフォルダだと動きません。ツール上でフォルダ設定はあるのですが、反映されなさそうです。

以下のようなお約束のフォルダ構成であれば動いてます。ドライブレターは制限無いようです(僕のとこはEドライブ)。同梱ドキュメントによると、Program Files下に置かれてても大丈夫そう。

steam  
└─steamapps
    └─common
        └─Skyrim
            └─Data
                └─meshes
                    └─actors
                        └─Character
                            │  defaultfemale.hkx
                            │  defaultmale.hkx
                            │  
                            ├─behaviors
                            │  │  0_master.hkx
                            │  │  1hm_behavior.hkx
                            │  │  1hm_locomotion.hkx
                            │  │  AttackBehavior.hkx
                            │  │  bashbehavior.hkx
                            │  │  behavior.hkx
                            │  │  blockbehavior.hkx
                            │  │  bow_direction_behavior.hkx
                            │  │  crossbow_direction_behavior.hkx
                            │  │  horsebehavior.hkx
                            │  │  idlebehavior.hkx
                            │  │  magicbehavior.hkx
                            │  │  magicmountedbehavior.hkx
                            │  │  magic_readied_direction_behavior.hkx
                            │  │  mt_behavior.hkx
                            │  │  shoutmounted_behavior.hkx
                            │  │  shout_behavior.hkx
                            │  │  sprintbehavior.hkx
                            │  │  staggerbehavior.hkx
                            │  │  weapequip.hkx
                            │  │  WeapUnequip.hkx
                            │  │  
                            │  └─_1stperson
                            │      │  firstperson.hkx
                            │      │  
                            │      ├─behaviors
                            │      │      0_master-out.hkx
                            │      │      1hm_behavior.hkx
                            │      │      1hm_locomotion.hkx
                            │      │      bashbehavior.hkx
                            │      │      blockbehavior.hkx
                            │      │      bow_direction_behavior.hkx
                            │      │      crossbow_direction_behavior.hkx
                            │      │      horsebehavior.hkx
                            │      │      idlebehavior.hkx
                            │      │      magicbehavior.hkx
                            │      │      magicmountedbehavior.hkx
                            │      │      mt_behavior.hkx
                            │      │      shoutmounted_behavior.hkx
                            │      │      shout_behavior.hkx
                            │      │      sprintbehavior.hkx
                            │      │      staggerbehavior.hkx
                            │      │      weapequip.hkx
                            │      │      
                            │      └─characters
                            │              firstperson.hkx
                            │              
                            ├─character assets
                            │      skeleton.hkx
                            │      
                            ├─character assets female
                            │      skeleton_female.hkx
                            │      
                            ├─characters
                            │      defaultmale.hkx
                            │      
                            └─characters female
                                   defaultfemale.hkx
ロードとセーブの注意

ロードは基本"Open Packed Object”からで。Characterフォルダ直下の"defaultmale.hkx"を選択しますbehaviorファイル単体を選択することはできません。また、"defaultfemale.hkx"を選択するとロードに失敗します
behaviorファイル自体は男女共用なので問題無いです。女性専用アニメーションファイルを登録するときは、xmlでマニュアル作業。どのみちサブフォルダを含む新規アニメーションファイルの追加が、SBT上ではうまくいかない気がします。
projectのロード


セーブ時は、こちらのbehavior毎の個別セーブを推奨。project一括セーブはたまに失敗します
SaveViewedBehaviorFile


HKX Extractor

繰り返しになりますが、"originals"フォルダはあまり触らない方がいいかと。整合性の怪しいパッチになってしまいます。


パッチに含まれるゴミデータの確認準備

前述の通り、Skyrim Behavior Toolはセーブ時に特定の複数要素を書き換えてしまいます。結果、抽出したNEMESIS用パッチには「意図しないゴミデータ」が含まれます。"Unintentional Edits"と呼ばれてるようです。
xEditのdirty editに似てますが、こちらは要素の値を書き換えてしまう為、危険度は高いのかも。残したまま配布されてるMODも見かけますが、個人的には掃除しておいた方が安心に思えます。

確認方法1.Discordで探す

"ZBT Unintentional Edits.txt"というファイルが、NEMESIS関連をまとめてパックしたアーカイブに入ってます。各behaviorファイルごとに、Unintentional Editsの発生するnodeの固有名(#xxxxの番号)がリスト化されてます。パッチ抽出後にこれと照合して、該当nodeが自分の意図した改変でなければ削除します。

確認方法2.自分でUnintentional Edits一覧を抽出する

Discordで見つからなかったり、リスト化されてないbehaviorファイル(主にクリーチャ系)を改変する際には必要な作業かと。
未改変の"SOBA"behaviorファイルをSkyrim Behavior Toolで開き、何も触らずそのままセーブして、差分を抽出するだけ。これがそのまま「Unintentional Editsリスト」になります。
以下の手順で可能です。例として0_master.hkxから抽出します。

  1. Skyrim Behavior Toolで"defaultmale.hkx"を開く(Open Packed Project)
  2. 0_master.hkxのタブを選択して"Save Viewed Behavior File"からセーブ
  3. セーブした0_master.hkxを、HKX Extractorの"edits"にコピー
  4. HKX Extractor実行(MOD名は4-6文字なら何でも。aaaaとか)
  5. たまに出力されずに落ちるので、そのときはもう1回('_')
  6. HKX Extractorの"mod"フォルダに差分が抽出


結果、こんな感じに差分が出ちゃいます。これがUnintentional Edits。
UnintentionalEdits
ランダム性は無く、必ず同じ所を書き換えてるようです。ちなみにHKX Extractorは、完全同一だと差分出ずに終了します。
他のbehaviorファイルからも、同じように出ます。
Projectでセーブすると、また違うのが出ます。吹っ飛ぶことがあるので基本単体セーブが安心。

確認方法3.三人称視点の人間種族用だけでいい人向け

ゴミパッチリスト作りました。
skmod.hatenablog.com


とりあえずこんなとこで。何か思い出したら追記するかも。
次回、実際に作成してみます!

作成実験はこちら
skmod.hatenablog.com
skmod.hatenablog.com