Grid Placement

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/ (especially RefCounted cases)

What does NOT belong here

  • Large feature logic that is specific to one subsystem
    • Prefer gdscript/grid_building/systems/** for subsystem runtime behavior
  • Demo-only helpers and fixtures
    • Prefer demo test trees (demos/grid_building_dev/.../test/**) or test helpers
  • 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

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.gd is 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)