00 / ARRIVAL
2교시의 도착점
교수자의 화면을 따라 클릭하는 시간이 아닙니다. 실행 전에 결과를 예측하고, 출력과 실제 Unity 상태가 그 예측을 지지하는지 판독합니다.
- 01
MCP Bridge의 연결 요청과 client 승인을 작업별 권한과 구분합니다.
- 02
Console·Hierarchy·Component를 무변경 읽기로 관찰하고 수동 화면과 대조합니다.
- 03
한 Transform 값의 예상 차이, 실행, 재읽기와 rollback을 시연합니다.
- 04
unity status와unity pipeline list의 JSON, stderr와 exit code를 판독합니다.
60분의 시연 흐름
설치보다 관찰과 검증에 시간을 씁니다. package와 CLI는 수업 전에 준비하고, 연결이 실패하면 fixture로 즉시 같은 판독을 이어갑니다.
무변경 읽기에서 단일 쓰기와 복구까지
Demonstration / professor-led
- baseline 공개
Scene,
AutomationProbe, Player Component, Console count와 열린 Editor 한 개를 수동으로 기록합니다. - 연결과 승인
MCP Bridge Running, Pending Connection의 client 정보와 승인·revoke를 보여 주고 연결과 작업 허가를 분리합니다.
- MCP 읽기 두 번
Console과 Player Component를 읽고 결과를 수동 Console·Inspector와 항목별로 대조합니다.
- 단일 쓰기와 rollback
권한 계약을 소리 내어 읽고 Probe X 0 → 1을 한 번 실행한 뒤 재읽기·Undo·재검증합니다.
- CLI 연결 판독
version, help, auth status, status와 pipeline list를 JSON으로 읽고 target project와 exit code를 확인합니다.
- FAIL 시연
잘못된 project path 또는 닫힌 Editor 예시를 fixture로 보여 주고 성공 출력과 오류 출력을 구분합니다.
- 3교시 인계
세 경로가 같은 baseline·권한 계약·8개 테스트로 끝나는 이유를 회수합니다.
02 / BASELINE SNAPSHOT
자동화가 말하기 전에 사람이 먼저 봅니다
baseline은 막연한 “정상 상태”가 아니라 실행 뒤 같은 방식으로 다시 확인할 수 있는 값의 묶음입니다.
- 복제본
Week12_AutomationLab- Editor
- 한 개만 실행, Play Mode 종료
- Scene
- 수업이 지정한 Scene을 열고 저장 상태 확인
- 이름
AutomationProbe빈 GameObject- Transform
- Position (0, 0, 0), Rotation (0, 0, 0), Scale (1, 1, 1)
- Component
- Transform 외 추가 Component 없음
- Player
- Hierarchy의 정확한 이름과 Component 목록
- Console
- Error·Warning·Log count와 마지막 message
- Scene
- active Scene 이름과 root GameObject count
- 저장
- Scene과 Script의 미저장 표시가 없음
- 복구
- Undo 또는 별도 project copy
- 중단
- 예상 밖 대상·추가 diff·새 Error가 보이면 즉시 중단
수업 중 Package 설치, GameObject 생성·삭제, Script·Prefab·ProjectSettings 변경과 build는 하지 않습니다. 유일한 쓰기는 기존 AutomationProbe.Position.x의 0 → 1이며, 시연 안에서 0으로 복구합니다.
첫 연결은 client를 확인하고 명시적으로 승인합니다
Unity MCP Server의 Bridge가 실행 중이어도 새로운 외부 client는 승인 전까지 도구를 사용할 수 없습니다. 승인 뒤에는 자동 재연결될 수 있으므로 수업 종료 때 revoke가 필요합니다.
- 01 / BRIDGEUnity Bridge Running
Project Settings의 AI → Unity MCP Server에서 Bridge 상태를 확인합니다.
- 02 / IDENTITYclient 확인
Pending Connection의 client 이름과 자신이 시작한 연결인지 확인합니다. 모르는 client는 승인하지 않습니다.
- 03 / ALLOW연결만 승인
Allow Access는 Bridge 연결 승인입니다. Scene 쓰기와 삭제 권한을 포괄 승인한 것이 아닙니다.
- 04 / TOOLStool 목록 확인
Unity_ReadConsole, Scene·GameObject 관리 tool 등 실제 연결된 목록을 읽습니다. - 05 / REVOKE종료 때 해제
시연이 끝나면 access를 revoke하고 공용 컴퓨터의 외부 client와 provider session을 종료합니다.
04 / MCP READ-ONLY DEMO
첫 두 요청은 읽기만 허용합니다
요청마다 대상, 출력 형식과 무변경 조건을 반복합니다. 응답의 요약을 믿기 전에 실제 Console과 Inspector의 항목 수를 맞춥니다.
Read the Unity console messages and summarize any warnings or errors.
Do not create, edit, delete, save, or run anything.
Return only: error count, warning count, and one-line summaries.
In the active Scene, inspect only the GameObject named "Player".
Do not modify the project.
Return the exact GameObject path and the names of its Components.
If there is no exact match or more than one match, stop and report that ambiguity.
복사 뒤에도 대상과 금지 조건을 소리 내어 다시 확인합니다.
Console count와 Player Inspector의 Component 이름을 화면에서 씁니다.
요약 문장보다 count, object path와 Component 목록을 비교합니다.
누락·추가·대상 혼동이 없고 project diff가 0일 때만 READ PASS입니다.
변경은 하나, 관찰은 세 번입니다
쓰기 요청보다 먼저 현재 상태와 예상 차이를 적습니다. 실행 뒤 재읽고, Undo 뒤 한 번 더 읽어 baseline 복귀를 확인합니다.
Inspector, MCP read와 계약의 before가 모두 일치해야 실행합니다.
Hierarchy, 다른 axis·Component·file과 Console에는 변화가 없어야 합니다.
Undo 뒤 같은 관찰을 반복해 baseline과 완전히 일치하는지 확인합니다.
- V01대상 수 1
정확한 이름의 object가 하나입니다.
- V02before 일치
Position X가 계약대로 0입니다.
- V03diff 하나
X만 1이고 다른 관찰값은 같습니다.
- V04Console 유지
새 Error·Warning이 생기지 않습니다.
- V05복구 완료
Undo 뒤 X와 전체 관찰 상태가 baseline입니다.
06 / UNITY CLI DEMO
명령보다 먼저 현재 설치의 help를 읽습니다
Unity CLI는 현재 experimental입니다. 아래 순서는 관찰 중심 수업용 기준이며, 실제 옵션은 설치된 CLI의 --help와 공식 reference를 우선합니다.
unity -V
unity --help
unity auth status
unity status --format json
unity pipeline list --format json
unity mcp --help
unity list --project-path="/absolute/path/to/Week12_AutomationLab" --format json
- 목적
- 문서가 아니라 현재 실행 파일의 기능과 옵션 확인
- 기록
- CLI version과 필요한 subcommand help
- 주의
- 다른 학생 화면의 옵션을 그대로 복사하지 않음
- 목적
- 로그인 여부만 관찰
- 금지
- 수업 중 개인 계정 생성·결제·강제 login
- 대체
- 미인증이면 fixture 경로로 전환
- 목적
- 연결된 Editor의 port, path, version, PID 확인
- 판정
- 의도한 project path와 실행 중인 Editor 한 개
- FAIL
- 0개 또는 여러 개면 대상부터 정리
- 목적
- Pipeline 연결과 사용 가능한 Editor 확인
- 판정
- project path가 baseline 복제본과 일치
- 실행
- 명시적
--project-path로 한 Editor만 지정
JSON은 성공 표시가 아니라 판독 가능한 증거입니다
형식이 구조화되어도 내용이 옳다는 보장은 없습니다. command, success, data, errors와 warnings를 실제 target과 함께 읽습니다.
{
"success": true,
"command": "status",
"data": {
"projectPath": "/…/Week12_AutomationLab",
"editorVersion": "installed-version",
"pid": 12345
},
"errors": [],
"warnings": []
}
- success는 명령의 성공 여부이지 수업 목표의 완료 여부가 아닙니다.
- command가 실행하려던 명령과 같은지 확인합니다.
- projectPath가 baseline 복제본인지 absolute path로 대조합니다.
- errors·warnings와 stderr를 함께 읽고 숨은 실패가 없는지 확인합니다.
- 마지막으로 Unity Editor 화면에서 같은 상태를 수동 확인합니다.
| exit code | 의미 | 수업에서의 다음 행동 |
|---|---|---|
| 0 | 명령 성공 | data와 실제 Unity 상태를 대조합니다. 자동 PASS로 바꾸지 않습니다. |
| 1 / 2 | 일반 오류 / 사용법 오류 | stderr와 현재 subcommand help를 읽고 명령·option을 수정합니다. |
| 3 / 4 | 인증 / 구성 오류 | 개인 login을 강제하지 않고 fixture 경로로 전환해 판독을 계속합니다. |
| 6 | 주요 작업 실패 | 성공으로 기록하지 않습니다. target·Editor·Pipeline 상태를 다시 확인합니다. |
| 7 | service unavailable | 재시도 가능한 상태이지만 반복 호출하지 말고 잠시 멈춰 환경을 확인합니다. |
| 130 / 143 | 사용자 중단 / 종료 신호 | 중단 이유와 남은 상태를 기록하고 baseline을 수동 확인합니다. |
좋은 로그는 명령과 판단을 함께 남깁니다
터미널 transcript만으로는 왜 실행했는지 알 수 없고, 회고 문장만으로는 무엇을 실행했는지 재현할 수 없습니다.
- 시간·환경
- Editor·package·CLI version과 선택 경로
- baseline
- Scene, target, Console, Transform과 checkpoint
- 계약
- 허용 tool, 예상 diff, 금지·중단·복구
- MCP
- prompt 원문, 호출 tool, target과 응답 요약
- CLI
- 명령·인수, stdout·stderr와 exit code
- 비밀
- key·token·개인 path의 식별 정보는 redaction
- diff
- 예상과 실제의 일치·불일치
- 교차 확인
- Inspector, Console, Hierarchy와 파일 상태
- rollback
- 복구 방법과 baseline 재검사 결과
- PASS
- 예상 차이만 존재하고 복구 뒤 baseline 일치
- FAIL
- 오류·추가 변경·모호한 target과 중단 위치
- 다음
- 전체 재실행이 아니라 실패한 가장 가까운 단계
09 / OFFLINE CONTINUITY
연결 실패는 학습 실패가 아닙니다
자동화 수업의 목표는 account를 뚫는 것이 아니라 권한과 증거를 설계하는 것입니다. 연결이 막히면 같은 시점의 fixture를 읽습니다.
MCP + CLI
교수자 시연 환경에서 실제 read tool과 CLI status를 사용하고 한 번의 제한 쓰기·Undo를 보여 줍니다.
CLI 또는 MCP 하나
가능한 연결에서는 read evidence를 만들고 나머지는 수동 Inspector·Console과 제공 fixture로 대체합니다.
fixture + 수동 관찰
sample JSON·MCP report를 판독하고 Unity에서는 같은 baseline과 probe를 수동으로 검사·변경·복구합니다.
세 경로 모두 baseline 표, 읽기 결과 대조, 권한 계약, 단일 X 변경과 rollback, 자동화 로그와 8개 테스트를 제출합니다. 연결 성공 여부와 유료 도구 사용은 평가하지 않습니다.
3교시 전에 복원할 네 가지
답을 먼저 말하고 펼쳐 확인합니다. 순서를 잊었다면 쓰기를 실행하지 않고 baseline으로 돌아갑니다.
Q1. 첫 MCP 요청이 Console 읽기인 이유는 무엇인가?
프로젝트를 바꾸지 않으면서 연결된 tool, 대상 범위와 응답의 정확성을 수동 Console과 비교할 수 있기 때문입니다. 안전한 읽기에서 신뢰도를 먼저 확인합니다.
Q2. AutomationProbe를 0 → 1로 바꾸기 전에 무엇이 모두 일치해야 하는가?
정확히 하나인 target, Inspector와 MCP read의 X=0, Scene·Play Mode·Console baseline, 허용 property, 예상 diff와 rollback 계획이 모두 일치해야 합니다.
Q3. success: true가 수업 PASS가 아닌 이유는 무엇인가?
그 값은 CLI 명령이 성공했다고 보고할 뿐, 의도한 project를 대상으로 했는지, 실제 Unity 상태가 맞는지, 다른 변경이나 오류가 없는지까지 증명하지 않습니다.
Q4. 연결되지 않는 학생은 무엇을 똑같이 증명하는가?
제공 fixture의 상태·출력을 판독하고 수동 Unity 화면에서 baseline, read result, 한 값의 변경과 rollback을 같은 표로 증명합니다. 평가 결과는 연결 경로와 무관합니다.
학생은 같은 보고서를 서로 다른 경로로 완성합니다
3교시의 고정 목표는 자동화를 많이 실행하는 것이 아니라 읽기 결과와 단일 변경이 실제 상태와 일치함을 증명하는 것입니다.
12 / PRIMARY SOURCES
시연 옆에 열어 둘 Unity 공식 자료
고정된 slide보다 설치된 버전의 help를 우선하고, 문서와 실제 출력이 다르면 그 차이 자체를 automation log에 남깁니다.
- Unity MCP Server 시작하기 ↗Bridge, Pending Connection, Allow·Revoke Access와 read Console test
- Unity AI MCP 도구 범위 ↗Scene, GameObject, Script, Console, Component와 build settings tool 범주
- Unity CLI 사용하기 ↗설치, upgrade, help, Editor와 project 기본 명령
- Unity CLI reference ↗status, pipeline, command, mcp, JSON 형식과 exit code
- Unity Pipeline package ↗install, list와 project path로 연결 Editor 지정