目的
全くゲーム業界で仕事をしてもいないし、そもそも最新のゲームに疎いのですが、ゲームAI技術入門を読んで面白かったのでメモとして要約してみます。
ゲームの中の人工知能
環境があるから知性があり、知性があるから環境がある。ゲームという環境の中で状況を認識し判断する人工的な知性をゲームAIとする。大きく以下の3つがある。
-
キャラクターAI
ゲーム世界から情報を集めて意志決定するAI。 -
ナビゲーションAI
地形やゲーム内のオブジェクトなど、ゲームのしかけや環境を認識するAI。
マップの特徴を解析し、経路や位置取りを検索する。 -
メタAI
ゲームをするユーザとゲームコンテンツの境界に立ってゲームをコントロールするAI。
時間軸に沿ってゲーム全体の進行を管理する。
それぞれがゲーム内で違う階層を担当し、ゲームのユーザを楽しませるため別々の問題を解いている。
その中で特ユーザを楽しませるためにキャラクターAIに求められるのはリアリティである。以下の2点。
- 合理的である
- ある地点からある地点にキャラクターが移動するときに、わざわざ遠回りするのは理に適わない。行き過ぎた正確な行動もまた合理的ではないが、自然な判断を行わなければリアリティがない。
- 人間的である
- 戦闘をするゲームで瀕死の仲間をかばったり、一見不合理に見えるが人間的な行動を取るとリアリティが出る。
まとめ
ゲームAI自体が全人工知能分野の縮図のような分野であり、あらゆる人工知能技術が現れる。現実と似たゲーム世界を作り上げ、その中で人工知能を作る。現実で応用される前のあらゆる人工知能技術がゲームの中で試され鍛えられていく。
知能のしくみ
知能を理解するために、エージェントアーキテクチャという世界と知能を結ぶモデルを用いる。
エージェントは「役割と機能を持った」AIであり、以下の特徴を持つ。
- 世界と知能を分離して考える。
- 知能は世界からセンサ(知覚)を通じて情報を得る。
- 知能は世界にエフェクタ(身体、機能)を通じて影響を及ぼす。
知能はセンサから得た情報とこれまでの記憶を合わせて、知識を形成する。知識を基に意志決定を行い、行動を組み立てる。
知識を得る難しさ
人間は世界をある型にはめて理解しようとする。視野は130度あっても、集中して見ているのは2度にすぎない。人間であればゲーム世界にスイカがあるとしたら、その重さや動かすことが出来るか、食べることが出来るかを無意識に分類することが出来るが、現在の人工知能にはそのようなバックグラウンドがないため、スイカ側に「食べられる」「持ち上げられる」という許容された情報(アフォーダンス)を埋め込んでいく必要がある。人工知能はこうしてスイカがどのようなものかを理解する。
ブラックボードアーキテクチャ
ブラックボード(共有読み書きメモリ)と、その周りに専門的な処理機能を持つKS(ナレッジソース)があり、KSがセンサやアクションを分業で担当してブラックボード上のデータを解釈するアーキテクチャ。2000年以降のバーチャルゲームにおけるキャラクターAIとして試行錯誤の上で発表された。その後のAI設計者の基本的な概念として活用された。
意識の理論
キャラクターが何かを見ている、聞き耳を立てているとき、ユーザーは「そのキャラクターの意識がそちらに向いている」と感じる。思考モジュールが注意を払っている対象に対して操作を行うというこの意識モデルをCERE-CRANIUM認識アーキテクチャ
と呼ぶ。
知識表現
キャラクターをゲーム世界に配置しただけではキャラクターは何も認識できない。ゲームのグラフィックデータは基本的にユーザがゲーム世界を認識するためのデータであり、キャラクターAIに環境を認識させるには別のデータが必要となる。
人工知能は人間に与えられた問題に対して思考する「問題特化型人工知能」が大半だが、ゲームAIにはゲームという閉じた世界で自分で問いを設定出来る「汎用人工知能」を目指して開発されているが、まだそのように粋には達していない。
センサの設計
五感の中でも視覚と聴覚以外のセンサはゲーム内で実装される技術がまだ発達していない。この2つのセンサが厳密に必要とされるステルスゲームにて実装技術が発達した。
視野領域
ゲーム内のキャラクターは扇形の「視野領域」を持ち、フィールド上の障害物などに衝突せずに対象のキャラクターが視野領域に入った時を「見えた」状態、衝突しなければ「見えなかった状態」として見做す。この一連の過程を「レイキャスト」(raycast)と呼ぶ。
存在確率マップ
フィールド上をマス目に分割し、兵士キャラクターがフィールド内を見回りのため徘徊してユーザのキャラクターがいないことを確認したマップ上のマスを存在確率ゼロとみなし、マップ内のすべてのマスをゼロにするために徘徊し続けるシステムを存在確率マップと呼ぶ。
後半
後半は別途まとめます。