mcpField
G
game-programming-languages

game-programming-languages

github.com/pluginagentmarketplaceDevelopment4578 installsUpdated 42w ago
Repository

About game-programming-languages

A reference for people learning game development that compares C# for Unity, C++ for Unreal Engine, and GDScript for Godot, with code templates, learning paths, and practical guidance.

Key features

  1. 01Compares three game programming languages
  2. 02Includes Unity, Unreal Engine, and Godot templates
  3. 03Summarizes language features and memory handling
  4. 04Outlines learning paths and coding practices
  5. 05Offers guidance on garbage collection issues

Use cases

  1. 01Choosing a language for a game project
  2. 02Learning Unity, Unreal Engine, or Godot development
  3. 03Optimizing memory allocation in C# game code

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-game-developer --skill game-programming-languages

After installing, type/game-programming-languagesin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

assets/
languages_config.yaml
references/
LANGUAGES_GUIDE.md
scripts/
lang_selector.py

Details

From the project README

Game Programming Languages

C# (Unity)

Easiest to learn, most used for game dev

// ✅ Production-Ready: Unity MonoBehaviour Template
public class GameEntity : MonoBehaviour
{
    [SerializeField] private float _speed = 5f;
    [SerializeField] private int _health = 100;

    public event Action<int> OnHealthChanged;
    public event Action OnDeath;

    private Rigidbody _rb;
    private bool _isInitialized;

    private void Awake()
    {
        _rb = GetComponent<Rigidbody>();
        _isInitialized = true;
    }

    public void TakeDamage(int amount)
    {
        if (!_isInitialized) return;

        _health = Mathf.Max(0, _health - amount);
        OnHealthChanged?.Invoke(_health);

        if (_health <= 0)
            OnDeath?.Invoke();
    }
}

Key Features:

  • Object-oriented, managed memory
  • LINQ for data queries
  • Coroutines for async game logic
  • Events and delegates
  • Garbage collection (requires optimization)

Learning Path: 2-3 weeks basics, 2-3 months mastery

C++ (Unreal Engine)

Most powerful, steepest learning curve

// ✅ Production-Ready: Unreal Actor Template
UCLASS()
class MYGAME_API AGameEntity : public AActor
{
    GENERATED_BODY()

public:
    AGameEntity();

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats")
    float Speed = 500.0f;

    UPROPERTY(ReplicatedUsing = OnRep_Health)
    int32 Health = 100;

    UFUNCTION(BlueprintCallable, Category = "Combat")
    void TakeDamage(int32 Amount);

    DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnHealthChanged, int32, NewHealth);
    UPROPERTY(BlueprintAssignable)
    FOnHealthChanged OnHealthChanged;

protected:
    virtual void BeginPlay() override;

    UFUNCTION()
    void OnRep_Health();
};

Key Features:

  • Manual memory management (smart pointers)
  • Templates and STL
  • Maximum performance
  • Unreal reflection system (UPROPERTY, UFUNCTION)
  • Blueprint integration

Learning Path: 4-6 weeks basics, 4-6 months proficiency

GDScript (Godot)

Python-like, easiest syntax

# ✅ Production-Ready: Godot Node Template
extends CharacterBody2D
class_name GameEntity

signal health_changed(new_health: int)
signal died

@export var speed: float = 200.0
@export var max_health: int = 100

var _health: int = max_health

func _ready() -> void:
    _health = max_health

func take_damage(amount: int) -> void:
    _health = max(0, _health - amount)
    health_changed.emit(_health)

    if _health <= 0:
        died.emit()
        queue_free()

func _physics_process(delta: float) -> void:
    var direction = Input.get_vector("left", "right", "up", "down")
    velocity = direction * speed
    move_and_slide()

Key Features:

  • Dynamic typing with optional type hints
  • Simple, Python-like syntax
  • Signals for messaging
  • First-class functions
  • Growing ecosystem

Learning Path: 1-2 weeks basics, 4-8 weeks proficiency

Language Comparison

FeatureC# (Unity)C++ (Unreal)GDScript
MemoryManaged (GC)ManualManaged
SpeedFastFastestModerate
LearningModerateHardEasy
TypingStaticStaticDynamic
IndustryMobile/IndieAAAIndie

🔧 Troubleshooting

┌─────────────────────────────────────────────────────────────┐
│ PROBLEM: Garbage collection spikes in C#                   │
├─────────────────────────────────────────────────────────────┤
│ SOLUTIONS:                                                   │
│ → Use object pooling                                        │
│ → Avoid allocations in Update()                             │
│ → Cache GetComponent results                                │
│ → Use structs for small data                                │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│ PROBLEM: Memory leaks in C++                                │
├─────────────────────────────────────────────────────────────┤
│ SOLUTIONS:                                                   │
│ → Use TSharedPtr/TWeakPtr                                   │
│ → UPROPERTY for UObject pointers                            │
│ → Run memory profiler regularly                             │
└─────────────────────────────────────────────────────────────┘

Best Practices

PracticeBenefit
Consistent namingReadable code
Early returnsReduced nesting
Composition over inheritanceFlexible design
Cache frequently used valuesPerformance

Use this skill: When learning game programming languages or optimizing code.

Comments

Markdown supported