![見出し画像](https://assets.st-note.com/production/uploads/images/44633831/rectangle_large_type_2_d395cc0e8aacda65b31c9ee1f0e52506.jpg?width=1200)
テレビゲームにおけるAIとは 【ゲームAI技術入門】
テレビゲームにおけるAIとは、一体どんなものなのか?AIといえば、自動運転技術や、顔認証、物体検知、チャットボットなど色々なところで使われていると思うが、ゲームにおけるAIとはどんなものだろうか?
昔から、ゲームでは、「この敵キャラクターのAIが頭いい」とか「AI仕事しろ」とか、キャラクターの動きやアクションの賢さ=AIみたいに便利に使われている気がしますが、結局どんな部分でAIが使われているのか?というかそもそも、本当にAIなの?というあたりが疑問に思っていたところです。
参考文献はこちら↓
ゲームにおけるAIとは
ゲームAIは、大きく分けて「ゲーム内でのAI」と「ゲーム外でのAI」に分かれる。今回はわかりやすい、ゲーム内のAIについて見てみました。
ゲーム内のAI
ゲームの中に実装されているAI。つまりはゲームの中身そのものを制御しているもの。例えば、キャラクターの行動パターンだとか、敵との戦闘方法パターンだとか、地形の生成パターン、天候の移り変わりなど。いわゆる、私たちが想像しているAIですね。
ゲームキャラクターをより人間らしく、自然な動作によって行動パターンを制御するには、まずキャラクターがどの様に状況を知覚して、どの様に状況に影響を与えるのかを定義していく必要があると。
可視判定
たとえば、ゲームにおいて敵に見つかるかどうかの判定がある。これは、基礎的なやり方では、前方に視野を設定して(例えば扇状に)、その範囲内に自キャラクターから直線の視線(レイヤー)を飛ばす。障害物にぶつからない場合は、その方向は見えていると判定し、ぶつかれば見えていないと判定する。これが、視覚において、キャラクターに世界をどう知覚させるかの基本構造の一つの例になる。
どうやってプレイヤーを見つけ出す?
では、どのように敵はプレイヤーを探し出すのか?The Last of Usでは、影響マップと呼ばれるものが使われている。
1. まず、プレイヤーを中心にマップ全体にグリッドのマス目を配置する
2. それぞれのマスに、プレイヤーの存在確率を設定する。0〜1までで設定。
3. 敵は、先ほどの可視判定によって、可視領域にプレイヤーがいない場合は、そこのマスの存在確率を0にする
4. 敵は、存在確率が0出ないマスを順番に潰していく
基本構造はこの様な流れです。ただし、この場合、いずれ全部のマスを見たら全て存在確率が0になってしまうので、
5. 一度、存在確率が0になったマスは、時間経過とともに確率が自動的に上がっていく
こうすることで、プレイヤーは常に敵から逃げ続けるか、敵を倒すかしないといけない状況になります。
さらに、複数の敵がこの存在確率マップを共有することで、連携して0でないマスを追い込んでいくことができます。
戦術位置解析技術
敵キャラクターが、プレイヤーから自動的に隠れる場所を探して隠れる時に、どの様に隠れる場所を決めるのか?簡単なやり方は、あらかじめ隠れる場所をいくつか設定しておき、現在位置から一番近い場所へ隠れるといった方法です。
この方法は、単純で実装しやすい反面、隠れるポイントを様々なパターンで設定しておかないといけないので、マップが大規模になれば作業量が膨大になります。それに対して、戦術位置解析技術では、隠れる場所を自動生成します。
1. まず、キャラクターを中心にマップ全体に等間隔に候補ポイントを生成します。
2. そこから、隠れることができる条件をいくつか設定し、候補ポイントを絞ります。例えば、敵から一定距離離れている、足場がちゃんとしているなど
3. さらにそこから、プレイヤーの可視領域に含まれているポイントを除外していきます。
4. 最後に残ったポイントの中から、一番近い場所を自動的に最適な隠れポイントとして自動判定します。
ルールは非常にシンプルですが、人間が実際に隠れる場所を探す際に行うロジックと、非常に近い気がしますね。
群衆AI
ゲームでは、空を飛ぶ鳥の群れや、魚の群れ、動物の群れなどから、人混みの動きなど、群衆による群の動きが随所に出てくる。この群衆の動きをどの様に制御しているのか?ここでは、レイノルズのアルゴリズムが紹介されています。
基本構造は、整列・集合・回避・離散の4構成。
整列:一定範囲内の仲間の速度とベクトルの平均を割り出し、自分の速度ベクトルとの差を計算し、仲間に追従する様に速度と向きを修正していく
集合:一定範囲内の仲間の位置座標の平均を割り出し、ズレを修正する様に、向きを変えていく
離散:対象となる他キャラクターとの距離と方向に対して、逆方向に力を働かせ、一定距離以上は近づかない様に修正していく
回避:障害物に当たる場合は、進入角度に応じて旋回していく
おわりに
今回の本は、かなり概念的な部分がメインで、例えばキャラクターにおけるAIの定義とは?どの用に世界とコミュニケーションを取るのか?五感をどの様に実装するのか?などなど。少し難しい部分も多かったですが、具体的な先述の解説(上記の様な手法)も数多く紹介されていおり、また実例のゲームを元に紹介されているため、ゲーム好きの人には特に面白く読めると思います。
The Last of Us, Horizon Zero Dawnあたりが好きな人は、是非!!
この記事が気に入ったらサポートをしてみませんか?