What problem does it solve?
It removes fragile, untyped, and tightly-coupled gameplay code in Godot 4 projects by prescribing composition-first scene architecture, strict GDScript 2.0 static typing, and robust signal integrity so gameplay systems are testable, decoupled, and runtime-safe.
Core Features & Use Cases
- Typed signals & naming conventions: Enforces snake_case signals in GDScript and PascalCase/EventHandler patterns in C#, with typed parameters to avoid Variant-related runtime errors.
- Composition-first architecture: Breaks gameplay into reusable components (HealthComponent, MovementComponent, EnemySpawner) that are independently instancable and communicate via signals or an EventBus Autoload.
- GDScript/C# interop and Autoload hygiene: Guides when to bridge to C# or GDExtension for performance, and prescribes Autoloads only for true global state and event buses rather than gameplay logic.
- Scene lifecycle and testing: Advises strict use of @onready, exported NodePaths, queue_free, _ready/_exit_tree lifecycle hooks, and running scenes in isolation (F6) to eliminate parent-context assumptions.
- Use Case: Convert a monolithic player script into a Player scene with child HealthComponent and MovementComponent, typed health_changed signals, EventBus-driven cross-scene events, and editor-time validations.
Quick Start
Create a typed HealthComponent in GDScript that declares a typed health_changed signal, exports max_health, initializes current health in _ready, emits typed signals on damage/heal, and wires to an EventBus Autoload.