Unity MCP「uLoopMCP」を使ってゲームを作ってみる
はじめに
1年ほど前に Unity の MCP を使ってゲーム制作を試みましたが、結果としては失敗に終わりました。
最近、優秀な Unity MCP である「uLoopMCP」が公開されましたので、あらためて挑戦してみました。
インストール
Unity Editorを開き、Edit -> Project Settings -> Package ManagerからOpenUPMを登録します
Name: OpenUPM
URL: https://package.openupm.com
Scope(s): io.github.hatayama.uloopmcp
org.nuget
Scope(s)にはio.github.hatayama.uloopmcpとorg.nugetを登録しておきます。

次にWindow -> Package Manager -> My Registries -> OpenUPMと開きuLoopMCPをインストールします

さらに拡張機能を有効にするためにMicrosoft.CodeAnalysis.CSharpもインストールしておきます

環境設定
Window → uLoopMCP から uLoopMCP の設定画面を開きます。
使用したい LLM 向けの設定ファイルを自動生成できます。
Target で利用する LLM を選択し、赤枠のボタンを押すと設定ファイルが作成されます。

Security Settings を開き、Menu Item などを MCP から実行できるように設定します。
Security Level は Restricted または FullAccess に設定します。

Start Server ボタンを押し、接続が成功すると Connected LLM Tools にツールが表示されます。
うまくいかない場合は、Unity の再起動などを試してみてください。

接続確認
MCP経由でUnityプロジェクトのシーンの内容が見えてますか?
と聞いてみると
はい、MCP経由でシーンの内容は見えています。
今取得したヒエラルキーは次のとおりです。
シーン: SampleScene(エディタ上)
ルートオブジェクト数: 3、最大深度: 0
| オブジェクト名 | アクティブ | 主なコンポーネント |
|---|---|---|
| Main Camera | ✓ | Transform, Camera, AudioListener, UniversalAdditionalCameraData |
| Directional Light | ✓ | Transform, Light, UniversalAdditionalLightData |
| Global Volume | ✓ | Transform, Volume |
MCPの get-hierarchy で、シーン名・ルートオブジェクト・コンポーネント一覧・タグ・レイヤー・親子関係などを取得できます。
find-game-objects で特定のコンポーネントやタグで検索したり、capture-window で Game ビューなどをスクショして見ることもできます。

シーンの状態が見えており接続確認ができました。
ゲームを作ってみる
まず ChatGPT でゲーム画面のイメージを作成し、その後 Cursor の Plan モードで仕様書を作成してから、ブロック崩しを実装してみました。

一度の生成でここまで作ってくれましたが、ボールが反射しない問題がありました。

その後いくつか修正を指示し、最終的には一応遊べる状態になりました。
(ボールの反射がやや不自然ではありますが…)

今回工夫した点は、以下のとおりです。
- 仕様書を Markdown で明確に記述してから作業を開始したこと
- uGUI ではなく、AI が扱いやすいとされる UI Toolkit を採用したこと
- 進捗・状況メモを残す運用にしたこと
進捗メモを残すことで、作業を途中で中断しても再開しやすくなります。また、LLM を切り替えた場合でも、前の AI の作業内容を把握できるため、スムーズな引き継ぎが可能になります。
下記は仕様書の抜粋です。
# ブロック崩しゲーム 仕様書
本ドキュメントは、アーケード風ブロック崩しゲームを Unity で実装するための仕様を定義する。開発者および Cursor 等の AI ツールが参照しやすいよう Markdown で記述する。
- **進捗・状況メモ(作業再開用):** [block-breaker-progress.md](./block-breaker-progress.md) — 実行したこと・うまくいったこと・うまくいかなかったこと・次のステップを記録。AI が途中から再開するときに参照する。
**参照画像(目標画面):**

## 1. 概要・目的
| 項目 | 内容 |
|------|------|
| ゲーム種類 | アーケード風ブロック崩し(Breakout / Arkanoid 系) |
| プラットフォーム | Unity |
| 仕様書の読み手 | 開発者、Cursor 等の AI 支援ツール |
| 参照画像 | [docs/game.png](./game.png) |
レトロなピクセルアート風 UI と、光沢・立体感のあるゲームオブジェクトを組み合わせたビジュアルを目指す。
---
## 2. 画面構成・レイアウト
### 2.1 外枠(フレーム)
| 項目 | 仕様 |
|------|------|
| 見た目 | 銀色のメタリックフレーム。上下の水平バーと左右の垂直な柱で構成。ブロック状に分割された立体感のあるデザイン。 |
| 扱い | デコレーション(UI または背景スプライト)として実装。当たり判定には含めない。 |
| 備考 | フレームは UI Toolkit の Panel 上に VisualElement(背景画像やボーダー)で描く。要検討: ワールド空間スプライトで描く場合はゲームプレイ用のみ。 |
### 2.2 領域分割
| 領域 | 説明 |
|------|------|
| 上部 UI エリア | スコア・残機表示。銀色のバーでゲームプレイエリアと区切る。 |
| 中央ゲームプレイエリア | ブロック・ボール・パドルを配置するメイン領域。背景は暗いチャコールグレー+テクスチャ。 |
| 下部 | パドル配置域。その下にフレームの下端バー。 |
### 2.3 解像度・アスペクト比
| 項目 | 内容 |
|------|------|
| 解像度 | TBD(例: 1920x1080 または 16:9 固定) |
| アスペクト比 | 横長を推奨。縦横比は要検討。 |
---
## 3. UI 仕様
**UI 実装方針: UI Toolkit を使用すること。** uGUI(Canvas + Image/Text 等)はレイアウトやスタイルの調整が煩雑になりやすいため、本プロジェクトでは UI Toolkit(UIDocument, UXML, USS)でスコア・残機・フレーム等の UI を実装する。
### 3.1 スコア表示
| 項目 | 仕様 |
|------|------|
| 位置 | 画面左上 |
| 表示形式 | `SCORE xxxxx`(5 桁ゼロパディング、例: SCORE 02370) |
| フォント | ピクセルアート風。輪郭をはっきりさせる。 |
| 色 | 黄〜オレンジ系(例: #E8A030 など、要調整) |
| サイズ | 実装時に視認性で調整。 |
### 3.2 残機表示
| 項目 | 仕様 |
|------|------|
| 位置 | 画面右上 |
| 表示形式 | `LIVES` ラベル + ハートアイコン × 残機数(例: 3) |
| フォント | スコアと同系統のピクセルアート風。黄色系。 |
| ハート | 赤、光沢・立体感あり。アイコンアセットまたはスプライトで用意。 |
### 3.3 UI 共通
- フォント・色・サイズは [game.png](./game.png) を参照して実装時に合わせる。
- **UI Toolkit** で実装する。UIDocument をシーンに配置し、UXML でレイアウト・USS でスタイルを定義する。推奨パス: `Assets/UI/`(UXML, USS, フォント等)。
---
まとめ
uLoopMCP を活用することで、最終的にゲームを完成させることができました。
MCP を活用した開発フローは、今後さらに発展していく可能性があると感じています。
興味のある方は、ぜひ一度導入して試してみてください。
Discussion