From 1dd095ecc906ccff446fea20a2aedb3bd687764f Mon Sep 17 00:00:00 2001 From: hatayama Date: Sun, 25 Oct 2026 20:01:33 +0900 Subject: [PATCH 1/4] Add a Demos section with per-tool clips to the READMEs Show what each tool does in a real agent session before the install steps, so readers can judge the tool set at a glance. The video URLs are filled in after the clips are uploaded. --- README.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ README_ja.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) diff --git a/README.md b/README.md index 46b5dc1e5..fc05ec86a 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,64 @@ Unity Loop Harness is built around four core ideas: https://github.com/user-attachments/assets/569a2110-7351-4cf3-8281-3a83fe181817 +# Demos + +Each clip is a real Claude Code session driving a small voxel game through `uloop`. Stretches where only the terminal changes are sped up; the game plays at real speed. + +## Launch Unity: `launch` + +`uloop launch` opens the project in the Unity version it specifies and returns once the Editor can take commands. + + + +## Add a feature and test it: `compile`, `run-tests` + +Claude adds a glowing torch block, builds the project with `compile`, and runs the EditMode tests with `run-tests`. It fixes the test that fails, then checks the torch at night in Play Mode. + + + +## Change code during Play Mode: `hot-reload` + +Claude adds a double jump and applies it with `hot-reload` without leaving Play Mode, then presses Space with `simulate-keyboard` to measure the jump heights. + + + +## Stop on a line and read that frame: `pause-point` + +The first time water flows into a gap, `pause-point` stops the game on the line that writes water into a cell. Claude reads the new cell's water level in that exact frame. + + + +## Run C# inside the game: `execute-dynamic-code` + +`execute-dynamic-code` runs C# in the running game. Claude stacks ten glass blocks in front of the player, then renders a wide shot of the tower from a temporary camera. + + + +## Capture what the game shows: `screenshot` + +Claude finds the lake with `execute-dynamic-code`, moves the camera high above it, and captures the view with `screenshot`, then hides the HUD and takes the shot again. + + + +## Read the scene: `get-hierarchy`, `find-game-objects` + +`get-hierarchy` saves the running scene's tree to a file, and `find-game-objects` reads the Player's components. + + + +## Press keys: `simulate-keyboard` + +`simulate-keyboard` holds W through the Input System. The player walks off the bank into the lake, and a screenshot confirms the underwater view. + + + +## Move and click the mouse: `simulate-mouse-input` + +`simulate-mouse-input` moves the mouse gradually, the way a hand would, to break three blocks and fill the hole with water. + + + # Quickstart This guide installs three things — the CLI, the Unity package, and the skills — so that your LLM tool can drive Unity. You can install everything from the terminal or from the Unity UI; either path is complete on its own. diff --git a/README_ja.md b/README_ja.md index a3c611b75..a555f918d 100644 --- a/README_ja.md +++ b/README_ja.md @@ -39,6 +39,64 @@ Unity Loop Harnessのコアとなるコンセプトは次の4つです。 https://github.com/user-attachments/assets/569a2110-7351-4cf3-8281-3a83fe181817 +# デモ + +どの動画も、Claude Code が `uloop` で小さなボクセルゲームを操作した実際のセッションです。ターミナルだけが動く区間は早送りし、ゲーム画面は実時間で再生しています。 + +## Unity を起動する:`launch` + +`uloop launch` は、プロジェクトが指定するバージョンの Unity でプロジェクトを開き、Editor がコマンドを受け付けられるようになるまで待ちます。 + + + +## 機能を足してテストする:`compile`、`run-tests` + +Claude が光る松明ブロックを追加し、`compile` でビルドして、`run-tests` で EditMode テストを実行します。失敗したテストを直し、Play Mode で夜にして松明を確かめます。 + + + +## Play Mode のままコードを変える:`hot-reload` + +Claude が二段ジャンプを追加し、Play Mode を止めずに `hot-reload` で反映します。続けて `simulate-keyboard` で Space を押し、ジャンプの高さを測ります。 + + + +## 指定した行で止めて、そのフレームを読む:`pause-point` + +水が隙間へ初めて流れ込むとき、セルに水を書き込む行で `pause-point` がゲームを止めます。Claude はそのフレームのまま、新しいセルの水位を読みます。 + + + +## ゲームの中で C# を実行する:`execute-dynamic-code` + +`execute-dynamic-code` は実行中のゲームの中で C# を動かします。Claude がプレイヤーの前にガラスブロックを 10 個積み、一時的なカメラから塔全体を撮ります。 + + + +## ゲーム画面を撮る:`screenshot` + +Claude が `execute-dynamic-code` で湖を探してカメラを真上に移し、`screenshot` で撮ります。そのあと HUD を隠して撮り直します。 + + + +## シーンの構造を読む:`get-hierarchy`、`find-game-objects` + +`get-hierarchy` が実行中のシーンのツリーをファイルに保存し、`find-game-objects` がプレイヤーのコンポーネントを読みます。 + + + +## キーを押す:`simulate-keyboard` + +`simulate-keyboard` が Input System 経由で W キーを押し続けます。プレイヤーは岸から湖に入り、スクリーンショットで水中の視界を確かめます。 + + + +## マウスを動かしてクリックする:`simulate-mouse-input` + +`simulate-mouse-input` が人の手のようにマウスを少しずつ動かし、ブロックを 3 つ壊して、できた穴を水で満たします。 + + + # クイックスタート このガイドでは、CLI、Unity パッケージ、スキルの 3 つをインストールし、LLM ツールから Unity を操作できる状態にします。ターミナルから入れる方法と Unity の UI から入れる方法があり、どちらか一方で完了します。 From 40c81314f632ecf2d78da31aa9a61ba9c83f5c65 Mon Sep 17 00:00:00 2001 From: hatayama Date: Sun, 25 Oct 2026 20:03:13 +0900 Subject: [PATCH 2/4] Link the uploaded demo clips in the READMEs --- README.md | 18 +++++++++--------- README_ja.md | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index fc05ec86a..fdbfcd325 100644 --- a/README.md +++ b/README.md @@ -47,55 +47,55 @@ Each clip is a real Claude Code session driving a small voxel game through `uloo `uloop launch` opens the project in the Unity version it specifies and returns once the Editor can take commands. - +https://github.com/user-attachments/assets/4e83a196-66a4-4f39-80fb-f33b7a038066 ## Add a feature and test it: `compile`, `run-tests` Claude adds a glowing torch block, builds the project with `compile`, and runs the EditMode tests with `run-tests`. It fixes the test that fails, then checks the torch at night in Play Mode. - +https://github.com/user-attachments/assets/98bba49f-1846-4b8e-9702-733207e8318f ## Change code during Play Mode: `hot-reload` Claude adds a double jump and applies it with `hot-reload` without leaving Play Mode, then presses Space with `simulate-keyboard` to measure the jump heights. - +https://github.com/user-attachments/assets/fdba761a-b65a-4297-92f1-5cb274f4c4cf ## Stop on a line and read that frame: `pause-point` The first time water flows into a gap, `pause-point` stops the game on the line that writes water into a cell. Claude reads the new cell's water level in that exact frame. - +https://github.com/user-attachments/assets/2ea60f1a-ac62-4671-ada6-edb33c0e9f11 ## Run C# inside the game: `execute-dynamic-code` `execute-dynamic-code` runs C# in the running game. Claude stacks ten glass blocks in front of the player, then renders a wide shot of the tower from a temporary camera. - +https://github.com/user-attachments/assets/804d81bc-e019-4423-bfcd-089cd0e207c2 ## Capture what the game shows: `screenshot` Claude finds the lake with `execute-dynamic-code`, moves the camera high above it, and captures the view with `screenshot`, then hides the HUD and takes the shot again. - +https://github.com/user-attachments/assets/da9302a6-7785-4b21-affa-e6f814094c48 ## Read the scene: `get-hierarchy`, `find-game-objects` `get-hierarchy` saves the running scene's tree to a file, and `find-game-objects` reads the Player's components. - +https://github.com/user-attachments/assets/ccb960a9-fa8a-40d8-b72c-7e24e11d32c8 ## Press keys: `simulate-keyboard` `simulate-keyboard` holds W through the Input System. The player walks off the bank into the lake, and a screenshot confirms the underwater view. - +https://github.com/user-attachments/assets/7b7abb7c-6d87-464e-b7d7-223109c27d30 ## Move and click the mouse: `simulate-mouse-input` `simulate-mouse-input` moves the mouse gradually, the way a hand would, to break three blocks and fill the hole with water. - +https://github.com/user-attachments/assets/0ecf0876-8230-4b4d-b51a-fe72cf9ca4c7 # Quickstart diff --git a/README_ja.md b/README_ja.md index a555f918d..8575c910a 100644 --- a/README_ja.md +++ b/README_ja.md @@ -47,55 +47,55 @@ https://github.com/user-attachments/assets/569a2110-7351-4cf3-8281-3a83fe181817 `uloop launch` は、プロジェクトが指定するバージョンの Unity でプロジェクトを開き、Editor がコマンドを受け付けられるようになるまで待ちます。 - +https://github.com/user-attachments/assets/4e83a196-66a4-4f39-80fb-f33b7a038066 ## 機能を足してテストする:`compile`、`run-tests` Claude が光る松明ブロックを追加し、`compile` でビルドして、`run-tests` で EditMode テストを実行します。失敗したテストを直し、Play Mode で夜にして松明を確かめます。 - +https://github.com/user-attachments/assets/98bba49f-1846-4b8e-9702-733207e8318f ## Play Mode のままコードを変える:`hot-reload` Claude が二段ジャンプを追加し、Play Mode を止めずに `hot-reload` で反映します。続けて `simulate-keyboard` で Space を押し、ジャンプの高さを測ります。 - +https://github.com/user-attachments/assets/fdba761a-b65a-4297-92f1-5cb274f4c4cf ## 指定した行で止めて、そのフレームを読む:`pause-point` 水が隙間へ初めて流れ込むとき、セルに水を書き込む行で `pause-point` がゲームを止めます。Claude はそのフレームのまま、新しいセルの水位を読みます。 - +https://github.com/user-attachments/assets/2ea60f1a-ac62-4671-ada6-edb33c0e9f11 ## ゲームの中で C# を実行する:`execute-dynamic-code` `execute-dynamic-code` は実行中のゲームの中で C# を動かします。Claude がプレイヤーの前にガラスブロックを 10 個積み、一時的なカメラから塔全体を撮ります。 - +https://github.com/user-attachments/assets/804d81bc-e019-4423-bfcd-089cd0e207c2 ## ゲーム画面を撮る:`screenshot` Claude が `execute-dynamic-code` で湖を探してカメラを真上に移し、`screenshot` で撮ります。そのあと HUD を隠して撮り直します。 - +https://github.com/user-attachments/assets/da9302a6-7785-4b21-affa-e6f814094c48 ## シーンの構造を読む:`get-hierarchy`、`find-game-objects` `get-hierarchy` が実行中のシーンのツリーをファイルに保存し、`find-game-objects` がプレイヤーのコンポーネントを読みます。 - +https://github.com/user-attachments/assets/ccb960a9-fa8a-40d8-b72c-7e24e11d32c8 ## キーを押す:`simulate-keyboard` `simulate-keyboard` が Input System 経由で W キーを押し続けます。プレイヤーは岸から湖に入り、スクリーンショットで水中の視界を確かめます。 - +https://github.com/user-attachments/assets/7b7abb7c-6d87-464e-b7d7-223109c27d30 ## マウスを動かしてクリックする:`simulate-mouse-input` `simulate-mouse-input` が人の手のようにマウスを少しずつ動かし、ブロックを 3 つ壊して、できた穴を水で満たします。 - +https://github.com/user-attachments/assets/0ecf0876-8230-4b4d-b51a-fe72cf9ca4c7 # クイックスタート From acc7a7f602042732c44fda3c941b6491bfb6d824 Mon Sep 17 00:00:00 2001 From: hatayama Date: Sun, 25 Oct 2026 20:43:38 +0900 Subject: [PATCH 3/4] Remove the old concept video from the READMEs The per-tool demo clips now show what each tool does, so the older overview clip under the concept list is no longer needed. --- README.md | 2 -- README_ja.md | 2 -- 2 files changed, 4 deletions(-) diff --git a/README.md b/README.md index fdbfcd325..322f9d6c0 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,6 @@ Unity Loop Harness is built around four core ideas: 3. **PlayMode automated testing — AI clicks buttons, drags elements, presses keys, replays recorded input, and verifies game behavior.** Uses `simulate-mouse-ui`, `simulate-mouse-input`, `simulate-keyboard`, `replay-input`, `execute-dynamic-code`, `screenshot`. 4. **Achieving the above with a minimal set of tools.** See [Design Philosophy](#design-philosophy). -https://github.com/user-attachments/assets/569a2110-7351-4cf3-8281-3a83fe181817 - # Demos Each clip is a real Claude Code session driving a small voxel game through `uloop`. Stretches where only the terminal changes are sped up; the game plays at real speed. diff --git a/README_ja.md b/README_ja.md index 8575c910a..6161c3e7d 100644 --- a/README_ja.md +++ b/README_ja.md @@ -37,8 +37,6 @@ Unity Loop Harnessのコアとなるコンセプトは次の4つです。 3. **PlayMode中の自動テスト — ボタンクリック、ドラッグ、キーボード入力、記録済み入力の再生、ゲーム動作の検証をAIが実行** — `simulate-mouse-ui`, `simulate-mouse-input`, `simulate-keyboard`, `replay-input`, `execute-dynamic-code`, `screenshot` 4. **上記を最小限のツール数で実現する** → [設計思想](#設計思想) -https://github.com/user-attachments/assets/569a2110-7351-4cf3-8281-3a83fe181817 - # デモ どの動画も、Claude Code が `uloop` で小さなボクセルゲームを操作した実際のセッションです。ターミナルだけが動く区間は早送りし、ゲーム画面は実時間で再生しています。 From 0c905b8e447d47601f66aa3de1d30c167c0b325f Mon Sep 17 00:00:00 2001 From: hatayama Date: Sun, 25 Oct 2026 22:13:45 +0900 Subject: [PATCH 4/4] Show variables and a watch expression in the pause-point demo The new clip stops on the line that decides a cell's water level, shows that frame's variables and call path, and follows a watch expression while the water advances down a channel in the Game view. --- README.md | 4 ++-- README_ja.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 322f9d6c0..88719968b 100644 --- a/README.md +++ b/README.md @@ -61,9 +61,9 @@ https://github.com/user-attachments/assets/fdba761a-b65a-4297-92f1-5cb274f4c4cf ## Stop on a line and read that frame: `pause-point` -The first time water flows into a gap, `pause-point` stops the game on the line that writes water into a cell. Claude reads the new cell's water level in that exact frame. +The first time water flows into a gap, `pause-point` stops the game on the line that decides a cell's new water level and returns that frame's local variables, fields, and call path. A watch expression then tracks the water level along the channel while the water advances one tick at a time. -https://github.com/user-attachments/assets/2ea60f1a-ac62-4671-ada6-edb33c0e9f11 +https://github.com/user-attachments/assets/99ef7b4a-b32f-4e75-9aa8-9e976f7b0078 ## Run C# inside the game: `execute-dynamic-code` diff --git a/README_ja.md b/README_ja.md index 6161c3e7d..0d8aff201 100644 --- a/README_ja.md +++ b/README_ja.md @@ -61,9 +61,9 @@ https://github.com/user-attachments/assets/fdba761a-b65a-4297-92f1-5cb274f4c4cf ## 指定した行で止めて、そのフレームを読む:`pause-point` -水が隙間へ初めて流れ込むとき、セルに水を書き込む行で `pause-point` がゲームを止めます。Claude はそのフレームのまま、新しいセルの水位を読みます。 +水が隙間へ初めて流れ込むとき、セルの新しい水位を決める行で `pause-point` がゲームを止め、そのフレームのローカル変数・フィールド・呼び出し経路を返します。続いてウォッチ式で水路の水位を追いながら、水を 1 tick ずつ進めます。 -https://github.com/user-attachments/assets/2ea60f1a-ac62-4671-ada6-edb33c0e9f11 +https://github.com/user-attachments/assets/99ef7b4a-b32f-4e75-9aa8-9e976f7b0078 ## ゲームの中で C# を実行する:`execute-dynamic-code`