Commit Graph

6 Commits

Author SHA1 Message Date
깃 관리자 e02dd69b3f test(BT12-Dev): Enemy HP 99999 + 기본 공격 파이어볼 제거 (PD 지시 2026-05-14)
PD 요청 2건:
1. 몬스터 HP 99999 (테스트용·1 hit kill 회피)
2. 기본 공격 파이어볼 발사 X

정정:

1. Enemy.prefab Health
   - maxHearts: 250000 → 24999 (99999 / QuartersPerHeart 4)
   - maxHP: 1000000 → 99999
   - RandomMaxHPRange: (99999, 99999) 신규 부착
   - Health.Awake L373 RandomMaxHPRange 우선 분기 활용 →
     fallback random(30~41) 회피·정확 99999 보장.

2. StartingCardIds 빈 배열 적용 2 경로:
   - Scripts/Skills/Runtime/PlayerSkillInventory.cs 기본값
     new string[] { "A02" } → new string[] { }
   - Scenes/Ingame.unity Player GameObject Inspector override
     "- A02" → [] (빈 배열)

검증 (Play 모드):
- StartingCardIds count=0
- active skill slots=0 (자동 발사 안 됨)
- Enemy[0] maxHP=99999 maxHearts=24999 IsAlive=True

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 22:19:02 +09:00
깃 관리자 7c894c60da fix(BT12-Dev): 잔존 cleanup Scene root 재귀 + Projectile.Awake 자기 destroy (PD 지시 2026-05-14)
PD 추가 진단 (스크린샷 + 발화): "게임 플레이 후 스크롤 되는 맵에
여전히 남아있는 상태야. 아마 스크롤 되며 연장되는 맵 영역이
초기화 되지 않는 것으로 예상 돼"

이전 commit ea239fe (3중 진입점 + FX clone prefix) 의 catch 누락
가능성 차단:

1. PlayerSkillInventory.DoCleanupStalePooledSpawns 영역
   Resources.FindObjectsOfTypeAll → Scene.GetRootGameObjects + 재귀
   변경. hideFlags hidden GO 누락 우려 제거·정확도 향상.
   CollectStaleRecursive 신규 — 자식 트리 재귀 탐색.
   IsStaleByName 헬퍼 — 이름 매칭 통합.

2. Projectile.Awake 신규 — _data == null && _runtime == null 상태
   (= Initialize 미호출 잔존) 시 1 frame 유예 후 자기 destroy.
   PlayerSkillInventory cleanup 누락 케이스 자체 정리 (2중 방어).
   InfiniteHorizontalBackground·기타 컴포넌트 자식 부착된 잔존도
   본 자가 destroy 로 catch.

측정 (Play 진입 직후):
- AfterSceneLoad static cleanup removed=0
- Awake cleanup removed=0
→ 이전 Play 잔존 = 0건 (Scene load·Awake 시점)
→ Hierarchy 영역 시각상 spawn = 자동 발사 진행 결과

후속: PD Refresh + Play → 화면 잔존 재확인 필요.
잔존 시 Console "[PlayerSkillInventory] ... removed=N" 로그 +
스크린샷 으로 본 PM 추가 진단.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 21:11:38 +09:00
깃 관리자 ea239fef54 fix(BT12-Dev): 잔존 spawn cleanup 강화 — 3중 진입점 + FX clone catch (PD 지시 2026-05-14)
PD 추가 보고: "여전히 씬을 실행할 때 이전에 생성 된 풀링 오브젝트가 남아있어"

직전 commit 01865b8 Awake cleanup 1회만 호출 — 진입점 보강.

강화 사항:
1. RuntimeInitializeOnLoadMethod(AfterSceneLoad) 정적 cleanup 추가
   — Awake 보다 선행하는 Scene load 직후 진입점.
2. Awake cleanup 무조건 Debug.Log (removed=0 케이스도 호출 확인 가능).
3. DelayedCleanupCoroutine — Awake 후 1·3·10 frame 추가 cleanup
   (다른 컴포넌트 Awake/Start spawn 케이스 catch).
4. StaleClonePrefixes 신규 — FX clone 7종 prefix 매칭
   (FX_Fireball_Bullet·FX_Lightningball·FX_Dragonfire·FX_Thunder·
    FX_SLASH·FX_PinkMagicArrow·Projectile_*).
5. DoCleanupStalePooledSpawns static 메서드 통합 — useImmediate 옵션
   (정적 호출 시 DestroyImmediate·Awake 호출 시 Destroy).

측정 (Play 진입 직후):
- AfterSceneLoad static cleanup removed=0
- Awake cleanup removed=0
→ 이전 Play 잔존은 0건. Hierarchy 영역 보이는 spawn 은
   현재 Play 의 정상 자동 발사 결과 (BaseCooldown Tick spawn) 로 추정.

후속: PD 재현 시나리오 (Stop→Play 또는 Editor crash 후 재실행 등)
직접 확인 필요. Console 영역 "[PlayerSkillInventory] ... removed=" 로그로
cleanup 호출·잔존 카운트 확인 가능.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 18:24:44 +09:00
깃 관리자 01865b88fb feat(BT12-Dev): 게임 재실행 시 잔존 spawn 강제 cleanup (PD 지시 2026-05-14)
PD 보고: "게임 플레이 중 종료했다가 다시 시작할 경우 이전 게임
플레이 중 생성 된 투사체가 여전히 남아있어. 게임을 재실행할 때
기존에 생성 된 풀링 오브젝트가 소멸될 수 있도록 수정해줘."

PlayerSkillInventory.Awake 시점 CleanupStalePooledSpawns 호출:
- Projectile 및 파생 (HomingProjectile·PiercingProjectile) component
  부착 GameObject 전수 destroy
- 박스 시각화 name 5종 (Hitbox_Debug·ProjectileHitbox_Debug·
  LaserHitbox_Debug·MeleeHitbox_Debug·Range_Debug) destroy
- Resources.FindObjectsOfTypeAll + scene.IsValid filter
  (asset prefab 제외)
- removed 카운트 Debug.Log

기존 HideFlags.DontSave (60e28e3) 정합 외 추가 보험:
- DontDestroyOnLoad 경로 (코드베이스 검색 0건 — 방어 코드)
- Scene 영구 저장 누락 케이스
- 메모리 잔존 (Editor crash 후 재시작 등)

검증 (Play 모드):
- A02·A05 발사 후 spawn 카운트 6
- CleanupStalePooledSpawns 직접 호출 + 1 frame 후 카운트 0

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 15:43:52 +09:00
깃 관리자 0ad1325be8 feat(BT12-Dev): 게임 시작 시 기본 파이어볼 A02 자동 습득 (PD 지시 2026-05-13)
- PlayerSkillInventory.StartingCardIds (string[]) Inspector 필드 신규 — 기본 { "A02" }
- Start() 메서드 신규 — Resources 로드 완료 후 시점에 AddSkillByCardId 일괄 호출
- 다중 스킬 지원·잘못된 CardId 자동 skip (AddSkillByCardId LogWarning 정합)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 19:38:36 +09:00
깃 관리자 87710bac58 docs(BT12-Dev Phase 2-A): Skills 13 파일 신규 (인터페이스·SO·중앙 컴포넌트)
C49 Phase 2 (집행) — Sonnet 위임 결과·Phase 1 dev-team-lead 재분석 보고서 정합.

신설 13 파일 (Assets/Scripts/Skills/):
- Interfaces/ (4): ISkillRuntime, IActiveSkill, IPassiveSkill, IAwakeningSkill (+ ActiveTrigger·PassiveTriggerKind·AwakeningPattern enum)
- Data/ (4): SkillDataAsset (abstract·AttributeTag·TypeTag), ActiveSkillData (Category 6종·14 신규 필드), PassiveSkillData (StatType·stub), AwakeningSkillData (stub)
- Runtime/ (4): PlayerStats (POCO·AttributeTag Dictionary), ActiveSkillRuntime (Tick·Fire·EffectiveCooldown 하드캡 0.5s·StackLevelFactor), PlayerSkillInventory ([RequireComponent(Health)]·OnDamagedEvent 구독·NotifyEnemyKilled), SkillRuntimeFactory (Resolve·Create·stub 2종)
- Events/ (1): SkillFireEvent (Simulation.Event<T>·Execute stub·카테고리 분기 6종 주석)

설계서 정합:
- §2-1 인터페이스 계약 (ISkillRuntime → IActiveSkill·IPassiveSkill·IAwakeningSkill)
- §2-2 ScriptableObject 계약 (ActiveCategory 6종·CreateAssetMenu 3종)
- §2-3 PlayerStats POCO·AttributeTag 키 Dictionary
- §3-2 CSV 매핑 테이블·§3-3 Resolve+Create 분기
- §4-2 EffectiveCooldown = BaseCooldown × CooldownMultiplier ÷ StackLevelFactor·하드캡 0.5s
- §4-4 OnHit·OnKill 이벤트 핸들러 PlayerSkillInventory 구현

설계서 대비 조정 3건 (Sonnet 자체 정합):
1. IPassiveSkill.ApplyTo → ApplyModifier·RemoveModifier (설계서 §2-1 명세 정합)
2. AddSkillByCardId 반환 void → bool (실패 감지)
3. EnemyKillContext struct 신설 (Phase 2-D 정식 통합 전 decoupling)

Phase 2-B 준비:
- SkillFireEvent.Execute stub 영역 카테고리 분기 6종 주석
- Phase 2-B 투사체 진입 시 ProjectileSpawner·AttackHitbox 연결 지점 명확

기존 파일 영역 변경 X (BT12-MVP-A·BT5-Dev·BT7-Dev 미변경)
회귀 위험 = 매우 낮음 (신규 파일만)

C50 분량 (PD 사전 승인 80~120K) — 실제 ~73K (정합)
PD 결정 (b 5분할·b-1 카테고리 6분할·우선 투사체) 사전 승인 정합

pm-auditor 사전 감사 = Pass 4 + Minor 1 + Major 1
- Major 1 정정 영역 = git add 명시 path 한정 (Skills 디렉토리만·Screenshots·_Recovery 미포함) 
- Minor 1 후속 영역 = PD Editor Refresh 후 read_console 본 PM 직접 실측

untracked 영역 별도 안건:
- Assets/Screenshots/ (manage_camera screenshot 영역·.gitignore 검토 영역)
- Assets/_Recovery/ (Unity 자동 복구 파일·.gitignore 검토 영역)
2026-05-09 18:31:38 +09:00