Thinking.歌屋と万力屋と、その他のコのROページ。07:12:19)Glenelgの機能についてのメモ。自分のための覚書でもあり、利用者のための豆知識でもあり、他AI開発者のための参考情報でもあり。氷割りモードについて。Glenelgでの対応は2007年1月ころと3ヶ月くらい前のだいぶ遅い反映ですが、ちょうどMMOBBSのAIスレで話題になっていたので、古い日記をベースに。†ご存知の方も多いと思いますが、念のため。おおざっぱにいうと、「Wizのスキル・ストームガスト(以下SG)の特性に関連する、ダメージ加速手段・戦術」です。SGは、その影響範囲中に0.45秒ごとに1回、合計で11回の攻撃を行うスキルです。この11回のうち、3回がHITした時点で敵は凍結し、そして凍結した敵にはSGは当たりません。普通に使う分には、SGは「11回攻撃できるが、1体の敵には普通3回しかあたらない」ようになっています。ここでポイントになるのは、「凍結したら、SGは当たらない」という点。逆にいえば、「もしSGの持続時間中に凍結した敵を凍結解除できれば、1つのSGを4回以上あてる」ことができます。単純に1回凍結解除するだけでも、敵にはSG再度3ヒット(&凍結)するでしょうから、2倍のダメージが期待でき。理想的タイミングで凍結解除できれば、SGの11発全部が敵にあたるので3倍以上も夢ではないのです。積極的・高速で凍結した敵を攻撃&凍結解除するような行動を取ることがあります。これが俗に「氷割り」と呼ばれる戦術です。↑ホムで氷割り?その課題。†やるべき仕事はわかっています。WizがSG詠唱を始めたら、敵と自分の位置を調整する。自分は「周囲2セルすべてをSG範囲内に収め」るような位置に立ち、敵をSG外周寄りに立たせるのがきれいな形。隣接したセルすべてをSG範囲内に収めたまま、凍結した敵を攻撃するのがベスト。そこで出来るだけ射程and/or範囲攻撃。敵がSG範囲外にノックバックされても、原則としてそれを追いかけずにSG範囲内にとどまる。未凍結の敵は、攻撃をしようと移動を続けるし、SGの特性から凍結した敵はそのまま本来の攻撃者の近くに「滑ってくる」ので、再度放っておいて近づいたら攻撃して割る。・・・というような感じ。問題は、上記にあげたさまざまな条件が「ホムからは直接取得できない」という点にあります。ホムは「敵が凍結した」ことを知ることができません。ホムは味方Wizが「SGを」詠唱していることを知ることができません。ホムは「そのSGの対象範囲」を知ることができません。ホムはそもそも「SGが発動していること」自体を知ることができません。「ホムで氷割りを」という要望はありましたが、こういう情報不足から、友瀬/Glenelgでは特に検討していませんでした。†まずいきなりぶっちゃけてしまうと。Glenelgの氷割りモードは、「友瀬の推測がよりどころの、SG環境での実地評価未実施のモノ」です。現状友瀬は基本的にソロプレイヤーで、SGを本格的に試せるチームメイトがいないので。一応自分だけでできる範疇では動作確認はしていますが・・・ともあれ、以下に各課題と現状実装などを記載していきます。対応その1:凍結者をどう発見するか。†これに対する「可能な限りAI」での回答が、敵の状態監視によって推測する、という方法でした。ホムから取得できる状態情報には「凍結」というものはありません。そこでその代わりとして「STAND(通常)状態」というものを利用しよう、という考え方です。この状態、本来は「何もせずに立っている」という状態で、例えば「非戦闘中で立ち止まっている敵」などが取る状態です。ある意味で凍結とは程遠い内容なのですが・・・そこが発想の転換というところ。今回の氷割りは前提として「敵はSGによって攻撃を受けている」というのが1つのポイント。その敵のモーションは「MOVEかATTACK」でなければおかしいだろう?STANDってことは、そういうことができない状態、すなわち凍結状態と見ていいだろう?という考え方です。SG氷割りモードでは、「直前まで味方と戦闘していたはずで、かつ現在STAND状態になっている敵」を凍結対象と判断するようにしています。実際にはSTAND状態は凍結以外のさまざまな条件で発生します。「睡眠」や「近くに敵がいない条件での盲目」など。攻撃が遅いキャラは、1回攻撃した後次の攻撃を開始するまではSTAND。そのため、条件によっては「凍結していない敵を凍結したと誤り検知して」攻撃してしまう可能性は残っています。これがどれだけ危険かは、残念ながら未確認です。対応2:SGモードにいつ入るか。†これに対する「可能な限りAI」での回答は、「味方Wizの状態遷移監視(Cast→Skill)+敵のダメージ状況の複合判断」のようです。敵の数なども見ている様子。Glenelgでも自動判断について検討をしましたが、現状では結局あきらめて手動でのモードインとしています。一応検討はしましたが、具体的には以下のようなケース/問題がありそうだったので。「友瀬があまりやったことがないところなので、はっきりした手が打てない」という本質もあるので、心配性すぎるかもしれませんが。WizのSG以外の範囲攻撃魔法との区別がつかない。メテオやLoV、HDなど。おおむね実害はないと思いますが、「敵をSG範囲内に引き込む」動作の分、無駄になりそうな気が。WizのSG以外の凍結・石化魔法との区別がつかない。フロストダイバやフロストノバ、ストーンカース。これらは「止める」ことが目的なので、割ることは望ましくありません。上記にもかかわりますが「氷割りをしてはいけない」ケースの判断が困難。実際に起こりうるケースとしては、強敵に対する「時間稼ぎSG」の判断が難しい。敵の強さと数、それまでに与えたダメージ情況、その時点での味方の状況など、かなり多岐にわたりそう。ホムからは他パーティメンバーのHPやチャット・エモ(プリのSPない!)、敵へのダメージ状況などが見えないので。対応3:SG範囲をどう判断するか。†これに対する「可能な限りAI」での回答は、「ダメージを受けている敵の分布を調べて、その中心を範囲の中心と仮定」というもの。重要なのは「敵全体が魔法範囲に入るなら、その集める点を魔法の中心にする必要はない」という判断のようです。Glenelgでは当面、自動判断はしません。素直にユーザー操作で中心位置を指定してもらうようにします。これはモードイン条件以上に「正直実際にやってみないとよくわからない」ところで、想像できる範囲を飛び出しています。対応4:どういう優先度で策敵するか。†ここはGlenelgの策敵ルールとの兼ね合いなので、他AIと比較するような話ではなく。SGモード中は索敵範囲をSG内に絞っています。†とりあえず実装はしていますが、このモードを実際に使っている人がいるかどうかはかなり怪しいです。編集操作バックアップある名言。