docs(BT5-Dev #75): 발판 시스템 영구 마무리 — 대화로그 엔트리 + EerieVillage 정리
EerieVillage commit 2ebacf6 (BT75): 발판 시스템 영구 마무리·시행착오 주석 정리·dead code 제거. 본 commit: BurningTimes 영역 대화로그 엔트리 (BT5-Dev 발판 시스템 영구 채택 영역 카탈로그). 영구 채택 영역 (3개 파일): - GameOptimizer.cs: PD Foreground 분리 (가림막 시각만) + AutoForeground GameObject 자동 생성·자동 분류 - PlayerController.cs: Drop-Through 패턴 + Down + Jump + Jump Ascent + footHit 3점 + 밀림 강제 - KinematicObject.cs: 공중 hit X·Y 분리 (전진 점프 시 위 점프 보존) 플레이어 조작 시스템 = PD 정합 완성. BT5-Dev 발판 시스템 = 영구 완료 영역. 본 PM 자인: - BT49~BT65 누적 17회 가설 부정확 (PD 시각 검증 반복) - PD 명시 흐름 (Foreground 정정·BT48 회귀·R2 결정·옵션 A1) 직접 따름 후 영구 마무리 도달 - feedback_pm_solution_proactive_proposal·excessive_decision_request·mcp_direct_implementation 정합 후속: - BT5-Dev 발판 시스템 = 완료 영역 (PD 명시: 추후 필요 시 재요청) - 활성 PD 지시 로그 갱신 = PD 다음 결정 영역
This commit is contained in:
parent
e9e0574b43
commit
c8584466ae
|
|
@ -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 결정).
|
||||||
Loading…
Reference in New Issue