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
gettree().paused without process-mode groups — Pause menus need PROCESSMODEALWAYS. 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 [basemenu.gd](scripts/basemenu.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.MOUSEMODECAPTURED 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.loadthreadedrequest().
Golden Path
- Bootstrap — MANDATORY [bootstrapconfig.gd](scripts/bootstrapconfig.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 (advancedplatformercontroller.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 |
[basegamemanager.gd](scripts/basegamemanager.gd), [baselevel.gd](scripts/baselevel.gd), [baseactor.gd](scripts/baseactor.gd), [scenestatemachine.gd](scripts/scenestatemachine.gd), [statemachinenode.gd](scripts/statemachinenode.gd) |
godot-genre-platformer |
| Top-down / action RPG |
Same bases + [subsystemlocator.gd](scripts/subsystemlocator.gd), [basemenu.gd](scripts/basemenu.gd) |
godot-genre-action-rpg |
| 3D FPS / shooter |
Bases + [multiplatforminput.gd](scripts/multiplatforminput.gd), [platformfeatureconfig.gd](scripts/platformfeatureconfig.gd) |
godot-genre-shooter-fps |
| Any genre + DLC packs |
[modulardlcloader.gd](scripts/modulardlcloader.gd) |
Genre skill + godot-export-builds |
| Cross-platform input/features |
[multiplatforminput.gd](scripts/multiplatforminput.gd), [platformfeatureconfig.gd](scripts/platformfeatureconfig.gd) |
godot-input-handling |
| Threaded level streaming |
[levelsteamermanager.gd](scripts/levelsteamermanager.gd) |
godot-scene-management |
| Accessibility TTS |
[accessibilityttsmanager.gd](scripts/accessibilityttsmanager.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 [subsystemlocator.gd](scripts/subsystemlocator.gd) for modular registration; keep a thin bootstrap Autoload only.
Bootstrap order
MANDATORY [bootstrapconfig.gd](scripts/bootstrapconfig.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 PROCESSMODEALWAYS. Wire via [basemenu.gd](scripts/basemenu.gd).
PCK / DLC
MANDATORY [modulardlcloader.gd](scripts/modulardlcloader.gd) for ProjectSettings.loadresourcepack() mounts — never hand-roll path hacks in gameplay code.
Feature tags
MANDATORY [platformfeatureconfig.gd](scripts/platformfeatureconfig.gd) for OS.hasfeature() / export-tag forks (mobile, lowend, 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](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.loadthreaded_* patterns used by level streamer templates.
- Pausing games — Process modes so pause menus stay alive while gameplay freezes.
- Multiple resolutions — Stretch mode/aspect defaults (
canvasitems / expand) every new project template should document.
- Feature tags —
OS.hasfeature() profiles for mobile/PC/server overrides in platform config templates.
- Exporting packs (PCK) — Modular DLC / patch mounts via
ProjectSettings.loadresource_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.