C++/DXライブラリでシューティングゲームを作る
DXライブラリで2D縦スクロールシューティングを作りながら、C++のゲームプログラミングを学びます。
プレイヤー操作、弾の発射、敵の出現、当たり判定、状態遷移を順に実装し、ゲームが動く仕組みを一つずつ学びます。
画像や音声、エフェクトを加え、単体で動く実行ファイルとして配布できる形に仕上げます。
完成形のゲーム画面
始める前に
C++の変数、条件分岐、繰り返し、関数の引数と戻り値を使います。基礎実習の受講は必須ではありません。確認したい内容から、次の解説を開けます。
| 確認したい内容 | 解説 |
|---|---|
| 値の保持と変更 | 変数の利用 |
| 毎フレームの更新と入力 | 繰り返しと移動/キー入力 |
| 関数の受け渡し | 引数と戻り値 |
最初から制作するときはプレイヤーの表示と操作から始めます。特定の機能を学ぶ場合は、下の一覧から選び、その回の開始用プロジェクトを使ってください。前の回の完成物は必要ありません。クラスなど新しく使う知識は本文で説明します。
別の題材として、C++/DXライブラリで2Dプラットフォーマーを作るも選べます。
この授業で制作するゲーム
| 項目 | 内容 |
|---|---|
| ゲームジャンル | 2D縦スクロールシューティング |
| 操作方法 | カーソルキー(またはWASD)で8方向移動、Zキー(またはSpace)で射撃 |
| 敵キャラクター | 画面上端から出現し、直進や波状移動を行いながら自機を狙って弾を発射 |
| クリア条件 | 目標スコア(30点)獲得、または制限時間(60秒間)の生存 |
| ゲームオーバー条件 | 敵や敵弾と接触し、プレイヤーのHPが0になる |
| 画面構成 | タイトル、プレイ中、ゲームクリア、ゲームオーバー、リトライ機能 |
この教材の進め方
各回は複数のステップで構成します。コードを書く作業と動作確認を交互に行い、段階的に制作します。
C++の文法や標準ライブラリをすべて解説するのではなく、ゲーム制作に必要な設計と実装を説明します。
毎フレームのnewを避けてプールを使う理由や、個体同士ではなくGameで当たり判定を行う理由を学びます。
個体クラスで1個分のデータと動作を扱い、Managerクラスで複数のオブジェクトを管理します。役割を分けて、変更しやすい構造を作ります。
画像や音声の読み込みと解放にはRAIIを使います。Releaseビルドの最適化と、他のPCで遊ぶためのパッケージ作成まで、開発の一連の手順を扱います。
全12回のカリキュラム
| 回 | テーマ | 到達目標 |
|---|---|---|
| 第01回 | プレイヤーの表示と操作 | ゲームループの基本構造を理解し、自機を表示して8方向へ移動できる |
| 第02回 | プレイヤーの弾とオブジェクトプール | オブジェクトプールにより頻繁なメモリ確保を避け、弾を連射できる |
| 第03回 | 敵の出現と移動 | レーン計算と三角関数(サイン波)を用いて、直進・波状移動する敵を出現させられる |
| 第04回 | プレイヤーの弾と敵の命中判定 | 矩形の重なり判定とGameクラスによる調停を実装し、敵を撃破してスコアを加算できる |
| 第05回 | プレイヤーを狙う敵弾 | ベクトルの正規化を学び、敵からプレイヤーへ向かう弾を発射できる |
| 第06回 | プレイヤーの被弾と無敵時間 | プレイヤーのHP管理と、多重被弾を防ぐ無敵タイマー・点滅描画を実装できる |
| 第07回 | ゲームの状態と終了条件 | 有限ステートマシンを導入し、タイトル・プレイ中・結果・リトライの画面遷移を実装できる |
| 第08回 | 画像リソースの管理 | 画像リソースの所有権とRAIIパターンを理解し、素材寸法と判定矩形を分離できる |
| 第09回 | 音声の管理と再生 | BGMのループ切り替えと、イベント成立に連動した効果音再生を実装できる |
| 第10回 | エフェクトと演出 | プールによるヒットエフェクトと、2枚連結によるループ背景スクロールを実装できる |
| 第11回 | 成果物の作成と検証 | Releaseビルドで最適化し、開発環境外でも単体動作する配布フォルダを作成できる |
| 第12回 | 調整と作品の完成 | パラメータ調整や素材差し替えを行い、回帰テストを経て完成ZIPパッケージを出力できる |
配布ファイル
各回の開始時点に対応したVisual Studioプロジェクトと素材一式は、配布ファイル一覧からダウンロードできます。
事前準備
授業を開始する前に、以下の開発環境を準備してください。
- Visual Studio 2026: 「C++によるデスクトップ開発」ワークロードをインストール済みの環境
- DXライブラリ(64bit版): 最新のDirectX 9.0c対応版
- 環境変数
DXLIB_ROOT: DXライブラリを展開したフォルダへのパス設定
環境構築の詳しい手順は、DXライブラリの導入と設定ガイド(PDF)を参照してください。