「あのスクリプト、どこに置いたっけ……」——FileSystemドックを上から下までスクロールして探す時間は、開発でいちばん無駄な時間のひとつです。プロジェクトが小さいうちは平気でも、シーンや素材が増えるほど、散らかりのツケは大きくなります。
この記事では、Godotプロジェクトを整理整頓するための フォルダ構成 、Godotならではの 命名規約 、res:// と user:// の違い、そして gitで管理 する方法までを解説します。良い整理術は、自分の効率を上げるだけでなく、チーム開発や将来の自分をぐっと助けてくれます。
この記事でわかること
- フォルダ構成 ——種類別と機能別、2つの考え方
- Godotの 命名規約 (ファイルは
snake_case、ノードはPascalCase)res://とuser://の違い(書き込み可否)- git でプロジェクトを管理する(
.godotの除外)
フォルダ構成:種類別と機能別
いちばんの悪手は、res:// 直下にすべてのファイルを置くことです。シーン・スクリプト・画像・音がごちゃ混ぜになり、目的のファイルを探すだけでひと苦労になります。

整理のしかたには、大きく2つの考え方があります。

種類別(types型) ——ファイルの種類でまとめます。小〜中規模で分かりやすい定番です。
res://
├── scenes/ # シーン (.tscn)
├── scripts/ # スクリプト (.gd)
├── assets/ # 画像・スプライト
│ ├── sprites/
│ └── audio/
└── autoload/ # グローバルなシングルトン
機能別(features型) ——「プレイヤーに関わるものは全部ここ」と、機能ごとにまとめます。中〜大規模で効いてきます。
res://
├── player/ # player.tscn / player.gd / player.png をまとめて
├── enemy/
├── ui/
└── levels/
Godotは シーン(.tscn)とスクリプト(.gd)を近くに置く と扱いやすいので、機能別と特に相性が良いです。プレイヤーを直したいとき、player/ フォルダを開けば、シーンもスクリプトも素材も揃っています。どちらが正解というものではなく、 まずは種類別から始め、大きくなったら機能別を取り入れる のがおすすめです。
実践:機能別で小さなゲームを整理する
シューティング、アクション、ローグライク——ジャンルを問わず、小さなゲームは「プレイヤー・敵・弾・UI・ステージ」くらいの機能に分けられます。機能別フォルダで整理すると、こんな形になります。

res://
├── player/
│ ├── player.tscn
│ ├── player.gd
│ └── player.png
├── enemy/
│ ├── enemy.tscn
│ └── enemy.gd
├── bullet/
│ ├── bullet.tscn
│ └── bullet.gd
├── ui/
│ └── hud.tscn
├── levels/
│ └── stage_1.tscn
└── autoload/
└── game_manager.gd
ポイントは2つです。
- 1機能=1フォルダで「まるごと持ち運べる」 :
player/フォルダごと別プロジェクトへコピーすれば、プレイヤーがそのまま移植できます。機能が独立していると、再利用も削除も 楽です。 - グローバルなものは
autoload/に隔離 :どのシーンからも使う Autoload(GameManagerなど)は専用フォルダに置くと、「全体に効くもの」の在り処が一目で分かります。
Godotの命名規約
名前の付け方を揃えておくと、コードもファイルも一気に読みやすくなります。Godotには 公式スタイルガイド があり、対象ごとに書き方が決まっています。

| 対象 | 書き方 | 例 |
|---|---|---|
| ファイル・フォルダ | snake_case | player_controller.gd・main_menu/ |
ノード名・class_name | PascalCase | PlayerController・Enemy |
| 変数・関数 | snake_case | move_speed・take_damage() |
| 定数 | CONSTANT_CASE | MAX_HP・SPEED |
特に大事なのが ファイル名は必ず snake_case(すべて小文字) にすることです。LinuxやAndroidはファイル名の大文字・小文字を厳密に区別するため、Player.png と player.png を混在させると、Windowsでは動くのに エクスポート 後に読み込み失敗——という定番の事故につながります。最初から小文字で統一しておけば安全です。
res:// と user:// の違い
Godotのパスには2種類あります。整理術としても、この違いは押さえておきましょう。
res://:プロジェクトのファイル置き場。シーンや素材はここに置きます。ただし エクスポート後は読み取り専用 になり、書き込めません。user://:OSごとに用意される 書き込み可能な専用フォルダ 。セーブデータや設定ファイルはここに書きます。
つまり 「素材は res://、プレイ中に書き出すものは user://」 と覚えておけば十分です。セーブデータを res:// に書こうとして「エディタでは動くのに製品版で保存できない」というのは定番のつまずきなので注意してください。詳しい使い方は セーブ/ロードシステム で解説しています。
gitで管理する
プロジェクトをGitでバージョン管理するなら、 .godot/ フォルダを除外 します。ここはインポートキャッシュなどの 自動生成物 なので、リポジトリに入れる必要がありません(別PCで開けば再生成されます)。

プロジェクト直下の .gitignore に次を書いておきます。
# Godotが自動生成するキャッシュ
.godot/
# エクスポート成果物
export/
*.exe
逆に、project.godot(プロジェクト設定)や .tscn / .gd などの 自分で作ったファイルは必ずコミット します。.tscn はテキスト形式なので、Gitで差分も追えます。
おまけ:先に知っておくと良いこと
- フォルダ移動はGodot内で行う :ファイルを移動するときは、OSのエクスプローラーではなく FileSystemドック上でドラッグ します。こうするとGodotが参照パスを自動で追従してくれ、リンク切れを防げます。
_(アンダースコア)で先頭に固定 :_experimental/のようにフォルダ名の先頭に_を付けると、一覧の上位に表示されます。試作や外部アセットの隔離に便利 です。- シーンの分け方は別の話 :ここで扱ったのは「ファイルの整理」です。シーン自体の設計(何をシーンに分けるか)は 「シーン」と「ノード」の基本 の領域です。
まとめ
res://直下に全部置かず、 種類別 か 機能別 でフォルダを分ける(Godotは機能別と相性が良い)- ファイル・フォルダは
snake_case、ノード・class_nameはPascalCase。特にファイル名の小文字統一はエクスポート事故を防ぐ res://は素材(出荷後は読み取り専用)、user://はセーブなど書き込むもの- Gitでは
.godot/を除外 し、自作ファイルはコミットする
きれいなプロジェクトは、バグの発見を早め、機能追加を加速させます。最初の1フォルダから、整理する習慣をつけていきましょう。
さらに学ぶために
- 「シーン」と「ノード」の基本を徹底解説 ——何をシーンに分けるかの設計
- Autoloadによるシーンをまたぐデータ管理 ——グローバルなものの置き場
- セーブ/ロードシステムの実装 ——
user://への書き込み - 各プラットフォームへビルドする ——ケースセンシティブとエクスポート