Skip to content

第01回 環境確認とプロジェクト構造

次回: 第02回 ゲームループと描画

今回の授業内容

  • 最終的に作る2Dシューティングゲームの仕様を確認する
  • 開始用プロジェクトをVisual Studioで動かす
  • SourceAssetsの役割を確認する
  • main.cppGame.hGame.cppの役割を読む
  • 次回以降にコードを追加していく土台を用意する

この授業で作るもの

この授業では、DXライブラリを使った2Dシューティングゲームを13回で作ります。
完成版では、プレイヤーを移動させ、弾を撃ち、敵を倒し、スコア、HP、残り時間、ゲーム状態を管理します。

完成版の仕様は最初に確認しますが、完成版コードを写す授業ではありません。
第01回では最小構成のプロジェクトを動かし、第02回以降で機能を1つずつ追加します。

完成形の仕様

項目仕様
画面サイズ640x480
操作矢印キーまたはWASDで移動、ZまたはSpaceでショット
開始タイトル画面でEnter
プレイヤーHPを3持ち、敵に当たるとダメージを受ける
最大48発を固定配列で管理する
最大24体を固定配列で管理し、一定間隔で出現する
エフェクト最大32個を固定配列で管理し、敵撃破時に表示する
クリア条件スコアが30に到達する、または制限時間を生き残る
ゲームオーバー条件プレイヤーのHPが0になる
リトライ結果画面でEnterを押す

画像と音声は任意素材として扱います。
素材がない状態でも、図形描画と無音でゲームロジックを確認できる構成にします。

今回の開始状態

配布ファイルからstarter.zipをダウンロードして展開します。
第01回では、この開始用プロジェクトだけを使います。

ファイル構成
  • Project
    • Source
      • main.cpp
      • Common.h
      • Game.h
      • Game.cpp
    • Assets
      • Images
      • Sounds

SourceにはC++のソースコードを置きます。
Assetsには画像や音声など、実行時に読み込むファイルを置きます。

最初に読むファイル

main.cppはゲームを起動する入口です。
DXライブラリの初期化、ウィンドウ設定、Gameの実行、終了処理を担当します。

cpp
Game game;

if (game.Initialize())
    game.MainLoop();

game.Finalize();

Game.hは、ゲーム全体が持つ関数の宣言です。
Game.cppは、それらの関数の中身です。
第02回以降は、主にGame.hGame.cppへ機能を追加します。

実装手順

  1. DXライブラリ用のVisual Studioプロジェクトを作成する
  2. starter/Source内の.h.cppをプロジェクトへ追加する
  3. Assetsフォルダを実行ファイルから見える位置へ配置する
  4. ビルドして、ウィンドウにDX Library Projectと表示されることを確認する
  5. Common.hscreenWidthscreenHeightが画面サイズに使われていることを確認する

第01回ではゲーム機能を追加しません。
環境を整え、次回から同じプロジェクトを継続して編集できる状態にします。

よくある問題

  • DxLib.hが見つからない場合は、DXライブラリのインクルードディレクトリを確認する
  • リンクエラーが出る場合は、ライブラリディレクトリと追加の依存ファイルを確認する
  • 黒い画面だけで文字が出ない場合は、SetDrawScreen(DX_SCREEN_BACK)ScreenFlip()が呼ばれているか確認する
  • Sourceに追加した.cppがVisual Studioプロジェクトへ登録されているか確認する

今回の完成条件

  • 開始用プロジェクトをビルドして実行できる
  • SourceAssetsの違いを説明できる
  • main.cppがゲームの入口であることを説明できる
  • Game.hGame.cppの役割の違いを説明できる
  • 次回以降に同じプロジェクトを継続して編集できる

まとめ

今回は、完成形の仕様と開始用プロジェクトの構造を確認しました。
次回は、この最小プロジェクトへプレイヤーの仮図形を追加します。