From 815a326c7c2d2d034f2f7e7306e9f01cf425ddb9 Mon Sep 17 00:00:00 2001 From: swrring Date: Tue, 19 May 2026 01:02:03 +0900 Subject: [PATCH] =?UTF-8?q?refactor(BT13-Dev-Map=20Registry):=20=EB=8B=A8?= =?UTF-8?q?=EC=88=9C=ED=99=94=C2=B79=EB=B0=A9=ED=96=A5=20=EC=A7=80?= =?UTF-8?q?=EB=A9=B4=C2=B7=EB=B0=9C=ED=8C=90=202=EC=A2=85=C2=B7monsters=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PD 직접 발화 4건 (2026-05-19): 1) A↔F 순서 변경 (배경 이미지 메뉴를 A로 이동) 2) 9방향 sprite 등록 방식 (드롭다운 폐기·타일 이름·weight·tags 제거· 임시 center 1종 일관 배치) 3) 게임 오브젝트 단순화 (Player 단일·Monsters 리스트·Boss 단일· prefab 이름·weight·tags 제거) 4) 기존 에셋 직접 등록·기존 프리펩 카탈로그·단일 프리펩 slot 폐기 client-team-lead Opus 단일 Task 결과: 외부 git E:/EerieVillage 8 파일 변경: - Assets/Scripts/Map/Data/MapResourceCatalog.cs (79→49L) · TileEntry·PrefabEntry struct 폐기·14 필드 폐기 · 11 신규: 9 ground TileBase (TopLeft~BottomRight 3x3) + platformShort + platformLong + List monsters · 유지: backgroundSprite·playerPrefab·bossPrefab - Assets/Editor/Map/MapResourceRegistryWindow.cs (587→357L 전면 재작성) · 4 신규 섹션: A 배경 · B 9방향 ground 3x3 grid · C 발판 2종 · D 게임 오브젝트 ReorderableList · 폐기 섹션 (A~F 직전 구조·기존 Asset 직접 등록·Catalog 미리보기· 단일 slot E 전수) - Assets/Editor/Map/MapAssetBootstrap.cs (200→240L) · 6 신규 자동 link (background·player·groundCenter·platformShort· platformLong·monsters[0]) · EnsureSingleSpriteTile helper — TextureImporter spriteMode 2→1· spriteMeshType=FullRect 자동 정정 + Tile asset 자동 생성 - Assets/Scripts/Map/Generation/GroundPlanner.cs (73→74L) · groundCenter 일관 사용 + 9 slot fallback 체계 - Assets/Scripts/Map/Generation/PlatformPlanner.cs (160→124L) · platformShort/Long 폭 기준 선택 (width≤3=short)·edgeKind 보존 - Assets/Scripts/Map/Generation/SpawnPointPlanner.cs (228→175L) · §15-8 baseEnemyPrefab+MonsterRandomizer 폐기 · monsters 리스트 random pick 단순화 - Assets/Scripts/Map/Runtime/MapApplier.cs (287→280L) · catalog.goalPrefab 참조 제거 (§5 폐기) - Assets/Tests/Editor/MapGeneratorTests.cs (292→280L) · MakeCatalog 갱신·폐기 필드 참조 제거·monsters 리스트 정합 Tile asset 3종 자동 생성: - Assets/Tiles/Auto/Ground_Center.asset (m_ColliderType=Sprite) - Assets/Tiles/Auto/Platform_Short.asset - Assets/Tiles/Auto/Platform_Long.asset PNG meta 자동 정정: - ground.png·AirGround_Type1.png·AirGround_Type2.png spriteMode 2→1 (Bootstrap EnsureSingleSpriteTile 영역 자동) MCP 검증: - refresh_unity OK·domain reload 완료 - read_console CS 컴파일 에러 0건·warning 0건 (기존 무관 2건 제외) - run_tests MapGeneratorTests 15/15 PASS (회귀 0·0.78s) 백업 9건: 공유/개발팀_백업/EerieVillage/BT13-Dev-Map_20260519/ BT 레포: - spec §17 v1.10 행 추가 - PD 지시 로그 BT13 상태 "Registry단순화 완료" 갱신 PD 사용법: 1. EerieVillage/Map/Bootstrap Placeholder Assets 1회 클릭 → PNG import 자동 정정·Tile 3종 자동 생성·Catalog 6 항목 자동 link 2. (선택) EerieVillage/Map/Resource Registry 영역 4 섹션 자유 변경 3. EerieVillage/Map/Preview → Config 드래그·Generate·Apply to Scene 4. Play 잔여 PD 영역: 9-slice 자동 분기 (현 center 1종 일관)·bossPrefab/goalPrefab 후속 등록. 외부 git: PD GitAutoSync 자동 push 위임. Co-Authored-By: Claude Opus 4.7 (1M context) --- 공유/PD_지시_트래킹/개발팀_PD_지시_로그.md | 2 +- 프로젝트/EerieVillage/개발/spec/맵_시스템_설계_v1.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md b/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md index 348d8e2..f37af87 100644 --- a/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md +++ b/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md @@ -33,7 +33,7 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**. | # | 일시 | 지시 요지 | 처리 상태 | 산출물 경로 | 중단 사유 | 사후 조치 | |---|------|----------|----------|-----------|----------|----------| -| BT13-Dev-Map | 2026-05-18 | **맵 시스템 설계 + 구현 (C43 "개발팀" 호칭 직접 수령 + C49 표준 프로세스)** — PD 직접 발화 (2026-05-18): "이제 나는 우리 게임의 맵을 제작하고 싶어. 일반적인 플랫포머 맵 제작 방식 + 맵 길이 지정 시 랜덤 자동 생성 + 거점·Start Point 배치 + 거점 주변 몬스터 spawn (기존 이동 패턴 활용) + 시각 시뮬레이터 사전 확인 + 맵 리소스 등록 기능 + 발판 배치 점프 도달 거리 정합 + 바닥 충돌 자동 적용. 개발팀에서 충분히 논의 후 제안." **PD 결정 4건 (PM 사전 명세 답변)**: (1) Editor Window 1순위·어려우면 Scene 미리보기 fallback (2) Tile (배경) + Prefab (기믹) 양쪽 (3) 매번 완전 랜덤 (Seed X) (4) 맵 길이·비율 생성툴 옵션 미리 지정. **C50 Phase 1 (a) 단일 설계 보고서 채택** (PM 자율·BT12-Dev Phase 1 선례). **PD 결정 Phase 2 (a) 단일 채택 "a 단일 설계 보고서로 진행해" 2026-05-18** — dev-team-lead 권고 (b) 4분할 OVERRIDE → client-team-lead Opus 단일 Task ~69K 진행. | **진행중 (Phase 1+2+2.1+ResourceRegistry+배경반복 완료 2026-05-19 — PD Editor Play 검증 대기)** | dev-team-lead Opus 직접 설계 — `프로젝트/EerieVillage/개발/spec/맵_시스템_설계_v1.md` (1160 라인·18 섹션 §1~§18). §1 요구 분석·§2 사전 실측 13 sub-section (KinematicObject body.Cast hitBuffer[16]·PlayerController maxSpeed 3·jumpTakeOffSpeed 7·PlatformerModel jumpModifier 1.5·Physics2D gravity -9.81·점프 H_max=5.62m·D_max=6.42m 산출·EnemyController patrolMin/Max 5/10·cliffCheck 1.0/2.0·groundLayerMask Layer 0+16·GameOptimizer SetupJumpThroughPlatforms·전 Tile m_ColliderType=1 사전 확정·기획 SOT §5 "수동 배치" OVERRIDE 발견·MapGenerator/Spawn 0건·EditorWindow 깨끗)·§3 4계층 아키텍처 (시각 시뮬·절차 생성·데이터 SOT·런타임)·§4 절차 생성 알고리즘 (Intro/Mid/BossPre 청크)·§5 Tile vs Prefab 분리·§6 발판 배치 룰 (안전 거리 5.78m·안전 높이 5.06m)·§7 바닥 자동 충돌 (GameOptimizer 위임 옵션 B 또는 직접 분리 옵션 A)·§8 거점+Start Point·§9 몬스터 spawn (M001~M006)·§10 EditorWindow 1순위 채택·§11 ScriptableObject MapResourceCatalog·§12 기존 시스템 통합·§13 Phase 2 작업 단위·§14 기각안 6건·§15 PD 결정 안건 11건·§16 C50 Phase 2 토큰 옵션 (b 4분할 권고·총 ~69K). | — | **PD 결정 안건 11건 수령 후 Phase 2 진입**. 핵심: 15-1 기획 SOT §5 "수동 배치" vs PD 신규 "랜덤 자동" 충돌 정정 (level-designer 후속) / 15-2 사선·이중 점프 도입 여부 / 15-3 chunk 옵션 노출 범위 / 15-4 Level/AutoForeground 분리 전략 (옵션 A 권고) / 15-5 공중 발판 SpawnPoint 허용 / 15-6 Start Point 좌측 고정 / 15-7 Enemy 재-spawn timer·count / 15-8 Enemy spawn 방식 (Enemy_M00N 직접 권고) / 15-9 Boss 방 포함 / 15-10 맵 길이 단위 (Tile 권고) / 15-11 옵션 노출 영역. Phase 2 = 옵션 (b) 4분할 (2-A 데이터 SOT ~12K + 2-B 절차 생성기 ~25K + 2-C EditorWindow+Applier ~22K + 2-D 정합 검증 ~10K · 총 ~69K). | +| BT13-Dev-Map | 2026-05-18 | **맵 시스템 설계 + 구현 (C43 "개발팀" 호칭 직접 수령 + C49 표준 프로세스)** — PD 직접 발화 (2026-05-18): "이제 나는 우리 게임의 맵을 제작하고 싶어. 일반적인 플랫포머 맵 제작 방식 + 맵 길이 지정 시 랜덤 자동 생성 + 거점·Start Point 배치 + 거점 주변 몬스터 spawn (기존 이동 패턴 활용) + 시각 시뮬레이터 사전 확인 + 맵 리소스 등록 기능 + 발판 배치 점프 도달 거리 정합 + 바닥 충돌 자동 적용. 개발팀에서 충분히 논의 후 제안." **PD 결정 4건 (PM 사전 명세 답변)**: (1) Editor Window 1순위·어려우면 Scene 미리보기 fallback (2) Tile (배경) + Prefab (기믹) 양쪽 (3) 매번 완전 랜덤 (Seed X) (4) 맵 길이·비율 생성툴 옵션 미리 지정. **C50 Phase 1 (a) 단일 설계 보고서 채택** (PM 자율·BT12-Dev Phase 1 선례). **PD 결정 Phase 2 (a) 단일 채택 "a 단일 설계 보고서로 진행해" 2026-05-18** — dev-team-lead 권고 (b) 4분할 OVERRIDE → client-team-lead Opus 단일 Task ~69K 진행. | **진행중 (Phase 1+2+2.1+ResourceRegistry+배경반복+Registry단순화 완료 2026-05-19 — PD Editor Play 검증 대기)** | dev-team-lead Opus 직접 설계 — `프로젝트/EerieVillage/개발/spec/맵_시스템_설계_v1.md` (1160 라인·18 섹션 §1~§18). §1 요구 분석·§2 사전 실측 13 sub-section (KinematicObject body.Cast hitBuffer[16]·PlayerController maxSpeed 3·jumpTakeOffSpeed 7·PlatformerModel jumpModifier 1.5·Physics2D gravity -9.81·점프 H_max=5.62m·D_max=6.42m 산출·EnemyController patrolMin/Max 5/10·cliffCheck 1.0/2.0·groundLayerMask Layer 0+16·GameOptimizer SetupJumpThroughPlatforms·전 Tile m_ColliderType=1 사전 확정·기획 SOT §5 "수동 배치" OVERRIDE 발견·MapGenerator/Spawn 0건·EditorWindow 깨끗)·§3 4계층 아키텍처 (시각 시뮬·절차 생성·데이터 SOT·런타임)·§4 절차 생성 알고리즘 (Intro/Mid/BossPre 청크)·§5 Tile vs Prefab 분리·§6 발판 배치 룰 (안전 거리 5.78m·안전 높이 5.06m)·§7 바닥 자동 충돌 (GameOptimizer 위임 옵션 B 또는 직접 분리 옵션 A)·§8 거점+Start Point·§9 몬스터 spawn (M001~M006)·§10 EditorWindow 1순위 채택·§11 ScriptableObject MapResourceCatalog·§12 기존 시스템 통합·§13 Phase 2 작업 단위·§14 기각안 6건·§15 PD 결정 안건 11건·§16 C50 Phase 2 토큰 옵션 (b 4분할 권고·총 ~69K). | — | **PD 결정 안건 11건 수령 후 Phase 2 진입**. 핵심: 15-1 기획 SOT §5 "수동 배치" vs PD 신규 "랜덤 자동" 충돌 정정 (level-designer 후속) / 15-2 사선·이중 점프 도입 여부 / 15-3 chunk 옵션 노출 범위 / 15-4 Level/AutoForeground 분리 전략 (옵션 A 권고) / 15-5 공중 발판 SpawnPoint 허용 / 15-6 Start Point 좌측 고정 / 15-7 Enemy 재-spawn timer·count / 15-8 Enemy spawn 방식 (Enemy_M00N 직접 권고) / 15-9 Boss 방 포함 / 15-10 맵 길이 단위 (Tile 권고) / 15-11 옵션 노출 영역. Phase 2 = 옵션 (b) 4분할 (2-A 데이터 SOT ~12K + 2-B 절차 생성기 ~25K + 2-C EditorWindow+Applier ~22K + 2-D 정합 검증 ~10K · 총 ~69K). | | BT12-Dev-Clone | 2026-05-15 22:00 | **A10 분신 스킬 구현 (C43 호칭 + C49 시범)** — PD 직접 발화 (2026-05-15): "이번에는 분신 스킬을 구현해줘. 이 스킬을 사용하면 플레이어의 x좌표 1 뒤쪽에 반투명한 형태의 플레이어의 분신이 생성되어서 플레이와 동일한 스킬을 사용해야 해. (단, 분신의 공격은 플레이어의 공격력의 50% 반감되어야하고, 플레이어보다 0.5초 뒤 사용해야 해. 공격 시작 딜레이)". A10 = BT12-Dev 미구현 8종 중 1. BT12-Dev 보류 와중 PD 명세 확정 부분 구현. C49 시범 (개발팀장 Opus 설계 → 클라이언트팀 Sonnet 구현 → 개발팀장 검증). **PM 1차 합리적 기본값**: facing 반대 1유닛·alpha 0.5·lifetime 영구 1기 (새 발동 시 기존 대체)·무적 유지 (v0.4 CSV "분신은 무적이나 공격력 비율 감소" 정합)·collision 무충돌·Lv 업 1차 미반영 (후속 안건) **[1단계 완료 2026-05-15 16:56]** 개발팀장 Opus 직접 설계 — `프로젝트/EerieVillage/개발/spec/스킬_시스템_설계_v1.md §A10` 신설 (16 sub-section · 약 320 라인). 구조 결정 = (나) CloneInstance MonoBehaviour + 0.5초 지연 큐 + IsCloneFireActive 분기 (옵션 (가)·(다) 기각근거 명시). 신규 파일 2 + 수정 9 + asset 1 + 테스트 1 = 13 영역 작업 단위 분해. 기각안 5건 (별도 Inventory mirror·Effector 2회 발동·transform swap·8초 lifetime·독립 facing). EditMode 7건 신설 안. PD 결정 안건 3종 (BaseCooldown 30·facing 변경 시 위치·무적 spec). 스킬 이펙트 확정 SOT §3 A10 추가 (BaseCooldown 30·BaseDamage 0·Lifetime 영구·코드 하드코딩 영역 명시) + §4 변경 이력 갱신. | **진행중** | **1단계 완료** — 설계 문서 §A10·이펙트 SOT §3 A10·변경 이력 갱신 완결. **2단계 진행 영역** — 클라이언트팀 Sonnet Task 위임 영역 (신규 4 파일·수정 9 파일·asset 1·테스트 1·약 60~80K 추정). C50 영역 본 Task 누적 약 25K + 2단계 위임 약 60K + 3단계 검증 약 15K = 약 100K. C50 사전 PD 안내 영역 외 자체 판단 — PD 매니페스트 등록 시 인지 영역. | — | 2단계 결과 수령 후 3단계 개발팀장 검증 (C49 표준 프로세스 시범 영역) + PM 보고. **모호 영역 PD 결정 안건** (3단계 검증 보고 명시): (1) BaseCooldown 30 PM 추정 — balance-designer 후속 확정 (2) facing 변경 시 분신 위치 (spawn 시점 고정 vs Player 추종 동조) (3) 분신 무적 = 시각 GameObject 자체 (collider 미부착) — 적이 분신 위 올라타거나 적 투사체 통과 영역 Play 검증 (4) Lv 업 (분신 수 증가 등) 1차 미반영 영역 후속. **[BT12-Dev-Clone 완전 완료 2026-05-18]** α·β·γ·δ 4단계 전수 완료. **α**: CloneInstance.cs (218 라인)·CloneEffector.cs (24 라인) 신규. **β**: PlayerSkillInventory (필드 5종+이벤트)·ActiveSkillRuntime (Fire OnPlayerSkillFired·CalculateEffectiveDamage 50% multiplier)·SkillFireEvent (Minion CardId 분기·Cleanup reset)·SkillRuntimeFactory (A10 추가) 수정 4. **γ**: PlayerSkillInventory.GetSpawnAnchor·GetSpawnFacing helper 2 신설 + 6 Effector (Projectile·Laser·MeleeArea·LightningStrike·PoisonSwamp·SpiritFire) anchor·facing 분기 일관 적용. **δ**: A10_bunsin.asset (CardId A10·BaseCooldown 25·MinionLifetime 12·Category Minion) + CloneSkillTests.cs (EditMode 7건·PD 상수·multiplier·helper·Singleton·재귀 skip 검증) 신규. EerieVillage local commit `171506e` (18 파일 변경·PD Editor GitAutoSync 자동 push 대기·burning.i234.me origin 인증). 설계 v1 §A10 잔존 5 위치 (1423·1427·1431·1524·1572) PD 결정 정합 정리 완료. **[PD 결정 4건 2026-05-15 본 응답]** (1) BaseCooldown **25초** (PM 1차 30→PD 25) (2) MinionLifetime **12초** (PM 1차 영구 1기→PD 12초 자동 소멸·Singleton 유지) (3) facing 고정 확정 (4) 무적 Collider 미부착 확정 (5) Lv 업 시 분신 수 X·추후 지속시간↑+플레이어 참조 데미지 비율(%)↑ (balance-designer 후속 수치). SOT 설계 v1 §A10-1·이펙트 SOT v1 §3 A10·§4 변경 이력 PD 결정 반영 완료. **2단계 진행**: PM 권고 (b) 4분할 채택 — α CloneInstance·CloneEffector 신규 → β Inventory·Runtime·Event·Factory 수정 → γ 6 Effector → δ asset+EditMode. **[BT12-Dev-Clone 완전 완료 2026-05-18 — PD 확정 "좋아 이제 제대로 동작하는거 같아"]** EerieVillage commit 15건 누적 (`171506e` 초기 18 파일 → `412dedb` 최종). 본 PM 자성 #1~#7 (C39-10 위반 누적·feedback_new_code_existing_system_dependency_unmeasured) → PD 직접 지시 채택 "MCP 검증 강제" → 이후 모든 fix `refresh_unity`+`read_console`+`run_tests` 사전 검증. EditMode CloneSkillTests 7건 green (0.7초·T01~T07). 세션 종결 인수인계서 `공유/조직공지/2026-05-18_BT12-Dev-Clone_세션종결인수인계.md` + 대화로그 `공유/대화로그/EerieVillage/2026-05-18.md`. **PM 후속**: 본 commit 후 활성→완료 아카이브 이동·balance-designer 이관 (Lv 업 지속시간+데미지 비율(%) Lv별 수치) | | BT12-Dev-Vis | 2026-05-09 | **PlayerSkillInventory 등록 시각화 지시** — PD 직접 발화: "PlayerSkillInventory 등록이 되었는지 어떻게 판단해야하지? 시각적인 변화가 없으니 확인이 불가능해. 유니티 기본 제공 리소스를 활용해도 좋으니 보이게 해줘." **[2026-05-13 후속 세션 신규 3건]** (1) 투사체 사거리 파란 박스 시각화 — `HitboxDebug.SpawnRange` 신규 (`Projectile.Initialize` 끝 호출·3초 유지·`HideFlags.DontSave`). (2) 사정거리·속도 Inspector 직접 조절 — `ActiveSkillData.MaxRange`·`ProjectileSpeed` 신규 필드 (`RangeTier`·`camWidth`·`mults` 계산 폐기·`PiercingProjectile._speed = 2.5f` override 폐기). (3) A04 ExtraHitFxPrefab + FX_Thunder Smoke — `ActiveSkillData.ExtraHitFxPrefab` 신규·`LightningStrikeSpawner.DelayedExtraHitFx` Coroutine (0.6초 후 spawn·y -0.5·비주얼 전용·판정 무관). EerieVillage `ab40b27` push 정합. **[2026-05-13 사고 정정]** 본 PM `git reset --hard origin/main` 영역 PD Inspector 작업 .asset 6 폐기 사고 발생. PD 보고 "스킬 관련 스크립터블 오브젝트가 full 이후 롤백되어버렸어" 수령. `git reflog` 영역 `e2bc95f` 보존 정합·.asset 6 복구·EerieVillage `5b2a032` push 정합. A04 ExtraHitFxPrefab (FX_Thunder Smoke) 영역 PD 후속 Inspector drag&drop 필요. 본 PM 자성 #4 (헌법급) 등재. **[2026-05-13 신규 2건]** (1) 디버그 박스·사거리 박스 시각화 off (재활용 toggle) — `HitboxDebug.ShowDebugVisuals` 플래그 신규·4 위치 `SpriteRenderer.enabled` 정합. (2) 레벨업 카드 풀 5종 한정 — `SkillRuntimeFactory.AvailableCardIds` 화이트리스트 (A02·A13·A04·A05·A_Laser)·미완성 placeholder 5종 (A01·A03·A08·A14·A15) 제외. EerieVillage `d26bd83` push 정합. **잔여**: A04·A05·A_Laser 영역 SkillFireEvent default return 영역 실전 발사 미연결 (카드 풀 한정 영역과 별개·PD 후속 결정 대기). **[2026-05-13 정정·진단]** (1) A05·A_Laser 박스 시각 off 누락 정정 — MeleeAreaSpawner·LaserSpawner 영역 직접 SpriteRenderer 부착 코드 (HitboxDebug 미경유) 영역 `sr.enabled = HitboxDebug.ShowDebugVisuals` 추가. 본 PM 자성 #5 (변경 영향 사전 grep 누락). (2) Player 피격 X 진단 Debug.Log 추가 (회수 의무) — EnemyController.Update L387-396 영역 `[EnemyHit][Intersect]`·`[EnemyHit][Decrement]` 2종. PD Console 측정 결과 영역 근본 fix·Debug.Log revert. EerieVillage `e8779df` push 정합. **[2026-05-13 신규]** 게임 시작 시 기본 파이어볼 A02 자동 습득 — `PlayerSkillInventory.StartingCardIds` (string[]) Inspector 필드·기본 `{ "A02" }`·`Start()` 영역 일괄 `AddSkillByCardId`. EerieVillage `0ad1325` push 정합. **[2026-05-13 신규 2건]** (1) Player 피격 X fix — EnemyController.Update L387-396 영역 `IsGrounded` 조건 폐기 (PD 표현 "닿아도" = ground·공중 무관 피격 의도)·진단 Debug.Log 2종 revert. (2) Enemy HP 30~40 random — `Health.RandomMaxHPRange` (Vector2Int) Inspector 필드 신규·Awake 영역 random·`maxHearts` 자동 산정·Enemy.prefab Inspector `(30, 40)` PD 직접 설정. 본 PM 자성 #6 (PD Console 측정 결과 미수신 영역 가설 fix 시도·feedback_pm_root_diagnosis_priority 약한 위반). EerieVillage `b4847b1` push 정합. **[2026-05-13 재발 정정]** (1) Enemy HP 30~40 자동 fallback — Health.Awake 영역 RandomMaxHPRange 미설정 + EnemyController 검출 → 자동 random. PD Inspector 의존 폐기. (2) Player 피격 distance 기반 강화 + 진단 Debug.Log 재추가 — `VisualBounds.Intersects OR dist < 1.5f` 단일 조건·`[EnemyHit]` 진단·회수 의무. 본 PM 자성 #7 (feedback_pm_root_diagnosis_priority 위반 누적). EerieVillage `2efcd34` push 정합. **[2026-05-13 신규]** Enemy·Player 사망 모션 y -0.5 오프셋 — EnemyDeath·PlayerDeath Execute 영역 Animator death/hurt Trigger 직전 `transform.position.y -= 0.5` 적용·sprite 위로 떠 보이는 현상 정정·collider 영향 X. EerieVillage `18b2125` push 정합. **[2026-05-13 신규]** 스킬 선택 UI 아이콘 fallback — SkillCardSlot.Bind 영역 card.Icon null 시 동적 원 sprite (32×32 알파) + 속성별 색상 (Fire 주황·Frost 하늘·Dark 보라·Lightning 노랑·Physical 흰). _glowEffect 동심원 빛 효과 alpha 0.3. EerieVillage `32ab76f` push 정합. **[2026-05-13 신규 2건]** (1) 사망 모션 y -0.5 → -0.3 (EnemyDeath·PlayerDeath). (2) 게임 시작 시 파이어볼 투사체 정지·잔존 fix — ProjectileSpawner.Trigger 영역 `facing.sqrMagnitude<0.01f` 시 `Vector2.right` fallback. 원인: Player.Facing 영역 (0,0) 영역 → _direction = (0,0) → _speed × 0 = 정지. EerieVillage `56a4a36` push 정합. **[2026-05-13 신규]** 투사체끼리 통과 fix — Projectile.OnTriggerEnter2D 영역 동족 Projectile skip (Wall·Enemy 판정 이전). 원인: fallback GO default Layer 0 영역 → isWall=true → 양쪽 SelfDestruct. EerieVillage `ebd7086` push 정합. **[2026-05-13 신규 4건]** (1) Player 사망 사라지는 현상 fix — PlayerDeath 영역 `Rigidbody2D.simulated=false` (gravity 정지·낙사 차단). (2·3) 제자리 부활·부활 모션·2초 무적 깜박 — PlayerSpawn 영역 `Teleport` 폐기·`health.Resurrect()` 호출 (currentHP=maxHP·invulnerableUntil=2초·Animator resurrect Trigger)·Rigidbody simulated=true 복원·PlayerInvulnerabilityFlash 자동 깜박. (4) FX 잔상 safety cap 5초 — LaserSpawner fx Destroy 누락 추가·LightningStrike·MeleeArea·Projectile.AutoDestroy 영역 `Mathf.Min(lifetime, 5f)` cap. EerieVillage `3a672f0` push 정합. **[2026-05-13 컴파일 에러 fix]** PlayerSpawn.cs CS0246 — using UnityEngine 누락·첫 줄 추가. 본 PM 자성 #8 (신규 type 사용 시 namespace using 사전 검증 누락). EerieVillage `c052d78` push 정합. **[2026-05-13 신규 3건]** (1) Player 죽는 모션 X fix — Player.controller parameter "hurt" 부재 측정·`SetTrigger("hit")`·`updateMode=UnscaledTime`. (2) 부활 모션 중 움직임 fix — PlayerSpawn simulated 복원 폐기·EnablePlayerInput 영역 이전. (3) 투사체 잔상 진단 — `[Projectile][SelfDestruct]`·`[Projectile][OnDestroy]` Debug.Log·회수 의무. 본 PM 자성 #9 (Animator parameter 사전 측정 누락). EerieVillage `69a1805` push 정합. **[2026-05-13 NullReferenceException + 잔존 근본 fix]** ProjectileSpawner.Trigger 영역 collider isTrigger=true 활성 시점 vs Initialize 호출 시점 race → OnTriggerEnter2D 영역 `_runtime=null` NullReferenceException → SelfDestruct 미호출 → 영구 잔존. fix: OnTriggerEnter2D 영역 `_runtime/_data == null` defensive return + Update 영역 `_data == null` 시 즉시 SelfDestruct. 본 PM 자성 #10 (race condition 사전 측정 누락). EerieVillage `1437720` push 정합. **[2026-05-13 신규 3건]** (1) 사망 팝업 타이밍 fix — LevelUpManager.HandleLevelUp 영역 Player 사망 상태 시 _pendingLevels 영역 저장·Update 영역 IsAlive 회복 시 표시. (2) Player 사망 y -0.3 추가 (누적 -0.6). (3) 투사체 잔상 강화 + 진단 — Projectile.Update 영역 lifetime+0.5 backup·Initialize·Trigger 영역 진단 Log·회수 의무. EerieVillage `b1931af` push 정합. **[2026-05-13 근본 원인 fix]** 재시작 시 정지 투사체 누적 — Time.timeScale=0 (LevelUp 등) 영역 Time.time·Invoke 정지 영역 영구 잔존. fix: Projectile `_spawnTime = Time.unscaledTime`·Update 영역 unscaledTime lifetime check·Invoke 폐기·CancelInvoke 추가 안전. 본 PM 자성 #11 (timeScale 영향 사전 측정 누락). EerieVillage `705d943` push 정합. **[2026-05-13 진단 Log 회수]** PD "사라졌어" 정합 작동 확인 후 진단 Debug.Log 5종 revert (ProjectileSpawner·Projectile.Initialize·SelfDestruct·OnDestroy·EnemyHit). Projectile.Update lifetime backup·CancelInvoke 안전망 보존. feedback_pm_root_diagnosis_priority 정합. EerieVillage `41fa4e4` push 정합. **[2026-05-13 신규 2건]** (1) MeleeArea 실전 발사 연결 — SkillFireEvent.Execute switch 영역 MeleeArea case·CardId 분기 (A04·A_Laser·기타). (2) FX AutoDestroy unscaledTime — FxAutoDestroyUnscaled MonoBehaviour 신규 (Object.Destroy 영역 timeScale 영향 fix)·전수 변경·WaitForSecondsRealtime. 본 PM 자성 #12 (Unity 표준 API timeScale 영향 사전 측정 누락). EerieVillage `26b0666` push 정합. **[2026-05-13 신규]** A04 번개 충격 적 유무 무관 자동 발동 — LightningStrikeSpawner.Trigger 영역 candidates 0 시 Player 위치 fallback spawn. A05·A_Laser = 이미 Player 위치 기준 발동·정합. EerieVillage `ebedf6d` push 정합. **[2026-05-13 InvalidOperationException Input System fix]** ParticleGroupView (2).cs 영역 삭제 (Scenes 폴더 영역 비정상 .cs·미사용·StandaloneInputModule 동적 부착 코드)·ProjectSettings activeInputHandler 1→2 (Both 모드·호환). 본 PM 자성 #13. EerieVillage `b30976a` push 정합. **[2026-05-13 본 PM 자성 #14 + fix 정정]** PD 직접 자성 지적 — 본 PM 직전 미승인 `.cs` 삭제 영역 정정. PD 재배치 후 ParticleGroupView (2).cs UnityEngine.Input → InputSystem 전환·activeInputHandler 2→1 revert. EerieVillage `b23e00f` push 정합. **[2026-05-13 Phase A]** A12 정화의 빛 신규·A08 저주의 화살 이펙트 적용 — ActiveSkillData.CastFxPrefab 신규·ProjectileSpawner.Trigger 영역 CastFx spawn·SkillRuntimeFactory.AvailableCardIds 7종 확장. **Phase B 대기** (A06 독 늪·A11 정령불 신규 Effector). EerieVillage `5077f5d` push 정합. **[2026-05-13 Phase B]** A06 독 늪·A11 정령불 신규 Effector + 1키·2키 매핑 — PoisonSwampSpawner/Instance/PoisonedEnemyMarker·SpiritFireSpawner/Instance 신규·SkillFireEvent switch PlacementPersistent·Minion case 확장·TestSkillFireOn1to5 Category 분기 추가·A06·A11 .asset 신규·SkillRuntimeFactory 9종. PD Inspector Player.prefab Skill1·Skill2 drag&drop 필요. EerieVillage `f292eb4` push 정합. **[2026-05-13 Phase B FX 재생 fix]** ParticleSystem 명시 `Play(true)` 호출 추가·PoisonSwampInstance 영역 BoxCollider2D·Rigidbody2D 자식 GO 분리 (ParticleSystem root 영향 차단). EerieVillage `b1b476a` push 정합. **[2026-05-13 A11 frame 제어]** FX_Rotating shield Animator frame 제어 — intro 1~88·loop 89~105 반복·outro 106~169 (남은 frame). Animator.Play(STATE_HASH, 0, normalizedTime) 매 frame 호출. EerieVillage `ebd0808` push 정합. **[2026-05-13 A12·A08·전수 FX Play]** 4 Spawner + Projectile 영역 ParticleSystem.Play(true) 명시 호출 전수 적용 (직전 b1b476a 영역 PoisonSwamp·SpiritFire만 적용 영역 영역 영역 보완). EerieVillage `68843a8` push 정합. **[2026-05-13 A08 sprite 방향 fix]** ActiveSkillData.ProjectileAngleOffset (float Range -360~360) 신규·Projectile.Initialize 영역 angle 보정·A08.asset 180 (FX_PinkMagicArrow sprite left→right). EerieVillage `71c3b7d` push 정합. **[2026-05-13 A08 FX 진단]** A08.asset GUID 정합·코드 정합 측정. PD 보고 영역 실측 진단 Debug.Log 추가 (회수 의무). EerieVillage `aa6cef1` push 정합. **[2026-05-13 CS1056 fix]** ProjectileSpawner.cs interpolated string `\"NULL\"` escape 영역 컴파일 에러·ternary 결과 변수 분리 fix. 본 PM 자성 #15 (Edit 후 컴파일 사전 검증 누락). EerieVillage `9879425` push 정합. **[2026-05-13 fileID 잘못된 측정 정정·자성 #16]** PD Inspector 측정 결과 영역 본 PM .asset 영역 fileID 영역 자식 GameObject 영역 매핑 영역. `grep -m 1` 영역 첫 GameObject 영역 = root 영역 영역 X. A08·A06·A12 .asset 영역 fileID 일괄 정정 (FX_PinkMagicArrow_Hit·FX_PinkArrow_Shoot·FX_Venom_Spray·FX_Icelight_Seal). 올바른 측정 = `awk m_Name + m_Father=0 정합`. EerieVillage `b26eb42`·`447ea92` push 정합. **[2026-05-13 CastFx 방향 + 진단 회수]** CastFx Instantiate 영역 facing+ProjectileAngleOffset+FxRotation 적용 (sprite 반대 방향 정정)·진단 Debug.Log 3종 revert. EerieVillage `7ad3319` push 정합. **[2026-05-13 A08 spawn 끝점·grace]** A08.asset OffsetDistance.x=1.5 (캐스팅 끝 spawn)·Projectile.OnTriggerEnter2D 영역 0.1초 grace 추가 (Hit FX Player 위치 회피). EerieVillage `eab215d` push 정합. **[2026-05-13 ScalingMode Hierarchy 전수]** 모든 fx spawn 영역 ParticleSystem.MainModule.scalingMode = Hierarchy 설정 (HitFxScale 정합 적용·7 파일 전수). EerieVillage `6ed6efe` push 정합. **[2026-05-14 자연 fade SelfDestruct]** Projectile.SelfDestruct 영역 즉시 Destroy 영역 → ParticleSystem Stop(emission)·Collider/박스 disable·_speed=0·0.5s 후 Destroy·FADE_START_RATIO 0.85. 발사 영역 영역 영역 trail 자연 연속. EerieVillage `2ee5084` push 정합. **[2026-05-14 A08 캐스팅 제거·적 조준]** A08.asset OffsetDistance.x=0·CastFx=null·TargetEnemyOnFire=1·ActiveSkillData.TargetEnemyOnFire 신규·ProjectileSpawner.Trigger 영역 nearest enemy 방향 발사. 벽·발판 관통 X 영역 = Projectile.Update Layer 0·16 OverlapPoint 영역 정합. EerieVillage `55ee4f3` push 정합. **[2026-05-14 HitFx sortingOrder·적 조준 하단]** 모든 hit fx (Projectile·LightningStrike·MeleeArea·Laser) Renderer.sortingOrder += 100 (Enemy 영역 위)·ProjectileSpawner TargetEnemyOnFire 영역 toEnemy.y -= 0.5 (hitbox 영역 영역 영역 적중). EerieVillage `eb33e64` push 정합. **[2026-05-14 적 조준 중간 보정]** toEnemy.y -= 0.5 → 0.25 (이전·1차 중간·너무 하단 정정). EerieVillage `b52c99d` push 정합. | **진행중** | 신규 `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`. **[이펙트 작업 완성 확정 2026-05-14]** (PD 발화 "스킬 이펙트 작업은 완성이야. 임의로 투사체 판정 범위나 크기 등이 바뀌지 않도록 지금 상태를 잘 기록해"). 본 PM SOT 신설: `프로젝트/EerieVillage/개발/spec/스킬_이펙트_확정_v1.md` — 13 활성 스킬 (A01·A02·A03·A04·A05·A06·A08·A11·A12·A13·A14·A15·A_Laser) 핵심 필드 표 + 박스↔이펙트 분리 원칙 + EerieVillage stamp `1a1de0c`. **변경 금지 원칙**: PD 직접 명시 지시 없이 임의 변경 금지. 변경 시 SOT §4 갱신 + commit + PD 보고 의무. 본 PM·차기 세션 PM 모두 본 SOT 준수. | | 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 영역). | diff --git a/프로젝트/EerieVillage/개발/spec/맵_시스템_설계_v1.md b/프로젝트/EerieVillage/개발/spec/맵_시스템_설계_v1.md index bd09145..b1c6328 100644 --- a/프로젝트/EerieVillage/개발/spec/맵_시스템_설계_v1.md +++ b/프로젝트/EerieVillage/개발/spec/맵_시스템_설계_v1.md @@ -1167,6 +1167,7 @@ EerieVillage `E:/EerieVillage/Assets/Editor/GitAutoSync/` 영역 영향 X (별 | 2026-05-19 | v1.7 — 배경 이미지 등록·반복 배치 기능 | PD 직접 발화 "배경 리소스는 맵 가장 하위 레이어에서 항상 반복해서 배치 + BgImg_1 + 스크롤 맵 배경으로 반복 이어붙여서 재생 + Resource Registry 수정" + client-team-lead Opus 단일 Task — (1) MapResourceCatalog.cs `Sprite backgroundSprite` 단일 슬롯 추가 (75→79L) (2) MapApplier.cs ApplyBackgroundLayer 헬퍼·BG_ROOT_NAME·SpriteRenderer drawMode=Tiled·tileMode=Continuous·sortingOrder=-1000·맵 전체 size (239→283L) (3) MapResourceRegistryWindow.cs F 섹션 신규 (Sprite ObjectField + Preview thumbnail + Set·Clear) (4) MapAssetBootstrap.cs (9) backgroundSprite ← Assets/Resources/Map/BgImg_1.png 자동 link (193→200L) · MCP 컴파일 0·Map 15/15 PASS 회귀 0 | 클라이언트팀장 (client-team-lead) | | 2026-05-19 | v1.8 — 배경 위치 정렬 fix (PD "맵 선택 실행해도 배경 로테이션 안 됨") | 진단: sprite pivot=(0.5,0.5) center + 기존 position.x=0·z=10 → 배경 영역 x ∈ [-60,+60]·지면 영역 x ∈ [0,120] 불일치·맵 우측 절반 빈 화면. fix: position=(lengthTiles/2, (maxY+minY)/2+6, 0) 맵 중심 정합·heightUnits=(maxY-minY)+6+24 점프 H_max 11.24m×2 여유 반영·z=0 (sortingOrder=-1000 우선)·MCP refresh_unity OK·컴파일 0·Map 15/15 PASS 회귀 0 | 총괄PM (pm-general) | | 2026-05-19 | v1.9 — BgImg_1 import 설정 fix (PD "이미지가 여러장 겹쳐서 보임") | 진단: BgImg_1.png import 영역 spriteMode=2 (Multiple)·spriteMeshType=1 (Tight) → drawMode=Tiled + tileMode=Continuous 영역 정합 X (Tight mesh 영역 trapezoidal 정렬·우측 줄무늬). fix: MCP execute_code 영역 TextureImporter API — spriteImportMode=Single·spriteMeshType=FullRect·spriteExtrude=0·spritesheet 정리·SaveAndReimport. 결과: sprite 1999×845 px·pivot center·PPU=100·Continuous Tiled 정합·Stage1 lengthTiles=120 기준 ≈6장 반복 정상 | 총괄PM (pm-general) | +| 2026-05-19 | v1.10 — Registry 단순화·9방향 지면·발판 2종·monsters 리스트 (PD 명세 4건) | PD 직접 발화 4건 (A↔F 순서 변경·8방향 sprite 등록·게임 오브젝트 단순화·기존 폐기 섹션 제거 + ground.png/AirGround_Type1/Type2 자산 사용 + 임시 center 1종 일관 배치) + client-team-lead Opus 단일 Task. 8 파일 변경 + Tile asset 3종 자동 생성: (1) MapResourceCatalog.cs 전면 재작성 (79→49L·14필드 폐기·11신규 — 9 ground TileBase + platformShort/Long + List monsters) (2) MapResourceRegistryWindow.cs 전면 재작성 (587→357L·4신규 섹션 A 배경/B 9방향 3x3 grid/C 발판 2종/D 게임 오브젝트 ReorderableList) (3) MapAssetBootstrap.cs (200→240L·6 자동 link + EnsureSingleSpriteTile TextureImporter 자동 정정) (4) GroundPlanner.cs (73→74L·groundCenter 일관) (5) PlatformPlanner.cs (160→124L·platformShort/Long 폭 기준 선택) (6) SpawnPointPlanner.cs (228→175L·§15-8 폐기·monsters random) (7) MapApplier.cs (287→280L·goalPrefab 제거) (8) MapGeneratorTests.cs (292→280L·MakeCatalog 정합) + Tile asset 3종 자동 생성 (Tiles/Auto/Ground_Center·Platform_Short·Platform_Long) + ground/AirGround_Type1/Type2 png meta spriteMode 2→1 자동 정정. MCP refresh_unity OK·컴파일 0건·warning 0건·Map 15/15 PASS 회귀 0. 백업 9건 (공유/개발팀_백업/EerieVillage/BT13-Dev-Map_20260519/). 잔여: 9-slice 자동 분기 후속 안건·bossPrefab/goalPrefab 후속 PD 등록 | 클라이언트팀장 (client-team-lead) | ---