AIがGDScriptを書くとき、何を間違えるか
はじめに
Zennのトレンドを見ると、AIコーディングの話題が多いですね。Claude Code、GitHub Copilot、AIエージェントによる自動化。でもこれらの議論はほとんどWeb開発の文脈です。
ゲーム開発、特にGodotエンジンのGDScriptでは、AIコード生成は別の課題を抱えています。この記事では、ChatGPTやCopilotがGDScriptを書くとき、具体的に何を間違えるかを解説します。
1. Godot 3の文法を混ぜる
最も多い失敗です。AIのトレーニングデータにはGodot 3のチュートリアルが大量に含まれています。Godot 4では数百のAPIが変更されましたが、AIはバージョンを区別できません。
例: move_and_slide(velocity, Vector2.UP) はGodot 3の書き方です。Godot 4では move_and_slide() は引数を取りません。コンパイルは通りますが動作がおかしくなります。
2. シグナルを使わない
Godotのシグナルシステムはノード間の疎結合な通信の仕組みです。AIは代わりに直接関数呼び出し(get_node("../Player").take_damage(10))を生成します。ノードが移動するとnull参照エラーで壊れます。
3. 静的型付けを省略する
GDScriptの静的型付けを使うと最大59%の性能向上があります。でもAIはほぼ常に var speed = 200 と書き、var speed: float = 200.0 とは書きません。
4. シーンツリーを理解しない
Godotのアーキテクチャはシーンツリーが基盤です。1つのノードが1つの責務を持つ設計。AIは1ファイルにすべてのロジックを詰め込むモノリシックなスクリプトを生成します。
なぜこうなるか
GDScriptはAIトレーニングデータの中で小さい言語です。Pythonは数百万リポ、JavaScriptはさらに多い。GDScriptは数千レベル。文法がPythonに似ているため出力がもっともらしく見えますが、エンジン固有のエラーが隠れています。
GDC 2026の調査では、AIを使うゲーム開発者の74%がChatGPTを使用しています。汎用ツールで専門分野のコードを書いている状態です。
エンジン専用のAIツール(Zivaなど)は、プロジェクトのシーンツリーを読み、既存のノード構造に合うコードを生成するアプローチを取ります。プロンプトの改善ではなくコンテキストの理解が鍵です。
まとめ
AIコード生成はWeb開発では成熟していますが、ゲームエンジンではまだ課題が多い分野です。GDScriptを書かせるなら、生成されたコードのバージョン互換性、シグナル使用、型付けを必ず確認してください。
Discussion