Unity カジュアルゲームを仕様駆動開発(Specification-Driven Development)で作成する。仕様を先に確定させ、設計・実装・テストを行うことで手戻りを最小化する。「ゲームを作って」「仕様駆動開発」「SDD」「ゲーム企画書」「機能仕様書」「技術仕様書」「テスト仕様書」「タスクリスト」「Unityゲーム開発」「カジュアルゲーム」といったリクエスト時に使用。Phase 1(企画書)からPhase 8(リリース)まで段階的にドキュメントを作成し、仕様に基づいて実装・テスト・検証を行う。
unity-remote-control
Unity ゲームに DebugManager + McpRemoteControl を実装し、エージェント(Claude Code / MCP)が Play Mode 中のゲーム状態を自動制御できるようにする。God モード、画面遷移、スコア操作を MCP から直接実行し、受け入れテストを人手なしで自動化する。「デバッグ」「DebugManager」「God モード」「MCP リモート制御」「自動テスト」「受け入れテスト自動化」といったリクエスト時、または dev-game スキルの Phase 6(DebugManager 実装)・Phase 7(テスト検証)から参照されて使用。
インストール方法を見る含まれるファイル(3)
- SKILL.md6.5 KB
- references/debug-manager-template.md6.0 KB
- references/mcp-remote-control-template.md2.8 KB
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Unity DebugManager + MCP Remote Control
目的
Unity MCP は UI ボタンクリックやキー入力をシミュレートできない。そのため、エージェントが Play Mode 中にゲーム状態を自動制御し、受け入れテストを人手なしで完了するための仕組みが必要になる。
DebugManager + McpRemoteControl はこの制約を解消し、エージェントによる以下の自動化を可能にする:
- 画面遷移(タイトル→ゲーム→ゲームオーバー→リトライ)
- God モードによるゲームオーバー回避(長時間プレイの自動検証)
- 各画面のスクリーンショット取得と目視確認
- コンソールログによるランタイムエラー検出
アーキテクチャ
[Claude Code / MCP]
│
├─ execute_menu_item("MCP/StartGame") ← Play Mode 中にメニュー経由で制御(推奨)
│ ↓
│ McpRemoteControl.cs (Editor スクリプト、[MenuItem] 属性)
│ ↓
│ GameManager.Instance.StartGame()
│
└─ manage_components → DebugManager.mcpCommand = "god_on" ← Inspector 経由で制御(代替)
↓
DebugManager.cs (ランタイムスクリプト)
↓
ProcessMcpCommand() → 各機能実行
2 つの制御経路:
- McpRemoteControl(推奨):
execute_menu_itemで直接呼び出し。レスポンスが速い - mcpCommand フィールド:
manage_componentsで文字列を設定。次フレームで実行される
実装手順
1. GameManager にデバッグ用メソッドを追加
ゲームの状態管理に応じて以下のようなメソッドを追加する:
// 例: 状態遷移
public void ForceReturnToTitle() { ChangeState(GameState.Title); }
// 例: タイマー制御(タイマーのあるゲーム)
public void SetRemainingTime(float time) { RemainingTime = time; }
// 例: スコア制御
public void SetScore(int score) { Score = score; OnScoreChanged?.Invoke(Score); }
2. DebugManager を作成
テンプレート: debug-manager-template.md
共通キーバインド(手動テスト用の補助。エージェント自動テストでは McpRemoteControl を使う):
| キー | 機能 | 有効条件 |
|---|---|---|
| F1 | デバッグ情報オーバーレイ | 常時 |
| G | God モード ON/OFF | 常時 |
| S | ゲーム開始 | Title 時 |
| R | タイトルへ帰還 | Title 以外 |
| N | 強制ゲームオーバー | Playing 時 |
| Space | リトライ | GameOver 時 |
3. McpRemoteControl を作成(Editor スクリプト)
テンプレート: mcp-remote-control-template.md
Assets/Scripts/Editor/McpRemoteControl.cs に配置。execute_menu_item から呼び出す。
4. God モードを設計・実装
God モードの目的は エージェントがゲームオーバーにならずにプレイを継続し、各種機能を自動検証できるようにする こと。
実装はゲームのジャンルやメカニクスに応じて設計する:
| ゲームジャンル | God モードで無効化する要素 | 実装例 |
|---|---|---|
| ランゲーム | 障害物との衝突死 | Physics2D.IgnoreLayerCollision + isInvincible |
| シューティング | 被弾ダメージ | isDamageable = false |
| パズル | 制限時間切れ | timerFrozen = true |
| アクション | 体力減少・落下死 | hp = Mathf.Infinity + 落下判定スキップ |
| もぐらたたき | (God モード不要) | タイマー操作で代替 |
設計原則:
- ゲームオーバー条件を無効化する — ゲームが何で終了するかを特定し、その条件をバイパスする
- ゲームプレイは維持する — スコア加算、コイン取得、レベル進行などは通常どおり動作させる
- ON/OFF を切り替えられる — God モード OFF でゲームオーバー遷移もテストできるようにする
エージェント自動テスト手順
画面遷移テスト
1. manage_editor(action="play")
2. sleep 2秒(初期化待ち)
3. manage_camera(action="screenshot", include_image=true) → タイトル画面確認
4. execute_menu_item("MCP/StartGame")
5. sleep 1秒
6. manage_camera(action="screenshot", include_image=true) → ゲーム画面確認
7. execute_menu_item("MCP/ForceGameOver")
8. sleep 2秒(ゲームオーバー演出待ち)
9. manage_camera(action="screenshot", include_image=true) → ゲームオーバー画面確認
10. execute_menu_item("MCP/RetryGame")
11. sleep 1秒
12. manage_camera(action="screenshot", include_image=true) → リトライ後確認
13. execute_menu_item("MCP/ReturnToTitle")
14. manage_camera(action="screenshot", include_image=true) → タイトル復帰確認
15. manage_editor(action="stop")
ゲームプレイ長時間テスト(God モード使用)
1. manage_editor(action="play")
2. execute_menu_item("MCP/StartGame")
3. execute_menu_item("MCP/GodMode") → ゲームオーバーを防ぐ
4. sleep 30-70秒(難易度上昇・スコア蓄積を待つ)
5. manage_camera(action="screenshot", include_image=true) → プレイ中確認
6. read_console(types=["error"]) → ランタイムエラー確認
7. execute_menu_item("MCP/GodModeOff") → God モード解除
8. sleep 数秒(ゲームオーバーを待つ)
9. manage_camera(action="screenshot", include_image=true) → ゲームオーバー確認
10. manage_editor(action="stop")
注意事項
- McpRemoteControl は
Assets/Scripts/Editor/に配置(ビルドに含まれない) - DebugManager は
#if UNITY_EDITOR || DEVELOPMENT_BUILDで囲む(リリースビルドに含めない) - God モード解除時は状態を確実に元に戻す(物理レイヤー設定等)
レビュー
まだレビューはありません。使ってみた感想をお寄せください。
同じリポジトリのスキル
概要と使いどころ
ゲーム画面全てのスクリーンショットを撮影し、スクショとコードベースを分析して改善提案を行う。「レビュー」「改善提案」「ゲームレビュー」「スクショして改善」「画面チェック」「ビジュアルレビュー」「UI改善」「UX改善」「フィードバック」といったリクエスト時に使用。
WebGL ビルド成果物を StatiCrypt で暗号化し、GitHub Pages にデプロイする。「デプロイ」「GitHub Pages」「公開して」「アップロード」といったリクエスト時に使用。パスワードは Build/ 内で管理し、リポジトリ作成からプッシュまでを自動化する。
Unity プロジェクト向けにプロシージャル音声(SE・BGM)を C# Editor スクリプトで生成する。「音声を生成」「SEを作って」「BGMを作って」「サウンドアセット」「AudioGenerator」「効果音」「プロシージャルオーディオ」といったリクエスト時に使用。WAV ファイル(44100Hz/16bit/Mono)を Assets フォルダに直接出力し、外部ツール不要で完結する。
Unity MCP を使った実装検証スキル。コンパイルエラー確認(L1)、Play Mode 動作確認(L2)、スクリーンショット目視確認(L3)の3段階で検証する。「検証して」「動作確認」「Play Mode で確認」「スクリーンショットで確認」「エラーチェック」といったリクエスト時、または他スキル(dev-game 等)から参照されて使用。
Unity MCPのセットアップと接続を行う。Unity EditorとClaude Codeの間でMCP接続を確立するための手順を実行する。「Unity MCP セットアップ」「MCP接続」「Unity MCP設定」「UnityMCP」「MCP For Unity」「MCPが繋がらない」「Unity Editorと接続」といったリクエスト時に使用。新規セットアップとトラブルシューティングの両方に対応。