約1年半ぶりくらいのでしょうか。
皆様お久しぶりです、吉行です。
今回は最近興味のある、
村人からラスボスまでゲームを盛り上げるキャラクター達が
どのような仕組みで動いているか、ゲームAIについて紹介していきたいと思います。
環境と知性をつなぐ情報の流れことをインフォメーションフローといいます。
この4つのモジュールの設計と連携が一つの知性を形成しています。
知性は環境から情報を得て、環境に影響を与える動きを行います。
この環境から知性に情報を得る部分を「感覚器」、
知性から環境に作用する部分を「効果器」と言います。
例えば、プレイヤーを追いかけるAIを作った場合は、
以下のような処理を行なっていることとなります。
知覚:プレイヤーを発見
意思決定:プレイヤーを追いかけるという意思を決定
行動:プレイヤーに向かって移動
プログラムで言えば、
知覚と意思決定は「条件式」により行われ、
行動はパラメータ(今回だとプレイヤーの座標)の変化により行われます。
エージェントアーキテクチャには以下の6つの型が存在します。
という6つの型を定義しています。
今回はルールベースのAIを紹介したいと思います。
つまりルールとは条件式のことで、例えば以下のような感じです。
ただし、条件が増えると、いずれ競合という問題が発生します。
上記1.と2.のルールは、同時に満たすことが可能でかつ動作が共存できないため競合が発生しています。
競合を解消するためには、以下のどれかを行う必要があります。
しかし、要素が増えるとルールが複雑になり、優先度付けも難しくなってしまいそうです。ルールベースの本質はルールを基本単位とする考えを忘れないように。
プライオリティについて、駆け足での説明となってしまいましたので
次回、AIでよくある動きの例を交えながら説明していきたいと思います。
こうご期待を!
ご興味ございます方。募集中、募集中でございます。
採用情報
皆様お久しぶりです、吉行です。
今回は最近興味のある、
村人からラスボスまでゲームを盛り上げるキャラクター達が
どのような仕組みで動いているか、ゲームAIについて紹介していきたいと思います。
ゲームAIとは
ゲームAIはキャラクターAI、メタAI、ナビゲーションAIの3つに分けることが出来ます。- キャラクターAI
知覚、意思決定、行動、記録を管理するキャラクターの頭脳です。 - メタA
プレイヤーの行動、ゲームの進行を監視し、ゲーム性を調整するものです。 - ナビゲーションAI
環境情報を認識して、行きたい場所の経路等を提供してくれるものです。
インフォメーションフロー
AIを考える上で大事なのは環境との関連性を考えることで、環境と知性をつなぐ情報の流れことをインフォメーションフローといいます。
- 知覚
環境から情報を得る部分 - 意思決定
何を行うか決定する部分 - 行動
意思決定で決まった行動を実施する部分 - 記憶
知覚、意思決定、行動を記録する部分
この4つのモジュールの設計と連携が一つの知性を形成しています。
知性は環境から情報を得て、環境に影響を与える動きを行います。
この環境から知性に情報を得る部分を「感覚器」、
知性から環境に作用する部分を「効果器」と言います。
例えば、プレイヤーを追いかけるAIを作った場合は、
以下のような処理を行なっていることとなります。
知覚:プレイヤーを発見
意思決定:プレイヤーを追いかけるという意思を決定
行動:プレイヤーに向かって移動
プログラムで言えば、
知覚と意思決定は「条件式」により行われ、
行動はパラメータ(今回だとプレイヤーの座標)の変化により行われます。
エージェントアーキテクチャの6つの型
エージェントアーキテクチャとは、環境以外の環境に対してどう反応するかを定義したアーキテクチャとなります。エージェントアーキテクチャには以下の6つの型が存在します。
- ルールベース
- ステートベース
- ビヘイビアベース
- タスクベース
- ゴール指向
- ユーティリティベース
という6つの型を定義しています。
今回はルールベースのAIを紹介したいと思います。
ルールベース
ルールを一つの単位として「もしAがBだったら」の条件式の集合で動作するAIです。つまりルールとは条件式のことで、例えば以下のような感じです。
- if (プレイヤー発見) {
追いかける
} - if (プレイヤー発見) {
逃げる
} - if (プレイヤーを発見出来ない) {
ランダムに動き回る
}
ただし、条件が増えると、いずれ競合という問題が発生します。
上記1.と2.のルールは、同時に満たすことが可能でかつ動作が共存できないため競合が発生しています。
- 競合
同時に条件を満たし、互いに異なる制御を行う状況
競合を解消するためには、以下のどれかを行う必要があります。
- 条件を同時に満たさないようにする
- 動作を共存できるようにする
- プライオリティをつける
プライオリティ
プライオリティにて解消する場合はいくつかのパターンがあります。- ルールにプライオリティをつける(静的プライオリティ)
各ルールにプライオリティを付け、プライオリティが高い動作を選択するものです。 - 状況に合わせてプライオリティを計算する(動的プライオリティ)
状況に応じてプライオリティを計算して、プライオリティが高い動作を選択するものです。 - ランダム
ランダムで動作を選択するものです。 - 交互に選択する
動作が競合した場合は交互に動作を選択するものです。
まとめ
ルールベースは分かりやすく、要素の少ないゲームでは有効に思えます。しかし、要素が増えるとルールが複雑になり、優先度付けも難しくなってしまいそうです。ルールベースの本質はルールを基本単位とする考えを忘れないように。
プライオリティについて、駆け足での説明となってしまいましたので
次回、AIでよくある動きの例を交えながら説明していきたいと思います。
こうご期待を!
採用情報
クラウドクリエイティブスタジオでは絶賛エンジニア募集中でございます。ご興味ございます方。募集中、募集中でございます。
採用情報
コメント
コメントを投稿