O’REILLY本 David M. Bourg、Glenn Seemann著の「ゲーム開発者のための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
- ベクトルの加算:+=演算子
- ベクトルの減算:-=演算子
- スカラー乗算:*=演算子
- スカラー除算:/=演算子
- 共役:-演算子
- ベクトル関数と演算子
- ベクトルとの加算:+演算子
- ベクトルとの減算:-演算子
- ベクトルの外積:^演算子
- ベクトルの内積:*演算子
- スカラー乗算:*演算子
- スカラー除算:/演算子
- スカラー三重積
参考書籍: