忍者ブログ

方向音痴のSkyrim

PCゲーム「Skyrim」の雑多なCKいじり日記

職業性フォロワーシステム01【ActorValueと個人設定】

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

職業性フォロワーシステム01【ActorValueと個人設定】

前回から10か月。
かなり長い間放置していましたが、また少しずついじりはじめました。

以前作った「Vanilla Followers AI」では、フォロワーの方に特殊なAIを与えて、それぞれの職業に応じた戦い方ができるようにしました。こちらのフォロワーシステムでは、特殊なAIに職業名を付けて任意のフォロワーに与えるのが目的。フォロワー拡張ModとカスタムAI適用Mod、二つの機能を持ったModにするつもりです。
方針が決まれば作業開始。しかし作業自体はこれまでやってきたことの繰り返しです。AIはVanilla Followers AIからコピー。コピーしたAIを整えて、制御する方法を考えて……。色々やっているうちになんとなく形ができてきました。



四苦八苦しながらMCMメニューも作ってみました。作るのは大変だけど、使えるとなると便利。これらを会話やコンソールなどから一人ずつ設定するとなると、人数が増えるにしたがって確実に「やってられんわ!」ってなりますからね……。
この例だと、イリアさんは追従時「錬金術師」として素材や薬を拾い集め、戦闘時は「治癒師」として振る舞うようになっています。セロはどちらも「自由」で特殊なAIを指定していない状態。Gaeaは追従時のAIをオフにして、フォロワー付属の独自AI(フォロワー管理クエストより優先度が低い)が有効になるようにしています。
作戦画面みたいでちょっと楽しいです。

■個人設定の管理
各フォロワーの個人設定が増えると、それらをどう制御するのかが悩みどころです。設定項目を覚えさせるには、どうすればいいのでしょうか。全てをScriptの変数で制御するというのも一つの手段ですが、Aliasからはずしたりクエストを止めたりしてしまうと設定も消えてしまいます。

Actor Value
バニラのフォロワークエストでは、"WaitingForPlayer"というActorValueを使って、フォロワーの待機と追従を制御しています。「0」の時が追従で、「1」の時が待機です。この"WaitingForPlayer"は、もっと大きな値、例えば「5」でも「10」でも問題なく設定でき、複数の状態を制御するのにもってこいな感じです。
このように便利ではあるのですが、問題もあります。それは他のフォロワー拡張Modも、フォロワーの複数の状態を管理するのに、"WaitingForPlayer"の数値を使っているからです。このため、複数のフォロワー拡張Modを併用した際、"WaitingForPlayer"の制御で競合が起きる可能性が生じます。

そこで、「他のModが使ってなさそうなActor Valueを探してみようか」ということになります。
CKwikiを見ると、一応 "Variable01~10" のActor Valueがユーザー定義の数値として用意されているようです。しかし、これらはすでにスカイリム本体やDLCで様々な用途に使用されています。"Variable09"は宿屋の主人くらいしか使ってないようですが、それでもやっぱり不安。
じゃあその他の……といっても、ものによってはセーブデータに記録されないその場限りのValueもあります。
誰にも使われていない、セーブデータに値が保持されるActor Valueを探し出して、これなら絶対大丈夫と使えるようなものはなさそうです。

・Spell
解決方法の一つとして、Spellがあります。制御する状態が「Yes/No」の二つだけなら、この方法が使えます。たとえば何も設定していない空のMagicEffectを持つSpellを用意して、このSpellを持っているかいないかで行動を制御することができます。
注意点は、Spellがなにかの拍子ではずれてしまうことでしょうか。効果時間付きのSpellを付与すると、プレイヤー以外のNPCはセル移動のタイミングでSpellが外れてしまいます。外れて欲しくなければ、Abilityとして与える必要があります。
たとえば、フォロワーに指示することでキナレスの祠を使わせると、加護を与えることができます。プレイヤーと同じく数時間の効果がつくのですが、NPCはセル移動のタイミングで取れてしまいます。

・Faction
さらに応用の幅の広い解決法として、Factionがあると思います。制御したい状態が互いに背反の関係にあるなら、Faction Rankを使うことで、1個のFactionで100以上の状態を管理できます。自作Mod専用のActor Valueを新設できるようなものです。セーブにも記録されるし、他Modとの競合もありません。
Faction Rankは-128~127まで設定できるようです。ただしマイナスの値はそのFactionに属していないとみなされるので、0~127が扱いやすいかもしれません。
FactionはNPC個人に与えられるので、フォロワーから外してもFactionを残せば設定が維持されることになります。再度フォロワーに加えた際、設定をし直す必要がなくなるので使い勝手もいいです。
しかし、NPCのFactionを全解除してくるScript処理には無力です。Factionを外された時点で設定も消えます。Modでそういった処理をしてくるものは、まずないと思います。が、ハースファイアで養子化処理の際行われる例があったので一応注意が必要かもしれません。

その他、特別なアイテムやKeywordを持たせる方法など、工夫次第で設定を保持させる手段はそこそこ作り出せるでしょう。よりどりみどりというほどにはない気もしますが……。
とりあえずはこの辺りの方法を駆使して、フォロワー達に色々な設定を持たせて遊んでみようと思います。

前へ | 次へ


余談になってしまいますが、自作フォロワー側に特殊なAIを設定する場合、そのAIはフォロワー拡張Modのフォロワー管理クエストより高い優先度で動作するよう調整した方が、扱いやすくなるように思います。

もしフォロワーの独自AIを制御するクエストの優先度が、フォロワー管理クエストより低いとどうなるでしょうか。
例えば、設定した独自AIが、「プレイヤーが隠密状態で抜刀している時」のみに動くとします。フォロワー拡張Mod側で追従時のフォロワー用AIをオフにできる設定があったとしても、「プレイヤーが隠密状態にない時」、「隠密していても抜刀していない時」、そのフォロワーをフォロワーとして制御するAIが全くない状態になってしまいます。この時そのフォロワーは、自分のActorデータに設定されたAI等に従って動くことになります。AIによっては自分の待機場所、バナードメアとかに帰ってしまうでしょう。
こういったきわめて特殊な条件の時のみ動作する独自AIでは、フォロワー拡張Mod側での対処を期待するのは、不可能です。

独自AIの優先度を高くしておけば、そのAIが動いていない時はフォロワー拡張ModのAIで動いてくれます。独自AIを制御するクエストの優先度は、併用を想定するフォロワー拡張Modの管理クエストより「1」大きい値であれば十分です。あまりに高い優先度にしてしまうと、それはそれで他Modとの互換性が失われる可能性があります。ちょうどいいのが一番。
「Vanilla Followers AI」では最強の「100」に設定していますが、これは当時のSimple multiple followers「優先度:99」にとりあえず対応するためでした。最新バージョンのSMFは優先度50になっているので、必要であればVFAIの制御クエストをもっと低い優先度にできます。フォロワー拡張Modとの優先度に依存しますが、最低で「81」くらいまでに落としても大丈夫だと思います。セラーナさんを制御するクエストの優先度は「80」なので、これよりは下げられません。もちろんドーンガードを導入していないのであれば、フォロワー拡張Modとの兼ね合いを見つつ、シセロと闇の一党の新人に対応できる「70」まで下げることが可能です。

またフォロワーの独自AIが全てシーンによって制御されているのであれば、独自AI制御クエストの優先度はいじらなくても概ね大丈夫です。シーンが一度動き出したら、シーンに登録されているAIは常に最優先で動くようです。それより前に他のシーンのAIが動いてたら、だめかもしれませんが
独自AIを全てシーンで作るのであれば、どのフォロワー拡張Modとも高い互換性が期待できるかと思います。
PR

コメント

※スパム対策のため、コメント内やその他の項目に「http://」や「https://」があると投稿できません。全角で入れていただくか、URLであることを明記して以降のアドレスのみ入れていただくかでお願いします。 For stopping spam comments, this form doesn't accept the following words, "http://" and "https://".

Author

UNI
Skyrimで遊ぶのも、CKで改造するのも好きなファンタジー好きです。
戦闘苦手で難易度は基本EASY、慣れてもNORMAL程度。 アンデッド恐怖症なので、ノルド遺跡探索が辛い……。

ブログ内検索