イベント
[CEDEC2023]「BLUE PROTOCOLのAI実装 〜企画意図をふるまいに反映させるために行ったこと〜」聴講レポート。エネミーの行動を決めるAI,その舞台裏が明かされた
AIの力で,エネミーに企画意図通りのふるまいをさせる
「BLUE PROTOCOL」は,バンダイナムコオンラインが2023年6月14日にサービスを開始したオンラインアクションRPG。劇場アニメを志向したというグラフィックスと激しいアクションが話題を呼んでいる。同作では,共同して技を仕掛けてくる合体攻撃などを始めとして,エネミーの動きにAIが用いられている。
BLUE PROTOCOLでは,HTNプランニングが用いられている。HTNとはHierarchical Task Network(階層型タスクネットワーク)の略。問題を解決するための操作・行為である「タスク」が階層的かつネットワーク状につながっており,AIはどのタスクを実行すべきかを選んでいく。
タスクはより細かなタスクに分解できる場合があり,これを「コンパウンドタスク」,分解できないものは「プリミティブタスク」という。
例えば,モンスターが「攻撃する」というタスクには「吠える」「棍棒で叩く」といった複数の行動が含まれる。「攻撃する」タスクはコンパウンドタスク,「吠える」「棍棒で叩く」はプリミティブタスクとなるわけだ。
「攻撃する」コンパウンドタスクを達成するには「吠える」「棍棒で叩く」という2つのメソッド(方法)があるとも表現できる。プリミティブタスクを分解する方法が複数あるというわけだ。
それぞれのメソッドにはプリコンディション(前提条件)があり,これに合ったタスクを実行させられる。例えばプリコンディションとして「棍棒を持っている」なら「棍棒で叩く」,「何も持っていない」なら「引っかく」という行動を実現できる。つまり,コンパウンドタスクはメソッドによって分岐し,状況によって異なる行動が行われるのだ。
エネミーの振る舞いに関するタスクが入った「ドメイン」と,行動をプランニングするために必要となる情報を格納した「ワールドステート」を,「プラナー」が参照し,実際の行動を決める。つまり,ドメインの中身(エネミーが行う振る舞いの候補)を変えていけば,異なる行動をするエネミーが作れるというわけだ。
BLUE PROTOCOLにおいては,HTNタスクがBehavior Tree(ビヘイビア・ツリー)で記述されている。Behavior Treeではエネミーの行動をツリー(樹)状に配置しており,判断の流れが分かりやすくなっている。
BLUE PROTOCOLでは汎用的なHTNを作り,エネミーの行動を量産できるようにしたという。例として挙げられたのが,「Melee(近接攻撃)」というHTNだ。まずはひな形としてMeleeを用意し,そこには「Command(アニメーションの種類)」「AttackRangeMax(攻撃の届く距離)」という項目を設定しておく。
そしてMeleeの下に「Bash」「Mangle」「Slash」など個々の行動を作ってそこにCommandやAttackRangeMaxを設定し,Melee側にオーバーライドするようになっている。
つまり,Meleeをひな形に新しい行動を作り,Meleeの下にどんどん増やしていけるようになっているというわけだ。ボスの大技は個別のHTNを作るが,雑魚の攻撃などはこの仕組みで量産が行われているという。アップデートが続くオンラインゲームらしい工夫といえるだろう。
BLUE PROTOCOLにおける「タクティカルスキル」といえば,プレイヤーキャラクターが使う特殊な技を指すが,内部的にはエネミーもタクティカルスキルを持っているという。先に挙げた攻撃と同様の方式で量産が行われており,1体のエネミーが複数のタクティカルスキルを持っていることもある。
使用させたいタクティカルスキルをテーブルで与えると,エネミーのドメインにマージされ,AIがエネミーの行動をプランニングする際の候補として上がってくるようになる。攻撃と同様の方法で量産できるということは,パラメータを工夫することで特殊な技を作れるということでもあるわけだ。
このようにエネミーには様々な攻撃が用意されているが,HTNプランニングでは“深さ”を優先した選択が行われる。ただし選択に優先度を付けてしまうと,いくら複数の攻撃法があったとしても,先に条件を満たしたものが採用されることになる。つまり,エネミーが同じ行動だけを繰り返してしまうのだ。
これを防ぐため,BLUE PROTOCOLのAIでは「アクション抽選テーブル」が用意されている。複数のアクションが確率で選択されるようにし,さらにはそれぞれの攻撃に“抽選ウェイト(重み,優先度)”と抽選に用いる抽選パラメータを付けるで,同じ行動を繰り返すのを防ぐわけだ。
AIが行動を決める際には,抽選ウェイトの高いものが選ばれやすい。抽選パラメータの中でも注目すべきは「Weight(抽選ウェイトの初期値)」と「WeightInc(抽選ウェイトの加算値)」だろう。
抽選されなかった攻撃の抽選ウェイトは,WeightIncの分だけ増えていき,次の抽選で選ばれやすくなる。WeightとWeightIncの数値を工夫すれば,作り手が想定した行動パターンを取らせることが可能なのだ。
例えばAIに“ジャブで牽制→フルスイングでトドメ”という一連の動きをさせたいとする。この場合は,ジャブが選ばれやすく,フルスイングは選ばれにくいよう,WeightとWeightIncの値を設定すればいい。
講演で示された例では,ジャブはWeightとWeightIncがともに50,フルスイングはそれぞれ10とされている。ジャブはWeightが50なので,10のフルスイングより選ばれやすい。
フルスイングが選ばれなかったとき,そのたびに抽選ウェイトは上がっていくが,WeightInc(増分)は10だ。つまり抽選ウェイトは10ずつ増えていくので,急激に選ばれやすくなるわけではないものの,いつかはフルスイングが出る。
逆に,ジャブのWeightIncは50。一度選ばれないだけで抽選ウェイトに50もの値が加わり,一気に抽選されやすくなる。結果として,エネミーは“ジャブで牽制→フルスイングでトドメ”のように見える動きをする。
あくまでこれは確率の問題なので,ジャブの回数は不定だし,いきなりフルスイングが出ることもある。行動が完全にパターン化されているわけではなく,確率による揺らぎがあるため,プレイヤーは緊張感をもって楽しめるわけだ。
ただ,実際にBLUE PROTOCOLでAIが行動を抽選するときは,すべての選択肢を検討するわけではない。前提条件を満たさないものを予めフィルタしておき,使える攻撃だけをリストアップして抽選を行う。
抽選ウェイトと「Priority(優先度)」の順でリストを作り,HTNプランニングに反映させる。前述の通り,HTNプランニング側には様々な攻撃の挙動が定義されており,これがツリー状に並んでいる。
そこで,“リスト上位の攻撃を選ばれやすく,リストに出てこなかった(使用条件を満たしていないなど)ものを選ばれにくくする”作業を行う。リストの順位から「評価値」(これが小さい行動ほど選ばれやすい)を決め,リストに出てこなかったものには著しく大きな評価値を与えるのだ。
BLUE PROTOCOLでは複数のエネミーが戦闘単位(グループ)を形成して組織的な動きを行う。こうした動きを実現しているのが,エネミーの上位に存在するAI「Combat Coordinator(コンバットコーディネーター)」だ。
Coordinatorとは日本語で調整役・調停者のことで,BLUE PROTOCOLのCombat Coordinatorは戦闘単位に属する複数のエネミーを調停するのが仕事だ。
戦闘単位ごとに1つのCombat Coordinatorが存在しており,同じターゲット(=プレイヤー)を同時攻撃していいエネミーの数を管理する「攻撃権」や,誰がヒールやバフを掛けるかを管理し,適当に分散するようにする「支援」といった項目を調停している。
そして実際に行動を割り当てるときは,エネミーのそれぞれに評価値を提出させる。具体的には,Combat Coordinatorは調停が必要なすべての行動について,エネミーのそれぞれにメッセージを送って問いかけをし,エネミーは返答を返している(その行動を行えない者は返答しない)。
例えば,攻撃する相手を決める「Targeting」の場合,それぞれのエネミーはヘイト1位の相手に対し,互いの距離などから算出される「AtackUtility」値を返す。こうしてすべてのエネミーから目標(ヘイト1位の相手)とAtackUtility値を集めたCombat Coordinatorは,AtackUtility値の大きい順にソートして攻撃を割り振っていく。
前述の通りBLUE PROTOCOLでは,1体のターゲットを攻撃していいエネミーの数に制限を設けて管理している。いくらヘイトが高いといっても,その場にいる大量のエネミーすべてが1体のターゲットを集中攻撃するような事態が起こらないようにするためだ。制限を越えた(=攻撃権が枯渇した)ら,それ以降のエネミーはターゲットを攻撃しないのである。
ヒールを掛ける支援行動については,Combat Coordinatorからの問いかけにヒール能力を持つエネミーが応え,同じ戦闘単位に属するエネミーのHPを参照してリストを作成。ヒールを掛けた後には対象となったエネミーをリストから削除することで,同じエネミーに繰り返しヒールを掛けることがないようにしている。
複数のエネミーが協力し合って合体攻撃を仕掛けてくることがあるが,これは「CoopActionConductor(コープアクションコンダクター)」というAIが進行を管理している。もっとも,CoopActionConductorは普段存在しない。しかし,合体攻撃を行うことが決まると,マップ上に不可視のCoopActionConductorが生成され,近くのエネミーを配下に置いて行動を指示するのだ。
現実で複数の人間が協力する場合,それぞれが周囲を見て判断し,協力を進めて行く。しかしBLUE PROTOCOLでは,CoopActionConductor,すなわち合体攻撃そのものがエネミーに指示する形を取ることで負担を軽減している。
CoopActionConductorは配下に置いたエネミーに立ち位置やアニメーションの指示を行い,合体攻撃が終わると自分を消し去るのである。
この講演は専門的なものであったものの,BLUE PROTOCOLのプレイヤーにとっては,揺らぎのある行動を実現するアクション抽選テーブルや,エネミーの組織だった行動を生み出すCombat Coordinator,合体技を出した後に消えるCoopActionConductorなど,普段戦っているエネミーがどのようにして動いているのかを知ることができるいい機会だったと思われる。
とくにエネミーが合体攻撃を出すとき,その頭上にCoopActionConductorが存在していることを意識してプレイすると,面白いのではないだろうか。
「BLUE PROTOCOL」公式サイト
4Gamerの「CEDEC 2023」記事一覧
- 関連タイトル:
BLUE PROTOCOL
- この記事のURL:
キーワード
(C)BANDAI NAMCO Online Inc. (C)BANDAI NAMCO Studios Inc.