docs(BT5-Dev #110): MeasureSafeWalkDistance 다단 fallback + 대화로그 엔트리 3
PD 직접 지시 2026-05-08 — 게임성 개선 2건: 1. Foreground 통과 X 원인 정정 (#1) 2. 일부 몬스터 이동 X 원인 정정 (#2) PD 결정 (ii): #2 즉시 정정 + #1 추가 진단 동시 진행 #2 정정 (EerieVillage commit 19e00d3 BT110 push 완료): - Editor.log [Enemy@N] 16건 직접 read — 8~9건 maxR=0/maxL=0 확정 - 근본: footPos = bounds.min.y - 0.5f 단일 산식 → Enemy 인스턴스 변동 대응 X - 정정: sprite/collider/transform 3 영역 × 5 offset = 15 후보 다단 fallback #1 진단 한계 도달 (PD 추가 정보 의뢰): - Scene yaml Foreground GameObject 단일·Collider 부재 확증 - GameOptimizer 정상 호출·Layer matrix 정합·ContactFilter struct mutation 정합 - 가설 5건 누적 후 feedback_pm_root_diagnosis_priority 첫 적용 - PD 의뢰 (a) 위치 (b) 입력 패턴 (c) Editor.log full export 산출물 BT 영역: - 공유/대화로그/EerieVillage/2026-05-08.md 엔트리 3 산출물 EerieVillage 영역 (별도 push 완료): - Assets/Scripts/Mechanics/EnemyController.cs (commit 19e00d3) 산출물 백업 영역 (gitignore): - 공유/개발팀_백업/EerieVillage/EnemyController.cs.bak_20260508_1700.cs 매니페스트: 2026-05-08_BT5Dev110 archived Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
14a7a3eda3
commit
089dd453e9
|
|
@ -215,3 +215,89 @@ PD 시각 검증 반복 영역에서 본 PM 측정·검출·재배치 영역 다
|
||||||
- BT5-Dev 몬스터 시스템 = 거의 완료 영역 (PD 명시 "일부 제외 정합")
|
- BT5-Dev 몬스터 시스템 = 거의 완료 영역 (PD 명시 "일부 제외 정합")
|
||||||
- 좁은 영역 Enemy 잔여 = PD 추후 재요청 시 본 PM 후속
|
- 좁은 영역 Enemy 잔여 = PD 추후 재요청 시 본 PM 후속
|
||||||
- 차기 영역 = PD 결정 영역 (다른 몬스터 종류·컨텐츠 등)
|
- 차기 영역 = PD 결정 영역 (다른 몬스터 종류·컨텐츠 등)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 엔트리 3. BT5-Dev #110 — 일부 몬스터 이동 X 정정 + Foreground 통과 X 추가 진단 의뢰
|
||||||
|
|
||||||
|
**시각**: 2026-05-08 후반
|
||||||
|
**주체**: 총괄PM
|
||||||
|
**영역**: BT5-Dev Phase 3 파일럿 (개발) — 게임성 개선 2건 PD 지시
|
||||||
|
**유형**: PD 시각 검증 1차 후 본 PM Editor.log·Scene yaml direct read 진단 + #2 즉시 정정 + #1 추가 정보 의뢰
|
||||||
|
|
||||||
|
### PD 직접 지시 (2026-05-08)
|
||||||
|
1. 이전 세션에서 통과 가능하게 수정했던 Foreground를 지나갈 수 없는 원인 찾아 정정
|
||||||
|
2. 일부 몬스터가 이동하지 않는 원인 찾아 정정
|
||||||
|
|
||||||
|
PD 결정: (ii) #2 즉시 정정 + #1 추가 진단 동시 진행.
|
||||||
|
|
||||||
|
### #2 진단·정정 — Editor.log 직접 read 확정
|
||||||
|
|
||||||
|
Editor.log `[Enemy@N]` 16건 영역 직접 read:
|
||||||
|
|
||||||
|
| Enemy startY | footPos.y | startTm | maxR/maxL |
|
||||||
|
|---|---|---|---|
|
||||||
|
| -3.32 | -5.36 | NULL → 다른 cell HasTile | 3.81 / 1.59 |
|
||||||
|
| -4.47 | -1.84 | NULL | **0 / 0** |
|
||||||
|
| -0.95 | -5.74 | NULL | **0 / 0** |
|
||||||
|
| -6.46 | -2.15 | NULL | **0 / 0** |
|
||||||
|
| -1.26 | -5.81 | NULL | **0 / 0** |
|
||||||
|
| 0.08 | -7.35 | NULL | **0 / 0** |
|
||||||
|
| -5.71 | -7.39 | NULL | **0 / 0** |
|
||||||
|
| -6.50 | -5.81 | NULL | **0 / 0** |
|
||||||
|
| -4.92 | -7.35 | NULL | **0 / 0** |
|
||||||
|
| 4.31 | 3.42 | NULL | **0 / 0** |
|
||||||
|
|
||||||
|
**근본 원인**: `MeasureSafeWalkDistance` (BT109) 영역 `footPos.y = bounds.min.y - 0.5f` 단일 산식이 Enemy 인스턴스마다 collider bounds·sprite bounds·transform.y 영역 변동 대응 X → footPos cell 발판 cell 영역 미정합 → `startTm = NULL` → `maxR/maxL = 0` → patrol 거리 0 → arrive 즉시 → 무한 정지.
|
||||||
|
|
||||||
|
**정정 (BT110)**: 다단 fallback 채택
|
||||||
|
- sprite·collider·transform 3 영역 각 후보
|
||||||
|
- 각 후보 × 다중 offset (-0.1·-0.3·-0.5·-0.7·-1.0) = 15 후보
|
||||||
|
- 첫 HasTile cell 채택
|
||||||
|
- Debug.Log 강화 (startY·colliderFoot·spriteFoot·chosenFootY)
|
||||||
|
|
||||||
|
EerieVillage commit `19e00d3` (BT110) push 완료.
|
||||||
|
|
||||||
|
### #1 진단 — 본 PM 한계 도달·PD 추가 정보 의뢰
|
||||||
|
|
||||||
|
**확증 사실**:
|
||||||
|
- Scene yaml `Foreground` GameObject 1건 단일 — components = Transform + Tilemap + TilemapRenderer (**Collider2D·TilemapCollider2D·CompositeCollider2D 모두 부재**)
|
||||||
|
- `[GameOptimizer] AutoForeground moved=88 (high=9 small=79 threshold=2.00) / Layer16 applied=1` — 정상 호출
|
||||||
|
- ProjectSettings/Physics2DSettings.asset Layer matrix = `ffffff...ff` (모든 Layer 충돌 ON 기본)
|
||||||
|
- KinematicObject `body.Cast` + ContactFilter2D struct mutation 정합
|
||||||
|
- PlayerController `UpdateContactFilterForDropThrough` 매 frame 갱신 + `JumpState.PrepareToJump` 시점 mask OFF 강제 정합
|
||||||
|
|
||||||
|
**가설 5건 누적 (직접 확증 X)**:
|
||||||
|
1. AutoForeground 발판 영역 자체 충돌 (정상이지만 PD 의도와 다름?)
|
||||||
|
2. Level 잔존 Tile (임계값 미달 + 작은 공중 발판 미해당) = Layer 0 충돌 ON
|
||||||
|
3. Drop-Through mask OFF/ON 동기 영역 frame 정합 X
|
||||||
|
4. PD가 Editor 직접 추가/이동한 Tile 영역 자동 분류 미정합
|
||||||
|
5. AutoForeground 분류 Tile이 PD 통과 의도 영역과 다름
|
||||||
|
|
||||||
|
**`feedback_pm_root_diagnosis_priority` 발동**: 본 PM 가설 5건 누적 + 직접 확증 한계 = PD 추가 정보 능동 수령 의무.
|
||||||
|
|
||||||
|
**PD 추가 정보 의뢰**:
|
||||||
|
- (a) 통과 X 발생 정확 위치 (Scene 좌표 또는 화면 영상)
|
||||||
|
- (b) 통과 X 시점 입력 (점프 위로 통과 X / 옆으로 이동 X / Drop-Through Down+Jump X)
|
||||||
|
- (c) Play 시점 Editor.log full export 또는 어떤 발판이 막는지 시각 묘사
|
||||||
|
|
||||||
|
### 산출물
|
||||||
|
|
||||||
|
- `Assets/Scripts/Mechanics/EnemyController.cs` (MeasureSafeWalkDistance 다단 fallback)
|
||||||
|
- `공유/개발팀_백업/EerieVillage/EnemyController.cs.bak_20260508_1700.cs`
|
||||||
|
- EerieVillage commit `19e00d3` (BT110) push 완료
|
||||||
|
- 매니페스트 `2026-05-08_BT5Dev110` archived
|
||||||
|
|
||||||
|
### 관련 규칙·자산
|
||||||
|
|
||||||
|
- C2 근본 해결 (footPos 단일 산식 폐기·다단 fallback)
|
||||||
|
- C5·C44 정직성 (Editor.log 직접 read 실측 + 본 PM 진단 한계 자인)
|
||||||
|
- `feedback_pm_root_diagnosis_priority` (가설 5건 누적 후 PD 추가 정보 능동 수령 — 본 세션 신설 헌법급 feedback 첫 적용)
|
||||||
|
- `feedback_pm_solution_proactive_proposal` (다단 fallback 표준 패턴 능동 검토)
|
||||||
|
- `feedback_pm_mcp_direct_implementation` (Editor.log·Scene yaml·ProjectSettings 직접 read)
|
||||||
|
|
||||||
|
### 후속 영역
|
||||||
|
|
||||||
|
- **#2 검증 대기**: PD Editor Refresh + Play → `[Enemy@N]` log 영역 chosenFootY·startTm 영역 정합 검증 → 16건 maxR/maxL 정합 도달 확증
|
||||||
|
- **#1 PD 추가 정보 수령**: (a/b/c) 1~2건 후 본 PM 진단 재개·정정 분량 결정
|
||||||
|
- **잔여 BT12-Dev / BT7-Dev / BT7-Plan**: 본 영역 처리 후 PD 결정
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue