
こんちには、kenoです。
最近はDXライブラリとC++で2Dゲームを作っております。
ここで一つ、気になるものが出てきた。
ゲームAIだ。
例えば、敵の動きとか、NPCの移動パターンとか、ボスの攻撃パターンとか。
こういったところに使われているゲームAIについて気になってきたんです。しかし、例によって僕は修行中の身。ゲームAIとはなんぞやという段階です。
だから今回はゲームにおける人工知能(AI)とその種類、また具体的な活用方法なんかを調べてみる。
一緒にみてくれたら幸いです。

ゲームにおける人工知能とは
まず、いま世間を騒がしているAIとは別物であることを述べておきます。
ChatGPTやらGeminiやらっていうAIはマジもんの人工知能です。
今回学んでいくゲームAIっていうのはどっちかっていうと「アルゴリズム」ですね。
ゲームに出てくる敵のボスが、こういう状態のときはこういうパターンで動く、こういう状態ならこんなパターンに変わる、とかっていう。
活用される場所としては、
- 敵の動き
- 敵の攻撃パターン
- NPCの動き
- ゲームのオートバトル機能
など。
いずれも「プレイヤーのゲーム体験を面白くさせる」ためのAIだということです。
ゲームAIの種類
実際に使われるAIの種類として5つ調べてみました。
1. ステートマシン
簡単に言うと、キャラクターの動きをいくつかの状態として定義しキャラクターの現在の状態によってそのキャラクターの振る舞いが変わる、というものらしいです。
例えば、
Enemy1というキャラクターがいたとして、以下のように状態(ステート)を定義してみます。
状態{"何もしない", "歩く", "戦う", "逃げる"}
このそれぞれの状態に対して、その時に行う処理をプログラミングすることによって臨場感が増すということですかね。
これくらいなら僕も作れそう : )
2. ビヘイビアーツリー(行動ツリー)
これはステートマシンよりも複雑なAIを作りたいときに使われるもののようです。
状態によって処理を変えるというのは同じようですが、この状態の管理を木構造によって行うそうです。
木構造...?
これについてはいろんな人が説明してると思うので、ggれ!
ちなみにビヘイビアーツリーはUnreal Engine5では1機能として搭載されてるみたい...?これはぜひ使ってみたい!
ビヘイビアーツリーは、ステートマシンよりも多くの状態を「読みやすく、柔軟に」管理することができるようで、理解できればとても重宝しそうです。
3. A*アルゴリズム(Aスターアルゴリズム)
こちらは経路探索において有名なアルゴリズムらしいです。
例えば、ゲームの中で敵がプレイヤーに向かって走ってくるときに壁や障害物、段差などをよけて向かってくることがありますよね。
ああいった振る舞いはこのA*アルゴリズムによって計算されているらしいです。
こんなところにも人工知能が!!
ちなみにこのアルゴリズムはグラフ探索という種類に分けられるそうです。
要するに、広いフィールドを小さなマス目に区切って経路を考えるということでしょうね。面白い。
でもムズカシソウ : (
4. 群衆シミュレーション
きました。これ。
ピクミンです。(多分)
群衆シミュレーションは、めっちゃたくさんいるキャラクターを1つの群れのように、自然とふるまうことができる人工知能だそうです。
ピクミンも、終盤になると100匹以上を引き連れて移動したり、崖際で落ちないように隊列を変えたりするんですよね。
このAIは使いどころが難しそうですが、作るゲームのジャンルによっては必要になったりするかも?
5. 遺伝的アルゴリズム
最後は大物をご紹介します。
この遺伝的アルゴリズムというのは「一番うまいゲームプレイができる方法」を模索してくれるAIらしいです。
実際にゲームを複数のAIプレイヤーにプレイさせて、結果が良かったものを親として、それらの遺伝子(内部データ?)を組み合わせて新しい子を作る。
その繰り返しで一番上手なAIプレイヤーを生み出すという手法らしいです。
まるで本当に生き物を進化させるような過程ですね。ただ、これはとても難易度が高そうです。
まとめ
いやー、面白いですね。
普通にプログラミングしているだけではあまり出会わないようなものばかりで。
でも確かに僕たちが普段遊んでいるゲームには必ずと言っていいほどゲームAIが入っているんでしょう。
まずは最初のステートマシンから、一つずつ勉強してAI王になりたいと思います。
以上、kenoでした。また。