CEDEC 2015
をテンプレートにして作成
[
ホーム
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
----
現地参加せずに、ニコ生の放送観た纏め。
間違ってたらごめんなさい
* 資料とか他の人の纏めとか [#tf618eb6]
- 4Gamerさん
http://www.4gamer.net/words/008/W00851/
* 複数タイトルで使われた柔軟性の高いAIエンジン [#y58c54f8]
'''BDIモデル、PID制御とその辺りを理解しきれなかった……'''
- BNSさん。タイムクライシス5とか。
- 柔軟で決まった動き
- AIデザイナのみで構築可能な環境
AI Designer
|
Squad AI(個々のグループ)
|
Agent AI(個人)
- Agent AI
機能毎にモジュール化。
モジュールを組み合わせてAIを作る。
** AIの流れ [#u9689c0f]
- Perception -> Brain -> Action
*** Perception(認識) [#h1c288b9]
- キャラクターの認識。環境から収集してAI独自の解釈を加え...
-- レベル中の静的オブジェクト、動的オブジェクト(プレイや...
AIの価値観で取捨選択、加工する。
ex.)プレイヤーの行動でヘイト値を増減、ヘイト値が高いプレ...
-- Layer-based Perception System
--- ソースレイヤー
データ収集。視覚、聴覚をシミュレート。索敵など。
--- 加工レイヤー
フィルタリング。レイキャストや経路探索等。スコアリング
--- 選択レイヤー
集めた中からどれを使うか。スコアの一番高いもの、ランダム...
--- 事前にプライオリティでソートを行う。
ex.)
範囲内の敵をリストアップ
距離によるスコアリング
スコアに応じて
残り体力でスコアリングすると味方プレイヤーの回復とかにも...
--- 危険度の低い敵を狙う
敵から攻撃を受けた際に、その敵の座標を危険地点として他のA...
--- Influence Map
フィールド上の影響度。(敵、味方どちらが優勢かなど)
作成方法
影響度の元となる種を設定する。(危険地点(パンくず)な...
隣接するノードに伝搬させる。
繰り返す
*** Brain(意思決定) [#mbf8292e]
- 昔からのやり方(FSM)
複雑になってくると全体像が見えにくい。管理しきれなく鳴る
- BehaviorTreeとHTNプランニングのハイブリッドシステム
-- BehaviorTree
--- タスク:条件判定、実際の行動
--- シーケンス:タスクを順番に実行
--- プライオリティ(UE4だとSelector?):複数のタスクから一...
--- Probability:設定された比率からランダムで選ぶ
--- Parallel:複数のタスクを同時に行う
--- Decorator:子供のタスクの動作をカスタム(数回繰り返す...
-- HTNプランニング
階層型タスクネットワーク(ドメイン)
状態に応じて分解(ステート)
目標(ゴール)を達成する為のタスク列(プラン)を得る。
--- PrimitiveTask
ステートへの操作。自分の状態変化
--- CompoundTask
サブタスクのリスト
-- ハイブリッドに
BehaviorTreeで決めた目標を達成するタスクをHTNプランニング...
BehaviorTreeをメインにして、HTNプランナーに具体的な目標を...
HTNプランニングをメインにして、HTNプランナーに大まかな目...
-- BDIモデル
特定の計画を元に行動しようとする意図がある。同じ結果であ...
意図は信念と願望により決定される。
--- BDIアーキテクチャ(信念、願望、意図を保持する)
1.信念と欲求から願望(BehaviorTree)を決めて候補(HTNドメ...
2.候補から実際に行う物を決定(HTNプランナー)
3.実行
4.外部要因で信念を更新する
-> 合理性の高い、人間らしいAIをAIデザイナが構築できる。
--- プランニングの問題
遅延評価
プランニング時では予測出来ない。
カバーポイントに移動してから、プレイヤーの距離をはか...
並列タスク
同時に行える方が自然
・カバーへ移動
・リロード
タスクを小分けにしてParallelで繋ぐ
--- まとめ
シーケンススクリプト |
+-> BehaviorTree -> HTNプランニン...
プログラム |
*** Action(意思をキャラクターに反映) [#i146b695]
- 意図によってアニメーションを変化させる
攻撃するための移動。カバーポイントに着く前から狙う動作に...
隠れるための移動。カバーポイントに着く前から隠れる動作に...
- Steering
キャラクターの移動を担当するモジュール
-- 人
Pathfinding
Path Following
Collision Avoidance(ORCA based)
-- 乗り物
車線変更、多数の敵の制御。手付けデータの流し込みでは限界。
↓
AI制御。物理駆動。
--- コースデータ
スプライン、スプラインの幅でコースデータを表現
--- コントロール
目標はレベルデザイナーが設定
--- PID制御
P:比例動作。目標値と現在値の差に比例した動作
I:積分動作。差の累積値(積分)に比例した制御
D:微分動作。差おn変化量(微分)に比例した制御
目標値(速度、角度) -> LPF +-> P -+-> Vehicle -> 出力値...
+-> I -|
+-> D -|
・パラメーター調整が重要
適当なパラメーターだとふらふらする。
・パラメーター調整方法
限界感度法
ステップ応答法。最適値というより近似値
-> ステップ応答法で求めた値をベースに、焼きなまし法で...
簡単なテストコースでパラメーターを調整
-> 目標値と実際の値をエラー値として保存
課題
焼なまし法による調整では何百周、何千周もしなければ...
-> キャラクタAIの学習利用は、他の処理を省いて高速...
** 課題 [#xab0d0b1]
AIデザイナにもAI技術の知識が必要
* FINAL FANTASY XV -EPISODE DUSCAE- におけるキャラクターA...
- 4Gamerさん
http://www.4gamer.net/games/075/G007535/20150831093/
** イントロダクション [#k5a12778]
- AIキャラクター制作に求められたこと
-- 説得力のある行動
-- リアリティのある挙動
-- イベントとシームレス
-- 量産性
** 意思決定入門 [#l1f9d8e7]
「環境」の中に「身体」
「知能」が身体を環境の中で動作させる
入力(センサー) -> 身体 -> 行動(アウトプット)
知能の内部世界 <-> 環境世界
エージェント・アーキテクチャ。知能と環境をわけて考える
- 知能の内部世界
[環境世界] -> 記憶 -> 認識の形成 -> 意思の決定 -> 運動の...
情報が循環する(インフォメーション・フロー)
- 意思決定モデル
-- ルール(規制)ベースAI
-- ステート(状態)ベースAI
-- ビヘイビア(振る舞い)ベースAI
-- ゴール(目標)ベースAI
-- タスク(仕事)ベースAI
-- ユーティリティ(効用)ベースAI
-- シミュレーションベースAI
-- ビヘイビアツリー入門
多層構造
-- ステート入門
ステートを遷移条件で結ぶ
基本的に循環するステートマシン(有限状態マシン)を作る。
階層化も出来る。
ステートマシンの堅実な制御と、ビヘイビアツリーの適応的な...
** Luminous AIの全体設計 [#wdb83d8a]
+ 必要な概念リストを作成
+ 種類分け
+ それぞれを実装していく
- メタAI
ゲーム全体の流れをコントロール
プレイヤーがピンチだから助けるとか
- キャラクターAI(Luminous AI Graph)
自分の行動
- ナビゲーションAI
地形や状況の解析(Luminous AI Navigation)
- Luminous AI Tool
- Luminous AI Runtime
** AI Graph Editorの実装 [#l6f6fe64]
*** ツール設計の課題 [#fbee78c0]
- ビヘイビアツリーとステートマシンの組み合わせ方
グラフ構造の為のノードと、処理の中身のノードを分離。
グラフの処理の中身と、グラフ構造を分ける
こうすると、処理の中身をビヘイビア、ステートマシン両方で...
- ステートマシン、ビヘイビアツリーを入れ子にする事が出来...
- AI データの拡張性
機能追加がスムーズに行えるか。組み合わせ爆発を無くしたい。
階層型のグラフシステムに。
-- トレイ(タスクの集合、アセット)単位で階層化する。
行動パターンを増やす際は、下層部分を増やすだけでいい。処...
- ゲーム側とのスムーズな情報のやり取り
ブラックボード
- ローカルブラックボード
自身のAIのみ
- グローバルブラックボード
プレイヤー等全体
- コピー&ペーストをせずに量産するか
-- トレイをアセット化して、処理を共有できるように
-- オーバーライドして処理を上書きできるように
特定のキャラだけ、処理の中身を書き換える事が出来る。
*** ゲーム組み込みの要件 [#m9a7da20]
- ステートやビヘイビアの状況、パラメーターやログが確認で...
-- ビジュアルノードデバッガ
ツリーで現在のタスクの場所を見れる
-- インゲームデバッガ
ログや階層状態など、詳細を見れる
- AIキャラクターをシームレスでイベント演出を
トレイを外部システムから実行出来るように。
トレイを割り込み再生できる。
- 賢いAI。行動している最中に別の行動、常に別の事を考えさ...
ステートマシンでもビヘイビアツリーでも並列実行できるように
Parallelノードを用意。階層ごとにも配置出来る。
同時実行「索敵と行動」+「移動と射撃」
** ゲーム内への応用実例 [#xaabdaa4]
*** NPC [#x8011b0d]
- 社会的な行動(生活活動)
- 多くを同時に
社会行動に特化した軽量スクリプトシステムを用意。
トレイを外部実行で。
*** 仲間 [#v6f14242]
- イベント演出の時も並列思考、通常AIを止めたくない
通常AIの中に演出用のプリセットAIを埋め込んでおいて、外部...
- 仲間同士で強調させたい
メタAIからの支持で行動を切り替える。
ex.) アイテム使用命令 -> メタAIに -> 使用できる環境になれ...
ex.) 敵が「捨て身」を使用 -> メタAIが判断して行動できる仲...
*** ニフル兵 [#f90c19a4]
- 機械的な合理性
-- 今何が出来るのか
-- 何が一番合理的か
ビヘイビアツリー
-- 身体制御との連動
AIからアニメーションを再生ではなく、身体制御のステートマ...
AIからメッセージが来たらステートを切り替える
*** モンスター [#z18ed938]
- リアルな挙動
-- 視覚センサー、ターゲットサーチ
--- 視覚センサー
AIの視覚をシミュレート。扇状。
--- ターゲットサーチ
視覚センサーから得られた情報を解析
AI Graphでターゲットを使用する。
-- PQS移動、ステアリング
--- 位置検索システム(Point Query System)
移動先地点を選択して移動する。各地点の評価値を出す。(1m...
移動処理をデータで完結。
フィルター。角度、距離を設定する。
--- ステアリング
動的な回避。
ロボット方面で有るRVOを発展させた。
- 大量生産の仕組み
-- ルールAIシステム
条件判定でマッチしたルールを実行。
AI Graph基本ロジック実行 -> ルールAI実行 -> 行動テンプレ...
ex.)「たたかう」 -> 「接近して攻撃」が抽選 -> 「接近移動...
-- AI Graphオーバーライド
ベースAIを作成、ゴブリンとかベヒーモスでオーバーライドす...
C++のクラス継承と同じようなもの。
-- モーション解析
--- 攻撃モーション解析システム
どこまで攻撃が届くか、を計算。
これをAI Graph等で使用している。
空間にコリジョン球(数cm単位?)を配置して、それで計算
--- 移動モーションの解析システム
キャラクター0の旋回性能、停止性能等をチャート化。停止まで...
チャートから問題のあるアニメーションデータを見つけて修正...
次世代機で開発規模が大きくなってきた。
コストが増大していくのでAIはクオリティと共に効率化に力を...
終了行:
#contents
----
現地参加せずに、ニコ生の放送観た纏め。
間違ってたらごめんなさい
* 資料とか他の人の纏めとか [#tf618eb6]
- 4Gamerさん
http://www.4gamer.net/words/008/W00851/
* 複数タイトルで使われた柔軟性の高いAIエンジン [#y58c54f8]
'''BDIモデル、PID制御とその辺りを理解しきれなかった……'''
- BNSさん。タイムクライシス5とか。
- 柔軟で決まった動き
- AIデザイナのみで構築可能な環境
AI Designer
|
Squad AI(個々のグループ)
|
Agent AI(個人)
- Agent AI
機能毎にモジュール化。
モジュールを組み合わせてAIを作る。
** AIの流れ [#u9689c0f]
- Perception -> Brain -> Action
*** Perception(認識) [#h1c288b9]
- キャラクターの認識。環境から収集してAI独自の解釈を加え...
-- レベル中の静的オブジェクト、動的オブジェクト(プレイや...
AIの価値観で取捨選択、加工する。
ex.)プレイヤーの行動でヘイト値を増減、ヘイト値が高いプレ...
-- Layer-based Perception System
--- ソースレイヤー
データ収集。視覚、聴覚をシミュレート。索敵など。
--- 加工レイヤー
フィルタリング。レイキャストや経路探索等。スコアリング
--- 選択レイヤー
集めた中からどれを使うか。スコアの一番高いもの、ランダム...
--- 事前にプライオリティでソートを行う。
ex.)
範囲内の敵をリストアップ
距離によるスコアリング
スコアに応じて
残り体力でスコアリングすると味方プレイヤーの回復とかにも...
--- 危険度の低い敵を狙う
敵から攻撃を受けた際に、その敵の座標を危険地点として他のA...
--- Influence Map
フィールド上の影響度。(敵、味方どちらが優勢かなど)
作成方法
影響度の元となる種を設定する。(危険地点(パンくず)な...
隣接するノードに伝搬させる。
繰り返す
*** Brain(意思決定) [#mbf8292e]
- 昔からのやり方(FSM)
複雑になってくると全体像が見えにくい。管理しきれなく鳴る
- BehaviorTreeとHTNプランニングのハイブリッドシステム
-- BehaviorTree
--- タスク:条件判定、実際の行動
--- シーケンス:タスクを順番に実行
--- プライオリティ(UE4だとSelector?):複数のタスクから一...
--- Probability:設定された比率からランダムで選ぶ
--- Parallel:複数のタスクを同時に行う
--- Decorator:子供のタスクの動作をカスタム(数回繰り返す...
-- HTNプランニング
階層型タスクネットワーク(ドメイン)
状態に応じて分解(ステート)
目標(ゴール)を達成する為のタスク列(プラン)を得る。
--- PrimitiveTask
ステートへの操作。自分の状態変化
--- CompoundTask
サブタスクのリスト
-- ハイブリッドに
BehaviorTreeで決めた目標を達成するタスクをHTNプランニング...
BehaviorTreeをメインにして、HTNプランナーに具体的な目標を...
HTNプランニングをメインにして、HTNプランナーに大まかな目...
-- BDIモデル
特定の計画を元に行動しようとする意図がある。同じ結果であ...
意図は信念と願望により決定される。
--- BDIアーキテクチャ(信念、願望、意図を保持する)
1.信念と欲求から願望(BehaviorTree)を決めて候補(HTNドメ...
2.候補から実際に行う物を決定(HTNプランナー)
3.実行
4.外部要因で信念を更新する
-> 合理性の高い、人間らしいAIをAIデザイナが構築できる。
--- プランニングの問題
遅延評価
プランニング時では予測出来ない。
カバーポイントに移動してから、プレイヤーの距離をはか...
並列タスク
同時に行える方が自然
・カバーへ移動
・リロード
タスクを小分けにしてParallelで繋ぐ
--- まとめ
シーケンススクリプト |
+-> BehaviorTree -> HTNプランニン...
プログラム |
*** Action(意思をキャラクターに反映) [#i146b695]
- 意図によってアニメーションを変化させる
攻撃するための移動。カバーポイントに着く前から狙う動作に...
隠れるための移動。カバーポイントに着く前から隠れる動作に...
- Steering
キャラクターの移動を担当するモジュール
-- 人
Pathfinding
Path Following
Collision Avoidance(ORCA based)
-- 乗り物
車線変更、多数の敵の制御。手付けデータの流し込みでは限界。
↓
AI制御。物理駆動。
--- コースデータ
スプライン、スプラインの幅でコースデータを表現
--- コントロール
目標はレベルデザイナーが設定
--- PID制御
P:比例動作。目標値と現在値の差に比例した動作
I:積分動作。差の累積値(積分)に比例した制御
D:微分動作。差おn変化量(微分)に比例した制御
目標値(速度、角度) -> LPF +-> P -+-> Vehicle -> 出力値...
+-> I -|
+-> D -|
・パラメーター調整が重要
適当なパラメーターだとふらふらする。
・パラメーター調整方法
限界感度法
ステップ応答法。最適値というより近似値
-> ステップ応答法で求めた値をベースに、焼きなまし法で...
簡単なテストコースでパラメーターを調整
-> 目標値と実際の値をエラー値として保存
課題
焼なまし法による調整では何百周、何千周もしなければ...
-> キャラクタAIの学習利用は、他の処理を省いて高速...
** 課題 [#xab0d0b1]
AIデザイナにもAI技術の知識が必要
* FINAL FANTASY XV -EPISODE DUSCAE- におけるキャラクターA...
- 4Gamerさん
http://www.4gamer.net/games/075/G007535/20150831093/
** イントロダクション [#k5a12778]
- AIキャラクター制作に求められたこと
-- 説得力のある行動
-- リアリティのある挙動
-- イベントとシームレス
-- 量産性
** 意思決定入門 [#l1f9d8e7]
「環境」の中に「身体」
「知能」が身体を環境の中で動作させる
入力(センサー) -> 身体 -> 行動(アウトプット)
知能の内部世界 <-> 環境世界
エージェント・アーキテクチャ。知能と環境をわけて考える
- 知能の内部世界
[環境世界] -> 記憶 -> 認識の形成 -> 意思の決定 -> 運動の...
情報が循環する(インフォメーション・フロー)
- 意思決定モデル
-- ルール(規制)ベースAI
-- ステート(状態)ベースAI
-- ビヘイビア(振る舞い)ベースAI
-- ゴール(目標)ベースAI
-- タスク(仕事)ベースAI
-- ユーティリティ(効用)ベースAI
-- シミュレーションベースAI
-- ビヘイビアツリー入門
多層構造
-- ステート入門
ステートを遷移条件で結ぶ
基本的に循環するステートマシン(有限状態マシン)を作る。
階層化も出来る。
ステートマシンの堅実な制御と、ビヘイビアツリーの適応的な...
** Luminous AIの全体設計 [#wdb83d8a]
+ 必要な概念リストを作成
+ 種類分け
+ それぞれを実装していく
- メタAI
ゲーム全体の流れをコントロール
プレイヤーがピンチだから助けるとか
- キャラクターAI(Luminous AI Graph)
自分の行動
- ナビゲーションAI
地形や状況の解析(Luminous AI Navigation)
- Luminous AI Tool
- Luminous AI Runtime
** AI Graph Editorの実装 [#l6f6fe64]
*** ツール設計の課題 [#fbee78c0]
- ビヘイビアツリーとステートマシンの組み合わせ方
グラフ構造の為のノードと、処理の中身のノードを分離。
グラフの処理の中身と、グラフ構造を分ける
こうすると、処理の中身をビヘイビア、ステートマシン両方で...
- ステートマシン、ビヘイビアツリーを入れ子にする事が出来...
- AI データの拡張性
機能追加がスムーズに行えるか。組み合わせ爆発を無くしたい。
階層型のグラフシステムに。
-- トレイ(タスクの集合、アセット)単位で階層化する。
行動パターンを増やす際は、下層部分を増やすだけでいい。処...
- ゲーム側とのスムーズな情報のやり取り
ブラックボード
- ローカルブラックボード
自身のAIのみ
- グローバルブラックボード
プレイヤー等全体
- コピー&ペーストをせずに量産するか
-- トレイをアセット化して、処理を共有できるように
-- オーバーライドして処理を上書きできるように
特定のキャラだけ、処理の中身を書き換える事が出来る。
*** ゲーム組み込みの要件 [#m9a7da20]
- ステートやビヘイビアの状況、パラメーターやログが確認で...
-- ビジュアルノードデバッガ
ツリーで現在のタスクの場所を見れる
-- インゲームデバッガ
ログや階層状態など、詳細を見れる
- AIキャラクターをシームレスでイベント演出を
トレイを外部システムから実行出来るように。
トレイを割り込み再生できる。
- 賢いAI。行動している最中に別の行動、常に別の事を考えさ...
ステートマシンでもビヘイビアツリーでも並列実行できるように
Parallelノードを用意。階層ごとにも配置出来る。
同時実行「索敵と行動」+「移動と射撃」
** ゲーム内への応用実例 [#xaabdaa4]
*** NPC [#x8011b0d]
- 社会的な行動(生活活動)
- 多くを同時に
社会行動に特化した軽量スクリプトシステムを用意。
トレイを外部実行で。
*** 仲間 [#v6f14242]
- イベント演出の時も並列思考、通常AIを止めたくない
通常AIの中に演出用のプリセットAIを埋め込んでおいて、外部...
- 仲間同士で強調させたい
メタAIからの支持で行動を切り替える。
ex.) アイテム使用命令 -> メタAIに -> 使用できる環境になれ...
ex.) 敵が「捨て身」を使用 -> メタAIが判断して行動できる仲...
*** ニフル兵 [#f90c19a4]
- 機械的な合理性
-- 今何が出来るのか
-- 何が一番合理的か
ビヘイビアツリー
-- 身体制御との連動
AIからアニメーションを再生ではなく、身体制御のステートマ...
AIからメッセージが来たらステートを切り替える
*** モンスター [#z18ed938]
- リアルな挙動
-- 視覚センサー、ターゲットサーチ
--- 視覚センサー
AIの視覚をシミュレート。扇状。
--- ターゲットサーチ
視覚センサーから得られた情報を解析
AI Graphでターゲットを使用する。
-- PQS移動、ステアリング
--- 位置検索システム(Point Query System)
移動先地点を選択して移動する。各地点の評価値を出す。(1m...
移動処理をデータで完結。
フィルター。角度、距離を設定する。
--- ステアリング
動的な回避。
ロボット方面で有るRVOを発展させた。
- 大量生産の仕組み
-- ルールAIシステム
条件判定でマッチしたルールを実行。
AI Graph基本ロジック実行 -> ルールAI実行 -> 行動テンプレ...
ex.)「たたかう」 -> 「接近して攻撃」が抽選 -> 「接近移動...
-- AI Graphオーバーライド
ベースAIを作成、ゴブリンとかベヒーモスでオーバーライドす...
C++のクラス継承と同じようなもの。
-- モーション解析
--- 攻撃モーション解析システム
どこまで攻撃が届くか、を計算。
これをAI Graph等で使用している。
空間にコリジョン球(数cm単位?)を配置して、それで計算
--- 移動モーションの解析システム
キャラクター0の旋回性能、停止性能等をチャート化。停止まで...
チャートから問題のあるアニメーションデータを見つけて修正...
次世代機で開発規模が大きくなってきた。
コストが増大していくのでAIはクオリティと共に効率化に力を...
ページ名: