mcpField
G
game-programming-languages

game-programming-languages

github.com/pluginagentmarketplace開発4578 回インストール42 週間前に更新
リポジトリ

game-programming-languages について

ゲーム開発を学ぶ人向けの言語ガイドです。UnityのC#、Unreal EngineのC++、GodotのGDScriptを比較し、コード例や学習手順、実践的な指針を示します。

主な機能

  1. 013種類のゲーム開発言語を比較
  2. 02Unity・Unreal Engine・Godotのテンプレート
  3. 03言語の特性とメモリ管理を整理
  4. 04学習手順とコーディング慣行を紹介
  5. 05ガベージコレクションの問題への対処

活用シーン

  1. 01ゲームプロジェクトで使う言語の選定
  2. 02Unity・Unreal Engine・Godot開発の学習
  3. 03C#ゲームコードのメモリ割り当ての最適化

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/game-programming-languagesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

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

詳細

ゲームプログラミング言語

C#(Unity)

最も学びやすく、ゲーム開発で最も広く使われています

// ✅ 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();
    }
}

主な機能:

  • オブジェクト指向、メモリ管理は自動
  • データクエリ用の LINQ
  • 非同期のゲームロジックに使うコルーチン
  • イベントとデリゲート
  • ガベージコレクション(最適化が必要です)

学習期間:基本を習得するのに 2〜3 週間、熟達するのに 2〜3 か月

C++(Unreal Engine)

最も強力で、学習難易度が最も高い言語です

// ✅ 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();
};

主な機能:

  • 手動メモリ管理(スマートポインター)
  • テンプレートと STL
  • 最高のパフォーマンス
  • Unreal のリフレクションシステム(UPROPERTY、UFUNCTION)
  • Blueprint との統合

学習期間:基本を習得するのに 4〜6 週間、実用レベルに達するのに 4〜6 か月

GDScript(Godot)

Python に似ており、構文が最も簡単です

# ✅ 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()

主な機能:

  • 型ヒントを任意で指定できる動的型付け
  • シンプルで Python に似た構文
  • メッセージング用のシグナル
  • 第一級関数
  • 拡大を続けるエコシステム

学習期間:基本を習得するのに 1〜2 週間、実用レベルに達するのに 4〜8 週間

言語の比較

特徴C#(Unity)C++(Unreal)GDScript
メモリ自動管理(GC)手動自動管理
速度高速最速中程度
学習難易度中程度難しい簡単
型付け静的静的動的
業界での用途モバイル/インディーAAAインディー

🔧 トラブルシューティング

┌─────────────────────────────────────────────────────────────┐
│ 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                             │
└─────────────────────────────────────────────────────────────┘

ベストプラクティス

プラクティスメリット
命名規則を統一するコードが読みやすくなります
早期リターンを使うネストを減らせます
継承よりコンポジションを優先する柔軟な設計が可能になります
頻繁に使う値をキャッシュするパフォーマンスが向上します

このスキルの活用場面:ゲームプログラミング言語を学ぶときや、コードを最適化するとき。

コメント