コンピュータゲームにおける人工知能

**コンピュータゲームにおける人工知能**（コンピュータゲームにおけるじんこうちのう）は、コンピュータゲームにおいて、ノンプレイヤーキャラクター（NPC）の振る舞いに知能があるかのような錯覚を生み出す技法である。主な技法は人工知能（AI）の既存技術を活用したものである。しかし**ゲームAI**と呼ぶ場合、制御理論・ロボット工学・コンピュータグラフィックス・計算機科学全般の技法を含む様々なアルゴリズムを指して使われることが多い。囲碁や将棋の分野では最善手を探索するプログラムを囲碁AI・将棋AIと呼称している。

ゲームAIはユーザーから見て知性が感じられるか、ゲームプレイが心地よいかに集中しているため、通常のAIとは手法が大きく異なる。ワークアラウンドやチート（ずる）は許容されており、コンピュータと人間の対戦形式の場合、人間側が公平さを感じるよう調整が必要である。例えばファーストパーソン・シューティングゲームの場合、NPCは人間の能力を超えた完璧な射撃もできるが、それでは公平さが感じられなくなる。

## 歴史
ゲームプレイはAIの初期から研究対象となっていた。初期のAIの例として、ニムというゲームをコンピュータ化したものがあり、1941年に開発され、1942年に発表された。『ポン』の30年以上前、当時の最先端技術を使ったゲームだが、比較的小さい箱型のゲームであり、ニムの熟練プレーヤーにも普通に勝てるレベルだった。1951年、マンチェスター大学のFerranti Mark 1を使い、クリストファー・ストレイチーがチェッカープログラムを、Dietrich Prinz がチェスプログラムを開発した。他にもアーサー・サミュエルがチェッカーのプログラムを1950年代中ごろから1960年代にかけて発展させ、最終的には腕のいいアマチュアと互角に戦えるレベルを達成した。チェッカーやチェスに関しての最高到達点は、1997年にIBMのディープ・ブルーがガルリ・カスパロフに勝ったことである。1960年代から1970年代初めにかけての初期のテレビゲームとして、『スペースウォー!』『ポン』『ガッチャ』（1973）などがあるが、それらは論理回路で実装され人間同士が対戦する形式であり、AIとは無縁だった。

シングルプレーヤーでゲーム内の敵と戦う形式のゲームは1970年代に登場しはじめた。アーケードゲームでの初期の例として、『スピードレース』（1974年、タイトーのレースゲーム）、『*[[:en:Qwak!|Qwak]]*』（1974年、アタリのガンシューティングゲーム）、『*[[:en:Pursuit (video game)|Pursuit]]*』（1975年、アタリの戦闘フライトシミュレータ）などがある。テキストベースのコンピュータゲームでは1972年に『*[[:en:Hunt the Wumpus|Hunt the Wumpus]]*』や『*[[:en:Star Trek (script game)|Star Trek]]*』といったゲームにコンピュータの操る敵が登場している。敵の動きは予め格納されたパターンに基づいている。マイクロプロセッサが使われるようになるとより多くの計算が可能となり、動きのパターンにもランダムな要素が加えられるようになっていった。

には、『スペースインベーダー』（1978）の成功によってAIが操る敵というアイデアが大いに一般化された。『スペースインベーダー』ではAIを使って徐々に難易度が上がるようにし、別個の動きのパターンを可能にし、プレーヤーの入力に基づいてハッシュ関数でゲーム内イベントを生成していた。『ギャラクシアン』（1979）では敵の動きのパターンがさらに複雑化・多様化し、編隊から個々の敵が飛び出すような動きも実現した。『パックマン』（1980） では迷路ゲームにAIパターンを導入し、それぞれの敵に異なる個性を与えている。『空手道』（1984） では対戦型格闘ゲームにAIパターンを導入したが、AIが貧弱だったためすぐに第2版が登場した。『』（1988）は戦術アクションRPGで、AIが操るキャラクター群（ゴチャキャラ）がリーダーに従うシステムを導入した。コンピュータRPG『ドラゴンクエストIV 導かれし者たち」』（1990）では、戦闘の際のNPCの行動を自動化するAI戦闘において「作戦」システムを導入し、NPCの行動を制御できるようになった。この方式はアクションロールプレイングゲームのジャンルでは『聖剣伝説2』（1993）で導入されている。

『マッデンNFL』『*[[:en:Earl Weaver Baseball|Earl Weaver Baseball]]*』『*[[:en:Tony La Russa Baseball|Tony La Russa Baseball]]*』といったスポーツゲームは、特定の有名人の指導・監督スタイルをコンピュータ上で再現するのにAIを利用している。その後のスポーツゲームでは、AIの変数群をユーザーが調整することで、好みの指導・監督スタイルを設定できるようにしている。

1990年代には新たなゲームのジャンル群が出てきて、有限状態機械などのAIツールの利用が促進された。リアルタイムストラテジーゲームは、多数のオブジェクト、不完全な情報、経路探索問題、リアルタイムでの意思決定、経営計画などといった事柄をAIに扱わせた。しかし、初期のその手のゲームにはAIに関連して様々な問題があった。例えば『ヘルツォーク・ツヴァイ』（1989）の経路探索とユニット制御のための3状態機械はほとんどうまく機能しなかった。また、『*[[:en:Dune II|Dune II]]*』ではプレーヤーの基地を最短コースで攻撃し、ゲーム上知りえないはずの情報に基づいて行動することで知られていた。このジャンルのAIはその後洗練されていった。

その後、創発などのボトムアップ的AI技法を採用するゲームも登場。『ブラック&ホワイト』では、プレーヤーの動きをボトムアップ的AIで評価している。『*[[:en:Façade (interactive story)|Façade]]*』（2005）は、NPCと自然言語（英語）で対話することをゲームの中心に据えている。

ゲームは人工知能開発の環境を提供し、そこからゲームを超えた潜在的用途も生まれてきた。例えば、『ジェパディ!』というアメリカのクイズ番組で人間に勝利したコンピュータ「ワトソン」や、サッカーをロボットにプレイさせるロボカップなどもある。

## 利用
ゲームAIは多種多様なゲームで利用されている。最も明らかな利用例はゲーム内のNPCの制御だが、今ではスクリプティングが最も一般的な制御方法となっている。でもAIはよく利用されており、リアルタイムストラテジーゲームでよく見られる。経路探索とは、NPCがマップ上のある地点から別の地点へと移動する経路を求めることで、地形や障害物、さらに時には「戦場の霧」を考慮する。経路探索をさらに発展させたナビゲーションもゲームAIのサブフィールドであり、NPCにその環境内で誘導する機能を与え、他者（他のNPCやプレーヤー）との衝突を避けつつターゲットまでの経路を探させたり、他者と協調させたりする。ゲームの難易度をプレーヤーの技量に基づいてリアルタイムに調整するもゲームAIを利用することがある。

最近では創発的AIの概念もゲームに利用されており『ブラック&ホワイト』『nintendogs』たまごっちなどの玩具がある。これらのゲーム内の「ペット」は、プレーヤーのアクションから「学習」し、行動を更新していく。実際には選択肢はある範囲内に限定されているのだが、プレーヤーに対して知的存在の幻影をある程度与えることができる。

チェス、囲碁、将棋の分野においてコンピュータが人間以上の能力を獲得してからは、プロ棋士が棋譜の解析や練習対局の相手として利用するようになった。また人間の感覚では評価が高くなかったがコンピュータが高い評価を与えた手（ダイレクト三々など）をプロが使うようになったり、既存の定跡や古い棋譜を解析し淘汰や再評価が行われるなど様々な面で変化が起きた。

### 戦闘AI
多くのゲームは何らかの戦闘を含んでいる。ゲームAIは、戦闘における敵の振る舞いをより人間的に（見えるように）するのに役立つ。

近年のゲームAIで最も効果的な機能として「狩り」の能力がある。本来AIは白か黒かというような明確な反応を示す。プレーヤーがいる場所の設定に従い、AIは攻撃または防御のどちらかの行動をとる。近年これに「ハンティング」という考え方が導入された。「ハンティング」状態では、AIはキャラクターの立てる音や足跡といった具体的なマーカーを探す。それによってプレイの形態がより複雑になった。AIが「狩り」の能力を備えたことで、敵への接近や回避の方法に頭を使う必要が出てきた。この機能は特にステルスゲームでよく見られる。

もう1つのゲームAIにおける近年の発展として、「生存本能」の開発がある。ゲームAIが操るキャラクターは環境内の各種オブジェクトを認識し、それが自身の生存に有益か有害かを判断できる。プレーヤーと同様、AIは銃撃戦で武器のリロードや手榴弾を投げる際などに無防備にならないよう遮蔽物を探すことができる。反応のしかたを設定するマーカーが存在する場合もある。例えば、AIが操るキャラクターの健康状態をチェックするコマンドが存在する場合、パーセンテージで表された健康状態によって反応を設定する。健康があるしきい値より低いとき、AIはキャラクターがプレーヤーから逃げるよう設定したりする。また、弾切れになったときは遮蔽物に隠れてリロードなどをする。このような振る舞いによってAIの操るキャラクターがより人間味を増す。この分野にはまだ改良の余地がある。AIは様々な状況に対応しなければならず、プレーヤーを驚かすほどの能力を示すのはまだ先のことである。

戦闘AIのもう1つの副作用は、AIが操るキャラクター同士が遭遇した際に見られる。id Softwareのゲーム『*[[DOOM]]*』でそのような状況が一般化し 'monster infighting' と呼ばれた。『*DOOM*』の攻略本では、'monster infighting' を利用して敵同士を戦わせ、生き残る方法なども紹介されていた。

## チート
ビデオゲームにおける人工知能の文脈では、チートとは、ある状況でプレーヤーが得られない情報をNPCについてはアクセス可能としていたり、プレイヤーには不可能なアクションを使用することを指す。例えば、NPCがプレーヤーが近くにいるかを知りたい場合、人間と同様の知覚（視覚、聴覚など）を操って知る方式もあるが、単にゲームエンジンにプレーヤーの位置を問い合わせることで知る方式になっている場合もある。レースゲームにおいては、プレイヤーがNPCに対し大きく距離を離した際に、NPCが加速する、もしくは背後までワープしてくる実装がしばしば見られる（『マリオカート64』など）。AIにおけるチートは、その人工的に達成された知能に限界があることを示している。一般に戦略的創造性が重要なゲームでは、このような有利さをAIに与えておかないと最小限の試行錯誤で人間が容易に勝ってしまう。また、性能上の問題からチートを実装していることが多く、プレーヤーから見てその効果があからさまでない限りは許容されている。AIだけに与えられる特権のみをチートと呼び、コンピュータが本質的に持つ高速性と正確性はチートとは呼ばないが、一方でプレーヤーから見てコンピュータ固有の利点がNPCの人間離れした動きを生じているなら、それらも含めて「チート」と呼ぶこともある。例えば、シューティングゲームで対象を視認してから0.1秒以内に射撃したり、100%の精度で命中させたりすれば、それは不公平であり、一種のチートであるともいえるだろう。

チェス、囲碁、将棋の分野においては、人間同士の対局でコンピュータの手を参照（カンニング）する「ソフト指し」が問題となっている。

## 脚注

## 参考文

* Bourg; Seemann (2004). *AI for Game Developers*. O'Reilly & Associates. ISBN 0-596-00555-5.
* Buckland (2002). *AI Techniques for Game Programming*. Muska & Lipman. ISBN 1-931841-08-X.
* Buckland (2004). ''Programming Game AI By Example''. Wordware Publishing. ISBN 1-55622-078-2.
* Champandard (2003). *AI Game Development*. New Riders. ISBN 1-59273-004-3.
* Funge (1999). *AI for Animation and Games: A Cognitive Modeling Approach*.  A K Peters. ISBN 1-56881-103-9.
* Funge (2004). ''Artificial Intelligence for Computer Games: An Introduction''. A K Peters. ISBN 1-56881-208-6.
* Millington (2005). ''Artificial Intelligence for Games''. Morgan Kaufmann. ISBN 0-12-497782-0.
* 
* Smed and Hakonen (2006). ''Algorithms and Networking for Computer Games''. John Wiley & Sons. ISBN 0-470-01812-7.

## 関連項目
* コンピュータチェス
* ボット (ゲーム)
* コンピュータ囲碁
* コンピュータ将棋
* シミュレーテッドリアリティ

## 外部リンク
* Special Interest Group on Artificial Intelligence @IGDA
* AI Game Programming Wisdom on aiwisdom.com
* Game AI for Developers on AiGameDev.com
* AI section at GameDev.net