Agent Skills: Godot C# Skill

Godot C# programming skill for .NET integration, scripting patterns, and performance optimization.

UncategorizedID: a5c-ai/babysitter/godot-csharp

Install this agent skill to your local

pnpm dlx add-skill https://github.com/a5c-ai/babysitter/tree/HEAD/plugins/babysitter/skills/babysit/process/specializations/game-development/skills/godot-csharp

Skill Files

Browse the full folder contents for godot-csharp.

Download Skill

Loading file tree…

plugins/babysitter/skills/babysit/process/specializations/game-development/skills/godot-csharp/SKILL.md

Skill Metadata

Name
godot-csharp
Description
Godot C# programming skill for .NET integration, scripting patterns, and performance optimization.

Godot C# Skill

C# programming for Godot Engine development.

Overview

This skill provides capabilities for implementing game logic using C# in Godot, leveraging .NET integration.

Capabilities

C# Integration

  • Node class inheritance
  • Attribute-based exports
  • Signal definitions
  • Callable system

.NET Features

  • NuGet packages
  • Async/await patterns
  • LINQ queries
  • .NET libraries

Interoperability

  • Call GDScript from C#
  • Expose to GDScript
  • Handle Variant types
  • Manage signals

Performance

  • Struct usage
  • Memory management
  • Object pooling
  • Span usage

Prerequisites

  • Godot 4.0+ with .NET support
  • .NET SDK installed
  • C# IDE (VS Code, Rider)

Usage Patterns

Node Script

using Godot;

public partial class Player : CharacterBody2D
{
    [Export]
    public float Speed { get; set; } = 200f;

    [Signal]
    public delegate void HealthChangedEventHandler(int newHealth);

    private int _health = 100;

    public override void _Ready()
    {
        // Initialize
    }

    public override void _PhysicsProcess(double delta)
    {
        var velocity = Vector2.Zero;
        velocity.X = Input.GetAxis("move_left", "move_right");
        velocity.Y = Input.GetAxis("move_up", "move_down");
        Velocity = velocity.Normalized() * Speed;
        MoveAndSlide();
    }
}

Signal Connection

button.Pressed += OnButtonPressed;
// or
button.Connect("pressed", Callable.From(OnButtonPressed));

Best Practices

  1. Use partial classes
  2. Leverage NuGet packages
  3. Handle node lifecycle
  4. Profile memory usage
  5. Use source generators

References