
2023年8月23日(水)から25日(金) にかけて、コンピュータエンターテインメント開発者を対象とした国内最大規模のカンファレンス「コンピュータエンターテインメントデベロッパーズカンファレンス 2023(CEDEC2023)」が開催されました。本稿では、スクウェア・エニックスのプログラマー・長谷川誠氏が登壇した「タクティクスオウガ リボーンのAI実装事例」のレポートをお届けします。
あらゆる移動や行動を点数で評価してコマンドを決定
2022年11月11日に発売された『タクティクスオウガ リボーン』は、敵・味方の区別なくWT(ウェイトターン)の順に行動するターンベースシミュレーションです。

本作のAIの基本的な仕組みは、2010年にリリースされたPSP『タクティクスオウガ 運命の輪』のものを引き継いでいます。「AIの操作対象はユニットのみ」、「ユニットの行動の判断・決定は1ターンごとに行う」のが特徴で、メタAI(ゲーム全体を制御するAI)は使用されていません。




AIの基本的な構成は「ガンビット(ルールベースAI)」、「シミュレーションベースAI」、「アクションスキル決定(ルールベースAI)」の3つとなっています。ガンビットは同社の『ファイナルファンタジーXII』に採用されたシステム名でもあり、同作ではプレイヤーが各キャラの戦闘時の行動や優先順位を任意に設定できました。『タクティクスオウガ リボーン』では「特定のキャラ同士が同じマップにいる場合、お互いしか攻撃しない」、「逃げるような行動を優先して選択する」など、ストーリーに応じた特殊な状況を再現・表現する時にのみ使用されています。

シミュレーションベースAIは、そのキャラにできるすべての行動を評価し、もっとも評価の高い行動をコマンドとして出力します。行動評価は「移動の評価値」、「武器攻撃や魔法使用などのアクションの評価値」、「移動とアクションによって消費されるものの評価値」の合計で算出されます。長谷川氏は、続けて3つの評価基準について紹介しました。

距離と位置、2つの面から移動を評価
移動評価はプラス評価とマイナス評価に分類でき、プラス評価は距離評価、位置評価というカテゴリが大きなウェイトを占めています。



距離評価は「あるユニットが今いるパネルから特定のパネルまで何歩で到達できるか」を表現した「距離マップ」を用いて行い、「敵ユニットから自ユニットまでの歩数-敵ユニットから移動先候補までの歩数」という式で、そのユニットが移動できる各パネルを評価します。探索開始位置を敵ユニットにすることで、自ユニットと敵ユニットの間に侵入不可能なパネルがある場合や、敵ユニットが複数存在する場合なども移動範囲の評価を適切に行えるようになります。



また、ユニットは上昇できる段差と下降できる段差の数値に違いがあるので、常に敵ユニットから自ユニットまでの距離を判定していると、乗り越えられないパネルを突破できると誤認してしまう可能性があります。それを避けるため、移動できる範囲を判断する際は自ユニットを探索開始位置にしているとのことです。

距離評価は、ユニットが持つ武器によっても変化します。攻撃手段が近接武器しかない場合は敵に隣接するパネルが高評価となりますが、弓や魔法などの遠距離攻撃手段を持っている場合は敵から射程の分だけ離れたパネルが一番高評価となります。この設定により「遠距離攻撃を得意とするユニットは無暗に敵に近づくことはない」という挙動が実現しており、長谷川氏によると遠距離攻撃ユニットにそうした挙動をさせるために距離マップを作製したとすらいえるようです。


位置評価は「そのパネルがどのような意味を持つか」で評価の高さが変わります。例えば、守るべき味方ユニットの周辺や倒せばマップクリアとなる敵リーダーの周辺は評価が高く設定されており、これにより「特定の味方を守るような挙動」や「瀕死の敵リーダーに畳みかけるような挙動」が実現しています。


同時に、敵ユニットが1ターンで移動・攻撃できるパネルは「被ダメージ危険度」の数値を高く設定してマイナス評価にすることで、耐久力が低い味方ユニットが敵と一定の距離を保つ要因などとして機能させています。



「移動とアクションによって消費されるものの評価値」は、敵に攻撃した場合どの程度のダメージを与えられるのか、攻撃後に反撃される場合はどの程度のダメージを受けるのかに加え、全76種類のうち11種類のバフやデバフに既定の係数を使用して評価します。「評価要素×係数」というシンプルな式で評価を算出しているので、評価要素をどのように設計するかがキモになる……と長谷川氏はセッションをまとめました。
