Skip to content

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)を参照してください。