Thinking.歌屋と万力屋と、その他のコのROページ。31日記/2014-10-11ホムAI:エレノア、状況メモ。地道に餌やりしていた羊がやっと条件を満たしたので、エレノア爆誕。ここから、コンボスキルを覚えるまでまだ一山ありますが。その時間を利用して、エレノアゆえのAIへの影響をちょっと整理します。エレノアにはいろいろ独特な仕組みがあり、AI的にも課題が多いのです。[-]以下、気になるところから順番に。†ある意味、これが根本的な課題の1つ。エレノアはモンクのように『気弾をためる→それを消費してスキル使用』という振る舞いをする。そのため理想論的には、スキルを使用するためには『気弾があるか否か』をチェックしたい。AIから、出ている気弾数を知る方法はない。オートスペル的なランダム生成になっているのも困りごと。気弾数がわからないことによる問題点は?単純に『AIからスキルを使用→気弾がなくて失敗』という可能性がある。基本となる打撃スキル『ソニッククロー』が、所持している気弾数に比例して威力アップする点も影響する。そのため基本的には、常に気弾は10個満タンに近い状態で運用したい。オートスペル的に勝手に気弾を使うことも加減しないとまずい。いうようなことが、以前からの懸念でした。実際に動かしてみた感じをいろいろ。戦闘させたところ、生成率はかなりいい。自動スキルでソニッククローを使わせる前提なら、気弾の状態を意識する必要はまずない。『コールホム直後で気弾なし』でスキル使おうとして失敗するくらい。気弾はテレポやマップ移動、リログなどでは消えない。安息→コールホムだと消える。夜テストしてログアウト、翌日ログインしたら気弾がついていたときには衝撃をうけた。本家モンクでも消えるのに(笑)この後者の仕様がかなり大きい。当初、ある程度消えることを想定して『AIロード後、戦闘時間xx秒の間はオートスキル禁止』とする仕組みが必要かと考えていた。気弾のことはあまり気にしないというのは、リーズナブルな判断だと思う。†エレノアには『ファイター』『グラップラー』の2モードがあり、そのモードによって使えるスキルが異なる。ファイターモードでは、打撃系スキルしか使えない。グラップラーモードでは、捕獲系スキルしか使えない。使えないモードのスキルを使用すると、単に失敗してしまう。現在のモードを、AIから直接知る術はない。ホム召還直後は必ずファイターモード。これに基づいて、モード変更をトリガーに管理していくことはできる。課題1:モード変更の検出方法。このスキルの使用はAIには通知されない。これは過去の『対象を取らないホムスキル』と同じ仕様。スタイルチェンジをAIからのみ使用するように徹底する方針で対応するのがよさそう。AIで状態に応じて自動的にスタイルチェンジをする。「スタイルチェンジ→つかみ技」というスキル使用を行う。課題2:グラップラー状態でのAIリロード。上記は『AIロード直後は必ずファイターモード』という前提からなっている。グラップラー状態でテレポートした場合、グラップラー状態になる。上記から、AIロード直後はファイターモードという処理ができない。状態を外部ファイルに記録する手もあるが、おそらくリザホムでは必ず『ファイターに戻る』。『リザされて出現』『コールホムで出現』『テレポでAIリロード』というあたりは、ホムAIからは判断がつかない。一応、AIの振る舞いを極力ファイターモードに戻すようにしておけば、誤動作はしづらくなる。したら、ホムIDを管理したらいけるかもしれない?今、テレポ前後ではホムIDは同じだが、再召喚系は別IDのはず。いうわけで、いくつか検証課題あり。†エレノアの最大の特徴。特定スキル直後にのみ使用できる、いわゆるコンボスキルがある。現状のままでも、コンボスキルを人間がタイミングをあわせて手動入力することは可能。AIをつんでいるのだから、そういう機械的処理はプログラムにやらせたい。コンボ入力したい利用者は、いきなり『コンボ最終段スキル』で敵に攻撃指定する。AIはこれを受けて、それを使用するためのスキル群を自動的に使用・つないでいく。AIとして従来にないメカニズムは、大きく以下の2つ。ユーザの1入力に基づいて、複数のスキルを順に使う例えば1入力で3つのコンボスキルを順に使う必要がある。前述のスタイルチェンジも、この連鎖に含まれるべきだろう。あるスキルを使用する際、前のスキルのディレイが終わるまでスキル使用を保留する。現状は、前スキルのディレイ中なら、新たなスキル使用は失敗にして終わっている。人力入力・オートスキルのランダム発生どちらのケースにおいても。設計的には、コンボ攻撃状態のようなものを作るべき、かな。その上で、今どういう状態なのかをいろいろ管理する必要がある。全体として、どういうコンボを使用しようとしているのか。2段止めかもしれないし、3段かもしれない。ファイターモードからのつかみ3段コンボ==スタイルチェンジも含めてスキル4連鎖かもしれない。上記に対して、今どういう状態なのか。3段コンボ、1発目が終わって2発目前のウェイト中、とか。コンボ途中で対象が倒れた場合どうする?たぶん一瞬のディレイだけなので、無視してもよさそうだけど。前述の項目は、利用者による「手動開始」。対して、オートスキルの延長で「AIがコンボを勝手に使用する」ことは許容すべきか。この場合、コストとの折り合いとは思う。その論理でいくと、気弾数がわからないところが効いてくる。SP面では、現状でも使用下限があるので、止めることはできる。気弾は残数がわからないので、果てしなく消費指定舞う可能性が怖い。前述のとおり、ソニッククローの威力を考えると気弾は極力Max維持したいため。個々のコンボの発動率は要検討。すると、全部ユーザ指定できるようにしておいたほうがいいかもしれない。運用上のもう一つの課題として、コンボ時のスキルレベルがある。基本的には最大レベルで撃てばいいのだが、初撃用のソニッククローの特性が悩みどころ。レベル5では、威力は非常に頼りになる。スキルクールタイムが5秒あるため、一度使用すると次が使えない。レベル1では、威力面は非常に寂しい。クールタイムが1秒しかないため、コンボスキルをすべて終えたころには即次が撃てる。複数を選択できるようにしておくべきか。†ティンダーブレイカーは、他のスキルとは異なる変則的な射程・発動ルールになっている。スキル起動可能な射程は、数セルある:遠隔状態で使用できる。実際の攻撃射程は、隣接。そのため、遠距離でスキル使用操作→スキル発動(*1)→エレノアが敵まで接近→スキル実際にヒット(*2)・・・という流れになる。ここで問題なのは、ティンダーブレイカー自体がコンボ始動スキルである、ということ。現状のGlenelgの作りだと、これの次段スキルを使うタイミングがとりづらい。いうことかというと・・・AIは、上記*1部分でスキルを使用している。タイミングを取らなければならない。「エレノアが移動接近する」時間の分、狂うわけだ。現状のティンダーブレイカーがAI的にどういう制御になっているのか、調べないとならない。設計上、手動でスキル使用した後は原則『そのあとの追撃はしない』ようになっている。カプリスなどを遠距離から撃った場合、そこから相手には近づかない。その攻撃で相手が戦闘モードになってホムを攻撃すればまた話は別だけど。エレノアはきちんと敵に向かって歩いている。これはAIの中で移動状態になっているのかどうかがわからない。いうわけで、とりあえずはエレノアが2段目スキルを覚えるまでにちんたらやります。編集操作バックアップある名言。