Unity MCP で TPS ゲームを Claude Code に改造させたら何が起きたか

Unity MCP で TPS ゲームを Claude Code に改造させたら何が起きたか

Unity 公式 MCP パッケージを使って TPS ゲームのシーン改造を Claude Code に任せた検証記録です。ステージ追加、ライティング調整、カスタムツール作成の 3 タスクで AI の限界を探りました。
2026.03.08

はじめに

Unity が公式にリリースした MCP (Model Context Protocol) パッケージ com.unity.ai.assistant を使うと、Claude Code のような AI エージェントから Unity Editor を直接操作できます。本記事では、このパッケージを Claude Code と組み合わせて TPS (Third Person Shooter) テンプレートのシーン改造を AI に任せ、どこまで実用に耐え、どの段階で人手によるレビューが必要になるかを検証しました。

GUI 上で人間がマウスを使って行ってきた作業を、AI にテキストで指示するとどうなるのか。3 つのタスクを通じて、その現在地を確認します。

検証環境

項目 バージョン / 内容
Unity 6000.3.10f1 (LTS)
Unity MCP com.unity.ai.assistant 2.0.0-pre.1
AI Claude Code + Claude Opus 4.6
OS Windows 11
テンプレート Multiplayer Third Person Gameplay

対象読者

  • Unity を使ったことがある、またはゲーム開発に関心があるエンジニア
  • MCP や AI エージェントの動向に興味があり、実際の使い勝手を知りたい方
  • AI によるゲーム開発支援の可能性と限界を把握したい方

参考

Unity MCP のセットアップ

Unity MCP は、Unity Editor と外部の AI エージェントを MCP で接続するパッケージです。Claude Code からの指示は、リレーバイナリと MCP ブリッジを経由して、Unity Editor が公開している MCP ツール呼び出しとして処理されます。

セットアップは 3 ステップです。

  1. Unity Package Manager から com.unity.ai.assistant をインストールする

package manager

  1. Claude Code 側で claude mcp add コマンドを実行し、リレーバイナリを MCP サーバーとして登録する

registered mcp

  1. Unity Editor の Project Settings > AI > Unity MCP で、接続リクエストを承認する

connection request dialog

検証 1: ステージレイアウトの自動生成

Shooter シーンの北端に新しい部屋を追加するよう AI に指示しました。

AI への指示内容
Shooter シーンの北端 (Z+ 方向) に新しい部屋を追加してください。
壁、床、天井、ドアウェイを含む構造で、既存マップと接続してください。

AI は壁、床、天井、ドアウェイ、柱、高台、スロープの計 12 オブジェクトを生成しました。

before

追加前

after

追加後

inside of room

部屋の内部

検証結果

目視で確認したところ、以下の問題が見つかりました。

  • マテリアルの不統一
    全オブジェクトが URP デフォルトの Lit マテリアルで、既存マップとの統一感がありません。元のマップにあるフレームやブルーのラインは再現されておらず、AI が配置したオブジェクトは一目で判別できる状態でした。

  • ドアウェイの接続不良
    ドアウェイの位置に既存の壁が存在しており、部屋に侵入できませんでした。Play モードで歩き回りましたが、入り口が見つかりません。
    play mode screenshot

  • 部屋内の暗闇
    天井付きの部屋に対してライトがひとつも配置されておらず、内部は真っ暗でした。

  • スケールの不一致
    隣接する壁に対して部屋が大きすぎます。既存マップと比べると、寸法感やディテール密度に明確な差がありました。

  • Static Editor Flags の未設定
    既存オブジェクトでは複数の Static Editor Flags が Everything (=有効) でしたが、AI が追加したオブジェクトではすべて無効でした。これにより、GI や静的バッチング、オクルージョンカリングなど、既存シーンが前提としている静的最適化から外れる可能性があります。

考察

AI はジオメトリの配置自体はできましたが、既存環境との接続やアート面の整合が取れていません。ログを確認したところ、AI はマルチアングルビュー (Isometric, Front, Top, Right の外部 4 視点) を 1 回撮影しただけで、天井のある部屋の内部にカメラを移動していませんでした。人間であれば当然カメラを部屋の中に入れて確認しますが、今回の挙動ではその確認手順が選択されませんでした。 外側からの俯瞰だけでは、ライトの不在や侵入不可といった問題には気づけません。

capture by unity-mcp

AI が撮影したマルチアングルビュー。外部 4 視点からの俯瞰のみで、部屋内部は映っていない

検証 2: ライティングとポストプロセスの調整

シーンを「夜間戦闘モード」に変更するよう AI に指示しました。

AI への指示内容
Shooter シーンを夜間戦闘モードに変更してください。
Directional Light の減光、アンビエントカラーの調整、フォグの追加、
ポストプロセス (Bloom, ColorAdjustments, Vignette 等) を適用してください。

AI は以下のパラメータを適用しました。

パラメータ 設定値
Directional Light intensity 0.15, 青みがかった月光色
Ambient Flat モード, intensity 0.3
Fog ExponentialSquared, density 0.03
Bloom intensity 3.5, threshold 0.3, scatter 0.9
ColorAdjustments postExposure -2.5, contrast 40, saturation -30
Vignette intensity 0.55
LiftGammaGain 青寄りに調整
全ポイントライト 30% に減衰

before

適用前

after

適用後

このタスクで興味深かったのは、AI の自己評価と人間の目視評価に大きなギャップがあった点です。AI は Camera Capture で撮影した画像を確認し、「ほぼ完全な暗闇で致命的な破綻がある」と自己評価しました。しかし、人間が実際に Play モードで確認すると、印象はかなり異なりました。壁や的などのオブジェクトは視認可能で、操作に支障はありません。Camera Capture の結果と Game View の見え方には差があったのです。

capture by unity-mcp

AI が Camera Capture で撮影した画像。中央に青い光のスリットが見えるだけで、ほぼ真っ黒

検証結果

AI の自己評価ほど壊滅的ではありませんでしたが、「夜間」としての品質には問題がありました。

  • スカイボックスが昼のまま
    ステージは暗くなっていますが、空は明るい青空のままです。星もなく、見上げると昼間にしか見えません。これは「夜」ではなく「黒いステージ」という印象です。
    night stage overview
    night stage sky

  • フォグが機能していない
    パラメータ上はフォグを設定していますが、実際のステージ内では効果が感じられません。夜にしては遠方まで見通せてしまいます。

  • エフェクトの二重掛け
    AI は複数の減光手段を同時に適用しており、結果として暗さが過剰になっていました。全ライトを 30% に減衰させた上で postExposure -2.5 を適用しているため、効果が二重に掛かっています。人間であればひとつ変更するたびに画面を確認して微調整しますが、AI はそのような段階的な調整を行いませんでした。一方で、Bloom によるにじみは的の光を際立たせており、発光感は出ていました。部分的には意図した効果が得られています。

考察

AI が Camera Capture で真っ黒に見えた画像と、人間が Play モードで見た画面にギャップがあった事実は、AI による Unity 操作の本質的な課題を示しています。AI は Camera Capture という限られた視点でしかシーンを評価できず、実際のゲーム画面の見え方とは乖離が生じます。また、スカイボックスの変更を忘れるといった「全体の雰囲気を構成する要素の抜け漏れ」は、パラメータの数値調整だけでは対処できない問題です。

検証 3: カスタム MCP ツールの作成

Unity MCP では [McpTool] 属性を使って独自のツールを登録できます。検証 1・2 で見つかった問題を自動検出するシーン品質チェックツールを AI に作成させました。

AI への指示内容
Unity MCP のカスタムツールとして、シーン内の品質チェックツールを作成してください。
[McpTool] 属性を使い、コリジョン漏れ、デフォルトマテリアル使用、
ライティング異常、物理設定異常、到達不能エリアを自動検出する機能を実装してください。

AI は SceneQualityChecker クラスを作成し、5 つのチェック項目を実装しました。今回は簡易検証のため、デフォルトマテリアル判定はマテリアル名ベースのヒューリスティックで実装しています。

SceneQualityChecker.cs (抜粋)
using Unity.AI.MCP.Editor.ToolRegistry;

public static class SceneQualityChecker
{
    [McpTool("Scene_QualityCheck",
        "Run automated quality checks on the active scene. " +
        "Detects missing colliders on visible meshes, " +
        "unreachable areas, lighting anomalies, " +
        "and objects with default materials.")]
    public static object RunQualityCheck()
    {
        var issues = new List<object>();

        CheckMissingColliders(issues);
        CheckDefaultMaterials(issues);
        CheckLightingAnomalies(issues);
        CheckFloatingObjects(issues);
        CheckUnreachableRenderers(issues);

        return new { totalIssues = issues.Count, issues };
    }

    // 例: デフォルトマテリアルの検出
    static void CheckDefaultMaterials(List<object> issues)
    {
        var renderers = Object.FindObjectsByType<MeshRenderer>(
            FindObjectsSortMode.None);
        foreach (var r in renderers)
        {
            if (!r.gameObject.activeInHierarchy) continue;
            if (r.sharedMaterial == null) continue;
            string matName = r.sharedMaterial.name;
            if (matName == "Lit" ||
                matName == "Default-Material" ||
                matName == "Default-Diffuse")
            {
                issues.Add(new
                {
                    category = "DefaultMaterial",
                    severity = "info",
                    objectName = r.gameObject.name,
                    objectPath = GetGameObjectPath(r.gameObject),
                    materialName = matName,
                    message = "Object uses a default/placeholder material"
                });
            }
        }
    }
}

検証結果

ツール自体は正常に動作しました。Unity MCP の Tools 一覧に Scene_QualityCheck として登録され、Claude Code から呼び出せます。

added tool

元のシーンに対して実行すると検出 0 件でした。検証 1 で AI が追加した部屋を含むシーンに対しては、デフォルトマテリアル 12 件を正しく検出しました。ただし、実用性には課題が残ります。今回 AI に作成させたツールには人間向けの操作 UI を実装しておらず、チェック項目の ON/OFF にはソースコードの編集が必要です。

考察

[McpTool] 属性によるカスタムツール登録は、AI エージェントの「目」を拡張する手段としては有用です。しかし、今回のツールではチェック項目がソースコードにハードコードされており、状況に応じた柔軟な運用ができません。 たとえば「今回はマテリアルのチェックだけ重点的に見たい」「このオブジェクトは例外として除外したい」といった判断を人間がはさむ余地がないのです。

ヒューマンインザループの構成とするには、チェック項目の選択や閾値の調整を Unity Editor の Inspector や専用ウィンドウから操作できるようにし、AI はその設定に従ってチェックを実行する形が考えられます。少なくとも今回参照した Unity MCP のツール登録機構には、Inspector や EditorWindow と自動的に結び付く仕組みは見当たりませんでした。実現するには、カスタムツールと Editor 拡張を組み合わせて自前で構築する必要があります。

まとめ

3 つのタスクを通じて、AI による Unity 操作の現在地が見えてきました。

  • AI にできること
    プリミティブの配置、ライティングパラメータの変更、C# コードの生成といった「作業」の実行は問題なくこなせます。MCP 経由で Unity Editor の API を呼び出す技術基盤は十分に機能しています。

  • AI にできないこと
    既存環境との視覚的な整合や「夜の雰囲気」のような、人間の感覚に依存する品質判断はまだ難しいです。AI が Camera Capture で撮影した画像と、人間が Play モードで見た画面にギャップがあった事実は、この課題を示しています。

  • 現実的なワークフロー
    現時点では「AI 単独で完結」ではなく「人間がレビューしながら AI に作業させる」形が現実的です。AI に粗い作業を任せ、人間が目視で確認して修正を指示する。Unity MCP のカスタムツールを活用すれば、AI の自己チェック能力を底上げすることもできます。

Unity MCP 自体は拡張性の高いツールです。AI エージェントの能力が向上するにつれて、このワークフローの実用性も上がっていくでしょう。

この記事をシェアする

FacebookHatena blogX

関連記事