まさかできるとは思いませんでしたが、CombatOverrideを使えば、それ系のMOD無しでも子供を無理やり戦わせることができるようです。
テストプレイも命がけでした。敵が近くに来ると逃げる仕様にしたので、自分が常に囮にならなくちゃいけなかった。
子供は無敵で不死です。この子らが戦えるようになると、敵にとってはかなりの脅威でしょう。「なんで死なないんだ!」と絶望しながらテストプレイに付き合ってくれた、サンガード砦のフォースウォーンの皆さんに感謝します。
Combat Override Packageは、Actorデータの「AI Packages」タブ内にて確認できます。たいていの場合は「NONE」だと思いますが、こちらに戦闘時に動かしたいAI Packageを登録したFormListを設定することで、通常の戦闘行動に一定の縛りを作ることができます。
(以前はObserve Dead Body Override Packageをいじくりました。内容は
こちら。)
この項目は、Quest Aliasにもあります。「Dialogue Follower」のAliasを見ると、このCombat Override Package Listに設定が入っています。登録されているのは「Hold Position」のAI Packageで、屋内か屋外かの二つが用意されています。どちらもPCからあまり遠くで戦わないような設定がされています。
"
Procedure: HoldPosition"は、Combat Override Packageのみで使われる特殊なProcedureでもあるようです。これでLocationを指定しておけば、大体その範囲内で、自分のCombat Styleに沿った戦闘を行ってくれます。つまり、このProcedureはNPC達の戦闘と同時実行できるタイプ。状況によって、設定が無視されがちなProcedureではありますが。
逆に"Procedure: Travel"などは、Combat Override Package内で使用すると、そのProcedureが動いている間は、まるでFlagsに「Ignore Combat」のチェックを入れたかのような挙動となります。目的地に着くまで一切の戦闘を行わず、どんなに敵に切り刻まれても体が動く限り目的地を目指し続けます。つまり、NPC達の戦闘AIを上書きしてしまうタイプ。物理的な行動を行うフィジカルなProcedureは全てこのタイプになるようです。
となると、子供を無理矢理戦わせるには"
UseWeapon"を含んだPackageを、Combat Overrideとして作ればいいことになります(魔法を使わせるなら"UseMagic")。
「UseWeapon」は、ダミー人形や弓の的で戦闘訓練をしているNPCが使っているAI Packageです。これにはダメージ判定を「ON/OFF」するフラグがあるので、ダメージONにしてやれば実戦で使えます。
実際に作ってみました。
最大の欠点は、そのNPCに設定された「Combat Style」が死んでしまうこと。なにせ全ての戦闘AIをフィジカルなProcedureで拘束するのですから。もっとも子供種族はデフォルトで戦わないので、CombatStyleを持っていても意味はありません。
結局、Procedure Treeで擬似的な「Combat Style」を作ることになりました。
これは間接攻撃ができる武器を使用するPackage。むしろその武器しか使わない。「Weapon: Ranged」は多分弓だけな気がします。魔法の杖とかもいけるのかな。
ちなみにHoldPositionしている間は、子供のデフォルトの戦闘AIが働いて、逃げ惑う行動になります。
「Flags」はこんな感じ。
「Weapon Drawn」にチェックしてますが、こうしておかないと"UseWeapon"がうまく動かなかったのでチェックを入れているだけです。臆病設定のNPC以外は戦闘中常に武器を抜いた状態になるので、特に理由がなければチェックを入れなくてもいいようです。
それ以外はフォロワーのCombat Override Packageと同じ。
Procedure Tree。
とりあえずPCの目の届く範囲をうろちょろし、生死問わずFindで見つけた全てのActorから距離をとり、あわよくば敵に向けて弓を引く行動です。
今回はフォースウォーンを相手にしたテストプレイなので、敵判定は"Find"で見つけた結果である「FoundActors」が、「ForswornFaction」のファクションに入っているか否かで行っています。でないとActorを見境なく攻撃してしまうので。たいていはPCが真っ先に狙われますが。
ピンクで色を塗ったProcedureは、Flags Overrideで「Weapon Drawn」のチェックをはずしています。"Procedure: UseWeapon"が実行された後、なぜか弓を引き絞ったままの状態で移動するようになってしまうためです。この状態だと移動速度がやたらと落ちて戦闘に支障が出るので、実行機会が多そうなProcedureで一度武器を収めさせる必要がありました(
WaitでBranchを強制終了させているのが原因でした……。UseWeapon行動の途中でProcedureが無理に終了させられるとそうなるようです。Simultaneous BranchをやめてUseWeapon単独実行させると、挙動が改善します。しかし完全ではないので、やはり他Procedureで武器を収めさせる動作が必要です。一応このProcedureTreeでも動くので、記事の説明はこれに沿って続けます)。
もろもろの設定値はこちら。
"Procedure: UseWeapon"での攻撃回数は、1回に限定しています。1回ごとに状況を判断し直させるのですが、これで十分機能します。状況に変化がなければ、その場にとどまってちゃんと連射してくれます。むしろ複数回攻撃できるようにすると、敵が死んでも設定回数分の攻撃が終わるまで射ち続けてしまうので、不自然でした。
Simultaneousでタイマーとして同時実行している"Procedure: Wait"では、”CombatTimer”の3秒を使っています。これは弓で一回攻撃を行うのに十分な時間かつ、随時状況が変わる戦闘にもそこそこ対応できる時間です。
Findは、キーワードやFormListが使えるとすごく便利なんですが、それができないのでActor全部を検索して、後のProcedureのConditionsで敵か味方か死体かと、ふるいに掛ける方法をとりました。
敵のファクションをFindするという方法もあります。多分この方法が、後々扱いやすい気がします。
※後日、このProcedure Treeはちょっぴり書き換えました。
どうやら「Procedure: HoldPosition」は単体で使わないとうまく動作しないらしく、Findと同時実行すると棒立ち状態になるのが分かりました。HoldPositionの代わりに0.5秒を設定したWaitを使う方法に変更しました。
上記のProcedure Treeの動作を確認したところ……、というか試行錯誤してようやくそれっぽいものができた結果ですが、まあおおむねいい感じに動いてくれる形にはなりました。
長くとも3秒ごとにターゲットを取得しなおすので、PCの近くにいる敵を優先的に狙って攻撃してくれるようです。
攻撃はどうも正確性が低くて、明後日の方向に矢が飛んでいくことが多々あります。PCに当たることも。コンソールで無敵になってなかったら、多分敵より先に死んでいたはず。体の脇に刺さっているのは、フォースウォーンの射手の矢と、お子様の誤射の矢です。前のほうにも2、3本、誤射分が刺さってます。ちなみに隣にいるフォースウォーンは、矢2発でお子様が仕留めました。
あくまで攻撃は"UseWeapon"なので、標的との間に障害物があってもお構いなく射ようとする。
射線上に無関係のNPCが入れば、設定しだいでは射るのをやめてはくれるけど、自分から位置取りをしなおすことはない。
AI Packageで全ての行動をまかなっているため、かなりぎこちない動作ではあります。しかしPC側がうまく誘導してやることで、彼女一人で砦の外にいる敵を一掃できるくらいの動きはしてくれました。
お互い満身創痍にはなりましたが、子供も戦えると知って夢が広がってきました。これで配偶者と養子を連れて、家族で冒険の旅ができそう。一般の子供達は戦わなくていいけど、ドヴァキンの養子達は……戦ってもいいんじゃないかって思ってましたから。ダミー人形を前にダガーを振るうあの子らの動きは、完全に本物です。フォースウォーンの暴君も真っ青だわ。
基本構造はできたので、今後は改善と拡張で試行錯誤するつもり。戦闘用なので、できる限り軽快に動くProcedure Treeにしなくてはいけませんが。
今回はかなり極端な例でしたが、Combat Overrideを活用すると、戦闘中におけるNPC達の行動をこれまでのものとはちょっと違ったものにできます。ヒーラーはもちろんのこと、普段は逃げ回るだけだけど、体力が一定以下になるとキレるとか、好きな人が近くにいる時だけ戦うとか、敵が女性だと戦わないとか、あと、隠密で影の戦士を発動しつつ何処か遠くへこそこそ逃げるとか。実用的な例では、
近接系攻撃をして欲しい場合に、敵の間合いを強制的に詰めさせたり(
CombatStyleだけでできました…)、逆に間接系攻撃専門のNPCは、敵との距離を開けさせたり、CombatStyleを補助する形のPackageを作ることもできそうです。制約が多いだけにできることは少なそうですけど、面白いかもしれません。
※修正項目多いので、そのうちまともな記事を書き直したいです。
次へ
1. OverridePackage、頑張ります!
UNIさんも「攻撃的回復」の方法に興味を持ってくださって、とても嬉しいです!!
しかし、この方法を試すのに『{ SPS』を使用したので、通常の雇用の場合にどんな挙動になるかは、未確認です(すみません…)。
<メリット>
フォロワーが回復を当ててくれる感UP、誰でもヒーラーになれる可能性、攻守に優れたAI
<デメリット>
ムゴさ、未知の不具合の発生
<既知の問題>
【1】時々、対象の足元?を弓を引き絞ったまま追い続けてしまう現象が確認されました。
この状態になると完全にサンドバック状態になってしまうので、麻痺、弱フスロダ、銀塩などを放ち、よろめきを発生させて行動を初期化してやると、すぐに復帰できるみたいです。プレイヤーと敵とフォロワーの3者の距離感が近いときに出やすい印象です。
憶測になりますが…プレイヤーのヘルスが減り、回復動作に移った際にフォロワーが敵から攻撃を受けると、フォロワーの意識が敵に向いてしまう→しかし、敵はPackageのTargetではないため、攻撃できずに弓を向けたまま何もできなくなる。の流れなのかな?という気がします。もし、そうだとしたら…攻撃的回復ならではの問題点ですね…(><;)
【2】敵が死亡せずに膝をついたり、麻痺などで「敵対したままの状態で、一時的にダウンしている」ときは、攻撃的回復の「攻撃ダメージ」も発生してしまいます。
通常時は、攻撃のダメージは乗らず、回復の効果のみが発動しているようです。
以前に挑戦したときに頻発していた、初期化すらできないカクカクの症状は今のところ全く出ていないので、少し安心しております。
ネットから解決するための情報がなかなか集められなくて困っておりました。
OverridePackageに至っては、考察の過程を残してくださっているのは…UNIさんのブログだけでした。(記事を書いてくださる方がもっと増えるといいのですが…)
スカイリムのAIPackageに興味を持っている方が少ないので、誠に勝手ながら…UNIさんの事をとても頼りにしております。
私もCKwikiの内容を自分なりに解読して、何か解決方法が無いか試してみます!
UNIさんの他の製作の妨げになってしまわないか心配なのですが…m(_ _)m(もちろんご自身の製作を最優先してください!!)
個々のフォロワーに特別なQuestやScriptが今のところ必要でないので、Packageを上手く工夫できれば、ヒーラーフォロワー作りのハードルを一気に下げられるような気もしています。
全て組み合わせることができれば、もっと洗練されると思います…(汗)
気長に、そして…楽しみに待っております!!
Re:OverridePackage、頑張ります!
個人的な印象ですが、Procedureの「UseWeapon」「UseMagic」「Activate」は実行途中で邪魔が入るとおかしくなりやすい、使う側としては非常に扱いづらいProcedureという気がします。
Procedure Treeを作るときは常にこれらのProcedureがうまく動かなかったときを想定して、回避なり修正なりができる工夫が必要になってしまうんです。最終的には、「7割8割で大体動いてくれればいいや」と妥協してしまうのですが;;
既知の問題【1】は、Procedure:UseWeaponの実行がうまくいかずに止まってしまった状態なのかな、と思いました。UseWeaponはターゲットに対してかなり正確に照準を合わせようとしているみたいで、合わない限り撃つこともない、ような感じがあります。そこへ敵が攻撃をしてきて位置をずらされたりしたら、照準を合わせなおすこともできずにProcedureが止まってしまうのかなぁと。Procedureの中身を見ることはできないので、憶測しかできないのが歯がゆいです。
回避策のひとつとしては、邪魔が入る前に素早くUseWeaponを実行&終了させてしまうのが考えられます。回復矢の一発の回復量を大きくすれば、一発二発ですぐに回復行動が終了できるので多少問題が改善されるかもしれません。
ちなみにバニラのフォロワークエストはAliasにCombat Overrideを指定しているので、Actorデータに登録したCombat Overrideを上書きしてしまいます。他のフォロワー拡張Modでも上書きしてしまう場合が多いかと思います。
うちの「{SPS」ModはCombat Overrideを空白にしているので、ActorデータのCombatOverrideがそのまま生きてくる仕様になってます。フォロワーの通常行動も超シンプルに作っているので、独自行動を持つフォロワーNPCのテストプレイ専用フォロワー拡張Modとして最適かもしれません。……むしろその目的で作ってたりします。複数のフォロワーNPCのActorデータにCombat Overrideを仮設定し、「SPSで全員連れ歩いてまとめて動作確認」がとても手軽です。
なので、どんなフォロワー拡張Modを使っていても確実にCombat Overrideを適用するには、そのフォロワーNPC専用のQuestを作ってあげる必要が出てきます。
以下の記事を少し書き直したので、よろしければ参考にしてみてください。まだ理解途上ですごく分かりにくい文章になっているのが申し訳ないのですが、記事の真ん中あたりに説明があります。
・変身魔法を作る02【NPCに独自行動をとらせる】
http://skyrimeasy.blog-rpg.com/ckworks/werewolf02
「Priopity:99」のクエストAliasにCombat Override Listを登録するだけでいけるので、難しくないかと思います。むしろうまく動くAI Packageを作るほうが大変かもしれません……(^^;