Project Templates (Navigation)
Scaffold architecture, then adapt — never dump genre tutorials into the project verbatim.
NEVER Do (Expert Anti-Patterns)
Directory & Scaffolding
- NEVER hardcode scene paths in dozens of call sites — AutoLoad constants or a scene registry.
- NEVER skip
.gdignore for designer asset drops outside import pipelines.
- NEVER copy-paste templates as-is — Understand structure, then adapt (see checklist below).
Architecture & Lifecycle
- NEVER use
get_tree().paused without process-mode groups — Pause menus need PROCESS_MODE_ALWAYS. Why: pausing the tree freezes _process on menu nodes too, so buttons never receive input; set gameplay to INHERIT (paused) and menu/HUD to ALWAYS via base_menu.gd or explicit process_mode on the pause root.
- NEVER skip virtual lifecycle hooks on base classes — Prefer
_initialize_*() over brittle _ready() overrides.
- NEVER rely on monolithic God singletons — Signal Bus or Subsystem Locator.
Platform & UI
- NEVER skip
Input.MOUSE_MODE_CAPTURED in FPS scaffolds — Set when the FPS genre path is chosen.
- NEVER use floating-point constants for UI layout — Anchors/containers.
- NEVER ignore i18n translation context — Disambiguate strings in
tr() / contexts.
Performance
- NEVER load massive levels synchronously —
ResourceLoader.load_threaded_request().
Golden Path
- Bootstrap — MANDATORY bootstrap_config.gd: config/network before audio/UI (do not rely on accidental Autoload order).
- Pick a genre row below → load listed scripts only.
- Rename project, register locator/bootstrap, configure Input Map.
- Open the consumer
godot-genre-* skill for gameplay systems.
Platformer end-to-end: row 1 scripts → godot-genre-platformer (advanced_platformer_controller.gd for movement; template base_level + state machine for scene flow). Do NOT paste FPS/inventory recipes from this skill.
Genre Router → Scripts
MANDATORY: Choose a genre row, load the listed scripts, then open the consumer godot-genre-* skill for gameplay systems. Do NOT paste inline FPS controllers or inventory managers from memory.
| Genre intent |
Load these template scripts (MANDATORY) |
Fill gameplay via |
| 2D platformer |
base_game_manager.gd, base_level.gd, base_actor.gd, scene_state_machine.gd, state_machine_node.gd |
godot-genre-platformer |
| Top-down / action RPG |
Same bases + subsystem_locator.gd, base_menu.gd |
godot-genre-action-rpg |
| 3D FPS / shooter |
Bases + multi_platform_input.gd, platform_feature_config.gd |
godot-genre-shooter-fps |
| Any genre + DLC packs |
modular_dlc_loader.gd |
Genre skill + godot-export-builds |
| Cross-platform input/features |
multi_platform_input.gd, platform_feature_config.gd |
godot-input-handling |
| Threaded level streaming |
level_steamer_manager.gd |
godot-scene-management |
| Accessibility TTS |
accessibility_tts_manager.gd |
Project foundations / UI skills |
Folder-by-feature skeleton (all genres): entities/<name>/, levels/ or maps/, ui/, autoloads/ or locator-registered systems, resources/. Details belong in the genre consumer skill — not duplicated here.
Architecture Deltas (keep in this skill)
Subsystem Locator vs God Autoload
Prefer subsystem_locator.gd for modular registration; keep a thin bootstrap Autoload only.
Bootstrap order
MANDATORY bootstrap_config.gd (or equivalent): critical systems (config/network) before audio/UI. Do not rely on accidental Project Settings Autoload order alone.
Pause modes
Gameplay tree pauses; UI/pause menu nodes use PROCESS_MODE_ALWAYS. Wire via base_menu.gd.
PCK / DLC
MANDATORY modular_dlc_loader.gd for ProjectSettings.load_resource_pack() mounts — never hand-roll path hacks in gameplay code.
Feature tags
MANDATORY platform_feature_config.gd for OS.has_feature() / export-tag forks (mobile, low_end, dedicated_server).
Adapt-Not-Copy Checklist
Map each template piece to a consumer skill before writing gameplay code:
Usage: pick genre row → load scripts → rename project → register locator/bootstrap → configure Input Map → open genre skill for systems — do not paste stock FPS/inventory recipes from this skill.
Deep dive (load on demand)
Platformer/RPG/FPS directory trees, input map template, CI export YAML, PCK mount, bootstrap priority — references/genre-template-scaffolds.md.
Reference
Progressive disclosure: open Official Documentation links only when researching a specific API; load Related Skills when routing to a peer domain — do not preload the whole lattice.
Official Documentation
- Project organization — Feature-folder layouts,
.gdignore, and VCS hygiene that genre boilerplates should bake in from day one.
- Scene organization — Ownership boundaries for
entities/, levels/, and UI scenes so templates stay refactor-safe.
- Singletons (Autoload) — Registering lean GameManager / Audio / SceneTransitioner services that survive scene changes.
- Autoloads versus regular nodes — When a Subsystem Locator or scene-local node beats a monolithic God singleton.
- Background loading —
ResourceLoader.load_threaded_* patterns used by level streamer templates.
- Pausing games — Process modes so pause menus stay alive while gameplay freezes.
- Multiple resolutions — Stretch mode/aspect defaults (
canvas_items / expand) every new project template should document.
- Feature tags —
OS.has_feature() profiles for mobile/PC/server overrides in platform config templates.
- Exporting packs (PCK) — Modular DLC / patch mounts via
ProjectSettings.load_resource_pack().
- Using controllers and gamepads — Default Input Map actions and deadzone tuning for multi-platform templates.
- Text-to-speech — DisplayServer TTS hooks for accessibility manager scaffolding.
- Internationalizing games — Translation contexts so UI strings in menus/HUD avoid ambiguous keys.
Related Skills
Prerequisites
Complements
Downstream / consumers
Master
- godot-master — Library router and mirrored module entry for cross-skill discovery.
1---2name: godot-project-templates3description: Navigation skill for genre project scaffolds: pick platformer/RPG/FPS (or other genre) then load matching template scripts and route gameplay fill to godot-genre-* skills. Use when bootstrapping architecture, bootstrap order, pause modes, PCK DLC, or feature tags — not for pasting FPS/inventory recipes. Keywords: project templates, bootstrap, Subsystem Locator, PCK, feature tags, PROCESS_MODE_ALWAYS, genre scaffold.4---5
6# Project Templates (Navigation)
7
8Scaffold architecture, then **adapt** — never dump genre tutorials into the project verbatim.
9
10## NEVER Do (Expert Anti-Patterns)
11
12### Directory & Scaffolding
13- **NEVER hardcode scene paths** in dozens of call sites — AutoLoad constants or a scene registry.
14- **NEVER skip `.gdignore` for designer asset drops** outside import pipelines.
15- **NEVER copy-paste templates as-is** — Understand structure, then adapt (see checklist below).
16
17### Architecture & Lifecycle
18- **NEVER use `get_tree().paused` without process-mode groups** — Pause menus need `PROCESS_MODE_ALWAYS`. **Why:** pausing the tree freezes `_process` on menu nodes too, so buttons never receive input; set gameplay to `INHERIT` (paused) and menu/HUD to `ALWAYS` via [base_menu.gd](scripts/base_menu.gd) or explicit `process_mode` on the pause root.
19- **NEVER skip virtual lifecycle hooks** on base classes — Prefer `_initialize_*()` over brittle `_ready()` overrides.
20- **NEVER rely on monolithic God singletons** — Signal Bus or **Subsystem Locator**.
21
22### Platform & UI
23- **NEVER skip `Input.MOUSE_MODE_CAPTURED` in FPS scaffolds** — Set when the FPS genre path is chosen.
24- **NEVER use floating-point constants for UI layout** — Anchors/containers.
25- **NEVER ignore i18n translation context** — Disambiguate strings in `tr()` / contexts.
26
27### Performance
28- **NEVER load massive levels synchronously** — `ResourceLoader.load_threaded_request()`.
29
30---
31
32## Golden Path
33
340. **Bootstrap** — **MANDATORY** [bootstrap_config.gd](scripts/bootstrap_config.gd): config/network before audio/UI (do not rely on accidental Autoload order).
351. Pick a genre row below → load listed scripts only.
362. Rename project, register locator/bootstrap, configure Input Map.
373. Open the consumer `godot-genre-*` skill for gameplay systems.
38
39**Platformer end-to-end:** row 1 scripts → [godot-genre-platformer](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-genre-platformer/SKILL.md) (`advanced_platformer_controller.gd` for movement; template `base_level` + state machine for scene flow). **Do NOT** paste FPS/inventory recipes from this skill.
40
41## Genre Router → Scripts
42
43> **MANDATORY**: Choose a genre row, load the listed scripts, then open the consumer `godot-genre-*` skill for gameplay systems. **Do NOT** paste inline FPS controllers or inventory managers from memory.
44
45| Genre intent | Load these template scripts (MANDATORY) | Fill gameplay via |
46| :--- | :--- | :--- |
47| 2D platformer | [base_game_manager.gd](scripts/base_game_manager.gd), [base_level.gd](scripts/base_level.gd), [base_actor.gd](scripts/base_actor.gd), [scene_state_machine.gd](scripts/scene_state_machine.gd), [state_machine_node.gd](scripts/state_machine_node.gd) | [godot-genre-platformer](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-genre-platformer/SKILL.md) |
48| Top-down / action RPG | Same bases + [subsystem_locator.gd](scripts/subsystem_locator.gd), [base_menu.gd](scripts/base_menu.gd) | [godot-genre-action-rpg](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-genre-action-rpg/SKILL.md) |
49| 3D FPS / shooter | Bases + [multi_platform_input.gd](scripts/multi_platform_input.gd), [platform_feature_config.gd](scripts/platform_feature_config.gd) | [godot-genre-shooter-fps](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-genre-shooter-fps/SKILL.md) |
50| Any genre + DLC packs | [modular_dlc_loader.gd](scripts/modular_dlc_loader.gd) | Genre skill + [godot-export-builds](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-export-builds/SKILL.md) |
51| Cross-platform input/features | [multi_platform_input.gd](scripts/multi_platform_input.gd), [platform_feature_config.gd](scripts/platform_feature_config.gd) | [godot-input-handling](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-input-handling/SKILL.md) |
52| Threaded level streaming | [level_steamer_manager.gd](scripts/level_steamer_manager.gd) | [godot-scene-management](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-scene-management/SKILL.md) |
53| Accessibility TTS | [accessibility_tts_manager.gd](scripts/accessibility_tts_manager.gd) | Project foundations / UI skills |
54
55Folder-by-feature skeleton (all genres): `entities/<name>/`, `levels/` or `maps/`, `ui/`, `autoloads/` or locator-registered systems, `resources/`. Details belong in the genre consumer skill — not duplicated here.
56
57---
58
59## Architecture Deltas (keep in this skill)
60
61### Subsystem Locator vs God Autoload
62Prefer [subsystem_locator.gd](scripts/subsystem_locator.gd) for modular registration; keep a thin bootstrap Autoload only.
63
64### Bootstrap order
65**MANDATORY** [bootstrap_config.gd](scripts/bootstrap_config.gd) (or equivalent): critical systems (config/network) before audio/UI. Do not rely on accidental Project Settings Autoload order alone.
66
67### Pause modes
68Gameplay tree pauses; UI/pause menu nodes use `PROCESS_MODE_ALWAYS`. Wire via [base_menu.gd](scripts/base_menu.gd).
69
70### PCK / DLC
71**MANDATORY** [modular_dlc_loader.gd](scripts/modular_dlc_loader.gd) for `ProjectSettings.load_resource_pack()` mounts — never hand-roll path hacks in gameplay code.
72
73### Feature tags
74**MANDATORY** [platform_feature_config.gd](scripts/platform_feature_config.gd) for `OS.has_feature()` / export-tag forks (mobile, low_end, dedicated_server).
75
76---
77
78## Adapt-Not-Copy Checklist
79
80Map each template piece to a consumer skill before writing gameplay code:
81
82| Template piece | Adapt into |
83| :--- | :--- |
84| `base_actor` / state machine nodes | Genre movement/combat skill (`godot-genre-*`) + [godot-state-machine-advanced](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-state-machine-advanced/SKILL.md) |
85| `base_game_manager` signals | [godot-autoload-architecture](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-autoload-architecture/SKILL.md) / [godot-signal-architecture](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-signal-architecture/SKILL.md) |
86| Level streamer | [godot-scene-management](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-scene-management/SKILL.md) |
87| Input / feature config | [godot-input-handling](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-input-handling/SKILL.md) + platform skills |
88| Menus / HUD shells | [godot-ui-containers](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-ui-containers/SKILL.md) |
89| Export / CI / PCK | [godot-export-builds](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-export-builds/SKILL.md) |
90
91**Usage:** pick genre row → load scripts → rename project → register locator/bootstrap → configure Input Map → open genre skill for systems — do not paste stock FPS/inventory recipes from this skill.
92
93## Deep dive (load on demand)
94
95Platformer/RPG/FPS directory trees, input map template, CI export YAML, PCK mount, bootstrap priority — [references/genre-template-scaffolds.md](references/genre-template-scaffolds.md).
96
97## Reference
98
99> Progressive disclosure: open Official Documentation links only when researching a specific API; load Related Skills when routing to a peer domain — do not preload the whole lattice.
100
101### Official Documentation
102- [Project organization](https://docs.godotengine.org/en/stable/tutorials/best_practices/project_organization.html) — Feature-folder layouts, `.gdignore`, and VCS hygiene that genre boilerplates should bake in from day one.
103- [Scene organization](https://docs.godotengine.org/en/stable/tutorials/best_practices/scene_organization.html) — Ownership boundaries for `entities/`, `levels/`, and UI scenes so templates stay refactor-safe.
104- [Singletons (Autoload)](https://docs.godotengine.org/en/stable/tutorials/scripting/singletons_autoload.html) — Registering lean GameManager / Audio / SceneTransitioner services that survive scene changes.
105- [Autoloads versus regular nodes](https://docs.godotengine.org/en/stable/tutorials/best_practices/autoloads_versus_regular_nodes.html) — When a Subsystem Locator or scene-local node beats a monolithic God singleton.
106- [Background loading](https://docs.godotengine.org/en/stable/tutorials/io/background_loading.html) — `ResourceLoader.load_threaded_*` patterns used by level streamer templates.
107- [Pausing games](https://docs.godotengine.org/en/stable/tutorials/scripting/pausing_games.html) — Process modes so pause menus stay alive while gameplay freezes.
108- [Multiple resolutions](https://docs.godotengine.org/en/stable/tutorials/rendering/multiple_resolutions.html) — Stretch mode/aspect defaults (`canvas_items` / `expand`) every new project template should document.
109- [Feature tags](https://docs.godotengine.org/en/stable/tutorials/export/feature_tags.html) — `OS.has_feature()` profiles for mobile/PC/server overrides in platform config templates.
110- [Exporting packs (PCK)](https://docs.godotengine.org/en/stable/tutorials/export/exporting_pcks.html) — Modular DLC / patch mounts via `ProjectSettings.load_resource_pack()`.
111- [Using controllers and gamepads](https://docs.godotengine.org/en/stable/tutorials/inputs/controllers_gamepads_joysticks.html) — Default Input Map actions and deadzone tuning for multi-platform templates.
112- [Text-to-speech](https://docs.godotengine.org/en/stable/tutorials/audio/text_to_speech.html) — DisplayServer TTS hooks for accessibility manager scaffolding.
113- [Internationalizing games](https://docs.godotengine.org/en/stable/tutorials/i18n/internationalizing_games.html) — Translation contexts so UI strings in menus/HUD avoid ambiguous keys.
114
115### Related Skills
116
117#### Prerequisites
118- [godot-project-foundations](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-project-foundations/SKILL.md) — Folder hygiene, naming, and import basics before copying a genre skeleton into a real repo.
119- [godot-gdscript-mastery](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-gdscript-mastery/SKILL.md) — Typed base classes, virtual hooks, and signal style used by every template script here.
120
121#### Complements
122- [godot-autoload-architecture](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-autoload-architecture/SKILL.md) — Boot order and ownership rules once BootstrapConfig / GameManager Autoloads leave the template stage.
123- [godot-scene-management](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-scene-management/SKILL.md) — Production scene swaps and load queues that deepen the level streamer boilerplate.
124- [godot-input-handling](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-input-handling/SKILL.md) — Full action maps, device routing, and remapping beyond MultiPlatformInput scaffolding.
125- [godot-state-machine-advanced](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-state-machine-advanced/SKILL.md) — Hierarchical / visual FSM patterns that extend SceneStateMachine and StateMachineNode.
126- [godot-export-builds](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-export-builds/SKILL.md) — Export presets, VRAM compression, and CI headless flags assumed by Standard-Export-Presets templates.
127- [godot-signal-architecture](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-signal-architecture/SKILL.md) — Typed EventBus patterns when templates grow past direct GameManager signals.
128- [godot-ui-containers](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-ui-containers/SKILL.md) — Anchor/container layouts for BaseMenu and HUD scenes instead of floating-point pixel drift.
129- [godot-adapt-desktop-to-mobile](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-adapt-desktop-to-mobile/SKILL.md) — Touch, safe-area, and mobile feature-tag profiles that PlatformFeatureConfig only stubs.
130
131#### Downstream / consumers
132- [godot-genre-platformer](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-genre-platformer/SKILL.md) — Fills the 2D platformer directory skeleton with movement, coyote time, and level flow.
133- [godot-genre-action-rpg](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-genre-action-rpg/SKILL.md) — Combat, inventory, and quest systems that plug into the top-down RPG template folders.
134- [godot-genre-shooter-fps](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-genre-shooter-fps/SKILL.md) — Weapons, hit detection, and camera feel layered on the 3D FPS player scaffold.
135
136#### Master
137- [godot-master](https://github.com/thedivergentai/gd-agentic-skills/blob/main/skills/godot-master/SKILL.md) — Library router and mirrored module entry for cross-skill discovery.