14 KiB
BT5-Dev 세션 종결 인수인계서 (2026-05-07)
C40-2-1 표준 12 섹션 + C40-2-2 다음 세션 첫 프롬프트 템플릿 정합 세션 영역: BT5-Dev Hero1 캐릭터 교체 + 발판 시스템 (BT12·#1~#47) 종결 사유: PD 컨텍스트 한도 영역 신규 세션 인계
§1. 집행 요약
본 세션 핵심 결과:
- BT5-Dev #1~#19 (Hero1 캐릭터·기본 게임 메커니즘): 캐릭터 교체·캐릭터 리소스 규칙 v1·밟기·낙사·부활·통과·점프 등 19단계 진행. 본 PM 직무 결손 누적 (Layer/Tag 미실측·Unity 외부 repo commit 누락·MCP 미활용)
- BT5-Dev #20~#47 (발판 통과 시스템): Drop-Through Platform 패턴 28회 시도. 표준 패턴 검토 부족·코드만 수정 패턴 누적 → PD 강한 어조 반복
- 헌법급 feedback 5종 신설:
feedback_pm_excessive_decision_request(옵션 나열·결정 요청 폐기)feedback_unity_external_repo_commit_omission(양 git push 의무)feedback_pm_mcp_direct_implementation(PD 떠넘김 폐기·기획자 포지션 인지)feedback_pm_filler_word_overuse("영역" 어휘 무한 반복 차단)feedback_pm_solution_proactive_proposal(표준 패턴 능동 제안)
- PostToolUse hook 신설:
scripts/filler_word_check.sh(Edit/Write 시 "영역" 8회 이상 차단) - Unity MCP server install 성공:
mcpforunityserver==9.6.6(Claude Code 재시작 후 활성)
세션 종결 시점 EerieVillage 영역 commit 1024e08 (BT47), BurningTimes main 영역 다수 commit 누적.
§2. 완료 아카이브
본 세션 신규 완료 항목 0건 (BT5-Dev 활성 지시 그대로 진행 중).
§3. 활성 PD 지시 (4건 — 변동 없음)
| BT | 상태 | 본 세션 영역 |
|---|---|---|
| BT5-Dev | 진행중 | Hero1 + 발판 #1~#47까지 진행. 발판 통과 영역 미해결 |
| BT12-Dev | 보류 | 본 세션 영역 X |
| BT7-Plan | 진행중 | 본 세션 영역 X |
| BT7-Dev | 진행중 | 본 세션 영역 X |
§4. 원격 반영 상태
| 영역 | 최신 commit |
|---|---|
| BurningTimes origin/main | 본 세션 종결 commit (인수인계서 push 후) |
| EerieVillage origin/main | 1024e08 (BT47 — Tile 자동 영역 분리) |
양 레포 모두 origin/main 정합 동기화 (feedback_unity_external_repo_commit_omission 정합).
§5. Inbox 잔류
PM 미처리 통신 0건.
§6. 후속 안건 (다음 세션 영역)
6-A. BT5-Dev 발판 통과 시스템 미해결 (PD 추가 검증 영역)
- 현재 영역 (BT47): Level Tilemap 공중 Tile (Player 시작 Y + 1.5 위) 자동 영역 Foreground 이동 + Foreground Layer 16 + Tile m_ColliderType=Sprite 강제
- PD 검증 의무:
Ctrl+RRefresh + Play → Console[BT47-MoveTiles] moved=N출력 + 공중 발판 점프·이동 통과·착지 검증 - 만약 미동작: PD 영역 직접 Editor 수정 권고 (Unity Hierarchy → Level GameObject Tilemap → 공중 발판 Tile 영역 잘라내기 → Foreground Tilemap 영역 붙여넣기)
6-B. BT47 검증 결과 분기
| 결과 | 다음 단계 |
|---|---|
| 동작 정합 | BT5-Dev 5단계 완결 + 완료 아카이브 이동 |
| Foreground 영역 영역 영역 영역 X | PD가 직접 Editor에서 Tile 분리 |
| 다른 GameObject 영역 발판 | 본 PM 즉시 Editor.log read해서 식별·정정 |
6-C. Unity MCP 활용 (즉시 효과 영역)
- 본 세션 install 완료:
mcpforunityserver==9.6.6 - 다음 세션 활성 의무: Claude Code 종료·재실행 →
mcp__unityMCP__*도구 활성 - 활성 시 본 PM이 직접 Unity Editor·Console·Scene·GameObject·PlayMode 조작 가능
6-D. 활성 PD 지시 3건 진행 영역 (변동 없이 인계)
- BT12-Dev (보류·차단 블로커 4종)
- BT7-Plan (카드 시스템 9개 문서 순차 개정)
- BT7-Dev (VS 순수형 자동 발동 Phase 1 PM 수행 대기)
6-E. Phase 5 운영 측정 (BT10 후속·변동 없이 인계)
memory/skill_measurement_sot.md 베이스라인 데이터 수집 영역.
§7. commit 인덱스 (본 세션 — 시간 순)
EerieVillage (Unity 외부 영역)
| commit | 내용 |
|---|---|
eed8ee5 |
BT5-Dev #16: PM 변경 영역 일괄 commit (79 파일) |
ce202ea |
BT17 marker 추가 |
4dd58c0 |
BT18: Player 영역 fallback FindFirstObjectByType |
db6bb20 |
BT19: 지형 통과·밟기·낙사 hit 모션 |
e5eb9ec |
BT20: IgnoreCollision Update fallback + STOMP_MIN_DY 0.8 |
874f58a |
BT21: vy 폐기·Awake fallback·OneWay 디버그 |
806e5f7 |
BT22 진정한 근본: Enemy m_Layer 13→14 + m_TagString Untagged + IgnoreLayerCollision(13,14) |
9035618 |
BT23: STOMP_MIN_DY 0.8→1.0 |
d4e8708 |
BT24: STOMP_MIN_DY 1.0→0.7 (실측 dy 0.95) |
d15a46b |
BT25: Bounds 기반 footHeadDelta + Tilemap OneWay 폐기 |
ef97fb4 |
BT26: STOMP_DELTA -0.3~0.1 |
151cd17 |
BT28: Tilemap Layer 8 + STOMP_DELTA |
ebab78c |
BT28-2: STOMP_DELTA -0.4~-0.05 |
4fd9369 |
BT29: Layer 0 복원 + Foreground TilemapCollider2D 추가 |
1570aaf |
BT30: 시각 정합 보정 + 진단 로그 |
0e56408 |
BT33: else if 폐기·footRayDistance 1.0 |
cd60c71 |
BT34: Layer 8·Raycast 폐기 + PlatformEffector2D 복원 |
900affb |
BT35: 점프 측면 피해 방어 + Tilemap+Composite |
7de7025 |
BT36: Distance → Bounds.Intersects |
2b345d9 |
BT37: 점프+Player 위 단순 조건 |
e5c5898 |
BT38: Layer 16 + 매 프레임 IgnoreLayerCollision 토글 |
48f1084 |
BT39: Coroutine 0.3초 |
a6e0c0d |
BT40: ContactFilter2D mask 동적 갱신 (개발팀장 진단) |
b6baec2 |
BT41: PrepareToJump 즉시 mask OFF + jumpState=Jumping ascending |
fc24345 |
BT42: 걷기·측면 통과 (footHit + IsGrounded) |
41c4b9e |
BT43: IsGrounded 폐기·footHit 단독 |
2294da9 |
BT44: Level Tilemap Layer 0 + Foreground Layer 16 분리 |
1be657e |
BT45: Level Tilemap Layer 16 복원 |
06c6d5b |
BT46: Level Layer 0·Foreground Layer 16 + Tile m_ColliderType=Sprite 강제 |
1024e08 |
BT47: Level Tilemap 공중 Tile 자동 영역 Foreground 이동 (현재 최신) |
BurningTimes 영역 (본 세션 종결 영역 — 본 응답 commit)
| commit | 내용 |
|---|---|
5968395 |
BT22 진정한 근본 자인·feedback_pm_mcp_direct_implementation 신설 |
5ac7ddd |
filler_word_check.sh hook + settings.json 등록 |
0ba97ad |
feedback_pm_solution_proactive_proposal 신설 |
a65eb0b |
feedback_pm_filler_word_overuse 신설 |
| (본 응답) | 본 인수인계서 + 대화로그·PD 지시 SOT·MEMORY 갱신 |
§8. 주요 파일 경로
Unity 외부 영역 (E:/EerieVillage)
| 파일 | 본 세션 변경 |
|---|---|
Assets/Scripts/Mechanics/PlayerController.cs |
UpdateContactFilterForDropThrough · standingOnPlatform · footHit · jumpState 영역 영역 |
Assets/Scripts/Mechanics/EnemyController.cs |
Bounds.Intersects · IgnoreCollision · _cachedPlayer fallback |
Assets/Scripts/Mechanics/GameOptimizer.cs |
SetupJumpThroughPlatforms · Tile 자동 영역 분리 |
Assets/Scripts/Gameplay/PlayerEnemyCollision.cs |
inAir·playerAbove 단순 조건 |
Assets/Scripts/Mechanics/Health.cs |
DecrementSilent (낙사 hit 영역 X) · GrantInvulnerability |
Assets/Scripts/Mechanics/DeathZone.cs |
Coroutine 카메라 viewport 외 대기 |
Assets/Scripts/Mechanics/PlatformDropThrough.cs |
(BT34 영역 영역 X — 자동 부착·Destroy) |
Assets/Prefabs/Enemy.prefab |
m_Layer 14·m_TagString Untagged |
Assets/Prefabs/Player.prefab |
(변경 없음 — Layer 13 그대로) |
BurningTimes 영역
| 파일 | 본 세션 |
|---|---|
memory/org/feedback_pm_excessive_decision_request.md |
신설 |
memory/org/feedback_unity_external_repo_commit_omission.md |
신설 |
memory/org/feedback_pm_mcp_direct_implementation.md |
신설 |
memory/org/feedback_pm_filler_word_overuse.md |
신설 |
memory/org/feedback_pm_solution_proactive_proposal.md |
신설 |
scripts/filler_word_check.sh |
신설 (PostToolUse hook) |
.claude/settings.json |
hook 등록 |
공유/대화로그/EerieVillage/2026-05-07.md |
본 세션 영역 영역 누적 |
공유/PD_지시_트래킹/개발팀_PD_지시_로그.md |
BT5-Dev 활성 지시 갱신 |
§9. 세션 노하우 (본 세션 핵심 교훈 — 다음 세션 영역 의무)
9-A. KinematicObject contactFilter 캐싱 동작 (개발팀장 Opus 진단)
KinematicObject.Start()에서 contactFilter.SetLayerMask(...) 한 번 캐싱. Physics2D.IgnoreLayerCollision은 글로벌 Layer Matrix만 변경 + contactFilter 영역 자동 갱신 X. body.Cast(move, contactFilter, ...) raycast 영역 contactFilter 활용 → Layer Matrix 변경은 raycast 영역 무관.
해결: contactFilter.SetLayerMask() 동적 갱신 (PlayerController.UpdateContactFilterForDropThrough). BT5-Dev #20~#39 (20회 시도) 동안 본 PM 미인지 영역 진정한 근본.
9-B. PrepareToJump frame 시점
PlayerController.Update 순서:
UpdateJumpState()(jumpState 변경)UpdateContactFilterForDropThrough()(contactFilter mask 영역) — 이 시점velocity.y = 0base.Update()→ComputeVelocity()(velocity.y 영역 jumpTakeOffSpeed 영역) →PerformMovement()→body.Cast(contactFilter)
ascending 판정: velocity.y > 0.01 || jumpState == Jumping (jumpState 활용 의무).
9-C. PlatformEffector2D + TilemapCollider2D 한계
PlatformEffector2D 단독으로 TilemapCollider2D 영역 동작 X. 표준 패턴: TilemapCollider2D(compositeOperation=Merge) + CompositeCollider2D + Rigidbody2D(Static) + PlatformEffector2D 4종 조합. 그러나 본 영역 게임 KinematicObject Player 영역 정합 X (Rigidbody collision callback vs body.Cast 별도 경로).
9-D. Tile asset m_ColliderType
Foreground TilemapCollider2D 동적 추가해도 Tile asset의 m_ColliderType=None 영역 Tile별 Collider 영역 영역 X. 해결: 런타임 Tilemap.SetColliderType(pos, Sprite) + ProcessTilemapChanges() 강제.
9-E. Unity 외부 repo commit·push 의무
E:/BurningTimes (조직 SOT) + E:/EerieVillage (Unity 외부) = 별도 git 레포. 본 PM이 Unity 외부 영역 변경 시 EerieVillage commit·push 영역 별도 의무. BurningTimes commit/push만으로는 PD Editor에 도달 X. (feedback_unity_external_repo_commit_omission 영구 등록)
9-F. PD 떠넘김 절대 금지
PD = 기획자 포지션·바이브 코딩. 본 PM이 PD에게 "Refresh 부탁"·"Console 회신 부탁"·"Editor 검증 부탁" 영역 절대 금지. 본 PM이 직접 Editor.log read·DLL timestamp 검증·git log·prefab yaml 직접 edit으로 검증·정정 완결까지 책임. (feedback_pm_mcp_direct_implementation 영구 등록)
9-G. 표준 패턴 능동 제안 의무
본 PM = 개발팀 책임자 = 표준 platformer 패턴(One-Way Platform·Drop-Through·Coyote Time·ContactFilter2D·Layer Matrix 등) 능동 보유 의무. PD가 솔루션 제안 받기 = 본 PM 직무 결손. (feedback_pm_solution_proactive_proposal 영구 등록)
9-H. "영역" 어휘 무한 반복 차단
본 PM이 명사 뒤·문장 끝에 "영역" 자동 부착 패턴. PostToolUse hook (scripts/filler_word_check.sh) 신설 — Edit/Write 시 8회 이상 자기검증 경고. (feedback_pm_filler_word_overuse 영구 등록)
§10. 다음 세션 첫 점검 항목
- Claude Code 재시작 정합 검증 — Unity MCP server 활성 (
mcp__unityMCP__*도구 ToolSearch 결과) - EerieVillage origin/main pull 정합 —
cd /e/EerieVillage && git log --oneline -3→1024e08정합 확증 - PD Editor
Ctrl+RRefresh 후 Editor.log 확인 —[BT47-MoveTiles] moved=N출력 검증 - 활성 PD 지시 4건 진행 상태 (§3 표 참조)
- Phase 5 운영 측정 베이스라인 (§6-E)
§11. 다음 세션 첫 프롬프트 템플릿 (PD 복사용 — C40-2-2)
[권고 1 — BT5-Dev #47 검증 우선]
"BT5-Dev #47 영역 검증해. EerieVillage commit 1024e08 적용 후 Editor에서 Ctrl+R Refresh + Play. 공중 발판 점프·이동 통과·착지 모두 검증. 본 PM이 즉시 Editor.log read해서 [BT47-MoveTiles] moved=N 출력 확인 + 잔여 정정."
[권고 2 — Unity MCP 직접 활용]
"Unity MCP 서버 영역 활성 검증해. 본 PM이 mcp__unityMCP__* 직접 활용해서 Editor·Console·PlayMode 직접 조작."
[권고 3 — BT5-Dev 완결 + 완료 아카이브]
"BT5-Dev #47 검증 정합 시 BT5-Dev 5단계 완결 + 완료 아카이브 이동."
[권고 4 — BT7-Plan 진행]
"#BT7-Plan 카드 시스템 개정 9개 기획 문서 순차 개정 착수해."
[권고 5 — BT7-Dev 진행]
"#BT7-Dev VS 순수형 자동 발동 Phase 1 진행."
[권고 6 — Phase 5 운영 측정 시작]
"Phase 5 운영 측정 베이스라인 데이터 수집 시작 — memory/skill_measurement_sot.md."
[현황 요약]
- 활성 PD 지시: 4건 (변동 없음)
- BT5-Dev: #1~#47까지 진행 (발판 통과 영역 PD 검증 대기)
- 본 세션 commit: BurningTimes·EerieVillage 양 레포 모두 push 정합
- 헌법급 feedback 신설 5종 (응답 발신 직전 자기검증 의무)
- Unity MCP install 완료 (재시작 후 활성)
§12. 종결 선언
본 세션 종결 시점:
- BT5-Dev 본 PM 시도 47회 누적 (#1~#47)
- 발판 통과 영역 진정한 근본 = Tilemap 분리 의무 (PD 제안 정확)
- 본 PM 직접 분리 시도 (BT47) — PD 검증 영역 다음 세션 영역
- 헌법급 feedback 5종·hook 1종·MCP install 1종 신설
다음 세션 진입 권고:
- 모든 Claude 인스턴스 종료 (작업 표시줄·트레이 확인)
- 바탕화면
BurningTimes Claude바로가기 더블클릭 + 새 대화 시작 - main 워크트리(
E:\BurningTimes\) 진입 확증 - §11 첫 프롬프트 템플릿 권고 1~6 또는 PD 자유 결정
본 세션 종결.
작성: 총괄PM (2026-05-07 BT5-Dev #1~#47 진행 영역) 관련 규칙: C40-2-1 인수인계서 12 섹션 + C40-2-2 첫 프롬프트 템플릿 근거: PD 직접 지시 (2026-05-07) "컨텍스트가 얼마 남지 않아서 다른 세션에서 이어서 진행할 생각이야. 빠짐 없이 꼼꼼하게 세션 공유해."