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