# 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회 재발 누적