BurningTimesAi/프로젝트/EerieVillage/개발/spec/BT12-MVP-A_Phase2B_PDEditor...

265 lines
10 KiB
Markdown
Raw Normal View History

docs(BT12-MVP-A Phase 2-B asset 5 + 후속 정정): 설계서 §2-4 BT11 v0.2 정합 + PD Editor 가이드 + 대화로그 엔트리 10 EerieVillage 외부 레포 commit `755a51c` (asset 5 + meta 5 + folder meta 2 = 12 파일) 정합 + BurningTimes 후속 4 파일 산출물: - 설계서 v1 §2-4 + §7-1 정정 (P01·P12·AW01 한글명·id 정정·정정 이력 추가·기획팀 별도 안건 자진 고지) - BT12-MVP-A_Phase2B_PDEditor가이드.md (신규·B Prefab + C Scene 단계별·field 매핑·검증 영역·회귀 위험) - 대화로그 엔트리 10 (dev-team-lead 첫 정합 호출 + Sonnet 위임 + pm-auditor 검색 경로 오진 자성 + 통합 재감사 Pass) - 개발팀 PD 지시 로그 BT12-MVP-A 갱신 (Phase 2-B asset 5 산출물·PM 후속 대기 5종) C49 표준 - Phase 1 dev-team-lead Opus 첫 정합 + Phase 2 Sonnet 위임 + Phase 3 PM 검증 C42-7 + C44 - pm-auditor 검색 경로 오진 영역 본 PM 직접 재검증·실측 인용 정합 C35-9 매니페스트 등록 + pm-auditor 통합 재감사 Pass dev-team-lead 자진 고지 - 설계서 §2-4 BT11-Plan v0.2 정합 X 정정 적용 본 PM 자성 누적 3건: 1. dev-team-lead 호출 분량 추정 50~80K → 실제 116K (C50 정확도 ↑ 의무) 2. pm-auditor 의뢰문 외부 레포 경로 명시 부족 (정정 적용) 3. dev-team-lead Phase 1 자성 영역 본 PM BT11 v0.2 grep 검증 부족 pm-auditor 자체 자성 (Critical 자체 보고): - 직전 호출 영역 검색 경로 오진 (C5·C44·C42-D 위반) - 헌법급 feedback `feedback_pm_auditor_search_scope_external_repo` 신설 의무 (별도 commit) 후속 영역: - B (Prefab) + C (Scene) PD Editor 직접 작업 (가이드 정합) - Phase 3 dev-team-lead 통합 검증 - 기획팀 별도 안건 (`01_카드_풀.md` line 114 P12 = "도약강화" 정정)
2026-05-08 10:18:10 +00:00
# BT12-MVP-A Phase 2-B — PD Editor 직접 가이드 (B Prefab + C Scene 통합)
**작성**: 총괄PM (dev-team-lead Phase 1 보고서 §1-3·§2 인용)
**일자**: 2026-05-08
**대상**: PD Editor 영역 직접 작업
**범위**: SkillSelectionCanvas.prefab + Ingame.unity Scene 통합
---
## 0. 배경
BT12-MVP-A Phase 2-B 잔여 3 영역 중:
- **A. asset 5장** = ✅ 완료 (EerieVillage commit `755a51c` 영역)
- **B. SkillSelectionCanvas.prefab** = 본 가이드 §2
- **C. Scene 통합** = 본 가이드 §3
dev-team-lead Phase 1 권고 = B·C 영역 PD Editor 직접 (Unity Editor 시각 검증·layout 정밀 영역). yaml 직접 Write = 회귀 위험 큼·비권고.
---
## 1. 사전 환경 점검
| 점검 | 정합 |
|------|------|
| EerieVillage 영역 git pull (commit `755a51c`까지) | 의무 |
| Unity Editor 영역 EerieVillage 프로젝트 열기 | 의무 |
| Asset Refresh (Ctrl+R) | 의무 — asset 5장 import 확증 |
| Console 영역 error 0건 | 의무 |
| Project 패널 영역 `Assets/Data/SkillPlaceholders/` 영역 5장 표시 정합 | 검증 |
---
## 2. B 영역 — SkillSelectionCanvas.prefab 작성
### 2-1. 신규 Prefab 생성
1. Project 패널 → `Assets/Prefabs/UI/` 폴더 우클릭 → Create → Prefab Variant 또는 Create Empty Prefab
2. 파일명: `SkillSelectionCanvas`
3. 더블클릭 → Prefab 편집 모드
### 2-2. Hierarchy 구조 (dev-team-lead §1-3 정합)
```
SkillSelectionCanvas (root)
├ Canvas (Screen Space - Overlay·Sort Order=200)
├ CanvasScaler (Scale With Screen Size·1080×1920·Match=0.5)
├ GraphicRaycaster
├ SkillSelectionUI (script·MyUI namespace)
└ SkillSelectionPanel (자식)
├ Image (반투명 검정 r:0 g:0 b:0 a:0.78)
├ RectTransform (stretch-stretch·offset 0,0,0,0)
├── Header
│ ├ TitleText (TextMeshProUGUI·"기술 선택"·48pt·Bold·Center)
│ └ CloseButton (Button + Image + TextMeshProUGUI "✕")
├── CardArea (HorizontalLayoutGroup·spacing 40)
│ ├ SkillCardSlot1 (자식 8개·아래 §2-3 영역)
│ ├ SkillCardSlot2
│ └ SkillCardSlot3
└── Footer
├ PointText (TextMeshProUGUI·"남은 포인트: 1")
└ ConfirmButton (Button + TextMeshProUGUI "확인")
```
### 2-3. SkillCardSlot 자식 영역 (3 슬롯 동일)
각 SkillCardSlot 영역 8 자식 + SkillCardSlot 스크립트 부착:
1. **TopBanner** (Image) — 상단 색상 배너 (등급별 자동 변경)
2. **NameText** (TextMeshProUGUI) — 카드 이름 한글
3. **IconArea** (GameObject 부모)
- **GlowEffect** (Image) — 동심원 빛
- **Icon** (Image) — 원형 아이콘
4. **LevelText** (TextMeshProUGUI) — "레벨 N" 또는 "최대"
5. **DescriptionText** (TextMeshProUGUI) — 효과 설명 3~4 라인
6. **ClickArea** (Button) — 전체 카드 영역 stretch
7. **HighlightFrame** (Image·기본 inactive) — 선택 시 활성
### 2-4. SkillSelectionUI 스크립트 영역 reference 매핑
Inspector 영역 SkillSelectionUI component 영역 다음 18 field 영역 reference 매핑:
| Field | 매핑 대상 |
|-------|---------|
| `_rootPanel` | SkillSelectionPanel GameObject |
| `_titleText` | Header → TitleText |
| `_closeButton` | Header → CloseButton |
| `_slot1` | CardArea → SkillCardSlot1 |
| `_slot2` | CardArea → SkillCardSlot2 |
| `_slot3` | CardArea → SkillCardSlot3 |
| `_pointText` | Footer → PointText |
| `_confirmButton` | Footer → ConfirmButton |
### 2-5. SkillCardSlot 스크립트 영역 reference 매핑 (각 3 슬롯)
| Field | 매핑 대상 |
|-------|---------|
| `_topBanner` | TopBanner |
| `_nameText` | NameText |
| `_glowEffect` | IconArea → GlowEffect |
| `_icon` | IconArea → Icon |
| `_levelText` | LevelText |
| `_descriptionText` | DescriptionText |
| `_clickArea` | ClickArea (Button) |
| `_highlightFrame` | HighlightFrame |
### 2-6. 색상 영역 default (PD 예시 정합·SkillCardSlot.cs:34-36)
- Common 청록 = (0.30, 0.70, 0.70, 1.0)
- Rare 노랑 = (0.95, 0.70, 0.25, 1.0)
- Max 빨강 = (0.90, 0.30, 0.30, 1.0)
### 2-7. Sprite placeholder 영역
현 시점 sprite asset 부재 → 다음 fallback:
- 카드 배경 = Unity 기본 white sprite + 색상 변경 또는 9-slice null
- 원형 아이콘 = Unity 기본 `Knob` sprite 또는 `UISprite` fallback
- 동심원 빛 = sprite null → `_glowEffect.enabled = false` (SkillCardSlot.cs 영역 자동 처리)
- 아이콘 영역 자체 = `{fileID: 0}` (asset 영역 정합) → `_icon.enabled = false` 자동
### 2-8. Prefab 저장
1. Prefab 편집 모드 → Save (Ctrl+S)
2. Project 패널 영역 `Assets/Prefabs/UI/SkillSelectionCanvas.prefab` 정합 확증
---
## 3. C 영역 — Scene `Ingame.unity` 통합
### 3-1. Scene 열기
1. Project → `Assets/Scenes/Ingame.unity` 더블클릭
2. Hierarchy 영역 기존 GameObject 카탈로그 확증 (Player·Enemies·Foreground·IngameCanvas 등)
### 3-2. `[LevelUpManager]` GameObject 추가
1. Hierarchy 영역 root level 우클릭 → Create Empty
2. 이름: `[LevelUpManager]`
3. position: 0, 0, 0
### 3-3. LevelUpManager 컴포넌트 부착
1. `[LevelUpManager]` 선택 → Inspector → Add Component
2. `LevelUpManager` 검색 → 부착
3. Inspector 영역 field 매핑:
- `_pool`: 자식 SkillCardPool 영역 (다음 §3-4 영역)
- `_ui`: Scene 영역 SkillSelectionCanvas 인스턴스 영역 SkillSelectionUI component (다음 §3-5 영역)
### 3-4. SkillCardPlaceholderPool 컴포넌트 부착
1. `[LevelUpManager]` 영역 자식 GameObject 생성 또는 동일 GameObject 영역 Add Component
2. `SkillCardPlaceholderPool` 검색 → 부착
3. Inspector 영역 `_allCards` (List<SkillCardPlaceholder>) 영역:
- Element 0 → Project 영역 `A01_jineonbu.asset` drag
- Element 1 → `A05_hagikjin.asset`
- Element 2 → `P01_bonghwanggyeok.asset`
- Element 3 → `P12_saengmyeongkkot.asset`
- Element 4 → `AW01_cheonbugyeongmun.asset`
### 3-5. SkillSelectionCanvas Prefab 인스턴스 추가
1. Project → `Assets/Prefabs/UI/SkillSelectionCanvas.prefab` Hierarchy 영역 root level drag
2. 인스턴스 이름: `SkillSelectionCanvas` (자동)
3. 인스턴스 영역 SkillSelectionUI component 영역 자동 정합 (Prefab 영역 reference 매핑 정합)
### 3-6. LevelUpManager `_ui` field reference 매핑
1. `[LevelUpManager]` 선택 → Inspector → LevelUpManager component
2. `_ui` field → Hierarchy 영역 SkillSelectionCanvas 인스턴스 → SkillSelectionUI component drag
### 3-7. Scene 저장
1. File → Save Scene (Ctrl+S)
2. Project 영역 `Ingame.unity` 영역 변경 확증
---
## 4. 검증 영역
### 4-1. Editor 영역 시각 검증
- Hierarchy 영역 `[LevelUpManager]` + SkillSelectionCanvas 정합 표시
- Inspector 영역 LevelUpManager `_pool`·`_ui` 정합 매핑 표시
- Inspector 영역 SkillCardPlaceholderPool `_allCards` 5장 표시
- Inspector 영역 SkillSelectionUI 18 field 정합 매핑 표시
- Inspector 영역 SkillCardSlot ×3 영역 8 field 각 정합 매핑 표시
### 4-2. Play 영역 검증
1. Play 버튼
2. 기존 게임플레이 정합 (Player·Enemy·Foreground 영역 회귀 X 확증)
3. 적 처치 → Console 영역 출력:
- `[ExperienceSystem] OnEnemyKilled: +5 XP`
- `[PlayerProgression] GainXP: 5`
4. 누적 XP 영역 LevelXPTableLoader 영역 임계 도달 시:
- `[LevelUpManager] HandleLevelUp Lv.2`
- 화면 영역 SkillSelectionCanvas 표시 (3 카드 노출)
- Time.timeScale = 0 (게임 일시정지)
- 카드 클릭 → highlight 표시
- 확인 버튼 → SkillSelectionCanvas Hide·Time.timeScale = 1·게임 재개
### 4-3. 회귀 검증 (Phase 1 §5-1 영역 정합)
| 기존 영역 | 영향 X 확증 |
|------|------|
| Enemy 16 인스턴스 patrol | ✅ 정합 |
| Player 컨트롤 | ✅ 정합 |
| Foreground·Background·Tilemap | ✅ 정합 |
| 기존 IngameCanvas/IngameUI/IngameChoiceSkillUI | ✅ 별도 root Canvas (Sort Order 분리) |
| BT7-Dev 자동 발동 영역 (Time.timeScale 영역) | 검증 의무 (Phase 3 영역) |
---
## 5. 회귀 위험 영역
| 영역 | 등급 | 대응 |
|------|------|------|
| 신규 GameObject root level 추가 | 낮음 | 기존 fileID 영향 X |
| SkillSelectionCanvas Prefab 인스턴스 추가 | 낮음 | 신규 root Canvas |
| Time.timeScale = 0 영역 BT7-Dev 자동 발동 | 중 | Phase 3 영역 검증 |
| Player.prefab 영역 PlayerProgression 명시 부착 | X | 자동 부착 영역 (PlayerController.Awake cs:95-97) — 변경 불필요 |
| EnemyDeath ExperienceSystem hook | X | Phase 2-A 영역 정착 |
| Scene `Ingame.unity` 영역 320,819 라인 영역 | 낮음 | 신규 추가만·기존 변경 X |
---
## 6. 후속 영역
### 6-1. PD 직접 작업 완료 후
1. Unity Editor 영역 Scene 저장 (`Ingame.unity`)
2. Prefab 저장 (`SkillSelectionCanvas.prefab`)
3. EerieVillage 영역 git status 확증:
- `Assets/Prefabs/UI/SkillSelectionCanvas.prefab` (신규)
- `Assets/Prefabs/UI/SkillSelectionCanvas.prefab.meta` (신규)
- `Assets/Scenes/Ingame.unity` (수정)
4. PD 또는 PM 영역 commit·push (BT12-MVP-A Phase 2-B Editor 통합)
### 6-2. Phase 3 dev-team-lead 검증
- BT12-MVP-A 통합 검증 (Phase 1 + 2-A + 2-B asset + 2-B Editor 통합)
- 회귀 영역 (BT5-Dev·BT7-Dev·기존 IngameCanvas) 영역 영향 X 확증
- 60종 카드 효과 영역 (BT12-Dev 본격) 영역 진행 영역 결정
### 6-3. icon sprite asset 영역 차기
- placeholder sprite 5장 영역 (하트·검·방패·바람·달 등) 별도 영역 작업
- 5 asset 영역 icon field 영역 sprite reference 매핑
---
## 7. 관련 자료
- **Phase 1 설계서**: [BT12-MVP-A_설계_v1.md](BT12-MVP-A_설계_v1.md) §2 신규 컴포넌트·§5 UI Prefab 구조·§7 Phase 영역
- **dev-team-lead Phase 1 분석 보고서**: 본 세션 직전 호출 결과 (대화로그 영역 영구 보존)
- **EerieVillage commit `755a51c`**: BT12-MVP-A Phase 2-B asset 5 정착
- **EerieVillage commit `5b2b753`**: Phase 2-B 코드 (UI 컴포넌트 2 + LevelUpManager 통합)
- **EerieVillage commit `047661c`**: Phase 2-A 시스템 코드 + JSON 테이블
---
**본 가이드 작성 = 총괄PM**·dev-team-lead Phase 1 권고 정합·PD Editor 직접 영역 단계별 절차 영역.