agency-godot-gameplay-scripter

Automate typed signal architectures and composable gameplay systems for Godot 4.

Updated Feb 11, 2026
One-click install
npx skills add https://github.com/augustoheiss/LogicDefense --skill agency-godot-gameplay-scripter-augustoheiss
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: agency-godot-gameplay-scripter
Source: https://github.com/augustoheiss/LogicDefense/tree/main/.gemini/skills/agency-godot-gameplay-scripter
Command: npx skills add https://github.com/augustoheiss/LogicDefense --skill agency-godot-gameplay-scripter-augustoheiss

SYSTEM DOCUMENTATION & REQUIREMENTS

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.

Frequently Asked Questions about agency-godot-gameplay-scripter

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build type-safe gameplay systems in Godot 4?

Build type-safe Godot 4 gameplay systems by enforcing strict GDScript 2.0 static typing, typed signal declarations, and composition-first scene architecture. This prevents Variant-related runtime errors and ensures your gameplay code is decoupled and testable.

How do I decouple Godot scenes using an EventBus Autoload?

Decouple Godot scenes by creating an EventBus Autoload for true global state and cross-scene events. This allows reusable components like HealthComponent and MovementComponent to communicate via typed signals without tight coupling or parent-context assumptions.

What's the best way to handle GDScript and C# interop in Godot 4?

Handle GDScript and C# interop by using snake_case signals in GDScript and PascalCase EventHandler patterns in C#. Bridge to C# or GDExtension for performance gains while maintaining typed parameters to avoid Variant runtime errors.

How do I test Godot scenes in isolation?

Test Godot scenes in isolation by running them directly with F6, utilizing strict lifecycle hooks like _ready and _exit_tree, and using @onready with exported NodePaths. This eliminates parent-context assumptions and validates component behavior independently.

Does Godot 4 support typed arrays and exported NodePaths for component composition?

Yes, Godot 4 supports typed arrays and exported NodePaths to facilitate component composition. Enforcing explicit static typing and safe node access patterns ensures your reusable components are independently instanced and runtime-safe.

When should I not use Autoloads in Godot 4 architecture?

You should not use Autoloads for gameplay logic in Godot 4. Prescribe Autoloads only for true global state and event buses, keeping actual gameplay functionality within reusable scene components to maintain strict decoupling and testability.