feat(BT5-Dev·최종): PlayerTestGirl 아틀라스 적용 + feedback SOT 2종
개발팀 Agent 재위임 결과 (C29 자율 수행): - PlayerTestGirl.png (1536×1024) Grid 4×2 slice — guid 44ad58ba... - PlayerIdle/PlayerRun.anim sprite 0~3 walk 4프레임 교체 - PlayerAttack.anim 신설 (sprite 4~7 non-loop 4프레임) - Player.controller attack Trigger + Player-Attack State + 2 Transition - Player.prefab m_Sprite PlayerTestGirl 참조 - EditMode 테스트 10종 (신규 2종: SpriteRenderer guid · Attack State) - C6-1 백업 5종 bak_20260424_0003 feedback SOT 2종: - feedback_pm_image_verification_skip.md 신설 (헌법급 tier: constitutional) - feedback_pm_dev_task_delegation_failure.md 3회차 append (ls 자르기 누락) PD 수동 최종 1건: Play 버튼 검증 (GUI QA · C29-3 인간 검증 예외) 매니페스트: 2026-04-23_BT5Dev_PlayerTestGirl_아틀라스 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
39800cf078
commit
36d5d4d61a
|
|
@ -107,3 +107,40 @@ AI Agent가 Unity 프로젝트 개발에서 달성 가능한 실질 커버리지
|
|||
## 7. 영구 보존 사유
|
||||
|
||||
본 패턴은 **Unity MCP 확장·다른 외부 도구 도입 시에도 재발 가능**. 환경 제약이 있는 모든 경우에 본 체크리스트를 재활용할 수 있도록 SOT로 영구 보존.
|
||||
|
||||
---
|
||||
|
||||
## 8. 3회차 변종 — 리소스 실측 축약으로 인한 오판 (2026-04-24)
|
||||
|
||||
### 8.1 사건 요약
|
||||
PD가 `PlayerTestGirl.png` 를 `Assets/Character/Sprites/` 에 직접 저장(2026-04-22 23:47). PM은 세션 재개 시 해당 파일의 **실물 이미지를 Read(이미지) 도구로 시각 확인하지 않고**, 파일명만으로 "기존 Player 시리즈(PlayerIdle·PlayerRun 등)의 새 추가본"으로 오인식. **A안 (Player 시리즈 유지 + 이름만 변경)** 을 PD께 승인 요청했으나 PD가 "이미지를 봤냐"고 역질문.
|
||||
|
||||
### 8.2 근본 원인
|
||||
1. **리소스 판정 시 시각 확인 의무 부재** — 파일명 매칭은 추정 (C5 정직성의 특수 외연)
|
||||
2. **파일 시스템 스캔 축약** — `ls | head -20` 로 디렉토리 스캔했으나 PlayerTestGirl.png 가 범위 내였음에도 "기존 Player 시리즈와 같은 종류" 로 패턴 과일반화 하여 Read(이미지) 생략
|
||||
|
||||
### 8.3 실물
|
||||
- **실제 이미지**: 보라머리·파란옷·검을 든 캐릭터 (전혀 다른 캐릭터)
|
||||
- **구성**: 1536×1024, 4열×2행 = 8 sprite, 384×512 grid
|
||||
- **내용**: walk 4프레임 + attack 4프레임 (완전 신규 캐릭터·완전 신규 애니메이션 세트)
|
||||
|
||||
### 8.4 재발 방지 체크리스트 (기존 4문항에 신규 4문항 append)
|
||||
|
||||
5. **리소스 실물 시각 확인 선행** — 이미지 리소스는 Read(이미지) 도구로 **시각 확인 후** 판단. 파일명 매칭만으로 판정 금지
|
||||
6. **ls 전수 (head·tail 자르기 금지)** — 리소스 디렉토리 스캔 시 `ls -la` 전수. `head -N` 축약은 누락 위험
|
||||
7. **기존 meta 존재 시 Read 선행** — `.png.meta` 가 이미 존재하면 (Unity auto-import 결과 포함) **반드시 Read 후 내용 기반 판단** (guid·spriteMode·sprite 개수 확인)
|
||||
8. **"캐릭터 교체"·"리소스 추가" 지시 시 A/B/C 선택지 전 시각 확인 필수** — 추정 기반 선택지 제시 금지. 이미지를 본 뒤 사용자 의도 파악
|
||||
|
||||
### 8.5 C2-1 "근본 원인 재정의" 적용
|
||||
- 표면 원인: 파일명 매칭 오판
|
||||
- **근본 원인**: 리소스 판정 시 시각 확인을 "선택적 도구"로 간주 → **시각 확인을 필수 선행 의무로 격상** 필요
|
||||
- 이에 부수 feedback `feedback_pm_image_verification_skip.md` 신설 (`tier: constitutional`)
|
||||
|
||||
### 8.6 3회차 변종 학습 결과
|
||||
|
||||
1~2회차는 **Unity MCP 환경 제약 과대 해석**. 3회차는 **리소스 실물 확인 생략**. 두 패턴의 공통점:
|
||||
- Agent 자율 능력 범위를 **사전 검증 없이** 축소 판단
|
||||
- PD 확인 요청 전에 **자체 역량 검증 선행** 의무 누락
|
||||
|
||||
**해결책**: C23 허위 보고 금지 + C31 자기검증 H 체크리스트에 "리소스 판정 시 시각/실측 선행 완료" 추가 안건 (개발팀장 재량 내 proposal).
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
---
|
||||
tier: constitutional
|
||||
domain: [PM·리소스 판정·시각 확인 의무]
|
||||
related_rules: [C5, C23, C31-H, C2-1]
|
||||
related_feedback:
|
||||
- feedback_pm_dev_task_delegation_failure.md
|
||||
- feedback_pm_capability_underestimation.md
|
||||
first_occurrence: 2026-04-24
|
||||
version: 1.0
|
||||
---
|
||||
|
||||
# PM 리소스 시각 확인 생략 — 파일명 매칭 오판 패턴
|
||||
|
||||
## 1. 사건 (2026-04-24)
|
||||
|
||||
PD가 `Assets/Character/Sprites/PlayerTestGirl.png` 를 직접 저장 (2026-04-22 23:47). PM은 다음 세션에서 해당 파일을 발견하고도 **Read(이미지) 도구로 실물을 시각 확인하지 않고** "Player 시리즈 추가본"으로 추정. A안 (Player 시리즈 유지 + 이름만 변경) 을 PD께 승인 요청. PD 역질문: **"이미지를 봤냐?"**
|
||||
|
||||
실제 이미지: 보라머리·파란옷·검을 든 **완전 신규 캐릭터** (기존 Player 시리즈와 무관). 구성: 1536×1024, 4×2=8 sprite, 384×512 grid, walk 4 + attack 4 프레임.
|
||||
|
||||
## 2. 근본 원인
|
||||
|
||||
- **리소스 판정 시 시각 확인을 "선택 도구"로 간주** — 파일명 매칭만으로 내용 추정
|
||||
- Read(이미지) 도구 존재 인지는 하나 "파일명이 `PlayerTestGirl.png` → Player 캐릭터의 테스트용 여자 버전" 같은 **언어 매칭 기반 가설을 사실로 간주**
|
||||
- C5 (정직성) 의 특수 외연 위반 — "미확인" 태그 누락
|
||||
|
||||
## 3. 재발 방지 — 4문항 체크리스트 (C31-H 편입 제안)
|
||||
|
||||
리소스(이미지·오디오·3D 모델 등) 판정 시 다음 4문항 **반드시** 통과:
|
||||
|
||||
### 3.1 시각/실측 선행 확인
|
||||
- [ ] 이미지 리소스는 **Read(이미지)** 로 시각 확인 후 판단했는가?
|
||||
- [ ] 오디오 리소스는 메타(duration·channel·sample rate) 로 확인했는가?
|
||||
- [ ] 3D 모델은 폴리곤 수·본 수·머티리얼 리스트 확인했는가?
|
||||
|
||||
### 3.2 파일 시스템 전수 스캔
|
||||
- [ ] `ls -la` 전수 스캔했는가? `head -N`·`tail -N` 축약 금지
|
||||
- [ ] 알파벳 순 전체 파일 목록 확인 완료했는가?
|
||||
|
||||
### 3.3 기존 meta·부속 파일 Read
|
||||
- [ ] `{리소스}.meta` 가 이미 존재하면 Read 후 내용 기반 판단했는가?
|
||||
- [ ] Unity auto-import 결과가 있다면 **guid·spriteMode·slice 개수** 확인했는가?
|
||||
- [ ] 기존 meta 가 PD 요구와 불일치할 경우 **전면 재생성 vs 보존** 결정 근거 명시했는가?
|
||||
|
||||
### 3.4 추정 기반 선택지 금지
|
||||
- [ ] PD 에게 A/B/C 선택지 제시 **전** 실물 확인 완료했는가?
|
||||
- [ ] 선택지 제시 시 **"추정" 태그** 부착했는가? (미확인 상태에서 확신 금지)
|
||||
|
||||
## 4. 위반 시 처분
|
||||
|
||||
- **1회 발견**: 자진 고지 + 실물 확인 후 재제출
|
||||
- **2회 발견**: PM 응답 이전 리소스 판정 감사 체크 (pm-auditor 편입 안건)
|
||||
- **3회 이상**: C23 허위 보고 패턴으로 가중 처분
|
||||
|
||||
## 5. C2-1 적용 — 근본 해결
|
||||
|
||||
- 표면 원인: 파일명 매칭 오판
|
||||
- **근본 원인**: 리소스 판정 시 시각/실측 확인을 **필수 선행 의무가 아닌 선택 도구**로 운용
|
||||
- 근본 해결: **C31-H 체크리스트에 "리소스 판정 시 시각/실측 선행" 항목 추가 + pm-auditor 5-E 감사 영역에 편입 제안**
|
||||
|
||||
## 6. 연관 규칙
|
||||
|
||||
- **C5** 정직성 — 실체 확인 없이 단정형 주장 금지
|
||||
- **C23** 허위 보고·역할 연기 절대 금지 — 실제 tool_use(Read 이미지) 결과 없이 내용 기입 금지
|
||||
- **C31-H** 응답 발신 직전 자기검증 — 리소스 판정 시각 확인 선행 문항 추가 후보
|
||||
- **C2-1** 근본 원인 재정의 선행 의무 — 본 문제의 근본 원인이 "도구 부재"가 아닌 "의무 누락"임을 재정의
|
||||
- **feedback_pm_dev_task_delegation_failure.md** — 3회차 변종의 특수 외연
|
||||
|
||||
## 7. 영구 보존 사유
|
||||
|
||||
본 패턴은 **이미지·오디오·모델·애니메이션·텍스쳐 등 모든 시각/청각 리소스에 재발 가능**. 리소스 기반 의사결정의 기본 규범으로 영구 보존. `tier: constitutional` 지정은 리소스 판정이 프로젝트 방향·캐릭터 결정·기획 세계관에 직접 영향을 미치는 **조직 운영 핵심 지점**이기 때문.
|
||||
|
|
@ -33,7 +33,7 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**.
|
|||
|
||||
| # | 일시 | 지시 요지 | 처리 상태 | 산출물 경로 | 중단 사유 | 사후 조치 |
|
||||
|---|------|----------|----------|-----------|----------|----------|
|
||||
| BT5-Dev | 2026-04-23 | **EerieVillage Phase 3 파일럿 (개발)** — ①Unity git 초기화·자동 sync ②캐릭터 교체·이동·공격·i-frame ③템플릿 분석 | **진행중** | [1·3단계 완료] `9f689c1` 원격 push · `scripts/unity_auto_sync.sh` · `01~03_*.md` 분석 3종 [2단계 v0.2 재위임 완료 2026-04-23 23:40+] **Player.prefab AttackHitbox 블록 append** (fileID `7700000000000000001`, guid `b2c3d4e5...`) + **Enemy.prefab Health 블록 append** (fileID `7700000000000000002`, guid `ffad43bb...`, maxHP=1) + **EditMode 테스트 8종 신설** (`Assets/Tests/Editor/PlayerAttackTests.cs` + asmdef). Scene 자동 전파(Player 1·Enemy 8 PrefabInstance). **PD 수동 → Play 검증 1건**으로 축소(커버리지 ~99%). `feedback_pm_dev_task_delegation_failure.md` 2회차 append 완료 (AI Unity 편집 능력 과소평가 재발) · v0.1 기각안 1번 번복 | `프로젝트/EerieVillage/개발/04_BT5-Dev_2단계_구현보고.md` v0.2 · Unity `Assets/{Prefabs/{Player,Enemy}.prefab, Tests/Editor/*}` · `memory/org/feedback_pm_dev_task_delegation_failure.md` · `공유/대화로그/EerieVillage/2026-04-23.md` `[재위임]` 엔트리 | — | **PM 수행 대기**: pm-auditor 감사 → BT worktree commit → push → Unity 프로젝트는 PD Editor 실행 시 GitAutoSync 자동 push → Play 검증 결과 수령 → 완료 아카이브 이동 |
|
||||
| BT5-Dev | 2026-04-23 | **EerieVillage Phase 3 파일럿 (개발)** — ①Unity git 초기화·자동 sync ②캐릭터 교체·이동·공격·i-frame ③템플릿 분석 ④**PlayerTestGirl 아틀라스 최종 집행** (2026-04-24 추가) | **진행중** | [1·3단계 완료] `9f689c1` 원격 push · `scripts/unity_auto_sync.sh` · `01~03_*.md` 분석 3종 [2단계 v0.2 완료] Player·Enemy prefab 편집 + 8 EditMode tests [**3단계(PlayerTestGirl 아틀라스) 완료 2026-04-24 0003**] PD `PlayerTestGirl.png` 직접 저장 (1536×1024, 4x2 8 sprite, walk 4+attack 4 프레임 신규 캐릭터) → B안 채택 (PlayerIdle·PlayerRun m_PPtrCurves 교체 + PlayerAttack.anim 신설). **meta 재생성** (9→8 sprite, 384×512 grid, guid 유지) · **Idle·Run.anim 전면 재작성** (4 sprite loop) · **PlayerAttack.anim + meta 신설** (guid `c8d7e5a1...`) · **Player.controller 확장** (attack Trigger·Player-Attack State·AnyState/Exit Transition 3종) · **Player.prefab m_Sprite 교체** · **EditMode 테스트 +2** (총 10). C6-1 백업 5종 `bak_20260424_0003`. PD 수동 1건 (Play 검증). `feedback_pm_image_verification_skip.md` 신설 (`tier: constitutional`) + `feedback_pm_dev_task_delegation_failure.md` 3회차 append. 재발 방지 5종 체크리스트 전부 이행 (시각 확인·전수 ls·기존 meta 재활용·guid 충돌 검증·백업 5종) | `프로젝트/EerieVillage/개발/05_PlayerTestGirl_아틀라스_적용.md` · `프로젝트/EerieVillage/개발/04_BT5-Dev_2단계_구현보고.md` v0.2 · Unity `Assets/Character/{Sprites/PlayerTestGirl.png.meta, Animations/{PlayerIdle,PlayerRun,PlayerAttack,Player.controller}}` · `Assets/Prefabs/Player.prefab` · `Assets/Tests/Editor/PlayerAttackTests.cs` · `memory/org/feedback_pm_image_verification_skip.md` (신설) · `memory/org/feedback_pm_dev_task_delegation_failure.md` (3회차) · `공유/대화로그/EerieVillage/2026-04-23.md` `[캐릭터리소스교체최종]` 엔트리 | — | **PM 수행 대기**: pm-auditor 감사 → BT worktree commit → push → Unity 프로젝트는 PD Editor 실행 시 GitAutoSync 자동 push → Play 검증 결과(10 tests green + walk/attack 애니메이션 재생) 수령 → 완료 아카이브 이동 |
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -297,3 +297,79 @@ PD 직접 지시: **"컴포넌트 Add 2건을 AI가 직접 수행. 이전 판단
|
|||
- **C29-3** 인간 검증 예외 — Play 모드 GUI QA 1건만 PD 수동 남김
|
||||
- **C30** Unity 프로젝트 최신 상태 유지 — editor 미실행으로 commit 0, 직접 편집 반영
|
||||
- **C34-11** 절대 경로 — Unity 프로젝트(`E:/EerieVillage/`) 외부 레포 허용, BT 산출물 worktree 상대
|
||||
|
||||
|
||||
## [밤 늦게 → 04-24 0003] BT5-Dev 3단계 — PlayerTestGirl 아틀라스 적용 최종 집행 [캐릭터리소스교체최종]
|
||||
|
||||
**트리거**: PD 직접 지시 "BT5-Dev 캐릭터 리소스 교체 최종 집행. 이전 판정 오류(PM이 이미지 미확인 → Player 시리즈로 단순 이름 매칭) 자진 정정 후 PD가 실제 이미지 PlayerTestGirl.png 를 해당 경로에 직접 저장(이미 완료). 해당 이미지로 아틀라스 구성 + 애니메이션 교체 전량 자동화 수행."
|
||||
|
||||
**실측 경위**:
|
||||
- Read(이미지) 도구로 PlayerTestGirl.png 직접 시각 확인 — **보라머리·파란옷·검을 든 신규 캐릭터** (기존 Player 시리즈와 무관)
|
||||
- 구성: 1536×1024, 4열×2행=8 sprite, 384×512 grid, walk 4 + attack 4 프레임
|
||||
- 기존 PlayerTestGirl.png.meta (Apr 23 00:36 Unity auto-import) 는 9 sprite auto-slice 상태 — PD 요구(4x2 균일 grid)와 불일치. guid(`44ad58ba82191ca4d818108ab01d3baa`) · internalID 8개는 재활용, sprite rect·개수만 재생성
|
||||
|
||||
### 결정: B안 — PlayerIdle·PlayerRun m_PPtrCurves 교체 + PlayerAttack.anim 신설
|
||||
|
||||
**근거**: 기존 Player.controller State Machine 보존 + 최소 회귀 범위 (A안 이미지 미교체 = 지시 위배, C안 State Machine 재편 = 회귀 과다).
|
||||
|
||||
### 기각안
|
||||
|
||||
1. **A안 기각** — PlayerTestGirl 이미지가 기존 Player 시리즈와 **전혀 다른 캐릭터**임을 시각 확인으로 판단. 유지 선택지는 PD 지시 정면 위배
|
||||
2. **C안 기각** — State Machine 재편은 `Player-Idle→Player-Run` velocityX 기반 전환 로직 재설계 필요 → 회귀 리스크 과다
|
||||
3. **"Unity MCP 로 Editor API 호출" 기각** — Unity MCP 이 본 PC 환경에서 script_apply_edits 단일 파일 편집만 가능 (Asset import refresh·TextureImporter.spriteSheet 재생성 불가). YAML 직접 편집이 근본 해결
|
||||
|
||||
### 집행 내역
|
||||
|
||||
1. **C6-1 백업 5종** (`bak_20260424_0003`): PlayerTestGirl.png.meta · PlayerIdle.anim · PlayerRun.anim · Player.controller · Player.prefab
|
||||
2. **PlayerTestGirl.png.meta 재생성**: 9 sprite → 8 sprite (4x2 grid 384×512), guid·internalID 유지
|
||||
3. **PlayerIdle.anim**: m_PPtrCurves 38프레임 → sprite 0~3 4프레임 loop (0.4s, 10fps)
|
||||
4. **PlayerRun.anim**: m_PPtrCurves 29프레임 → sprite 0~3 4프레임 loop (0.25s, 16fps)
|
||||
5. **PlayerAttack.anim 신설**: sprite 4~7 4프레임 non-loop (0.48s, 12fps), guid `c8d7e5a1f9b24e63a7f5d2c8e1b9a4f7` (충돌 없음 grep 검증)
|
||||
6. **Player.controller**: `attack` Trigger 파라미터 신설 + Player-Attack State 신설 (fileID 1102700000000000001) + AnyState→Attack Transition 신설 + Attack→Idle Exit Transition 신설
|
||||
7. **Player.prefab**: SpriteRenderer m_Sprite 교체 (PlayerIdle 21300020 → PlayerTestGirl_0 7882920275377484039)
|
||||
8. **PlayerAttackTests.cs**: 2건 신규 (SpriteRenderer guid 매칭 + Controller attack 파라미터·State 매칭, 총 10 tests)
|
||||
|
||||
### 산출물
|
||||
|
||||
**BT worktree**:
|
||||
- `프로젝트/EerieVillage/개발/05_PlayerTestGirl_아틀라스_적용.md` (신설)
|
||||
- `memory/org/feedback_pm_dev_task_delegation_failure.md` (3회차 append, §8 신규)
|
||||
- `memory/org/feedback_pm_image_verification_skip.md` (신설, `tier: constitutional`)
|
||||
|
||||
**Unity 프로젝트 (외부 레포)**:
|
||||
- `Assets/Character/Sprites/PlayerTestGirl.png.meta` (재생성)
|
||||
- `Assets/Character/Animations/PlayerIdle.anim` (전면 재작성)
|
||||
- `Assets/Character/Animations/PlayerRun.anim` (전면 재작성)
|
||||
- `Assets/Character/Animations/PlayerAttack.anim` + `.meta` (신설)
|
||||
- `Assets/Character/Animations/Player.controller` (파라미터·State·Transition 3종 추가)
|
||||
- `Assets/Prefabs/Player.prefab` (m_Sprite 1줄 교체)
|
||||
- `Assets/Tests/Editor/PlayerAttackTests.cs` (2 tests append)
|
||||
- 백업 5종 (`bak_20260424_0003`)
|
||||
|
||||
### 이전 오류 재발 방지 체크리스트 반영
|
||||
|
||||
| 항목 | 이전 | 금차 |
|
||||
|------|------|------|
|
||||
| 이미지 시각 확인 | 파일명 매칭만 | Read(이미지) 도구로 보라머리·파란옷·검 든 캐릭터 직접 확인 |
|
||||
| ls 전수 | head -20 | ls -la 전수 (PlayerTestGirl.png.meta 기존 존재 발견) |
|
||||
| 기존 meta 재활용 | 신규 작성 | Read 후 guid·internalID 유지, sprite rect·개수만 재생성 |
|
||||
| guid 충돌 검증 | 방치 | grep -hoE "guid: [a-f0-9]{32}" 42개 수집·신규 후보 0건 확인 |
|
||||
| C6-1 백업 | 3종 | 5종 (`bak_20260424_0003`) |
|
||||
|
||||
### 남은 PD 수동 작업 — 1건
|
||||
|
||||
Play 검증 1회 (Unity Editor 실행 → 10 EditMode tests all green 확인 → Play 버튼 → walk/attack 애니메이션 재생 확인). GUI 런타임 QA 성격 (C29-3 인간 검증 예외).
|
||||
|
||||
### 공유 상태
|
||||
내부 공유 (C21-①). BT worktree commit·push PM 재량 (C20). Unity 외부 레포 commit·push 는 PD Editor 실행 시 GitAutoSync hook이 자동 처리.
|
||||
|
||||
### 관련 규칙 준수
|
||||
- **C2-1** 근본 원인 재정의 — "파일명 매칭 오판" 표면 원인 → "시각 확인 의무 누락" 근본 원인 재정의
|
||||
- **C5** 정직성 — Read(이미지) 실제 tool_use 결과 기반 판단
|
||||
- **C6-1** 원본 보호 — 5종 백업 `{원본명}.bak_20260424_0003.{확장자}` 표준 포맷
|
||||
- **C11** 개발 관점 — Animator State 최소 침범 + EditMode 테스트 YAML Regex 기반 회귀 방지
|
||||
- **C23** 허위 보고 금지 — 시각 미확인 상태의 판단 이전에 자진 정정
|
||||
- **C30** Unity 프로젝트 — 외부 레포 E:/EerieVillage 직접 편집 허용
|
||||
- **C34-11** 경로 규약 — Unity 외부 레포는 절대 경로, BT worktree 산출물은 상대 경로
|
||||
- **C36** PM 자율 범위 상한 — "Unity MCP 부재로 불가" 방향 축소 대신 YAML 직접 편집 근본 해결
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,165 @@
|
|||
# 05. PlayerTestGirl 아틀라스 적용 구현 보고
|
||||
|
||||
**작성일**: 2026-04-24
|
||||
**집행**: 개발팀장 Agent (단일 PM 세션)
|
||||
**PD 지시**: "캐릭터 리소스 교체 최종 집행" (2026-04-23~24)
|
||||
**선행 맥락**: `04_BT5-Dev_2단계_구현보고.md` v0.2 (Player·Enemy Component Add 재위임) + PD `PlayerTestGirl.png` 수동 배치 (2026-04-22 23:47)
|
||||
|
||||
---
|
||||
|
||||
## 1. 결정 — B안 채택 근거
|
||||
|
||||
### 1.1 선택지
|
||||
1. **A안**: 기존 Player.png 시리즈(Idle·Run 등 9종) 그대로 유지, 이미지 교체 없음
|
||||
2. **B안 (채택)**: 기존 PlayerIdle.anim·PlayerRun.anim 의 m_PPtrCurves 만 PlayerTestGirl 상단 4프레임으로 교체 + PlayerAttack.anim 신설
|
||||
3. **C안 (기각)**: PlayerIdle·PlayerRun.anim 통합 후 State Machine 재편 — 회귀 리스크 과다
|
||||
|
||||
### 1.2 B안 선택 근거
|
||||
- 기존 Player.controller State Machine 보존 → Idle/Run/Jump/Land/Hurt/Death 전환 로직 미변경
|
||||
- m_PPtrCurves 단순 교체로 회귀 범위 최소
|
||||
- Attack 은 독립 State (Trigger 기반 AnyState→Attack) 신설로 기존 경로 간섭 없음
|
||||
- C11(코드 구조 직관성): 다음 개발자가 읽었을 때 "Idle/Run 애니메이션이 PlayerTestGirl 로 교체됨 + Attack 추가" 로 명료
|
||||
|
||||
### 1.3 기각안 (P24 필수)
|
||||
- **A안 기각**: PD 지시 본문 "해당 이미지로 아틀라스 구성 + 애니메이션 교체" — 명시적 교체 요구
|
||||
- **C안 기각**: State Machine 재편은 범위 과다, Play 모드 검증 없이 commit 시 회귀 위험 과다
|
||||
|
||||
---
|
||||
|
||||
## 2. 집행 내역
|
||||
|
||||
### 2.1 Sprite Slice (재생성)
|
||||
| 항목 | 값 |
|
||||
|------|----|
|
||||
| 파일 | `Assets/Character/Sprites/PlayerTestGirl.png.meta` |
|
||||
| guid | `44ad58ba82191ca4d818108ab01d3baa` (기존 자동 import 결과 유지) |
|
||||
| spriteMode | 2 (Multiple) |
|
||||
| 해상도 | 1536×1024 |
|
||||
| Grid | 4열 × 2행 = 8 sprite |
|
||||
| 셀 크기 | 384 × 512 |
|
||||
| sprite 명명 | `PlayerTestGirl_0` ~ `PlayerTestGirl_7` |
|
||||
| pivot | (0.5, 0.5) center, pivot field (0, 0) → alignment 0 + rect 내부 계산 |
|
||||
| pixelsPerUnit | 100 |
|
||||
| textureType | Sprite (8) |
|
||||
| spriteMeshType | 1 (Tight) |
|
||||
|
||||
**내용 매핑**:
|
||||
- sprite 0~3 (1행, y=512): walk 애니메이션 프레임 1~4 (검 든 채 걷기)
|
||||
- sprite 4~7 (2행, y=0): attack 애니메이션 프레임 1~4 (검 올리기→찌르기→검기→마무리)
|
||||
|
||||
**이전 meta 이슈 (재생성 사유)**:
|
||||
- 기존 meta (Apr 23 00:36 Unity auto-import 생성) 는 9 sprite 로 auto-slice 되어 있었고 rect 좌표가 임의적 (예: x:96 y:580 width:223 height:305)
|
||||
- 4x2 일괄 grid 가 아닌 내용 기반 auto-detection 결과
|
||||
- PD 요구 대로 균일 grid 로 재생성 필요 → guid·internalID 는 유지 (prefab·anim 참조 안정)
|
||||
|
||||
### 2.2 AnimationClip 교체 (방식: 기존 파일 전면 재작성)
|
||||
|
||||
| 파일 | 기존 | 신규 |
|
||||
|------|------|------|
|
||||
| `PlayerIdle.anim` | PlayerIdle.png 38프레임 loop (3.17s) | PlayerTestGirl sprite 0~3 4프레임 loop (0.4s, 10fps) |
|
||||
| `PlayerRun.anim` | PlayerRun.png 29프레임 loop (0.60s) | PlayerTestGirl sprite 0~3 4프레임 loop (0.25s, 16fps) |
|
||||
| `PlayerAttack.anim` | **신규** | PlayerTestGirl sprite 4~7 4프레임 **non-loop** (0.48s, 12fps) |
|
||||
|
||||
**PlayerAttack.anim guid**: `c8d7e5a1f9b24e63a7f5d2c8e1b9a4f7` (기존 42개 guid 와 충돌 없음, grep 검증 완료)
|
||||
|
||||
**SampleRate 차등 근거**:
|
||||
- Idle 10fps: 대기 모션 느긋
|
||||
- Run 16fps: 이동 모션 빠름 (기존 27fps에서 감속, 4프레임 특성상 조정)
|
||||
- Attack 12fps: 중간 속도, PlayerController.attackCooldown 0.5s 내 완결 (0.48s)
|
||||
|
||||
### 2.3 Player.controller 수정
|
||||
1. **신규 파라미터**: `attack` Trigger (m_Type: 9) — 총 7개 파라미터 (기존 6개 + attack)
|
||||
2. **신규 State**: `Player-Attack` (fileID 1102700000000000001)
|
||||
- m_Motion: PlayerAttack.anim (guid c8d7e5a1f9b24e63a7f5d2c8e1b9a4f7)
|
||||
- position: (624, -420, 0)
|
||||
3. **신규 AnyState Transition**: fileID 1101700000000000001
|
||||
- 조건: attack Trigger → Player-Attack
|
||||
- m_HasExitTime: 0 (즉시 전환)
|
||||
- m_TransitionDuration: 0
|
||||
4. **신규 Exit Transition**: fileID 1101700000000000002
|
||||
- Player-Attack → Player-Idle (기본 복귀)
|
||||
- m_ExitTime: 1 (애니메이션 끝난 후)
|
||||
- 조건: 없음 (unconditional)
|
||||
|
||||
### 2.4 Player.prefab
|
||||
- SpriteRenderer `m_Sprite`: PlayerIdle (fileID 21300020) → PlayerTestGirl_0 (fileID 7882920275377484039, guid 44ad58ba82191ca4d818108ab01d3baa)
|
||||
- 런타임에는 Animator Controller 가 덮어쓰므로 미학 기본값만 교체
|
||||
|
||||
### 2.5 EditMode 테스트 신규 2건
|
||||
1. **`Player_Prefab_SpriteRenderer_References_PlayerTestGirl`**: Player.prefab YAML Regex 파싱으로 m_Sprite guid 가 `44ad58ba82191ca4d818108ab01d3baa` 와 일치 검증
|
||||
2. **`Player_Controller_Has_Attack_Parameter_And_State`**: Player.controller YAML Regex 파싱으로 `attack` Trigger(m_Type:9) + Player-Attack State 존재 검증
|
||||
|
||||
**기존 8개 + 신규 2개 = 총 10개 EditMode 테스트**.
|
||||
|
||||
---
|
||||
|
||||
## 3. C6-1 백업 (5종)
|
||||
백업 timestamp: **`20260424_0003`**.
|
||||
|
||||
| 원본 | 백업 |
|
||||
|------|------|
|
||||
| `Assets/Character/Sprites/PlayerTestGirl.png.meta` | `PlayerTestGirl.png.meta.bak_20260424_0003.meta` |
|
||||
| `Assets/Character/Animations/PlayerIdle.anim` | `PlayerIdle.anim.bak_20260424_0003.anim` |
|
||||
| `Assets/Character/Animations/PlayerRun.anim` | `PlayerRun.anim.bak_20260424_0003.anim` |
|
||||
| `Assets/Character/Animations/Player.controller` | `Player.controller.bak_20260424_0003.controller` |
|
||||
| `Assets/Prefabs/Player.prefab` | `Player.prefab.bak_20260424_0003.prefab` |
|
||||
|
||||
롤백 절차: 백업 파일명에서 `.bak_20260424_0003` 제거하여 덮어쓰기.
|
||||
|
||||
---
|
||||
|
||||
## 4. PD 수동 작업 — 최소화 (Play 검증 1회)
|
||||
|
||||
### 4.1 이상적 시나리오
|
||||
1. Unity Editor 재실행
|
||||
2. Asset import 자동 트리거 (meta·anim·controller YAML 변경 감지)
|
||||
3. Play 버튼 → 캐릭터 walk/attack 애니메이션 확인
|
||||
|
||||
### 4.2 예상 시나리오 (안전 측)
|
||||
1. Unity Editor 재실행
|
||||
2. Asset import 확인 (Console에 import 오류 없는지)
|
||||
3. `Window > General > Test Runner` → EditMode → **10 tests all green** 확인
|
||||
4. Play 버튼 → walk 4프레임·attack 4프레임 표시 확인
|
||||
5. 문제 발견 시 즉시 보고 → 개발팀 세션 재호출
|
||||
|
||||
### 4.3 런타임 검증 한계 (C23 진실)
|
||||
- PM 세션에서 Unity Play 모드 실행 **불가**
|
||||
- EditMode 테스트로 **YAML 구조 정합성**까지만 검증
|
||||
- 시각적 애니메이션 재생·Trigger 발동·공격 판정은 PD Play 검증 필수
|
||||
|
||||
---
|
||||
|
||||
## 5. 이전 오류 재발 방지 체크리스트 (PM 요청)
|
||||
|
||||
| 체크 항목 | 이전 실패 | 금차 이행 |
|
||||
|----------|----------|----------|
|
||||
| **리소스 실물 Read(이미지) 시각 확인 선행** | 파일명 매칭만으로 판단 | PlayerTestGirl.png Read 후 보라머리·파란옷·검 든 캐릭터 **직접 확인** → 4x2 8 sprite 구성 현장 확인 |
|
||||
| **전수 ls (head·tail 자르기 금지)** | `head -20` 으로 파일 스캔 | `ls -la "Assets/Character/Sprites/"` 전수 — PlayerTestGirl.png.meta 존재 (Apr 23 00:36) 발견 |
|
||||
| **기존 meta Read 후 guid·구조 재사용** | 신규 meta 작성 시 기존 자동 import 결과 무시 | 기존 meta Read → guid `44ad58ba82191ca4d818108ab01d3baa` + internalID 8개 재활용 |
|
||||
| **guid 충돌 검증** | 충돌 가능성 방치 | `grep -hoE "guid: [a-f0-9]{32}"` 로 42개 기존 guid 수집 + 신규 후보 `c8d7e5a1f9b24e63a7f5d2c8e1b9a4f7` grep 0건 확인 |
|
||||
| **C6-1 백업 5종** | 3종 이하 | meta·Idle.anim·Run.anim·controller·prefab 5종 백업 |
|
||||
|
||||
---
|
||||
|
||||
## 6. 향후 후속 작업 제안
|
||||
|
||||
### 6.1 PD Play 검증 결과에 따른 분기
|
||||
- **정상 동작**: 본 05 보고서 확정 + BT5-Dev 3단계 완결 아카이브
|
||||
- **import 오류**: 개발팀 재위임 + Unity Console 로그 PD 전달
|
||||
- **애니메이션 재생 이상**: m_PPtrCurves fileID·guid 재검증 (fileID 부호 포함 전달 확인)
|
||||
|
||||
### 6.2 기획팀 선행 작업 재합류 (기획팀 Agent 영역)
|
||||
- PlayerTestGirl 애니메이션 4프레임으로 충분한지 기획팀 재미 판단 (P30)
|
||||
- 8프레임·16프레임 확장 시 아틀라스 재발주 여부
|
||||
|
||||
### 6.3 다른 Player 애니메이션 (Jump·Land·Hurt·Death·Spawn·Victory)
|
||||
- PlayerTestGirl 아틀라스에 대응 프레임 부재 → 현 시점 **기존 Player*.png 유지**
|
||||
- 기획팀 캐릭터 교체 완전성 요구 시 추가 아틀라스 발주 (본 05 범위 외)
|
||||
|
||||
---
|
||||
|
||||
## 7. 참조
|
||||
- 기획: `기획/04_전투_기본_스펙.md` (공격 마우스 좌, i-frame 0.6s)
|
||||
- 선행: `개발/04_BT5-Dev_2단계_구현보고.md` v0.2
|
||||
- feedback: `memory/org/feedback_pm_image_verification_skip.md` (본 작업 부산 신설)
|
||||
- feedback: `memory/org/feedback_pm_dev_task_delegation_failure.md` (3회차 append)
|
||||
Loading…
Reference in New Issue