diff --git a/공유/대화로그/EerieVillage/2026-05-08.md b/공유/대화로그/EerieVillage/2026-05-08.md new file mode 100644 index 0000000..af282b3 --- /dev/null +++ b/공유/대화로그/EerieVillage/2026-05-08.md @@ -0,0 +1,106 @@ +# EerieVillage 대화로그 — 2026-05-08 + +--- + +## 엔트리 1. BT5-Dev 발판 시스템 영구 마무리 (BT63~BT75) + +**시각**: 2026-05-08 +**주체**: 총괄PM +**영역**: BT5-Dev Phase 3 파일럿 (개발) — 발판 시스템 + 플레이어 조작 +**유형**: PD 시각 검증 반복 + 본 PM 누적 가설 부정확 자인 후 PD 명시 영역 회귀 + 영구 채택 + +### 배경 + +BT5-Dev 발판 시스템 영역 (BT47~BT74)은 PD 시각 검증 반복 + 본 PM 가설 17회 누적 부정확 자인 후 R2 (AutoForeground 분리) 채택으로 PD 의도 정합 영역 도달. 본 엔트리는 BT75 영구 마무리 commit으로 시행착오 주석 정리 + dead code 제거 + PD 명시 채택 영역 결과 보고. + +### 영구 채택 영역 + +#### 1. GameOptimizer.cs — Foreground 분리 + 자동 분류 + +| 단계 | 동작 | +|------|------| +| Init | Layer Matrix Player(13) ↔ Enemy(14) 충돌 OFF | +| SetupJumpThroughPlatforms | Level Tilemap = Layer 0 (지면·벽 영구 충돌) / 그 외 비-trigger Collider2D = Layer 16 | +| PD Foreground | TilemapCollider2D `Object.Destroy` → 가림막 시각만 (PD 직접 그린 영역) | +| AutoForeground (Grid 자식·신규) | Tilemap + TilemapRenderer + TilemapCollider2D + Layer 16 자동 부착 + transform.localPosition 동기화 | +| 자동 분류 | Level → AutoForeground SetTile + Sprite 강제 | +| 제외 조건 | colliderType=None (tree·plant·fence·house) / 이름 prefix `TileGround` (지면·벽) | +| 분류 조건 | `worldY ≥ playerY+1.5` 또는 작은 공중 발판 (가로≤8 + 위·아래 빈) | + +#### 2. PlayerController.cs — Drop-Through 패턴 + 입력 처리 + +| 영역 | 동작 | +|------|------| +| `JUMP_THROUGH_LAYER = 16` | AutoForeground·Foreground 통과 대상 Layer | +| `dropThroughTimer (0.3초)` | Down + Jump 입력 시 Layer 16 mask 강제 OFF | +| `jumpAscentTimer (0.4초)` | 점프 ascending·정점 영역 mask 강제 OFF (jitter 차단) | +| `dropThroughJump` | Drop-Through 점프 시 `velocity.y = -0.5f` (즉시 낙하·IsGrounded=false 확보) | +| `UpdateContactFilterForDropThrough` | ascending·정점·Timer 활성 시 mask OFF / footHit 3점 Raycast (좌·중·우) standingOnPlatform 안정 검출 | +| 밀림 강제 Drop-Through | 점프·낙하 중 `velocity.y > -1.5` + 수평 입력 + 발판 가장자리 일시 검출 → `dropThroughTimer` 강제 활성 | +| Down + Jump 발동 조건 | 발판(Layer 16) 위 footHit 검출 시만 (지면 위 = 일반 점프) | + +#### 3. KinematicObject.cs — 공중 hit X·Y 분리 + +| 영역 | 동작 | +|------|------| +| 공중 hit (`!IsGrounded`) | X 이동 hit (앞 벽) = `velocity.x = 0`만 (점프 속도 보존) / Y 이동 hit (천장) = `velocity.x` + `velocity.y = Mathf.Min(velocity.y, 0)` | + +### 플레이어 조작 시스템 동작 카탈로그 + +| 입력 | 위치 | 결과 | +|------|------|------| +| Jump only | 어디서든 | 일반 점프 (위로) | +| Jump + 수평 이동 | 발판 옆 | 정점 영역 mask 강제 OFF → 깔끔 통과 (jitter 차단) | +| Jump + 전진 (앞 벽) | 지면 | velocity.x=0 + velocity.y 보존 → 위로만 점프 | +| Down + Jump | 발판 위 | Drop-Through (발판 통과 + 점프 모션 + 자연 낙하) | +| Down + Jump | 지면 위 | 일반 점프 (위로) | +| 점프 ascending | 발판 영역 | mask OFF → 통과 | +| 점프 descending | 발판 위 | footHit 3점 검출 → standingOnPlatform=true → 착지 | + +### Tile asset 분류 카탈로그 (PD 명시 정합) + +| 분류 | Tile asset | 동작 | +|------|-----------|------| +| 공중 발판 (자동 분류·Drop-Through) | TileFloatingLeftEdge·RightEdge·TileMiddle | Layer 16 + Sprite Collider | +| 배경·건물 (자동 분류·Drop-Through) | ShortBuilding·TallBuilding·MidgroundFiller·cloud·hillside·midground·mountains | Layer 16 + Sprite Collider | +| 지면·벽 (Level 잔존·영구 충돌) | TileGround·TileGroundDark·TileGroundTop | Layer 0 + Tile asset Grid Collider | +| 배경 (None Tile·자체 통과) | tree·plant·fence·house | Layer 0 + Tile asset None Collider | + +### 시행착오 영역 (정리·git history 영구 보존) + +BT49~BT65 영역 누적 변경 17회 = 본 PM 가설 부정확 + PD 시각 검증 반복. R2 (BT66) 채택 후 영구 마무리 도달. 시행착오 commit 영역 git history 그대로 보존 — 본 BT75 = 시행착오 주석·dead code 정리만. + +핵심 PD 명시 흐름: +1. "Foreground = Grid → Foreground 배경 의도" (PD 정정 — 본 PM 근본 오해 자인) +2. "발판은 위에 설 수 있어야 해" (PD 의도 명시) +3. "이전 버전처럼 발판 통과·점프 가능" (BT47 정합 회귀 명시) +4. "BT48로 복귀해봐" (commit hash 직접 명시) +5. "BT63 = 기본 상태" (PD 정합 인식) +6. "R2로 진행해줘" (AutoForeground 분리 채택) + +### 잔여 영역 (PD 명시 — 추후 필요 시 재요청) + +- BT74 밀림 강제 Drop-Through 영역 일부 잔존 가능 (PD 시각: "바로 떨구는 것 적용 X 느낌"). PD 명시 = "넘어가고 플레이어 조작 시스템 완성". + +### 산출물 + +- `Assets/Scripts/Mechanics/GameOptimizer.cs` (Write 전체 재작성·시행착오 주석 정리) +- `Assets/Scripts/Mechanics/PlayerController.cs` (Edit 부분 정리·Drop-Through 패턴 영구) +- `Assets/Scripts/Mechanics/KinematicObject.cs` (Edit 부분 정리·X·Y 분리 영구) +- EerieVillage commit `2ebacf6` (BT75) — 발판 시스템 영구 마무리 + +### 관련 규칙·자산 + +- **C2 근본 해결** — BT75 시행착오 영역 정리·핵심 영역 보존 +- **C5·C23·C44** — 본 PM 17회 가설 부정확 누적 자인 + PD 명시 영역 직접 따름 +- **C36** — PD 명시 승인 영역만 변경 +- **C18** — 양 git push 정합 (EerieVillage `2ebacf6` + BurningTimes 본 commit) +- `feedback_pm_solution_proactive_proposal` — 본 PM 표준 패턴 보유 한계 자인 후 PD 직접 명시 의무 +- `feedback_pm_excessive_decision_request` — 옵션 명시 + PM 권고 + PD 결정 영역 +- `feedback_pm_mcp_direct_implementation` — 본 PM Editor.log·Scene yaml·git diff direct read 능동 진단 + +### 후속 영역 + +- BT5-Dev 발판 시스템 = **완료 영역**. 활성 PD 지시 로그 BT5-Dev 영역 갱신 의무. +- 잔여 영역 (BT74 밀림 일부 잔존) = PD 명시 = 추후 필요 시 재요청 영역. +- 차기 BT5-Dev 영역 = 다른 메카닉 또는 컨텐츠 영역 (PD 결정).