フォルダ構成

Phaser+Vite+TypeScriptでのフォルダ構成の例。

コード

src/
├── main.ts                 // Vite のエントリ
├── constants/              // 固定値・イベント名など
│   └── events.ts
├── utils/                  // 汎用的な関数や型
│   └── math.ts
├── scenes/
│   ├── GameScene.ts        // メインゲーム
│   └── UIScene.ts          // HP, インベントリなど
├── objects/
│   ├── Player.ts
│   └── Enemy.ts
├── maps/
│   └── WorldMap.ts
└── systems/
    └── CameraSystem.ts
  • scenes/ … Phaser.Scene を継承するクラスだけ
  • objects/ … 自キャラ・敵・宝箱など “置けるモノ”
  • maps/ … Tilemap/オブジェクトレイヤのラッパ
  • systems/ … カメラ・衝突・AI などドメイン横断の仕組み
  • constants/ … Scene 間イベント名やキーコード

後で規模が膨らんだら objects/boss/ や systems/combat/ のように更に深掘り。

アセット

public/
└── assets/
    ├── images/
    │   ├── sprites/       # キャラ・モンスター等のスプライトシート
    │   ├── tilesets/      # タイルマップ用
    │   ├── ui/            # HUD・アイコン・フォント画像
    │   └── effects/       # パーティクル画像など
    ├── audio/
    │   ├── music/         # BGM
    │   └── sfx/           # 効果音
    ├── maps/
    │   ├── tiled/         # Tiled で作成した JSON/TMX
    │   └── collision/     # 衝突情報だけ別ファイルにする場合
    ├── fonts/             # Web フォントやビットマップフォント
    └── data/
        ├── items.json     # アイテム定義
        └── enemies.json   # 敵ステータス定義
  • images/ … 種類(sprites, tilesets, ui, effects)ごとに分ける
  • audio/ … BGM と効果音を分ける
  • maps/ … Tiled で出力したマップファイルを丸ごと置く
  • fonts/ … BitmapFont(.fnt+テクスチャ)やWebフォントをまとめておく
  • data/ … JSON や CSV で定義したゲーム内データ(アイテム、敵、クエスト情報など)