GDScript core/ folder boundary (GridBuilding 5.0 / 5.1)
This note defines what plugins/gameplay/GridPlacement/gdscript/grid_building/core/ means in the 5.0/5.1 GDScript track.
Intent
gdscript/grid_building/core/ is the engine-facing foundation layer for the legacy GDScript addon.
It exists to centralize:
- Base classes and conventions used across the addon (nodes/systems/resources)
- Context objects (owner/user/mode/systems)
- Composition/config/state “bundle” resources
- Small internal factories where Godot cannot auto-wire dependencies
- Logging utilities used by multiple systems
It is not intended to be a 1:1 mirror of the 6.0+ C# cs/Core/ tree.
What belongs here
- Base types
base/(e.g. injectable/system/node/resource patterns)
- Contexts
contexts/(owner/user/mode/system contexts and bundles)
- Composition & configuration resources
resources/(settings/templates/states/config container resources)
- Internal utilities that are shared across systems
logging/,placeables/,internal/
- Explicit factories for hard-to-inject instances
factories/(especiallyRefCountedcases)
What does NOT belong here
- Large feature logic that is specific to one subsystem
- Prefer
gdscript/grid_building/systems/**for subsystem runtime behavior
- Prefer
- Demo-only helpers and fixtures
- Prefer demo test trees (
demos/grid_building_dev/.../test/**) or test helpers
- Prefer demo test trees (
- New “domain core” APIs meant to be shared cross-engine
- That belongs in 6.0 C# (
cs/Core/**) first, then adapted into GDScript only if needed for 5.1 maintenance
- That belongs in 6.0 C# (
Relationship to the C# version
- C# 6.0+ uses ServiceRegistry / explicit DI as the canonical composition model.
- GDScript 5.1 keeps the InjectorSystem + CompositionContainer model for simplicity.
- Similar naming (contexts/resources/factories) is intentional symmetry, not strict parity.
If you are looking for cross-version type mapping, start here:
docs/6.0/Core/GRIDBUILDING_CLASS_MAPPING.md
Known stubs / cleanup notes
gdscript/grid_building/core/GBGrid.gdis currently an empty stub (0 bytes).- Follow-up options:
- Implement it (if still referenced by consumers)
- Or remove it and update references (preferred if unused)
- Follow-up options: