BurningTimesAi/공유/조직자산/시행착오_아카이브/개발_클라이언트팀장_v1.md

10 KiB

클라이언트팀장 시행착오 아카이브 v1

조직: BurningTimes (구 NerdNavis 계승) 담당: 클라이언트팀장 대상 원본: 수상한잡화점 (Unity 6000.0.67f1, 외부 레포 FilGoodBandits/DeckBuilding) 계승 대상: EerieVillage (Unity 6000.3.13f1 LTS, 2D PlatformerMicrogame 템플릿)


1. 개요 — 핵심 교훈 8건

  1. Unity MCP 편집 = 6단계 표준 불가침: apply_text_edits/script_apply_edits는 Read-then-Edit 관성 미발생. SHA→Read→백업→commit→편집→검증
  2. Unity 프로젝트는 외부 git 레포: 조직 레포와 분리. 작업 전 git fetch && git status 선행(C30)
  3. 시뮬레이션은 MCP EditMode가 정답: Actor.cs 4,545줄 Headless 추출(07안)을 execute_code + EditMode로 대체, 이원화 근본 해소
  4. 핫리로드는 hook 기반 .live/ 증분 주입: @import·/compact·.claude/rules/는 세션 중 갱신 불가. UserPromptSubmit hook + SHA1 diff만 유효
  5. CLI 병렬은 --worktree 격리: 같은 디렉토리 다중 세션은 덮어쓰기 위험. 연속 작업은 워크트리 강제
  6. 기획팀 협업 = 실측 교차 검증: 문서-실체 괴리(GameManager.cs 부재·Spine 추가·Res_Addr 확장·xlsm SOT 이중화)는 정기 실측만 감지
  7. Tool 버그 점검은 "점검만" 집행 분리: 3축 증거 기반 판정. 수정안은 옵션 분리(PD 결정 영역)
  8. BT.Framework Tier 1 16/16은 차기부터 적용: 수상한잡화점 미도입 확정(P29 원칙 A). 범용 패턴 추출만 수행

2. 시도한 방법·이유·결과·교훈

2-1. Unity MCP 편집 표준 워크플로우 (2026-04-20)

시도 이유 결과 교훈
#57 A 실측 후 script_apply_edits 직접 치환 PM 프롬프트 "C6-1 백업"은 있었으나 MCP 구체 수단(manage_script read→저장) 미명시 편집·검증 정상이나 .bak_* 분리 누락 → C6-1 위반. 복구 3중(보고서·역방향·undo) 실질 손실 0 MCP 원자 편집은 Read-then-Edit 관성 미발생. 절차 명문화 불가침
C31-B 본문 수정 직접 집행 검토 Unity MCP 1회성 원본 변형 대응 팀장 재량 밖(C36-2 방향·원칙, PD 선행) → C31-G(feedback 선행 Read)로 흡수 방향·원칙 변경은 팀장 재량 금지
백업 경로 공유/개발팀_백업/{프로젝트}/{원본명}.bak_{YYYYMMDD_HHMM}.{확장자} PC 독립·git 추적·포맷 통일 단일 SOT. 긴급 시 git stash push -u 조직 레포 내 고정. 절대 경로·Unix timestamp 금지

2-2. 시뮬레이션 방향 전환 (07 Python 추출 → 11 Unity MCP EditMode)

시도 이유 결과 교훈
07안: BattleCore 도메인 추출 + netstandard2.1 + dotnet CLI Python-Unity 결과 불일치 해소 + 엔진 완전 분리 Actor.cs 4,545줄 리팩터링·재빌드 동기화 부담 추출 자체가 근본 아님. 두 구현 유지비 0이 정답
11 신안: execute_code(EditMode) 주력 + Batch Mode 보조 Editor 내 C# Eval → Actor.cs 실클래스 호출. stub 7종(IRandomSource·IClock·ITickDriver·IBattlePresenter·ITableLoader 등) DI 08/09/10 SOT 100%·07 60% 재활용. "단일 SOT = Unity 프로젝트 자체" Unity 전제면 EditMode가 결정론·유지비·접근성 3축 우위
Python vs Unity MCP 5건 교차 검증 후 아카이브 Phase 3 HOLD 해제 요건 비트 단위 일치 확증 후 HOLD 해제 방향 전환 시 병행 검증 필수. 즉시 전환 금지

2-3. 핫리로드 대안 → .live/ 증분 주입 (C34 승격)

시도 이유 결과 교훈
PD 원안 CLAUDE_LIVE.md 공용 파일 세션 중 갱신·참조 @import·.claude/rules/는 세션 시작 1회(A 불가). SessionStart hook은 재시작 시만(C 부분). UserPromptSubmit hook + SHA1 diff만 유효(B) CLAUDE.md 재읽기는 세션 시작//compact/서브디렉토리 접근 시만. 동적 갱신은 hook 외 불가
B+C 혼합: SessionStart 전량 + UserPromptSubmit 변경 감지 토큰 최소 + 매 턴 반영 양립 변경 없는 턴 0, 변경 시 ~1,200 토큰. 9,500자 이내(10,000자 한도) C14 실증. 해시 비교가 핵심
.live/ 증분 주입 → C34 헌법급 worktree 격리로 주입 실패 실증 → 중앙 Junction 조직 핵심 자산. 설정·규칙·에이전트 9종 대상. PC 내 모든 세션 공유 비용 0 worktree 경계 끊김은 생존 이슈. 근본 해결(중앙 저장소 + junction) 필수

2-4. 콘솔 병렬·하이브리드 구조

시도 이유 결과 교훈
CLI 방법 A(같은 디렉토리) 간단·독립 세션·독립 MCP 같은 파일 동시 수정 시 덮어쓰기·git 이력 혼란 작업 영역 분리 원칙. 세션별 수정 디렉토리 명시
CLI 방법 B(--worktree) 독립 파일시스템 복사본 + 독립 브랜치 충돌 없음. 완료 후 main merge 동시 수정 가능성 있으면 워크트리 강제
PM에 모든 작업 보고 C13 완전 준수 토큰 폭증·C14 위반·PM 세션 오염 이벤트 드리븐. 상태 전환·타 부서 영향·헌법급만 push
PM 허브 Agent 호출로 부서 전담 단일 세션 단순화 컨텍스트 단절 — 영속 대화 컨텍스트 무지 연속 작업은 PD님 부서 직접 진입. Agent는 조회·단건 한정

2-5. Tool_Left 점검·기획팀 협업·BT.Framework

시도 이유 결과 교훈
Tool_Left #58 3축 점검(호출 경로·직렬화·스키마) "버그 유무 판정"만 지시 범위 3축 정상. 125 스테이지 중 122건(97.6%) 빈 배열은 2026-04-08 스키마 변경 시 수동 복구 미실행 잔재. #57 A 런타임 자동 복구로 해소 점검은 점검만. 수정안은 옵션 분리
기획팀 유니티 교차 검증 문서 vs 실체 유효성 유효 8·변경 4·확인불가 3. GameManager.cs 부재·Spine 추가·Res_Addr 11개·_Ino.xlsm 오늘 수정 정기 실측 필수
BT.Framework Tier 1 16/16 완결 차기 조직 자산 Log·ServiceLocator·CoroutineRunner·MonoSingleton·EventBus·Observable{List,Dict,Queue}·ObjectPool·Factory·DataTable·Attribute3·Util6 + NUnit 28+ Tier 1은 게임 없이 완결. 2/3은 게임 진행과 축적
수상한잡화점 Framework 도입 자체 코어 사용 중 P29 원칙 A — 미도입. 범용 패턴 추출만 신 프레임워크는 차기 출발 시점이 최적
싱글톤 4종 → MonoSingleton<T> + 옵션 재작성 기회 중복 해소 WaitCahe→WaitCache 수정. DG.*BurningTimes.* 재작성은 오탈자·중복 통합 기회

3. BT 착수 시 체크리스트 (EerieVillage·Unity 6000.3.13f1)

Unity 작업 전 필수: ${UNITY_PROJECT_ROOT} git fetch && git status (C30) · paths.local.json 경로 등록 · MCP Stdio(6400) 연결 · 표준 워크플로우 6단계 준수

Unity MCP 편집 6단계(불가침): (1) get_sha → (2) manage_script(read) → (3) 공유/개발팀_백업/EerieVillage/{원본명}.bak_{YYYYMMDD_HHMM}.{확장자} 저장 → (4) 백업 commit(긴급 시 git stash push -u) → (5) apply_text_edits/script_apply_edits(precondition_sha_256 지정) → (6) SHA 재확인 + refresh_unity + read_console error 0

BT.Framework 도입 배선: manifest.json"com.nerdnavis.framework": "<Gitea URL>#<tag>"(C안) · Framework 동시 개발자는 로컬 file:../BT.Framework(H1) · 2D PlatformerMicrogame 템플릿 샘플은 EerieVillage/Samples/ 격리 · EventBus·ObservableList·DataTable·ServiceLocator 4종 출발점 배선(§04)

시뮬레이션: execute_code(EditMode) 주력·07 Python 추출안 재도입 금지 · IRandomSource·IClock·ITickDriver DI · 동일 시드 비트 단위 동일 결과 검증

기획팀 협업 주기 실측: 산출물 참조 경로·파일 실존·최근 수정일 · xlsm SOT 단일화(이중화 시 즉시 문의) · 스크립트·씬·Res_Addr 변동 감지


4. PM 보고 안건

  • C31-B 본문 확장 안건 (PD 승인 대기): Unity MCP 1회성 원본 변형 집행을 자기검증 명시 대상 추가. C36-2 (a) 해당·팀장 재량 금지. 현 C31-G로 커버. PM 상정 후 PD 승인 시 C36-3로 반영
  • 표준 워크플로우 확장 검토(차후): filesystem·sqlite MCP·외부 레포 직접 편집 적용 여부. 현 시점 Unity MCP 전용 유지. 실증 누적 후 v2·v3 판단
  • BT.Framework 차기 도입 경로: C안(UPM Git URL) + H1(로컬 file:) 배선 확정. Gitea 태그 정책·PD NAS Git 접근 방식 최종 확정. 2D PlatformerMicrogame 템플릿과 공존 방식 설계(Samples 격리)
  • Editor 상시 기동 의존: EditMode execute_code는 Unity Editor 기동 + MCP Stdio 전제. 대량 배치(1만+)는 경로 D(BatchMode 병렬) 별도. 재연결 자동화 스크립트 검토
  • Unity 전제 정합성: MCP 방향은 Unity 전제 위 재활용 한정. 비-Unity 엔진 이관 시 재추출 필요. EerieVillage·차차기 Unity 전제 PD 재확인 권고

5. 참조 원본 파일 목록

Unity MCP 편집 워크플로우

  • 공유/개발팀_자산/Unity_MCP_편집_표준_워크플로우_v1.md
  • 공유/소통/개발팀→PM/2026-04-20_C6-1_재발방지_Unity_MCP_워크플로우.md
  • memory/org/feedback_c6_backup_before_edit_violation.md

기술 검토 (2026-04-16~17)

  • 공유/소통/완료/2026-04-16_콘솔병렬실행_기술검토_개발팀.md
  • 공유/소통/완료/2026-04-16_핫리로드대안_기술검토_개발팀.md
  • 공유/소통/완료/2026-04-16_하이브리드구조_개발실의견.md
  • 공유/소통/완료/2026-04-16_유니티프로젝트_점검_기획팀.md
  • 공유/소통/완료/2026-04-17_Unity_MCP_시뮬레이션_기술검토_개발팀.md

Tool_Left 점검

  • 공유/소통/개발팀→PM/2026-04-20_Tool_Left_버그유무_점검.md

BT.Framework 설계

  • 프로젝트/코어프레임워크/01_아키텍처_개요_v1.md·03_배포방식_안건_v1.md·04_Tier1_3종_상호작용_설계_v1.md

대화로그: 공유/대화로그/코어프레임워크/2026-04-16.md·2026-04-17.md·2026-04-18.md