ゲームを作ったり、ゲームを遊びまくったりしている せっき~の生き様。 まずは目次をご覧ください
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
2011年9月6日 にあった、CEDECの講演についての記事です。
「ぽかぽかアイルー村における、アフォーダンス指向のAI事例。
AIに多様な振る舞いをさせる手法」
PSP『ぽかぽかアイルー村』における AIについての講演です。
http://www.capcom.co.jp/monsterhunter/pokapoka_airu/top.html
---------------------------------------------------------
●アイルー村って どんな感じのゲーム?
クエスト中において・・・
1. アイルーが やりたい事を3択で提案してくる
2. プレイヤーが その中のどれかを選択する
3. アイルーが 選ばれた行動を行う
この、1. やりたい事の提案の際に AIが使われている
との事でした
提案の例)
敵を見つけた際
「1.攻撃する 2.穴を掘って隠れる 3.そのまま進む」
敵と きのこを見つけた際
「1.攻撃する 2.きのこ を採取する 3.そのまま進む」
●AIで実現したい事
バリエーション豊かな行動を ユーザーに見せたい
アイルーの個性ごとに やりたい事を変えたい
状況によって 行動を変化させたい
---------------------------------------------------------
●これを実現するにあたっての問題点
単純に作ると その組み合わせが爆発的に多くなる事
(アイルーの個性の種類 × 行動の対象 = 凄まじい量)
●考えられる方法は・・・
1. if文 による分岐
アイルー1匹あたり 1500 ~ 2000行のスクリプトが必要
それを アイルーの種類分用意すると 15000行になってしまう
→ 作業量が 現実的ではない (ここだけの作業で、数人必要になってしまう)
→→ 小人数プロジェクトである事
バランスに関わる所なので 1人の専任者に任せたい
ため、不採用
2.決定木
if文の内容を ツリー分岐で表現しただけであり
作業量は変わらない
3.アフォーダンス指向のAI
これを採用
---------------------------------------------------------
●アフォーダンス指向のAIとは
海外の「シムズ」で使われ始めた手法
技術的な詳しい内容については、IGDA SIG-AIを参考にしてください
との事
http://blogai.igda.jp/article/33936286.html
・通常のAIの場合
AIが環境を調べ、行動を決定する
例) アイルーが きのこを見つけ
それに対して、行動を分岐させる
・アフォーダンス指向のAIの場合
環境が AIに対して、行動を示唆する。
例) きのこが、アイルーに対して 「食べれるよ」と言う情報を与える
敵が、アイルーに対して 「攻撃できるよ」「逃げれるよ」と言う情報を与える
●メリット
提案テーブル × アイルーの種類 +
アフォーダンステーブル × 対象の種類
を定義する事で、AIができあがる
→ 劇的な作業量 削減!!
(具体的には 30 + 150 = 180パターンの記述だけで実現)
---------------------------------------------------------
●アイルー村における 具体例
・提案テーブル
個々のアイルーが持つ、各提案の優先
やる気 高・中・低 に応じて3パターン
例)
アイルーA 攻撃したい 60
食べたい 100
釣りたい 30
進みたい 60
寝たい 40
アイルーB 攻撃したい 30
食べたい 100
釣りたい 100
進みたい 40
寝たい 40
(アイルーBは 釣り好きな個性)
・アフォーダンステーブル
オブジェクトが持つ、提案への影響度
例)
敵 攻撃したい +30
キノコ 食べたい +20
●実際例
アイルーAが 敵とキノコに 同時に出会った場合
アイルーA 攻撃したい 60 + 30 = 90
食べたい 100 + 20 = 120
進みたい 60
寝たい 40
釣りたい × (そもそも できない行動)
この結果、上位の3つの行動 (攻撃したい、食べたい、進みたい)
を 提案してくるようになります。
「ぽかぽかアイルー村における、アフォーダンス指向のAI事例。
AIに多様な振る舞いをさせる手法」
PSP『ぽかぽかアイルー村』における AIについての講演です。
http://
---------------------------------------------------------
●アイルー村って どんな感じのゲーム?
クエスト中において・・・
1. アイルーが やりたい事を3択で提案してくる
2. プレイヤーが その中のどれかを選択する
3. アイルーが 選ばれた行動を行う
この、1. やりたい事の提案の際に AIが使われている
との事でした
提案の例)
敵を見つけた際
「1.攻撃する 2.穴を掘って隠れる 3.そのまま進む」
敵と きのこを見つけた際
「1.攻撃する 2.きのこ を採取する 3.そのまま進む」
●AIで実現したい事
バリエーション豊かな行動を ユーザーに見せたい
アイルーの個性ごとに やりたい事を変えたい
状況によって 行動を変化させたい
---------------------------------------------------------
●これを実現するにあたっての問題点
単純に作ると その組み合わせが爆発的に多くなる事
(アイルーの個性の種類 × 行動の対象 = 凄まじい量)
●考えられる方法は・・・
1. if文 による分岐
アイルー1匹あたり 1500 ~ 2000行のスクリプトが必要
それを アイルーの種類分用意すると 15000行になってしまう
→ 作業量が 現実的ではない (ここだけの作業で、数人必要になってしまう)
→→ 小人数プロジェクトである事
バランスに関わる所なので 1人の専任者に任せたい
ため、不採用
2.決定木
if文の内容を ツリー分岐で表現しただけであり
作業量は変わらない
3.アフォーダンス指向のAI
これを採用
---------------------------------------------------------
●アフォーダンス指向のAIとは
海外の「シムズ」で使われ始めた手法
技術的な詳しい内容については、IGDA SIG-AIを参考にしてください
との事
http://
・通常のAIの場合
AIが環境を調べ、行動を決定する
例) アイルーが きのこを見つけ
それに対して、行動を分岐させる
・アフォーダンス指向のAIの場合
環境が AIに対して、行動を示唆する。
例) きのこが、アイルーに対して 「食べれるよ」と言う情報を与える
敵が、アイルーに対して 「攻撃できるよ」「逃げれるよ」と言う情報を与える
●メリット
提案テーブル × アイルーの種類 +
アフォーダンステーブル × 対象の種類
を定義する事で、AIができあがる
→ 劇的な作業量 削減!!
(具体的には 30 + 150 = 180パターンの記述だけで実現)
---------------------------------------------------------
●アイルー村における 具体例
・提案テーブル
個々のアイルーが持つ、各提案の優先
やる気 高・中・低 に応じて3パターン
例)
アイルーA 攻撃したい 60
食べたい 100
釣りたい 30
進みたい 60
寝たい 40
アイルーB 攻撃したい 30
食べたい 100
釣りたい 100
進みたい 40
寝たい 40
(アイルーBは 釣り好きな個性)
・アフォーダンステーブル
オブジェクトが持つ、提案への影響度
例)
敵 攻撃したい +30
キノコ 食べたい +20
●実際例
アイルーAが 敵とキノコに 同時に出会った場合
アイルーA 攻撃したい 60 + 30 = 90
食べたい 100 + 20 = 120
進みたい 60
寝たい 40
釣りたい × (そもそも できない行動)
この結果、上位の3つの行動 (攻撃したい、食べたい、進みたい)
を 提案してくるようになります。
PR
この記事にコメントする
プロフィール
HN:
せっき~
性別:
男性
職業:
ゲームプログラマ
自己紹介:
古いパソゲー、ボードゲーム、カードゲームを熱狂的に遊んでいます。
ついったー
http://twitter.com/seki_seki_seki
連絡先は
sekisekiseki(あっと)gmail.com
ついったー
http://twitter.com/seki_seki_seki
連絡先は
sekisekiseki(あっと)gmail.com
カテゴリー
最新記事
(10/24)
(02/17)
(12/20)
(12/07)
(11/29)
(11/15)
(11/02)
最新コメント
[06/24 www.linux.ca]
[06/23 linux.org]
[06/23 blackmarket-matches.com]
[06/23 Ucuz Davetiye]
[06/22 ロレックス デイトナ 8pダイヤ]
カウンター
ついったー