Glenelg/友瀬的な基本的対処方針について†
『Glenelgの手加減モードを使用してください』です。
手加減モードは、もともとは別の目的への対処方法として設計したものですが、本質的には『キルカウントシステム対応』として求められていることと同じだと考えています。
手加減モードの本来の目的は、ホム共闘時のJob経験値喪失という問題への対処です:
ホムンクルスには『ホムが敵に与えたダメージに応じてJob経験値が失われる』という弱点があるため。
Glenelgでは『ホムは1体の敵には数秒しか攻撃しない』という振る舞いによって、共闘だけを与えることを狙うようにしています。
『ちょっとだけ攻撃して、とどめはボスケミに任せる』という観点は、討伐クエストについても同じ。
趣旨はおおむね合致していると、考えています。
他AIの状況・機能差異について†
この『手加減』のような動作は、一部の他公開AIでもサポートされています。
また、そのうちの一部ではさらに高度な仕組みをもって対応しているようです。
具体的には:
- ある敵に対する戦闘所要時間を予測し、それに応じて戦闘時間を変化させる。
- 予測方法その1:実際の戦闘時間を測定し、その平均値and/or最短値から決定する。
- 予測方法その2:いわゆる『計算機』を利用し、ホム/ケミの戦闘能力から時間を計算する。
- 狙いとしては『ぎりぎりまではホムに協力してもらう』ことで戦闘時間を短縮することでしょう。
ぎりぎりまで戦闘支援してもらうため、Job経験値の損失は大きいものになるはずですが。
討伐クエストで得られる経験値は敵から得られるそれよりも大きいため、『倒すことに時間をかけるよりは、討伐クエストを早くこなしたい』という考え方もありそうです。
対して現状の Glenelg では、手加減は iniファイルでの『全敵共通で XXX回のAIカウントの間攻撃』、デフォルト約1秒の指定だけ。
上記と比べると劣っているといえます。
上記に対する友瀬の考え方†
友瀬は当面、上記のような『予測による攻撃継続時間変動』は行わない予定です。
根本的な理由は、ホムから観測できない事象が多すぎ、厳密計算の意味がないケースが少なくないということ。
- ばらつく要素1:ケミ攻撃、R化以降のSTR/INTペナルティ。
- ばらつく要素2:ケミ/ホムの空振り、ケミのクリティカル。
- ばらつく要素3:バニルのカプリス。属性による威力差。
- ばらつく要素4:オートスペル装備の発生率。
- ばらつく要素5:ケミ通常攻撃以外の攻撃手段。特に対象を取らない範囲攻撃類。
上記以外にもありそうですが、ぱっと考えただけでこれだけ課題があると思われる。
ケミ・ホムが共にパッシブ攻撃しかしないのであれば、予測計算はかなりの精度で上がると思います。
ホムは自分が『攻撃しつづけている』ことを知っていますし。
ボスケミが『攻撃していること』および『その攻撃対象』を観測できます。
パッシブ攻撃に際しては上記の要素1、要素2のようなばらつきは存在します
が、このばらつきは比較的小さく、
『試行数』によって平均化すれば、かなり安定した数字がでるはず。
ここでの問題は、予測される戦闘時間のばらつきをどう評価し、どれくらいで手加減するのかを決めづらいということです。
『パッシブ戦闘』を観測/想定する範囲であれば例えば『最短5秒、最長10秒で倒せる』という予測はできます。
では、その敵に対してホムはどうするのがよいでしょうか?
討伐考慮であれば、4秒で手加減することはある程度妥当でしょう。
でもそのばらつきが、例えば『戦闘の8割は7秒台、6秒を切れるのは5%以下』だったら?
それでも4秒を狙いますか?
パッシブ戦闘以外の要素が絡むと、話はもっと面倒になってきます。
例えばオートスペル的要素:上記の要素3、4。
これらの最大の問題は、ダメージ量のばらつきが大きいこと:ホムからの与ダメージが観測できない現状では、反映が難しい。
バニルは、自分がカプリスを打ったことは理解できますが、その属性はわかりません。
ボスケミが無詠唱でスキルを使ったことはわかりますが、それが何を引き起こしたのかはわかりません:
例えば『自力でのラウドボイス』なのか『オートスペルファイアボルト』なのか。
そして、その『ばらついた』ときの効果は一般に劇的です。
カプリスであれば0%〜200%の変動幅ですし。
INTを振っているキャラにとっての宝剣などによるASボルトのダメージは、通常攻撃の比ではありません。
通常攻撃以外の攻撃手段の存在も問題です。
例えば、ジェネティックのトルネード。
例えば、パーティメンバーのウィザードの範囲魔法。
これらの『戦闘を一気に短くする攻撃』の存在をホムは予測できません。
特に上記にあげたようなものは、『誰を狙ったのか』をホムが観測できないので、決めうちで判断することも難しい。
このあたりを突き詰めていくと、友瀬的には
『ホムは2秒くらい攻撃したら止め』で十分では、と考えています。
ご意見などがあれば。
- So exctied I found this article as it made things much quicker! -- Jazlynn?
以下、多少の影響がある関連項目ごとに。
- 地図情報まわり
- Glenelg には、視界内にいるNPCの情報(姿と位置)から自分がいるマップを判定する機能があります。
これがアップデートされていないため、2007年以降に新設されたマップを判断することができません。
また、当時からあるマップについても、ID変動などに起因して判定できないケースが多いようです。
- Glenelgには、自分のいるマップに対応した地図情報を外部からとりこみ、『侵入不能セル』を把握しスタックを回避する仕組みがあります。
が、外部地図情報がアップデートされていないため、これも把握できません。
- ただし、これらの機能が動作しなくても、大きな問題はありません。
判定できない場合、『すべてのセルが侵入可能』と考えて動作しますが、これは一般的AIと同じレベルです。
もともとオーバースペックな機能だった、とご理解ください。
- mob情報まわり。
- Glenelg には、チャットコマンドを利用した『ROクライアントチャット欄kから敵名称を指定して、AIの行動ルールを設定する』仕組みがあります。
例えば『!先行 オークスケルトン off』と、発言・/savechatすれば、ホムはオークスケルトンに対してパッシブ動作します。
が、mob情報が更新されていないため、2007年以降に追加された敵に対しては、この『名前指定』ができません。
- チャットコマンドは利用できませんが、Glenelgの基本的な学習操作:
『対応を決めたい敵を攻撃させたあと、画面の特定エリアを ALT+CTRL+右クリック』という操作は可能です。
チャットコマンドで指定できる要素はすべてこの学習操作で対応できるため、敵名称がなくても設定は可能です。
というか、チャットコマンドが拡張されるver0.46以前は、その方法でしか設定できませんでした。
- 新職業のスキルまわり。
- Glenelg では、ケミ系のバイオプラントのような『PCが生み出したmob』を味方と判断して、アクティブモードでも攻撃を仕掛けない仕組みがあります。
これについてのアップデートがなされていないため、類似の『PCが生み出したmob』を普通の敵と判断して攻撃対象にする可能性があります。
具体的には、メカニックのデコイなど。
- デコイ類も学習対象になっているので、一度それらを殴ったあとにそれを『優先度ゼロ』の敵として設定すれば、回避可能。
つーかそもそもデコイとか普通の狩場で使われていn(うわ、何をするおまえら
この中で影響が大きそうなのは、名前指定ができないところかなぁ。
で、これに関して言えば、敵のIDと名称の紐付け情報だけなので、地道にアップデートすればいいっていえばいいんだけど・・・
今後ROでmob追加されるたびに mobdata をいじらなきゃならない、ってのはばかばかしいんだよね。
とりあえず、チャットコマンドで名前を用いず IDで直接指定できるようにすべきか。
例えば:
『!先行 1024 on』という指定をすると、ID1024の敵に対してアクティブ動作する。
Glenelg の場合、ALT+CTRL+右クリックを使ってある敵への対処方法を変えると、その敵のIDはわかるんだよね。
それを元に上記のような指定をすることは、一応は可能。ややハードル高いけど。
その意味では、上記をもう一歩進めて、IDに対するモブ名称を利用者が直接登録できるようにする手もあるか。
例えば:
『!名前登録 ポリン 1024』みたいに宣言すると、以後 『ID1024の敵の名前はポリンである』とホムが認識する。
まあ、気が向いたらやります。
ご意見などがあれば。
- Thanks for inrtduocnig a little rationality into this debate. -- Cece?