BurningTimesAi/공유/대화로그/GodDem/2026-08-19.md

202 lines
31 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# GodDem 대화로그 — 2026-08-19
> 세션: BT13-GodDem 개시 (총괄PM). 프로젝트 레포: `E:\NerdNavis\GodDem`
## 1. PD 지시 — GodDem 프로젝트 세션 개시 (신규 프로젝트)
- **PD 원문**: "이 세션은 우리 조직의 새로운 프로젝트인 GodDem 프로젝트 개발을 위한 세션이야. 현재 프로젝트 레포는 'E:\NerdNavis\GodDem' 이므로 코드 및 프로젝트를 제대로 검토해보고 개발할 준비가 되면 보고해."
- **수행**: 레포 전체 실측 검토 (C39) → 검토 결과 보고 (본 로그 §3)
## 2. PD 지시 — 도구 자동 승인 처리
- **PD 원문**: "앞으로는 도구 사용을 묻지 않도록 자동으로 도구 승인처리해."
- **집행**: `.claude/settings.json` (조직 SOT) 갱신
- `permissions.defaultMode`: `acceptEdits``dontAsk` (승인 프롬프트 배제, deny 목록 차단은 유지)
- `permissions.additionalDirectories`: `E:\NerdNavis\GodDem` 등록 (외부 레포 접근 자동화)
- allow에 `mcp__mcpforunityserver__*` 추가 (현행 Unity MCP 서버명 — 구 `mcp__unity-mcp__*` 병존 유지)
- **주의**: defaultMode 변경은 세션 재시작 시점부터 완전 적용
## 3. GodDem 레포 검토 결과 (실측 요약)
### 정체
- Unity **6000.3.19f1** 모바일 게임. productName **"에어리언워"**, 구명 prototypeAlien (GitHub lucas-jg/prototypeAlien 유래)
- origin: `https://burning.i234.me/NerdNavis/GodDem.git` (조직 자체 호스팅) · 브랜치 **master** 단일 · origin과 완전 동기화 (ahead/behind 0/0)
- 마지막 커밋 2026-07-18 `1cd8c04` "Hero 탭 정보부 포트레이트 직하 배치 (PD 옵션 c 확정 반영)"
### 게임 구조
- **장르 골격**: 유닛 코스트 자동 충전 → 소환 → Player vs Enemy 유닛 전투 + MainStructure(구조물) 방어. Wave·Stage·TimeLine 진행
- **전투**: `Assets/Script/Battle/` — BattleManager (partial: Reward·Stage·Summon·Wave), MeleeUnit/RangeUnit/ShotUnit, Projectile, MainStructure
- **메타**: 가챠(GachaController)·부스트(BoostController)·컬렉션·장비(EquipT)·미션(GeneralMissionController)·재화(CurrencyManager)
- **데이터**: `Assets/Script/Table/` 18종 테이블 (Unit·Stage·StageBalance·WavePattern·Gacha·Collection·Equip·Mission·Goods 등) + TableManager
- **매니저**: PlayerManager (partial: Battle·Stage·Summon·TimeScale) = 유저 데이터 허브 (UserDataDTO 저장)
- **씬**: BaseLoading → Lobby → Battle (+ UIBattleScene·SampleScene)
- **렌더링**: Spine (TimeLine1~3 × Stage1~6 구조물 아틀라스), 네임스페이스 `NerdNavis.*`
- 게임 코드 ~170개 .cs (Spine·TMP 서드파티 제외 395개 중)
### 조직 이력 (중요)
- 레포 내부 `UIMigration/MIGRATION_SPEC.md` = **총괄PM 2026-07-16 작성** (UI Toolkit → UGUI+TMP 전환 SOT). 커밋 이력에 PD 검수 1~5차 반영 흔적
- **그러나 BurningTimes 레포에는 GodDem 관련 기록 전무** — 이전 작업이 조직 기록 체계(C32·C33) 밖에서 진행됨. 본 세션부터 본 로그로 기록 편입
- 잔여 이슈 1건 (레포 내 `UIMigration/_issues.md`): `ModalDocument.prefab` dead asset 정리 — **PD 컷오버 확정 지시 대기**
### 작업 환경
- Unity 에디터 실행 중 · MCP 연결 정상 (`GodDem@23bbe4a1`, port 6400)
- 미커밋 변경 149건 = 전부 LF→CRLF 줄바꿈 차이 (실질 내용 변경 0건, 새 PC 클론 부산물) — 위험 없음
- Unity MCP 패키지(`com.coplaydev.unity-mcp`) 프로젝트에 설치됨
## 4. 결론 (초기)
개발 준비 완료 보고. → 이후 PD 인게임 재설계 지시로 전환 (§5~).
## 5. PD 지시 — 인게임을 「황야의 생존자」형으로 재설계
- **PD 원문 요지**: 유튜브(https://youtu.be/cBVc0OwUX6U, "황야의 생존자") 형태로 인게임 변경. 더미 리소스(기존 GodDem 자산)로 기본 시스템 동일 설계·씬 배치. **아웃게임 유지, 인게임 씬만 변경.**
- **PD 전투 설명**: ①플레이어 화면 중앙 고정, 몰려오는 적 웨이브마다 자동 공격·처치 ②처치 재화로 매판 로그라이크 스텟 강화 ③10웨이브마다 보스, 스테이지별 웨이브 클리어 시 다음 ④신규: 경험치→레벨업마다 특수 스킬 3종 택1.
- **원작 정체**: Wild Survival (`com.and.wild.sur.victory`), mnmfun. 캐주얼 방치형. 영상은 중앙 디펜스 전투 파트.
- **PD AskUserQuestion 확정**: ①신규 씬 신설 ②기존 유닛 프리팹 재사용 ③설계도 먼저.
- **산출**: 설계도 `공유/기획/GodDem/2026-08-19_인게임_중앙디펜스_전환_설계_v1.md`.
## 6. APK 분석 2건 (실측)
### 6-A. 1차 APK — 원작 아님 (오파일)
- `game-killer-v5.4.0.1-MOD-gamekillerapp.com` = **GameKiller 치트 도구**. Baidu 패킹(`baiduprotect*.dex`) + `libcheat.so` + 오토클릭 UI. Unity 게임 흔적·원작 문자열 0건. 디컴파일 무의미 + 크랙 패킹본 멀웨어 리스크. **분석 종료.**
### 6-B. 2차 APK — 원작 확정, 밸런스 암호화·이미지 평문
- 경로: `Downloads/Wild+Survival+-+Idle+Defense_862_APKPure/` (XAPK 스플릿 3종: base + UnityDataAssetPack 235MB + config.arm64_v8a).
- **엔진**: Unity **2022.3.62f3**, **il2cpp**(`global-metadata.dat` 매직 정상 `af1b b1fa`), **YooAsset**(해시 번들 2938개), **pglarmor 보호**(`libpglarmor.so`·`libil2cpp.so` 66MB).
- **밸런스 데이터**: TextAsset **259개 전부 존재** (`hero_level` 550KB·`pricetable`·`heroskillattributes`·`A80_CombatPowerConfig`·`heroequipmentupgrade`·`shop`·`rankrewards` 등). **그러나 커스텀 스트림 암호**로 암호화 — 전 파일 동일 32byte 헤더 `0d63611716074008120a471006623f394e560c7913687c4e4b171605044b0f0f`, 단일 XOR 불가. 복호화 키는 pglarmor 보호 `libil2cpp.so` 내부 → **네이티브 리버싱 필요(고난도·불확실)**. 파일명으로 원작 시스템 구조만 파악됨.
- **이미지 리소스**: **평문·추출 가능** (UnityPy로 Texture2D→PNG 6개 실증: 文字底框·背光·花 등 중국풍 UI 에셋). 단 **타사 상용 게임 아트 사용 = 저작권 침해 → 출시 불가**. 추출물은 scratchpad 임시 폴더에만, 레포 커밋 금지.
- **스케일 갭**: 원작은 방대한 수집형 RPG(hero·star·equipment·worldboss·pvp·crossserver·auction). 우리 중앙 디펜스 MVP와 근본 불일치.
- **결론**: 원작 밸런스 수치 그대로 이식 = 암호화+pglarmor로 즉시 불가, 리버싱은 별도 대형 과제. 원작 리소스 사용 = 저작권 불가. → **원작 시스템 구조를 참고하되 수치·리소스는 GodDem 자체 자산으로 설계** 권장 (PD 방향 결정 대기).
## 6-C. 원작 밸런스 복호화 **성공** (2026-08-20)
- **PD 지시**: "FABLE5로 원작 복호화 리버싱을 먼저 시도해봐. 안되면 자체 수치로 설계할게." → **리버싱 성공, 자체 설계 불필요**
- **돌파 경로**: `global-metadata.dat`(평문) 문자열에서 `CyclicXorKey`·`XorPad`·`FileOffsetDecryption` 힌트 확보 → 밸런스 파일 간 XOR로 동일 키스트림 확증(DLL 2개 XOR 시 ASCII 94.8%) → IC(일치지수) 분석으로 **키 길이 22** 확정 → 열별 최빈바이트 복원.
- **키**: 22바이트 반복 XOR `[값 삭제 — PD 지시 2026-08-21, 타사 기술적 보호조치 우회 수단이므로 조직 기록 미보존]`. `libil2cpp.so`(66MB·pglarmor) 네이티브 리버싱 **불필요**.
- **성과**: 237테이블 복호화(JSON 유효 187) → **CSV 230종 / 22,261행** 변환. 미복호 20종은 중국어 이름·아이콘 텍스트로 수치 손실 없음.
- **PD 추가 지시**: "csv 형태로 제작해줘" → 완료·전달. "워크플로 설계 시 ponytail 스킬 사용" → 적용.
- **분석**: Workflow 13에이전트(분석 6 + 검증 6 + 종합 1) 기동. 분석 6 완료, 검증 2 완료(skill=중대오류·combat=일부오류 지적 확보), 검증 4 + 종합은 세션 한도로 중단 → **PM이 journal.jsonl 직접 파싱해 종합 수행**.
- **산출**: `공유/기획/GodDem/2026-08-20_원작밸런스_해독_매핑_v1.md` (검증 통과 수식만 채택)
- **핵심 확정 수식**: hero_level 스탯 `0.22L²+0.26L`·EXP비용 `0.5L³+4.5L²`(150행 오차0)·예산 `450+50L` / hero_star 비용 `quality×(star+1)³×(star+50)`(186행 오차0)·보너스 `0.002×quality×star` / 장비 레벨배수 계단식2차 `[1,2,4,8,…,200]`·비용 `Base(q)+V(lv)` 가산분해 / 스킬 등급패턴 6군(A선형·B×2등비 외) / 가중추첨 `354/189/57/26/15/1`(합642) / 확률계 `weight/10000` basis point + 3단 천장(lib2need=9·lib3need=29) / 전투비율 **HP:ATK=4:1**·공격유닛 HP상한 13.3배 규율.
- **판정**: 원작 **수식·구조는 그대로 이식**, **절대수치는 스케일 재조정**(원작=12진영×150레벨 수개월형 vs 우리=1캐릭터×20레벨 매판리셋). 아트·텍스트 리소스는 저작권상 사용 불가 — CSV는 레포 미커밋, scratchpad 보관.
### 6-C-1. pm-auditor 사전 감사 (C35) — 조건부 통과, 지적 전량 반영
- **판정**: 조건부 통과 (Critical 1 / Major 7 / Minor 10). 감사관이 **PM 문서의 실측 오류 4건을 직접 적발** — 전부 검증 미완주(⚠️) 절 소재.
- **적발·정정 완료**: ①`hero_star.max_level = 5×(star+1)` 공식이 **186행 중 12행 불일치**(star29=148·star30=150 클램프) — PM 재실측 확인 후 정정 ②천장 근거가 `drawlib.csv`가 아니라 **`drawtype.csv`**이며 **3단이 아닌 4단**(`libid4need` 존재), 18행 중 4행만 보유·스케줄 2종(9/29/999·61/99/999) — 재실측 확인 후 정정 ③§4(a) ×1.04 근거가 검증에서 반증된 9블록 선택인용 재사용 → 전체 실측 범위(×1.0019~×1.1457) 명시로 정직화 ④`HeroAttackMultiplier`를 "유휴 자산"이라 오판 → 실제로는 `Equip.csv` 2200003 목걸이에 배선되고 3개국어 텍스트까지 완비됐으나 소비 코드 0건인 **사장 결함**으로 정정 ⑤`heroskill.csv` 실존(3행)·액티브 스키마 컬럼 병기 ⑥§2 절별 검증상태 태그(✅/⚠️) 신설 ⑦Minor 수치 정정(풀 합계 10000은 192풀 중 102풀·StageBalance 첫 구간 ×2.90·공식 오차 0.60·237/187 정합·보상배율 예외·dropProb 하한 0.001·`data2` 용도 미규명).
- **C13 위반 자진 보고**: 본 세션 PD 직접 지시 6건이 대화로그에만 있고 `공유/PD_지시_트래킹/개발팀_PD_지시_로그.md`에 미등록이었음 → **BT13-GodDem 엔트리 소급 등록 완료**.
- **저작권 조치**: XOR 키 평문을 기획 문서에서 **마스킹**(타사 기술적 보호조치 우회 수단의 조직 기록 영구 보존은 C36-2 PM 재량 밖 → PD 결정 상신). `.gitignore``scratchpad/`·`wild/`·`*.apk` 선제 등재. 레포 추출물 유입 0건 git 실측 확인.
- **교훈(조직 노하우 후보)**: *"검증 미완주 산출물을 종합 문서에서 '검증됨' 프레이밍으로 승격시키는 실수"* — 전역 고지 1줄은 **절 단위 태그를 대체하지 못한다**. 신규 적발 오류 4건이 전부 미검증 절에서 나온 것이 실증.
## 6-D. 인게임 구현 완료 — 실플레이 검증 (2026-08-20)
- **PD 지시**: "설계대로 진행해서 웨이브가 도는 실 플레이 가능하게 구현해" → 이후 "레퍼런스 게임의 성장 시스템(인게임 재화로 능력치 강화) 도입" + "UI는 기존 리소스 더미 가능, **밸런싱 데이터(획득 재화·강화 비용·증가량·능력치 종류)는 모두 레퍼런스 게임 그대로 이식**" + "스텟 종류는 5종이 아니야, 다시 파악해봐"
- **PD 지적 수용 (중요)**: 본 PM이 `hero_level`의 5컬럼(power/resilience/constitution/agile/lucky)을 능력치 종류로 오판 → PD 지적 후 재실측 결과 **원작 실제 능력치는 `heroskillattr.attr` 24종**(attack_add·hp_add·defense_add·attack_speed_add·hurt_add·hurt_reduce·lucky_rate·lucky_multiple·penetrate_ratio·ele_penetrate_ratio·ele_hurt_add·hp·hit_rate·dodge_rate·stun_rate·suck_ratio·retaliate_rate·combo_rate + 각 `_res` 저항). 5컬럼은 캐릭터 기본 스탯일 뿐이었음. **PD 지적이 정확.**
- **산출 (GodDem 커밋 `0f34411`)**: 신규 씬 `Assets/Scenes/SurvivalBattle.unity` + 스크립트 5종 `Assets/Script/Survival/` + 테이블 `Assets/Resources/CSV/SurvivalUpgrade.csv`. **기존 Battle 씬·아웃게임 무변경** (PD 지시 준수).
- **구현 방식**: 기존 Unit 프리팹 54종·`SkeletonAnimationHandler`(테이블 의존 0인 순수 Spine 래퍼) 그대로 재사용. 런타임에 대전형 `AttackUnitBase`만 제거하고 신규 `SurvivalUnit` 부착 → 프리팹 복제 불필요.
- **원작 이식 밸런스**:
- 능력치 강화 12종 × 6단계 — 증가량 = `heroskillattr` 계열10 q1~q6 실측 그대로 (attack_add 0.05/0.07/0.10/0.15/0.20/0.30, hp_add 0.1~0.6, lucky_rate 0.01~0.06, suck_ratio 50~1600 basis point 등)
- 강화 비용 = `hero_skill_learn` 등급별 base gold 실측 그대로 (10000/20000/40000/60000/76000/90000)
- 골드 획득 = `wildernesspk` 스테이지 클리어 보상 10000골드(+200/스테이지)를 스테이지당 예상 처치 109마리로 분배 → **92골드/마리(+2/스테이지)**. 스테이지 1 완주 ≈ 10,000골드 = 강화 1회로 원작과 정합.
- 적 스탯 = `Base × 2.1^(stage-1) × 1.04^(wave-1)`, **HP:ATK = 4:1**(원작 A80ChampMatchConfig 실측), 보스 HP ×8
- EXP 곡선 = `heroskilltree` 20단계 consume 수열(50,100,…,1300) 그대로
- 스킬 3종 택1 가중추첨 = `heroequipmentskill` weight 상위 3티어(5514/2944/888) 정규화
- **획득량 원작 데이터 부재 (정직 보고)**: PD 질문 "원작 데이터에 획득량 정보는 없는거야?" → 실측 결과 `ItemDropConfig420`(56행)은 **아이템** 드랍 확률(0.001~0.3)·보증위치 테이블이고, `teamwavepassreward`는 웨이브 통과 **아이템** 보상. **적 1마리당 골드 테이블은 추출본에 없음**(서버 계산 또는 추출 범위 밖). 따라서 획득량만 원작 스테이지 보상에서 역산했고 이를 코드·문서에 명시.
- **실플레이 검증 (Unity Play 실측)**: 웨이브 1→2 진행 / 사방 스폰·중앙 자동전투 / 골드 368(=92×4마리) / 레벨업 시 스킬 3종 택1 패널(영웅 등급 출현 확인) / 강화 검증 — 공격력 3단계 시 ATK 22.0→26.8(=22×(1+0.05+0.07+0.10) 정확), 체력 2단계 400→520, 흡혈 1단계 0→0.005 등 **전 수치가 원작 실측값과 일치**. 컴파일 에러 0건.
- **한계**: UI는 프로토타입용 IMGUI(씬 배치 의존 0). UGUI 전환은 인게임 확정 후 UIMigration 규격으로 별도 진행.
## 6-E. PD 지적 2건 수용 — 강화 비용 오매칭·UI 레이아웃 재구성 (2026-08-20)
### 6-E-1. "강화 비용이 엉망이잖아" — 본 PM 오류 2건 (GodDem `e92e6a0`)
- **오류 A (수치)**: `hero_skill_learn`**lv1** 값(10000/20000/40000/60000/76000/90000)을 base로 착각. 실제 base(lv0) = **5000/10000/20000/30000/38000/45000**. 검증 에이전트가 앞서 지적한 값이 맞았고 본 PM 실측 필터(`level=='1'`)가 틀렸음.
- **오류 B (근본)**: `hero_skill_learn`은 **스킬 습득 비용**이지 능력치 강화 비용이 아님. 게다가 `quality × level` 2축 구조인데 quality를 강화 단계로 잘못 매핑(quality6 = lv0 45000 → lv4 225000 = 45000×1~5 선형).
- **전수 재조사**: 골드(db_1001)를 비용으로 쓰는 원작 테이블은 `hero_level`·`hero_skill_learn`·`hero_star` **3개뿐**이며 전부 아웃게임 영구 성장. **인게임 골드 강화 데이터 테이블은 원작 추출본에 없음**(203개 `exceldatatemp` 원본 경로 전수 대조로 확정 — 우리 CSV 230종이 원작 테이블 전량).
- **수정**: 능력치 성장에 골드를 쓰는 원작 유일 곡선 `hero_level` 채택 → 강화 비용 **10/42/99/184/301/454**(L1~6 실측, 1종 만렙 1,090G). 골드 획득은 곡선 1단계 비용을 기준 단위로 **10골드/마리(+2/스테이지)**. 증가량은 기존대로 `heroskillattr` 계열10 q1~q6 유지.
### 6-E-2. "강화 레이아웃을 레퍼런스 게임과 동일하게" (GodDem `004f5ed`)
- **원작 UI 프리팹 직접 추출** — 번들 `container` 경로 16,000건 확보 후 인게임 UI 프리팹 4종의 계층·RectTransform 좌표 덤프.
- **원작 실측 구조**:
- `uimatch.prefab / Canvas/Upgrade` pos(0,359) size(0,735) → `btnAtkUpgrades`·`btnDefUpgrades`·`btnUtilityUpgrades` = **3 카테고리 탭**
- `itemmatchhomebaseupgrade.prefab` size(**506×164**) = 강화 항목 1행 → `txtName`(좌측 이름) + `btnLvUp` size(223×122)(우측 버튼) → 버튼 내 `txtAttr`(증가 수치) + `Cost`(imgCost 아이콘 + txtCost 금액)
- `InfoCanvas/PlayerInfo`(코인)·`WaveInfo`(웨이브) = 상단 정보 바 / `uihomebaseinfo.prefab` = 상세 팝업(CurLv·MaxLv)
- **반영**: 기존 3열 정사각 그리드(자체 설계) → **원작식 3탭 + 가로형 행 2열 리스트**로 전면 재구성. 능력치 12종을 공격6·방어5·유틸1로 원작 카테고리 분류. 패널 상시 노출(원작 동일)에 맞춰 카메라 y 2.7·size 7·스폰 반경 4 조정.
- **검증**: Play 실측 — 공격 탭(공격력·공격속도·피해증가·치명타확률·치명타피해·관통)·방어 탭(체력·체력고정·피해감소·방어력·회피) 정상 출력, 비용 10G·증가량 원작값 표시 확인.
- **교훈**: 원작 재현 요구에서 **UI 프리팹 계층·RectTransform 덤프**가 데이터 테이블만큼 결정적 근거가 된다. 이미지가 평문이면 레이아웃도 복원 가능.
## 6-F. UI 전면 개편 — Layer Lab 에셋 도입 (2026-08-20)
- **PD 지시**: 아웃게임 UI를 Layer Lab GUI Pro-SuperCasual 에셋으로 전면 개편 + 인게임 UI 재구성. 5+2 화면 지정 — ①상점(첨부 원작 SHOP 스타일=13_Shop) ②Hero(6_Equipment·13_Shop 스크롤) ③승리(9_Play_Result_Victory) ④패배(9_Play_Result_Defeat) ⑤인게임(4_Play_UI_Action·Idle) + 로비(1_Lobby) + 나머지 자율 판단. **"Fable5가 설계 후 Opus/Sonnet에게 위임"** 명시. "승인 기다리지 말고 자율 수행".
- **에셋 실측**: `C:\Users\sw\Downloads\Layer Lab\GUI Pro-SuperCasual`. **결정적 발견** — 원작 Wild Survival과 **동일한 SuperCasual 스타일**이며, 지정 화면 전부 **완성 프리팹으로 존재**(Lobby·Shop·Equipment·Play_UI_Action/Idle/ChoiceSkill·PopupDim_Play_Result_Victory/Defeat). `4_Play_UI_Action`=우리 인게임(중앙고정+사방적+조이스틱)과, `4_Play_UI_ChoiceSkill`=우리 레벨업 3종 택1과 구조 동일.
- **에셋 도입**: `Assets/GUIPro/`로 ResourcesData(82M)+Prefabs(28M) 복사 (GUID 유지). 프리팹 534·스프라이트 993·**커스텀 스크립트 0**(순수 비주얼). PSD(635M 원본)·Scene 제외. Layer Lab = **PD 구매 상용 에셋**(정당 사용, 원작 Wild Survival 저작권 침해분과 구분).
- **GodDem 아웃게임 구조 실측**(Explore): UGUI 시스템만 활성(UITK 비활성 레거시). 뷰는 kebab-case 노드 강결합·이벤트 버스(MainMenuUIEvents/ModalEvents)·재화 옵저버(CurrencyManager+ObserverManager). 승/패=단일 UGUIGameResultModal, 상점=빈 껍데기. 씬전환 `UGUILobbyView`→`LoadScene("Battle")`.
- **설계 SOT**: `공유/기획/GodDem/2026-08-20_UI개편_설계_위임_v1.md` — 에셋·필수계약 3종(한글폰트 ONEMobilePOP·CanvasScaler·Unity 단일인스턴스)·화면 매핑·Phase A~C 분할.
### 6-F-1. Phase A 인게임 UI — 완료·검증 (GodDem `cc3ff8d`)
- **위임**: 개발팀장(Opus) → C48 근거(Unity 단일인스턴스·정밀 바인딩)로 팀장 직접 구현. 세션 재시작으로 1차 중단 → 2차 재위임 완료.
- **산출**: `SurvivalUIController.cs` 신규(프리팹 Instantiate + SurvivalBattleManager 바인딩 + 한글폰트 런타임 교체 + 클릭핸들러 코드주입). `SurvivalBattle.unity` — SurvivalHUD(IMGUI) 컴포넌트 제거, SurvivalUICanvas(1080×1920 Expand) 배치.
- **PM 직접 검증**(feedback_pm_image_verification_skip 준수 — 스크린샷 4장 실측): HUD(골드·1-1·킬·경험치·체력 + 강화 3탭 12종) / 스킬선택(3종 택1 [희귀]골드획득·[일반]공격력·[일반]경험) / 승리(왕관검 배너·보상·계속) / 패배(방패화살 배너·보상·다시시작). **한글 렌더링 정상, 콘솔 에러 0**. Layer Lab 스타일 완벽 재현.
- **개발팀장 정직보고 수용**: 폰트 계약 정정(`Resources/Fonts/ONEMobilePOP SDF`는 FontAsset 오타입 → `UGUI/Fonts/ONEMobilePOP_TMP` TMP_FontAsset 사용), 가짜 배경·미사용 노드(조이스틱·상자)·가짜 보상(젬300·상자) 숨김, 승리 트리거는 엔드리스 구조라 Stage 증가 감지로 설계(매니저 무수정).
- **미세 이슈**(후속): 보상 코인 숫자 아이콘 겹침(기능 정상), SurvivalHUD.cs 파일 존치(컴포넌트만 제거), Button_Pause 무동작, 적 개별 HP바 미구현.
### 6-F-2. Phase B 아웃게임 — 완료·검증 (GodDem `3832961`)
- **신규 컨트롤러 방식**: 개발팀장(Opus)이 기존 `MainDocument.prefab`(13만 라인·nested 6331) 개조 대신 `SurvivalLobbyController.cs` 신규 — Layer Lab `Lobby/Shop/Equipment` 프리팹 3종을 전체화면 패널 Instantiate + 폰트 스왑 + 런타임 결선. 기존 대전형 컨트롤러(UGUIUIControllers·LobbyController) 비활성화(비파괴).
- **PM 직접 검증**(스크린샷 3장 실측): 로비(재화헤더·캐릭터·**플레이 버튼**·하단탭 — 원작 1_Lobby 동일) / 상점(스페셜 오퍼·데일리 딜 — 13_Shop 동일) / Hero(캐릭터·장비슬롯6·공격84/체력750·전체해제·합성·능력치 — 6_Equipment 동일). **한글 정상·콘솔 0**.
- **핵심 연결**: `SceneManager.LoadScene("SurvivalBattle")` 실전환 검증 + `CurrencyManager` 옵저버 라이브 바인딩(349.81k 실시간 갱신). EditorBuildSettings에 SurvivalBattle 씬 등록.
- **개발팀장 정직보고**: 폰트 자산 함정(`Resources/Fonts/ONEMobilePOP SDF`=TextCore FontAsset·null반환 → `UGUI/Fonts/ONEMobilePOP_TMP`=TMP_FontAsset 사용). Phase A도 동일 폴백코드 보유하나 SerializeField 할당으로 실동작(한글 정상 확인). Lobby 단독 Play 콘솔 에러 2건은 소환대전 `LobbyScene.OnEnable`(비활성화로 제거).
- **후속(S2 이후)**: 상점 구매·Hero 장착/합성 내부 로직 미결선(SurvivalBattle 영구 메타 미존재, 설계상 후속). BaseLoading→Lobby 전체부팅 검증·로비 장식크롬(Friends/Ranking 등 영문) 후속.
## 6-G. EerieVillage 스킬 시스템 이식 — 착수 (2026-08-20)
- **PD 지시**: EerieVillage(E:\EerieVillage) 프로젝트의 레벨업 스킬(3종 선택) + 연출 이펙트를 GodDem SurvivalBattle에 이식. "EerieVillage에 사용·구현된 스킬을 이식".
- **Explore 실측 (조사)**: EerieVillage = 우리 조직 BT12-Dev 구축 조선무협 스킬 시스템. 액티브 14종(Resources/Skills/Active, 레벨업 풀 10종: 파이어볼·천둥·학익진·독늪·저주화살·분신·정령불·정화의빛·천둥발·용염레이저) + 이펙터 13종(투사체/유도/관통/범위/낙뢰/레이저/독늪/소환/분신/상태이상) + FX 481프리팹(ParticleSystem, 혈·암흑·화염·참격).
- **핵심 판정**: 스킬 시스템이 **Platformer 스타터킷 강결합**(`.asmdef` 없음·`Health`·`EnemyController`·`Simulation` 직접참조) → **통째 복사 불가**. 방식 = **데이터클래스(ActiveSkillData 순수 SO)·스킬.asset·FX는 그대로 이식 + 이펙터는 GodDem 구조로 재구현**(적탐지=SurvivalBattleManager.Enemies·데미지=SurvivalUnit.TakeDamage·발사원=Player.transform).
- **설계 SOT**: `공유/기획/GodDem/2026-08-20_스킬이식_설계_v1.md` (§0 이식판정·§1 어댑터매핑·§2 스킬목록·§3 레벨업연결·§4 S1~S3 분할).
### 6-G-1. Phase S1 대표 3종 — 완료·검증 (GodDem `dbd881e`)
- **산출**: 데이터클래스 이식(SkillDataAsset·ActiveSkillData, EerieVillage.Skills GUID 보존) + 스킬 3종 .asset(A02 파이어볼·A04 천둥·A05 학익진) + FX 114파일(전이 의존 클로저 선별, 481 전량 아님) + 신규 코드 3종(`SurvivalActiveSkillRunner`·`SurvivalProjectile`·`SurvivalSkillFx`) + `SurvivalSkill.Draw` 액티브 혼합 + `SurvivalBattleManager` 러너 생성.
- **재구현 어댑터**: Platformer 강결합(`FindObjectsByType<EnemyController>`·`Health.Decrement`·`Physics2D.OverlapBox` 콜라이더 의존·`Simulation` 이벤트버스) → `SurvivalBattleManager.Enemies` 순회·`SurvivalUnit.TakeDamage`·수동 AABB·직접 호출.
- **PM 직접 검증**(스크린샷 2장 실측): 학익진(흰 베기 궤적)·파이어볼(화염 폭발)·천둥(청색 낙뢰) FX **실전투 정상 발동**. 빌트인RP 렌더 정상(핑크 0, `ERROR_SHADER_COUNT=0`). 스킬 습득→발동→적 피해·처치(gold 110→880), 컴파일·콘솔 에러 0.
- **개발팀장 정직보고**: FX/투사체 `HideFlags.DontSave`(EerieVillage 에디트모드 패턴) 이식돼 FindObjectsByType 미포착 — 코드 정상, S2 제거 권고. A04·A05 아이콘 null(카드 텍스트만). 밸런스 DamageScale=1.0 미세조정 미실시(S3 balance-designer).
- **위임 구조**: 개발팀장 C48 판단(Unity 단일 인스턴스·설계-Unity 강결합)으로 팀장 직접 수행(클라이언트팀 위임 대신).
### 6-G-2. Phase S2 나머지 7종 — 완료·검증 (GodDem `0e06942`)
- **이식 7종**: A13 천둥발(관통·재타격)·A15 추적화염구(유도)·A08 저주화살(조준+디버프스택 5스택폭발)·A12 정화의빛(2차판정)·A_Laser 용염레이저(라인 지속피해)·A06 독늪(설치 장판+DoT마커)·A11 정령불(회전방패 소환). 카테고리 4종 커버.
- **신규 코드**: `SurvivalDebuffStack`·`SurvivalPoisonSwamp`(+Marker)·`SurvivalSpiritFire` + `SurvivalActiveSkillRunner` 디스패치 확장 + `SurvivalProjectile` 유도/관통/스택 통합.
- **FX 113파일** 의존성 폐포 선별 도입(.cs 의존 0·순수 파티클, 481 전량 아님). 전 10종 .asset FX GUID 참조 해결.
- **S1 이슈 처리**: DontSave 제거·아이콘 GUIPro PictoIcon 리맵(전10종)·OnHit 트리거 불요확정(S2 7종 전량 OnTime 실측).
- **PM 직접 검증**(스크린샷 실측): 화염·청색 마법진 오브·세로 레이저빔 동시 발동(파티클 최대 267), 승리 화면, 콘솔 에러 0. 개발팀장 상세 수치(A13 피해 2723·A08 5스택 폭발 1000·A12 1차0/2차100 독립판정) 정직 보고.
- **churn 처리**: refresh force 재직렬화 churn(Spine/폰트/설정 155+3건)은 S2 무관 → 커밋 제외·git checkout 원복. S2 산출물만 커밋.
- **S3 이연**: A10 분신(복잡·설계상 선택)·밸런스 정밀 튜닝(balance-designer).
## 6-H. 플레이어 전투영역 세로중앙 배치 (PD 지시) — 완료 (GodDem `0e06942`)
- **PD 요구 2건**: ①플레이어를 '화면 최상단~하단 UI강화패널 상단' 전투영역 세로 정중앙 ②**해상도 변경 시 유동 대응**(하드코딩 금지).
- **신규 `SurvivalCameraFit.cs`**: 하단 UpgradePanel RectTransform을 런타임 `GetWorldCorners`로 읽어 패널 상단 화면y 계산 → 전투영역 중앙 `(Screen.height+panelTop)/2`에 플레이어(월드원점) 오도록 카메라 y 역산. LateUpdate 매프레임 재계산으로 해상도 즉시 흡수.
- **개발팀장 C39 실측 정정(중요)**: PD 참고값은 orthographicSize 7 가정이나 실측 카메라는 **Perspective(fov=60)**. → `dist·tan(fov/2)` 일반화(직교/원근 무관).
- **검증**: 3종횡비(1080×1920 y=-1.925·1080×2400 y=-1.540·720×1920 y=-1.283, 패널상단 Expand 640→427 흡수) **전량 playerScreenY=battleCenterY 0px 오차**. cam.y가 해상도마다 다른 값 = 하드코딩 아님 확정. PM 스크린샷 실측 — 플레이어 전투영역 세로중앙 배치 확인.
### 6-F-3. 도구 자동화 근본원인 규명
- PD 반복 불만("몇 번을 강조하냐"). **근본원인**: `permissions.defaultMode: dontAsk`**세션 시작 시점 1회 로드·고정**. 세션 도중 설정 변경은 defaultMode에 미반영 → 세션 중 처음 쓰는 도구(MCP·위임 도구)마다 프롬프트. **완전 해결 = 세션 재시작**. 조치: allow에 위임 도구(Task·SendMessage·Workflow 등) 전면 추가 + `settings.local.json` dontAsk. **PD 재시작 완료 → 이후 프롬프트 소멸 확인**.
## 7. 도구 자동 승인 후속 (PD 반복 지시)
- 세션 중 `dontAsk` 미적용(재시작 전) + 빌트인 도구 unknown 분류로 프롬프트 반복 발생 → user/project/local 3계층에 `ToolSearch`·`ReadMcpResourceTool`·MCP 리소스 도구·`.claude/**` 편집 allow 등록. `settings.local.json` 신설.
---
## 8. 세션 재개 — 현황 실측 (2026-08-20, 신규 세션)
- **PD 지시**: "본 세션에서 진행하던 것은 UI 에셋 참고 인게임 반영 + EerieVillage 스킬·이펙트 재구현(완료 상태). 현재 상황 실측해보고 앞으로 해야할 작업이 무엇인지 보고해."
- **실측 방법**: 정적 실측(레포 파일·.asset 필드 덤프·GUID 참조 해소 검사·코드 grep) + Unity MCP 씬 계층·빌드세팅·콘솔. Play 모드 미진입.
### 8-1. 확인된 정상 상태
- 양 레포 미커밋 0·원격 동기화. Unity 6000.3.19f1 실행·MCP 단일 인스턴스(`GodDem@23bbe4a1`)·콘솔 에러 0.
- `SurvivalBattle` 씬 루트 5종(Main Camera·SurvivalGame·Map·SurvivalUICanvas·EventSystem). IMGUI `SurvivalHUD` 컴포넌트 부재 확인(스크립트 파일만 존치).
- `SurvivalCameraFit`은 씬 직렬화 0건 — `SurvivalBattleManager:94` 런타임 AddComponent 방식(설계대로).
- 스킬 .asset 10종 참조 GUID **25종 전량 해소, 결손 0**. 강화 테이블 12종×6단계=72행 정합.
### 8-2. 신규 발견 결함 (본 세션 실측)
- **A15 추적 레이저 = 시각 표현 0**: `ProjectilePrefab`·`OnHitFxPrefab`·`OnDotFxPrefab` 전부 `fileID: 0`. 러너 폴백(`SurvivalActiveSkillRunner:196~204`)은 SpriteRenderer를 붙이되 **Sprite 미할당** → 렌더 결과 없음. `BaseDamage 3`(A02의 1/4). 원인: EerieVillage `SkillRuntimeFactory:71` 주석에 A15는 **미완성 placeholder로 카드 풀 제외** 명시된 자산인데 이식 대상에 포함됨.
- **A10 분신 누락**: EerieVillage 정식 풀 10종(A02·A13·A04·A05·A_Laser·A08·A12·A06·A11·A10) 대비 GodDem은 A10 자리에 A15를 채움. 실질 이식률 9/10.
- **A13 천둥발 `OnHitFxPrefab` 미할당** — 관통 타격 시 피격 FX 없음(경미).
- **Minion 디스패치 단일화**: `SurvivalActiveSkillRunner:117``ActiveCategory.Minion`을 A11 정령불로 고정 → A10 분신 추가 시 CardId 분기 필요.
- **일시정지 미구현**: `SurvivalUIController` 내 Pause 문자열 0건. Layer Lab 버튼만 존재.
- **적 개별 HP바 부재**: `Slider_Monster` Hide 처리(`:117`), `SurvivalUnit`에 HP바 코드 0건. 플레이어 HP바(`Slider_Player`)만 동작.