BurningTimesAi/공유/조직공지/2026-05-18_BT12-Dev-Clone_세...

206 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BT12-Dev-Clone 세션 종결 인수인계 (2026-05-18)
> **세션 영역**: 2026-05-15 ~ 2026-05-18
> **주 안건**: BT12-Dev-Clone — A10 분신 스킬 4단계 완전 구현 + 본 PM 자성 #1~#7 누적
> **commit 누적**: EerieVillage 외부 git 15건 + BT 레포 1건 (`72ee04a`) + 본 commit (post-commit)
---
## 1. 본 세션 작업 누적
### 1-A. 세션 초반 (2026-04-24~25 영역 영역 누적 commit)
- **BT11-Plan 완료** (`72ee04a`) — 60종 카드 컨셉 표 + CSV v0.3 + 캐주얼 명명
- **BT12 통합** — C48·C49·C50 신설 + 5종 에이전트 본문 인용 + PD 결정 3건 채택 (안건 1 B 잠정 절충·안건 2 C 병존·안건 3 A PM 직접)
### 1-B. BT12-Dev-Clone (2026-05-15 ~ 2026-05-18)
#### PD 직접 지시 (2026-05-15)
> "분신 스킬 구현 — 플레이어 x 1 뒤쪽 반투명 분신·동일 스킬·50% 반감·0.5초 딜레이"
#### PD 결정 4건 (2026-05-15)
| # | PD 결정 |
|---|---------|
| 1 | BaseCooldown 25초 (PM 1차 30 → 조정) |
| 2 | MinionLifetime **12초 자동 소멸** + Singleton (영구 1기 → 변경) |
| 3 | facing 고정 |
| 4 | 무적 = Collider 미부착 |
| 5 | Lv 업 시 분신 수 X · 지속시간+데미지 비율(%)↑ (balance 후속) |
#### C49 표준 프로세스 4단계 — 단계적 진행 + 확인 시점 보고
| 단계 | 작업 | EerieVillage commit |
|------|------|---------------------|
| α | CloneInstance.cs (218 라인) + CloneEffector.cs (24 라인) 신규 | `171506e` |
| β | PlayerSkillInventory·ActiveSkillRuntime·SkillFireEvent·SkillRuntimeFactory 수정 (4) | `171506e` |
| γ | GetSpawnAnchor·GetSpawnFacing helper + 6 Effector 분기 (Projectile·Laser·MeleeArea·LightningStrike·PoisonSwamp·SpiritFire) | `171506e` |
| δ | A10_bunsin.asset + CloneSkillTests.cs EditMode 7건 | `171506e` |
#### 컴파일 오류 fix 누적 (본 PM 자성 #1~#5)
| # | 자성 영역 | EerieVillage commit |
|---|-----------|---------------------|
| 1 | CloneInstance namespace 추정 (`Events` 부재) | `70c98dd` |
| 2 | asmdef `autoReferenced` 추정 (main reference 자동 X) | `618525d` |
| 3 | asmdef 메커니즘 추정 (default assembly 격리) → asmdef 삭제 | `9b955ee` |
| 4 | C# event 외부 `Invoke()` 추정 (CS0070) → `RaisePlayerSkillFired` 메서드 | `a5fcab0` |
| 5 | Test assembly `internal` 접근 추정 (CS0117·CS1061) → `public` | `13b7c36` |
**PD 직접 지시** (자성 #5 후) — "MCP로 검증한 후 보고할 수 없어?" → 본 PM **모든 fix 영역 MCP 사전 검증 강제 채택** (`refresh_unity`·`read_console`·`run_tests`·`get_test_job`).
**MCP 검증 통과**:
- 컴파일 오류 0
- EditMode CloneSkillTests 7건 전수 green (T01~T07·0.7초)
#### PD 후속 영역 fix 누적 (2026-05-18)
| # | PD 보고 | EerieVillage commit |
|---|---------|---------------------|
| - | 판정 박스 시각화 off | `931d8c9` |
| - | 1번키 영역 A10 매핑 강제 + Minion CardId 분기 | `30b765b` |
| - | Player 자식 부착 + Fire 영역 hook + localScale 정합 | `bacc76d` |
| - | FIRE_DELAY 0.5 → 0.25 (50% 단축) | `d603e59` |
| - | 분신 크기 lossyScale 정합 | `e9f9d72` |
| - | 분신 이동 방향 flipX 정정 (deltaX 영역) | `c3749dd` |
| - | worldPos 동조 + SPAWN_OFFSET 1.0 → 0.5 (50% 단축) | `081c771` |
| - | 분신 flipX Player 즉시 동조 (deltaX 폐기·자성 #6·#7) | `779f316` |
| - | 분신 facing 매 frame 갱신 (투사체 방향) + Player IsAlive 영역 분신 destroy | `412dedb` |
---
## 2. 산출물 영역
### Unity 외부 git (E:/EerieVillage)
| 분류 | 경로 |
|------|------|
| 신규 | `Assets/Scripts/Skills/Effectors/CloneInstance.cs` |
| 신규 | `Assets/Scripts/Skills/Effectors/CloneEffector.cs` |
| 신규 | `Assets/Resources/Skills/Active/A10_bunsin.asset` |
| 신규 | `Assets/Tests/Editor/CloneSkillTests.cs` (EditMode 7건) |
| 수정 | `Assets/Scripts/Skills/Runtime/PlayerSkillInventory.cs` (필드·event·helper·Raise 메서드) |
| 수정 | `Assets/Scripts/Skills/Runtime/ActiveSkillRuntime.cs` (Fire hook·50% 분기) |
| 수정 | `Assets/Scripts/Skills/Events/SkillFireEvent.cs` (Minion CardId 분기·Cleanup reset) |
| 수정 | `Assets/Scripts/Skills/Runtime/SkillRuntimeFactory.cs` (A10 추가) |
| 수정 | `Assets/Scripts/Skills/Effectors/{ProjectileSpawner·LaserSpawner·MeleeAreaSpawner·LightningStrikeSpawner·PoisonSwampSpawner·SpiritFireSpawner}.cs` (6 Effector 분기) |
| 수정 | `Assets/Scripts/Skills/Effectors/HitboxDebug.cs` (toggle off) |
| 수정 | `Assets/Scripts/Skills/Test/TestSkillFireOn1to5.cs` (1번키 A10·Minion CardId) |
| 삭제 | `Assets/Tests/Editor/EerieVillage.Tests.Editor.asmdef` (default Assembly-CSharp-Editor 흡수) |
### BT 레포 (E:/BurningTimes)
| 분류 | 경로 |
|------|------|
| 수정 | `프로젝트/EerieVillage/개발/spec/스킬_시스템_설계_v1.md` §A10 신설 (1063~1586·+512 라인) + 잔존 5 위치 PD 결정 정합 |
| 수정 | `프로젝트/EerieVillage/개발/spec/스킬_이펙트_확정_v1.md` §3 A10 + §4 변경 이력 |
| 수정 | `공유/PD_지시_트래킹/개발팀_PD_지시_로그.md` BT12-Dev-Clone 완료 표기 |
| 신규 | `공유/대화로그/EerieVillage/2026-05-15.md` (BT12-Dev-Clone 1단계·PD 결정 4건) |
| 신규 | `공유/조직공지/2026-05-18_BT12-Dev-Clone_세션종결인수인계.md` (본 문서) |
---
## 3. PD 명세 5 + PD 결정 4 + PD 후속 영역 정합 확정
| 항목 | 코드 위치 |
|------|----------|
| 위치 (facing 반대 0.5 영역) | CloneInstance.SyncSpriteAndPosition `playerWorldPos + (-signX * 0.5)` |
| 외형 (반투명 alpha 0.5) | SpawnOrReplace `color.a = 0.5f` |
| 동일 스킬 사용 | OnPlayerSkillFired hook → EnqueuePlayerFire → FireAtClonePosition |
| 50% 반감 | ActiveSkillRuntime.CalculateEffectiveDamage `IsCloneFireActive ? × 0.5f` |
| 0.25초 딜레이 | `FIRE_DELAY_SECONDS = 0.25f` (PD 50% 단축) |
| BaseCooldown 25 | A10_bunsin.asset |
| lifetime 12초 자동 소멸 | CloneInstance.Update `Time.unscaledTime - _spawnTime >= 12` |
| facing 매 frame 갱신 | SyncSpriteAndPosition `_spawnFacingX = facing.x < 0 ? -1 : 1` |
| 무적 (Collider 미부착) | SpawnOrReplace 영역 Collider/Rigidbody2D 미부착 |
| 분신 sprite·flipX 매 frame Player 동조 | SyncSpriteAndPosition `_cloneSr.sprite = _playerSr.sprite` + `flipX = _playerSr.flipX` |
| 위치 영역 영역 영역 (MoveTowards) | `Vector3.MoveTowards(currentPos, _targetLocalPos, MOVE_SPEED * Time.deltaTime)` (MOVE_SPEED=3f) |
| Player IsAlive 영역 분신 즉시 destroy | Update 영역 `if (!playerHealth.IsAlive) Destroy(gameObject)` |
| 1번키 영역 A10 강제 매핑 | TestSkillFireOn1to5.EnsureRuntimes 영역 `Resources.Load("Skills/Active/A10_bunsin")` |
| Lv 업 메커니즘 | 1차 미반영 (balance-designer 후속) |
---
## 4. 본 PM 자성 #1~#7 누적 — C39-10 위반 패턴
`feedback_new_code_existing_system_dependency_unmeasured` 7회 재발 — 본 BT12-Dev-Clone 단일 안건.
| # | 영역 | 추정 vs 실제 |
|---|------|------------|
| 1 | CloneInstance namespace | `EerieVillage.Skills.Events` 추정 → 실제 `EerieVillage.Skills` |
| 2 | asmdef autoReferenced | main 자동 reference 추정 → 실제 X (default assembly 격리) |
| 3 | asmdef 메커니즘 | autoReferenced 해결 추정 → 실제 asmdef 자체 삭제 필요 |
| 4 | C# event 외부 invoke | `.Invoke()` 가능 추정 → 실제 CS0070 |
| 5 | Test assembly internal 접근 | internal 동일 assembly 영역 가정 → 실제 X (별도 assembly) |
| 6 | 분신 flipX 영역 영역 (deltaX 영역) | deltaX 영역 영역 영역 영역 추정 → 실제 Player.flipX 영역 영역 영역 영역 영역 |
| 7 | PlayerController 영역 영역 영역 영역 | spriteRenderer.flipX 영역 영역 영역 사전 실측 X (L306·L311 영역 사전 Grep X) |
**근본 패턴**: 본 PM 영역 C# 언어·Unity asmdef·기존 코드 영역 사전 실측 X·7회 누적.
**신뢰 회복 영역 (PD 직접 지시 채택)**: 이후 모든 코드 fix MCP 사전 검증 강제 (`refresh_unity` + `read_console` + `run_tests`).
---
## 5. BT12-Dev-Clone 최종 동작 영역 (PD 확정)
PD Refresh 후 영역 검증 정합:
| 항목 | 동작 |
|------|------|
| 1번키 | A10 분신 spawn (Player 반대 방향 0.5 유닛·반투명 0.5·크기 동일·무적·12초 자동 소멸) |
| Player 영역 영역 | 분신 영역 영역 영역 영역 영역 (MoveTowards·달리는 sprite·flipX 동조) |
| Player 영역 영역 | 분신 영역 영역 영역 영역 영역 영역 영역 → 자연 영역 |
| Player 스킬 발동 (2·3·4·5 키) | 분신 영역 0.25초 후 동일 스킬 미러링 (50% 데미지·분신 위치·매 frame Player facing 정합) |
| 25초 재발동 | 기존 분신 destroy + 새 분신 spawn (Singleton) |
| Player Death | 분신 즉시 destroy (영역 영역 X) |
---
## 6. 활성 PD 지시 영역 (세션 종결 시점)
| 안건 | 상태 | 트리거 |
|------|------|--------|
| **BT12-Dev-Clone** | **완료 2026-05-18 (본 commit 영역 영역 영역)** | 본 commit 후 완료 아카이브 이동 |
| BT12-Dev-Vis | 진행중 | HUD·Icon 잔여 (PD 후속) |
| BT12-Dev | 보류 | 기획서 v0.3 확정 대기 |
| BT12-MVP-A | D안 완료 | 단계 4 PD Play 검증 |
| BT12-Dev-Death | 완료 영역 영역 | 활성 영역 잔존·아카이브 이동 |
| BT7-Dev | 진행중 | PD Editor Play 검증 |
| BT5-Dev | 진행중 | 좁은 영역 Enemy 패턴 영역 (PD 재요청) |
| BT7-Plan | 진행중 | 카드 시스템 개정 영역 영역 |
---
## 7. 다음 세션 첫 프롬프트 템플릿 (C40-2)
```
세션 갱신해. BT12-Dev-Clone 완료 영역 영역 + 활성 안건 영역 영역 영역 보고.
직전 commit (E:/EerieVillage `412dedb` + BT 레포 본 세션 commit) 정합 확인.
```
또는:
```
BT12 보류 영역 영역 (기획서 확정) 또는 BT7-Plan 카드 시스템 개정 영역 우선순위 결정 영역.
```
---
## 8. PM 후속 영역 (본 commit 후)
1. **BT12-Dev-Clone 활성 → 완료 아카이브 이동** — P19 정합·다음 commit
2. **balance-designer 이관 안건** — 분신 Lv 업 지속시간·데미지 비율(%) Lv별 수치
3. **PD 결정 우선순위** — BT12-Dev 보류 해제 (기획서 확정 영역) vs BT7-Plan 카드 시스템 개정 vs 다른 안건
---
## 9. 관련 규칙·feedback
- C1 (PD 지시 = 승인) · C29 (자율 수행) · C32 (대화로그) · C40 (세션 종결 완결성) · C42 (사전 검증) · C44 (팩트 우선) · C46 (정체성) · C47 (능동 추론)
- **C43 호칭 라우팅** (개발팀 직접 수령)
- **C48 시범** (PM 직접 처리·Task 회피)
- **C49 시범** (개발팀장 Opus 설계 → PM 직접 작업 → MCP 검증)
- **C50 적용** (Phase 2 60~80K 사전 승인·옵션 b 4분할 채택)
- **feedback_new_code_existing_system_dependency_unmeasured** 7회 재발 누적