DQ3 K.Mix AI調整

某氏より度々、「ボス戦でのAIの挙動がおかしい」という指摘を頂いていましたが、今回再現データを頂いているので調べてみることにしました。

現象再現

もともとDQのAIなんて「ボス戦では到底使い物にならない」という認識でしかなかったので「ボス戦でAI使うほうが悪い」と思っていましたが、DQ3 K.Mixではキャラごとに作戦を個別指定できるので、回復役だけ「いのちだいじに」にして後出しで回復するのは使い方としてはありえるということで真面目に調べてみました。まずは現象発生時の動画です。編集しようかと思いましたが、編集環境を作る時点で面倒くさくて断念したので、いつものごとく撮って出しです。

※通常提供して頂いたセーブデータを使った画像や動画を公開する場合は、キャラの名前は「あ」「い」とかで潰すのですが、今回は登録所でデフォルトで使える名前っぽかったので潰す作業をサボりましたww。snes9x 1.51デバッガ版以外だと名前を変えるのも結構面倒くさいのでww。

バイキルトが使われる直接の原因

明らかにHPの低い仲間がいるのに回復よりもバイキルトを選んでいます。作戦「いのちだいじに」はHPが1/2になっている仲間がいると回復を重視します。なので当然回復をするべきですが、バイキルトが使われています。バイキルトは相手のモンスターの脅威値の合計(打撃+呪文+ブレス+その他)の1/4を評価値としています。はじめはバイキルトの評価論理がおかしいのかと思っていましたが、実装自体はほぼDQ6と同じです。ところが、上の動画でのグランドラゴーンの脅威値の合計を調べるとなんと15,000を超えていました。バイキルトの評価値は脅威値の1/4なので約3,800ですが、3,800もあるということで、賢者の回復行動の評価値(ベホマズン未習得なのでベホマのみ、今回のケースでは200程度)を遥かに上回るという結果になり、ベホマではなくバイキルトが選択される、ということのようです。このような現象の発生条件は「HPが高く、デバフ系行動をするモンスター」なので、グランドラゴーン(HP:8,500、マヌーサ使用)、光ゾーマ、灰ゾーマ(HP:3,500、HP6,000、ルカナン使用)で発生しやすいということになります。睨みつけの脅威値は固定で200なので神竜、ダークドレアム戦では発生しません。

なぜ脅威値が高くなるのか?

次になぜ脅威値がこのように想定を遥かに超えた値になっているかの調査になります。脅威値(あくまで勝手に名前をつけたもので、正式にはなんというかわかりません)というのはモンスターの「打撃、呪文、ブレス、踊り(DQ6のみ)、その他」でどれくらい脅威的な行動を取るかを数値化したもので、AIはこの値をみて各種行動がどれくらいヤバい行動を取ってくるかを予測し、それに対応した行動を取るようになっています。主に補助呪文系の行動はこの脅威値を参照して各行動の評価値を算出します。その結果とダメージ系の行動や回復系の行動と比較して値が高ければ補助呪文が最終的に選択されることになります。DQ6のAIはこの脅威値を見るために、初見のモンスターでも最適な行動を取れてしまいます。DQ3 K.Mixでは「学習」という概念を入れているために、各モンスターの脅威値はすでに明らかになっているモンスターの行動から動的に生成しています(学習といっても、最大4回同じモンスターと戦えばそのモンスターの情報は学習ボーナスによりすべて明らかになってしまいますが、基本1回しか戦わないボス相手ではAIが正しい判断をするまでにはかなりのターン数を要すると思われます)。その際にデバフ系の行動の脅威値は「そのモンスターの現HP」をそのまま使う、という雑な実装になっていたため、HPのやたら高いモンスター(主にボス系)がデバフ系の行動をすることがわかっている場合にその脅威値が非常に高くなる→バイキルトで使われる脅威値の合計が高くなり、バイキルトの評価値が1/4してもまだ高くなる→回復よりもバイキルトが優先されて使われる、ということのようです。ゾーマの暗黒の波動については固定値で400としているので(100ダメージx4人分)極端に高い値が算出されることはありませんが、ルカナンを使うのでこれまた脅威値がそのまま現HPが使われるためにAIが誤判断する原因になる、ということになります。

対処方針

これを踏まえた上でどう対応するべきかという話になりますが、案としては、

  1. DQ6のデバフ系行動を取るモンスターの脅威値から計算式を推測する
  2. デバフ系の行動の脅威値を十分小さくする
  3. デバフ系の行動の脅威値に上限を設ける

があります。1がベストなのはわかりますが、変数がいくつもある連立方程式を解くようなもので断念しました。一応とっかかりとして、「同じデバフ系戦闘行動しかしないで異なるステータスのモンスター」をピックアップしてみます。

ID最大HPマホトーン耐性呪文脅威値行動
$1Aちんもくのひつじ5530%減16直接攻撃(50%)、マホトーン(33%)、様子をうかがう(17%)
$56ダークホーン235なし47直接攻撃(29%)、鋭い角を突き出す(38%)、マホトーン(33%)

マホトーンの呪文脅威値は最大HPの1/3か?と一瞬思いますが、それだとダークホーンの呪文脅威値は78にならないと辻褄が合いません。ダークホーンの呪文脅威値が低めになっているのはマホトーン耐性が0だからなのかもしれません。マホトーン1つ取ってもこの始末なので、全部を推測するのは相当手間がかかると思われます。

2は上のつじつまを合わせるためにデバフ系の行動の脅威値の評価を低くする(例えば1/100にするとか)というのは雑魚モンスターの評価が正しく行われないことが予測できます。

というわけで、各戦闘行動の脅威値算出SRとは別に「上限値」を設けてそれを上回った場合は上限値でクリップする、ということでとりあえずの対処とします。暗黒の波動を400としているので、各デバフ行動は当然それより低い値になります。この変更を適用したあと、上の動画と同じ状態でAI戦闘をさせてみた結果がこちら。

一応ベホマを使うようになったので当面はこれで良しとします。

コメント

  1. 匿名 より:

    調整お疲れ様です
    自分は仲間はAIにしてキャラ個々の行動を楽しんでいるので吉報でした
    (不具合に気づくような上質なプレイヤーではありませんがw)

    次のVerも楽しみに待たせていただきます、残暑とコロナ、お体に気をつけてー

    管理者より返信:

    チンタラやってるのでそのうち出します。もうしばらくお待ちを。

タイトルとURLをコピーしました