Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BLUE PROTOCOLのパーティバトルを支える集団制御AI

BLUE PROTOCOLのパーティバトルを支える集団制御AI

CEDEC2020のセッションの講演資料です。
BLUE PROTOCOLで実装されているAIの中でも集団の制御にかかわる部分にフォーカスを当てて紹介します。多くのプレイヤーが同じ空間を共有し様々な場所で同時多発的に起こる戦闘の中から同じ戦闘単位を動的に分類する手法や集団としての戦略を立案する手法を解説いたします。

Bandai Namco Studios Inc.

December 01, 2020
Tweet

More Decks by Bandai Namco Studios Inc.

Other Decks in Technology

Transcript

  1. 課題まとめ • パーティ vs パーティの実現 • プレイヤーパーティ vs エネミーパーティ •

    対人戦のような戦術的なバトル • アドリブ感 • あらゆるシチュエーションで動作する堅牢性 • 大規模マネジメントを低負荷で行う ※本セッションで紹介する事例はクローズドβテスト時点のものです
  2. AIヒエラルキー AI Director Faction Coordinator Combat Coordinator Character … キャラクターを制御する

    コンテンツ全体を管理する (フィールド全体の状況分析、スポーニング制御 など) 各勢力を管理する (サブグループの作成、メンバーアサイン など) 一つの戦闘単位を管理する (攻撃権管理、ロールアサイン など)
  3. AIヒエラルキー AI Director Faction Coordinator Combat Coordinator Character … キャラクターを制御する

    コンテンツ全体を管理する (フィールド全体の状況分析、スポーニング制御 など) 各勢力を管理する (サブグループの作成、メンバーアサイン など) 一つの戦闘単位を管理する (攻撃権管理、ロールアサイン など) パーティ どうやって見つけるか?
  4. パーティ形成 ターゲットリスト ターゲット クラスター プレイヤーA 1 プレイヤーC 2 プレイヤーD 2

    ... キャラクターが持つ ターゲットのリスト から対象クラスター がわかる
  5. パーティ形成 キャラクタースポーン時 AI Director Faction Coordinator Combat Coordinator Character 作成

    必要なグループを作成しアサイン クラスター情報 コンテキスト情報 戦闘以外のシチュエーション用のグループもある (例:Patrol Group)
  6. パーティ形成 クラスター更新時 AI Director Faction Coordinator Combat Coordinator Character 再アサインをリクエスト(全メンバー対象)

    クラスターは増減するので 必要に応じてグループを新規に作る クラスター情報
  7. AIヒエラルキー AI Director Faction Coordinator Combat Coordinator Character … キャラクターを制御する

    コンテンツ全体を管理する (フィールド全体の状況分析、スポーニング制御 など) 各勢力を管理する (サブグループの作成、メンバーアサイン など) 一つの戦闘単位を管理する (攻撃権管理、ロールアサイン など) パーティ Character (CEDEC2019のセッションから抜粋)
  8. エージェントアーキテクチャ キャラクターAI Perception Brain Action 環境 身体 Perception Tree ~Behavior

    Treeを応用したお手軽、柔軟な環境認識システム~, CEDEC2017 自分の周りの空間の情報を収集する (センサー、クエリー)
  9. エージェントアーキテクチャ キャラクターAI Perception Brain Action 環境 身体 Utility System HTN

    Planning Behavior Tree 空間認識、身体情報 移動先、アクション 何をすべきか どのようにすべきか 具体的な方法
  10. Preference-based HTN Planning HTN Planning • 行動による状態の変化を考慮した一連の行動を 事前に計画するプランニング技術の一種 • 抽象的なタスクをより具体的なタスクへ

    分割していくことで必要な行動とその順序を見つける Preference-based Planning • 個人の嗜好に基づいた計画を立てる技術 • 好みを後から指定して計画を評価することができる HTN Planning + Preference-based Planning
  11. HTN Planning 起きる 朝食 着替える 家を出る 準備 食べる ご飯を炊く パンを焼く

    朝支度 ステート パン:1枚 現在の状態と プリコンディションを比較して 分割していいかを判定する パンがある お米がある ✓ ✕
  12. HTN Planning 起きる 朝食 着替える 家を出る 準備 食べる ご飯を炊く パンを焼く

    朝支度 ステート パン:0枚 パン -1枚 これ以上分割できないタスクには タスクを実行することで 状態がどう変わるかが設定されている
  13. HTN Planning 目を覚ます パンを焼く 朝支度 … キッチンに行く 目覚ましを 止める …

    これ以上分割ができないところまで分割をし終えるとプランニング終了 タスクを順番に実行していく
  14. エージェントアーキテクチャ コーディネーター Perception Brain Action 環境 メンバー Utility System HTN

    Planning Behavior Tree 空間認識 メンバーから集めた情報 命令 何をすべきか どのようにすべきか 具体的な方法 戦略 戦術 命令
  15. ロールアサイン • コーディネーター側で必要としているロールから割り当てていく • 割り当てられるキャラクターがいない場合はスキップ 詳しくは… BLUE PROTOCOLの個性豊かなキャラクターを動かす意思決定システム, CEDEC2019 優先度

    数 アタッカー 1.0 2 ディフェンダー 0.8 1 フリー 0.0 ∞ アタッカー ディフェンダー ヒーラー メンバーA 0.1 0.0 1.0 メンバーB 0.5 1.0 0.0 メンバーC 0.1 0.0 1.0 コーディネーター:必要ロール キャラクター:希望ロール ✕
  16. 戦術 攻撃命令(A, A) 行為者 対象 評価値 エネミーA プレイヤーA 0.5 エネミーA

    プレイヤーB 0.7 エネミーB プレイヤーB 0.6 ... 攻撃命令(A, B) 攻撃命令(B, B) プリコンディション:攻撃権 > 0, !assigned(a) エフェクト :攻撃権 -1, assigned(a) プリファレンス :評価値 攻撃命令(a, b) 攻撃命令 アサイン
  17. 命令とは 命令 • タクティカルスキルのリスト • パラメータ 命令の実行 • キャラクターは命令を受け取ると タクティカルスキルを自分のドメインに組み込み、

    パラメータをブラックボードに格納する • あとは通常通りプランニングを行い行動する (≠プランニングのゴール) (例)攻撃対象:プレイヤーA
  18. 命令とは なぜタクティカルスキル? • 命令を無視できる • 状態異常など • 特殊な命令が必要なときに 対応しやすい •

    ドメインは再利用しつつ プリファレンスで 行動に変化を付けられる 近接攻撃命令
  19. コミュニケーション 集団を動かすにはコミュニケーションが重要 • リクエスト(例:救援要請) • 情報の伝達(例:ターゲットリスト) 課題 • リクエストのパラメータや伝達される情報は 複数の値を持つことが多い

    • 多くのメッセージ、様々な種類のキャラクターが かかわり複雑になりがち (例:特定の種類のキャラクターしか対象にならないリクエスト)
  20. タプルスペース write : タプルを書き込む read : テンプレートに一致するタプルを読みだす take : テンプレートに一致するタプルを取り出す

    notify : テンプレートに一致するタプルが追加されたときに通知を受け取る TupleSpace ts; ts.write(tuple("message1", 0)); ts.write(tuple("message2", 10)); ts.read(tuple("message1", *)); // message1が返る ts.take(tuple(*, >= 10)); // message2が返り、message2は削除される 例
  21. 救援要請を受けた回復 回復命令(A, B) 回復命令(C, B) プリコンディション:!assigned(a) エフェクト :assigned(a) プリファレンス :評価値

    回復命令(a, b) 回復 アサイン 行為者 対象 評価値 エネミーB エネミーA 0.8 エネミーC エネミーA 0.3 ...