忍者ブログ

ファルログ

Home > ブログ > > [PR] Home > ブログ > CK作業記録 > 仲間を守る!「新・補助系フォロワー」への挑戦①

[PR]

×

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

荒療治

攻撃的回復を行うヒーラーフォロワー、自分でも作って遊んでみました。
味方がこちらに向かって弓を構えるとドキッとしますけど、こういう強引な治療もいいですね。回復を始めると間髪いれず2発目3発目と立て続けに射込んでくれるので、とても効率がよく見た目もかっこよかった! この荒々しさが戦士系フォロワーの回復補助手段に最適ですが、矢に薬を塗るという発想は錬金術師フォロワーにも合いそうですね。

近づきすぎると射ってくれないというのは、こちらでもありました。3歩くらい距離をあけないとだめみたいですね。設定を色々弄ってはみたのですがうまく調整できず、むしろ弓を「UseWeapon」で無理やり使わせているが故の挙動なのかなという気もしました。「UseMagic」でも同じ現象が起きてしまうので。
AI Packageはこんな感じのものを作って試しました。
------------------------------------
Template: UseWeaponAlreadyHeld

WeaponType: "Weapons: Ranged"
Use Weapon Location: ""PlayerRef", Radius: 700"
Target to Attack: "PlayerRef"
Trigger Radius: "800"
Hold When Blocked?: "False"
それ以外はデフォルト設定のまま。

Flags:"Allow Swiming", "Weapon Drawn", "Preferred Speed: Run", "Friendly fire comments", "Aggro Radius Behavior"
------------------------------------
弓を使うのでRadiusは2000など大きくとってもいいかと思いましたが、障害物にさえぎられることが多かったため結局「600~800」程度に落ち着きました。Hold When Blocked?は、Trueだと敵に射線をさえぎられると射ってくれなくなるのでFalseに。NeverEnd?はプレイヤーの体力が8割以上回復しきるまで連射してほしいのでTrueのままで。
「UseWeapon」は結構繊細な扱いが必要みたいですね。こちらを狙うだけで、お互いの距離を調整してあげてもなぜか矢を撃ってくれない現象が、時々起こりました。通常の戦闘とは違う狙い方(?)をしているのかもしれません。

それからブログにコメントいただきありがとうございます! テクスチャ弄りに飽きてきて息抜きにAI Packageを弄くりたくなっていたのと、ファル粕さんと同じように簡単な設定だけでフォロワーにちょっと変わった行動をさせたいと思っていたところだったので、ヒーラーフォロワーの記事はタイムリーでした。Scriptを書くのがいまだに苦手でして、できる限りScriptを使わない形でできたら
……と楽をしたい一心でスムーズに動くAI Packageを考えております(^^;

次回の記事も楽しみにしていますね!
Re:荒療治
  • Name: ファル粕
  • (2014/11/20 14:35)
UNIさん、いつもアドバイスありがとうございます!
AIPackageの作成はとても面白くて、ついつい時間が経つのを忘れてしまいます。

>この荒々しさが戦士系フォロワーの回復補助手段に最適ですが、矢に薬を塗るという発想は錬金術師フォロワーにも合いそう
同胞団の戦士は魔法を使わない設定があるので、ヒーラーを入れたい場合にどうしよう??と考えているうちにこの形になりました。「錬金術師フォロワー」っていいですね~♪ 錬金術を活かしているNPCがスカイリムには未だいないですよね…。興味津々です!ヴィルカスサイドのOverridePackageの挑戦と並行して、ファルカスサイドでは現在、ポーション(食べ物)の研究をしております。実はこの検証実験は……耐性実験よりもめんどくさいことをしなければならず…結果、ヴィルカスサイドヘやすらぎを求めてしまいました(汗)
フォロワーにポーションを使わせる仕組みが徐々に分かってきたので、また独特なフォロワーが作れるかもしれません。

>Radiusは2000など大きくとってもいいかと思いましたが、障害物にさえぎられることが多かった
教えていただいた情報が非常に的確で、範囲を広げすぎると遠くから打ってもらえるのですが、回復頻度がかなり落ちてしまいました。最近手を加えたPackageでは「Flee」を使うことによって、遠くの安全なところから打ってもらえるようになりましたが、遠距離になってくると矢が当たるまでにかかる時間が少し増える分、プレイヤーに対して命中率が下がるという事態が起こりました。Radius「600~800」は絶妙な数値なのかもしれません。

>ヒーラーフォロワーの記事はタイムリーでした
こんなご相談ばかりしてしまい、ご迷惑になってしまっていないか…危惧しておりましたので、本当に良かったです!私もScript抜きでOverridePackageだけで補助系フォロワーを実装できないか(それ以外に方法が無かったので…汗)と思っておりました。Scriptは少しずつ挑戦しているのですが、エラーが解決できずに処理が完成したことが未だない状況です。

ようつべで、最近こんな面白い動きをするNPCを見つけました→「Skyrim Bug Jump npc」。フォロワーにジャンプをさせるためのScriptを作れないかいろいろ調べたのですが…ジャンプに関するmodはほとんどがモーション関係のものだったので、仕組みを解読するための情報が少なすぎました。UNIさんの{SPSのフォロワーの動きを見ていて、例えばプレイヤーがジャンプするとフォロワーも連動してジャンプするみたいにできたらいいな~!と思っていたのですが…。先輩Modderの方々が取り扱っていないことから考えて、相当難しいのかもしれないです。

仲間を守る!「新・補助系フォロワー」への挑戦①

ファルカスとマダナックの弟子達は、マルカルスの研究所にこもって実験の日々…。
ふとジョルバスクルに帰りたくなったけれど、まだまだ実験は続きそう。
検証実験の合間に息抜きも兼ねて…面白いアイディアは何かないかな?と、考えていました。

魔法の耐性を調べるために、色々なSpellやMagicEffect、Projectileを見ているうちに…だんだんと製作のアプローチの仕方が増え、以前に挫折した『補助系フォロワー』の製作に再び挑戦してみたいな!と思いました。



【新人リアの成長】 vol.1~回復弓~前編

今回の舞台はジョルバスクル―――

主人公ヴィルカス(プレイヤー)は、訓練所に赴くと…リアが新たな試みをしていることに気付いた。

ヴィ「やぁ、リア!調子はどうだい?」



ヴィ「おっ!?弓か…!君の弓術の腕前はアエラから聞いているぞ!かなり素質があるってな!!…ところで、これは何をしているところなんだ?」

リア「ありがとう、ヴィルカス。まだまだ新人だけれど…私自身、あなたたちの足を引っ張らないよう色々考えたの。…私は意外と弓が合っているみたいだから、前衛を『補助する方法』を模索しているところよ!」



ヴィ「頼もしいね…!ちょうどある仕事が舞い込んでな…。一緒に来てくれるか?」

リア「いいだろう、同志。」


【主流となっている補助系フォロワー技術について】

Nexusには偉大なる先人たち、先輩Modderの方々が製作された、『ヒーラーフォロワー』達がいる。これらのフォロワー達は多くの技術と試行錯誤の結晶であり、ヒーラーの製作のハードルはかなり高い。残念ながら、バニラのスカイリムには『他者を補助する行動』をとるような仕組みが実装されていないことが最大の理由のようだ…。そのため、ヒーラーmodではScriptやQuest、AIPackageなど独自の方法を駆使して、結構強引にプレイヤーを回復させようと試みている。

先人たちの技術には驚かされた。

ある者は、MagicEffectに専用のScriptを持った独自の回復Spellによって、『自己回復と同時に、周囲にいる者(プレイヤー)をヒーリング』する。いわゆる、GrandHealing(大治癒)型のヒーラーフォロワーである。

またある者は、プレイヤーに魔法を強制的にキャストする『専用のAIPackage』を持ち、それをQuestにより管理されている。

回復対象、回復頻度、タイミング、フォロワーとしての振る舞い方、バグがでない安定性などを総合的に見たときに、それぞれの技術にはメリット、デメリットがあり、一番良い方法というのは…現時点では確立されていないように思う。

自己回復のついでに他者治癒を行う『GrandHealing型』のヒーラーフォロワーは、AIPackageで行動が制限されていないので、戦闘中に回復以外の動作を行うことができ、戦力になる。また、動作AIの切り替えをする必要がないため、安定性が高い。その反面、回復する対象が特定できなかったり、回復のタイミングがフォロワー自身のヘルスの変動に依存してしまうので、プレイヤーが瀕死になっても放置されてしまう、というデメリットがある。自分を優先的に考え、プレイヤーは「二の次」という強気な性格のヒーラーフォロワーを作りたい時に良いかもしれない。

一方、『AIPackage型』のヒーラーフォロワーは、プレイヤーのヘルスの変動に敏感で、魔法をかける対象をしっかり限定できるというメリットがある。しかし、通常の戦闘AIが回復用のAIPackageにより上書きされてしまうので、回復以外の行動がかなり制限されてしまい、戦力としては期待できない。また、乱戦に巻き込まれて自身が攻撃を受けたり、プレイヤーのヘルスが急激に増減した際に、Package切り替え処理が追いつかなくなるためか、バグりやすく非常に不安定。プレイヤーがピンチになった時に真っ先に反応し、自身を顧みずに他者治癒をし続けたり、カクカクになりながらも逃げずに最後まで助けようとする姿勢は、プレイヤーに絶対の「忠誠」を誓った繊細な性格のフォロワーに合っている。

このような、一長一短を踏まえて…何か新たな方法は無いだろうかと、自分なりにできることを考えてみた。

【新しい方法の模索】

補助系フォロワーを作るのは、上述のヒーラーの抱える問題と同様のことを考慮しなければならず…実装までの道のりは長い。Script、AIPackage、Questを使わなければならない理由について掘り下げてみる。

NPCには使用できるSpellに制限がある。他者にキャストするタイプの呪文は、ダメージを与える破壊魔法が中心で、幻惑、回復、変性のものは覚えていても使用しようとしない。「他者治癒」、「挑発」、「鎮静」、「灯明」など。

あくまで推測になるけれど…「麻痺の杖」など「マイナス効果」を与えるものは使っているところを見たことがあるので、おそらく『NPCは戦闘中に他者にプラスの効果を与えるAIが存在していない』のではないだろうか?自身のヘルスやマジカが一定以下になると回復行動をするというAIの「他者版」がそもそも無いのでは?

では、どのようにしたら補助したい対象に効果を届けられるのだろうか…?
ヒーラーフォロワーの仕組みをシンプルに考えれば、対象に何らかの『回復効果を当てる』ことができれば成立する。

ここは、逆転の発想に飛躍してみよう!!
NPCは他者に対して「マイナスの効果」を与える呪文や攻撃は積極的に行おうとする。
ということは…回復させるために、攻撃する…『攻撃的回復』という方法は、可能?
『プレイヤーを攻撃対象にし、攻撃に回復効果を乗せてヒーリングする!』この方法を試してみよう。たぶんこれなら、無理なく従ってくれるはず…!!!
…という、一縷の望みをかける…(汗)

【『攻撃的回復フォロワー(Aggressive Healer)』の製作】

攻撃に回復効果を上乗せする方法について考えてみた。
イメージしたのは『注射器』。痛み(攻撃)と同時に薬効(回復効果)を注入する。それなら、回復の付呪が付いた武器を作成してフォロワーに持たせて攻撃してもらうのはどうだろう?と考えてみたが…、より強い装備を持たせた時に外してしまったり、武器を紛失した場合に取り返しが付かないので、フォロワー自身がずっと持ち続けられるものでなければならないと思った。そこで…『攻撃的回復』をPerkにする考えが浮かんだ。

(1)Perkに指定するSpellの作成

「回復の薬」のMagicEffectのCasting TypeとDeliveryを変更。補助したい効果はMagicEffectで作る。


Effectで新規Spellを作成。


(2)『攻撃的回復』のPerk化

Perkには(1)で作ったSpellを指定。


Perkの発動条件は、フォロワーのインベントリに『回復の薬』が入っている時にする。回復の薬は、リフテンのNPCでスクゥーマ中毒に悩んでいるNPC『ウジータ』に渡す治療薬に指定されている『FavorHealingPortion』を指定。対象を問わずに回復効果が発動してしまわないよう、TargetにはPlayer、PlayerFollower、リアの所属しているCompanionsのFactionを指定した。
これで、回復の薬を持っている時のみ、攻撃に回復効果が乗って発動する。ポーションを矢に塗って、打ってくれるというリアルな挙動を作ることに成功!
ちなみに、この条件だけだと薬を持たせてない時に通常の弓で射貫かれて、そのままソブンガルデ逝き…という大惨事を招くため…後述の設定が必要。

(3)CombatOverridePackageの作成

1.ヒーラーモードのPackage


※スカイリム上での距離感がまだ掴めていません…。WeaponTypeは、回復行動を行うときに使用してほしい武器を指定。リアの場合は弓です(近接も可能)。フォロワーとの間合いの設定が難しいです。この設定だと…近すぎると弓で狙いを定めたままになってしまいます。リアがこちらを狙い始める行動をしたら、ちょっと後ろに下がると上手く打ってくれました。



Conditionsには、ポーションが無いときは打たないでほしい(ただの攻撃になってしまう)ので、ここにも例の条件を付けておく。回復行動の条件として、プレイヤーのヘルスが8割切った時にしておく。

※プレイヤーだけでなく、他のフォロワーにも打ってほしいのですが…適切な条件の付け方がまだ分かっていません。

2.交戦モードのPackage


HoldPositionは、こんなシンプルなPackageなのに…指定したCombatStyleで躍動してくれる、すごいPackageでした。Locationは…とりあえず適当(汗)
Conditonsはプレイヤーのヘルスが8割以上に設定。

以上の2つのPackageを作成してListを作成する。
1.UseWeaponのPackageで、プレイヤーを射撃する『ヒーラーモード』。
2.HoldPositionのPackageで、通常時の戦闘を行う『交戦モード』。

AIPackageの作成は分からないことだらけなので、かなりぎこちないものに…(汗)
プレイヤーの方が位置を変えたり、色々面倒を見なくてはならないので、まだまだ賢いAIとは言えないです…。改善の余地&問題点多数…!!(少しずつ頑張ります)

(4)Actorの設定
ヒーラーにしたいフォロワーに(2)と(3)を持たせる。

―――以上。これで一通りの作業は終了。
スカイリム上でどんな動きをしてくれるのか…楽しみ!!



【新人リアの成長】 vol.1~回復弓~後編

ヴィルカスの盾の姉妹(フォロワー)となり、リアも仕事に同行する。

ヴィ「最近、ドラゴンの噂を耳にする。どうやら戻ってきたらしい。噂によるとドラゴンは、太陽を食らい、人を凍らせる事ができるらしいぞ!」



ヴィ「今の話を聞いていたのか?(怖いもの知らずだなぁ…新人。汗)そ、そうだ!そうこなくてはな。居場所はシアーポイントとの噂だ。行こう!」

シアーポイントに到着する二人。


ヴィ「あれが…ドラゴン!?噂以上の迫力だ…。俺が正面から切り込む…!後ろから援護しろ、リア!!」

リア「わかったわ。」

重装を活かし特攻する地上戦のファルカス、弓で徐々に体力を削っていく空中戦のリア。

なかなか良いコンビネーションを見せる―――


ヴィ「くっ…灼熱の竜の息吹か…鎧の内側まで熱さが伝わってくる…!!って、おい!…ドラゴンは上だぞ!?俺を狙ってどうする?」

(ヒュルルッ……サクッ×2!!)

ヴィ「!!!」



ヴィ「うわぁぁあ゛!!…な、何だ?…後ろからチクッ×2…て、今…。」

「ん?…こ、これは…治癒の薬?」

リア「あなたの背中に…ポーションを打ち込んだのよ。同胞団には、アイツが現れるまで…回復魔法を扱える人が誰もいなかったものね…。私も負けてられないわ!」

ヴィ「すごいな…!身体の傷が癒えていく…。まるで、聖堂の治癒師じゃないか…!!」



リアは、ヴィルカス(プレイヤー)のヘルスが減るとすかさずポーションを打ってサポートしてくれる。全快すると、再び片手剣と盾に持ち替えて共闘する。

(スタンッ…!!)



ヴィ「魂をソブンガルデへ!…ウオォォォオオオ!…ラァ!!!」

(…ザシュッ!!!)

葬られるドラゴン―――。


リア「やったわ!ドラゴンを倒したのよ…!」

ヴィ「すごい戦いだったな!…しばらく、この骨と一緒に休もう。この生物は命をもって我々に名誉を与えてくれた。」

リア「生きるってこういうことよ。闘ってるとき、生きてるって実感できるの。」

ヴィ「…新入りはもう、ここには…いないみたいだな!」


…つづく!!

拍手[4回]

PR

Comment1 Comment

荒療治

攻撃的回復を行うヒーラーフォロワー、自分でも作って遊んでみました。
味方がこちらに向かって弓を構えるとドキッとしますけど、こういう強引な治療もいいですね。回復を始めると間髪いれず2発目3発目と立て続けに射込んでくれるので、とても効率がよく見た目もかっこよかった! この荒々しさが戦士系フォロワーの回復補助手段に最適ですが、矢に薬を塗るという発想は錬金術師フォロワーにも合いそうですね。

近づきすぎると射ってくれないというのは、こちらでもありました。3歩くらい距離をあけないとだめみたいですね。設定を色々弄ってはみたのですがうまく調整できず、むしろ弓を「UseWeapon」で無理やり使わせているが故の挙動なのかなという気もしました。「UseMagic」でも同じ現象が起きてしまうので。
AI Packageはこんな感じのものを作って試しました。
------------------------------------
Template: UseWeaponAlreadyHeld

WeaponType: "Weapons: Ranged"
Use Weapon Location: ""PlayerRef", Radius: 700"
Target to Attack: "PlayerRef"
Trigger Radius: "800"
Hold When Blocked?: "False"
それ以外はデフォルト設定のまま。

Flags:"Allow Swiming", "Weapon Drawn", "Preferred Speed: Run", "Friendly fire comments", "Aggro Radius Behavior"
------------------------------------
弓を使うのでRadiusは2000など大きくとってもいいかと思いましたが、障害物にさえぎられることが多かったため結局「600~800」程度に落ち着きました。Hold When Blocked?は、Trueだと敵に射線をさえぎられると射ってくれなくなるのでFalseに。NeverEnd?はプレイヤーの体力が8割以上回復しきるまで連射してほしいのでTrueのままで。
「UseWeapon」は結構繊細な扱いが必要みたいですね。こちらを狙うだけで、お互いの距離を調整してあげてもなぜか矢を撃ってくれない現象が、時々起こりました。通常の戦闘とは違う狙い方(?)をしているのかもしれません。

それからブログにコメントいただきありがとうございます! テクスチャ弄りに飽きてきて息抜きにAI Packageを弄くりたくなっていたのと、ファル粕さんと同じように簡単な設定だけでフォロワーにちょっと変わった行動をさせたいと思っていたところだったので、ヒーラーフォロワーの記事はタイムリーでした。Scriptを書くのがいまだに苦手でして、できる限りScriptを使わない形でできたら
……と楽をしたい一心でスムーズに動くAI Packageを考えております(^^;

次回の記事も楽しみにしていますね!
Re:荒療治
  • Name: ファル粕
  • (2014/11/20 14:35)
UNIさん、いつもアドバイスありがとうございます!
AIPackageの作成はとても面白くて、ついつい時間が経つのを忘れてしまいます。

>この荒々しさが戦士系フォロワーの回復補助手段に最適ですが、矢に薬を塗るという発想は錬金術師フォロワーにも合いそう
同胞団の戦士は魔法を使わない設定があるので、ヒーラーを入れたい場合にどうしよう??と考えているうちにこの形になりました。「錬金術師フォロワー」っていいですね~♪ 錬金術を活かしているNPCがスカイリムには未だいないですよね…。興味津々です!ヴィルカスサイドのOverridePackageの挑戦と並行して、ファルカスサイドでは現在、ポーション(食べ物)の研究をしております。実はこの検証実験は……耐性実験よりもめんどくさいことをしなければならず…結果、ヴィルカスサイドヘやすらぎを求めてしまいました(汗)
フォロワーにポーションを使わせる仕組みが徐々に分かってきたので、また独特なフォロワーが作れるかもしれません。

>Radiusは2000など大きくとってもいいかと思いましたが、障害物にさえぎられることが多かった
教えていただいた情報が非常に的確で、範囲を広げすぎると遠くから打ってもらえるのですが、回復頻度がかなり落ちてしまいました。最近手を加えたPackageでは「Flee」を使うことによって、遠くの安全なところから打ってもらえるようになりましたが、遠距離になってくると矢が当たるまでにかかる時間が少し増える分、プレイヤーに対して命中率が下がるという事態が起こりました。Radius「600~800」は絶妙な数値なのかもしれません。

>ヒーラーフォロワーの記事はタイムリーでした
こんなご相談ばかりしてしまい、ご迷惑になってしまっていないか…危惧しておりましたので、本当に良かったです!私もScript抜きでOverridePackageだけで補助系フォロワーを実装できないか(それ以外に方法が無かったので…汗)と思っておりました。Scriptは少しずつ挑戦しているのですが、エラーが解決できずに処理が完成したことが未だない状況です。

ようつべで、最近こんな面白い動きをするNPCを見つけました→「Skyrim Bug Jump npc」。フォロワーにジャンプをさせるためのScriptを作れないかいろいろ調べたのですが…ジャンプに関するmodはほとんどがモーション関係のものだったので、仕組みを解読するための情報が少なすぎました。UNIさんの{SPSのフォロワーの動きを見ていて、例えばプレイヤーがジャンプするとフォロワーも連動してジャンプするみたいにできたらいいな~!と思っていたのですが…。先輩Modderの方々が取り扱っていないことから考えて、相当難しいのかもしれないです。

Comment Form

  • お名前name
  • タイトルtitle
  • メールアドレスmail address
  • URLurl
  • コメントcomment
  • パスワードpassword

PAGE TOP