狠狠撸

狠狠撸Share a Scribd company logo
ゲーム础滨の基础と事例
土江智明
この会の目的
プランナーさん向けに…
● ゲームAIの考え方を紹介する
● ゲーム础滨の设计を紹介する
● ゲームAIの事例を紹介する
● 実装方法についてはあまり言及しない
この会で話すAI
デジタルゲームのAI
● ユーザーを楽しませるためのAI
● 開発側の設定項目を少なくするためのAI
● アクション部分等、动きのある部分の础滨
この会で話さないAI
● とにかく強いもの
○ 将棋やチェス
○ 最近だとサッカー等
● システム寄りなもの
○ おすすめアイテムの紹介
○ レーティング?マッチングシステム
参考にした書籍?サイト
● Game AI Pro, Game AI Pro 2
● AiGameDev.com
● CEDECの公演、レポート
AIに関する日本語の資料は多くないです…
目次
● 础滨の必要性
● ゲーム础滨の设计
● 最近のゲーム础滨の事例
最近のゲーム础滨の事例
● 敵同士が重ならないように動かすAI
● 敵群の攻撃間隔?位置を調整するメタAI
● 種類毎に異なるセンサーを持つNPC
● 指示を与えると考慮して動く味方NPC
● 自然なアニメーション遷移のためのAI
● 特性に適した位置に移動するNPC
● ダンジョン?クエストを自動生成するメタAI
予告
础滨の必要性
础滨の必要性
● そもそもAIとはなにか
● なぜAIが必要になったか
● AIにリスクとリターン
● ゲームAIの分離
そもそもAIとはなにか
● コンテンツを少ない設定から生成する機構
コンテンツ設定 AI
础滨の必要性
なぜAIが必要になったのか
● 昔はコンテンツが少なく、手で生成できた
コンテンツ設定
础滨の必要性
なぜAIが必要になったのか
● 3Dの発展等に伴うコンテンツの大規模複雑化
○ 手で設定するには多すぎる?難しすぎる
コンテンツ設定
础滨の必要性
コンテンツ
なぜAIが必要になったのか
● 3Dの発展等に伴うコンテンツの大規模複雑化
○ 手で設定するには多すぎる?難しすぎる
● AIでコンテンツを生成する必要がある
設定 AI
础滨の必要性
なぜAIが必要になったのか
● 経路探索やヘイト管理が必要になる
● 手ですべての状況を設定するのは困難
础滨の必要性
コンテンツ
AIのリスクとリターン
設定とコンテンツの差(AIによる増幅)が…
● 大きいほどコンテンツの制御が難しい
● 小さいとコンテンツが少なく/設定が多くなる
設定 AI
础滨の必要性
ゲームAIの分離
● ゲームAIの発展に伴い構造が整理される
● ゲームAIは3つの部分AIと通信部に分かれる
础滨の必要性
ゲームAIの分離
ゲームAIは3つの部分AIと通信部に分けられる
● キャラクターAI
○ NPCの知覚?意思決定?行動?記憶を管理する
● ナビゲ―ションAI
○ マップ等の状況をキャラクターに分かる形に変換する
● メタAI
○ キャラクターAIの群の制御?マップの生成
● 各AI間の通信部
础滨の必要性
ゲームAIの分離
ゲームAIは3つの部分AIと通信部に分けられる
キャラクター
ナビゲーション
メタ 知覚
指示
指示
アクション
整理したマップデータの提供
础滨の必要性
ゲーム础滨の设计
ゲーム础滨の设计
● キャラクターAI
○ エージェントアーキテクチャ
● ナビゲーションAI
● メタAI
● AIエディタ
キャラクターAI
エージェントアーキテクチャが主流
キャラクターAIを分割
● 知覚
● 意思決定
● 行動
● 記憶
ゲーム础滨の设计
エージェントアーキテクチャ
● 知覚
○ 意思決定の材料(位置?HPなど)を取得?整理
● 意思決定
○ どういう移動?スキルの使用をするか決定
● 行動
○ 実際にスキルを使用する?アニメーションを再生する
● 記憶
○ 以前の意思決定?知覚?行動等を記憶しておく
ゲーム础滨の设计
キャラクターAI
エージェントアーキテクチャ
知覚?意思決定?行動?記憶へ分割
世界
キャラクターAI
ゲーム础滨の设计
キャラクターAI
エージェントアーキテクチャ
知覚?意思決定?行動?記憶へ分割
世界
知覚 行動
記憶
意思決定
ゲーム础滨の设计
キャラクターAI
エージェントアーキテクチャ
各部の詳細
● 知覚
● 行動
● 意思決定
○ ルールベース
○ ステートベース
○ ビヘイビアーベース
● 記憶
ゲーム础滨の设计
キャラクターAI
エージェントアーキテクチャ
知覚
● 世界の情報を取得?整理?選択する部分
○ ナビゲーションAIからマップ情報を取得
○ メタAIの指示を取得
○ 記憶から情報を取り出す
○ その他ゲーム内の情報も必要なら
● 取得した情報の重み付け?選択をする
ゲーム础滨の设计
キャラクターAI
エージェントアーキテクチャ
行動
● 意思決定で決まった行動内容を実行する
○ アニメーションの再生
○ スキルの使用
● アニメーション遷移等に影響を与える
ゲーム础滨の设计
キャラクターAI
エージェントアーキテクチャ
意思決定
● 何をするかを決定する部分
● 実装が主に7種類に別れる
○ ルール?ステート?ビヘイビアー
○ タスク?ゴール?ユーティリティ?シミュレーション
● よく使われるのは上の3つ
● 組み合わせて使う場合もある
ゲーム础滨の设计
キャラクターAI
意思決定
ルールベースの意思決定
● 最も単純な意思決定方法
● 「AだったらBする」というルールで意思決定する
● ルールが多くなると大変
● 状況に応じた行動を取らせにくい
● 設定は簡単
ゲーム础滨の设计
キャラクターAI
エージェントアーキテクチャ
意思決定
ステートベースの意思決定
● 現在の状態とルールベースの状態遷移
ビヘイビアーベースの意思決定
● BehaviourTreeが有名
● 詳しくは↓で
幻塔戦記グリフォンの AI で使っている Behaviour Tree
ゲーム础滨の设计
キャラクターAI
エージェントアーキテクチャ
エージェントアーキテクチャ
記憶
● 過去の意思決定?知覚?行動を記憶する
● 次の意思決定に活かす
ゲーム础滨の设计
キャラクターAI
ナビゲーションAI
● 世界(マップ)の状況を整理する
○ 経路探索
○ 影響度マップの作成
○ レイキャストで視界に入っているかの判定
ゲーム础滨の设计
メタAI
● 他のAIを制御する
○ NPCの群での動きを制御する
○ プレイヤーとの戦闘のテンポ?難易度を制御する
● コンテンツを生成する
○ ダンジョンの自動生成
ゲーム础滨の设计
AIエディタ
良いAIを速く作るには、良いエディタが必要
良いエディタとは…
● 拡張性が高く
● コピペせず量産できる
● ゲーム側とスムーズにやり取りできる
○ 演出?ギミックとの連携
etc…
ゲーム础滨の设计
AIエディタ
良いAIを速く作るには、良いエディタが必要
● AIエディタはUnity拡張で既に存在している
○ ルール?ステート?ビヘイビアベースのAIが作れる
ゲーム础滨の设计
最近のゲーム础滨の事例
敵同士が重ならないように動かすAI
アクションゲーム全般
● 敵が重なると、リアルさ?見易さが失われる
● 狭い通路と広い部屋で異なる動きができる
● 大きい強い敵と弱い小さい敵をより区別できる
● 敵と味方は重なるので、味方に不便はない
最近のゲーム础滨の事例
敵同士が重ならないように動かすAI
実装
● 敵同士に当たり判定を設定する
● 敵を避ける経路探索?衝突回避をする
● 衝突した際は適切な反発をする
最近のゲーム础滨の事例
敵群の攻撃間隔?位置を調整するメタAI
無双系のアクションゲームなど
● 敵が団子にならず、主人公を囲む
● 主人公に対する敵の方向で攻撃頻度が変わる
● 複数の敵が同時に攻撃することを避ける
● 敵の位置?攻撃のテンポをメタAIがコントロール
最近のゲーム础滨の事例
敵群の攻撃間隔?位置を調整するメタAI
実装
● 集団戦闘を管理するメタAI
● メタAIとキャラクターAIの通信
● 背後に回りこむ経路探索
● 適切な攻撃方法の判断
問題点
● WAVE毎に設定すると設定が大変そう
最近のゲーム础滨の事例
敵群の攻撃間隔?位置を調整するメタAI
応用
● 主人公を”囲まない”こともできる
● 周りの敵の”強さ”の合計で判断
● 主人公のHPによって攻撃頻度を変える
● 主人公がターゲットにしていない敵は”待つ”
● 主人公の特殊攻撃が発動可能な位置へ動く
etc...
最近のゲーム础滨の事例
種類ごとに異なるセンサーを持つNPC
ステルスアクションなど
● 敵の種類で感知の仕方?敏感さが変化
○ 目が見えないけど耳が良い
○ 目が見えるけど遠くまでは見えない
● 感知の範囲も色々
○ 視覚は横のほうだと気がつくのに時間が掛かる
○ 暗闇だと見えない?川のそばだと聞こえない
最近のゲーム础滨の事例
種類ごとに異なるセンサーを持つNPC
実装
● Perception Pipeline
○ 情報源の指定?情報の変換?選択を重ねる
○ 柔軟なセンサーを作成できる
○ ナビゲーションAIとの連携は必須
問題点
● 設定が複雑になりがち
最近のゲーム础滨の事例
種類ごとに異なるセンサーを持つNPC
応用
● 攻撃方法?移動場所の決定に活用
● ヘイトの貯まる範囲?対象の柔軟な設定
○ 強い敵に後ろから歩いて近づくと気が付かれない…とか
● 攻撃?防御方向に対しての指定
最近のゲーム础滨の事例
指示を与えると考慮して動く味方NPC
サッカーゲームなど
● 指示を与えると味方の性格が変わる
○ 攻撃的?防御的に行動を選択するようになる
○ 性格が変わるだけで、緊急対応は行う
最近のゲーム础滨の事例
指示を与えると考慮して動く味方NPC
実装
● AIの行動決定の優先順位を変える
○ ルールベースAIのチェックする順番を変える
○ Behaviour TreeのSelectorの優先度変える
問題点
● 意思決定システムの階層化が必要
● 階層化をサポートしたエディタが必要
最近のゲーム础滨の事例
指示を与えると考慮して動く味方NPC
応用
● 味方NPCに指示を出す
○ 「守れ」「攻撃しろ」「敵をひきつけろ」等
● 敵の性格を変える特殊効果
○ ボスの指示で急に攻撃的になる
最近のゲーム础滨の事例
自然なアニメーション遷移のためのAI
FPS等
● 目的によってアニメーションの遷移が変わる
○ 隠れるための移動と攻撃のための移動の最後が違う
● 急なターン等はアニメーションを変える
● ころころ向きを変えて徘徊しない
最近のゲーム础滨の事例
自然なアニメーション遷移のためのAI
実装
● AIの遷移とMechanimとの連携
○ アニメーション遷移?ブレンドをAIからコントロール
● 徘徊の移動方向とかの急激な変化を抑止
○ Pelrin Noiseや、数値の制限など
問題点
● アニメーションに指示を出す部分が複雑に
最近のゲーム础滨の事例
自然なアニメーション遷移のためのAI
応用
● 先行入力を検知して挙動を変える
○ 回避行動後の攻撃?移動
○ 何をやっている時にダメージを受けたか
● Perlin Noiseは行動決定にも用いられる
最近のゲーム础滨の事例
特性に適した位置に移動するNPC
オープンワールド系のゲームの味方NPC
● 攻撃方法等によって移動する位置を決定する
○ 遠距離攻撃か近距離攻撃か
○ HPの状況
○ 性格
○ メタAIからの指示
● 経路探索の前の、どこに移動するかの決定
最近のゲーム础滨の事例
特性に適した位置に移動するNPC
実装
● Tactical Position Selection
○ 移動先の候補に評価値をつけて決定する
● Influence Map
○ マップの各点にどの程度の影響度があるかを記録する
問題点
● 軽量な実装には工夫が必要
● 設定項目が増える(かも)
最近のゲーム础滨の事例
特性に適した位置に移動するNPC
応用
● 指示によって移動先を変える味方
● NPCの種族や性格によって移動先を変える
● 群れる/群れないNPC
● プレイヤーの自動移動や誘導にも使える
最近のゲーム础滨の事例
ダンジョン?クエストを自動生成するメタAI
ハクスラ系のゲーム
● ダンジョンのマップ?敵の配置を生成
● 収集系クエストを自動でつくるMMO等もある
最近のゲーム础滨の事例
ダンジョン?クエストを自動生成するメタAI
実装
● マップ?敵の配置のパターンを作る
○ 既存のマップを組み合わせられる部分に分割
○ 敵の配置のルールをパターン化
● 機械学習?ルールベースで生成
問題点
● マップの部品化等にコストがかかる
● 良いダンジョンの生成にはチューニングが必要
最近のゲーム础滨の事例
ダンジョン?クエストを自動生成するメタAI
応用
● 新規マップの見た目を自動生成
○ 敵の配置?ギミックは手動
● 味方NPCの強さのテスト
● ランダムに生成して面白いマップを探す
最近のゲーム础滨の事例
まとめ
● 础滨の必要性
○ ゲームAIの役割?必要性
○ ゲームAIのリスク
● ゲーム础滨の设计
○ キャラクター?ナビゲーション?メタAI
○ エージェントアーキテクチャ
○ ルール?ステート?ビヘイビアベースの意思決定
● 最近のゲーム础滨の事例

More Related Content

ゲーム础滨の基础と事例