diff --git a/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md b/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md index ef31398..f8211ba 100644 --- a/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md +++ b/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md @@ -33,7 +33,7 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**. | # | 일시 | 지시 요지 | 처리 상태 | 산출물 경로 | 중단 사유 | 사후 조치 | |---|------|----------|----------|-----------|----------|----------| -| BT12-Dev-Vis | 2026-05-09 | **PlayerSkillInventory 등록 시각화 지시** — PD 직접 발화: "PlayerSkillInventory 등록이 되었는지 어떻게 판단해야하지? 시각적인 변화가 없으니 확인이 불가능해. 유니티 기본 제공 리소스를 활용해도 좋으니 보이게 해줘." | **진행중** | 신규 `Assets/Scripts/MyUI/SkillInventoryHUD.cs` (OnGUI 좌상단·장착 액티브 DisplayName·Lv·CooldownRemaining/EffectiveCooldown·패시브 카운트). PlayerController.Awake 자동 부착. 보강: ProjectileSpawner fallback prefab에 SpriteRenderer + 동적 흰색 원 sprite + 속성별 색상 (Fire 주황·Frost 하늘·Dark 보라·Lightning 노랑·Physical 흰). Unity 기본 자원 활용 — Texture2D 동적 생성 16×16 알파 원. | — | **PM 후속**: PD Editor Refresh + Play 검증 → 카드 선택 후 좌상단 HUD에 카드명·Lv·CD 노출 확인 + 투사체 색상 원 시각 노출 확인 → 결과 보고 → 완료 아카이브 | +| BT12-Dev-Vis | 2026-05-09 | **PlayerSkillInventory 등록 시각화 지시** — PD 직접 발화: "PlayerSkillInventory 등록이 되었는지 어떻게 판단해야하지? 시각적인 변화가 없으니 확인이 불가능해. 유니티 기본 제공 리소스를 활용해도 좋으니 보이게 해줘." | **진행중** | 신규 `Assets/Scripts/MyUI/SkillInventoryHUD.cs` (OnGUI 좌상단·장착 액티브 DisplayName·Lv·CooldownRemaining/EffectiveCooldown·패시브 카운트). PlayerController.Awake 자동 부착. 보강: ProjectileSpawner fallback prefab에 SpriteRenderer + 동적 흰색 원 sprite + 속성별 색상 (Fire 주황·Frost 하늘·Dark 보라·Lightning 노랑·Physical 흰). Unity 기본 자원 활용 — Texture2D 동적 생성 16×16 알파 원. **[이펙트 개선 완료 2026-05-13]** (PD 지시 "이펙트 개선작업은 완료처리"). 본 세션 (`cranky-wescoff-e855b0`) 누적: (1) 5 스킬 통합 + 1~5 키 발사 시스템 — A02·A04·A05·A_Laser·A13 (EerieVillage `2ebf313`). (2) Inspector 즉시 반영 필드 확장 — HitboxSize·OffsetDistance(Vector2)·OffsetXY·FxRotation·HitFxScale·DamageFrameDelay·EnableRepeatDamage·MaxHitCount·RepeatFrameInterval. (3) hit 모션 + flash 연출 (붉은색·alpha 50%·1 frame) — Animator self-loop transition + Health.DecrementBypassInvulnWithHit. (4) Scene 잔존 박스·FX 6개 cleanup + HideFlags.DontSave 8 spawn 지점 (EerieVillage `60e28e3`) — Edit Mode execute_code 측정 시 Scene 오염 방지 표준 확립. (5) FxRotation 박스 미적용 분리 (EerieVillage `ea7d32f`) — 박스(판정) = facing 만 · 이펙트(시각) = facing + FxRotation. 4 case 검증 (facing R/L × FxRotation 0/90 박스 무반응·facing 좌/우 정확 반전). (6) A05 좌우 베기 이펙트 Player 동조 (EerieVillage `f6c6eb5`) — MeleeAreaSpawner.SetParent(true) 추가·Player 전진 시 이펙트 밀림 정정 (Δ+2.0 동조 측정). 양 레포 push 정합. | — | **이펙트 개선 영역 = 완료 처리.** HUD·Icon UI·Layer Lab 카드 정합 등 잔여 사항은 PD 후속 결정 대기. 인수인계서: `공유/조직공지/2026-05-13_BT12-Dev_세션종결인수인계.md` | | BT12-Dev-Death | 2026-05-09 | **스킬 습득 후 사망 버그 지시** — PD 직접 발화: "스킬 습득 후 일정시간이 지나면 왜 플레이어가 갑자기 죽는거지? 버그를 수정해줘." | **완료 2026-05-10 (PD 정합 확인)·아카이브 이동 영역** | (1) Projectile.OnTriggerEnter2D에 PlayerController 명시 차단 (defensive proxy·자기 hit 차단). (2) Health.Decrement·DecrementSilent·Die에 Debug.Log + System.Environment.StackTrace 추가 (사망 호출자 추적). **(3) 근본 fix 1 2026-05-09 EerieVillage `b37b4a6`**: HealthIsZero.Execute에 sender 검증 가드 추가 (PlayerController 보유 Health만 PlayerDeath 발화). **인수인계서 가설(EnemyController patrol → PlayerEnemyCollision) 부정** — Player Decrement 로그 부재. **근본 원인 1**: HealthIsZero.Execute가 health sender 검증 없이 무차별 Schedule() 발화. BT12-Dev Phase 2-B 투사체가 사상 처음 Enemy.Health.Decrement → Enemy의 HealthIsZero가 PlayerDeath 직결 노출. **PD 결정 (2026-05-09) "1 즉시 적용해"** — A안 1줄 fix 즉시 적용. pm-auditor Pass + Minor 1 (매니페스트 등록 정정 적용) + Improvement 2. **(4) 근본 fix 2 2026-05-09 EerieVillage `33eaa55`**: ProjectileSpawner fallback Scene GameObject 잔존 fix. **(10) 근본 fix 8 + 임시 fix 2026-05-10 EerieVillage `6a825fc`** (PD 지시 3건·MCP 자율 진단·검증 정합): PD 보고 — 투사체 영역 적이 죽지 않음·경험치 X·레벨업 X. PD 지시 — (1) 기본 공격력 5 고정 (임시) (2) 죽는 모션 + 소멸 (3) 경험치 + 레벨업. 본 PM MCP 자율 진단 — execute_code 영역 PlayerSkillInventory.AddSkillByCardId 영역 카드 추가 + Player·Enemy 위치 강제 + Tick 영역 자동 발사 영역 → Console 영역 `[Health@Enemy] Decrement(damage=4) hp 4→0` 출력 정합 (투사체 hit 정합) **그러나 [ExperienceSystem] X·[EnemyDeath] X** → **Projectile.cs 영역 Schedule 호출 누락** 확정. **근본 fix 2종**: (1) damage Mathf.Max(_runtime.CalculateEffectiveDamage(), 5) — 임시 5 하한 (PD 지시) (2) Enemy hp 0 도달 영역 Schedule().enemy = enemy 추가 — AttackHitbox.cs:70~76 패턴 정합. **MCP Play 검증**: damage=5·hp 4→0·ExperienceSystem.OnEnemyKilled·GainXP·LEVEL UP Lv.1→2→3→4·SkillSelectionUI Show·카드 확정 정합. **(9) 근본 fix 7 2026-05-10 EerieVillage `f501960`** (PD "MCP 활용해서 네가 직접 체크해" + 본 PM MCP 자율 진단·fix·검증·PD 자성 #13): 본 PM Inspector·Animator·Console MCP 직접 점검 영역. Enemy.controller `controller_get_info` 영역 — parameters: velocityX·velocityY·hurt·death·grounded · Idle/Run/Hurt → Death/Hurt **transition X** 영역 발견. Schedule 직접 호출 영역 검증 — `enabled=false`·`collider=false`·`simulated=false` 적용 영역 — **Animator state = Baddie-Idle/Run 영역 영역**. 추가 진단 — `Time.timeScale = 0` (LevelUp 카드 선택 모드) + Animator updateMode = Normal → Animator.Update 정지 → death Trigger 호출 영역 transition X. **근본 fix 2종**: (A) Enemy.controller transition 5 추가 (Idle→Death·Idle→Hurt·Run→Death·Run→Hurt·Hurt→Death·`manage_animation controller_add_transition` 직접) (B) EnemyDeath.cs `animator.updateMode = AnimatorUpdateMode.UnscaledTime` 추가 → timeScale 무관 영역 Animator 정합 영역. 검증 — anim.SetTrigger("death") + anim.Update(0.5f) → Baddie-Death 진입 정합. 진단 Debug.Log 회수 (Projectile 8·AttackHitbox 1·EnemyDeath 1). **(2026-05-10 세션 종결)** — 인수인계서 `공유/조직공지/2026-05-10_BT12-Dev_세션종결인수인계.md`. 양 레포 push 정합 — EerieVillage `1ef1989`. 본 세션 commit 누적 21건. 영역 영역: 사거리 차이 PD 검증·Hurt/Death animation·Wall Layer 영역. **(8) 진단 도구 fix 6 2026-05-10 EerieVillage `d6764ce`** (PD A+B 결정·feedback_pm_root_diagnosis_priority 2차 적용): PD Console 분석 결과 본 PM 가설 5회 누적 부정확 자성. 핵심 발견 — 투사체 hit X·**AttackHitbox(BT7-Dev VS 순수형 자동 근접)** 영역 hit (t=4.15·t=4.66 hp 4→1·1→0). t=5.35 [Projectile][Enter] other=Enemy → Enemy Collider 활성 → **EnemyDeath.Execute 호출 X 영역 확정**. AttackHitbox.cs:75 `Schedule` 호출 영역 Execute 영역 호출 영역 의문 → 진단 Debug.Log 2종 추가: [AttackHitbox][Schedule] (col·enemy·hp·t)·[EnemyDeath][Execute] (enemy·collider.enabled·t). pm-auditor 통과 + Minor 1 (회수 트리거 명시) + Improvement 1 (_collider 동시 캡처) 수용. 회수 의무: PD 사망 원인 확정 직후 본 PM revert commit. **(7) 진단 도구 fix 5 2026-05-09 EerieVillage `d27a63f`** (PD A안 결정·feedback_pm_root_diagnosis_priority 영역 적용): PD 4차 보고 "여전히 적에게 제대로 피격되지 않고 통과하고 있어" → 본 PM 가설 4회 누적 부정확·회귀 1회 → 가설 즉시 중단·실측 우선·진단 Debug.Log 영역 추가. Projectile.OnTriggerEnter2D 영역 8 분기 진입·return·Hit 시점 영역 [Projectile][...] prefix 통일 영역 → PD Play Console 영역 호출 여부·other 정보·Layer·EnemyController·Health 영역 정확 진단 → 근본 원인 확정 후 fix. 회수 의무 명시 (PD Console 수령 + 근본 fix 후 일괄 제거). pm-auditor 통과 (조건부) + 권고 4종 (prefix 통일·가설 X·회수 명시·PD 안내) 수용. **(6) 회귀 정정 fix 4 2026-05-09 EerieVillage `9eebbec`** (C3 자진 고지): fix 3 영역 Kinematic Rigidbody2D 추가가 회귀 유발 — PD 3차 보고 "여전히 적이 플레이어의 투사체에 피격되지 않아". **근본**: Enemy = KinematicObject 상속 영역 Kinematic Rigidbody2D → Projectile Kinematic 영역 추가 시 Kinematic vs Kinematic + useFullKinematicContacts=false (기본값) → OnTriggerEnter2D 발화 X 영역 회귀. **본 PM 자성 #11 (헌법급)**: C39 위반·KinematicObject.cs:76 영역 사전 Read X. **fix**: ProjectileSpawner.CreateFallbackProjectile 영역 Rigidbody2D 영역 5 라인 제거 → `33eaa55` 시점 Static vs Kinematic Trigger 발화 정합 복원 (DebuffStackLimit 정정 영역 그대로 유지). **헌법급 feedback `feedback_new_code_existing_system_dependency_unmeasured` 신설** (신규 코드 영역 기존 시스템 의존성 미실측 금지·재발 차단 3 단계 의무). **(5) 근본 fix 3 2026-05-09 EerieVillage `fe65592`**: PD 2차 재검증 결과 ("판정 X 또는 효과 X") → 본 PM 진단 — **결함 1**: A01·A02·A03·A14·A15 영역 DebuffStackLimit 무차별 3 적용 (본 PM Phase 2-C placeholder 무차별 채움) → StatusApplier 가드 통과 → 의도 외 DebuffStack 트리거. **결함 2**: ProjectileSpawner.CreateFallbackProjectile Rigidbody2D 부재 → Trigger 판정 안정성 부족. **PD 결정 "3 동시 진행해"** — 옵션 3 양 결함 동시 적용. 5 asset DebuffStackLimit 3→0 + Rigidbody2D Kinematic 추가 (gravityScale 0·CollisionDetectionMode2D.Continuous). pm-auditor Conditional Pass + **Major 1 (헌법급 feedback `feedback_scriptable_object_field_blanket_fill.md` 신설·C39-10 위반·근층 원인 명문화)** + Improvement 2. **PD 1차 재검증**: Player 사망 X 정합·**잔존 투사체 1개 영구 노출** (PD 첨부 이미지). **근본 원인 2**: `Resources/Skills/Projectiles/Default` prefab 부재 → `LoadProjectilePrefab` fallback이 `new GameObject`로 Scene 영역 GameObject 생성·반환 → `Object.Instantiate(prefab,...)`가 이를 prefab으로 사용 → 사본은 정상 SelfDestruct·**원본 Scene GameObject는 Initialize 미호출·영구 잔존**. **fix (옵션 J)**: LoadProjectilePrefab은 Resources prefab만 반환·부재 시 null. Trigger 영역 prefab null 시 `CreateFallbackProjectile` 직접 호출 (Instantiate X·자기 자신 발사체). pm-auditor Pass + Minor 1 (line 65 주석 정합 영역 후속) + Improvement 1. | — | **PM 후속**: PD 2차 Play 재검증 (적 처치 후 Player 정상 + 투사체 발사 후 정상 SelfDestruct + 잔존 투사체 0건) → 정상 시 BT12-Dev-Death 완료 아카이브 이동. Enemy 사망 처리 발화 경로 후속 검증 (이전 Improvement 2 영역). | | BT12-MVP-A | 2026-05-08 | **경험치·레벨업·스킬 카드 선택 UI** — PD 직접 지시 2건 (1) 적 처치 → EXP → 레벨업마다 스킬 카드 3개 선택 기능 (2) 레벨업 UI (스킬 효과 추후·UI만). PD 첨부 예시 영역 ("기술 선택" 화면 — 카드 3장 가로·색상 배너·원형 아이콘·동심원·"레벨 N"/"최대"·"확인" 버튼). PD 결정 (β) 채택 — BT12-Dev 보류 일부 해제·BT12-MVP-A 분리 항목 진행. **PD 결정 D안 (2026-05-09)** — 기능 우선·그래픽 디테일 차후 영역. | **D안 완료 2026-05-09** | [Phase 1 완료] `프로젝트/EerieVillage/개발/spec/BT12-MVP-A_설계_v1.md` (~600 라인). [Phase 2-A 완료] EerieVillage `047661c` — 시스템 코드 6 + JSON 테이블. [Phase 2-B 코드 완료] EerieVillage `5b2b753` — UI 컴포넌트 2 + LevelUpManager 통합. **[Phase 2-B asset 5 완료 2026-05-08]** EerieVillage `755a51c` — `Assets/Data/SkillPlaceholders/{A01_jineonbu, A05_hagikjin, P01_bonghwanggyeok, P12_saengmyeongkkot, AW01_cheonbugyeongmun}.asset` (5) + 각 .meta (5) + folder meta 2 = 12 파일. C49 표준 — Phase 1 dev-team-lead Opus 첫 정합 호출 + Phase 2 Sonnet 위임 + Phase 3 PM 검증. **dev-team-lead 자진 고지** — 설계서 v1 §2-4 영역 P01·P12·AW01 BT11-Plan v0.2 정합 X (3건 정정 적용). **설계서 v1 §2-4 + §7-1 정정 완료** (commit 후속). PD Editor 가이드 신규 `BT12-MVP-A_Phase2B_PDEditor가이드.md`. 대화로그 엔트리 10. | — | **PM 후속 대기**: ① Phase 2-B B (Prefab) + C (Scene 통합) — **PD 직접 발화 (2026-05-08): "단계1은 완료. 단계2, 3은 개발팀에서 작업해줘" + "E"** → 옵션 E 채택 (Claude Desktop Unity MCP 위임) → 본 PM 의뢰서 작성 `BT12-MVP-A_Phase2B_ClaudeDesktop의뢰서.md` (~16K) → PD Claude Desktop 새 세션 영역 의뢰서 첨부 영역 작업 진행 → EerieVillage commit·push → 본 worktree PM 보고 ② Phase 3 dev-team-lead 통합 검증 (Phase 1 + 2-A + 2-B asset + Prefab + Scene + BT5-Dev/BT7-Dev 회귀) ③ **단계 4 PD Play 검증** (적 처치 → EXP → 레벨업 → UI 노출 → 카드 선택 → 게임 재개) ④ 기획팀 별도 안건 — `01_카드_풀.md` line 114 P12 = "도약강화" 잔존 정정 (`02_스킬_효과_컨셉.md` line 381·418 영역 동기화 X) ⑤ icon sprite asset 5장 별도 작업 ⑥ 완료 아카이브 이동. (PD Editor 가이드 영역 = 옵션 D 보류 영역·차기 영역 활용 가능) | | BT12-Dev | 2026-04-24 23:00 | **스킬 시스템 설계 (C43 "개발팀" 호칭 직접 수령 + C49 시범 적용)** — PD 직접 지시 "개발팀은 기획서를 토대로 스킬 시스템 설계 진행". 기획서 v0.2 (`프로젝트/EerieVillage/기획/content/02_스킬_효과_컨셉.md` 액티브 6카테고리·패시브 5카테고리·각성 4패턴) + CSV v0.3 60종 (`프로젝트/EerieVillage/기획/content/02_스킬_효과_컨셉_v0.3.csv` UTF-8 BOM) 토대. C49 표준 프로세스 시범 적용 (개발팀장 Opus 설계 → 클라이언트팀 Sonnet 구현 → 개발팀장 검증) **[Phase 2-A 완료 2026-05-09]** Skills 13 파일 신규 EerieVillage `87710ba` (Interfaces 4 + Data 4 + Runtime 4 + Events 1). **[Phase 2-B 투사체 완료 2026-05-09]** Effectors 7 파일 신규 + SkillFireEvent 정정 EerieVillage `2f2790c` (Sonnet 자율 push·feedback `feedback_pm_sonnet_subagent_unauthorized_push.md` 신설). **[Phase 2-C 투사체 6 asset 완료 2026-05-09]** PD 결정 "(a)안" — 본 PM 직접 placeholder 수치 작성. EerieVillage `c01f25a` (14 파일·A01·A02·A03·A08·A14·A15 ActiveSkillData ScriptableObject). DisplayName 한글만 (한자 X). 차후 balance-designer 정식 수치. SOT 채택 = PD 본문 (A16 사신 강림·A17 오발탄·A18 죽음의 가시). Phase 2 분할 = (b) 5분할 + b-1 카테고리 6분할. **[Phase 2-D BT12-MVP-A 통합 정정 완료 2026-05-09]** EerieVillage `d53150b` — 6 파일 수정 + 9 .meta 보충. LevelUpManager._pool 제거 → SkillRuntimeFactory.RandomDraw3() · SkillSelectionUI/SkillCardSlot ActiveSkillData 시그니처 전환 · PlayerController Awake PlayerSkillInventory 자동 부착 · Projectile Layer Enemy fallback (Minor 1·proxy) · SkillRuntimeFactory.RandomDraw3 신규. Sonnet 의뢰서 "git add·commit·push 절대 금지" 명시 (feedback `feedback_pm_sonnet_subagent_unauthorized_push.md` 정합). Compile error 0건. pm-auditor Pass + Minor 1. | **진행중** | **[Phase 1 완료 2026-04-24]** 개발팀장 Opus 직접 설계 완결 — `프로젝트/EerieVillage/개발/spec/스킬_시스템_설계_v1.md` (1074 라인, 14 섹션). §1 아키텍처 4계층 · §2 인터페이스 4종(`ISkillRuntime`·`IActiveSkill`·`IPassiveSkill`·`IAwakeningSkill`) + ScriptableObject 3종(`ActiveSkillData`·`PassiveSkillData`·`AwakeningSkillData`) + `PlayerSkillInventory`·`PlayerStats` · §3 CSV→ScriptableObject→Runtime→Health.Decrement 데이터 흐름 + 카테고리 문자열 매핑 · §4 VS 순수형 자동 발동 사이클 (OnTime·OnHit·OnKill + `ActiveSkillRuntime.Tick(deltaTime)` 독립 Cooldown) · §5 `AwakeningManager` 3 조건 동시 충족 + 4 패턴 Dispatcher + 다중 각성 선택 UI · §6 카테고리 매핑 6+5+4 (B는 BT7-Dev `AttackHitbox` 재활용 · 나머지 5 효과 발동기 신설) · §7 Phase 2-A~E 작업 단위 분해 (스크립트 25개·테스트 10건·asset 60개) · §10 BT7-Dev 통합 영역 (Health·AttackHitbox·PlayerAttackTicker·PlayerController 완전 보존 · `Health.OnDamagedEvent` 확장 필요 명시) · §11 기각안 5건 + 대화로그 추가 2건 (총 7건 C32 초과). 대화로그 `공유/대화로그/EerieVillage/2026-04-24.md` `[BT12-Dev Phase 1 완료] 개발팀장 스킬 시스템 설계 v1 (1074 라인)` 엔트리 완결. **C48 3자문 전수 통과**로 Phase 2 클라이언트팀 Sonnet Task는 본 Task에서 호출하지 않고 **PM 차원 별도 위임** 권고 (C48·C49·C50 정합) | **기획서 확정 대기** (PD 2026-04-25 직접 지시 — "기획서 확정되기 전까지 작업 대기") | **재개 트리거**: 기획팀 v0.3 또는 v1.0 확정 + balance-designer 60종 수치 확정 + narrative-designer 카드명 세계관 재매핑 결정 → C50 Phase 2 사전 승인 옵션(a/b/c/d) PD 결정 → 분할 시 Phase 2-A~E 순차 진행 (인터페이스·SO → 중앙 컴포넌트 → 효과 발동기 → 60장 .asset → EditMode 테스트) → Phase 3 개발팀장 검증 → 완료 아카이브. **선행 차단 블로커**: `paths.local.json.UNITY_PROJECT_ROOT: __SET_PER_PC__` 미설정 — 재개 시 PD PC 경로 설정 필요. Phase 1 산출물 1074 라인 설계 문서는 보존 | diff --git a/공유/대화로그/EerieVillage/2026-05-13.md b/공유/대화로그/EerieVillage/2026-05-13.md new file mode 100644 index 0000000..acb2439 --- /dev/null +++ b/공유/대화로그/EerieVillage/2026-05-13.md @@ -0,0 +1,144 @@ +# EerieVillage 2026-05-13 대화로그 + +> 세션 worktree: `cranky-wescoff-e855b0` +> 영역: BT12-Dev-Vis 이펙트 개선 (5 스킬 박스·이펙트 정합) +> C32 정합 + +--- + +## 엔트리 1 — 5 스킬 통합 + 1~5 키 발사 시스템 (2026-05-12~13 야간) + +세션 초반 작업 (컴팩션 이전) — PD 직접 발화 다수에 따라 다음 5 스킬·테스트 키 매핑·시각화 박스·DamageFrameDelay/EnableRepeatDamage/MaxHitCount/RepeatFrameInterval ScriptableObject 필드 신설·hit 모션 + 다단 히트 flash 연출. + +| 키 | Skill | Effector | 주요 동작 | +|----|-------|----------|----------| +| 1 | A02 화염부 | ProjectileSpawner (Line) | 직선 파이어볼·HitFx | +| 2 | A04 뇌격부 | LightningStrikeSpawner | 화면 내 임의 적 1기 강타 + 주변 범위 | +| 3 | A05 학익진 | MeleeAreaSpawner | Player 주변 즉시 범위 피해 + FX_SLASH | +| 4 | A_Laser | LaserSpawner | facing 방향 레이저 직선 + DoT | +| 5 | A13 천둥발 | ProjectileSpawner (Arc·PiercingProjectile) | 관통·매 0.2s 영역 hit | + +EerieVillage `2ebf313` — 5 스킬 통합·1~5 키 발사 시스템 (PD 지시 2026-05-13) + +--- + +## 엔트리 2 — Scene 잔존 박스·FX 인스턴스 6개 cleanup + HideFlags.DontSave (2026-05-13 EerieVillage `60e28e3`) + +**PD 보고**: "왜 레이저의 히트박스가 여러개로 보이는거지? 체크해보고 불필요한 박스 영역 제거해" + +본 PM 직전 측정 결과 — `LaserHitbox_Debug × 1` + `ProjectileHitbox_Debug × 3` (parent=FX_Lightningball(Clone)). LaserHitbox 자체는 1개로 정상 동작하나 다른 잔존 박스가 시각상 중첩. + +**원인 확정 — Scene 파일 직접 grep**: +`Assets/Scenes/Ingame.unity` 파일 안에 이전 Edit Mode execute_code 측정 시점 spawn 후 Scene 저장된 인스턴스 6개 영구 잔존. +- `FX_Lightningball(Clone) × 3` (각각 `ProjectileHitbox_Debug × 1` 자식) +- `FX_SLASH(Clone) × 2` +- `FX_Dragonfire(Clone) × 1` + +**정정 2건**: +1. Edit Mode `DestroyImmediate` + `EditorSceneManager.SaveScene` 으로 잔존 6개 일괄 cleanup. 사후 grep 0건 확인. +2. 런타임 spawn 8 지점에 `HideFlags.DontSave` 부여 — Scene 저장 시 무시 + Play→Stop 자동 cleanup. 적용 파일: + - `HitboxDebug.Spawn`·`AttachToTransform` + - `Projectile.SpawnHitboxDebugChild`·OnTrigger FX Instantiate + - `LaserSpawner` (박스·FX) + - `MeleeAreaSpawner` (박스·FX) + - `LightningStrikeSpawner` (FX) + - `ProjectileSpawner` (Projectile 본체) + - `EnemyStateComponents` (DoT FX) + +**검증 (Play 모드 직접 측정)**: +- A_Laser 1회 발사 → Player 자식 2개 (`FX_Dragonfire(Clone)` + `LaserHitbox_Debug`) +- A13 1회 발사 → `FX_Lightningball(Clone) × 1`, 자식 `ProjectileHitbox_Debug × 1` +- Stop 후 Scene 잔존: 0건 +- ExtraProjectiles=0 정상 — 다중 발사 의혹 무관 + +--- + +## 엔트리 3 — FxRotation 박스 미적용 분리 (2026-05-13 EerieVillage `ea7d32f`) + +**PD 진단** (본 PM 가설 영역 우선 채택): +"문제의 원인을 알겠어. 캐릭터가 방향을 전환하면 박스 영역이 좌,우로 반전되어야하는데 이펙트를 회전한 경우 히트 박스도 함께 회전되어서 생긴 문제야. 이펙트 회전은 비주얼적인 부분을 변경하기 위한 목적이기 때문에 히트 박스 영역은 회전되어선 안돼. (회전한 경우 x축을 반전하기 떄문에 비주얼적으로는 y축 박스가 추가되는 형태로 보임)" + +**정정 방침**: +- 박스(판정) = facing 좌/우 반전만 반영 · FxRotation 미적용 +- 이펙트(시각) = facing + FxRotation 그대로 (현행 유지) + +**파일별 정정** (4 파일): + +`LaserSpawner.Trigger` +- 박스 rotation = baseAngle (facing 만), FxRotation 제외 +- 박스 forwardDir = facing.normalized (FxRotation 회전 제외) +- OffsetDistance.x 에 facing sign 반영 (좌/우 위치 반전) + +`LaserSpawner.ApplyLaserDamage` +- 판정 forwardDir = facing 만 +- OffsetDistance.x 에 facing sign 반영 + +`MeleeAreaSpawner.Trigger`·`DoOverlapBoxFromPlayer` +- 박스 localRotation = identity (FxRotation 제거) +- OffsetDistance.x 에 facing sign 반영 +- OverlapBox rotation 0 + +`LightningStrikeSpawner.Trigger` +- 박스 rotation 0 · capturedRot 변수 제거 +- HitboxDebug.Spawn 후 rotation 부여 라인 제거 +- FixedHitDamageCoroutine 호출 rotZ=0 + +`Projectile.Initialize` +- transform.rotation = facing 만 (FxRotation 제외) +- root 가 BoxCollider2D + 시각 동시 보유 → 박스 회전 금지 의도 + +**검증 (Play 모드 8 case)**: + +| Skill | facing | FxRotation | 박스 worldPos | 박스 rot | +|---|---|---|---|---| +| Laser | 우 | 0 → 90 | (-1.50, -2.78) 불변 | 0 (불변) | +| Laser | 좌 | 0 → 90 | (-12.50, -2.78) 불변 | 180 (불변) | +| Melee | 우/좌 | 0 → 45 | (-7, -1.18) 불변 | 0 (불변) | +| Proj A13 | 우 → 좌 | 0 | (-6.50) → (-7.50) | 0 → 180 | + +FxRotation 변경에 박스 무반응 + facing 변경 시 좌/우 정확히 반전. + +--- + +## 엔트리 4 — A05 좌우 베기 이펙트 Player 동조 (2026-05-13 EerieVillage `f6c6eb5`) + +**PD 보고**: "좌우 베기의 경우, 플레이어가 전진중일 때 뒤늦게 위치가 바뀌기 때문에 이펙트가 제자리에서 발생될 때보다 밀리는 현상이 있어. 플레이어 이동에 맞게 위치 및 판정 위치도 함께 조정되도록 수정해줘." + +**원인**: `MeleeAreaSpawner` 의 FX 가 spawn 후 SetParent 미적용 → world 좌표 freeze → Player 전진 시 시각상 뒤로 밀림. 박스는 이미 Player 자식이라 정상 동조 중. + +**정정**: +- `fxGo.transform.SetParent(inventory.transform, true)` 추가 +- `worldPositionStays=true` 로 spawn 직후의 world 위치·rotation·scale 유지 + 이후 Player 이동에 자동 동조 +- facing flip·HitFxScale·FxRotation 모두 SetParent 이전에 처리되어 영향 없음 + +**검증 (Play 모드)**: +Player x: -7 → -5 (Δ+2.0) 이동 +- FX_SLASH worldPos: -6.80 → -4.80 (Δ+2.0) ✓ +- MeleeHitbox_Debug worldPos: -7.00 → -5.00 (Δ+2.0) ✓ + +--- + +## 본 세션 EerieVillage commit (4건 — origin/main push 정합) + +| commit | 내용 | +|--------|------| +| `2ebf313` | 5 스킬 통합·1~5 키 발사 시스템 (세션 초반, 컴팩션 이전 누적) | +| `60e28e3` | 스킬 박스·FX Scene 잔존 정정 (Scene cached 6 cleanup + HideFlags.DontSave 8 지점) | +| `ea7d32f` | FxRotation 박스 미적용 분리 (4 파일) | +| `f6c6eb5` | A05 좌우 베기 이펙트 Player 동조 (SetParent) | + +→ origin/main `f6c6eb5` push 정합 + +--- + +## 본 PM 자성 + +본 세션 직접 자성 신규 없음. 다만 직전 측정 (Resources.FindObjectsOfTypeAll 사용) 시 `scene.IsValid` 필터로 hideFlags 적용 GO 카운트 누락한 query 결함은 측정 정확도 차원에서 기록. 차후 spawn 카운트 측정 시 `transform.childCount` 또는 `Scene.GetRootGameObjects()` 재귀 자식 순회를 표준으로 사용. + +--- + +## 영역 자산 + +- `HitboxDebug.cs` 공용 helper (Spawn·AttachToTransform·GetWhiteSprite) — 추후 다른 카테고리 (C 설치·D 소환·E 오라) 영역 박스 시각화 재사용 가능. +- 박스↔이펙트 분리 원칙 (박스 = facing 만 · 이펙트 = facing + FxRotation) — 향후 다른 Effector 추가 시 동일 패턴 적용 표준. +- `HideFlags.DontSave` 패턴 — Edit Mode 측정 시 Scene 오염 방지 표준. diff --git a/공유/조직공지/2026-05-13_BT12-Dev_세션종결인수인계.md b/공유/조직공지/2026-05-13_BT12-Dev_세션종결인수인계.md new file mode 100644 index 0000000..fcb293c --- /dev/null +++ b/공유/조직공지/2026-05-13_BT12-Dev_세션종결인수인계.md @@ -0,0 +1,137 @@ +# 2026-05-13 BT12-Dev 세션 종결 인수인계서 + +> 세션: `cranky-wescoff-e855b0` worktree (2026-05-12~13 — 컴팩션 1회 포함) +> 종결 사유: PD 직접 지시 ("이제 이펙트 개선작업은 완료처리하고 다음 세션에서 작업할 수 있도록 빠짐 없이 세션 공유해") +> C40 정합 — 세션 공유 5종 사전 점검·세션 종결 인수인계서·다음 세션 첫 프롬프트 템플릿 + +--- + +## 1. 본 세션 핵심 결과 (양 레포 push 정합) + +### EerieVillage `E:/EerieVillage/` + +| commit | 내용 | +|--------|------| +| `2ebf313` | 5 스킬 통합·1~5 키 발사 시스템 (5 스킬 + DamageFrameDelay·EnableRepeatDamage·MaxHitCount·RepeatFrameInterval 필드 + Animator self-loop transition + hit flash) | +| `60e28e3` | 스킬 박스·FX Scene 잔존 정정 — Scene cached 6 cleanup + `HideFlags.DontSave` 8 spawn 지점 | +| `ea7d32f` | FxRotation 박스 미적용 분리 — 박스(판정) = facing 만 / 이펙트(시각) = facing + FxRotation | +| `f6c6eb5` | A05 좌우 베기 이펙트 Player 동조 — `MeleeAreaSpawner` 에 `SetParent(inventory.transform, true)` 추가 | + +→ origin/main `f6c6eb5` push 정합 + +### BurningTimes `E:/BurningTimes/` + +대화로그 `공유/대화로그/EerieVillage/2026-05-13.md` (엔트리 1~4) · PD 지시 로그 갱신 · 본 인수인계서. + +→ origin/main push 정합 (본 commit) + +--- + +## 2. 본 세션 이펙트 개선 작업 영역 (PD 완료 처리 지시) + +### 완료 항목 + +1. **5 스킬 통합 + 1~5 키 발사 시스템** — A02 화염부·A04 뇌격부·A05 학익진·A_Laser·A13 천둥발 +2. **시각화 박스 ↔ 판정 정합** — 5 스킬 전부 +3. **Inspector 즉시 반영** — HitboxSize·OffsetDistance·OffsetXY·FxRotation·HitFxScale·DamageFrameDelay·EnableRepeatDamage·MaxHitCount·RepeatFrameInterval +4. **hit 모션 + flash 연출** — 모든 피해 상황 붉은색·alpha 50%·1 frame +5. **OffsetDistance Vector2 전환** — X/Y 절대 좌표 (OffsetDistanceX 삭제) +6. **Scene 잔존 박스·FX 6개 cleanup** + `HideFlags.DontSave` 8 spawn 지점 (재발 방어) +7. **FxRotation 박스 미적용 분리** — 박스 = facing 만 · 이펙트 = facing + FxRotation +8. **A05 좌우 베기 이펙트 Player 동조** — Player 전진 시 이펙트 밀림 정정 + +### 검증 정합 (Play 모드 직접 측정) + +- 8 case FxRotation 0/90·facing R/L 전수 검증 +- Player 이동 Δ+2.0 시 FX·박스 동조 측정 +- Stop 후 Scene 잔존 0건 + +--- + +## 3. 활성 PD 지시 현황 + +### 진행중 + +| 지시 | 상태 | 비고 | +|------|------|------| +| **BT12-Dev-Vis** | **이펙트 개선 완료 처리 (본 세션)** | HUD·Icon UI·Layer Lab 카드 정합 등 잔여 사항은 PD 후속 결정 대기 | +| **BT12-Dev** | 진행중 | Phase 2-A·B·C·D 완료. Phase 2-E (asset 60 전수)·다른 카테고리 (C 설치·D 소환·E 오라·F 강화) PD 결정 대기 | +| **BT12-MVP-A** | D안 완료 2026-05-09 | | +| BT7-Dev·BT5-Dev·BT7-Plan | 진행중 | | + +### 미해결 (BT12-Dev 영역) + +| 영역 | 상태 | +|------|------| +| 사거리 차이 체감 (`1ef1989` speed 6·lifetime 5) | PD Play 검증 대기 (직전 세션) | +| Hurt·Death animation (수동 idle 영역만) | 후속 | +| Wall OverlapPoint Layer 16만 (Layer 0 Level Tilemap 미커버) | 후속 | +| Phase 2-E (asset 60 전수 정식) | balance-designer 정식 수치 확정 후 | +| 다른 카테고리 Effector (C 설치·D 소환·E 오라·F 강화) | PD 결정 대기 | + +--- + +## 4. 현재 작업 환경 + +### 양 레포 git + +- EerieVillage `main` `f6c6eb5` +- BurningTimes `main` — 본 commit 후 push + +### Unity 환경 (변경 누적) + +- `ActiveSkillData` 필드 확장: `ProjectilePrefab`·`OnHitFxPrefab`·`OnDotFxPrefab`·`DotDamageMultiplier`·`ProjectileFxScale`·`HitFxScale`·`DotFxScale`·`FxRotation`·`OffsetXY`·`DamageFrameDelay`·`EnableRepeatDamage`·`MaxHitCount`·`RepeatFrameInterval`·`OffsetDistance (Vector2)` +- 5 Effector 활성 (`ProjectileSpawner`·`MeleeAreaSpawner`·`LaserSpawner`·`LightningStrikeSpawner` + `Projectile`·`PiercingProjectile`) +- 공용 helper `HitboxDebug` (Spawn·AttachToTransform·GetWhiteSprite) +- 모든 runtime spawn 에 `HideFlags.DontSave` +- 1~5 키 발사 테스트 `TestSkillFireOn1to5` +- Animator self-loop transition (Baddie-Hurt·Player-Hit) +- `Health.DecrementBypassInvuln` (DoT) · `DecrementBypassInvulnWithHit` (다단 히트) + +### 박스↔이펙트 분리 원칙 (본 세션 표준화) + +- **박스(판정)** = facing 좌/우 sign 만 반영 · FxRotation 미적용 +- **이펙트(시각)** = facing + FxRotation 그대로 +- **Scene 오염 방지** = 모든 runtime spawn `HideFlags.DontSave` + +향후 다른 카테고리 Effector 추가 시 동일 패턴 표준. + +--- + +## 5. 다음 세션 첫 프롬프트 템플릿 + +``` +BT12-Dev 재개. + +이전 세션 인수인계서 = 공유/조직공지/2026-05-13_BT12-Dev_세션종결인수인계.md +이전 세션 ID = cranky-wescoff-e855b0 +이전 세션 마지막 commit: + EerieVillage f6c6eb5 (origin/main push 정합) + BurningTimes <본 commit> (origin/main push 정합) + +이펙트 개선 작업 = 완료 처리됨. + +다음 영역 결정 대기: +1. Phase 2-E (asset 60 전수 정식 수치) — balance-designer 정식 수치 확정 필요 +2. 다른 카테고리 Effector (C 설치·D 소환·E 오라·F 강화) +3. Hurt·Death animation 정식 (수동 idle 영역만 상태) +4. Wall OverlapPoint Layer 0 커버 (Level Tilemap) +5. 사거리 차이 PD Play 검증 (speed 6·lifetime 5) + +박스↔이펙트 분리 원칙 (표준): +- 박스(판정) = facing 좌/우 sign 만 · FxRotation 미적용 +- 이펙트(시각) = facing + FxRotation +- runtime spawn = HideFlags.DontSave +``` + +--- + +## 6. C40 자기검증 + +| # | 항목 | 상태 | +|---|------|------| +| ① | 모든 결정·산출물·feedback 대화로그·PD 지시 로그 등재 | ✅ `공유/대화로그/EerieVillage/2026-05-13.md` 엔트리 1~4 | +| ② | 양 레포 commit·push 정합 | ✅ EerieVillage `f6c6eb5` push 정합 · BurningTimes 본 commit 후 push | +| ③ | 매니페스트 archive 자동 이동 | ✅ `2026-05-13_174251` 등록 후 본 commit 영역 자동 archive | +| ④ | 다음 세션 인수인계서 | ✅ 본 문서 | +| ⑤ | 다음 세션 첫 프롬프트 템플릿 | ✅ §5 |