Skip to content
第13回 新作プロジェクトとゲームの土台

1 / 4 プロジェクトの境界と名前空間の分離

このステップの目的

新作プロジェクトにおいて、汎用数学型、アプリケーション設定、作品固有コードの置き場所を明確に分離し、名前空間による安全な境界を設計します。

名前空間を初回から分離する理由

プログラムの規模が大きくなると、同じ「Player」や「Config」といった名前が異なる文脈で衝突したり、クラスの責務が不明瞭になりがちです。

本プロジェクトでは、初回からフォルダ構造と名前空間(namespace)を一致させ、以下の3つの明確な境界を作ります。

名前空間の役割分担cpp
// 1. 作品に依存しない汎用的な幾何学・数学型
namespace dxgame
{
    struct Vector2;
    struct Rect;
}

// 2. ウィンドウサイズや固定フレームレートなどの起動設定
namespace dxgame::config
{
    inline constexpr int ScreenWidth = 640;
    inline constexpr int ScreenHeight = 480;
}

// 3. プラットフォーマー固有のゲームロジック・マネージャー
namespace dxgame::platformer
{
    class Game;
    class Player;
}

名前空間を後から変更しようとすると、多数のソースコードにまたがる修正が必要になります。プロジェクトの立ち上げ段階から境界を定めておくことで、今後追加するクラスを最初から適切な位置へ配置できます。

プロジェクト設定とAssetsフォルダの同期

配布プロジェクトには、以下の環境設定が適用されています。

  • C++言語標準: C++17
  • プラットフォーム: x64(64ビット)
  • 文字セット: Unicode
  • DXライブラリの参照: 環境変数 DXLIB_ROOT を介して自動参照

また、Visual Studioのプロジェクトファイル(.vcxproj)には、ビルド後にプロジェクト直下の Assets フォルダを実行ファイルの出力先(x64/Debug/x64/Release/)へ自動的に再帰コピーするカスタムビルドステップが設定されています。

::: important 素材の編集は必ずプロジェクト直下で行う
出力先フォルダ(x64/Debug/Assets/ など)にコピーされた素材ファイルは、ビルドによって生成される一時的なファイルです。画像やCSVファイルを編集・差し替える際は、必ずプロジェクト直下の Assets/ フォルダにある正本ファイルを編集してください。
:::

チェックリスト
  • Source 配下の3つの領域(DxGameConfigPlatformer)と各名前空間の役割を説明できる
  • Visual Studioで PlatformerGame2D.sln を開き、Debug / x64構成で正常にビルドできる
  • プロジェクト直下の Assets と出力先フォルダの関係を正しく理解している

ゲームプログラミング実践