ゲーム開発者のためのAI入門

O'REILLY本 David M. Bourg、Glenn Seemann著の「ゲーム開発者のためのAI入門」のまとめです。

サンプルコードは以下を参照

AIサンプルプログラム

1章 Game AIとは

  • 1.1 決定論的AIと非決定論的AI
  • 1.2 確立されたGame AI
  • 1.3 Game AIの将来

2章 追跡と逃避

  • 2.1 基本的な追跡と逃避
  • 2.2 LOS追跡
  • 2.3 タイル環境でのLOS追跡
  • 2.4 連続動作環境でのLOS追跡
  • 2.5 迎撃

3章 パターンムーブメント

  • 3.1 標準アルゴリズム
  • 3.2 タイル環境でのパターンムーブメント
  • 3.3 物理的なシミュレーション環境でのパターンムーブメント
  • 3.3.1 制御構造
  • 3.3.2 パターンの定義
  • 3.3.3 パターンの実行
  • 3.3.4 DoPattern関数
  • 3.3.5 結果

4章 フロッキング

  • 4.1 標準的なフロッキング
  • 4.2 フロッキング例
  • 4.2.1 操舵モデル
  • 4.2.2 隣接ユニット
  • 4.2.3 結合
  • 4.2.4 整列
  • 4.2.5 分離
  • 4.3 障害物の回避
  • 4.4 リーダーに続け

5章 ポテンシャル関数に基づくムーブメント

  • 5.1 Game AIでのポテンシャル関数の用途
  • 5.1.1 ポテンシャル関数とは
  • 5.2 追跡と逃避
  • 5.3 障害物の回避
  • 5.4 スウォーミング
  • 5.5 最適化のヒント

6章 基本的な経路探索とウェイポイント

  • 6.1 基本の経路探索
  • 6.1.1 ランダムムーブメントによる障害物の回避
  • 6.1.2 障害物のトレーニング
  • 6.2 ブレッドクラム経路探索
  • 6.3 経路の追跡
  • 6.4 ウォールトレーシング
  • 6.5 ウェイポイントナビゲーション

7章 A*アルゴリズムによる経路探索

  • 7.1 探索領域の定義
  • 7.2 探索の開始
  • 7.3 スコアリング
  • 7.4 袋小路の検出
  • 7.5 地形コスト
  • 7.6 影響マッピング
  • 7.7 参考文献

8章 AIスクリプト化とスクリプティングエンジン

  • 8.1 スクリプティング技術
  • 8.2 敵の属性のスクリプティング
  • 8.3 基本スクリプトの解析
  • 8.4 敵の振る舞いのスクリプティング
  • 8.5 会話のスクリプティング
  • 8.6 イベントのスクリプティング
  • 8.7 参考文献

9章 有限状態機械

  • 9.1 状態機械の基本モデル
  • 9.2 有限状態機械の設計
  • 9.2.1 有限状態機械の構造体とクラス
  • 9.2.2 有限状態機械の振る舞い関数と遷移関数
  • 9.3 蟻の列
  • 9.3.1 有限状態機械の構造体とクラス
  • 9.3.2 シミュレーション領域の定義
  • 9.3.3 蟻の追加
  • 9.3.4 ゲーム環境の更新
  • 9.4 参考文献

10章 ファジー理論

  • 10.1 ゲームでのファジー理論の用途
  • 10.1.1 制御
  • 10.1.2 驚異の査定
  • 10.1.3 分類
  • 10.2 ファジー理論の基礎
  • 10.2.1 概略
  • 10.2.2 ファジー化
  • 10.2.3 ファジールール
  • 10.2.4 非ファジー化
  • 10.3 制御の例
  • 10.4 驚異の査定の例

11章 ルールベースのAI

  • 11.1 ルールベースシステムの基礎
  • 11.1.1 ルールベースシステムでの推定
  • 11.2 格闘技ゲームの攻撃予想
  • 11.2.1 ワーキングメモリ
  • 11.2.2 ルール
  • 11.2.3 初期化
  • 11.2.4 攻撃予想
  • 11.3 参考文献

12章 確率の基礎

  • 12.1 ゲームの確率の用途
  • 12.1.1 ランダム性
  • 12.1.2 命中率
  • 12.1.3 キャラクターの能力
  • 12.1.4 状態遷移
  • 12.1.5 適応性
  • 12.2 確率とは
  • 12.2.1 従来の確率
  • 12.2.2 頻度の解釈
  • 12.2.3 主観的な解釈
  • 12.3 確率のルール
  • 12.3.1 ルール1
  • 12.3.2 ルール2
  • 12.3.3 ルール3
  • 12.3.4 ルール4
  • 12.3.5 ルール5
  • 12.3.6 ルール6

13章 不確定な状況下での意思決定ーベイズ法

  • 13.1 ベイズネットワークとは
  • 13.1.1 構造
  • 13.1.2 推定
  • 13.2 罠が仕掛けられている確率
  • 13.2.1 ツリー図
  • 13.2.2 確率の決定
  • 13.2.3 推論
  • 13.2.4 ファジー理論の使用
  • 13.3 財産が収められている確率
  • 13.3.1 別のモデル
  • 13.3.2 推論
  • 13.3.3 数値を使った例
  • 13.4 空と陸の確率
  • 13.4.1 モデル
  • 13.4.2 確率の計算
  • 13.4.3 数値を使った例
  • 13.5 格闘技ゲーム
  • 13.5.1 モデル
  • 13.5.2 確率の計算
  • 13.5.3 攻撃予想
  • 13.6 参考文献

14章 ニューラルネットワーク

  • 14.1 ゲームでのニューラルネットワーク
  • 14.1.1 制御
  • 14.1.2 驚異の査定
  • 14.1.3 攻撃か逃走か
  • 14.2 ニューラルネットワークの分析
  • 14.2.1 構造
  • 14.2.2 入力
  • 14.2.3 重み
  • 14.2.4 活性化関数
  • 14.2.5 バイアス
  • 14.2.6 出力
  • 14.2.7 隠れた層
  • 14.3 学習
  • 14.3.1 バックプロバケーション学習法
  • 14.4 ニューラルネットワークのソースコード
  • 14.4.1 層クラス
  • 14.4.2 ニューラルネットワーククラス
  • 14.5 頭脳を使った追跡と逃避
  • 14.5.1 初期化と学習
  • 14.5.2 学習
  • 14.6 参考文献

15章 遺伝的アルゴリズム

  • 15.1 進化の過程
  • 15.1.1 第1世代
  • 15.1.2 適正評価
  • 15.1.3 選択
  • 15.1.4 進化
  • 15.2 植物の進化
  • 15.2.1 花のデータ符号化
  • 15.2.2 花の第1世代
  • 15.2.3 花の適正評価
  • 15.2.4 花の進化
  • 15.3 ゲーム開発での遺伝学
  • 15.3.1 RPGの例
  • 15.3.2 データの符号化
  • 15.4 参考文献

付録 ベクトル演算

  • Vectorクラス
  • Magnitude
  • Normalize
  • Reverse
  • ベクトルの加算:+=演算子
  • ベクトルの減算:-=演算子
  • スカラー乗算:*=演算子
  • スカラー除算:/=演算子
  • 共役:-演算子
  • ベクトル関数と演算子
  • ベクトルとの加算:+演算子
  • ベクトルとの減算:-演算子
  • ベクトルの外積:^演算子
  • ベクトルの内積:*演算子
  • スカラー乗算:*演算子
  • スカラー除算:/演算子
  • スカラー三重積

参考書籍

ゲーム開発者のためのAI入門