2014/11/10 Category : CK作業記録 仲間を守る!「新・補助系フォロワー」への挑戦① ファルカスとマダナックの弟子達は、マルカルスの研究所にこもって実験の日々…。 ふとジョルバスクルに帰りたくなったけれど、まだまだ実験は続きそう。 検証実験の合間に息抜きも兼ねて…面白いアイディアは何かないかな?と、考えていました。 魔法の耐性を調べるために、色々な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