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