『ファイアーエムブレムヒーローズ』の敵AIに関する基礎知識。
- あくまで個人的な検証に基づくため、間違いとかがあったらごめんね!
- Mia's AI Manipulation Instructional Academy(英語サイト)というページを参考にしています。ぶっちゃけそっちを読めばOK。Google翻訳でも十分読めます。
- 動画版も作りました。内容は同じですが、 動きを動画で見たい人はどうぞ。
敵AIが攻撃より補助を優先する条件
まず敵AIの基本ルールは、「攻撃できる状況なら、攻撃する」。
ただしこれはあくまで基本であり、例外もある。
つまり、一定の条件下では「攻撃できる相手がいても、攻撃より補助スキルの使用を優先する」ようになるため、これが敵AIの行動パターンを複雑にしている。
この「補助スキルの優先」ルールにより、「踊り子を反撃で倒すつもりが、再行動を優先されて他の敵が突っ込んでくる」「オフェリアを釣ったはずなのに応援を優先されて、ユラリユルレリを掛けられる」といった悲劇が生まれるのである。
ではどのような条件を満たすと、攻撃よりも補助スキルの使用を優先するようになるのか。
補助スキルにはいくつか種類があるが、ここでは
- ①「レスト+」のような「回復杖」スキル
- ②「踊る」「歌う」のような「再行動」スキル
- ③「攻撃の大応援」のような「応援系」スキル
①回復杖スキル
杖の場合は、- 自分の攻撃で敵にトドメを刺せない
- 味方に回復スキルを掛けることができる
「見切り・反撃不可」持ちでヴェロニカを釣って倒そうと思ったら「レスト」の回復を優先された……というのはこのルールに基づく。
ただし当然ながら補助スキルを掛けられる(レストであれば、HPが1以上減っているか、なんらかの状態異常が掛かっている)味方がいない場合は補助スキル自体を使えないので、攻撃を優先する。
(※ただし「リカバー+」など基本的な杖スキルの場合は「味方を10以上回復できる」ことが条件となる。詳しくは参考サイトの「Chart F: Pre-Combat Heal Thresholds」を参照)
なので「幻惑の杖」を持ったユニットを早めに確実に倒したい場合は、遠距離ダメージやデバフを与えるスキルや攻撃施設を使わないほうが良い。杖の発動条件を満たしてしまうと、回復を優先されてしまうからである。
また自分の攻撃で相手を撃破できる場合も、必ず攻撃する。これは杖に限らず、例外のないルールである。
(ただしこれは「自分の攻撃で倒せるかどうか」だけを見ているので、「Aが削った後、Bがトドメを刺せば倒せる」といった先の展開までは考慮していない。)
杖と異なるのは、「自分の攻撃で5以上のダメージを与えられない」という条件も含まれる点。
逆に言えば、「再行動スキルを使用可能であっても、敵を倒せるか、5以上ダメージを与えられる戦闘が可能であれば、踊り子は攻撃を優先する」ということになる。
ゆえに、踊り子を反撃で倒すためは守備・魔防が高すぎないユニットで攻撃を誘うのが有効である。
しかしもちろんダメージを受けすぎるとそのままやられてしまうので、高すぎず低すぎない絶妙の耐久が求められる。
すなわち「敵を倒せない」「5ダメージ以上通らない」「応援を掛けられる味方がいる」の3つを満たしていれば、応援を優先する。
ただし応援は「掛けられる側」に場面に応じた条件がある(後述)。
以上の基本を踏まえた上で、ここからは「敵AIがどのような順序で行動を決定しているのか」という全体的なルールを見ていこう。
敵AIの行動は、以下の6ステップを経て決定される。(※ステップ名はあくまでこの記事内での便宜的なもの)
以下の3つの条件をすべて満たしているとき、敵AIはこのステップで補助スキルを使用する。
すなわち杖の場合は「自分の攻撃で敵を撃破できない」こと、再行動と応援の場合はそれに加えて「自分の攻撃で5以上のダメージを与えられない」場合に、このステップで補助スキルを使用する。
そして「補助スキルを掛けられる側の条件」もすでに述べた通り、杖の場合は「杖を掛けられる(HPが減っている・状態異常になっているなど)」こと、再行動の場合は「行動済である」こと。
ただし応援だけは少し特殊で、このステップにおいて応援を掛けられるための条件は「自分が敵を攻撃できる」こととなっている。
少しややこしいが、注意したいのは「応援を掛けられるのは、攻撃範囲に敵を捉えているユニット」だけだが、杖や再行動は攻撃範囲に敵を捉えていないユニットであっても、補助スキルを掛けられる対象になる点。
応援は「これから攻撃しようとしている味方をサポートする」という掛け方になるが、杖や再行動の対象はこれから攻撃しようとしている味方に限らないのだ。
上の画像の状況を例に考えてみよう。
(アルムとセリカは武器を装備。エフィとセリカは応援を所持)
この状態でターンを終え、敵フェイズが始まると、まず「戦闘前補助スキルの使用」ステップに入り、「補助スキルを使用できるかどうか」の条件のチェックが始まる。
ここで重要なのは、ユニットが1人行動するたびに、行動の判定ステップは最初に戻るという点。
すなわちエフィが行動済になると、また最初から判定チェックが繰り返されるのである。
この場合は、引き続きアルムが敵を攻撃可能なので同じようにチェックが行われ、今度はセリカが応援をアルムに使用。
(セリカはマークを攻撃可能だが、「自分の攻撃で倒せる/5ダメージ以上与えられる敵」では無いので、攻撃を優先することはない。)
セリカが行動済になると、もういちどはじめからチェック。
補助スキルを発動できる味方はもういないので、ここでようやく「①戦闘前補助スキルの発動」ステップが終了し、次の「②戦闘」ステップに移行する、という順序となる。
このステップは名前の通りシンプルで、戦闘可能なユニットが戦闘するだけである。
上記の例で言えば、応援を受けた後、このステップに移行することでアルムがマークに攻撃する。
ただし戦闘可能なユニットが複数いる場合、どのユニットから攻撃するかはやや複雑な優先順位となっている。
この記事の主眼ではないので詳しくは割愛(ここの「V. Evaluate Attacks」を参照)するが、大雑把に言うと「敵を撃破できる>敵も自分も撃破されない(引き分ける)>自分が撃破される」という風に良い戦闘結果のユニットから優先して攻撃する。
また「引き分け」の戦闘が複数ある場合は、相手にデバフを掛けられるユニット(暗器など)が先に攻撃するといったルールがある。
ここでは再び補助スキル発動の条件がチェックされ、条件を満たしていれば補助スキルを使用する。
発動条件は概ね「①戦闘前補助スキルの発動」と同じである。
このステップではすべての戦闘が終了している=攻撃可能なユニットがいないのが前提なので、「敵を撃破できない」とか「5ダメージ以上与えられない」といった条件は無意味(必ず満たしている)だが、要するに回復できるなら杖を使い、行動済の味方がいるなら再行動させる。
ただし「応援を受けるユニット」の条件だけは「①戦闘前補助スキルの発動」と少し変わっており、
(エフィは「引き戻し」を所持)
まずロビンがルキナに「②攻撃」し、反撃でロビンが倒される。
次にアルムが右下に「④移動」。
この時点でアルムはルキナの攻撃射程に入っているので、被脅威数は1の状態である。
そしてエフィがアルムの左から「引き戻し」を使う(③戦闘後補助スキルの使用)。
これによりアルムはルキナの攻撃範囲から外れるので、被脅威数は0になる。
引き戻しの使用によりアルムの被脅威数が1→0に下がることになるので、エフィは引き戻しを使う条件を満たしたことになるのである。
ここで重要なのが「敵がどこに移動するか」だろう。
これは説明しようとするとそれだけで一本の記事になるほど複雑なので、大雑把にまとめると敵AIは「戦闘を行った場合、ダメージが最も大きい相手」を狙って最短距離で移動する。(ただし対象までの距離が遠すぎる場合は優先順位が下がる。)
詳しくはこのページの「4.j.Chase Priority」を参照。
最短距離の移動先が複数ある場合は、複数の相手から攻撃されづらい場所(被脅威数が少ないマス)を優先する。
その候補も複数ある場合は、対角線(斜め)の移動を優先する。
また敵ユニットの移動順に関しては、次の項で詳しく説明する。
(※これは前項の「④移動」ステップにおけるルールである。後述するが、他のステップにおいてはまったく別の行動順ルールがあるため、混同しないように注意)
敵の移動順は以下の順で決まる。
これは以下の条件全てに優先するルールであり、これを利用して武器を外した踊り子が飛空城防衛部隊などに入っていることがある。
武器のない踊り子は武器のあるアタッカーよりも必ず後に移動するので踊りを優先させやすいし、踊り子が敵に攻撃を誘われて反撃で撃破されるのを防ぐ効果もあるため、一石二鳥である。
同じように、補助スキルを外したユニットを飛空城防衛などで見ることが多いのはこれが理由。
補助スキルを外すことで、(補助スキルがある)踊り子よりも必ず先に移動し、再行動を掛けてもらうようにしているのである。
例えば上の状況で、オリヴィエが「踊る」、スラシルが「引き寄せ」などの補助スキルを装備していた場合は、近接のオリヴィエが間接のスラシルよりも必ず先に行動するため、再行動されることはない。
上の状態(オリヴィエ「踊る」、オルティナ補助スキルあり)の場合は、オルティナのほうが敵(マーク)に近いので、オルティナ移動→オリヴィエ踊るという流れになる。
しかしこの配置だと、オリヴィエの方が敵に近いので、オリヴィエ移動→オルティナ移動となる。
このように踊り子の近くにユニットを置くことで、踊り子を先に移動させ再行動を防ぐというのは重要なテクニックである。
例えばこの状況だと、グレイとロビンはどちらも敵までの距離は同じなので、編成画面で左にいる方が先に動く。
この編成順なら、グレイ→ロビンの順である。
飛空城の攻略において、敵AIを理解することは重要である。
踊り子や応援の優先順位を理解すれば、敵の動きを100%とまではいかなくても、ある程度は推測できるようになるはずだ。
敵の動きを予測し、最適な戦略を立てる……それこそが戦略SLGの醍醐味である。この知識がより充実したゲームプレイの助けになれば幸いである。
なので「幻惑の杖」を持ったユニットを早めに確実に倒したい場合は、遠距離ダメージやデバフを与えるスキルや攻撃施設を使わないほうが良い。杖の発動条件を満たしてしまうと、回復を優先されてしまうからである。
また自分の攻撃で相手を撃破できる場合も、必ず攻撃する。これは杖に限らず、例外のないルールである。
(ただしこれは「自分の攻撃で倒せるかどうか」だけを見ているので、「Aが削った後、Bがトドメを刺せば倒せる」といった先の展開までは考慮していない。)
②再行動スキル
次にAIシステムのキモとなる「踊る」「歌う」「ユラリユルレリ」(以下、これらの再行動スキルを持つユニットを「踊り子」とする)は、- 自分の攻撃でトドメを刺せない
- 自分の攻撃で5以上のダメージを与えられない
- 味方に再行動スキルを掛けることができる(近くに行動済の味方がいる)
杖と異なるのは、「自分の攻撃で5以上のダメージを与えられない」という条件も含まれる点。
逆に言えば、「再行動スキルを使用可能であっても、敵を倒せるか、5以上ダメージを与えられる戦闘が可能であれば、踊り子は攻撃を優先する」ということになる。
ゆえに、踊り子を反撃で倒すためは守備・魔防が高すぎないユニットで攻撃を誘うのが有効である。
しかしもちろんダメージを受けすぎるとそのままやられてしまうので、高すぎず低すぎない絶妙の耐久が求められる。
③応援系スキル
応援系スキルが優先される条件は、再行動スキルと同じである。すなわち「敵を倒せない」「5ダメージ以上通らない」「応援を掛けられる味方がいる」の3つを満たしていれば、応援を優先する。
ただし応援は「掛けられる側」に場面に応じた条件がある(後述)。
敵AIの行動決定ステップ(詳しい説明版)
(※この項はより詳しく知りたい人向けに厳密な説明をしています。実践的な踊り子対策だけ知りたいという人は次項まで飛ばしてください)以上の基本を踏まえた上で、ここからは「敵AIがどのような順序で行動を決定しているのか」という全体的なルールを見ていこう。
敵AIの行動は、以下の6ステップを経て決定される。(※ステップ名はあくまでこの記事内での便宜的なもの)
- ①戦闘前補助スキルの使用
- ②戦闘
- ③戦闘後補助スキルの使用
- ④移動
- ⑤待機
①戦闘前補助スキルの使用
敵フェイズが始まると、最初に行われるのはこの「戦闘前補助スキルの発動」が可能かどうかというチェックである。以下の3つの条件をすべて満たしているとき、敵AIはこのステップで補助スキルを使用する。
- 相手を攻撃可能な味方が1人以上存在する。
- 補助スキルを掛ける側が条件を満たしている。
- 補助スキルを掛けられる側が条件を満たしている。
すなわち杖の場合は「自分の攻撃で敵を撃破できない」こと、再行動と応援の場合はそれに加えて「自分の攻撃で5以上のダメージを与えられない」場合に、このステップで補助スキルを使用する。
そして「補助スキルを掛けられる側の条件」もすでに述べた通り、杖の場合は「杖を掛けられる(HPが減っている・状態異常になっているなど)」こと、再行動の場合は「行動済である」こと。
ただし応援だけは少し特殊で、このステップにおいて応援を掛けられるための条件は「自分が敵を攻撃できる」こととなっている。
少しややこしいが、注意したいのは「応援を掛けられるのは、攻撃範囲に敵を捉えているユニット」だけだが、杖や再行動は攻撃範囲に敵を捉えていないユニットであっても、補助スキルを掛けられる対象になる点。
応援は「これから攻撃しようとしている味方をサポートする」という掛け方になるが、杖や再行動の対象はこれから攻撃しようとしている味方に限らないのだ。
ケーススタディ:戦闘前ステップの応援
上の画像の状況を例に考えてみよう。
(アルムとセリカは武器を装備。エフィとセリカは応援を所持)
この状態でターンを終え、敵フェイズが始まると、まず「戦闘前補助スキルの使用」ステップに入り、「補助スキルを使用できるかどうか」の条件のチェックが始まる。
- 相手を攻撃可能な味方が1人以上存在する。
- アルム(とセリカ)がマークを攻撃範囲に捉えているのでクリア。
- 補助スキルを掛ける側が条件を満たしている。
- エフィは「自分の攻撃で倒せる/5ダメージ以上与えられる」敵がいないので、これもクリア。
- 補助スキルを掛けられる側が条件を満たしている。
- アルムはマークを攻撃できる状況なのでクリア。
すなわちエフィが行動済になると、また最初から判定チェックが繰り返されるのである。
この場合は、引き続きアルムが敵を攻撃可能なので同じようにチェックが行われ、今度はセリカが応援をアルムに使用。
(セリカはマークを攻撃可能だが、「自分の攻撃で倒せる/5ダメージ以上与えられる敵」では無いので、攻撃を優先することはない。)
セリカが行動済になると、もういちどはじめからチェック。
補助スキルを発動できる味方はもういないので、ここでようやく「①戦闘前補助スキルの発動」ステップが終了し、次の「②戦闘」ステップに移行する、という順序となる。
②戦闘
「戦闘前補助スキル」を発動できる味方が1人もいない場合、②「戦闘」ステップの判定になる。このステップは名前の通りシンプルで、戦闘可能なユニットが戦闘するだけである。
上記の例で言えば、応援を受けた後、このステップに移行することでアルムがマークに攻撃する。
ただし戦闘可能なユニットが複数いる場合、どのユニットから攻撃するかはやや複雑な優先順位となっている。
この記事の主眼ではないので詳しくは割愛(ここの「V. Evaluate Attacks」を参照)するが、大雑把に言うと「敵を撃破できる>敵も自分も撃破されない(引き分ける)>自分が撃破される」という風に良い戦闘結果のユニットから優先して攻撃する。
また「引き分け」の戦闘が複数ある場合は、相手にデバフを掛けられるユニット(暗器など)が先に攻撃するといったルールがある。
③戦闘後補助スキルの使用
すべての戦闘が終わると、「③戦闘後補助スキルの発動」をチェックするステップに移行する。ここでは再び補助スキル発動の条件がチェックされ、条件を満たしていれば補助スキルを使用する。
発動条件は概ね「①戦闘前補助スキルの発動」と同じである。
このステップではすべての戦闘が終了している=攻撃可能なユニットがいないのが前提なので、「敵を撃破できない」とか「5ダメージ以上与えられない」といった条件は無意味(必ず満たしている)だが、要するに回復できるなら杖を使い、行動済の味方がいるなら再行動させる。
ただし「応援を受けるユニット」の条件だけは「①戦闘前補助スキルの発動」と少し変わっており、
- 敵から攻撃される範囲に入っている
- 自分が「射程」で数えて敵を攻撃可能な場所にいる
ケーススタディ:戦闘後ステップの移動補助
そして最後に、ここまで無視してきた移動補助スキル(「入れ替え」「引き戻し」など)についてだが、これには「移動補助を使われる側」が以下の条件を満たしている場合に発動される。- 移動補助を使われることで、「被脅威数」が1以上減る。
- 「被脅威数」とは、「何人の敵の攻撃射程に入っているか」の数を指す。
(エフィは「引き戻し」を所持)
まずロビンがルキナに「②攻撃」し、反撃でロビンが倒される。
次にアルムが右下に「④移動」。
この時点でアルムはルキナの攻撃射程に入っているので、被脅威数は1の状態である。
そしてエフィがアルムの左から「引き戻し」を使う(③戦闘後補助スキルの使用)。
これによりアルムはルキナの攻撃範囲から外れるので、被脅威数は0になる。
引き戻しの使用によりアルムの被脅威数が1→0に下がることになるので、エフィは引き戻しを使う条件を満たしたことになるのである。
④移動
補助スキルの発動判定をすべて行ったら、最後に「④ただの移動」判定を行う。ここで重要なのが「敵がどこに移動するか」だろう。
これは説明しようとするとそれだけで一本の記事になるほど複雑なので、大雑把にまとめると敵AIは「戦闘を行った場合、ダメージが最も大きい相手」を狙って最短距離で移動する。(ただし対象までの距離が遠すぎる場合は優先順位が下がる。)
詳しくはこのページの「4.j.Chase Priority」を参照。
最短距離の移動先が複数ある場合は、複数の相手から攻撃されづらい場所(被脅威数が少ないマス)を優先する。
その候補も複数ある場合は、対角線(斜め)の移動を優先する。
また敵ユニットの移動順に関しては、次の項で詳しく説明する。
⑤待機
移動もできない場合は、その場で待機する。敵AIの移動順(踊り子対策)
最後に、踊り子の動きを予測する際に重要な敵ユニットの移動順について考える。(※これは前項の「④移動」ステップにおけるルールである。後述するが、他のステップにおいてはまったく別の行動順ルールがあるため、混同しないように注意)
敵の移動順は以下の順で決まる。
- 武器を装備している>装備していない
- 補助スキルがない>ある
- 近接武器(1射程)持ち>間接武器(2射程)持ち
- 敵に近い>遠い
- 編成画面の左>右
1.武器を持っている>持っていない
武器を持っているユニットは持っていないユニットより先に移動する。これは以下の条件全てに優先するルールであり、これを利用して武器を外した踊り子が飛空城防衛部隊などに入っていることがある。
武器のない踊り子は武器のあるアタッカーよりも必ず後に移動するので踊りを優先させやすいし、踊り子が敵に攻撃を誘われて反撃で撃破されるのを防ぐ効果もあるため、一石二鳥である。
2.補助スキルが無い>ある
武器を持っている(あるいは持っていない)ユニット同士の場合は、補助スキルを装備していないユニットが、装備しているユニットより先に移動する。同じように、補助スキルを外したユニットを飛空城防衛などで見ることが多いのはこれが理由。
補助スキルを外すことで、(補助スキルがある)踊り子よりも必ず先に移動し、再行動を掛けてもらうようにしているのである。
3.近接武器(1射程)持ち>間接武器(2射程)持ち
補助スキルの条件も同じ場合、剣などの近接ユニットが魔法などの間接ユニットよりも先に移動する。例えば上の状況で、オリヴィエが「踊る」、スラシルが「引き寄せ」などの補助スキルを装備していた場合は、近接のオリヴィエが間接のスラシルよりも必ず先に行動するため、再行動されることはない。
4.敵に近い>遠い
補助スキルの条件も同じ場合は、敵に近いユニットから順に動く。上の状態(オリヴィエ「踊る」、オルティナ補助スキルあり)の場合は、オルティナのほうが敵(マーク)に近いので、オルティナ移動→オリヴィエ踊るという流れになる。
しかしこの配置だと、オリヴィエの方が敵に近いので、オリヴィエ移動→オルティナ移動となる。
このように踊り子の近くにユニットを置くことで、踊り子を先に移動させ再行動を防ぐというのは重要なテクニックである。
5.編成画面の左>右
敵からの距離も同じ場合は、最終的に編成画面で左に配置されているユニットから順に動く。例えばこの状況だと、グレイとロビンはどちらも敵までの距離は同じなので、編成画面で左にいる方が先に動く。
この編成順なら、グレイ→ロビンの順である。
おわりに
AIのルールについてより詳しく知りたい人はMia's AI Manipulation Instructional Academyを参照のこと。飛空城の模擬戦で検証するのも良いだろう。飛空城の攻略において、敵AIを理解することは重要である。
踊り子や応援の優先順位を理解すれば、敵の動きを100%とまではいかなくても、ある程度は推測できるようになるはずだ。
敵の動きを予測し、最適な戦略を立てる……それこそが戦略SLGの醍醐味である。この知識がより充実したゲームプレイの助けになれば幸いである。