一応、ですね。
これに近い情報はあるにはあるんですよ。
例えば、友達設定。
「同じ/同盟のギルドメンバー」のような、実質的に恒久的な友達もいるでしょうが。
「臨時パーティでの友達」は、少なくとも「そのパーティが終わったら」解散して忘れるべきものですよね。
例えば、まさに地図情報。
「その狩場で戦闘している最中」は、変わって欲しくないです。
が、「狩が終わって帰還したら」and/or「別の狩場に移動したら」、前の情報は忘れるべきです。
ポイントとなることは:これらの中間的記憶情報は「忘れなければならない」という点だと思っています。
それが、実は結構難しい。
- 利用者に「忘れろ」操作をしてもらうのが、一番簡単でかつ現実的ではあります。
- が、それは「利用者がそれ自体を忘れる」ことが当たり前にあり、結果誤動作につながります。
- 臨時PTで友達登録した人を削除し忘れると、後日「非PTのその人」に対して横殴りしてしまいます。
- AIが勝手に忘れることができるのなら、それはリーズナブルです。
- が、その場合「何が起きたら忘れていい」のかが、決めづらいのです。
例えば『範囲攻撃巻き込み禁止』設定されたラウレルを見つけたら、ここが『無条件に範囲攻撃を撃ってはいけないマップ』であると判断することは自体は、簡単に対応できます。
問題は、そういうフラグを『短期的』『中期的』でどう持つか、というところです。
短期記憶だと、テレポ狩に対応できません。
なぜならばテレポしたとたんに短期記憶は失われてしまうため、再びラウレルを見かけるまで AIは『初期状態==範囲攻撃許可』動作してしまうからです。
中期記憶だと、今度は『いつ戻せばいい』という課題が生まれます。
AIリロードされた。ここはどこなのか。
テレポしただけで、まだその『範囲攻撃禁止マップ』なのか。
ワープゲートで別フロア/マップに移動したのか。蝶で帰還して『街』なのか。
Glenelg では、一応「地図情報」に部分的に対応しているので。
例えば『特定座標にカプラさんがいる』ことを検出すれば、そこが『プロンテラだ』と判断するようなメカニズムがあります。
これを応用して、例えば『ラウレルがいる生体2or3』にはいないはずの敵がいたら、マップ移動した・・・と考えるような手は、打てます。
ただそれはメンテ性に問題があるので、正直やりたくないです。
例えばある日、生体3の敵に突然「アノリアン」が追加されたなら。テレポアウトしたらアノリアンだけがいたら、誤検出してしまいます。
友瀬がいつまでROを続けられるかわかりませんし、そもそもこれだけ多数になったマップのどこにどんな敵がいる、なんて情報をAIに組み込み・メンテするなんてやりたくないです。
# 前述の「カプラなどのNPC位置からの地図判定」もメンテが追いついてませんし、機能自体削除しようかと考えています。
現実的には、長期記憶のメカニズムを使って中期記憶相当の『範囲攻撃優先設定』みたいなスイッチを1つ作るのが、楽チンかな、とは思ってます。
ご意見などがあれば。
直接的な問題は、セラのポイズンミストやディータのラヴァスライドといった『設置型範囲攻撃スキル』です。
巻き込んではいけない敵が『範囲内にいない』から撃った結果、その範囲内にその敵が入ってきて巻き込んでしまう、という問題。
回避策はいくつか思いつくのですが、どれもいまいちな感じで・・・
正直、該当マップもあんまりないので、このままでもいいかな、とも思いつつ。
以下、一応思いついているネタ。
- 『視界内にいたら』使わない。
- 視界内にいるのなら、歩いて接近してくる可能性が高いよね、という考え方。
- 現状「攻撃範囲内にいたら」という判定をしているが、それを単純に視界内に広げることで実現。
- 『壁向こう』問題あり。
また、『横わき』問題もあり。
- 『マップで判断』。
- 例えばラウレルがいる生体2、3だったら、使わない、という方式。
- 前述の『横わき』には強い。
- マップ判断がめんどくさい、というのがある。
一応現状のGlenelg ではマップ設定することはできるが・・・
ご意見などがあれば。
ぶっちゃけ、友瀬自身が困って作った設定です(笑)
「深淵の回廊」では、エリアによって敵が『魔法反射』『物理反射』をしてきます。
これに引っかかってホムが自爆しまくってたので、それに対応した、というのが事実です。
例えば、『庭園』は魔法反射するエリアです。
で、「セラのポイズンミスト」は魔法扱いです。
つまり、ここでセラがポイズンミストを使うと、セラが反射を食らって死んでしまうんですね。
で、新たな設定として『敵ごとに、範囲攻撃に巻き込んじゃダメ』フラグを新設しました。
これによって、範囲内に『巻き込んじゃダメ』な敵がいたら、範囲攻撃を撃ちません。
もちろんこれは「自動使用」限定の話です。
手動でスキルを使用する分には設定無視して撃てるので、『ホムが死んでもいいからダメージを』ということはそちらで対応してください。
ちなみに庭園の敵のIDは以下の通り。
セラのポイズンミストやエイラのゼノスラッシャーを使っている方は、このあたりに設定しておくことをお勧め。
3571 | 旋風のラタトスク |
3572 | 旋風のパルス |
3573 | 暴風のガラパゴ |
3582 | エルヴィラ |
論理的には、逆に『物理反射する回廊で、範囲物理攻撃持ちのホムでの設定』というのもありえますが。
基本物理攻撃であるアルケミ系で行くというのもレアだと思うので、調査割愛(笑)
やろうと思えば設定はできるので、ご了承ください。
この設定自体は、以前から必要性自体は意識していたのですが。
そのあたりのマップにそもそも行かなかったので、面倒くさいので保留してました。
今回「深淵の回廊」で、できないとどうしようもなくて作った、という感じです。
ただ、チェックするのはあくまで『スキル使用するとき』だけなので、
設置型の範囲スキルを使う場合には要注意。
要は:ラウレル範囲外だったから、ポイズンミスト撃った→ラウレル歩いてきて範囲に入っちゃった!
・・・というような事故までは防げないよ、ということです。
ご意見などがあれば。
大前提として†
- この画面に出現する「特定敵の行」は、以下のいずれかのパターンです。
- パターン1:友瀬や他ユーザの経験・他AIの情報などから、すでに「当該のIDを持つ敵がいる/いそう」とわかっているもの。
- パターン2:パターン1に該当せず、しかし RO マップ上で実際にGlenelgの学習操作をできたもの。
- パターン1の場合、初期状態で「設定値が空欄」の状態になっています。
名前がわかっているものは入っていますが、「不明」の場合も多々あります。
- パターン2の場合、初期状態は「Glenelgのデフォルト+RO画面上での学習結果」になっています。
「知らなかった」敵なので、名前も当然「不明」です。
こうなっている理由は、AIのメンテナンスフリーのためです。
パターン1だけのサポートだと、
ROが拡張されて「新しい敵」が出現した場合に、AIのソース/データを直接編集しないと対応できませんし、
それは誰もが簡単にできる話ではないです。
地図情報のような「無くても多勢に影響がない」ものではない情報なので、
そのあたりはメンテ不要にしたかった。
#実際、ホム導入直後ぐらいだと敵IDは2000番台くらいまでしか定義されていませんでした。
#今は4000番台も存在していることがわかっています。
GlenelgWatch上で新しい敵の行を追加させていないのは、半分はそれを作るのが面倒(笑)だから。
もう半分は「基本はRO画面上で設定してね」の立場だからです。
敵名称。†
- 基本的に、利用者側で編集してよいです。
名前「不明」になっているけど戦ったことのある==名前がわかる敵は、各自で適当に編集してしまうといいと思います。
- メカニズム上、名前には半角文字は避けたほうがいいかな。
特にカギカッコ類 [ とか ] とかカンマとかは、危ないので。
- そのあたりの入力是正もできないことはないんだけど、めんどくさいのでやってません。
- GlenelgWatchのバージョンアップで、たまに敵名称も追加修正されていたりします。
- その場合、ユーザが何か入力してある部分は上書きしないようにしています。
検索操作†
- 文字列入力したあと Enter で「↓」検索できます。
- F3 で「↓」検索、Shift+F3で「↑」検索できます。
検索詳細†
- 実は「正規表現」対応です。
- 正直オーバースペックだとは思いますが(笑)
- 正規表現の詳細は別途調べてもらうとして。
実用上ありそうな例をいくつか。
- 検索対象文字列の先頭を "^" にすると、「その文字列から始まる」検索です。
- 例:『^ゴブリン』で検索すると、ゴブリンライダーは引っかかりますが、アーチャーゴブリンはかかりません。
- 検索対象文字列の終端を "$" にすると、「その文字列で終わる」検索です。
- 例:『ゴブリン$』で検索すると、ゴブリンライダーはかからず、アーチャーゴブリンはひっかかります。
- ^ と $ の組合せは可能です。
『^ゾンビ$』だと、まさにゾンビしか引っかかりません。ゾンビプリズナーもオークゾンビもかからない。
- キャラクタークラス。[]で複数の文字を囲んだ場合、その文字のどれかに1つに引っかかるような検索が可能です。
- 例:『[兵騎]士』で検索すると、「兵士」or「騎士」のどちらかが含まれれば引っかかります。
- "."(ピリオド)。任意の1文字を意味します。
- 例:『ホ.ン』で検索すると、例えばホロンやホルンが引っかかります。
- "*"。直前のパターンの任意回数繰り返しを意味します。
- 例:『ホ.*ン』だと、「ホ(1〜n長文字列)ン」となっている敵が全部引っかかります。ホルン、ホロン、ホドレムリンとか。
・・・そんな感じかな。
ご意見などがあれば。
教皇様まわり†
Glenelg では教皇様は基本「追従状態」で動作させる仕様ですが、そこにちょっと漏れがあったので追加修正しました。
具体的にはどんなケースが問題だったかというと:
教皇様を手動移動(目標位置をALT+左クリック)させた場合。
移動終了後、いわゆる「通常移動状態」になっていました。
ここが元AIの設計のままになっていた、ということです。
上記操作を行わなければ、従来版でも問題ないので、そのあたりを考慮して導入ください。
Watch,学習画面の改善†
基本的な内容は、敵学習操作まわりの改善です。
敵学習用のウィンドウでの操作に対して、Windowsならあってしかるべき操作/ショートカットキーを追加しました。
一番大きいのは、行単位でのコピー・ペーストですね。
引き続き Undo は未サポートですので、編集時は気を付けること。
Watch、実験的・仮的サポート。†
今回のバージョンで、基本画面の「詳細設定」タブ内に、最近戦闘した敵の履歴を残すようにしました。
これ、何の役に立つかというと・・・新しい敵への対応改善用です。
現状、GlenelgWatchでは「今戦っている敵の種類」は基本画面に表示しています。
ただ、RO側では本質的にはこれは「数値」で管理されています:例えばポリンは1002、というように。
この「ポリンは1002」といった関係は過去の歴史上いろいろわかっているのですが、当然、
新しいタイプの敵がROに増えると「IDxxxxはRO上でnnnnという名前になっている」という関係がわかりません。
そういう場合、GlenelgWatchでは「1002」というような「ID番号」で表示しています。
で、そうするとですね。
「番号で表示されたから、名前対応わかっていないんだ」ということは、ROで戦闘している最中でもわかりますが。
それを律儀に覚えていることって難しいですよね。
実際、戦闘中にそんなことやってられないでしょうし。
今回、「最近戦った敵」の履歴がわかるようになったので、あとから調べやすくなった、ということです。
ご意見などがあれば。