Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ゲームAI製作のためのワークショップ(II)

2,512 views

Published on

横浜で行っているゲームAI製作ワークショップ(全五回)の第二回の講義録とワークショップシートです。カヤックさんに協力いただいております。ありがとうございます。今回は「キャラクター意思決定」についてワークショップを行います。

Published in: Science
  • Be the first to comment

ゲームAI製作のためのワークショップ(II)

  1. 1. 三宅 陽一郎 ゲームAI製作のための ワークショップ(II) 三宅陽一郎@miyayou 2016.9.14 @横浜 https://www.facebook.com/youichiro.miyake http://www.slideshare.net/youichiromiyake y.m.4160@gmail.com ※途中ワークショップで書いて頂いた紙面の写真を貼ってあります。
  2. 2. Works (2006-2012) AI for Game Titles Books
  3. 3. 経歴 京都大学(数学) 大阪大学(原子核実験物理) 東京大学 (エネルギー工学/人工知能) 高エネルギー加速器研究所(半年ぐらい。修士論文) http://www.facebook.com/youichiro.miyake
  4. 4. ゲームとはなにか • インタラクティブなデジタル空間。 • もちろん自由に何を作ってもいいですが、時代を 経て次第に構造化されて来ました。 • AIもその中で、いくつかの分類されて来ました。
  5. 5. 現代ゲームにおけるAIの構造 • ゲームの中で人工知能が果たす役割というのが明確になって 来ました。 • 主に現代では3つのAIの役割があります。(これから増えて行く かもしれません) ゲームそのものをコントロールする人工知能。 キャラクターのブレイン(脳)として機能する人工知能。 パス検索を始め地形・状況など空間的な情報を抽出する人工知能。 メタAI キャラクターAI ナビゲーションAI
  6. 6. 人工知能の二つの軸 • 人工知能を考えるときは、その知能が何なのか、を探求するより、 どんな問題を解こうとしているか、を考えるとわかりやすい。 空間の スケール 時間の スケール 局所・ 短時間 大局・ 時間 なし 大局・ 長時間 メタAI キャラクターAI ナビゲーションAI
  7. 7. それぞれのAIの役割 メタAI ゲーム局面全体の変化を継続的に監視して、動的に、 ゲームバランス、ゲームプレイの緊張感、ゲームの面白さをコントロールする。 キャラクターAI キャラクターの立場から、自分の周囲の状況を局所的に認識し、 自分の行動を自分の身体に応じて一定時間の中でデザインする。 ナビゲーションAI ゲームステージ全体についての、空間的特長、現在の状況を解析する。 役割を持つAIのことを「エージェント」と言います。上記3つはすべて 「エージェント」なのですが、特にゲームでは「キャラクターAI」のことを 「エージェント」と言います。
  8. 8. 3つのAIの連携の例 フィールド ナビゲーション AI メタAI エージェントAI 状況を監視し、キーとなる役割を 適切なタイミングでエージェントに 指示する。 自律的な判断。 仲間同士の協調 地形を解析する 目的に応じた点を見つけ出す 目的地までのパスを計算する Support エージェントが自律的に戦闘・協調しつつ、ナビゲーションAIが 戦術的ポイントを教え、メタAIは、全体の戦闘の流れを作る。
  9. 9. ディスカッション • 天敵として出て来る。 • 種族が反映する幸せ。子供たちを全員やっつ けてしまう。幸せなところから絶望に陥れる。自 分より敵の方が基本性能が高い。強い敵に対 して、立ち向かう。ユーザーから闘争心を引き 出す。 • 天敵なので、プレイヤーが嫌がることをする。こ れを嫌だというものを優先的に選択する。プレ イヤーの行動履歴を解析して判断して選択する。 報復度、恨みパラメーターが変化する。自キャ ラが孵化するタイミングを狙う。
  10. 10. ディスカッション<2> • 敵を全滅させたい。 • 全滅させたい=敵を全滅させるのを見せる。食 べている。マップを侵略されている感を入れる。 スプラトゥーンのように塗る。ジェノサイド。違う 種族を作る。一機でも残るとドロー。ユーザー から危機感を引き出す。 • 危機感をあおるパターンを考える。ただひたす ら増える。攻撃して来る。危機感をあおるシ チューションを作る。100匹まで増える。
  11. 11. ディスカッション<1> • 敵を追い込んでくる。パックマンのように緊張と 緩和。 • 連携プレイ。青筋が立っている。よだれが出て いる。絵で見て。演出する。ユーザーから恐怖 心を引き出す。 • 逃げ切れるか、逃げきれないか、わからないよ うなAIの仕組み。スピードに焦点を入れて、アイ テム取り合いになった時に、もしかしたら、取れ るかもと思わせる。アイテムの取り合いになる ように微妙な位置にアイテムを出現させる。ス ピードを調整する。
  12. 12. 外から作る方法 © KAYAC Inc. All Rights Reserved. https://build.cloud.unity3d.com/share/W1TeqjaSu-/
  13. 13. スクリプト Scripted AI から自律型AIへの変化 ゲームデザイナーの頭の中 ゲームデザイナーの頭の中 知識 思考 Scripted AI 自律型 AI (Autonomous AI)
  14. 14. スクリプト Scripted AI から自律型AIへの変化 ゲームデザイナーの頭の中 ゲームデザイナーの頭の中 知識 思考 Scripted AI 自律型 AI (Autonomous AI) 操り人形(Scripted AI)から、キャラクターが自分で考えて行動する 自律型AI(Autonomous AI)になるためには、 ゲームデザイナーが頭の中で持っている知識と思考をAIに埋め込 んであげる必要があります。
  15. 15. 知能 思考知識 AIを作る 人間 地形データ (Way Points) 地形デー タを用いた 思考 オブジェク トデータ 意思決定 の思考 自分の 身体データ 身体運動 の ロジック 知能 = 知識 x 思考
  16. 16. 知能 思考知識 AIを作る 人間 地形データ (Way Points) 地形デー タを用いた 思考 オブジェク トデータ 意思決定 の思考 自分の 身体データ 身体運動 の ロジック 知能 = 知識 x 思考
  17. 17. エージェント・アーキテクチャ 第二部
  18. 18. ディスカッション • 天敵として出て来る。 • 種族が反映する幸せ。子供たちを全員やっつけてしまう。 幸せなところから絶望に陥れる。自分より敵の方が基本性 能が高い。強い敵に対して、立ち向かう。ユーザーから闘 争心を引き出す。 • 天敵なので、プレイヤーが嫌がることをする。これを嫌だと いうものを優先的に選択しする。プレイヤーの行動履歴を 解析して判断して選択する。報復度、恨みパラメーターが 変化する。自キャラが孵化するタイミングを狙う。 • プレイヤーの幸福度を測る。行動ログを取っておく必要が ある。いつ、どこで、何をしたか。どこで卵を産んだか、どこ で食べたか。取り続けられるのかな。プレイヤーが何を大 事にしているかを計測する。 • 行動ログがあって位置情報があって、いつどこで何をした かを、プレイヤーがどんな道をたどったか、うろうろしたか、 卵を産んだ場所を推測して、そこに行く。
  19. 19. ディスカッション • 敵を全滅させたい。 • 全滅させたい=敵を全滅させるのを見せる。食べている。 マップを侵略されている感を入れる。スプラトゥーンのよう に塗る。ジェノサイド。違う種族を作る。一機でも残るとド ロー。ユーザーから危機感を引き出す。 • 危機感をあおるパターンを考える。ただひたすら増える。攻 撃して来る。危機感をあおるシチューションを作る。100匹 まで増える。 • 地形データ、食べ物のデータ、視界のデータ、状況確認、 支配率。敵と味方の状況。AIの目標。食べるのを主とする か、増やすのを主とするのか、ユーザーの行動ログ。 • 経路探索とパターン。食べ物食べる、敵を攻撃する、逃げ る、隠れる、味方に食べ物を譲る。自分から食べられに行 く=囮。動かないで戦略を集中する。
  20. 20. ディスカッション • 敵を追い込んでくる。パックマンのように緊張と緩和。 • 連携プレイ。青筋が立っている。よだれが出ている。絵で 見て。演出する。ユーザーから恐怖心を引き出す。 • 逃げ切れるか、逃げきれないか、わからないようなAIの仕 組み。スピードに焦点を入れて、アイテム取り合いになった 時に、もしかしたら、取れるかもと思わせる。アイテムの取 り合いになるように微妙な位置にアイテムを出現させる。ス ピードを調整する。 • 地形データ・どっちがどっちに食べられるか。ゲームの基 本ルール。壁の位置、不変のもの。変化するもの。 • 知識を使って選択をする。追い込むのか、逃げるのかを判 断することができる。プレイヤーの操作を応じて、どういう 振る舞いをするかを選ばせる。やって来た行動、傾向を出 す。
  21. 21. 環境とキャラクター 環境 キャラク ター キャラクターはさまざまなインタラクションを環境との間に受ける。
  22. 22. 知能 世界 セン サー インフォメーション・フロー(情報回廊) エフェ クター エージェント・アーキテクチャ
  23. 23. 意思決定 意思決定 環境 行動決定 (精神、身体) 意思決定の大きな二つの流れ - 外部刺激から身体へ向かって、身体の状態、身体の運動を決定する。 - 精神の運動を決定し、内面の記憶・知識を変更する。
  24. 24. 世界 五感 身体 言語 知識表 現型 知識 生成 Knowledge Making 意思決定 Decision Making 身体 運動 生成 Motion Making インフォメーション・フロー(情報回廊) 記憶 エージェント・アーキテクチャ
  25. 25. 意思決定 意思決定 環境 行動決定 (精神、身体) 大学の回路で習うような、フィードバックの仕組みがあります。 もともとフィードバックは知性の特徴を模して設計されたものですが、 ここでは電気回路ではなく、思考の回路になっています。
  26. 26. 世界 五感 身体 言語 知識表 現型 知識 生成 Knowledge Making 意思決定 Decision Making 身体 運動 生成 Motion Making インフォメーション・フロー(情報回廊) 記憶 エージェント・アーキテクチャ 内部循環インフォメーション・フロー(情報回廊)
  27. 27. インフォメーション・フロー • 外部(=環境)と内部(=知能)をつなぐ情報 の流れのこと。 • 知能内部で行われる精神活動に起因する知 能活動。 インフォメーション・フロー 内部循環インフォメーション・フロー 知能を作ることはインフォメーションをどう作って行くか、ということでもある。
  28. 28. インフォメーション・フロー • 外部(=環境)と内部(=知能)をつなぐ情報 の流れのこと。 • 知能内部で行われる精神活動に起因する知 能活動。 インフォメーション・フロー 内部循環インフォメーション・フロー 図では単純に一本の線で書いてありますが、二つのインフォメーション・フローには さまざまな経路が存在します。
  29. 29. 世界 五感 身体 言語 知識表 現型 知識 生成 Knowledge Making 意思決定 Decision Making 身体 運動 生成 Motion Making インフォメーション・フロー(情報回廊) 記憶 エージェント・アーキテクチャ 内部循環インフォメーション・フロー(情報回廊)
  30. 30. 世界 五感 身体 言語 知識表 現型 知識 生成 Knowledge Making 意思決定 Decision Making 身体 運動 生成 Motion Making インフォメーション・フロー(情報回廊) 記憶 エージェント・アーキテクチャ 内部循環インフォメーション・フロー(情報回廊) 知能の運動 =いろいろな精神活動の絡み合った運動。
  31. 31. 世界 五感 身体 言語 知識表 現型 知識 生成 Knowledge Making 意思決定 Decision Making 身体 運動 生成 Motion Making インフォメーション・フロー(情報回廊) 記憶 エージェント・アーキテクチャ 内部循環インフォメーション・フロー(情報回廊) しかし、その中でも、知能を貫く最も大きな流れが「意思決定」です。
  32. 32. 意思決定アルゴリズム 第三部
  33. 33. 世界 五感 身体 言語 知識表 現型 知識 生成 Knowledge Making 意思決定 Decision Making 身体 運動 生成 Motion Making インフォメーション・フロー(情報回廊) 記憶 エージェント・アーキテクチャ
  34. 34. 動的・静的ゲームの意思決定 静的ゲーム (ボードゲーム、RTS) 動的ゲーム (アクションゲーム) 意思決定 「手を選ぶ」という問題に 還元できる 「運動」を生成する。 世界 こちらが手を撃つまで 静止している 運動し続ける 思考 局面を解析して最適な解 を選ぶ。 世界と共に運動する。 動的なゲームの意思決定は、馬に乗るように、 世界の変化に常に瞬時瞬時対応しながら、貫かねばならない。
  35. 35. 意思決定・世界・思想 動的なゲームの意思決定は、馬に乗るように、 世界の変化に常に瞬時/瞬時対応しながら、 意志を貫かねばならない。 = 意思決定の記述と、世界の記述は、ある程度、不可分。 = それぞれに意思決定の記述の方法には思想がある。 (今日はそれを学びましょう。)
  36. 36. リアクティブ・非リアクティブ • リアクティブ = 「反射的」状況に対して、常 に反応することで対応する。 • 非リアクティブ = 「目標」や「計画」に沿って 行動することで、より抽象的な活動を可能に する。
  37. 37. 意思決定 意思決定 環境 行動決定 (精神、身体)
  38. 38. 意思決定モデル ステート(状態)ベースAI ゴール(目標)ベースAI ルール(規則)ベースAI ビヘイビア(振る舞い)ベースAI 実際の静物の意思決定というものは非常に高度で複雑なプロセス です。いくつかの簡易モデルが存在します。 シミュレーションベース AI ユーティリティ(効用)ベース AI Rule-based AI State-based AI Behavior-based AI Goal-based AI Utility-based AI 「○○-based AI」とは、○○をAIを構築する基本単位(アトミック)として採用したAIということ。 タスク(仕事)ベース AI Task-based AI 意思決定 Simulation-based AI
  39. 39. 意思決定モデル ステート(状態)ベースAI ゴール(目標)ベースAI ルール(規則)ベースAI ビヘイビア(振る舞い)ベースAI 実際の静物の意思決定というものは非常に高度で複雑なプロセス です。いくつかの簡易モデルが存在します。 ユーティリティ(効用)ベース AI Rule-based AI State-based AI Behavior-based AI Goal-based AI Utility-based AI 「○○-based AI」とは、○○をAIを構築する基本単位(アトミック)として採用したAIということ。 タスク(仕事)ベース AI Task-based AI リアクティブ 非リアクティブ 意思決定 シミュレーションベース AI Simulation-based AI
  40. 40. IF ( 前置宣言文 ) then (後置宣言文) ルールベース意思決定 Rule-based Decision Making ルール ここでは、この形式の制御文をルールと言います。 もちろん、IF ( … IF (.... IF… ) ) ) のような入れ子構造の制御文も ルールベースと呼びますが、 ルールベースと言えば、基本的には、ルールを一つの単位として、 意思決定を行う、という意味です。
  41. 41. 推論エンジン A B C D E T F F F F T T F F F T T F T F T T T T F T T T T T F T T T T F F F T T …………………………… …………………………… ………………… T: True F: False ID 0 : IF A THEN B ID 1 : IF A && D THEN C ID 3 : IF C THEN E ID 4 : IF B THEN D ID .. : ID 4 : IF E THEN ~A ルール内の条件部がtrueの時、そのルールが発火する(fired) すると言います。発火したルールの宣言文は true となり、また それが別のルールを発火させます。 発火をくり返して、true/False が変化して行く様子
  42. 42. ルール制御 ID 0 : IF …. THEN … ID 1 : IF …. THEN … ID 3 : IF …. THEN …. ID 4 : IF …. THEN … ID .. : ID 5 : IF …. THEN … Priority: 3 Priority: 1 Priority: 4 Priority: 5 Priority: 2 ルールに固定、あるいは変動プライオリティ(優先度)をつけて制御を行う。 あるいはランダムにルールをピックアップする場合もある。戦略思考、キャラク ターの挙動などでよく使われる。 Priority: - 制御 ルール= IF ( 行動条件文 ) then (動作命令文)
  43. 43. (例) ルール制御 ID 0 : IF …. THEN … ID 1 : IF …. THEN … ID 3 : IF …. THEN …. ID 4 : IF …. THEN … ID .. : ID 5 : IF …. THEN … Priority: 3 Priority: 1 Priority: 4 Priority: 5 Priority: 2 或いは、状況判断思考によってルールを振り分ける。 戦略思考、キャラクターの挙動などでよく使われる。 Priority: - 制御 思考 ルール= IF ( 行動条件文 ) then (動作命令文)
  44. 44. 応用可能性例 http://gomibako.symphonic-net.com/vote.cgi?genre=act_b&rating=9 ID 0 : IF (敵確認) THEN (逆方向) ID 1 : IF (誰もいない) THEN (ランダムウォーク) ID 2 : IF (フルーツ発見) THEN (フルーツゲット) ID 3 : IF (パワー発見) THEN (パワーゲット) ID 0 : IF (敵強い) THEN (サンダガ) ID 1 : IF (自分弱い) THEN (弱い敵に攻撃) ID 2 : IF (HP<20) THEN (ケアル) ID 3 : IF (パワー発見) THEN (パワーゲット) こうなっているというのではなくて、こういうふうに応用できる例 パックマンなど RPGなど
  45. 45. The Sims 3 における応用 街全体をソーシャルにシミュレーションして人との関係を楽しむゲーム。 たくさんのAIを「人間らしく」制御しなければならない。 特徴付けにプロダクションルールを採用。 Richard Evans, "Modeling Individual Personalities in The Sims 3", GDC 2011 http://www.gdcvault.com/play/1012450/Modeling-Individual-Personalities-in-The
  46. 46. Sims3 における応用 あらゆる相互作用を考慮 注目するエージェントの行動範囲だけを考慮 Richard Evans, "Modeling Individual Personalities in The Sims 3", GDC 2011 http://www.gdcvault.com/play/1012450/Modeling-Individual-Personalities-in-The
  47. 47. データドリブンなプロダクション・ルール プロダクションルール Sims3 における応用 Richard Evans, "Modeling Individual Personalities in The Sims 3", GDC 2011 http://www.gdcvault.com/play/1012450/Modeling-Individual-Personalities-in-The
  48. 48. プロダクションルール プロダクションルールは種類によってランク付けされていて、 最もランクの高いルールが発火する。 ルールが発火すると他のSimは、その特性を理解する。 データドリブンなプロダクション・ルール Sims3 における応用
  49. 49. Dragon Age
  50. 50. Dragon Age
  51. 51. ワークショップ1 ルールベースでキャラクターAIを作ってみよう!
  52. 52. ディスカッション • このゲームは要素が相手、自分、バナナ、近 くにあった場合にどうすべきか。 • バナナ食べているか、食べていない、か組み 合わせで考えているか。 • プレイヤーと敵と二体しかいない。最も嫌なこ と。スコアが高いと逃げきれば勝てる。 • 相手からどういう状況。
  53. 53. ディスカッション
  54. 54. • とにかく相手の嫌なこと、ランク付け。 • 結局、バナナアイテムが無敵、食べたら敵に 向かって行く。 • 卵が消されると嫌。 • 敵の視界に入らなければ、卵を探しに行く。 • 生まれそうな時に食べに行く。 • その後に自分と相手を比べて勝てそうな相手 と戦う。 ディスカッション
  55. 55. ディスカッション
  56. 56. • 全滅できたら勝ち。 • 各ユーザーの総合力。 • プライオリティを作る。 • 敵を見つけたら逃げる。 • キャラクターの制御。 ディスカッション
  57. 57. ディスカッション
  58. 58. • どういうコンセプトで動くのか。 • 相手より数が多い状況を作る。 • 敵の位置を元に、距離と相手と自分の相対 速度で逃げるのか、追いかけるのか。 • 食べるのか、どのオブジェクトに向かう。 ディスカッション
  59. 59. • どういうコンセプトで動くのか。 • 相手より数が多い状況を作る。 • 敵の位置を元に、距離と相手と自分の相対 速度で逃げるのか、追いかけるのか。 • 食べるのか、どのオブジェクトに向かう。 ディスカッション
  60. 60. ワークショップで学ぶこと 意思決定の形式を固定すると、 議論を円滑に行うことができる。
  61. 61. ステートベース ステート 自分の行動を記述する。 ステート ステート 遷移条件 世界と自己の変化を記述する。
  62. 62. ステート・マシン ステート ステート ステート ステートマシン(有限状態マシン) ステートに自分への命令、遷移条件に世界と自分の状況の変化を書く。 ループ構造により、フィードバック構造はない。
  63. 63. (例) Quake HFSM 状態遷移図を用いる http://ai-depot.com/FiniteStateMachines/FSM-Practical.html
  64. 64. ステート・マシン ステート ステート ステート ステートマシン(有限状態マシン) ステートに自分への命令、遷移条件に世界と自分の状況の変化を書く。 ループ構造により、フィードバック構造はない。
  65. 65. プレイヤーを待ち構えるAI 2体の敵キャラクターが哨戒していて、一人のプレイヤーが部屋に入って来る。
  66. 66. ステート・マシン ステートマシン(有限状態マシン) ステートに自分への命令、遷移条件に世界と自分の状況の変化を書く。 ループ構造により、フィードバック構造はない。 待機 攻撃 パトロール
  67. 67. 警戒 追跡 追いかける 攻撃する 威嚇攻撃 味方に指示 出口をかためる 味方を呼ぶ 味方がいない かつ 戦闘範囲外 味方と合流 味方と合流 味方がいる 見失う 見える 見失う 見つける 巡回する 10秒経つ 物音を 聴く 応答がきた 階層型ステート・マシン
  68. 68. ワークショップ2 ステートベースでキャラクターAIを作ってみよう!
  69. 69. • どんな状態か、 • 自分に一番近いものを • 敵に近づく。 • 状態を洗い出す。 • バナナを食べた後に、 • 遷移を結んでいく。 • 最も効率的なものに近づく。 • 見つけに行く。自分に近いもの。 • それの状態に。 • 移ったあとに、状態が変わる。 • 元のステートに戻しに行く。 ディスカッション
  70. 70. ディスカッション
  71. 71. • 生まれる。探す。バナナ。卵。 ディスカッション
  72. 72. ディスカッション
  73. 73. • パトロールから戻る。 • 敵を見つけたら攻撃する。 • 食べる。 • 敵が強かったら逃げる。 • 隠れる。 • 囮。 ディスカッション
  74. 74. ディスカッション
  75. 75. • 階層型。 • 逃げるとか、生きる。 • サブステートを使う。 • うろつくに戻る。 ディスカッション
  76. 76. ディスカッション
  77. 77. ワークショップ2 異なる形式でも意思決定は組むことができる。
  78. 78. ビヘイビアベース ビヘイビア 自分自身の身体的活動をターゲットにしたタスク
  79. 79. ビヘイビアベース ビヘイビア ビヘイビア アニメーションほど詳細ではなく、 文脈を形成できるレベルの身体活動を 記述する。 フィードバックは、ツリー構造の 動作に含まれてしまう。 一連の行動を展開することが 目的となります。
  80. 80. ビヘイビアベイスAI (Behavior-Based AI) ビヘイビア(振る舞い)によって知能を記述する方法ビヘイビアは 具体的な身体運動の仕方を定義するものでなくてはならない。 ビヘイビア ビヘイビア何らかの意思決定 ビヘイビア
  81. 81. Halo2におけるビヘイビアツリー ビヘイビア=時間をまたぐアクション: • ポイントへ移動 • 向く • 撃つ • しゃがむ • 会話する • アクションをトリガーする ビヘイビアは行動妥当性と行動時間を持つ。 e.g., • Fight • Vehicle entry • Throw grenade • Find cover • Cover friend • Check body • Wake up a sleeping grunt • Etc. Halo2: ~130 in total Damian Isla, Handling Complexity in the Halo 2 AI, D. Isla, GDC 2005 http://naimadgames.com/publications.html ビヘイビア = AIに何かをさせるために、一時的に アクターをコントロールするプログラムのこと。
  82. 82. ビヘイビア Target Selection Behavior Perception & Knowledge Model Looking Aiming / Shooting Moving Animation, Physics, Sound World Talking Damian Isla, Handling Complexity in the Halo 2 AI, D. Isla, GDC 2005 http://naimadgames.com/publications.html Halo2におけるビヘイビアツリー
  83. 83. Idle Combat Self- preservation Search Flight Damian Isla, Handling Complexity in the Halo 2 AI, D. Isla, GDC 2005 http://naimadgames.com/publications.html Halo2におけるビヘイビアツリー The Combat Cycle
  84. 84. 意志決定 Root Self-preservation Engage Search Charge Fight Guard Cover Presearch Uncover Guard Grenade Investigate Idle Guard Retreat Flee Vehicle fight Vehicle strafe Melee Root Engage Search Uncover Damian Isla, Handling Complexity in the Halo 2 AI, D. Isla, GDC 2005 http://naimadgames.com/publications.html Halo2におけるビヘイビアツリー ビヘイビアツリー (DAG = 方向性を持った非循環グラフ)
  85. 85. 意志決定 良い点 • 直感的 • モジュール型 • スケーラブル 悪い点 • あまりシンプルではない • デバッグが困難 • メモリを取る Root Self-preservation Engage Search Charge Fight Guard Cover Presearch Uncover Guard Grenade Investigate Idle Guard Retreat Flee Vehicle fight Vehicle strafe Melee Root Engage Search Uncover Damian Isla, Handling Complexity in the Halo 2 AI, D. Isla, GDC 2005 http://naimadgames.com/publications.html Halo2におけるビヘイビアツリー ビヘイビアツリー (DAG = 方向性を持った非循環グラフ)
  86. 86. 意志決定ルーチン • 親が決める • 子が競合する Parent Child 2 Child 3 Child 4 Child 1 ? Damian Isla, Handling Complexity in the Halo 2 AI, D. Isla, GDC 2005 http://naimadgames.com/publications.html
  87. 87. 意思決定ルーチン 子ノード競合戦略 • アナログな決定法 • バイナリーな決定法 – 優先度リスト (root , Engage) – シーケンシャル – シーケンシャル・ルーピング(search) – ランダム – ワン・オフ・ランダム (postcombat) Parent Child 2 Child 3 Child 4 Child 1 ? Damian Isla, Handling Complexity in the Halo 2 AI, D. Isla, GDC 2005 http://naimadgames.com/publications.html
  88. 88. ノード選択の原理 親ノードが子ノードを選ぶ 子ノード層がノードを選ぶ (子ノード同士が争う子ノード競合モデル child-competitive decision model ) Halo2Damian Isla, Handling Complexity in the Halo 2 AI, D. Isla, GDC 2005 http://naimadgames.com/publications.html
  89. 89. 子ノード競合モデル 実数による評価値システム バイナリーテスト & 選択アルゴリズム 長所:状況を評価できる。欠点:評価式が複雑 評価関数によって、行動がその状況で 実行できるかだけを判断し、実行可能な 行動の実行順序をアルゴリズムが決定 バイナリーテスト… 車に乗っている、いないか、 敵をみつけているか、いないか複数の条件判定からなるが、 いずれにしろ、 true/false か行動可能性を事前に決定する。
  90. 90. ノードの実行スキーム(アルゴリズム) ① 優先度リスト法 ② シークエンス法 ③ シークエンシャル・ルーピング法 ④ 確率的方法 あらかじめノードの実行順序を 決めておいて、実行可能な ノードをその順番に従って実行する 基本は②と同じだが、 終端まで行くと、 もう一度実行する。 ランダムに選ぶ あらかじめノードの優先度 (プライオリティ)を決めて、 実行可能(active)なノードのうち 最も優先度の高いノードを実行 する。実行中のノードより高い優 持つノードがactiveになったときには、 インタラプトすることができる。 root engage search どのスキームを選ぶかは、親ノードの種類によって決定されている。 Damian Isla, Handling Complexity in the Halo 2 AI, D. Isla, GDC 2005 http://naimadgames.com/publications.html
  91. 91. ノードの実行スキーム(アルゴリズム) ⑤ オン-オフ法 ランダム、或いは 優先リスト法によって選ぶが、 一度選んだものを選び直さない postcombat 実行順序を定義 =振る舞いの順序を規定できる。 振る舞いの順序(常識)を規定できる。 Damian Isla (2005), Handling Complexity in the Halo 2 AI, Game Developer's Conference Proceedings., http://www.gamasutra.com/gdc2005/features/20050311/isla_01.shtml
  92. 92. Vienna Game/AI Conference 2012 Behavior Workshop • http://aigamedev.com/open/coverage/vienna 12-report/
  93. 93. Behavior Tree Architecture of Spec Ops: The Line Vienna Game/AI Conference 2012 Behavior Workshop
  94. 94. The Game • Spec Ops: The Line – AAA Third-Person Shooter for Xbox 360, PS3, PC • We are Daniel Kollmann and Jörg Reisig ( YAGER Development / Berlin )
  95. 95. Behavior Trees in SOTL Summary: • No separation between Evaluation and Execution • Parallel processing of nodes • Loops and decorators • Synchronization points for groups • Events drive the evaluation, reactive
  96. 96. Behavior Trees in SOTL • No separation between Evaluation and Execution Evaluation aborts currently executed action No Evaluation while an action is being executed Composite Condition Actions
  97. 97. Behavior Trees in SOTL
  98. 98. Behavior Trees in SOTL • Parallel processing of nodes Stack can have multiple top nodes All children of a parallel are updated one after another Run in parallel
  99. 99. Behavior Trees in SOTL
  100. 100. Behavior Trees in SOTL • Loops Loops keep triggering their child until a certain condition is met. • Decorators Decorators are active as long as their child is running. Keep pushing the child Apply effect/buff
  101. 101. Behavior Trees in SOTL
  102. 102. Behavior Trees in SOTL • Gates Gates placed react to counters stored for individual AIs, squads or globally. Check counter Increment counter
  103. 103. Behavior Trees in SOTL
  104. 104. • Events and impulses Any node in the stack can be the target of an event. When the event fires the tree jumps back to that node. An impulse checks if a certain event was fired not long ago. If an impulse is not active, it is completely ignored and does not return any result. Behavior Trees in SOTL Jump here Do this
  105. 105. Behavior Trees in SOTL Jump here Do this
  106. 106. Behavior Trees in SOTL • Events and impulses Events can also be blocked in a branch. Jump here Do not react to any following need for cover Do this
  107. 107. Behavior Trees in SOTL
  108. 108. Behavior Trees in SOTL Final conclusion .... • The event system always aborts active nodes even when not doing anything. Being able to specify some conditions would be nice. • Parallels sort of allow you to create your own behaviour nodes, instead have no parallels and build biggers nodes. • Gates are really useful if used in the right places. For more complex stuff rather do a dedicated node.
  109. 109. root バトル 撤退 休憩 攻撃 隠れる 逃走する 足止めする 立ち止まる 回復する トラップ 眠る 回復薬を飲む 弓を放つ 剣を振る 森に潜む 穴を掘る 建物に隠れる 攻撃魔法 氷系 風系プライオリティ プライオリティ シークエンス シークエンス ランダム プライオリティ ランダム プライオリティ ランダム ビヘイビア (末端ノード) 層 層 選択ルール 選択ルール
  110. 110. root バトル 撤退 休憩 攻撃 隠れる 逃走する 足止めする 立ち止まる 回復する トラップ 眠る 回復薬を飲む 弓を放つ 剣を振る 森に潜む 穴を掘る 建物に隠れる 攻撃魔法 氷系 風系プライオリティ プライオリティ シークエンス シークエンス ランダム プライオリティ ランダム プライオリティ ランダム ビヘイビア (末端ノード) 層 層 選択ルール 選択ルール この層の中で実行可能なうち、 最も優先度の高いノードを実行する
  111. 111. root バトル 撤退 休憩 攻撃 隠れる 逃走する 足止めする 立ち止まる 回復する トラップ 眠る 回復薬を飲む 弓を放つ 剣を振る 森に潜む 穴を掘る 建物に隠れる 攻撃魔法 氷系 風系プライオリティ プライオリティ シークエンス シークエンス ランダム プライオリティ ランダム プライオリティ ランダム ビヘイビア (末端ノード) 層 層 選択ルール 選択ルール
  112. 112. root バトル 撤退 休憩 攻撃 隠れる 逃走する 足止めする 立ち止まる 回復する トラップ 眠る 回復薬を飲む 弓を放つ 剣を振る 森に潜む 穴を掘る 建物に隠れる 攻撃魔法 氷系 風系プライオリティ プライオリティ シークエンス シークエンス ランダム プライオリティ ランダム プライオリティ ランダム ビヘイビア (末端ノード) 層 層 選択ルール 選択ルール この層の中で実行可能なノードを 順番に実行する。
  113. 113. root バトル 撤退 休憩 攻撃 隠れる 逃走する 足止めする 立ち止まる 回復する トラップ 眠る 回復薬を飲む 弓を放つ 剣を振る 森に潜む 穴を掘る 建物に隠れる 攻撃魔法 氷系 風系プライオリティ プライオリティ シークエンス シークエンス ランダム プライオリティ ランダム プライオリティ ランダム ビヘイビア (末端ノード) 層 層 選択ルール 選択ルール
  114. 114. root バトル 撤退 休憩 攻撃 隠れる 逃走する 足止めする 立ち止まる 回復する トラップ 眠る 回復薬を飲む 弓を放つ 剣を振る 森に潜む 穴を掘る 建物に隠れる 攻撃魔法 氷系 風系プライオリティ プライオリティ シークエンス シークエンス ランダム プライオリティ ランダム プライオリティ ランダム ビヘイビア (末端ノード) 層 層 選択ルール 選択ルール
  115. 115. root バトル 撤退 休憩 攻撃 隠れる 逃走する 足止めする 立ち止まる 回復する トラップ 眠る 回復薬を飲む 弓を放つ 剣を振る 森に潜む 穴を掘る 建物に隠れる 攻撃魔法 氷系 風系プライオリティ プライオリティ シークエンス シークエンス ランダム プライオリティ ランダム プライオリティ ランダム ビヘイビア (末端ノード) 層 層 選択ルール 選択ルール
  116. 116. root バトル 撤退 休憩 攻撃 隠れる 逃走する 足止めする 立ち止まる 回復する トラップ 眠る 回復薬を飲む 弓を放つ 剣を振る 森に潜む 穴を掘る 建物に隠れる 攻撃魔法 氷系 風系プライオリティ プライオリティ シークエンス シークエンス ランダム プライオリティ ランダム プライオリティ ランダム ビヘイビア (末端ノード) 層 層 選択ルール 選択ルール
  117. 117. root バトル 撤退 休憩 攻撃 隠れる 逃走する 足止めする 立ち止まる 回復する トラップ 眠る 回復薬を飲む 弓を放つ 剣を振る 森に潜む 穴を掘る 建物に隠れる 攻撃魔法 氷系 風系プライオリティ プライオリティ シークエンス シークエンス ランダム プライオリティ ランダム プライオリティ ランダム ビヘイビア (末端ノード) 層 層 選択ルール 選択ルール
  118. 118. root バトル 撤退 休憩 攻撃 隠れる 逃走する 足止めする 立ち止まる 回復する トラップ 眠る 回復薬を飲む 弓を放つ 剣を振る 森に潜む 穴を掘る 建物に隠れる 攻撃魔法 氷系 風系プライオリティ プライオリティ シークエンス シークエンス ランダム プライオリティ ランダム プライオリティ ランダム ビヘイビア (末端ノード) 層 層 選択ルール 選択ルール この層の中で実行可能なノードを ランダムに一つ実行する。
  119. 119. root バトル 撤退 休憩 攻撃 隠れる 逃走する 足止めする 立ち止まる 回復する トラップ 眠る 回復薬を飲む 弓を放つ 剣を振る 森に潜む 穴を掘る 建物に隠れる 攻撃魔法 氷系 風系プライオリティ プライオリティ シークエンス シークエンス ランダム プライオリティ ランダム プライオリティ ランダム ビヘイビア (末端ノード) 層 層 選択ルール 選択ルール
  120. 120. root バトル 撤退 休憩 攻撃 隠れる 逃走する 足止めする 立ち止まる 回復する トラップ 眠る 回復薬を飲む 弓を放つ 剣を振る 森に潜む 穴を掘る 建物に隠れる 攻撃魔法 氷系 風系プライオリティ プライオリティ シークエンス シークエンス ランダム プライオリティ ランダム プライオリティ ランダム ビヘイビア (末端ノード) 層 層 選択ルール 選択ルール
  121. 121. ワークショップ3 ビヘイビアベースでキャラクターAIを作ってみよう!
  122. 122. • どういう意思の状態が第一層。 • あきらめる、というのをどう作るか。 ディスカッション
  123. 123. ディスカッション
  124. 124. • 何を狙うか。 • Gate を使う。 ディスカッション
  125. 125. ディスカッション
  126. 126. • どこにルールを書くか。 ディスカッション
  127. 127. ディスカッション
  128. 128. • 広い方に逃げるとか • 仲間から離れる。 ディスカッション
  129. 129. ディスカッション
  130. 130. ワークショップ3 ビヘイビアベースではじめて連続的な行動を書ける。
  131. 131. 次回 • 次回、意思決定の後半に続きます。 • 本日はありがとうございました。

×