Glenelg開発メモ/(未実装)遠距離ML

2006-11-10 (金) 08:05:26
お名前:

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

一度日記として書いた内容ですが、よく考えたら技術メモ関連なので、別ページとしてあらためて。

課題の内容

フィーリルのムーンライトの射程は、いくつなのが正しいの?という問題。

Glenelgや標準AIでフィーリルを使うと、ムーンライトは「敵に接近してから」使用するはずです。
ですが、AIによってはあたかも「射撃」のように、カプリスと似たような感じで「遠距離からムーンライトを撃つ」ようになっています。

この差は一体なぜ?Glenelgでは遠距離MLってできないの?という話です。

Glenelgのつくり

Glenelgでのスキル使用の射程に関する扱いは、以下のようなものです。

  1. 対象にした敵と、使おうとするスキルの射程を比較する。
    1. もし射程よりも遠くに敵がいるならば、接近する。
    2. もし射程内に敵がいるならば、スキルを使う。

現状上記の設計で、バニルのカプリスは「遠距離から」撃ってくれます。
そしてフィーリルは(自分では持っていないので確認できないですが)「近距離でしか」撃ってくれないようです。

スキルの射程ってどうなってるの?

上述した「スキルの射程」については、AI用にそれを取得する関数・パラメータが存在しています。
具体的には、GetV (V_SKILLATTACKRANGE, ホムID, スキルID)という関数&パラメータ指定で、「指定したスキルの射程」を取得できます。

この値をバニルについて実際に確認したところ、カプリスでは『GetV (V_SKILLATTACKRANGE, 敵ID, スキルID)は9』。
つまりカプリスの射程は9セルなので、結構遠距離です。

友瀬はフィーリルは持っていないので、こちらの情報についてアルケミテンプレサイトを見ると、ムーンライトの場合『GetV (V_SKILLATTACKRANGE, 敵ID, スキルID)は2』。
つまり、ムーンライトの射程は2セル。通常白兵戦と同じ近距離武器となっています。

Glenelgが「接近してからMLを撃つ」のは、論理的におかしなことではない、ということになります。

どうして射程2なのに遠距離射撃ができるの?

では、遠距離からMLを撃っているAIがあるのは、どうしてでしょう?

これは、ROシステムの制約事項に絡んでいます。
実はROでは、スキルは以下のような指定動作がなされているようです。

  • スキル使用開始の条件として、スキルの射程はチェックする。
  • 一度スキル使用が確定したら、その後は射程チェックはしない。

これ、もともとは、以下のような状況を救済するための仕様のようです。

マジシャンが非アクティブ敵に対して、射程ぎりぎりからボルト魔法詠唱。
→詠唱中に敵がボルトの射程外に移動。
→詠唱完了・・・どうなる?

上記状況でも魔法が出るようにするために、前述のように「実際にスキルの詠唱完了・攻撃発生」時点では射程は見ていない様子。

フィーリルのムーンライトの場合も、これと同じことが起きていると思われます。
つまり、AIで「スキル射程のチェックをしなければ」ムーンライトといえども遠距離への攻撃が可能です。

なんですが・・・

友瀬andGlenelgでは、この「遠距離ムーンライト」はAI側から積極的にサポートする気はありません。
理由は、友瀬がそれを「ずる」と判断しているからです。
決められている射程よりも遠くに撃つのは、ルール違反。
実際、今までにも「射程外のオットーにユピテルサンダー」なんていうチートツールがありました:遠距離ムーンライトを行うということは、このチートと同じことです。

もし「実はムーンライトの射程2というのがROクライアントのバグで、それをグラビティ・ガンホー側が直す」ということがあれば、結果的に解消されることはあります。
Glenelgでは射程チェックをしているので、その射程が変更されれば相応に動作します。

補足

上記で「ずる」と書いているのは、あくまで友瀬の判断です。
他のAIで実施しているものもいくつかありますが、それが悪と言っているわけではありませんので、誤解なきよう。

どういうことかと言うと・・・AI作成に関するルールのようなものは公式からは「特に指定はありません」。
別の言い方をすると、公式では特に「AI内で射程チェック→射程内のときにのみスキル使用しなければならない」ということは明記されていません。
つまり、「射程チェックせずにスキルを使うこと自体は、公式には特に禁止されているわけではありません。」

友瀬は単に「公式AIのつくり」と「存在している(射程取得)関数」との関係から、これが「RO設計者の本意」と考えて、それを自分の制約にしているだけです。

なんというますか・・・たとえて言いますと。
ある私道があって、あなたがそれを横断したいと思っているとします。
で、5m左に行けば、(これも私設の)信号機付の横断歩道がある。
あくまで私道・私設なので、無視しても犯罪ではありません。
ただ、慣例的に「赤ならわたっちゃだめ」「横断歩道を使うの推奨」というのはわかります。

友瀬は100%の善人ではありませんから、自分ひとりなら状況に応じて信号や横断歩道は無視してわたってしまうと思いますし、他の人がそれをしててもとやかくいいません。
でも『友瀬の責任で交通ルールの指南書を書いてくれ』といわれたら、ここでは「信号を守って、横断歩道を渡りましょう」と書きます。
そんな感じです。