C++とDxLibで作るオートシューター
講座の概要
オートシューター(サバイバー系ゲーム)は、四方八方から迫り来る敵の群れを相手に、自動で発動する武器を駆使して制限時間を生き残る2Dアクションゲームです。
本講座では、C++言語とゲーム制作ライブラリ「DxLib」を用いて、オートシューターの実装技術とゲームバランスの設計手法を学びます。
今回は最初からゲームとして動作する完成版プロジェクト(Complete)を基点とし、構造を理解した上で改造を加える形で進行します。
自身で考案した武器や強化ルールを実装し、独自のゲームへと発展させましょう。
受講の前提知識と対象者
本講座は、C++の基礎知識を前提としています。
- 変数の定義と代入、基本データ型(
int、float、boolなど) - 条件分岐(
if、switch)と繰り返し処理(for、while) - 関数の定義と呼び出し、引数と戻り値の受け渡し
ですが前学期の講座の履修は必須ではありません。
プロジェクトは完成済みですので、本作単独で学習を進めていくことが可能です。
細かな点は一旦無視して、まずは完成版プロジェクトを動かしながら全体の流れを把握しましょう。
クラスのカプセル化、固定長配列(std::array)、列挙型(enum class)、参照などの概念は、演習の進行に合わせて必要な範囲で解説します。
開発環境
本講座では以下の開発環境を使用します。
- OS: Windows 10 または Windows 11
- 統合開発環境: Visual Studio 2026
- 言語規格: C++17
- ビルド構成: x64(64ビット)
- 使用ライブラリ: DxLib(64ビット版)
プロジェクトの入手と準備
演習で使用するソースコードおよび素材一式は、完成版プロジェクト(complete.zip) からダウンロードできます。
Visual Studioでのプロジェクトの開き方や環境変数の設定手順は、配布ファイル のページで説明しています。
演習の進め方
配布プロジェクトを段階的に改造して自分の作品として完成させます。
画像の表示方法、敵の出現と行動、攻撃の仕組み、成長の管理、ルールの適用などの機構を自身の手で好みの形に組み替えることで、自分だけのゲーム体験を作り上げます。
ゲームプログラムは大きくシステム部分とゲーム本体部分に分かれます。
システムが扱うフレームワークが引き受ける入力、描画、音声、素材読み込みなどは、あまり大きな改造は必要ないかもしれません。
逆にゲーム本体は自身の好みに合わせるためには大幅に変更することになるかもしれません。
同じプロジェクトにシステム部分とゲーム本体部分が共存していることを意識しながら改造を進めることで、コンポーネント同士の関係性や依存関係を意識した実装能力を養うことが目的です。
得られた知見を今後のゲーム開発への応用につなげ、有意義なものとしてください。
カリキュラム一覧
全12回を通して、配布プロジェクトを自身のゲームへと改造します。
画像やアニメーションの変更方法、敵や攻撃挙動の追加、成長や独自ルールの実装などを段階的に進めていきます。
- 第01回 全体構成と目標
主要コンポーネントを俯瞰し、フレームワークとコアロジックの役割を理解して改造の方針を組み立てます。 - 第02回 世界観・画像とアニメーション
主人公や敵、攻撃の外見を置換、設定します。
画像登録、コマ分割、表示サイズ、基準点、待機・移動・被弾・やられのアニメーションを扱います。 - 第03回 敵の発生管理と追従
敵の更新と出現を扱います。
敵の追従や突進の行動を実装し、異なる敵種に適用します。 - 第04回 自動照準と平行射出
距離による標的選択と、待ち時間・生成成否による発射制御を調べます。
狙う相手や発射間隔、直交ベクトルを使った平行弾の配置を変更します。 - 第05回 当たり判定・被ダメージと状態遷移
円と線分を用いたキャラクターと射撃の衝突判定を読み解きます。
その上でダメージを受けた際の状態遷移を実装 - 第06回 扇状・波状の攻撃
直進弾・扇状発射・衝撃波の生成、更新、命中処理を比較します。定義値による広がりの調整と、新しい軌道や判定の実装方法を扱います。 - 第07回 武装データとレベル設計
武装IDと攻撃方式を分け、既存処理を共有する別武装を追加します。武装ごとの定義で、成長段階、画像、色、強化時の性能表示を設定します。 - 第08回 経験値と強化選択
解放・取得・強化の条件を設定し、所持上限と表示件数を分けて全候補から選択肢を作ります。余った経験値の保持と、連続するレベルアップも扱います。 - 第09回 ウェーブと成長計画
出現表で敵種・体数・間隔・HP・速度を調整します。敵の残り方や経験値供給、武装の成長を見ながら、ゲームの展開を作ります。 - 第10回 独自ルールの実装と比較改善
自分のルールに必要な条件判定、状態、効果、表示・音を実装します。実際に遊び、条件や効果量、演出を改善します。 - 第11回 Release配布と素材確認
Releaseでビルドし、素材の読み込み、音声、利用条件を確認します。実行ファイル・Assets・必要な文書をまとめ、配布物を起動します。 - 第12回 完成と成果整理
外見、当たり方、成長、展開、配布物を確かめ、気になる点を改善して作品を仕上げます。評価対象は完成ゲームの完成度です。