日記/2007-01-10

2007-01-10 (水) 23:43:53
お名前:

可能な限りAIの人が新しく考えていることに、「マップごとに敵の優先度を記憶する」というものがあるようです。
正直、友瀬&Glenelgは地図関連判定については一家言あるので(笑)コメント。

実は同じようなことは、考えたことがあります。
似たような敵構成だけど微妙に優先度・スキル率を変えたほうがよさそうな「カタコンベ」と「監獄1F」でテストしていたときに、ちょっと悩んだ内容です。
が、結局没にしてしまいました。

理由はいくつかありますが、一番大きかったのは「手動で十分じゃん」というところ。
Glenelgの場合、敵ごと設定はRO画面から数タッチだけなので、気持ち悪かったらその場で修整すれば十分だな、って感じでした。

まあ、うちのホム自体のレベルが上がっていて、そこまで細かい設定もいらないような状況だった、というのも関係があるかもしれません。


Ver0.46で対応した氷割りモードですが、実はかなりやっつけ仕様なのは自覚しています。
たぶん現状動作では、確かに凍結敵を狙って攻撃してはくれますが、その後の動作はあんまり美しくないと思います:本当は攻撃したら「SGの範囲内に引き込む」ような動きをしないとならないんですよね。

まあもともと一切できなかった機能ですから、ちょっとしたおまけと思ってください。
改善案はちょこちょこありますが、手を打つ暇が・・・


氷割り関連で調べた話で、AI作者にとって意外&困るはずの仕様について補足。

ある敵が誰を攻撃しているのかを取得する手法として当たり前に使われている「GetV(V_TARGET, <敵ID>」というもの。
これ、凍結前後でどうなっているかというのを調べると、ある意味妥当な、ある意味困った状況になっています。
実際に観測した際の情報を列挙すると、こうなってます。

実施した手順
ウィズがノンアクティブの敵(アンバーナイト)を一発殴ってタゲを取ったあと、SGでそれを巻き込み凍結。
その後放置でそれが自然解凍。

このようにしたときのGetVの状況を見ると、以下のようになっていました。

step行動GetV(V_TARGET,<敵ID>
step 0初期状態0
step 1Wiz、殴ってタゲ取り(この時点ではまだ)0
step 2敵、Wizに反撃攻撃開始WizのID
step 3SG詠唱・発動→敵凍結中WizのID
step 4放置→自然解凍
敵は非アクティブに。
WizのID

ここで気をつけて欲しいことは、step 4のGetV値とその時点でのタゲ状況。
自然解凍するとその敵は(もともと非アクティブの敵なので)PCたちへの攻撃を「行いません」。
にもかかわらず、その敵はホムからみると「Wizを狙っている」ように見えます。

厄介なのは、ここでの敵が例えばライドワードのようなアクティブ&比較的すぐ自然解凍してしまう敵だった場合。
そういう敵は自然解凍すると即PCに向かって移動&攻撃を開始しますが、その際に向かう敵は「GetVで取得した値と同じになる保証がありません」。
別の言い方で・・・実際に起こりうる例を挙げると。
自然解凍したライドワードが、たまたま近くにいた別パーティの騎士に向かって移動開始。
でも、GetVで見た場合そのライドワードは「こちらのパーティの誰か」を狙っているので、ホムは何の疑いも無くそれを攻撃する可能性があります・・・そうですね、タゲを強引に奪うように見えてしまいます。
まあ、SG凍結は相手も見ているでしょうから、普通の人なら「きにすんな〜」ってとこでしょうが・・・ね。

なかなか面倒ですね。