Skip to content

Plugin Overview

The Grid Building Plugin provides a flexible, data‑driven workflow for placing, validating, and manipulating objects on a 2D grid (orthogonal, isometric, or custom tile coordinate logic) in Godot 4.x.

If you’re new to Grid Building, start with these key classes:

  • Fast iteration: add new placeable object types with minimal boilerplate.
  • Strong validation model: prevent invalid placements via configurable rules.
  • Visual clarity: real‑time indicators show why a placement is valid/invalid.
  • Extensibility: systems loosely coupled through dependency injection and contexts.
  • Multi‑context readiness: support multiple players/world instances via composition containers.
  • Enhanced Validation: Validation results are exposed via ValidationResults and per‑class issue getters (e.g. get_runtime_issues() / get_editor_issues()), rather than returning Array[String] from validate()
  • Better Debugging: GBDebugSettings resource for centralized debug control
  • Improved UI: Separated clear/setup tabs, better icon scaling
  • Performance Optimizations: Reduced allocations, better caching, faster validation
  • Process Flow Documentation: Detailed ordered sequences for system interactions
  • Comprehensive Migration Guide: Step-by-step upgrade path from 4.x
  • Enhanced API Documentation: Code examples and usage patterns
  • Version Comparison Tools: Side-by-side feature comparison
SystemPurposeKey Classv5.0.0 Enhancements
IndicatorManagerBuilds rule check indicators & reports diagnosticsVisual feedback systemEnhanced validation reporting
PlacementValidatorCombines & executes placement rulesValidation engineArray[String] error details
IndicatorManagerBuilds rule check indicators & reports diagnosticsVisual feedback systemBetter debug support
BuildingSystemHigh-level interaction state & user actionsMain building nodeDependency injection
ManipulationSystemMove / rotate / flip / demolish placed itemsObject manipulationEnhanced mode support
GridTargetingSystemTracks cursor → grid conversion & snappingGrid positioningImproved responsiveness
GBInjectorSystemAuto dependency wiring for nodes exposing resolve_gb_dependenciesDependency injectionNew in v5.0.0

The plugin relies on exported resources to decouple content from logic:

All of these are surfaced through GBCompositionContainer accessor methods, ensuring a stable injection contract.

  1. Player enters build mode (ModeState / BuildingState).
  2. Targeting state updates grid position under cursor each frame.
  3. PlacementValidator assembles combined rules (global + placeable + contextual).
  4. IndicatorManager maps rules to tiles → generates RuleCheckIndicator instances (colored / shaped feedback) and returns an IndicatorSetupReport.
  5. User confirms placement → BuildingSystem spawns a persisted instance (usually via a Placeable template).
  6. ManipulationSystem enables post‑placement adjustments (move, rotate, flip, demolish) while respecting rules.

For a step-by-step breakdown see Building System Process.

Nodes opt‑in by implementing:

func resolve_gb_dependencies(p_config: GBCompositionContainer) -> void:
# Acquire only what is needed
_logger = p_config.get_logger()
_targeting_state = p_config.get_targeting_state()

This keeps most scene scripts lean, avoiding manual node path resolution.

See the dedicated Dependency Injection page.

Validation is rule‑centric. Each PlacementRule can:

  • Filter tiles
  • Test collisions / constraints
  • Provide custom failure reasons

Tile‑level rules (subclasses of TileCheckRule) produce indicators; non‑tile rules produce logical gating results only.

IndicatorSetupReport supplies a diagnostic snapshot (counts, mapped positions, owner shapes) for debugging & tests.

Add new placeable logic by:

  1. Creating a new Placeable resource referencing display & behavior settings.
  2. Adding any custom PlacementRule resources to its rule list.
  3. Optionally implementing a specialized indicator scene if visual differentiation is needed.

Add new validation by subclassing PlacementRule or TileCheckRule and ensuring your rule:

  • Exposes exported properties for tuning.
  • Implements a deterministic validate() / tile filtering contract.

GBLogger routes messages according to GBDebugSettings.level (ERROR, WARNING, DEBUG, VERBOSE). Verbose logs include injector traces and indicator setup summaries—enable during integration, disable for production builds.

GdUnit test suites cover:

  • Placement rule combinations
  • Indicator mapping correctness
  • Manipulation flows
  • Integration workflows (complex build scenarios)

Factories (e.g., UnifiedTestFactory) create injectors + containers quickly, while reports (like IndicatorSetupReport) augment assertion contexts.

Tests run both headless in CI and interactively in the Godot editor to match real usage.


Last updated: 2025-09-07


Support / Purchase Hub: Linktree – All Grid Builder Links