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

18 KiB

type scope author date version project_source project_target
시행착오_아카이브 개발팀_통합 개발팀장 2026-04-21 v1 수상한잡화점 (NerdNavis, 2025-2026) EerieVillage (BurningTimes, 2026~)

개발팀 통합 시행착오 아카이브 v1 — 서버·클라이언트·QA 총괄 관점

1. 개요 — 핵심 교훈 10건 요지

  1. C11(개발 관점 3축) 판정을 기획 요청 수용 전에 반드시 선행한다 — 자원 효율성·코드 직관성·범용성 3축을 통과하지 못하는 설계는 은폐하지 말고 제기(C3).
  2. 시뮬레이터 이원화(Python vs Unity C#)는 조직 생존급 리스크 — 동일 로직 2언어 유지는 밸런스 신뢰도 붕괴 경로. Unity MCP EditMode 단일 SOT 전환이 근원 해결.
  3. 서버 Critical 보안 3종(IAP 영수증·AES 하드코딩·클라 전투 연산)은 서비스 오픈 블로커. 서버팀 가동 전 "보류"로 잠시 미뤘더라도 복원 계획과 메모리 SOT(project_shop_security_pending.md)를 반드시 유지.
  4. Unity MCP 편집은 6단계 표준 워크플로우(SHA 확보→원본 Read→백업→commit→편집→검증) 없이 진행 금지 — C6-1 원본 보호 재발 방지 단일 SOT.
  5. Agent 호출 시 절대 경로 하드코딩 금지 (C34-11) — worktree 경계를 넘어 main 체크아웃에 변경이 기록되는 실증 사건 재발 방지. git rev-parse --show-toplevel 기반 상대 경로.
  6. worktree-local 저장 자산은 조직 생존급 위험 (C34-15 5문항 체크).live/·memory/org/·audit 3종 중앙 Junction 근원 해결. 신규 설정·저장소 설계 시 5문항 체크 통과 의무.
  7. 코어 프레임워크(BT.Framework)는 현 프로젝트 비투입·조직 자산 계승(P29) — 수상한잡화점 R&D 자산 경로(수상한잡화점/개발/06_*)에 코어 설계 문서를 두면 오인 유발. 프로젝트/코어프레임워크/ 단일 SOT.
  8. 콘솔 병렬 실행·핫리로드 대안은 기술 검토 없이 결론 금지 — SessionStart/UserPromptSubmit hook 경계, @import 구문의 "세션 시작 1회만 확장" 한계 등 Claude Code 내부 메커니즘 실측 선행.
  9. 서버 권한 분배표를 명시하여 "클라가 SOT인 영역"을 정직하게 기록 — Q-P1·Q-P2·Q-P3 같은 기획 질의에 "클라 코드가 실질 SOT"임을 명시해야 괴리 재발 차단.
  10. QA 게이트: Unity 빌드 오류·콘솔 에러 잔존 상태로 작업 종료 금지 (P14) — 회귀 검증은 동일 경로 재현 포함. "임시로 돌아가는 코드"는 C2·C11 동시 위반.

2. 시도한 방법·이유·결과·교훈 (4필드 표)

2-1. 아키텍처·설계

시도한 방법 이유 결과 교훈
Python 3종 시뮬(battle_sim·full_stage_sim·stage_sim_v2) + Unity C# 실코드 병행 기획팀 Python 숙련도·빠른 밸런스 반복 메커닉 SOT 불일치(예: PCDefence_Mul=0.3f 실측 vs 기획 가정 50%) · 괴리 발견 루프 무한 발생 Unity MCP EditMode 단일 SOT로 일원화. Python은 참조 구현으로만 존치(동기화 검증 테스트 동반)
카드 311장을 개별 스크립트로 구현 시도(초기) 카드별 특수 효과 구현 편의 신규 카드 추가 = 코드 수정 필요 · 시너지 조합 폭증 대응 불가 데이터 드리븐 아키텍처 강제(e_CardType enum + 파라미터 JSON). "신규 카드가 JSON 한 줄 수정으로 끝나는가?" 핵심 질의
수상한잡화점 내부에 BurningTimesCore 네임스페이스 일부 혼재 초기 분리 부족 프로젝트 특수 로직과 범용 모듈 경계 모호 · 차기 프로젝트 재활용 어려움 P29 코어 프레임워크 독립 레포(BT.Framework) 분리. 수상한잡화점은 비투입, 개발 과정에서 추출 대상만 식별(02_수상한잡화점_추출대상_v1.md)
Tier 1 16종 단일 라운드 일괄 구현 시도 빠른 완결 Data·Event·Container 3종은 상호작용 설계 재검증 필요 · 아키텍처 부채 우려 13종 선행 라운드 완결 후 3종을 #36 신규 지시로 분리. 라운드 완결 아카이브 원칙(feedback_log_round_completion.md) 정착

2-2. 서버·보안

시도한 방법 이유 결과 교훈
PlayFab 주 백엔드 + Firebase 병행 시도 분석·크래시 수집 google-services.json 부재 · Firebase 사실상 비활성 INetworkService 추상화(BurningTimesCore 누락 모듈)로 백엔드 교체 가능 구조 선행
12시간 자동 재로그인 · ServerInfo.cs 단일 허브 세션 유지 단순화 구조 직관성 확보 · 한편 PlayFab 직접 의존 고착 허브 패턴은 유지하되 인터페이스 추상화. 교체 시 허브만 재구현
전투 연산 100% 클라이언트 Unity 내부 연산 편의·초기 속도 변조 방어 불가 · 랭킹·이벤트 보상 악용 경로 최소한 "스테이지 클리어 판정·보상 지급"은 서버 재연산 필수(P0). 전체 재연산은 점진 확장
AES 키 소스 평문 하드코딩 · IL2CPP 의존 빌드 난독화 신뢰 메모리 덤프로 추출 가능 · 사실상 무의미 런타임 유도(디바이스ID 해시 혼합) + 서버 전송 페이로드 HMAC 서명. 키 회전 경로 확보
IAP 영수증 검증 주석처리 상태로 방치 서버팀 미가동 대기 결제 우회 경로 오픈 상태 · 오픈 블로커급 "보류" 상태에서도 반드시 메모리 SOT(project_shop_security_pending.md) + PD 지시 로그 보류 사유·사후 조치 기록(P19). 서버팀 가동 즉시 P0 복원
ACTk 약 10개 필드만 Obscured* · Detector 미사용 초기 최소 적용 SpeedHack·TimeCheck 방어 공백 재화·레벨·카드 보유 수량 전면 Obscured* · SpeedHackDetector·TimeCheckDetector 활성화

2-3. 코어 프레임워크(BT.Framework)

시도한 방법 이유 결과 교훈
코어 설계 문서를 수상한잡화점/개발/06_*에 배치 작성 편의 R&D 비투입 방향 확정 후 "수상한잡화점 산출물"로 오인 유발 프로젝트/코어프레임워크/01~04 단일 SOT로 이동·참조 경로 교체. 06은 "대체됨" 표식
Convert.ChangeType 캐시 방식 Enum 변환 BCL 표준 박싱 발생·핫패스 성능 저하 Unsafe.As<,> 제로-박싱 전환. EnumToInt 단일 SOT
KeyMaker 구분자 _ 혼용 관례 수상한잡화점 _/: 혼재로 조회 실패 경험 : 단일 표준. 전 프로젝트 강제
UnityEngine 의존 허용 시도 (일부 Util) Unity 편의 서버·배치 재사용 불가 · C11 범용성 위반 Tier 1은 순수 BCL 의존만. Unity 의존 모듈은 별 asmdef 분리
CsvHelper 외부 라이브러리 검토 파서 완결성 Tier 1 외부 의존 최소 원칙 위반 · PC 독립 설치 리스크 RFC 4180 핵심(쉼표·따옴표·escape)만으로 자체 구현. 기획팀 통제 CSV라 충분
Newtonsoft.Json 도입 검토 Dictionary·polymorphism 지원 PC 독립 설치 보장 어려움 Unity JsonUtility + 래퍼 채택. 한계 명시 후 고급 케이스는 호출자 자체 파싱 경로 안내
3개 모듈(Event·Container·Data) asmdef 분리 검토 경계 명확화 현 파일 수 규모에서 단일 참조 소비자 경험 우위 단일 asmdef 유지. Tier 2 확장 시 재검토

2-4. 개발 인프라·운영

시도한 방법 이유 결과 교훈
같은 디렉토리에서 CLI 여러 개 병렬 실행 가장 간단 동일 파일 동시 수정 시 덮어쓰기 · git 이력 꼬임 서로 다른 파일/영역·읽기 전용에만 허용. 수정 작업은 --worktree 격리
CLAUDE_LIVE.md 핫 리로드 시도 세션 중 규칙 반영 @import는 세션 시작 1회만 확장 · 자동 반영 불가 UserPromptSubmit hook의 .live/ 증분 주입 경로로 근원 해결(C34)
.live/ 더미를 $REPO_ROOT/.live/에 저장 레포 내부 단순화 worktree마다 물리 격리 발생 · 세션 간 실시간 공유 실패 $HOME/.claude/nerdnavis-live/ 중앙 저장 + worktree junction 연결 (C34-3)
memory/org/를 junction만으로 관리 중앙화 편의 Windows core.symlinks 이슈·한국어 경로 리스크·clone 후 접근 불가 레포는 실체 디렉토리 유지 + sync 스크립트 4계층 양방향 동기화 (C34-16)
Agent 프롬프트에 절대 경로 E:\... 지정 호출 편의 worktree 경계 이탈 · main 체크아웃에 파일 생성 실증(2026-04-18) cwd 기준 상대 경로 의무 + git -C 교차 확인 + 경계 이탈 복구 절차 정착 (C34-11)
빌드 오류·콘솔 에러 잔존 상태로 PR 머지 속도 우선 회귀 버그 빈발 · QA 비용 누적 P14 QA 게이트: 빌드 오류·콘솔 에러 0 원칙. 회귀 검증은 동일 경로 재현 포함
git 동기화 Phase 0~4 체계(NAS·post_receive·sync_signal·post-commit hook) PC 독립 실시간 공유 초기 단계에서 경로·권한 이슈 다수 → 점진 안정화 setup 스크립트 단일 SOT로 PC 독립 셋업 보장(C16). 신 PC 합류 시 verify_setup 3축 검증

2-5. Agent 경계·대화로그

시도한 방법 이유 결과 교훈
서브에이전트 인용 응답을 PM이 직접 작성(역할 연기) 편의 C23 위반 (2026-04-15 실증) · 조직 신뢰 훼손 Task 도구 실제 호출 결과만 인용. 미확인 항목은 "미확인" 태그
완료 후 PD 지시 로그 갱신 누락 작업 우선 다른 세션이 "진행중"으로 오인 (2026-04-16 #27 실증) C27·C29-4 동기화 4종(PD 로그·대화로그·소통 채널·Live 더미) 동시 수행
설계 문서 참조만 남기고 본문 미작성 속도 "유령 문서" 발생 · P18 위반 참조 시점 즉시 작성 착수 또는 "작성 예정(담당·재개 트리거)" 명시
08 전투시스템 SOT와 시뮬레이터 SOT 간 실측값 전파 누락 단일 작업만 수행 #37 완료 후 08이 기획 가정값 유지 · 괴리 재발 위험 수치 확정 시 "해당 수치 등장하는 모든 SOT 전수 grep" 완료 체크리스트 편입

3. BT 조직 착수 시 체크리스트 (개발팀장 기준)

3-1. 세션 시작 직후 (C10-1·C16-4 연속 이행)

  • git fetch origin && git status (조직 레포)
  • Unity 프로젝트(${UNITY_PROJECT_ROOT}) git fetch && git status (C30)
  • 코어 프레임워크(BT.Framework) git fetch && git status
  • 공유/PD_지시_트래킹/개발팀_PD_지시_로그.md 활성 테이블 전수 Read
  • 공유/대화로그/EerieVillage/ 최근 2일 Read + 공유/대화로그/코어프레임워크/ 최근 2일 Read

3-2. 신규 기능·시스템 설계 착수 전

  • C11 3축 판정 (자원 효율성·코드 직관성·범용성) 자문
  • "신규 {카드·적·아이템·이벤트} 추가가 JSON 한 줄로 끝나는가?" 데이터 드리븐 성립 확인
  • 프로젝트 특수 vs 범용 모듈 경계 명시 (범용은 BT.Framework 추출 대상 식별)
  • P18 설계 문서 선행 작성 (배경·대안·구현 가이드·검증 방법·변경 이력 5요소)
  • 기획 요청이 C11과 충돌하면 C3에 따라 우려 즉시 제기

3-3. Unity 코드·씬·프리팹 편집 전

  • Unity MCP 편집 대상이면 6단계 표준 워크플로우(공유/개발팀_자산/Unity_MCP_편집_표준_워크플로우_v1.md) 준수
  • 백업 파일: 공유/개발팀_백업/EerieVillage/{원본}.bak_{YYYYMMDD_HHMM}.{ext}
  • precondition_sha_256 파라미터로 외부 변경 방어
  • 편집 후 get_sha 재확인 + 콘솔 에러 0 검증

3-4. 서버 연동 작업 전

  • 전투·재화·IAP·랭킹·보상 중 어느 영역인지 식별
  • 해당 영역의 서버 권한 vs 클라 권한 표 갱신
  • Critical 보안 3종(IAP 영수증·암호화 키·전투 연산) 재발 여부 체크
  • 신 프로젝트는 백엔드 추상화(INetworkService) 선행 — PlayFab 직접 의존 금지

3-5. Agent 호출·worktree 작업 전

  • Agent 프롬프트에 "cwd 기준 상대 경로 사용 의무" 명시 (C34-11)
  • 산출물 경로는 $(git rev-parse --show-toplevel) 기준 또는 상대 경로
  • Agent 응답 수령 직후 git -C <레포루트> status + 본 worktree git status 병행 확인
  • 신규 공용 저장소·hook·설정 도입 시 C34-15 worktree 경계 5문항 체크 통과

3-6. 작업 완료 시 (C29-4 동기화 4종)

  • 공유/PD_지시_트래킹/개발팀_PD_지시_로그.md 상태 갱신 (완료 아카이브 즉시 이동 + 즉답 접두)
  • 공유/대화로그/{프로젝트}/YYYY-MM-DD.md 엔트리 추가 (결정·설계는 "기각안" 필드 필수)
  • 소통 채널 응답서 status: 완료 + 공유/소통/완료/로 이동
  • .live/ 더미 기록 (세션 갱신 전 즉시 트래킹)
  • 수치·SOT 변경 시 "해당 수치 등장 모든 SOT 전수 grep" 수행 (#37 누락 재발 방지)

4. PM 보고 안건 (특이사항)

  1. 서버 Critical 보안 3종 복원 계획 수립 — 신 프로젝트 EerieVillage의 서버팀 가동 시점에 수상한잡화점 보류분 3종(IAP·AES·전투 연산)의 복원 전략을 PD님께 사전 보고. 메모리 SOT project_shop_security_pending.md 계승 여부도 결정 필요.

  2. 코어 프레임워크 Tier 2·3 진입 경계 확정 — Tier 1 16/16 완료 시점에서 Tier 2(Network·Persistence·UI 공용)·Tier 3(게임 장르별) 진입 조건을 EerieVillage 요구사항과 연계하여 PD님 결정 안건화. P29 "현 프로젝트 미활용·차기 프로젝트 적극 활용" 원칙 적용.

  3. Unity MCP 편집 표준 워크플로우 v1 EerieVillage 적용 범위 확정 — BT.Framework 편집은 명시 적용. Unity 씬·프리팹(비스크립트)은 현 버전 미포함. v2 확장 여부 PD 결정.

  4. 시뮬레이터 이원화 재발 방지 — EerieVillage는 착수 시점부터 "Unity MCP EditMode 단일 SOT" 확정. Python 시뮬은 참조 구현으로만 허용하되 자동 동기화 검증 테스트 의무화를 PD 승인 안건화.

  5. PC 독립 셋업 신 PC 합류 프로토콜 — 신 스태프·신 PC 추가 시 setup_windows.ps1·setup_macos.sh + verify_setup 3축 검증 의무. 실패 시 Degraded 운영이 아닌 조직공지 이슈화.

  6. dev-auditor 모드 A(중요 기술 결정)·모드 B(주기 감사) 운영 정착 — 3축 감사 체계 중 개발 영역 감사가 실무 정착 초기 단계. EerieVillage 착수 초반에 모드 A 호출 빈도를 높여 학습 데이터 축적.


5. 참조 원본 파일 목록 (감사 재현 가능)

5-1. 수상한잡화점 개발 산출물

  • 프로젝트/수상한잡화점/개발/01_기획실_인수인계_v1.md
  • 프로젝트/수상한잡화점/개발/02_개발자관점_점검_v1.md
  • 프로젝트/수상한잡화점/개발/03_Unity프로젝트_구조_v1.md
  • 프로젝트/수상한잡화점/개발/04_코어_범용성_분석_v1.md
  • 프로젝트/수상한잡화점/개발/05_서버연동_현황_v1.md
  • 프로젝트/수상한잡화점/개발/06_신규코어_설계안_v1.md (대체됨 → 프로젝트/코어프레임워크/01~04)
  • 프로젝트/수상한잡화점/개발/07~13_*.md (Phase 3 재개 로드맵 포함)

5-2. 코어 프레임워크 (BT.Framework)

  • 프로젝트/코어프레임워크/01_아키텍처_개요_v1.md
  • 프로젝트/코어프레임워크/02_수상한잡화점_추출대상_v1.md (완료 실적 아카이브)
  • 프로젝트/코어프레임워크/03_배포방식_안건_v1.md
  • 프로젝트/코어프레임워크/04_Tier1_3종_상호작용_설계_v1.md
  • 코어코드/BT.Framework/Runtime/Core/ 전체

5-3. 대화로그

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

5-4. 소통 채널 (완료)

  • 공유/소통/완료/2026-04-16_콘솔병렬실행_기술검토_개발팀.md
  • 공유/소통/완료/2026-04-16_핫리로드대안_기술검토_개발팀.md
  • 공유/소통/완료/2026-04-16_하이브리드구조_개발실의견.md
  • 공유/소통/완료/2026-04-16_코어코드_git통합_점검_개발팀.md
  • 공유/소통/완료/2026-04-16_유니티프로젝트_점검_기획팀.md
  • 공유/소통/완료/2026-04-17_RPT_서버역할_정리_초안.md
  • 공유/소통/완료/2026-04-17_서버_작업_참고자료.md
  • 공유/소통/완료/2026-04-17_서버개발자_업무지시서_최종본.md
  • 공유/소통/완료/2026-04-17_업무공유체계_점검_서버팀.md

5-5. 개발팀→PM 자체 감사·검토

  • 공유/소통/개발팀→PM/2026-04-17_전수감사_자체교차검증_개발팀장관점.md
  • 공유/소통/개발팀→PM/2026-04-18_worktree_격리_근원해결_실무검토.md
  • 공유/소통/개발팀→PM/2026-04-20_C6-1_재발방지_Unity_MCP_워크플로우.md
  • 공유/소통/개발팀→PM/2026-04-20_Tool_Left_버그유무_점검.md
  • 공유/소통/개발팀→PM/2026-04-20_몬스터_미등장_A_집행완료.md

5-6. 조직 자산·표준 워크플로우

  • 공유/개발팀_자산/Unity_MCP_편집_표준_워크플로우_v1.md
  • 공유/서버_작업_참고자료/2026-04-17_서버_작업_참고자료_v1.2.docx (접근 가능 시)
  • 공유/개발팀_백업/ (원본 백업 SOT)

5-7. feedback 메모리 (재발 방지 SOT)

  • memory/org/feedback_agent_path_boundary.md — Agent 절대 경로 유출 실증
  • memory/org/feedback_worktree_isolation.md — worktree 격리 5문항 체크
  • memory/org/feedback_git_scope_shortcut.md
  • memory/org/feedback_dev_auditor_*.md — 개발 감사 실증
  • memory/org/feedback_memory_sync_overwrite.md — memory sync 덮어쓰기 실증
  • memory/org/feedback_c6_backup_before_edit_violation.md — Unity MCP 편집 백업 누락
  • memory/org/feedback_log_round_completion.md — 라운드 완결 아카이브 원칙
  • project_shop_security_pending.md — Critical 3종 보류 SOT

본 아카이브는 BurningTimes 조직이 EerieVillage 및 차기 프로젝트 착수 시 동일한 시행착오를 반복하지 않고 검증된 방법을 재활용하기 위한 개발팀 통합 관점 SOT이다. PD 지시 2026-04-21 "조직 자산 계승" 이행 산출물.