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건 요지
- C11(개발 관점 3축) 판정을 기획 요청 수용 전에 반드시 선행한다 — 자원 효율성·코드 직관성·범용성 3축을 통과하지 못하는 설계는 은폐하지 말고 제기(C3).
- 시뮬레이터 이원화(Python vs Unity C#)는 조직 생존급 리스크 — 동일 로직 2언어 유지는 밸런스 신뢰도 붕괴 경로. Unity MCP EditMode 단일 SOT 전환이 근원 해결.
- 서버 Critical 보안 3종(IAP 영수증·AES 하드코딩·클라 전투 연산)은 서비스 오픈 블로커. 서버팀 가동 전 "보류"로 잠시 미뤘더라도 복원 계획과 메모리 SOT(
project_shop_security_pending.md)를 반드시 유지. - Unity MCP 편집은 6단계 표준 워크플로우(SHA 확보→원본 Read→백업→commit→편집→검증) 없이 진행 금지 — C6-1 원본 보호 재발 방지 단일 SOT.
- Agent 호출 시 절대 경로 하드코딩 금지 (C34-11) — worktree 경계를 넘어 main 체크아웃에 변경이 기록되는 실증 사건 재발 방지.
git rev-parse --show-toplevel기반 상대 경로. - worktree-local 저장 자산은 조직 생존급 위험 (C34-15 5문항 체크) —
.live/·memory/org/·audit 3종 중앙 Junction 근원 해결. 신규 설정·저장소 설계 시 5문항 체크 통과 의무. - 코어 프레임워크(BT.Framework)는 현 프로젝트 비투입·조직 자산 계승(P29) — 수상한잡화점 R&D 자산 경로(
수상한잡화점/개발/06_*)에 코어 설계 문서를 두면 오인 유발.프로젝트/코어프레임워크/단일 SOT. - 콘솔 병렬 실행·핫리로드 대안은 기술 검토 없이 결론 금지 — SessionStart/UserPromptSubmit hook 경계,
@import구문의 "세션 시작 1회만 확장" 한계 등 Claude Code 내부 메커니즘 실측 선행. - 서버 권한 분배표를 명시하여 "클라가 SOT인 영역"을 정직하게 기록 — Q-P1·Q-P2·Q-P3 같은 기획 질의에 "클라 코드가 실질 SOT"임을 명시해야 괴리 재발 차단.
- 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+ 본 worktreegit 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 보고 안건 (특이사항)
-
서버 Critical 보안 3종 복원 계획 수립 — 신 프로젝트 EerieVillage의 서버팀 가동 시점에 수상한잡화점 보류분 3종(IAP·AES·전투 연산)의 복원 전략을 PD님께 사전 보고. 메모리 SOT
project_shop_security_pending.md계승 여부도 결정 필요. -
코어 프레임워크 Tier 2·3 진입 경계 확정 — Tier 1 16/16 완료 시점에서 Tier 2(Network·Persistence·UI 공용)·Tier 3(게임 장르별) 진입 조건을 EerieVillage 요구사항과 연계하여 PD님 결정 안건화. P29 "현 프로젝트 미활용·차기 프로젝트 적극 활용" 원칙 적용.
-
Unity MCP 편집 표준 워크플로우 v1 EerieVillage 적용 범위 확정 — BT.Framework 편집은 명시 적용. Unity 씬·프리팹(비스크립트)은 현 버전 미포함. v2 확장 여부 PD 결정.
-
시뮬레이터 이원화 재발 방지 — EerieVillage는 착수 시점부터 "Unity MCP EditMode 단일 SOT" 확정. Python 시뮬은 참조 구현으로만 허용하되 자동 동기화 검증 테스트 의무화를 PD 승인 안건화.
-
PC 독립 셋업 신 PC 합류 프로토콜 — 신 스태프·신 PC 추가 시
setup_windows.ps1·setup_macos.sh+verify_setup3축 검증 의무. 실패 시 Degraded 운영이 아닌 조직공지 이슈화. -
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.mdmemory/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 "조직 자산 계승" 이행 산출물.