Appearance
第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つの領域(DxGame、Config、Platformer)と各名前空間の役割を説明できる - Visual Studioで
PlatformerGame2D.slnを開き、Debug / x64構成で正常にビルドできる - プロジェクト直下の
Assetsと出力先フォルダの関係を正しく理解している