Skip to main content

05.板書まとめ

板書まとめ

これまでの授業で使った板書を、日付順にまとめています。
各日の板書を撮影順に並べているので、授業の流れを思い出しながら振り返ってみましょう。

日付 主な内容
5/26 キャラクターAI・視界判定
6/9 FSM(有限状態機械)・状態遷移
6/16 Stateパターン・ポリモーフィズム
6/23 State実装に必要なC++の補足
6/30 Behavior Tree導入
7/7 ゲームAIの分類・探索アルゴリズム
7/14 Behavior Treeの詳細
7/21 グラフ・木・BFS・DFS
8/25 二分木・二分探索木
9/1 BFS・DFS実装/木の巡回

📆5/26

5/26 板書 1 5/26 板書 2
5/26 板書 3 5/26 板書 4

📝まとめ

  • キャラクターAIを センサ → 判断 → 行動 の流れで考えた。
  • 敵からプレイヤーへの方向と敵の前方向を使い、内積で視野角を判定した。
  • 視野角だけでなく距離判定も組み合わせて、プレイヤーを発見したかどうかを判断した。
  • 発見した結果を Idle や Chase などの行動へつなげる考え方を扱った。

📆6/9

6/9 板書 1 6/9 板書 2
6/9 板書 3 6/9 板書 4
6/9 板書 5 6/9 板書 6

📝まとめ

  • キャラクターの行動を State(状態) として分けるFSMを学んだ。
  • 条件を満たしたときに別のStateへ移る Transition(状態遷移) を整理した。
  • 待機・巡回・追跡・攻撃などを、状態遷移図や状態遷移表で表した。
  • switch を使った実装と、状態や遷移が増えると処理が複雑になりやすい問題を確認した。

📆6/16

6/16 板書 1 6/16 板書 2
6/16 板書 3 6/16 板書 4
6/16 板書 5 6/16 板書 6

📝まとめ

  • FSMの各状態の処理を別クラスへ分ける Stateパターン を扱った。
  • StateBase を基底クラスにし、IdleState や ChaseState などを派生させる構成を確認した。
  • virtual とオーバーライドによって、同じ Update() 呼び出しでもStateごとに違う処理を実行できることを学んだ。
  • 基底クラスポインタで現在のStateを扱うポリモーフィズムをAI実装へ結び付けた。

📆6/23

6/23 板書 1 6/23 板書 2
6/23 板書 3 6/23 板書 4
6/23 板書 5 6/23 板書 6

📝まとめ

  • Stateパターンを実装するために必要なC++の基礎を補強した。
  • コンストラクタ、継承、ポインタ、動的生成などを確認した。
  • new で作ったオブジェクトの寿命と、不要になったオブジェクトを適切に解放する必要性を扱った。
  • C++の仕組みが、Stateを差し替えてAIの振る舞いを変える実装にどうつながるかを確認した。

📆6/30

6/30 板書 1 6/30 板書 2
6/30 板書 3 6/30 板書 4

📝まとめ

  • AIの判断や行動を木構造で表す Behavior Tree を導入した。
  • 複雑な行動を複数のNodeに分け、木として組み合わせて考える方法を扱った。
  • Root、Selector、Action など、Behavior Treeを構成する基本的なNodeを確認した。
  • Nodeが返す Success / Failure / Running によって、次にどの処理を進めるか判断する考え方を学んだ。

📆7/7

7/7 板書 1 7/7 板書 2
7/7 板書 3 7/7 板書 4

📝まとめ

  • ルールベース、ステートベース、ビヘイビアベース、ゴール指向、ユーティリティベースなど、ゲームAIの考え方を整理した。
  • AIの判断方法によって、向いている問題や構成が異なることを確認した。
  • 移動経路を求めるためのグラフ探索へ話を広げた。
  • BFS・DFSを中心に探索の考え方を整理し、Dijkstra・A*は名前と概要を確認した。

📆7/14

7/14 板書 1 7/14 板書 2
7/14 板書 3

📝まとめ

  • Behavior Treeを構成する代表的なノードの役割を整理した。
  • Sequence は子を順に実行し、すべて成功すれば成功する。
  • Selector は子を順に試し、どれか1つが成功すれば成功する。
  • Success / Failure / Running を使って、木全体の処理結果を親ノードへ返していく考え方を確認した。

📆7/21

7/21 板書 1 7/21 板書 2
7/21 板書 3

📝まとめ

  • Node、Edge、Root、Leaf など、グラフと木の基本用語を整理した。
  • 有向グラフと無向グラフ、一般のグラフと木構造の違いを確認した。
  • BFS(幅優先探索) と DFS(深さ優先探索) の探索の広がり方を比較した。
  • BFSではQueue、DFSではStackを使う理由につなげた。

📆8/25

8/25 板書 1 8/25 板書 2
8/25 板書 3 8/25 板書 4
8/25 板書 5 8/25 板書 6
8/25 板書 7

📝まとめ

  • 各Nodeが最大2つの子を持つ 二分木(Binary Tree) を学んだ。
  • 値の大小関係を使う 二分探索木(Binary Search Tree) のルールを確認した。
  • 小さい値を左、大きい値を右へ配置することで、探索範囲を絞れることを学んだ。
  • 線形探索との違いや、木が偏った場合の問題も確認した。

📆9/1

9/1 板書 1 9/1 板書 2
9/1 板書 3 9/1 板書 4
9/1 板書 5 9/1 板書 6

📝まとめ

  • BFSとDFSを、std::queue と std::stack を使った実装へ結び付けた。
  • Queueの FIFO、Stackの LIFO と探索順の関係を確認した。
  • 二分木をたどる代表的な3種類の巡回を扱った。
  • 行きがけ順(Preorder)・通りがけ順(Inorder)・帰りがけ順(Postorder) の違いを整理した。

全体の流れ

授業全体は、次のようにつながっています。

周囲を調べる → 状態や行動を決める → AIの構造を整理する → 必要ならグラフを探索する → 経路やNodeを順番に処理する

板書を見返したときに、単語だけではなく、**「この仕組みはゲームAIのどこで使うのか」**まで思い出せるようにしておきましょう。