NPC用のLeveled List、Leveled NPCのお話です。
基本的にはItem用のLeveled ListであるLeveled Itemと同じなのですが、アイテムと違ってそのまま使われないことが多いです。Leveled Listに入ってるNPCをTemplateとして、AIやステータス等、なにかしら変更して使われてます。Templateを使って変更したNPCが更にTemplate指定されたりと、色々使い回されてわかりづらいです。
面倒でわかりづらい物は図で視覚化してみると理解しやすいので、ちょっとまとめてみました。あまりNPCのスポーン系をさわったことないので、間違いあったらすいません。
Leveled Listの基本的なことは過去記事にて。
Leveled NPCの基本構造
WhiterunとSolitudeの衛兵を1人づつ、Leveled Listからセルに誕生するまでの流れを図にしてみました。どちらの衛兵も配置場所こそ決まってますが、スポーンする度にLeveled Listの恩恵で、異なる衛兵が誕生します。
※実際のフローはLveled Listが起点ではなく、スポーンする各衛兵を起点にしてLeveled Listから「吸い上げる」イメージだと思います。参照リンクのわかり易さ優先ということで。
ACHR:0003706AのWhiterunの衛兵がスポーンする流れをざっくり説明。「NPC_」はBase ID、「ACHR」はRef IDに相当します。
- Leveled Listの中には帝国兵だけが9人居ます。まだ実体の無い「霊体」みたいなもんです。この中のどれか1人が選択されます。
- Leveled Listの「霊体」NPCから抽選で1体が選ばれ、このNPCのTemplateに使います。Leveled ListからNPCを抽出する為の「器」。この時点ではまだ帝国兵です。(※Leveled Listに9人のシャアが居て、このNPCがフル・フロンタルみたいな物。意味不明だったらすいません)
- 「器」NPCを更にTemplate指定して、Factionごとの雛形衛兵を作ります。この例ではFaction設定や装備を変えてWhiterun衛兵の雛形に変更してます。
- 「雛形」をさらにTemplateにして、個別の「衛兵」を作ります。
- セルに配置された「実体」に入ってスポーン完了!
流れとしてはこんな感じだと思います。
Templateまみれでわかりづらいですが、これのおかげでFaction毎に大量のNPCやLeveled Listを作成せずとも、似たようなの流用して装備とAI変えるだけで済んでます。
Leveled NPCの構造詳細
TES5Editで見ながら進めます。基本説明でつけた番号と名前を使います。霊体とか器とか僕が勝手につけた名前です。くれぐれも他で使わないでくださいw
1.Leveled List
全部載せると長いので一部のみで。
9人の帝国兵がいずれもLV1~の設定になってます。Calculate方法がいずれの場合でも、1/9のランダムですかね。この帝国兵はLV20~LV50の間でプレイヤとレベル同期します。
Referenced Byは1個だけで、「器」NPCのみがこのLeveled Listを使ってます。
2.「器」NPC
Leveled Listから選ばれた1人をTemplateにしたNPCです。1.のLeveled ListがTemplate指定されてます。
Template FlagsにはFactionとAI Packageが設定されてないので、これらは引き継いでません。ここで改めて設定されてます。でもまだ帝国兵です。
Referenced Byは90個。大半はテストセルに配置されたNPCになってます。あとは各Factionの「雛形」に作り変える為の参照。
参照の一部。それぞれの雛形作るために、各Factionぽい物から参照されてます。勿論「Whiterun Guard」からも。
3.「雛形」NPC
Whiterunの衛兵を見ます。「器」がTemplate指定されてます。
Template Flagsからは、Faction、BaseData(名前やConfig等)、Inventory、Keywordが外れてます。これらを「器」NPCから引き継ぐと帝国兵になってしまうからでしょうね。
いかにも「Whiterun衛兵の雛形」といったEditorIDしてます。
Referenced Byは33個。これを雛形に個々の衛兵が作られてるようです。一部はこのままセルに置いてる模様。
4.「衛兵」NPC
様々なTemplateを使い回し、個別で完成した衛兵の中の1人です。ルーツを辿ると別Factionにも同じNPCがいることでしょう。
「雛形」がTemplate指定されてます。
AI PackageとKeyword以外がTemplateから引き継がれています。AIを共用化しちゃうと場所によってキョドりそうですしね。名前は「雛形」から引き継がれてるので、ここでは空っぽです。
Referenced Byは1個。最終的な実体となるACHR:0003706Aです。無事到達!
まとめ
- リソース共有の為にLeveled NPCを多くのNPCで使い回す
- 使いまわす時はTemplateとして指定する
- Template Flagsの設定で使い回す項目を選べる
- 使い回して雛形を作り、個別のNPCに展開する
ぱっと見ややこしいだけで、別に難しいことをしてる訳ではないようです。これはあくまで一例なので、物によってTemplateの回し具合が色々異なると思います。とはいえ基本は同じで、「使い回して新たな雛形を作る」ことです。これをしないとNPC毎に膨大な量のLeveled ListとNPCを作り直さないといけないので、労力もメモリも大変なことになりそうです。
見つけたNPCから元のLeveled Listを探したいことの方がほとんどだと思います。この作業を逆回しにして、Templateをたどっていけばいつか見つかります。
おまけ
透明NPCが発生するバグに遭遇した場合
このTemplateの下ですが、大抵はFoxRaceになってます。
本来ならえらいことですが、Template FlagsでUse Traitsのチェックが入ってれば、Templateの種族が使われるので問題無いです。大抵Template使うなら種族も使ってるでしょうし。
稀に(CKのバグ?)、Tempalte Flagsの設定がされてるにも関わらずTemplate指定が空欄の場合があります。この場合、有無を言わさずFoxRaceが適用されてしまうので、透明だったり、ことによると確定CTDになってもおかしくない気がします。esp見ればすぐわかるので、心当たりのある人は是非。
関連記事あります。
Skyrim.esmにReferenced BYが出ない
別記事で出し方説明ありますので、そちらをどうぞ。
もしMODで追加した「霊体」がアンインストールで消えたら?
首無しNPCが発生します。詳しくは別記事にて。
こんなとこでお開きです!