Glenelg開発メモ/SG氷割り

2007-04-03 (火) 07:12:19
お名前:

Glenelgの機能についてのメモ。
自分のための覚書でもあり、利用者のための豆知識でもあり、他AI開発者のための参考情報でもあり。

SG氷割りは、下記にあるような検討も加味して一時期Glenelgで実装しました。

が、時代は変わって久しく。
ストームガストの「3回ヒットで凍結」という仕様は廃止され「高レベルSGなら大火力で凍結しにくい」「低レベルSGは低火力ですぐ凍る」という仕様に変更されました。
また、三次職の実装でより強力な魔法が多々増えたため、今やストームガストの氷割りなんていう狩はほとんど行われません。
その他にも操作性の悪さや下記「誤判断」の可能性など、複合的に考えて、Glenelgでは実装を解除しました。

というわけで、以下以前に考えたときのメモ。


氷割りモードについて。
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倍以上も夢ではないのです。

これらのことから、SGが効果を発揮しはじめると、他のPCたちは威力よりも手数(射程攻撃や範囲攻撃)を使って 積極的・高速で凍結した敵を攻撃&凍結解除するような行動を取ることがあります。
これが俗に「氷割り」と呼ばれる戦術です。

ホムで氷割り?その課題。

やるべき仕事はわかっています。

  1. WizがSG詠唱を始めたら、敵と自分の位置を調整する。
    自分は「周囲2セルすべてをSG範囲内に収め」るような位置に立ち、敵をSG外周寄りに立たせるのがきれいな形。
  2. 効果発動したら、適時攻撃開始。
    自分に隣接したセルすべてをSG範囲内に収めたまま、凍結した敵を攻撃するのがベスト。
    そこで出来るだけ射程and/or範囲攻撃。
  3. 敵がSG範囲外にノックバックされても、原則としてそれを追いかけずにSG範囲内にとどまる。
    未凍結の敵は、攻撃をしようと移動を続けるし、SGの特性から凍結した敵はそのまま本来の攻撃者の近くに「滑ってくる」ので、再度放っておいて近づいたら攻撃して割る。

・・・というような感じ。
問題は、上記にあげたさまざまな条件が「ホムからは直接取得できない」という点にあります。

  1. ホムは「敵が凍結した」ことを知ることができません。
  2. ホムは味方Wizが「SGを」詠唱していることを知ることができません。
  3. ホムは「そのSGの対象範囲」を知ることができません。
  4. ホムはそもそも「SGが発動していること」自体を知ることができません。

「ホムで氷割りを」という要望はありましたが、こういう情報不足から、友瀬/Glenelgでは特に検討していませんでした。
が、「可能な限りAI」の作者の方の提案を元に、急遽再検討・実装をしました。

なんですが・・・

まずいきなりぶっちゃけてしまうと。
Glenelgの氷割りモードは、「友瀬の推測がよりどころの、SG環境での実地評価未実施のモノ」です。
現状友瀬は基本的にソロプレイヤーで、SGを本格的に試せるチームメイトがいないので。
一応自分だけでできる範疇では動作確認はしていますが・・・

ともあれ、以下に各課題と現状実装などを記載していきます。

対応その1:凍結者をどう発見するか。

これに対する「可能な限りAI」での回答が、敵の状態監視によって推測する、という方法でした。
もちろん、ホムから取得できる状態情報には「凍結」というものはありません。
そこでその代わりとして「STAND(通常)状態」というものを利用しよう、という考え方です。

この状態、本来は「何もせずに立っている」という状態で、例えば「非戦闘中で立ち止まっている敵」などが取る状態です。
ある意味で凍結とは程遠い内容なのですが・・・そこが発想の転換というところ。
今回の氷割りは前提として「敵はSGによって攻撃を受けている」というのが1つのポイント。
つまり、「攻撃を受けた敵は普通、その攻撃実施者に対して移動→攻撃をする」はずなので、 その敵のモーションは「MOVEかATTACK」でなければおかしいだろう?
STANDってことは、そういうことができない状態、すなわち凍結状態と見ていいだろう?という考え方です。

Glenelgでも基本的にこの方針を踏襲し、 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範囲に入ってくれない」というストーリーになるので、 SGモード中は索敵範囲をSG内に絞っています。

そんな感じで・・・

とりあえず実装はしていますが、このモードを実際に使っている人がいるかどうかはかなり怪しいです。
つーか、なにも意見ないですしね(笑)