3교시의 도착점
AI가 만든 기능이 아니라 자신이 범위를 승인하고 실제로 검증해 설명할 수 있는 작은 변경을 제출합니다.
- 01
변경 전에 baseline, 체크포인트와 Console Error 0을 기록합니다.
- 02
Ask와 Plan을 거쳐 GameManager.cs와 TimeBonus.cs만 Agent에 허용합니다.
- 03
Unity Scene 연결은 직접 수행하고 예상 변경과 실제 diff를 비교합니다.
- 04
필수 테스트 8개, build, 변경 로그와 90초 코드 구술로 완료를 증명합니다.
미션: Time Bonus 하나를 제한적으로 완성합니다
7주차 게임 루프와 10주차 에셋 통합 결과 또는 같은 행동을 가진 현재 프로젝트를 출발점으로 사용합니다.
Player가 TimeBonus Trigger에 처음 닿으면 Playing에서만 남은 시간이 정확히 5초 늘고 최대 30초에서 멈춥니다. 성공한 보너스는 한 번만 처리되고, Ready, Won, Lost에서는 시간과 오브젝트를 바꾸지 않습니다. 기존 수집, 성공, 실패와 재시작은 모두 유지합니다.
승인과 검증에 절반을 쓰는 60분
Individual / goal-directed
- baseline과 체크포인트
기존 전체 루프를 실행하고 Scene 저장, 프로젝트 복제 또는 버전 관리 지점을 만듭니다.
- Ask로 현재 구조 확인
시간의 소유자, 상태 문, HUD 갱신과 기존 Trigger의 실제 이름을 읽기 전용으로 확인합니다.
- 문제 정의와 Plan 승인
목표, 두 파일, 금지 대상, 수동 Scene 작업, 위험과 테스트가 모두 있는지 봅니다.
- 제한 실행 또는 수동 대체
script-only Agent로 구현 코드 두 파일만 바꾸거나 접속 불가 시 같은 Plan을 따라 직접 작성합니다.
- diff와 Console
파일 목록, 상태 문, 시간 상한, 반환값과 한 번 처리 순서를 읽고 컴파일 오류를 해결합니다.
- 수동 Scene 연결
TimeBonus GameObject, Trigger, Script와 GameManager 참조를 직접 연결하고 Scene 변경을 별도로 기록합니다.
- 필수 테스트 8개
경계값, 상태 거부, 한 번 처리, 기존 루프와 Restart를 확인하며 관찰과 수정 내용을 씁니다.
- build와 설명 증거
증분 build를 실행하고 CSV, change log, diff와 60-90초 영상 또는 현장 구술을 정리합니다.
같은 행동을 증명하고 표현은 스스로 정합니다
테스트할 데이터와 변경 범위는 고정합니다. TimeBonus의 시각 표현과 작업 순서는 학생이 선택합니다.
모두 같은 행동
+5초, 최대 30초, Playing 전용, 오브젝트마다 한 번, 두 Script 변경, 수동 Scene 연결, 기존 루프 보존과 8개 테스트는 바꾸지 않습니다.
각자 선택할 표현
시계 Sprite, 색, 배치, Collider 크기, 기존 SFX 재사용 여부와 작업 순서는 자유입니다. 단, 테스트 결과와 설명 책임은 같아야 합니다.
변경 전 PASS를 저장하고 시작합니다
baseline이 실패하면 Agent를 실행하지 않습니다. 먼저 가장 최근의 작동 Scene으로 돌아가 문제를 하나로 줄입니다.
- 01
작동 장면 복제
현재 Scene을
Assets/Scenes/Week11_TimeBonus.unity로 Save As합니다. 이전 Scene을 덮어쓰지 않습니다.확인 복제한 Scene을 다시 열 수 있고 Play Mode가 아닙니다.
- 02
Build Profiles의 시작 Scene 확정
File → Build Profiles → Scene List → Add Open Scenes를 누릅니다.Week11_TimeBonus를 첫 번째 활성 Scene으로 옮기거나 이전 Scene을 비활성화하고, 체크 상태와 중복 여부를 확인합니다.확인 목록의 첫 번째 활성 항목이
Week11_TimeBonus라서 Build and Run과 Scene 재시작이 같은 Scene을 사용합니다. - 03
회귀 baseline 기록
Start, 수집물 3개, Won, Restart, 다시 Start, 시간 종료, Lost와 Restart를 연속 실행합니다.
확인 점수, 시간, Panel과 수집물이 두 재시작에서 모두 초기화됩니다.
- 04
변경 전 파일 목록 저장
Agent activity 또는
git status --short로 이미 수정된 파일을 기록합니다. 기존 변경은 학생 소유이므로 새 변경과 섞지 않습니다.확인 오늘 Agent가 만들 변경과 기존 작업을 구분할 수 있습니다.
- 05
되돌리기 지점
프로젝트 복제, 학교가 정한 백업 또는 버전 관리 체크포인트 중 하나를 만듭니다.
확인 Agent Undo와 별개로 baseline을 복원할 수 있습니다.
기록 틀을 먼저 복사합니다
prompt를 보내기 전에 변경 로그와 테스트 파일을 프로젝트 밖의 제출 폴더에 준비합니다. 기록 파일은 Agent의 쓰기 범위에 넣지 않습니다.
AI change control starter pack
Ask, 승인한 Plan, 예상·실제 파일, 수동 변경, 테스트와 구술 준비를 위한 Markdown과 CSV 템플릿입니다.
AI_CHANGE_LOG-template.md
baseline, Ask 원문과 검증, 승인 Plan, 권한, 예상과 실제 diff, 수동 변경과 미확인 항목을 기록합니다.
week11-test-template.csv
T01부터 T08의 조건, 기대 결과, 판정, 관찰과 수정 내용을 스프레드시트에서도 기록할 수 있습니다.
README.md
폴더 위치, 파일명, 제출 증거와 AI 접속 불가 대체 경로를 짧게 확인합니다.
클릭 순서 대신 여섯 중간 도착점을 확인합니다
순서는 자신의 프로젝트 상태에 맞게 조정할 수 있습니다. 다만 28분에는 Agent 실행을 끝내고, 43분에는 테스트를 시작해야 증거를 남길 시간이 생깁니다.
- BASELINE
기존 루프 PASS
- ASK
실제 이름 4개 확인
- PLAN
두 파일과 금지 대상 승인
- DIFF
예상과 실제 일치
- SCENE
사람이 참조 연결
- PROOF
8 / 8 PASS와 구술
Ask → Plan → script-only Agent
각 모드의 원문과 응답을 저장하고 Agent 활동에서 실제 변경 파일을 확인합니다. Scene 연결과 모든 테스트는 직접 수행합니다.
Ask·Plan worksheet → 직접 작성
서비스, 계정이나 credit을 사용할 수 없으면 같은 질문과 Plan을 문서로 작성한 뒤 두 Script를 직접 수정합니다. 로그에 Agent 미사용 이유를 기록하고 같은 diff와 테스트로 평가받습니다.
AI 사용량, subscription, 호출 횟수와 작업 속도는 점수가 아닙니다. 문제 정의, 변경 범위, 실제 코드 이해, Unity 통합, 회귀 테스트와 투명한 기록을 같은 기준으로 평가합니다.
실제 이름을 네 개 찾고 자신의 말로 다시 씁니다
2교시 prompt를 그대로 보내기 전에 경로와 클래스 이름을 자신의 프로젝트에 맞게 바꿉니다. 개인정보와 평가 자료는 입력하지 않습니다.
__________남은 시간을 실제로 저장하는 필드.
__________Playing인지 판정하는 이름.
__________시간 Text를 다시 쓰는 함수.
__________기존 Trigger의 사건 전달 순서.
예상 diff를 먼저 쓰고 승인합니다
Plan의 단계 수는 중요하지 않습니다. 변경될 파일, 각 책임, 수동 작업, 위험과 테스트가 빠짐없이 있고 목표 밖 항목이 없어야 합니다.
| 승인 항목 | 반드시 적을 내용 | 거부 신호 |
|---|---|---|
| 목표 | +5초, 최대 30초, Playing, 한 번 | “시간 시스템 개선”처럼 범위가 모호함 |
| 파일 | 기존 1개 수정, 새 1개 생성 | 세 번째 Script, Scene 또는 package 포함 |
| 지원 산출물 | Assets/Plans, Unity 생성 .meta, 학생 저장 Scene과 작성 주체 | 지원 파일을 구현 코드로 숨기거나 필요한 .meta를 삭제함 |
| 책임 | GameManager는 규칙, TimeBonus는 사건 | 두 Script가 시간을 각각 저장함 |
| 수동 작업 | GameObject, Trigger, 참조와 값 | 연결이 자동으로 생긴다고 가정함 |
| 위험 | 상태, 상한, 중복, null과 회귀 | 성공 경로만 적고 실패 조건이 없음 |
| 테스트 | T01부터 T08의 실제 조건 | “잘 작동하는지 확인”으로 끝남 |
Agent에는 두 파일과 중단 조건만 건넵니다
허용 범위 밖의 편리한 변경도 이번 실행에서는 하지 않습니다. 필요하면 별도 문제와 별도 Plan으로 분리합니다.
- 01
권한 prompt 확인
Agent가 표시하는 쓰기 권한이 script-only인지 읽고, Full autonomy라면 승인하지 않습니다.
통과 Scene과 Asset 쓰기가 허용되지 않습니다.
- 02
활동 목록 관찰
어떤 파일을 열고 쓰는지 활동 항목을 펼쳐 봅니다. 예상하지 않은 구현 파일 또는 명령이 보이면 즉시 중단합니다.
통과 Agent의 구현 쓰기 대상이 두 C# 파일뿐입니다.
- 03
완료 보고 분리
Agent의 변경 요약과 실제 changed files를 비교합니다. 테스트하지 못했다고 적은 항목을 지우거나 PASS로 바꾸지 않습니다.
통과 주장, 실제 diff와 미확인 항목이 분리되어 있습니다.
두 Script를 설명한 뒤 Scene을 직접 연결합니다
컴파일 성공만 보고 Scene으로 넘어가지 않습니다. 코드의 상태 문, 상한과 한 번 처리 순서를 먼저 표시합니다.
| 검토 순서 | 통과 기준 | 로그에 남길 것 |
|---|---|---|
| 파일 목록 | Agent 또는 직접 작성한 구현 코드는 두 C# 파일 | Plan, .meta, Scene과 구현 diff를 작성 주체별 비교 |
| 시간 메서드 | Playing, 양수, roundDuration 상한, HUD, bool 반환 | 각 줄이 막는 실패 |
| Trigger Script | Player, null, 중복, 승인 결과, 비활성화 순서 | 한 번 처리의 근거 |
| 기존 코드 | Update, AddScore, FinishRound, Restart 보존 | 불필요한 수정 유무 |
| Console | Error 0, Missing Script 0 | 오류와 직접 고친 줄 |
- 01
TimeBonus GameObject 준비
기존 Collectible을 복제해 이름과 Sprite를 바꾸고 점수 Script를 제거합니다. Collider2D의 Is Trigger를 유지하고 Player 또는 TimeBonus 중 적어도 하나에 활성
Rigidbody2D가 있는지 확인합니다.확인 시각과 Trigger, 2D 물리 조건이 있고 중복 게임 규칙 Script는 없습니다.
- 02
새 Component와 참조
TimeBonus를 추가하고 GameManager 참조를 끌어 놓습니다. Bonus Seconds는 5로 둡니다.확인 None 참조가 없고 값이 양수입니다.
- 03
사람의 변경 기록
Scene 저장은 Agent 변경과 분리해
Manual Unity changes에 GameObject, Component, Trigger와 참조를 적습니다.확인 실제 Scene diff가 생겨도 작성 주체와 이유가 분명합니다.
필수 테스트 8개를 모두 PASS합니다
예상과 다르면 FAIL이 정상입니다. 실제로 본 값을 적고 가장 가까운 책임 하나만 고친 뒤 같은 조건에서 다시 실행합니다.
| ID | 조작 조건 | 기대 결과 | 판정 | 관찰 및 수정 기록 |
|---|---|---|---|---|
| T01 | 변경 전 Scene에서 Start → 수집 3개 → Won → Restart → Start → 시간 종료 → Lost → Restart 실행 | 기존 전체 루프 PASS, 두 Restart 뒤 Ready, 0/3, 30.0과 수집물 복원, Console Error 0과 체크포인트 존재 | ||
| T02 | Ask 원문과 응답을 실제 Script 두 개와 대조 | 시간 필드, 상태 문, HUD 함수, Trigger 호출의 실제 이름 4개가 맞고 프로젝트 변경 0개, 추측은 확인 필요로 표시 | ||
| T03 | 승인한 Plan과 선택 경로를 실행 전에 확인 | 공통 계약에 +5, 30 cap, Playing, once, 구현 코드 2개, 지원 산출물, 수동 Scene, 위험, T01-T08과 중단 조건이 있음. Route A는 Write scripts only 권한, Route B는 승인한 직접 작성 범위를 확인 | ||
| T04 | Agent 또는 직접 작성 종료 뒤 파일 분류, 두 Script diff와 Console 확인 | 구현 코드는 두 C# 파일뿐이고 Plan, Unity 생성 .meta와 수동 Scene은 지원 산출물로 분리됨. 상태 문, 상한, bool, 한 번 처리, 기존 public과 serialized field 보존, Error 0 | ||
| T05 | Playing에서 HUD가 20.0일 때 TimeBonus에 처음 접촉한 뒤 같은 위치 재접촉 시도 | 즉시 25.0, 해당 보너스만 비활성화, 재접촉으로 추가 시간 없음, 점수와 다른 수집물 변화 없음 | ||
| T06 | 실행 증거: Playing 28.0에서 새 TimeBonus 접촉. 코드 경로 증거: Ready, Won, Lost에서 상태 문부터 호출 결과까지 두 Script diff를 줄별 추적 | 실행은 30.0에서 제한. 코드에서는 Playing 밖의 return false가 시간·HUD 변경보다 앞서고, 호출이 true일 때만 collected와 SetActive가 실행됨 | ||
| T07 | TimeBonus 사용 후 수집 3개로 Won, Restart, Start, 시간 0으로 Lost, Restart 실행 | 기존 점수, 결과, 소리와 타이머가 정상이고 두 Restart 뒤 TimeBonus도 활성 상태로 복원, Missing Reference 0 | ||
| T08 | Build Profiles에서 Week11_TimeBonus가 첫 번째 활성 Scene인지 확인한 뒤 Build and Run에서 새 행동과 전체 루프를 녹화하고 제출 폴더와 90초 구술 확인 | build가 Week11_TimeBonus로 시작해 같은 결과를 내고, 60-90초 영상, AI_CHANGE_LOG, diff와 CSV가 정확히 열리며 학생이 두 Script의 owner, event, reject와 proof를 설명 |
학번과 이름은 이 탭에만, 테스트 기록은 이 브라우저에 저장됩니다. 공용 컴퓨터에서는 CSV 저장 뒤 초기화하세요.
실패한 테스트에서 가장 가까운 층만 고칩니다
새 Agent 세션으로 전체를 다시 만들기 전에 관찰, diff, Console, Inspector, 상태와 회귀 순서로 원인을 좁힙니다.
T04에서 세 번째 구현 파일이 변경되었습니다
테스트를 중단하고 변경 목록을 로그에 보존합니다. Plan, Unity 생성 .meta, 수동 Scene인지 먼저 분류하고, 그 밖의 구현 파일이면 체크포인트와 diff로 복구한 뒤 Plan과 permission을 다시 승인합니다.
T05에서 시간은 늘지만 보너스가 남습니다
TryAddTime이 true를 반환한 뒤 collected = true와 SetActive가 실행되는지 확인합니다. Scene의 TimeBonus Component가 실제 새 Script인지도 봅니다.
T05에서 접촉 한 번에 시간이 여러 번 늘어납니다
처리 완료 bool이 field인지, 성공 직후 true가 되는지 확인합니다. 같은 GameObject에 TimeBonus Component가 두 개 붙었는지도 Inspector에서 봅니다.
T06에서 30초를 넘습니다
상한이 고정 문자열이나 UI 값이 아니라 roundDuration인지, Mathf.Min이 더한 값과 상한을 비교하는지 확인합니다.
T06에서 결과 상태인데 오브젝트가 사라집니다
GameManager의 승인 결과를 받기 전에 collected 또는 SetActive가 실행되는지 봅니다. false이면 TimeBonus의 상태는 바뀌지 않아야 합니다.
T07에서 Restart 뒤 보너스가 돌아오지 않습니다
TimeBonus GameObject가 Scene에 활성 상태로 저장되었는지와 Restart가 현재 Scene을 재로드하는지 확인합니다. Play Mode에서 비활성화된 상태를 저장하지 않습니다.
Unity Assistant 또는 네트워크를 사용할 수 없습니다
Route B로 전환합니다. Ask와 Plan worksheet를 직접 작성하고 2교시의 책임 구조를 참고해 두 Script만 수정합니다. 로그에는 사용하지 않은 기능과 이유를 쓰고 같은 diff, 수동 연결, 8개 테스트와 구술로 증명합니다.
시간이 부족합니다
새 시각 효과와 사운드를 중단합니다. T04 diff·Console, T05 기본 행동, T06 경계, T07 회귀를 우선하고 미실행 테스트를 PASS로 표시하지 않습니다.
90초 안에 네 책임을 연결해 설명합니다
화면을 읽는 발표가 아닙니다. 코드를 가리고도 데이터의 주인, 사건 전달, 거부 조건과 테스트 증거를 순서대로 말합니다.
시간은 어디에 있습니까?
어떤 Script와 field가 시간을 소유하고 왜 Trigger가 직접 바꾸지 않는지 설명합니다.
접촉은 어떻게 전달됩니까?
Player 검사부터 GameManager 요청, true 반환과 비활성화까지 순서를 설명합니다.
무엇을 거부합니까?
Playing 밖, 0 이하 값, null, 중복과 30초 상한이 막는 실패를 설명합니다.
무엇으로 완료를 압니까?
20+5, 28+5, state rejection, 한 번 처리와 기존 루프 회귀의 실제 결과를 말합니다.
AI가 작성한 줄 중 자신이 설명하지 못하는 줄에 표시합니다. 그 줄은 Ask로 설명받고 실제 API 문서와 실행 결과를 확인한 뒤 제출합니다.
다섯 증거를 한 폴더에 남깁니다
파일 수가 아니라 변경의 시작, 승인, 실제 결과와 학생의 이해를 다시 따라갈 수 있어야 합니다.
Week11_학번_이름
Week11_TimeBonus Scene과 두 Script가 포함되고 필요한 meta와 기존 asset이 빠짐없는 프로젝트 또는 지정 package입니다.
week11_학번_이름_build
실행 가능한 데스크톱 build에서 Time Bonus와 기존 성공, 실패와 재시작을 재현합니다.
AI_CHANGE_LOG.md
baseline, Ask, 승인 Plan, 권한, Agent 또는 수동 대체, 예상·실제 diff, 수동 Scene 변경과 테스트를 기록합니다.
diff.txt + test.csv
두 Script patch와 T01부터 T08의 PASS, 실제 관찰과 수정 내용을 보존합니다.
week11_학번_이름_play.mp4
60-90초 안에 새 행동, 경계값, 회귀와 Console 0을 보여 주고 수업 중 90초 코드 구술을 완료합니다.
제출 전 마지막 확인
체크 결과는 이 브라우저에 저장됩니다.
실습 중 확인할 공식 자료
AI 설명과 예제보다 설치된 Unity 6.6의 실제 Script, Console, Inspector와 공식 API 문서를 우선합니다.
- Unity in-Editor AI Assistant 모드 설명 ↗Ask, Plan, Agent, permission prompt와 project context
- Unity 6.6 Mathf.Min ↗남은 시간을 roundDuration 이하로 제한하는 API
- Unity 6.6 OnTriggerEnter2D ↗Player와 TimeBonus의 2D Trigger 접촉
- Unity 6.6 Component.CompareTag ↗Collider2D인 other가 Player Tag인지 확인하는 API
- Unity 6.6 SerializeField ↗GameManager 참조와 bonusSeconds를 Inspector에 표시
- Unity 6.6 Asset metadata ↗Unity가 생성하는
.meta와 GUID를 Asset과 함께 보존 - Unity 6.6 Build Profiles Scene List ↗새 Scene을 build 목록에 추가하고 포함 여부 확인
- Git diff 공식 문서 ↗허용한 두 Script의 working tree 변경 저장