Commit Graph

9 Commits

Author SHA1 Message Date
깃 관리자 6a825fc9b7 fix(BT12-Dev): 투사체 damage 5 하한 + Schedule<EnemyDeath> 추가 — 적 처치·경험치·레벨업 정합
PD 지시 (2026-05-10):
- "여전히 내 투사체에 적이 죽지 않고, 경험치를 제공하지 않아"
- "혹시 투사체 공격력이 없어서 그렇다면 기본 공격력을 5로 고정해(임시)"
- "적이 죽으면 죽는 모션과 함께 소멸되어야 해"
- "적이 죽으면 경험치를 제공해야 하고, 레벨업이 가능해야 해"

본 PM MCP 자율 진단:
- Console 영역 [Health@Enemy] Decrement(damage=4) hp 4→0 정합
- 그러나 [ExperienceSystem] X·[PlayerProgression] X·[EnemyDeath] X
- → Projectile.cs 영역 Schedule<EnemyDeath> 호출 누락 확정

근본 fix 2종:
1. damage 5 하한 강제 (임시·PD 지시) — `int damage = Mathf.Max(_runtime.CalculateEffectiveDamage(), 5);`
   → balance-designer 정식 수치 영역 임시 영역
2. Schedule<EnemyDeath> 추가 (근본·AttackHitbox.cs:70~76 패턴 정합)
   → Enemy hp 0 도달 시 EnemyDeath 체인 발동 → ExperienceSystem.OnEnemyKilled → 경험치·레벨업

검증 (MCP Play):
- damage=5 hp 4→0 (1hit kill) 
- ExperienceSystem.OnEnemyKilled → GainXP +1 
- PlayerProgression Lv.1→2→3→4 
- SkillSelectionUI Show + 카드 확정 (파이어볼·추적 화염구) 

PD 지시 3가지 전부 정합.
2026-05-10 01:25:12 +09:00
깃 관리자 f50196056b fix(BT12-Dev): EnemyDeath 근본 fix — Animator transition 5 + UnscaledTime + 진단 회수
근본 원인 (본 PM MCP 직접 진단):
- Enemy.controller 영역 Idle/Run/Hurt → Death/Hurt transition 부재 → death Trigger 호출 영역 transition X
- Animator updateMode = Normal·Time.timeScale = 0 (LevelUp 카드 선택) → Animator.Update 정지 → transition 영역 X

해결 (본 PM 자율 결정 + MCP 직접 적용):
- Enemy.controller transition 5 추가 (Idle→Death, Idle→Hurt, Run→Death, Run→Hurt, Hurt→Death)
  → manage_animation controller_add_transition 영역 직접 호출
- EnemyDeath.cs animator.updateMode = AnimatorUpdateMode.UnscaledTime 추가
  → Time.timeScale = 0 영역 영역 Animator 영역 정상 진행 → death animation 재생 + transition 발동
- 진단 Debug.Log 회수: Projectile (8 분기)·AttackHitbox (1줄)·EnemyDeath (1줄)
  → 사망 원인 확정 영역 회수 의무 정합

본 PM MCP 직접 진단 절차:
1. read_console — Console 직접 읽기 (Health@Enemy·Projectile 출력 검증)
2. controller_get_info — Enemy.controller parameters·states·transitions 직접 검증
3. execute_code — Player·Enemy 위치·Schedule<EnemyDeath> 직접 호출·Animator state 검증
4. manage_animation controller_add_transition — Animator transition 5 직접 추가
5. anim.SetTrigger("death") + anim.Update(0.5f) → Baddie-Death 진입 정합 검증

PD 결정 (2026-05-10): "MCP 활용해서 네가 직접 체크해" — 본 PM 자율 진단·fix·검증.
PD 자성 #13: PD에게 작업 떠넘기기 금지·MCP 능동 활용 의무.
2026-05-10 01:09:17 +09:00
깃 관리자 d27a63f32e diag(BT12-Dev): Projectile.OnTriggerEnter2D 진단 Debug.Log 추가 — 적 피격 X 근본 진단
목적:
- 본 PM 가설 4회 누적 부정확 + 회귀 1회 → feedback_pm_root_diagnosis_priority 의무 적용
- 가설 즉시 중단·실측 우선 진단 도구 추가
- PD Play 영역 Console [Projectile] prefix 필터 → 호출 여부·other 정보·각 분기 reach·return 시점 정확 진단

진단 Debug.Log 영역 (prefix [Projectile][...] 통일·grep 영역):
- [Enter] OnTriggerEnter2D 진입 영역 (other.name·layer·t)
- [Return] _hitTargets duplicate
- [Return] PlayerController detected
- [LayerCheck] enemyLayer·otherLayer·hasEnemyController·isEnemy
- [Return] not Enemy
- [Return] Health component missing
- [Return] Health not alive (hp 정보)
- [Hit] damage 적용

회수 의무:
- PD Console 결과 수령 + 근본 fix 적용 후 본 진단 Debug.Log 일괄 제거 (대화로그 영역 명시)

PD 결정 (2026-05-09): "A 안으로 해" — 진단 Debug.Log 즉시 추가.
pm-auditor 통과 (조건부) + 권고 4종 수용.
2026-05-09 23:46:05 +09:00
깃 관리자 9eebbec03a fix(BT12-Dev): 직전 Kinematic Rigidbody2D 회귀 정정 — Static vs Kinematic Trigger 정합 복원
회귀 사실 (C3 자진 고지):
- 직전 fix `fe65592` Projectile Rigidbody2D Kinematic 추가
- Enemy = KinematicObject 상속 → Rigidbody2D Kinematic
- → Kinematic vs Kinematic + useFullKinematicContacts=false (기본값)
- → OnTriggerEnter2D 발화 X → 적 피격 X 회귀

근본 원인:
- C39 위반 — Enemy Rigidbody2D type 사전 실측 X
- KinematicObject.cs:76 영역 Read X·라이프사이클 검증 X

해결 (옵션 C — 단순 회귀):
- ProjectileSpawner.CreateFallbackProjectile 영역 Rigidbody2D 추가 영역 5 라인 제거
- Static Collider + Enemy Kinematic Rigidbody2D = OnTriggerEnter2D 발화 정합 복원
- `33eaa55` 시점 동작 정합 영역 복원 (DebuffStackLimit 정정 영역 그대로 유지)

자성 추가:
- 헌법급 feedback `feedback_new_code_existing_system_dependency_unmeasured` 신설
- 신규 코드 영역 기존 시스템 의존성 미실측 금지 (재발 차단 3 단계)

PD 보고 (2026-05-09 3차): "여전히 적이 플레이어의 투사체에 피격되지 않아" 회귀 정정.
2026-05-09 22:41:44 +09:00
깃 관리자 fe6559238f fix(BT12-Dev): 결함 2건 동시 fix — DebuffStackLimit 의도 정합 + Trigger 판정 안정성 보강
결함 1 — DebuffStackLimit 무차별 3 적용 (5 asset):
- 본 PM Phase 2-C placeholder 작성 시 ScriptableObject 모든 필드 무차별 채움
- StatusApplier.cs:43 가드 통과 → A01·A02·A03·A14·A15 hit 시 의도 외 DebuffStack 트리거
- 기획서 위반 (대화로그 엔트리 4 의도)

해결:
- A01 마법 화살 (단일 타격) — DebuffStackLimit 3→0
- A02 파이어볼 (DoT) — DebuffStackLimit 3→0
- A03 봉인 마법 (Stun) — DebuffStackLimit 3→0
- A08 저주의 화살 — DebuffStackLimit 5 유지 (DebuffStack 의도 정합)
- A14 얼음 창 (Slow) — DebuffStackLimit 3→0
- A15 추적 화염구 (DoT Homing) — DebuffStackLimit 3→0

결함 2 — fallback Projectile Rigidbody2D 부재:
- Unity 2D OnTriggerEnter2D 발화 의무 = 한쪽 Rigidbody2D
- transform.position 이동 영역 Physics2D 동기화 안정성 부족

해결:
- ProjectileSpawner.CreateFallbackProjectile에 Kinematic Rigidbody2D 추가
- gravityScale 0·CollisionDetectionMode2D.Continuous

PD 결정 (2026-05-09): "3 동시 진행해" — 옵션 3 결함 1+2 동시 적용.
pm-auditor Conditional Pass + Major 1 (feedback 헌법급 신설) + Improvement 2 수용.
2026-05-09 22:12:51 +09:00
깃 관리자 33eaa55c60 fix(BT12-Dev): 잔존 투사체 근본 해결 — fallback Scene GameObject Instantiate 패턴 정정
근본 원인:
- Resources/Skills/Projectiles/Default.prefab 부재
- LoadProjectilePrefab fallback이 new GameObject로 Scene 영역 GameObject 생성·반환
- ProjectileSpawner.Trigger가 이를 prefab으로 Object.Instantiate
  → 사본은 정상 SelfDestruct
  → 원본 Scene GameObject는 Initialize 미호출 → _lifetime Invoke 미설정 → 영구 잔존

해결 (옵션 J):
- LoadProjectilePrefab은 Resources prefab만 반환 (부재 시 null)
- ProjectileSpawner.Trigger가 prefab null 시 CreateFallbackProjectile 직접 호출
- fallback 영역 매번 새 GameObject 직접 생성 (Instantiate X·자기 자신 발사체)
- 원본 Scene GameObject 잔존 패턴 근본 차단

검증:
- Glob 0건: Assets/Resources/Skills/Projectiles/ 부재 확인
- pm-auditor Pass + Minor 1 + Improvement 1 (회귀 위험 0건)

PD 보고 (2026-05-09): "맵에 투사체 하나가 영구적으로 남아있어" 근본 해결.
2026-05-09 21:50:02 +09:00
깃 관리자 e31c34cf24 feat(BT12-Dev): SkillInventoryHUD 시각화 + 사망 원인 디버그 로그 (PD 후속 지시 2건)
PD 직접 발화 2건:
1. PlayerSkillInventory 등록 시각화 (유니티 기본 자원 활용)
2. 스킬 습득 후 사망 버그 수정

작업 내용:
- SkillInventoryHUD.cs 신규 (OnGUI 좌상단·장착 액티브 DisplayName/Lv/CD·패시브 카운트)
- PlayerController.Awake에 HUD 자동 부착
- ProjectileSpawner fallback prefab 시각화 (SpriteRenderer + 16x16 동적 흰색 원 + 속성별 색상)
- Projectile.OnTriggerEnter2D Player 명시 차단 (defensive proxy)
- Health.Decrement·DecrementSilent·Die에 Debug.Log + StackTrace (사망 호출자 추적)

가설 (미검증): BT5-Dev EnemyController patrol → PlayerEnemyCollision Event → player.health.Decrement().
검증 절차: PD Play 테스트 → Console log StackTrace 분석 → 호출자 확정.

pm-auditor Major 1 정정 완료 (PD 지시 로그 2행 등재)·Minor 2 정정 완료.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 21:23:25 +09:00
깃 관리자 d53150b5ed feat(BT12-Dev Phase 2-D): BT12-MVP-A 통합 정정 (placeholder → 정식 ActiveSkillData) + Phase 2-B .meta 보충
C49 Phase 2-D — Sonnet 위임 (코드 Write·검증만·git 본 PM 처리 정합·feedback_pm_sonnet_subagent_unauthorized_push 정합).

수정 6 파일:
- LevelUpManager.cs (Phase 2-D 정정·_pool 제거·SkillRuntimeFactory.RandomDraw3·HandleCardConfirmed(ActiveSkillData)·PlayerSkillInventory.AddSkillByCardId)
- SkillSelectionUI.cs (Show(List<ActiveSkillData>)·_selected·BindSlot·OnCardSelected ActiveSkillData 전환)
- SkillCardSlot.cs (Bind(ActiveSkillData)·DisplayName/Description/Icon PascalCase·rarity 배너 갈색 고정)
- PlayerController.cs (PlayerSkillInventory 자동 부착·line 100)
- Projectile.cs (Layer Enemy 미등재 fallback — EnemyController 컴포넌트 검사·proxy)
- SkillRuntimeFactory.cs (RandomDraw3 메서드·Active 카테고리 무작위 3장)

신규 9 .meta (Phase 2-B Sonnet 자율 push 영역 영역 영역 영역 X·Unity Editor Refresh 후 자동 생성·본 commit 보충):
- Skills.meta + Effectors.meta + 7 Effectors/*.cs.meta

Layer Enemy 영역 = proxy 개선 신호 (C2-2):
- 현 시점 = Projectile.OnTriggerEnter2D 영역 EnemyController 컴포넌트 fallback (proxy)
- 근본 해결안 = Layer "Enemy" 정식 등재 (별도 PD 안건·후속)

기능:
- 적 처치 → EXP +1 → 즉시 레벨업 → 카드 3장 노출 → 선택 → PlayerSkillInventory 등록 → ActiveSkillRuntime Tick → 1.5s 영역 자동 발사 + 부가 효과 (DoT·Stun·Slow·DebuffStack)

기존 영역 변경 X (BT5-Dev·BT7-Dev·Phase 2-A·2-B·2-C·BT12-MVP-A asset 5장·Scene·SkillCardPlaceholder·SkillCardPlaceholderPool·deprecate 차후)

Compile error 0건 (read_console·도메인 리로드 정합)

C49 — Phase 2-D Sonnet 위임 + Phase 3 본 PM 직접 (단순 반복 카탈로그 v1)
C50 — ~95K (PD 사전 승인 70~95K 영역 상한 정합)
C19-2 — Sonnet 자율 git X·본 PM 직접 commit·push (feedback 정합)

pm-auditor 사전 감사 = Pass + Minor 1 (Layer fallback proxy 명시·본 commit + 대화로그 영역 정정 적용)

후속:
- Phase 2-A·2-B·2-C·2-D 영역 PD Play 검증 (자동 발동·레벨업·카드 선택·등록·Tick)
- Layer "Enemy" 정식 등재 (별도 PD 안건·근본 해결안)
- Phase 2-E EditMode 테스트
- 다른 카테고리 (B·C·D·E·F) 영역
- BT12-MVP-A asset 5장 deprecate (차기)
- Screenshots·_Recovery .gitignore (별도)
2026-05-09 20:57:28 +09:00
깃 관리자 2f2790ce57 feat(BT12-Dev Phase 2-B): 투사체 카테고리 6종 효과 발동기 구현
- Effectors/IEffector.cs: 효과 발동기 공통 인터페이스
- Effectors/Projectile.cs: Line 직선 투사체 (단일 적 타격 후 소멸)
- Effectors/HomingProjectile.cs: Homing 유도 투사체 A15 (FindNearestEnemy)
- Effectors/ProjectileSpawner.cs: IEffector 구현 — 다중 발사·궤적 분기
- Effectors/StatusApplier.cs: DoT·Stun·Slow·Knockback·DebuffStack 통합 적용기
- Effectors/DebuffStack.cs: A08 저주 스택 N회 폭발 레지스트리
- Effectors/EnemyStateComponents.cs: DoT·Stun·Slow MonoBehaviour 통합
- Events/SkillFireEvent.cs: Execute stub → ActiveCategory.Projectile 분기 정식 연결

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:00:27 +09:00