1. トップ
  2. 学校紹介
  3. 情報公開
  4. 学科情報
  5. シラバス - 科目一覧

シラバス

高度ゲーム制作科 2026年度入学生

科目名 プログラミングⅣ 作成日 2026/03/09
区分 選択Ⅰ 講義/演習
開催時期・標準履修年次 2年次 後期
講義・演習駒数/週 3駒
実習・実験駒数/週 0駒
合計駒数/週 3駒
総時間数 90時間
総単位数 6単位
企業連携
授業の目的 1年次から積み上げてきたC++の応用技術を統合し、実際のゲーム開発現場で求められる「再利用性」「高度な自律性」「高効率な処理」を実現するためのシステム設計能力の習得を目的とする。
到達目標 複数のソースコードを静的ライブラリ(Lib)や動的ライブラリ(DLL)としてまとめ、プロジェクト間で機能を共有・分割管理が出来る。 有限ステートマシン(FSM)や階層型ステートマシン(HFSM)を用いて、複雑なキャラクターの思考ルーチンをオブジェクト指向的に設計・実装が出来る。 ビヘイビアツリー(木構造による意思決定ロジック)を理解し、タスクの再利用や条件判定の部品化が出来る。 マルチスレッドや並列化が出来る。 生成AIと対話し、自身のプログラミング知識を増やすことが出来る。

評価項目 ①定期テスト ②小テスト ③レポート ④課題 ⑤作品 ⑥ポートフォリオ ⑦成果発表 ⑧その他
割合 50%  %  % 25%  %  %  % 25%
評価基準
下記の項目A.B.C.全てを達成して単位取得とし、項目C.の点数によって秀・優・良・可の評価を行う。  A. 当科目授業の80%以上出席する。80%未満の学生は期末試験の受験資格が無く不合格となる。  B. 教員が指定する実習課題を全て提出する。  C. 中間テストおよび期末テストでそれぞれ60点以上を取得する。
※上記に示した評価項目の割合(%)を基準に、総合評価点を算出して成績評価を行う。
※出席率が80%未満の場合は、評価対象としない。

担当教員 植山 沙欧
テキスト・参考文献 独習C++ 新版 リーダブルコード Game Programming Patterns ソフトウェア開発の問題解決メニュー Optimized C++ 最適化、高速化のためのプログラミングテクニック 教員が作成する資料及びテキスト 生成AI
実務経験有無  
  
授業外学習
(予習・復習等)
演習問題が出題されるので、その解決方法を検討したのちにコーディングを行うこと。 考えても理解できない、思いつかない点をまとめ、次回登校時に教員に聞く点をリスト化をすること。 予習よりも復習に重点を置き、分からない点を残さず理解を深めること。  履修前提
※自由選択科目のみ記載
  

授業計画

回数 学習目標 学習項目
1 複数のソースを静的ライブラリにまとめ、プロジェクト間での共有が出来る。 動的ライブラリの仕組みを理解し、プログラムのモジュール化と分割が出来る。  複数のソースを静的ライブラリ(Lib)にまとめ、プロジェクトを跨いだ機能共有の手法を学習する。 動的ライブラリ(DLL)の仕組みを学習する。実行プログラムのモジュール化と分割管理を実践する。 ソフトウェアの資産化と、大規模開発を支えるビルド構成の構築手法を実践する。 
【理解度確認】課題にて確認する。
2 有限ステートマシン(FSM)の概念を理解し、状態の定義と遷移条件の整理が出来る。 列挙型を用いたシンプルな状態管理から始め、更新と描画の分離した構造が作れる。  有限ステートマシン(FSM)の概念を学習する。 オブジェクトの状態定義と遷移条件の整理法を学習する。 列挙型を用いたシンプルな状態管理から開始し、更新と描画のロジックを分離した構造を構築する。 
【理解度確認】課題にて確認する。
3 各状態をクラスとして定義し、ポリモーフィズムを用いた本格的なStateパターンの実装が出来る。 状態遷移マネージャーを構築し、現在の状態の切り替えや更新を自動化する仕組みが作れる。  各状態を個別のクラスとして定義し、ポリモーフィズムを用いた本格的なStateパターンを実装する。 状態遷移マネージャーを構築し、現在の状態の切り替えや更新を自動化するシステムを構築する。 具体的な挙動をクラス単位でカプセル化し、変更に強い状態管理ロジックを実践する。 
【理解度確認】課題にて確認する。
4 「待機」「追跡」「攻撃」などの思考ルーチンをStateパターンでの構築が出来る。 条件に応じた複雑な遷移ロジックを記述し、ゲームオブジェクトの挙動が作れる。  待機・追跡・攻撃等の思考ルーチンをStateパターンで構築し、実戦的なゲームオブジェクト制御を構築する。 条件に応じた複雑な遷移ロジックをクラス間に分散させ、整理された挙動を構築する。 大規模な分岐を伴うオブジェクトの動作を、オブジェクト指向的に解決する設計手法を実践する。 
【理解度確認】課題にて確認する。
5 階層型ステートマシン(HFSM)を理解し、親子関係の構築が出来る。 共通動作を親状態で管理し、個別の詳細動作を子状態で上書きする効率的な設計が出来る。  階層型ステートマシン(HFSM)の親子関係を学習する。 共通動作の継承と個別動作の上書きを学習する。 複数の状態を階層化することで、状態の爆発的な増加を防ぎつつ細やかな制御を行う設計を実践する。 
【理解度確認】課題にて確認する。
6 メッセージ送信による割り込み遷移を実装し、即座の状態変更が出来る。 イベント駆動型の遷移ロジックを構築し、スパゲッティコードを防ぐ状態管理が出来る。  メッセージ送信による割り込み遷移と外部要因による状態変更を学習する。 イベント駆動型の遷移ロジックを構築することで、状態間の依存度を下げた疎結合な設計を実践する。 スパゲッティコードを回避し、メンテナンス性に優れた高度なステート管理を実践する。 
【理解度確認】課題にて確認する。
7 ビヘイビアツリーの基本構造を理解し、ツリー形式での意思決定ロジックが作れる。 FSMと比較した際の利点を理解し、より複雑なAI設計に適した手法の説明が出来る。  ビヘイビアツリー(BT)の基本構造とノードの概念を学習する。 木構造による意思決定ロジックを学習する。 FSMとの特性の差異を比較し、より複雑かつ拡張性の高い設計に適した手法であることを学習する。 
【理解度確認】課題にて確認する。
8 Selector(優先度順実行)やSequence(順次実行)を使い、高度な条件分岐が作れる。 デコレーターノードを用いて、実行条件の制限やループ処理を木構造に組み込める。  Selector(優先度順)やSequence(順次)等の制御ノードを用い、高度な条件分岐をツリー上に構築する。 デコレーターノードを活用して実行条件の制限やループを組み込み、柔軟な行動制御を実践する。 複雑な判断基準を視覚的な構造として整理し、制御ロジックを構築する技術を学習する。 
【理解度確認】課題にて確認する。
9 複数のノードを組み合わせ、状況判断を行って行動を選択するNPCが作れる。 再利用可能なタスクノードを定義し、異なるキャラクター間で思考ルーチンの共有が出来る。  複数のノードを組み合わせて状況判断を行うNPCを実装し、再利用可能なタスクノードの定義法を学習する。 異なるキャラクター間で思考ルーチンの一部を共有する設計を学び、開発の効率化を実践する。 条件判定と行動を部品化し、ツリーの組み換えで多様な知能を作る手法を実践する。 
【理解度確認】課題にて確認する。
10 ステアリング(操舵)行動を理解し、物理挙動に基づいた滑らかな移動が出来る。 シーク(追尾)やフリー(逃避)などの作成が出来る。  ステアリング(操舵)行動を学習する。物理挙動に基づいた滑らかな移動アルゴリズムを学習する。 シーク(追尾)やフリー(逃避)の基本挙動を実装し、速度と力を考慮した移動制御を実践する。 単なる座標移動ではない、生物的なリアリティを持つ動体の制御手法を実践する。 
【理解度確認】中間テストにて確認する。
11 到着(アライバル)や障害物回避を組み合わせ、周囲の環境に反応する動きが出来る。 複数の移動ベクトルを重み付けして合成し、自然な群れの動き(群衆制御)が作れる。  到着(アライバル)や障害物回避を組み合わせ、周囲の環境に反応する高度な動体制御を学習する。 複数の移動ベクトルを重み付けして合成し、自然な群れの動き(群衆制御)を構築する。 動的な環境下で自律的に経路を調整する、エージェント指向の移動システムを実践する。 
【理解度確認】課題にて確認する。
12 std::threadを使い、メインループとは別にバックグラウンドで処理を動かすことが出来る。 std::futureとstd::promiseを用い、非同期処理の完了待ちや結果の受け取りが出来る。  シングルスレッドの限界を超えるための、マルチスレッドプログラミングの第一歩を学習する。 std::threadを用い、メインループとは別にバックグラウンドで処理を走らせる並列化の基礎を学習する。 std::futureとstd::promiseを活用し、非同期処理の完了待ちや結果の安全な受け取りを実践する。 
【理解度確認】課題にて確認する。
13 共有リソースへのアクセス競合を理解し、std::mutexを用いた排他制御が出来る。 デッドロックの発生条件を学習し、安全にスレッド間通信を行うための設計手法が使える。  共有リソースへのアクセス競合の問題を学習する。 std::mutexを用いた排他制御の手法を学習する。 デッドロックの発生条件と回避策を学び、スレッド間で安全に情報をやり取りする設計を学習する。 
【理解度確認】課題にて確認する。
14 多数存在する思考ルーチンの更新処理を複数のスレッドに分散させ、マルチコアCPUの活用が出来る。 更新処理の並列化によるフレームレートの向上を実証し、最適化の効果の説明が出来る。  多数の思考ルーチンを複数のスレッドに分散させ、マルチコアCPUを最大限に活用する方法を学習する。 更新処理の並列化によるフレームレートの向上を実証し、最適化の効果を客観的に評価する。 実戦的な高負荷処理を並列化することで、パフォーマンスチューニングの基礎を実践する。 
【理解度確認】課題にて確認する。
15 スレッドの生成コストや同期によるオーバーヘッドを考慮した適切な並列化設計が出来る。 2年間の学習内容を総括し、高度なC++機能の組み合わせによるシステム構築が出来る。  スレッド生成コストや同期オーバーヘッドを考慮した、適切な並列化の境界設計を学習する。 2年間の学習内容を総括し、高度なC++機能とアルゴリズムを組み合わせたシステムを構築する。 4年制の後半に向け、プロフェッショナルな開発に耐えうる技術スタックの統合を確認する。 
【理解度確認】課題にて確認する。