diff --git a/공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v1.md b/공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v1.md new file mode 100644 index 0000000..6529295 --- /dev/null +++ b/공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v1.md @@ -0,0 +1,455 @@ +# GodDem 가챠(아웃게임 Layer④) 수치 설계 v1 + +> **작성**: balance-designer(기획팀) 2026-08-22 · **P3-B3 산출물**(P32 맥락 분할 · C50 규모 "중~대") +> **PD 승인 원문 (C42-2 A, 2026-08-22)**: "기존 원작의 로직을 살펴보고 동일하게 맞춰. **인게임 내 뽑기는 일반 골드를 쓰며 특정 시점에만 유료 재화를 쓰는 구조**야. 제대로 실측해서 구현해야 해." +> **선행 문서(전부 Read 완료, C39)**: [`2026-08-22_원작가챠_재추출_원본_v1.md`](./2026-08-22_원작가챠_재추출_원본_v1.md)(재추출v1, 가챠 핵심 SOT) · [`2026-08-22_메타아키텍처_재설계_v1.md`](./2026-08-22_메타아키텍처_재설계_v1.md)(메타v1, §1-4·§5) · [`2026-08-22_원작배율_재추출_원본_v1.md`](./2026-08-22_원작배율_재추출_원본_v1.md)(배율재추출v1, §2-2 B-템플릿) · `2026-08-22_P3B1_레벨승급_설계_v1.md`(B1, 골드 경제 앵커) · `2026-08-22_P3B2_장비강화_설계_v2.md`(B2, §8 forging/reforging 골격·등급 체계 선행 확정) · `2026-08-22_P3B4_스킬마스터리_설계_v1.md`(B4, 골드 경제 앵커) · `2026-08-22_P3C_스테이지_설계_v2.md`(C, 런 완주 총 골드) +> **절대 제약**: GodDem 레포(`E:\NerdNavis\GodDem`) Read만 수행, 수정 0건. Unity MCP 미사용. 본 문서가 유일 산출물. **BT 레포 커밋 금지**(팀장·PM 영역). +> **표기 규칙(C5·C44)**: 🟢확정(원작 실측 또는 GodDem 코드 직접 확인) · 🟡추정(구조적 근거 있으나 원본 미확보) · 🔴미확정/PD 확인 필요 + +--- + +## 0. 결론 요약 + +메타v1이 골격만 정의하고 유보한 4건을 본 문서에서 확정한다. + +| 유보 사항(출처) | 본 문서 결정 | +|---|---| +| 메타v1 §1-4 "소비 재화 🔴 미확보, PD 이관" | **골드(1차, GOLD_ID=201) + 젬(2차 대체, GEM_ID=101 기존) 이원 결제**(재추출v1 §7-1 그대로 채택, §2) | +| 메타v1 §1-4 "천장 2단, 히어로 표준 vs 열쇠형 중 balance-designer 결정" | **열쇠형(소프트 4회·하드 40회) 채택** — 히어로 표준(10/30)·장비형(62/100) 기각(§3, 사유 상세) | +| B2 §8 "6등급 체계·forging·reforging 골격만, 실채택은 B3 판단" | **Grade 3~6 신규 도입**(기존 Grade1~2=상점 전용과 역할 분리, R-B5 해소) — forging/reforging은 B2가 이미 가격을 매긴 골격을 **참조만 하고 본 문서 범위에서 활성화하지 않음**(§4, 후속 조치) | +| 메타v1 §1-4 "옵션 4종(hit/stun/retaliate/combo) 확정, 값은 TBD" | **원작 B-템플릿 그대로 채택**(200/400/800/1600, GodDem `BasisPoint` 컨버전으로 2%/4%/8%/16%) — 재계수화 불요(§6) | + +**실측 중 신규 발견(C39·C3, 은폐하지 않음) — 옵션 4종 전투 소비처 부재**: `hit_rate`·`stun_rate`·`retaliate_rate`·`combo_rate` 문자열을 GodDem 전체 코드베이스에서 검색한 결과 **`SurvivalStatCatalog.cs`(정의부) 외 어디에도 등장하지 않는다**(🟢 실측). B4가 발견한 `ele_*`/`penetrate_ratio`(정의된 스탯인데 소비 코드 없음) 문제와 같은 계열이나, 이번은 **성격이 다르다** — `ele_*`는 기존 "비율 항"에 잠정 합산이라도 가능했지만, `stun_rate`(기절)·`retaliate_rate`(반격)·`combo_rate`(연격)는 **전투에 존재하지 않는 새 이벤트 트리거**(상태이상·카운터·추가타)라 잠정 배선할 기존 항 자체가 없다. `hit_rate`(명중)만 기존 `dodge_rate`(회피, 인게임)와 대칭 개념이라 상쇄 로직이 있다면 연결 가능성이 있으나 이 역시 미확인이다. **본 문서는 옵션 4종의 획득(가챠 드롭)·저장까지만 완결하며, 전투 발동 로직 신설은 개발팀 후속 범위로 명시한다**(§13 PD 확인·§15 리스크 R-H1). + +--- + +## 1. 설계 전제 + +| 항목 | 값 | +|---|---| +| 기준 플레이어 수준 | 신규(가챠 미보유) ~ 장기(하드천장 다회 도달, Grade6 다수 보유) | +| 목표 경험 | "이번엔 뭐가 나올까"라는 확률 기대감을 로그라이크 매판 루프 위에 얹는 신규 재미축(메타v1 §1-4 P30 근거) — 실패해도 등급 하위 결과가 아예 배제되는 원작 안전판 구조 계승 | +| 전제 스탯 앵커 | 상점(Grade1~2, id1~9) 무변경 유지. 가챠는 Grade3~6 **신규** 아이템 6종 도입(§4) | +| 전제 경제 앵커 | 인게임 20웨이브(2스테이지) 보수적 하한 2,542G(S3 v2·B1 §1 재사용) / 54스테이지 런완주 414,018G(C v2 §5-2) / B1+B2+B4 총 투자 1,942,464G(C v2 §0 대조치) | +| 재화 | **골드(GOLD_ID=201, 1차)** + **젬(GEM_ID=101, 2차 대체, 기존 상점에 이미 통용 중)** — 신규 재화 도입 없음 | +| C39 실측 확증 | `Constant.cs`(GOLD_ID=201/GEM_ID=101) · `SurvivalItemCatalog.cs`(전문, 9종 Grade1~2·FuseTargetId·SecondaryStatKey) · `SurvivalShopCatalog.cs`(전문, 젬/골드 상점 가격·신규유저 시작 젬 300 확인처) · `SurvivalMeta.cs`(전문, `FinalAttack()`/`FinalHp()`/`Version=4`/`EquipLevel`/`SkillMasteryLevel` 라이브 구현) · `SurvivalStatCatalog.cs`(전문, `hit_rate`·`stun_rate`·`retaliate_rate`·`combo_rate` = `Kind.BasisPoint` 확인) · `SurvivalUpgrade.cs`(`ValueType.BasisPoint` → `Value/10000f` 컨버전 공식 확인) · `PlayerManager.cs`(L75, 신규유저 젬 300 지급 확인) · 코드베이스 전체 `hit_rate`/`stun_rate`/`retaliate_rate`/`combo_rate` grep(정의부 1곳 외 소비 코드 0건 확인) | + +--- + +## 2. 재화 매핑 — 원작 구조 요약 + GodDem 결정표 + +### 2-1. 원작 이원 결제 구조 (재추출v1 §3 요약) + +원작 `drawtype`은 뽑기 1회당 **두 결제 라인을 동시에 정의**한다(순차 소진이 아니라 "티켓으로 낼래, 젬으로 낼래"의 병렬 옵션) — `drawitem`(1차, 획득형 티켓) / `drawitem2`(대체, 젬 `hb_2001`). GodDem은 소환권 같은 별도 "티켓" 재화가 없고 골드가 유일한 플레이 획득 재화이므로, **원작 티켓 = GodDem 골드**로 직번역하면 이 병렬-옵션 구조가 "골드로 낼래, 젬으로 낼래"로 그대로 이식된다. 이것이 PD 지시("일반은 골드, 특정 시점만 유료")의 정확한 데이터 구현이다(재추출v1 §7-1, 이미 승인된 인계 방향). + +### 2-2. GodDem 매핑 결정표 + +| 원작 요소 | 원작 값(참고) | GodDem 매핑 | 표기 | +|---|---|---|---| +| 소환권(`dj_7001/7002`)·보물열쇠(`dj_7011`) | 1차 결제(획득형) | **골드(GOLD_ID=201) 직접 소비** | 🟢 구조 · 🟡 절대값(§5) | +| 젬(`hb_2001`) | 대체 결제(프리미엄) | **젬(GEM_ID=101, 기존 재화 재사용)** | 🟢 구조 · 🟡 절대값(§5) | +| 일일 무료(206·1402·5101) | 무과금 창구 | **일일 무료 5회, 300초 쿨다운**(원작 206 그대로 포팅, 시간값은 재화 아니므로 재조정 불요) | 🟢 | +| 히어로 조각(`dj_5XXX`) 결과물 | 수집형 캐릭터 조각 | **해당 없음** — GodDem은 히어로 1명 구조(메타v1 §1-4·§7-3, 이미 확정) | — | +| 장비/재료(`sl_XXXX`+`dj_6XXX`) 결과물 | 장비+옵션 | **SurvivalItemCatalog 신규 아이템(Grade3~6) + 옵션 4종**(§4·§6) | 🟢 구조 · 🟡 절대값 | + +--- + +## 3. ★ 천장 스케줄 결정 — 3안 비교·채택·기각 (PM 재검토 지시 반영) + +메타v1 §1-4·재추출v1 §5-2는 원작에 **3개 서로 다른 천장 스케줄 계열**이 존재함을 확인했다. 최초 검토에서 "히어로 표준(10/30)"을 1차 후보로 실었으나, **결과물 유형 대응이 어긋난다는 지적(PM 보강 지시)에 따라 3안을 정식으로 비교·재확정**한다. + +### 3-1. 3안 비교표 + +| 안 | drawtype 원본 | 소프트/하드 | 결제구조 | 결과물(원작) | GodDem 결과물 대응 | +|---|---|---|---|---|---| +| **A. 히어로 표준** | 102·1701·7·18·29 | 10회 / 30회 | 이원(티켓+젬) | 히어로 조각(`dj_5XXX`, 수집형) | ❌ 불일치 — GodDem은 히어로 1명, 조각 수집 없음 | +| **B. 열쇠형** | 1301·217 | 4회 / 40회 | 이원(**보물열쇠**+젬) | 장비+재료(`sl_XXXX`) | ✅ 일치 — `dj_7011` 자체가 재화정체표(재추출v1 §2)에서 **"장비 뽑기 티켓"으로 명시 라벨링** | +| **C. 장비형** | 209·212·214·206 | 62회 / 100회 | **젬 단일**(티켓/골드 경로 없음) | 장비+재료(`sl_XXXX`) | ❌ 불일치 — PD "일반은 골드" 지시와 결제구조 자체가 배치 | + +### 3-2. 채택 — B. 열쇠형(소프트 4회 · 하드 40회) + +**결정 근거 3축**: +1. **데이터 대응 정확성(C44 최우선)**: 재추출v1 §2 재화 정체표가 `dj_7011`(보물열쇠)를 명시적으로 "**장비 뽑기 티켓**"이라 라벨링했다 — 이는 추정이 아니라 원작 아이콘·용도 3중 교차로 확정된 원문 근거다(재추출v1 §2 각주). GodDem 가챠 결과물이 히어로 조각이 아니라 장비+옵션이므로(메타v1 §1-4 기확정), 원작에서 "장비"를 내주는 뽑기 라인의 천장을 그대로 쓰는 것이 데이터 대응상 가장 정확하다. +2. **결제구조 정합**: 열쇠형은 이원 결제(열쇠 1차·젬 대체)로 PD 지시("일반 골드+특정 시점 유료")와 정확히 일치한다. 장비형(C안)은 젬 단일이라 이 조건 자체를 만족 못 해 원천 배제된다. +3. **P30 재미 근거와의 정합**: 소프트천장 4회는 신규 유저가 **거의 즉시**(가입 첫 세션 내) "어, 벌써 희귀템이 나올 수도 있네"를 체감하게 한다 — 이는 메타v1 §1-4가 명시한 "이번엔 뭐가 나올까" 기대감 재미축을 초반부터 강하게 건다. 하드천장 40회는 히어로 표준(30회)보다 길어 "영구 성장 5층의 마지막 층"이라는 위상에 맞는 장기 목표로 기능한다(§8 경제 시뮬레이션에서 수치 근거 확인). + +### 3-3. 기각안 (C32 필수 필드) + +| 기각안 | 기각 사유 | +|---|---| +| **A. 히어로 표준(10/30) 채택** | 원작에서 이 스케줄이 딸린 결과물은 히어로 조각(수집형)이며 GodDem은 히어로 1명 구조라 결과물 유형 자체가 대응하지 않는다(§3-1). 단, 히어로 단차(drawtype 102)는 재추출v1 §4·§5-1이 **유일하게 풀 가중치를 전량 실측**한 계열이라(16pos/9500, 23pos/7747, 7pos/499) 열쇠형 자체의 풀 가중치 원본이 없는 본 설계에서 **가중치 "형태"(등급별 상대 비중 패턴)만 참고용으로 차용**했다(§6, 🟡 표기) — 스케줄(카덴스)은 기각, 형태(비중 곡선)는 부분 채용이라는 점을 분리해 명시한다. | +| **C. 장비형(62/100) 채택** | 결제구조가 젬 단일이라 PD 지시("일반 뽑기는 골드")의 이원결제 조건 자체를 충족하지 못한다. 스케줄 값(장주기)은 참고했으나 채택 전제(결제구조)가 어긋나 전체 기각. | +| 열쇠형 자체 풀 가중치 원본 재추출 선행 후 본 설계 착수 | C50(과도 토큰) 위반 소지 — 재추출은 개발팀장 영역(APK 재복호화)이며 이미 3회(배율·장비·스테이지·가챠) 수행됐다. 히어로 단차 가중치 형태 차용 + GodDem 자체 정합화로 충분히 신뢰 가능한 설계가 가능해 재추출 재요청 대신 🟡 표기로 정직하게 진행한다(C5). | + +--- + +## 4. 등급 체계 확정 — Grade 3~6 신규 도입 + +### 4-1. 배경 — B2가 남긴 미해결 축 + +B2 §8은 forging(등급 도박)·reforging(옵션 리롤)·옵션 슬롯 수(§8-4, `max(1,q-1)`) 골격값을 **이미 가격까지 매겨뒀으나 "실채택은 B3 판단"으로 유보**했다. 이는 B2 스스로 "GodDem 현재 Grade 1~2뿐이라 이 표는 참고자료"라 명시한 대로, **가챠가 Grade3+ 를 실제로 게임에 들여오기 전까지는 의미가 생기지 않는 골격**이었기 때문이다. 본 절에서 이 축을 완성한다. + +### 4-2. 결정 — Grade1~2(상점 전용) / Grade3~6(가챠 전용) 역할 분리 + +메타v1 R-B5("가챠·상점 중복 판매 시 상점 가치 희석 — 상점=저확정 티어, 가챠=고티어+옵션 역할 분리 권고")를 그대로 실행한다. + +- **기존 Grade1~2(id1~9)**: 무변경. 상점에서만 계속 판매(젬 12~50 직접구매, §5-2 실측). +- **신규 Grade3~6**: 가챠 전용 아이템 6종 신규 도입(§4-4 카탈로그). 상점 판매 없음. +- 등급 대응은 원작 quality q1~q6 중 **q3~q6 슬라이스**를 그대로 쓴다 — GodDem Grade1=원작q1, Grade2=원작q2(이미 상점이 점유)이므로, 가챠가 원작 q3~q6을 Grade3~6으로 잇는 것이 원작의 6단 등급 사다리를 끊지 않고 자연스럽게 잇는 유일한 방법이다. B2 §8-1 forging 표가 이미 "q2→q3→q4→q5→q6"로 **Grade2를 시작점으로 잡아뒀다**는 사실이 이 매핑이 우연이 아니라 B2 설계 시점부터 전제된 것임을 보여준다. + +### 4-3. Forging·Reforging — 참조만, 본 문서 범위에서 비활성 + +B2 §8-1(forging 성공률·비용)·§8-3(reforging 잠금 비용)·§8-4(옵션 슬롯 수)는 **이미 확정된 골격값**이며 본 문서가 재도출하지 않는다(C10 중복 작업 방지). 다만 forging/reforging을 "지금 게임에 넣을지"는 **본 문서 범위 밖으로 명시 유보**한다 — 사유: +1. forging의 "재료"(B2 표의 원작 `dj_6003`/`dj_6004` 대응 GodDem 자원)가 아직 정의되지 않았다. 신규 자원 도입은 그 자체로 별도 설계 결정이며 본 문서(가챠 확률·비용) 범위를 벗어난다. +2. 가챠 자체만으로 Grade3~6 아이템을 직접 획득 가능하므로(§6 풀 구성), forging은 "필수 경로"가 아니라 "대체 경로"다 — 5층 완성(가챠 도입)이 선행 목표이고 forging 활성화는 후속 확장으로 미뤄도 게임 진행에 공백이 생기지 않는다. +3. §8-4 옵션 슬롯 수(q3=2·q4=3·q5=4·q6=5)는 **가챠 드롭 아이템에는 즉시 적용**한다(§6-3) — 이 표가 가챠와 무관한 부분(forging 재료)만 유보 대상이다. + +**옵션 슬롯 수 표(B2 §8-4 그대로 인용)**: + +| Grade | 3 | 4 | 5 | 6 | +|---|---|---|---|---| +| 슬롯 수 | 2 | 3 | 4 | 5 | + +Grade6의 5슬롯은 옵션 종류(4종)보다 많다 — **5번째 슬롯은 이미 보유한 4종 중 하나를 중복 재추첨**해 해당 스탯을 두 겹 적용한다(중복 스택 허용, §6-4 상세). + +### 4-4. 신규 아이템 카탈로그 (Grade3~6, 6종) + +가챠 전용 신규 아이템의 기본 Attack/Hp 값이다. **content-designer 영역인 정식 이름·아트는 배정하지 않고 가칭으로 표기**한다(B4가 "카드ID 미배정"으로 처리한 것과 동일 원칙) — 수치도 기존 Grade1~2 앵커(`SurvivalItemCatalog.cs` 실측)에 등급당 약 ×1.6배(B2 §6 성장곡선이 쓴 것과 같은 계열의 기하 감각을 차용, 정밀 역산 아님)를 적용한 **1차 초안**이며, B1·B2의 공식 기반 수치와 달리 **정밀 도출식 없이 플레이테스트 전 안전판으로 제시**한다(🟡, C5 정직 표기 — "첫 숫자는 틀릴 것" 원칙 명시 적용). + +| ItemId | 이름(가칭) | 슬롯 | Grade | Attack | Hp | FuseTargetId | SecondaryStatKey | 앵커 근거 | +|---|---|---|---|---|---|---|---|---| +| 10 | 벼려진 단검 | Weapon | 3 | 22 | 0 | 0 | `equip_attack_speed_add` | id2(Weapon G2=14atk) ×1.6 | +| 11 | 강화 판금갑 | Armor | 3 | 0 | 230 | 0 | `equip_defense_add` | id3(Armor G1=90hp) ×2.5(G1→G3, G2 앵커 부재로 2단 압축) | +| 12 | 서릿발 대검 | Weapon | 4 | 35 | 0 | 0 | `equip_attack_speed_add` | id10(신규 G3=22atk) ×1.6 | +| 13 | 용비늘 흉갑 | Armor | 4 | 0 | 370 | 0 | `equip_defense_add` | id11(신규 G3=230hp) ×1.6 | +| 14 | 고대의 유물 | Charm | 5 | 25 | 300 | 0 | `equip_defense_add` | id9(Charm G2=10atk/120hp) 하이브리드 확장, 공/체 동시 배분 | +| 15 | 천계의 인장 | Ring | 6 | 55 | 0 | 0 | `equip_attack_speed_add` | id8(Ring G2=20atk) ×1.6³(G2→G6 3단) | + +**FuseTargetId=0(전항)**: 기존 아이템(id1·4·7)의 3개→1개 합성 체인과 달리, 가챠 아이템은 중복 처리를 §6-4의 "옵션 슬롯 무료 재추첨"으로 대체한다 — 옵션이 랜덤인 아이템을 합성하면 "어느 개체의 옵션이 살아남는가"라는 별도 규칙이 필요해지므로(§15 기각안 미포함 — 애초에 검토했으나 §6-4가 더 단순해 합성 자체를 시도하지 않음), 합성 체인을 만들지 않는 쪽을 채택했다. + +--- + +## 5. 공식 — 뽑기 비용 + +### 5-1. 골드 단가 도출 (🟡 신규 도출, 근거 명시) + +젬 단가는 원작 열쇠/히어로 계열의 실측값(재추출v1 §3-2 "단차 1티켓 ≈ 20젬")을 **그대로 포팅**한다 — 젬(GEM_ID=101)은 B1~B4 어느 층에서도 재조정된 적 없는 처녀 재화라 원작 절대값을 재계수화 없이 직접 재사용할 수 있다(공격력·골드처럼 GodDem 스케일 재산정이 필요했던 트랙과 다름). + +골드 단가는 **GodDem 자체 상점의 기존 골드↔젬 교환비**(`SurvivalShopCatalog.cs` 실측: 600골드=30젬 → 20골드/젬)를 가교로 역산한다: + +``` +1회 뽑기 젬가 = 20젬 (원작 §3-2 그대로 포팅) +1회 뽑기 골드가 = 20젬 × 20골드/젬 = 400골드 (GodDem 기존 상점 SOT로 환산) +``` + +이 방식은 (a) 젬 절대값은 원작 그대로, (b) 골드 절대값은 GodDem 자체에서 이미 검증된 교환비로 도출 — 두 재화 모두 "근거 없이 정하지 않는다" 원칙을 만족한다. + +### 5-2. 10연·100연 배율 (원작 그대로 포팅) + +원작 데이터 포인트 2건을 그대로 적용한다: 10연은 할인 없음(장비 212 = 10×20젬 = 200젬, 배율 정확히 10배), 100연은 10% 할인(1800/2000 = 0.9). + +``` +10연 비용 = 단가 × 10 (할인 없음, 원작 212 정합) +100연 비용 = 단가 × 100 × 0.9 (10% 할인, 원작 209/7/18/29 정합) +``` + +--- + +## 6. 풀 구성·확률표 + +### 6-1. 3단 풀 가중치 (등급별, 각 풀 합계 10000 basis point — 메타v1 §1-4 강제 원칙) + +풀 형태(비중 곡선)는 §3-3 기각안 표에서 밝힌 대로 **원작 히어로 단차(drawtype 102) 실측 비중**(재추출v1 §4·§5-1)의 "형태"를 차용해 GodDem 4등급(Grade3~6)에 재정합한 값이다(🟡 — 열쇠형 자체 가중치 원본은 미보유, §3-3 기각안). + +**Pool1(일반, 1~3회차 — 소프트천장 미도달 구간)** + +4항목 균등(2500씩)이 아니라 Grade3:Grade4 = 60:40으로 편중했다 — 원작 pool1 실측(재추출v1 §4)의 q3:q4 개별 weight 비율(375:250 = 3:2)을 그대로 가져온 값이며, 동시에 신규유저 초반 "손맛"(저등급 다수 노출)에도 부합한다. Grade3는 아이템 2종에 개별 3000씩(등급 합계 6000), Grade4는 2종에 개별 2000씩(등급 합계 4000), 총합 10000. + +| PoolId | ItemId | Grade | Weight | 확률 | +|---|---|---|---|---| +| 1 | 10 | 3 | 3000 | 30.00% | +| 1 | 11 | 3 | 3000 | 30.00% | +| 1 | 12 | 4 | 2000 | 20.00% | +| 1 | 13 | 4 | 2000 | 20.00% | +| | | (Grade5·6 weight 0, 미등장) | | | +| | | **합계** | **10000** | **100%** | + +**Pool2(소프트천장 이후, 4~39회차 — Grade5·6 개방)** + +| PoolId | ItemId | Grade | Weight | 확률 | +|---|---|---|---|---| +| 2 | 10 | 3 | 2805 | 28.05% | +| 2 | 11 | 3 | 2805 | 28.05% | +| 2 | 12 | 4 | 1870 | 18.70% | +| 2 | 13 | 4 | 1870 | 18.70% | +| 2 | 14 | 5 | 500 | 5.00% | +| 2 | 15 | 6 | 150 | 1.50% | +| | | **합계** | **10000** | **100%** | + +도출: 원작 소프트천장 비중 패턴("q1~q4 유지 + q5 4종×1.291%(합5.164%)+q6 3종×0.426%(합1.278%)" → 희귀 합 약 6.4%)을 재정합 — GodDem은 Grade5·6 각 1종뿐이라 원작의 "6.4% 희귀 합"을 5.0%(Grade5)+1.5%(Grade6)=6.5%로 근사 재현했다. 잔여 93.5%를 Pool1의 Grade3:Grade4=3:2 비율 그대로 유지해 재분배(935 단위, Grade3 935×3=2805, Grade4 935×2=1870). + +**Pool3(하드천장, 40회차 이상 — 100% Grade5+ 확정)** + +| PoolId | ItemId | Grade | Weight | 확률 | +|---|---|---|---|---| +| 3 | 14 | 5 | 8000 | 80.00% | +| 3 | 15 | 6 | 2000 | 20.00% | +| | | **합계** | **10000** | **100%** | + +도출: 원작 하드천장 비율(q5 80.16% : q6 19.84%, 재추출v1 §5-1)을 반올림 그대로 재현(80:20) — Grade3·4 weight는 0으로 죽여 저등급 완전 배제(원작 "라이브러리 교체=테이블 스왑" 방식 그대로, 재추출v1 §5). + +### 6-2. 천장 카운터 및 리셋 규칙 + +- `SurvivalMetaData.GachaPityCount`(메타v1 §5-1 기존 스텁, int) — 뽑기 1회당 +1. +- **Grade5 또는 Grade6 결과 획득 시 0으로 리셋**(🟡 표준 가챠 관행 적용 — 원작 데이터가 리셋 시점을 명문화하지 않아 장르 관행으로 보충, §3 기각안과 별개의 독립 추정치이므로 별도 표기). +- 카운터 값에 따라 활성 Pool 결정: `count < 3` → Pool1, `3 ≤ count < 39` → Pool2, `count ≥ 39` → Pool3 (0-index 기준, "4회차"="count=3에서 뽑는 순간" 매핑 — 원작 `libidNneed`의 "need값 도달 후 다음 회차부터 스왑" 컨벤션과 동일 오프셋). + +### 6-3. 옵션(hit/stun/retaliate/combo) 값 테이블 + +원작 B-템플릿(배율재추출v1 §2-2, 확률계 ×2등비 `50/100/200/400/800/1600`)의 **q3~q6 슬라이스**(`200/400/800/1600`)를 재계수화 없이 그대로 사용한다 — `SurvivalStatCatalog.cs`가 이미 이 4종을 `ValueType.BasisPoint`로 선언했고, `SurvivalUpgradeTable.Entry.Applied`가 `Value/10000f`로 자동 환산하므로(🟢 코드 확인, §1) 원작 raw값을 그대로 CSV에 넣기만 하면 별도 변환 없이 올바른 %가 나온다. + +| Grade | s_StatKey 후보(4종 중 1개 랜덤) | n_Value(raw) | 환산(Applied) | +|---|---|---|---| +| 3 | gacha_hit_rate / gacha_stun_rate / gacha_retaliate_rate / gacha_combo_rate | 200 | 2.00% | +| 4 | 〃 | 400 | 4.00% | +| 5 | 〃 | 800 | 8.00% | +| 6 | 〃 | 1600 | 16.00% | + +### 6-4. 옵션 슬롯 채우기 규칙 + +아이템 획득 시 Grade별 슬롯 수(§4-3 표)만큼 옵션을 **비복원 추출**로 채운다(4종 중 슬롯 수만큼 서로 다른 스탯). 단 Grade6(5슬롯 > 4종)은 4종을 전부 채운 뒤 5번째 슬롯에 한해 **1종을 재추첨해 중복 허용**(중복된 스탯은 값이 합산 적용, 예: `combo_rate` 슬롯 2개 = 16%+16%=32% 누적). + +**중복 재획득(뽑기 결과가 이미 보유한 ItemId) 처리**: 해당 아이템의 슬롯 1개를 무작위로 골라 옵션을 무료 재추첨한다(같은 Grade 내에서만, 값 범위는 §6-3 표 그대로). 이는 원작에 없는 GodDem 자체 보완 설계다(🟡, 표준 F2P 관행 — "중복 뽑기가 완전히 무가치하지 않도록" 설계, 근거: P30 재미 원칙 "실패해도 손해는 아니다"를 중복 상황까지 확장 적용). + +--- + +## 7. 뽑기 상품 구성 (수치 테이블) + +| 상품 | 골드가 | 젬가 | 비고 | +|---|---|---|---| +| 단차(1회) | 400G | 20젬 | §5-1 도출 | +| 10연(10회) | 4,000G | 200젬 | 할인 없음(원작 212 정합) | +| 100연(100회) | 36,000G | 1,800젬 | 10% 할인(원작 209/7/18/29 정합) | +| 일일 무료 | 0 | 0 | 1일 5회, 300초 쿨다운(원작 206 그대로) | + +**세그먼트 영향**: +- **무과금**: 일일 무료 5회(쿨다운 300초 간격으로 하루 25분 내 전부 소진 가능) + 플레이로 번 골드로 단차/10연 추가 구매. 하드천장(40회)까지 무료만으로는 8일 소요(5회×8일=40회) — 장기 목표로 적절한 페이스. +- **소과금**: 골드팩(기존 상점 SOT, 예: 12000골드=600젬)으로 골드 보충해 뽑기 빈도 상승. 별도 신규 과금 경로 불요(기존 상점 재사용). +- **고과금**: 100연 젬 직접 구매(1800젬, 기존 상점 최고가 팩 15000젬의 12%)로 즉시 하드천장 2.5회 도달 가능 — "시간 단축" 표준 F2P 구조(B1 §2-3이 이미 인정한 패턴과 동일선상). + +--- + +## 8. 경제 시뮬레이션 + +### 8-1. 런 시나리오별 뽑기 가능 횟수 (B1 §6 3단 시나리오 재사용) + +| 시나리오 | 런당 골드 | 뽑기 가능 횟수(400G 기준) | 소프트천장(4회) 도달 | 하드천장(40회) 도달 | +|---|---|---|---|---| +| 보수적 하한(2스테이지) | 2,542G | 6.36회 | 1런 이내 | 6.3런 | +| 중간 참고(5스테이지) | 8,200G | 20.5회 | 1런 이내 | 2.0런 | +| 낙관적 참고(10스테이지) | 22,550G | 56.4회 | 1런 이내 | 1런 이내 | + +**해석**: 소프트천장(4회)은 **모든 시나리오에서 1런 이내 도달** — Grade5·6 가능성을 매 런마다 사실상 열어준다는 점이 §3-2가 근거로 든 "즉각적 기대감" 설계 의도와 정확히 일치한다. 하드천장(40회)은 실력·시나리오에 따라 1~6.3런 폭 — B1의 레벨캡 도달 폭(48~416런)보다 훨씬 좁다. 이는 결함이 아니라 **가챠가 B1/B2/B4보다 저비용·고빈도 사이클로 설계된 결과**이며, 메타v1 §1-4가 규정한 가챠의 역할("확률 기대감 재미축")과 B1~B4의 역할("장기 성장 목표")이 서로 다른 페이스여야 한다는 설계 의도에 부합한다. + +### 8-2. 총 경제 대조 + +| 항목 | 총액 | 가챠 100연 대비 비율 | +|---|---|---| +| B1(레벨+승급) 총투자 | 1,056,056G | 29.3회분 | +| B2(장비강화 9종) 총투자 | 510,496G | 14.2회분 | +| B4(스킬마스터리 3종+언락20단) 총투자 | 1,766,680G | 49.1회분 | +| **B1+B2+B4 합계** | **3,333,232G**\* | 92.6회분 | +| 54스테이지 런완주 총 골드 | 414,018G | 11.5회분 | + +\* C v2 §0의 "1,942,464G"는 B1+B2+B4 중 **실투자 기준**(B2는 9종 중 6종 실투자 359,728G, B4는 마스터리 3종만 526,680G 기준 카드언락 제외)이었다 — 본 표는 **전항목 만렙 기준**(B2 9종 전체 510,496G + B4 마스터리 526,680G + 언락20단 1,240,000G)으로 재계산해 상한선을 제시한다. 실투자 기준 대조치는 C v2 §0 그대로 1,942,464G. + +**균형 판정**: 가챠 100연(36,000G)이 B1~B4 전체 투자 총액(1,942,464G~3,333,232G)의 1.1~1.9% 수준 — 가챠는 "5층 중 하나의 큰 목돈 지출"이 아니라 **반복적으로 자주 도는 소액 사이클**로 설계됐다(§8-1과 정합). 총 골드 소모처가 B1·B2·B4(대형 1회성 목표)와 B3(소액 반복)로 성격이 나뉘어 **인플레이션 흡수 창구가 이중화**된다 — 획득 골드가 B1~B4를 다 채운 후에도 가챠가 계속 골드를 흡수하므로 "더 이상 쓸 곳 없는 골드"로 인한 경제 붕괴 리스크가 낮아진다(밸런스 기획자 책임 "인플레이션과 소모처의 균형" 체크 통과). + +--- + +## 9. 매판 시작 베이스 결합 + +가챠로 획득한 Grade3~6 아이템은 **B2가 이미 구축한 장착·집계 파이프라인을 그대로 재사용**한다 — 별도 `FinalAttack()`/`FinalHp()` 신규 항 불요: + +``` +SurvivalMeta.TotalAttack() / TotalHp() // 기존 B2 구현, 장착 아이템 순회 + └─ SurvivalItemCatalog.All 에 id10~15 추가되는 즉시 자동 편입(코드 변경 없음) +``` + +**옵션 4종(hit/stun/retaliate/combo)은 별도 집계 경로가 필요하다** — 기존 `TotalAttack()`/`TotalHp()`는 Attack/Hp 필드만 순회하며 옵션 슬롯을 보지 않는다(§9-1 코드 터치포인트에서 신규 메서드 명시). + +### 9-1. 코드 터치포인트 + +| 파일 | 변경 | +|---|---| +| `SurvivalItemCatalog.cs` | `SurvivalItemDef`에 `List<(string statKey, float value)> GachaOptionSlots` 필드 추가(기본 빈 리스트, id1~9 무영향) + id10~15 6종 신규 항목 추가(§4-4 스탯) | +| `SurvivalMeta.cs` | `SurvivalMetaData`에 `int GachaPityCount`(메타v1 §5-1 기존 스텁, 실필드화) + `Dictionary GachaOwned`(itemId→보유수, 중복 판정용) + `Dictionary> GachaRolledOptions`(itemId→실제 뽑힌 옵션, 슬롯은 카탈로그 정의와 별개로 개별 저장) 3필드 추가, `Version` 4→5 상향 + 마이그레이션 분기(v4 이하 로드 시 3필드 전부 빈 값 초기화) · **신규 메서드**: `TotalOptionValue(string statKey)` — 장착 아이템 전체의 `GachaRolledOptions` 순회 합산(중복 스택 자연 반영) | +| `SurvivalBattleManager.cs` | `RecalcPlayer()`에 `hit_rate`/`stun_rate`/`retaliate_rate`/`combo_rate` 4항 조회 추가 — **단, §0이 밝힌 대로 소비처(전투 발동 로직) 자체가 없어 값 저장·표시까지만 가능, 실제 전투 효과는 개발팀 신규 로직 필요(별도 스코프, §13)** | +| 신규 파일 | `SurvivalGachaTable.cs` — `SurvivalMetaGachaPool.csv`/`SurvivalMetaGachaOption.csv`/`SurvivalMetaGachaPity.csv` 3종 로드(`SurvivalUpgradeTable.Load()` 헤더 2행 스킵 패턴 복제, 메타v1 §5-3 지정 패턴) | +| `SurvivalShopCatalog.cs` | 무변경(가챠는 별도 UI 진입점, 메타v1 §5-3 "구조 확장 필요"는 신규 가챠 화면 신설로 해소 — 클라이언트팀 협의 대상, 상점 카탈로그 자체는 손대지 않음) | + +--- + +## 10. 데이터 모델 — CSV 스키마 전체 + +CSV 계약(메타v1 §5-2 준수): 1행 헤더(타입 접두 `n_`/`f_`/`s_`) · 2행 한글 설명(로더 폐기) · 3행부터 데이터. + +### 10-1. `SurvivalMetaGachaPool.csv` + +``` +n_PoolId,n_ItemId,n_Grade,n_Weight +풀번호(1일반/2소프트/3하드),아이템ID,등급,가중치(만분율) +1,10,3,3000 +1,11,3,3000 +1,12,4,2000 +1,13,4,2000 +2,10,3,2805 +2,11,3,2805 +2,12,4,1870 +2,13,4,1870 +2,14,5,500 +2,15,6,150 +3,14,5,8000 +3,15,6,2000 +``` + +### 10-2. `SurvivalMetaGachaOption.csv` + +``` +n_OptionId,s_StatKey,n_Grade,f_Value +옵션ID,스탯키(가챠 접두 gacha_),등급,원시값(BasisPoint·만분율) +1,gacha_hit_rate,3,200 +2,gacha_stun_rate,3,200 +3,gacha_retaliate_rate,3,200 +4,gacha_combo_rate,3,200 +5,gacha_hit_rate,4,400 +6,gacha_stun_rate,4,400 +7,gacha_retaliate_rate,4,400 +8,gacha_combo_rate,4,400 +9,gacha_hit_rate,5,800 +10,gacha_stun_rate,5,800 +11,gacha_retaliate_rate,5,800 +12,gacha_combo_rate,5,800 +13,gacha_hit_rate,6,1600 +14,gacha_stun_rate,6,1600 +15,gacha_retaliate_rate,6,1600 +16,gacha_combo_rate,6,1600 +``` + +*(주: `s_StatKey`는 `gacha_` 접두를 붙여 메타v1 §3-3 "CSV 키 접두 가드" 원칙을 준수한다. `SurvivalStatCatalog.cs`의 정본 키(`hit_rate` 등)와 별도 네임스페이스 — 소비 시점에 `TotalOptionValue()`가 접두 제거 매핑을 수행한다.)* + +### 10-3. `SurvivalMetaGachaPity.csv` + +``` +n_Tier,n_PullsNeed,n_PoolId,n_GuaranteedGradeFloor +천장단계,발동회차,활성풀ID,보장등급하한(0=없음) +1,1,1,0 +2,4,2,5 +3,40,3,5 +``` + +### 10-4. 뽑기 비용 테이블(참고 — 코드 상수 or 신규 CSV `SurvivalMetaGachaPrice.csv` 택1, 구현 세부는 개발팀장 재량) + +``` +n_PullCount,l_GoldCost,l_GemCost +1,400,20 +10,4000,200 +100,36000,1800 +``` + +### 10-5. `SurvivalMetaData` v5 필드 (§9-1 요약 재게재) + +```csharp +public int GachaPityCount; // 신규(메타v1 §5-1 스텁 실필드화) +public Dictionary GachaOwned; // 신규 — itemId → 보유수(중복 판정) +public Dictionary> GachaRolledOptions; // 신규 — itemId → 실제 옵션 +public const int CurrentVersion = 5; // 4 → 5 +``` + +--- + +## 11. 검증 시나리오 + +| # | 시나리오 | 기대 결과 | 검증 | +|---|---|---|---| +| 1 | 신규유저 1회 단차(Pool1, count=0) | Grade3·4만 등장, Grade5·6 확률 0% | §6-1 Pool1 weight 확인(Grade5·6 미기재=0) | +| 2 | 3회 연속 미획득 후 4회차(count=3) | Pool2로 전환, Grade5·6 등장 시작(5.00%+1.50%) | §6-2 카운터 규칙(`3≤count<39`→Pool2) | +| 3 | 39회 연속 Grade5·6 미획득(count=39) | Pool3 전환, Grade5 또는 Grade6 100% 확정 | §6-2 규칙(`count≥39`→Pool3), §6-1 Pool3 weight합 10000 | +| 4 | 하드천장에서 Grade5 획득 | GachaPityCount 0으로 리셋, 다음 뽑기부터 Pool1 재시작 | §6-2 리셋 규칙 | +| 5 | 이미 보유한 id10을 재뽑기 | 골드/젬 정상 차감 + id10 옵션 슬롯 1개 무료 재추첨(중복 낭비 아님) | §6-4 중복 처리 | +| 6 | Grade6 아이템 옵션 5슬롯 채우기 | hit/stun/retaliate/combo 4종 전부 1회씩 + 1종 중복(값 합산) | §6-4 규칙 | +| 7 | 100연 젬 결제 | 1800젬 정확히 차감(할인 10% 반영), 1800/1800=정수 나눠떨어짐 확인 | §5-2 공식 | +| 8 | 보수적 하한 시나리오 1런(2,542G) 전액 가챠 투입 | 단차 6회 가능(2400G), 소프트천장(4회) 이미 통과 | §8-1 표 | +| 9 | 옵션값 CSV 원시값 200 저장 후 `Applied` 조회 | 0.02(2%) 반환 — `SurvivalUpgradeTable.Entry.Applied = Value/10000f` 공식과 정합 | §6-3, C39 코드 확인 | +| 10 | Grade3~6 아이템 장착 후 `TotalAttack()`/`TotalHp()` | 기존 B2 로직이 코드 변경 없이 신규 id10~15의 Attack/Hp를 자동 합산 | §9 결합 확인 | + +--- + +## 12. 밸런싱 제안 표 (표준 포맷) + +| 항목 | 현재 값 | 제안 값 | 근거 | +|---|---|---|---| +| 뽑기 소비 재화 | N/A(신규 도입) | 골드 1차 + 젬 2차 이원 결제 | PD 직접 지시 문자 그대로 + 재추출v1 §7-1 구조 승인 기반(§2) | +| 천장 스케줄 | N/A(PM 1차 권고: 히어로 표준 10/30) | **열쇠형 4/40** | 원작 `dj_7011`="장비 뽑기 티켓" 명시 라벨과 GodDem 가챠 결과물(장비) 대응 정합(§3) — PM 권고 대비 변경, 사유 상세 §3-2·3-3 | +| 단차 골드가 | N/A(신규 도입) | 400G | 원작 젬단가(20젬) × GodDem 기존 골드/젬 교환비(20:1, 상점 SOT) 교차 도출(§5-1) | +| 단차 젬가 | N/A(신규 도입) | 20젬 | 원작 절대값 그대로 포팅(젬은 미재조정 처녀 재화, §5-1) | +| 신규 등급 범위 | Grade1~2뿐(상점) | Grade3~6(가챠 전용) | 메타v1 R-B5 상점/가챠 역할분리 권고 실행 + B2 §8 forging 사다리(q2→q6)와 정합(§4) | +| 옵션 4종 값(Grade3~6) | N/A(정의만 존재, `SurvivalStatCatalog.cs`) | 200/400/800/1600(raw) = 2%/4%/8%/16% | 원작 B-템플릿(배율재추출v1 §2-2) 원시값 그대로, GodDem `BasisPoint` 컨버전 기존 공식 재사용(§6-3) | + +**세그먼트 영향**: §7 "뽑기 상품 구성" 절 세그먼트 표 참조(무과금/소과금/고과금 3단 기재 완료). + +--- + +## 13. PD 확인 대기 항목 + +1. **젬 IAP 실화폐 가격**: 기존 상점 카탈로그의 젬팩 5종(180/500/1200/6500/15000젬)이 전부 `Price=0`(IAP 미연동 placeholder)이다. 가챠가 젬 소모를 실제로 유발하는 이상 이 가격 확정이 필요하다 — 원작 기준(재추출v1 §6: $29.99=800젬 → $0.0375/젬)을 그대로 적용하면 180젬=$6.75/500젬=$18.75/1200젬=$45/6500젬=$243.75/15000젬=$562.5가 되는데, **이 가격이 GodDem의 시장·지역 전략에 맞는지는 balance-designer 재량 밖**(과금 정책, P23 PD님 확인 영역)이다. +2. **천장 스케줄 최종 확인**: 본 문서는 열쇠형(4/40)을 채택했다(§3) — PM 1차 권고(히어로 표준 10/30)와 다른 결론이므로, 실제 구현 착수 전 이 판단 자체를 PD님께 재확인 권고(C36 보수적 해석 — 방향 자체는 balance-designer 재량 범위 내이나, 원작 이식이라는 프로젝트 전체 방침의 핵심 축이라 재확인이 안전). +3. **옵션 4종(hit/stun/retaliate/combo) 전투 소비 로직 신설 여부**: §0에서 밝힌 대로 코드베이스 전체에 소비처가 0건이다. 가챠 구현과 동시에 전투 로직(명중 판정 상쇄·기절 상태이상·반격 트리거·연격 트리거)을 신설할지, 아니면 "저장만 하고 추후 시스템 신설"로 미룰지는 **개발 리소스 범위 판단**이 필요해 balance-designer 단독 결정 밖이다(system-designer·개발팀장 협의 권고). +4. **forging/reforging 활성화 여부**: §4-3에서 본 문서 범위 밖으로 유보했다. B2가 이미 가격을 매겨뒀으므로 "재료" 자원 정의만 확정되면 즉시 활성화 가능한 상태다 — 5층 완성(가챠) 이후 후속 확장으로 진행할지 PD 판단 필요. + +--- + +## 14. 리스크 + +| ID | 리스크 | 심각도 | 내용 | +|---|---|---|---| +| R-H1(신규, §0 핵심) | 옵션 4종 전투 미소비 | 높음(정보성) | hit/stun/retaliate/combo가 정의·획득까지만 완결되고 실전투 발동 로직이 전무 — 가챠를 완료해도 플레이어 체감 효과가 Attack/Hp 증가분(기존 파이프라인)에 한정되고 옵션 4종은 수치만 쌓일 뿐 전투에 반영 안 됨. §13-3 PD 확인 | +| R-H2(신규) | 천장 가중치 형태 차용의 부정확성 | 중(🟡) | §6-1 Pool2/3 weight는 히어로 단차 비중을 열쇠형 카덴스에 재정합한 값이라 원작 열쇠 자체의 실제 곡선과 다를 수 있다. 열쇠 원본 가중치 재추출 시 교체 권고 | +| R-H3(신규) | Grade6 중복 스택 언밸런스 | 중 | 5번째 슬롯 중복 허용(§6-4)으로 최상위 등급템은 동일 옵션 2배 스택 가능 — 예: combo_rate 32% 등 단일 스탯 과확률이 전투 밸런스를 왜곡할 여지(단, R-H1이 먼저 해소돼야 실제 영향 판정 가능) | +| R-H4(신규) | 젬 경제 이중 소모처 충돌 | 낮음~중 | 기존 상점(daily_sword 50젬 등 Grade1~2 직접구매)과 가챠(20젬 단차) 젬 소모처가 공존 — 신규유저 시작 젬 300 기준 상점 아이템 구매(30~50젬)와 가챠 1~2회 중 무엇을 우선할지는 플레이어 선택이나, 상점의 "일일 1회 한정" 제약과 가챠의 "무제한 반복" 성격 차이로 젬이 결국 가챠에 쏠릴 가능성(설계 의도와 일치하나 상점 가치 추가 희석 여지, R-B5 연장선) | +| R-H5(승계) | 가챠 도입 정책 리스크(메타v1 R-A3) | 낮음(부분 해소) | 재화 종류는 본 문서로 확정됐으나(§2), IAP 실가격(§13-1)은 여전히 미확정 | + +--- + +## 15. 기각안 (C32) + +| # | 검토안 | 기각 사유 | +|---|---|---| +| 1 | 천장 스케줄 = 히어로 표준(10/30) 그대로 채택 | §3-2·3-3 — 결과물 유형(히어로 조각 vs GodDem 장비) 불일치. PM 1차 권고였으나 재검토 지시로 재조사 후 기각 | +| 2 | 천장 스케줄 = 장비형(62/100) 채택 | §3-3 — 결제구조가 젬 단일이라 PD "일반은 골드" 지시와 배치 | +| 3 | Grade1~2 기존 아이템도 가챠 풀에 포함(상점과 가챠 완전 공유) | 메타v1 R-B5가 이미 지적한 "상점 가치 희석" 리스크를 그대로 재현 — Grade1~2는 상점 전용으로 역할 고정(§4-2) | +| 4 | 원작 6등급(q1~q6)을 GodDem Grade1~6에 그대로 1:1 매핑, 가챠도 Grade1부터 등장 | 위와 동일 사유 + B2 §8-1 forging 사다리가 이미 q2→q3 시작으로 설계돼 있어(Grade1→2는 TryFuse 별도 경로) 가챠 시작점도 Grade3부터가 기존 골격과 정합 | +| 5 | forging/reforging을 본 문서에서 완전히 설계·활성화 | §4-3 — "재료" 자원이 미정의 상태라 신규 자원 도입이라는 별도 결정이 선행돼야 함. C50 범위 통제 + B2가 이미 가격을 매긴 부분의 중복 작업 방지(C10) | +| 6 | 옵션 4종 값을 GodDem 자체 재계수화(예: B4의 D(grade) 한계단가 균일화 방식 차용) | 옵션은 "지배 전략" 문제가 아니라(4종 모두 같은 확률 구조로 동등 가중 추첨되므로 "무엇을 살지 선택"하는 B4식 구매가 아니라 "무엇이 나올지 뽑는" 가챠라 균일화 유인 자체가 없음) — 원작 raw값을 그대로 쓰는 것이 더 정직하고 단순함(C44) | +| 7 | Grade6 5번째 슬롯을 빈 슬롯(미사용)으로 유지 | 슬롯 수 표(B2 §8-4)를 그대로 존중하되 낭비 없이 활용하는 편이 P30(재미) 관점에서 낫다고 판단 — "중복 스택"을 채택했으나 R-H3로 리스크 인지·병기 | +| 8 | 뽑기 비용을 B1/B2/B4처럼 "대형 1회성 목표" 스케일로 설계(예: 100연 비용을 총 경제의 10%대로 책정) | §8-2 — 가챠는 메타v1 §1-4가 정의한 역할(반복적 확률 기대감)이 B1~B4(장기 완결형 목표)와 다르다. 큰 목돈 스케일로 설계하면 §8-1의 "매 런마다 소프트천장 도달"이라는 P30 근거 자체가 무너짐 | + +--- + +## 16. 변경 이력 (P16) + +| 일시 | 작성 | 변경 | 근거 | +|---|---|---|---| +| 2026-08-22 | balance-designer | v1 신규 — 재화 이원결제(골드+젬) 확정, 천장 3안 비교 후 열쇠형(4/40) 채택, Grade3~6 신규 등급 도입, 풀/옵션/천장 CSV 3종 스키마 확정, 옵션 4종 전투 미소비 신규 발견(R-H1) | PD "원작 로직 동일·일반 골드+특정시점 유료" 지시 + PM 보강 지시(천장 3안 비교 요구) 반영 | + +--- + +## 17. 후속 조치 (본 문서 범위 밖) + +1. **plan-auditor 모드A 검증** — C35 의무 호출 대상(부서 간 산출물 공유·중요 결정). 본 문서 확정 전 선행 필요. +2. **옵션 4종 전투 로직 신설 여부 결정**(§13-3) — system-designer·개발팀장 협의. +3. **forging/reforging 활성화 판단**(§13-4, §4-3) — "재료" 자원 정의 선행. +4. **젬 IAP 가격 확정**(§13-1) — PD 과금 정책 판단. +5. **개발팀장 구현 착수** — C49 표준(설계 완료 → plan-auditor 검증 → 개발팀장 구현 → PM 커밋·push). +6. **열쇠형 자체 가중치 원본 재추출**(R-H2) — 여유 있을 때 개발팀장 APK 재복호화로 §6-1 Pool2/3 weight를 🟡에서 🟢로 격상 가능. +7. **가챠 UI 진입점 신설** — `SurvivalShopCatalog.cs`와 별도 화면(메타v1 §5-3 "구조 확장 필요" 항목), ux-designer·클라이언트팀 협의. diff --git a/공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v1_감사결과.md b/공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v1_감사결과.md new file mode 100644 index 0000000..a3447b1 --- /dev/null +++ b/공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v1_감사결과.md @@ -0,0 +1,98 @@ +# P3-B3 가챠 설계 v1 — plan-auditor 모드A 감사 결과 (차단·회송) + +> **작성**: plan-auditor 감사 원문 · PM 전재 2026-08-22 · **판정: 차단 (balance-designer 회송)** +> **감사 대상**: `2026-08-22_P3B3_가챠_설계_v1.md` (455줄 전문) · 병행 기록 대화로그 §62 +> 구조·SOT 정합·기각안·기록 체계 계층은 **전부 통과**. 차단 사유는 **수치·CSV·경제 주장 계층**에 집중. 회송 범위 = §4-4·§6-1·§8-2·§9·§10-3 5개 절 한정. + +--- + +## 통과 항목 (선행 확인) + +| 축 | 판정 | 실측 근거 | +|---|---|---| +| C6 자산 보호 | 통과 | GodDem `?? Captures/`만. 소스 수정 0건·HEAD `d7519eb` 무변동 | +| C32 기각안 보존 | 통과 | 설계 §15 8건 + 대화로그 §62 5건. 공란 없음 | +| C39 실측 인용 | 대체로 통과 | GOLD_ID=201·GEM_ID=101·신규 젬 300·`Applied => Value/10000f`·`CurrentVersion=4`·ItemCatalog 수치 전부 일치 | +| 경제 산술 | 전항 통과 | B1 1,056,056 · B2 510,496 · B4 1,766,680 · 합 3,333,232 · 실투자 1,942,464 → "1.1~1.9%" 참. 회분 환산 전부 검산 일치 | +| 풀 가중치 합계 | 통과 | Pool1·2·3 전부 10000 | +| 천장 카운터 오프셋 | 통과 | count<3→Pool1 / 3≤count<39→Pool2 / count≥39→Pool3 = 4·40회차. 원작 `libid2need=3` 컨벤션 일치 | +| PD 선택지 단일화 feedback 준수 | **모범 통과** | §3 3안 비교·§3-3 기각 사유·§13-2 PD 재확인 권고 — feedback 항목 5 정확 충족 | +| R-H1 신규 발견 재현 | **재현 성공** | 옵션 4종 정의부 1곳뿐·`RecalcPlayer()` 소비 8항에 없음. 주장 참 | + +--- + +## Critical 3건 + +### C-1. 미소비 스탯을 유료 판매 — 코드베이스 명문 가드레일 정면 위반 + R-H1 등급 축소 프레이밍 +- `SurvivalBattleManager.cs` L165~178 주석 = 조직이 직접 겪고 박아둔 금지 원칙(penetrate_ratio 상점 함정·2026-08-21 실측): **"재화를 지불하는 스탯은 소비처가 있어야 한다"**. 강제 장치 `ConsumedUpgradeKeys`(L180)·`ValidateUpgradeCoverage()`(L191) 실존. +- 본 설계의 Grade3~6 옵션 슬롯 2~5개 전부가 **골드/젬 받고 파는 미소비 스탯** — 가챠 차별화 보상 전체 무효. 실효 보상은 Attack/Hp뿐(상점·B2 기제공). +- **"잠정 배선할 기존 항 자체가 없다"는 과잉 일반화**: `dodge_rate`는 피해감소 합산항 잠정 배선 실측(`SurvivalBattleManager.cs:249`, 0~0.8 클램프)·penetrate/ele 3종은 B4 공격 비율 항 잠정 배선(R-F1). 확립 관행 = "미소비 스탯 → 기존 집계항 잠정 배선". 선례상 `retaliate_rate`(추가 피해)·`combo_rate`(추가 타격)는 공격 비율 항 배선 가능·`hit_rate`는 dodge 대칭으로 공격 측 배선 가능. **진정 배선 불가는 `stun_rate` 1종뿐**. 4종 전부 "배선 불가" 처리 = B4 선례 일관성 위반. + +### C-2. 등급-파워 사다리 역전 — 최희귀 Grade6이 Grade4보다 약함 +- B2 v2 §5-2 공식 지표 **PowerScore = Attack + Hp/4** 적용 결과: id10 G3=22.0 · id11 G3=57.5 · id12 G4=35.0 · **id13 G4=92.5** · id14 G5=100.0 · **id15 G6=55.0**. +- **Grade6(55.0) < Grade4(92.5) < Grade5(100.0)**. 등장률 1.5%·기대 75회(약 30,000G)의 최희귀가 28.05% 즉출 Grade3 id11(57.5)보다 약함. P30 재미축("이번엔 뭐가 나올까") 최상단 역전 — 하드천장 뚫고 20%로 Grade6 뽑으면 80%로 나오는 Grade5보다 손해. +- 원인 = 등급별 상이 앵커(id2·id3·id8·id9)에 상이 배수(×1.6·×2.5·×1.6³) 적용, 등급 간 비교 가능성 미확보. B1·B2·B4 전부 단일 지표 균일화 수행 — 방법론 불일치. + +### C-3. §8-2 "인플레이션 흡수 창구 이중화" — 미검증 단정 + 자기 인증 (C5) +- 설계 자체 수치(§6-1·§6-2 리셋 규칙)로 반증: 1사이클 기대 뽑기 ≈ **17.1회** · 하드천장 도달률 8.9% · Grade6 획득 22.8%/사이클 → 기대 75회 · **전 6종 수집 ≈ 75~90회 ≈ 30,000~36,000G = 가챠 생애 총 골드 흡수량**. +- C 런완주 414,018G의 8.7%·4층 총투자의 1.1~1.9%. 이후 전 뽑기 = 중복이며 §6-3 옵션 값 등급별 고정이라 재추첨은 스탯 배치만 변경 + C-1로 그 스탯들 전투 미반영 = **한계 효용 0**. +- 가챠 = "반복 소액 사이클"이 아니라 **약 36,000G짜리 1회성 수집 컨텐츠**. 흡수 창구 이중화 불성립·§11 검증 #5 미성립. C5 위반 핵심 = 검증 절차 없는 **"체크 통과" 자기 인증**. + +--- + +## Major 7건 + +### M-1. `SurvivalMetaGachaPity.csv` 2행 자기모순 (즉시 수정 가능) +- §10-3 2행 `n_GuaranteedGradeFloor=5` — Pool2는 Grade3 56.1%+Grade4 37.4%+Grade5 5%+Grade6 1.5%로 **Grade5 비보장**(§11 검증 #2 자기 명시 "등장 시작"). 오기 → 0(또는 3). 그대로 구현 시 §6-1 확률표 전체 무효화. + +### M-2. Layer③ 장비강화 파이프라인 id10~15 미커버 — §9 "자동 편입" 부분 오류 +- `SurvivalMetaEquipUpgrade.csv` = ItemId 1~9만(155행). `SurvivalEquipUpgradeTable.cs:86-92` 미등록 id → 0 반환. +- 귀결: ① §4-4 `SecondaryStatKey` 무효(항상 0) ② 가챠 아이템만 강화 불가(등급 사다리 강화 축 역전) ③ **비용 0 무한 강화 루프**(`CanUpgradeEquip(10)`=true·`EquipUpgradeCost(10)`=0 → 레벨만 상승·스탯 0·세이브 오염). 15종 체계 경제 영향 미평가. + +### M-3. 슬롯 배치 결함 — 6종 중 2종 즉시 사장·6부위 중 2부위 가챠 미커버 +- `Equipped = new int[6]` 부위당 1개 실측. Weapon: id10이 id12에 전 축 지배당해 **즉시 사장** / Armor: id11 동일 / **Hat·Boots: 가챠 공급 없음 → 영구 Grade1 고착**. 부위 재배정(id10→Hat·id11→Boots)으로 해소 가능. + +### M-4. 젬 결제 라인 지배전략 소멸 — §7 세그먼트 경제 오류 +- 상점 실측: gold_600·gold_12000 = 20:1, **gold_48000 = 1,500젬 = 32:1**. 100연 젬 직결제 1,800젬 vs gold_48000 경유 1,500젬(+잔여 12,000G+젬 300) → **젬 직결제 = 열등 전략**. 원작은 골드로 티켓 구매 불가라 젬 결제가 강제됐으나 GodDem은 젬→골드 환전 개방으로 게이트 붕괴. PD "특정 시점 유료"는 상점 골드팩 경로로 성립 — §2-1·§7 서술 실체와 상이. + +### M-5. 하드천장 도달 산정 §6-2 리셋 규칙과 자기모순 +- §7 고과금 "하드천장 2.5회"(리셋 미반영·실제 기대 0.5회) / §7 무과금 "8일"(실제 기대 17.1회≈3.4일에 Grade5+) / §8-1 "도달"(실제 "40회분 골드 확보"). 라벨 오류 — §3-2 채택 근거("40회 장기 목표") 정합성 훼손. + +### M-6. 원작 이탈 3건 PD 확인 표기 누락 (feedback_pd_directive_altered_to_rescale 항목 1·2) +- ① Pool1 = Grade3 60%/Grade4 40% — 원작 libid1은 q1 47.4%+q2 26.3%+q3 15.8%+q4 10.5%. 커먼 73.7% 제거·재정규화 = **동일 티어 약 3.8배 관대화**(개별 3:2 비율만 보존·티어 구성 상이 미서술) ② 10연 상품은 열쇠형 라인에 없음(기각한 장비형 212 차용·계열 교차 미표기) ③ 원작 212는 libid2·3=1로 **10연에 천장 없음** — 설계는 전 상품 천장 균일 적용. → 3건 모두 §13 PD 확인 항목 등재 의무. + +### M-7. R-B5 가격축 미해소 — R-H4 "낮음~중" 축소 +- 상점 daily_sword 50젬(PowerScore 14)·daily_armor 30젬(22.5) vs **가챠 단차 20젬 = Grade3~4 확정(22.0~92.5)**. 가격 2.5배 저렴 + 파워 1.5~6.6배 우위로 상점 지배. R-H4 등급 상향 필요. + +--- + +## Minor 5건 + +- **m-1.** §6-3 "/10000f 자동 환산" 오기 — `Applied`는 `SurvivalUpgradeTable.Entry` 속성. 신규 `SurvivalGachaTable.cs`는 Entry 미경유 → **변환 직접 구현 필요**(현 문구대로면 200이 20000%). §10-2에 책임 주체 명시. +- **m-2.** §3-1 B안 "1301·217 | 4회/40회" — 실측 1301=4회·**217=5회**. 채택값(4회)은 1301 기준 정확·결론 무영향. +- **m-3.** Pity CSV 스키마 메타v1 §5-2 계약 불일치(C22) — `n_GuaranteedGrade`→`n_GuaranteedGradeFloor` 개명 근거 미명기(`n_PoolId` 추가는 타당 개선). Pool/Option 2종은 완전 일치. +- **m-4.** §0 "hit_rate 상쇄 로직 미확인" — grep 1회 확정 가능 사항(C44). **실측 답: 회피 판정 로직 부재.** dodge_rate는 피해감소 합산항 잠정 배선뿐 → hit_rate는 대칭 배선 아닌 신규 배선 대상. +- **m-5.** §9-1 `SurvivalItemDef.GachaOptionSlots` 필드 사용처 없음(실저장은 §10-5 `GachaRolledOptions`) — 삭제 또는 용도 명시. 생성자 8-positional 기본값 처리 필요·id1~9 무영향 주장은 성립. + +## Improvement 3건 + +- **I-1.** §10-5 튜플 지속화 타입 — `SurvivalMetaData` 최초 도입. JsonConvert 기본 설정에서 ValueTuple은 Item1/Item2 라운드트립·IL2CPP AOT 스트리핑 우려(미검증). 기존 관례대로 소형 `[Serializable]` 클래스 권고. +- **I-2.** 10연·100연 배치 내 풀 재평가 규약 미정의(회차별 재평가 vs 배치 시작 시점 고정). 원작 212 확률 고정형(M-6)과 함께 확률 결과 차이 큼 — 설계에서 확정 필요. +- **I-3.** 골드 단가 교차 검증 1경로뿐("원작 젬가→상점 환전비"). B1·B2·B4는 전부 GodDem 골드 경제 직접 도출 + 층간 한계효율 대조. §12에 골드/PowerScore 대조 행 추가 권고. C-2·M-4가 본 단일 경로의 파생 결과. + +--- + +## 회송 처리 우선순위 + +| 순위 | 항목 | 조치 | +|---|---|---| +| 1 | M-1 | §10-3 2행 GuaranteedGradeFloor 5→0. 1줄 수정 | +| 2 | C-2·M-3 | §4-4 6종 수치 PowerScore 단일 지표 재도출 + 부위 재배정(Hat·Boots 커버·동일 부위 중복 제거) | +| 3 | M-2 | §9에 Layer③ 커버리지 결정 — id10~15 EquipUpgrade 행 신설 / 강화 제외 가드 택1 | +| 4 | C-1 | R-H1 차단급 상향 + B4 선례 잠정 배선 적용 — retaliate/combo/hit 3종 배선 가능·stun 1종만 신규 로직 → §13-3 재작성 | +| 5 | C-3·M-5 | §8-2 흡수 창구 주장 철회 또는 컨텐츠 깊이 확장으로 근거 확보. §7·§8-1 라벨 정정 | +| 6 | M-4 | 젬 직결제 존치 재판단(삭제/할인 차등/골드팩 조정) + §7 재작성 | +| 7 | M-6 | §13에 원작 이탈 3건 PD 확인 등재 | +| 8 | M-7·m-1~5 | R-H4 상향·문구·스키마 정정 | + +**기록 체계 판정**: 대화로그 §62 C32 충족. 감사 반영 시 §62 이후 회송 사유 append 필요. PD 지시 로그 갱신은 PM 영역. diff --git a/공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v2.md b/공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v2.md new file mode 100644 index 0000000..cb789d0 --- /dev/null +++ b/공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v2.md @@ -0,0 +1,433 @@ +# GodDem 가챠(아웃게임 Layer④) 수치 설계 v2 (재산정 — plan-auditor 차단 반영, v1 대체 아님·병존) + +> **작성**: balance-designer(기획팀) 2026-08-22 · **P3-B3 v2 산출물**(v1 병존, B2·C 선례 계승) · **본 문서가 P3-B3 최신 SOT** +> **v1**: `2026-08-22_P3B3_가챠_설계_v1.md`(455줄, 역사 보존) — plan-auditor 모드A **차단**(Critical 3·Major 7·Minor 5·Improvement 3) +> **감사 원문**: `2026-08-22_P3B3_가챠_설계_v1_감사결과.md`(PM 전재, 전문 Read 완료) — 회송 범위 §4-4·§6-1·§8-2·§9·§10-3 5개 절. 그 외 구조·SOT 정합·기각안·기록 체계는 v1에서 **전부 통과**, v2도 무변경 승계. +> **재검증 결과(C44)**: Critical·Major 18항목 전부 **독립 재계산으로 실측 재확인** — 감사 판정에 이견 없음, 전 항목 반영(반박 필드 불요). +> **절대 제약**: GodDem 레포 Read만 수행, 수정 0건. BT 레포 커밋 금지(팀장·PM 영역). +> **표기 규칙(C5·C44)**: 🟢확정 · 🟡추정 · 🔴미확정/PD 확인 필요 + +--- + +## 0. 결론 요약 — 감사 항목별 반영 매핑표 + +| # | 판정 | v2 반영 절 | 처리 요지 | +|---|---|---|---| +| C-1 | Critical | §4-3·§9·§13 | retaliate/combo/hit 3종 = B4 선례(`MasteryAttackRatio` 패턴) 그대로 `GachaAttackRatio()` 신설 배선. stun_rate 1종만 미소비·PD 확인 잔존 | +| C-2 | Critical | §4-4 | PowerScore(Attack+Hp/4) 단일지표로 6종 전면 재도출. G3(45·55) 0 && Data.GachaRolledOptions.TryGetValue(itemId, out var rolls)) + foreach (var r in rolls) + if (r.StatKey is "gacha_hit_rate" or "gacha_retaliate_rate" or "gacha_combo_rate") + sum += r.Value / 10000f; // ← m-1: 변환 책임은 여기, Entry.Applied 미경유 + return sum; // stun_rate는 합산 대상에서 의도적 제외(§4-3) +} + +public static float FinalAttack() => + (BaseAttack + TotalAttack() + HeroLevels.AttackBudgetAt(Data.HeroLevel)) + * (1f + Promotions.AttackBonusRatio(Data.PromotionStar) + MasteryAttackRatio() + GachaAttackRatio()); // ← 신규 항 1개 추가 +``` + +**m-4 확정 반영**: `hit_rate`를 `dodge_rate`(회피) 대칭으로 배선하는 방안은 채택하지 않는다 — 회피 판정 상쇄 로직 자체가 코드에 없음을 grep으로 확정했다(전투 코드 전체에 "회피 시도 무효화" 분기 부재). 대신 C-1과 동일하게 공격 측 `GachaAttackRatio()`에 합산해 배선 방식을 통일한다(대칭성보다 일관성 우선). + +### 9-1. 코드 터치포인트 (v1 §9-1 대비 갱신 — 취소선 항목은 v1에서 폐기) + +| 파일 | 변경 | +|---|---| +| `SurvivalItemCatalog.cs` | id10~15 6종 항목 갱신(§4-4 신규 슬롯·스탯). ~~`GachaOptionSlots` 필드~~(m-5, 미사용 삭제) 대신 `static int SlotCountForGrade(int grade)` 순수함수 추가(2/3/4/5 반환) | +| `SurvivalMeta.cs` | `SurvivalMetaData`에 `int GachaPityCount` + `Dictionary GachaOwned` + **`Dictionary> GachaRolledOptions`**(I-1: 튜플→`[Serializable]` 클래스, §10-5) 3필드, `Version` 4→5. **신규**: `GachaAttackRatio()` 메서드(위 코드), `FinalAttack()`에 항 1개 추가 | +| `SurvivalBattleManager.cs` | 무변경(옵션 소비는 `FinalAttack()` 경유로 이미 흡수 — 별도 `RecalcPlayer()` 수정 불요, v1의 "RecalcPlayer 4항 조회 추가" 계획은 불필요했음이 재설계로 판명) | +| `SurvivalMeta.cs`(M-2) | `CanUpgradeEquip(int itemId)`에 `itemId < 10 &&` 조건 추가 — id10~15 강화 UI 진입 차단(비용 0 루프 원천 차단) | +| 신규 파일 | `SurvivalGachaTable.cs` — Pool/Option/Pity 3종 CSV 로드. **m-1**: Option 값의 `/10000f` 변환은 이 파일 자체 책임(기존 `SurvivalUpgradeTable.Entry.Applied`는 인게임 12트랙 전용이라 가챠가 경유하지 않음) | +| `SurvivalStatCatalog.cs` | `hit_rate`·`retaliate_rate`·`combo_rate` 3종 `Note` 필드에 "P3-B3 v2: `GachaAttackRatio()` 잠정 배선 완료(B4 R-F1 계열)" 추가 갱신. `stun_rate`는 "전투 미소비, PD 확인(§13)" 유지 | + +### 9-2. I-2 — 10/100연 배치 재평가 규약 (신규, 명시 필요 조항) + +**10연·100연은 회차별 순차 처리**한다 — 배치 시작 시점에 Pool을 고정하지 않는다. 각 개별 뽑기마다 `GachaPityCount` 갱신 → Grade5/6 획득 시 즉시 0 리셋 → 다음 회차 Pool 재평가, 순으로 진행한다. 이는 원작 `drawtype 212`(장비형 10연)의 "확률 고정형"(libid2/3=1, 천장 미적용) 방식을 **채택하지 않은 것**이다 — 통일된 점진적 천장 모델을 열쇠형 전 상품에 균일 적용하는 쪽을 의도적으로 선택했다(M-6 PD 확인 3번 항목과 연동, §13). + +--- + +## 10. 데이터 모델 — CSV 스키마 (§10-1·10-2 값 무변경, §10-3 M-1 수정, §10-5 I-1 반영) + +### 10-1. `SurvivalMetaGachaPool.csv` (v1과 완전 동일 — 무변경, ID/Grade 매핑 불변) + +``` +n_PoolId,n_ItemId,n_Grade,n_Weight +풀번호(1일반/2소프트/3하드),아이템ID,등급,가중치(만분율) +1,10,3,3000 +1,11,3,3000 +1,12,4,2000 +1,13,4,2000 +2,10,3,2805 +2,11,3,2805 +2,12,4,1870 +2,13,4,1870 +2,14,5,500 +2,15,6,150 +3,14,5,8000 +3,15,6,2000 +``` + +### 10-2. `SurvivalMetaGachaOption.csv` (값 무변경, m-1 책임 주체만 문서화) + +``` +n_OptionId,s_StatKey,n_Grade,f_Value +옵션ID,스탯키(가챠 접두 gacha_),등급,원시값(BasisPoint·만분율 — SurvivalGachaTable 자체가 /10000f 변환) +1,gacha_hit_rate,3,200 +2,gacha_stun_rate,3,200 +3,gacha_retaliate_rate,3,200 +4,gacha_combo_rate,3,200 +5,gacha_hit_rate,4,400 +6,gacha_stun_rate,4,400 +7,gacha_retaliate_rate,4,400 +8,gacha_combo_rate,4,400 +9,gacha_hit_rate,5,800 +10,gacha_stun_rate,5,800 +11,gacha_retaliate_rate,5,800 +12,gacha_combo_rate,5,800 +13,gacha_hit_rate,6,1600 +14,gacha_stun_rate,6,1600 +15,gacha_retaliate_rate,6,1600 +16,gacha_combo_rate,6,1600 +``` + +### 10-3. `SurvivalMetaGachaPity.csv` — M-1 수정(2행 오류 정정) + m-3 개명 근거 + +``` +n_Tier,n_PullsNeed,n_PoolId,n_GuaranteedGradeFloor +천장단계,발동회차,활성풀ID,보장등급하한(0=없음·비보장 가능성 개방만) +1,1,1,0 +2,4,2,0 +3,40,3,5 +``` + +**M-1 수정**: 2행(Tier2·Pool2)의 `n_GuaranteedGradeFloor`를 v1의 `5`에서 **`0`**으로 정정. Pool2는 Grade5·6을 "등장 가능"하게 할 뿐(각 5.0%·1.5%) "보장"하지 않는다 — v1 값을 그대로 구현했다면 §6-1 확률표 전체가 논리적으로 무효화됐다. + +**m-3 개명 근거**: 메타v1 §5-2 골격의 `n_GuaranteedGrade`를 `n_GuaranteedGradeFloor`로 개명한 것은 "보장"이라는 단어가 Pool2(가능성 개방)와 Pool3(확정 보장)을 혼동시킨 것이 M-1 오류의 근본 원인이었기 때문이다 — 필드명에 "하한"을 명시해 의미를 구체화했다. `n_PoolId` 열 추가는 메타v1 골격의 자연스러운 확장(어느 Pool을 활성화하는지 필수 정보이나 원 골격엔 없었음)이다. + +### 10-4. 뽑기 비용 테이블 — M-4 반영 갱신 + +``` +n_PullCount,l_GoldCost,l_GemCost +1,400,13 +10,4000,125 +100,36000,1125 +``` + +### 10-5. `SurvivalMetaData` v5 필드 — I-1 반영(ValueTuple 폐기) + +```csharp +[Serializable] +public class GachaOptionRoll // ← 신규(I-1) — ValueTuple 대신 IL2CPP AOT 안전한 직렬화 가능 클래스 +{ + public string StatKey; + public float Value; +} + +public int GachaPityCount; +public Dictionary GachaOwned; +public Dictionary> GachaRolledOptions; // ← List<(string,float)> 대체(I-1) +public const int CurrentVersion = 5; +``` + +--- + +## 11. 검증 시나리오 (v1 10건 승계 + v2 신규 4건) + +| # | 시나리오 | 기대 결과 | 검증 | +|---|---|---|---| +| 1~10 | v1 §11과 동일(Pool 전환·리셋·중복재추첨·100연결제·CSV Applied 등) | 무변경 | v1 §11 승계 — 그대로 통과 | +| 11(신규) | Grade4 id13(Armor) 획득 후 Grade3 id11(Boots) 획득 | 두 아이템 서로 다른 슬롯이라 **동시 장착 가능**, 사장 없음 | §4-4 M-3 해소 확인 | +| 12(신규) | `combo_rate` 옵션 롤 보유 상태에서 `FinalAttack()` 조회 | `GachaAttackRatio()`가 해당 값(예: 4%=0.04)을 비율 항에 정확히 가산 | §9 C-1 배선 확인 | +| 13(신규) | id10(Grade3) 강화 시도(`OnClickEquipLevelUp(10)`) | UI 진입 차단(`CanUpgradeEquip(10)`=false) — 비용 0 루프 발생 안 함 | §4-3·§9 M-2 확인 | +| 14(신규) | 100연 젬 직결제(1,125젬) vs `gold_48000` 경유(1,500젬+잔여) | 직결제가 항상 375젬 이상 저렴 — 지배전략 역전 해소 | §5-1 M-4 무지배 검증 | + +--- + +## 12. 밸런싱 제안 표 (표준 포맷, v1 대비 갱신분 + I-3 부분 반영) + +| 항목 | v1 값 | v2 값 | 근거 | +|---|---|---|---| +| 옵션 4종 전투 배선 | 전항 미배선 | retaliate/combo/hit 3종 배선, stun만 잔존 | C-1 — B4 `MasteryAttackRatio` 선례 일관 적용 | +| 신규 아이템 6종 PowerScore | 비균질(id13=92.5>id15=55.0 역전) | 단조 증가(45→55→75→85→130→205) | C-2 — PowerScore=Attack+Hp/4 단일지표 재도출 | +| 신규 아이템 부위 배정 | Weapon×2·Armor×2·Charm·Ring(Hat·Boots 미커버) | 6부위 1:1 커버(Weapon·Hat·Ring·Boots·Armor·Charm) | M-3 — 슬롯 중복 사장 해소 | +| 단차 젬가 | 20젬(원작 리터럴 포팅) | **13젬**(골드가÷32 재도출) | M-4 — 상점 32:1 실효율과 정합, 지배전략 역전 해소 | +| 10연 젬가 | 200젬 | **125젬** | 〃 | +| 100연 젬가 | 1,800젬 | **1,125젬** | 〃 | +| Layer③(강화) 커버리지 | 미정의(비용0 루프 위험) | 강화 제외 가드(id10~15) | M-2 — "완성형 패키지" 정체성 유지, 최소 침습 해소 | +| §8-2 경제 프레이밍 | "인플레이션 흡수 이중화"(미검증) | "유한 수집형 컨텐츠"(75~90회 완주선) | C-3 — 자기인증 철회, §6-2 리셋 규칙 기반 재계산 | +| **B3 자체 골드/PowerScore 단가(I-3 부분 반영)** | 미산출 | 완주 기준 36,000G÷(45+55+75+85+130+205=595pt)≈**60.5G/pt** | I-3 — B1/B2/B4 전체 교차비교는 지표 이질성(레벨식·강화식·마스터리식이 서로 다른 단위) 때문에 본 v2 범위 밖(§17), 자체 지표만 우선 산출 | + +**세그먼트 영향**: §7 세그먼트 표(M-4·M-5 반영) 참조. + +--- + +## 13. PD 확인 대기 항목 — M-6 3건 추가 + 기존 항목 갱신 + +1. **젬 IAP 실화폐 가격**(v1 승계) — 상점 젬팩 5종 Price=0 placeholder, 원작 기준($0.0375/젬) 적용 시 가격표 산출 가능하나 시장 전략은 PD 영역. +2. **천장 스케줄 최종 확인**(v1 승계) — 열쇠형(4/40) 채택, PM 1차 권고(히어로 표준) 대비 판단 교체. +3. **stun_rate 전투 소비 로직 신설 여부**(C-1로 축소) — retaliate/combo/hit 3종은 본 v2로 배선 완료. stun_rate만 "상태이상 시스템 신설"이 필요한 유일 잔존 항목(system-designer·개발팀장 협의). +4. **forging/reforging 활성화 여부**(v1 승계) — "재료" 자원 미정의. +5. **(M-6 신규) Pool1 구성 원작 대비 약 3.8배 관대화**: 원작 pool1(q1 47.4%+q2 26.3%+q3 15.8%+q4 10.5%, 4개 등급 전부 존재)에서 상점이 점유한 q1·q2를 제외하고 q3+q4(합 26.3%)만 100%로 재정규화한 결과 — 개별 3:2 비율 자체는 보존했으나 **동일 티어 확률이 원작 대비 약 3.8배(100/26.3) 관대화**됐다. 상점/가챠 역할분리(§4-2)는 이미 채택된 방향이라 문제가 아니나, 그 결과로 발생한 확률 인플레이션 폭을 PD가 인지·승인했는지 확인 필요. +6. **(M-6 신규) 10연 상품의 계열 교차**: 열쇠형(1301·217) 라인에는 원작 데이터상 "10연" 행 자체가 없다. 본 설계의 10연 상품(할인 없음, 정확히 10배)은 **기각한 장비형(212) 계열에서 구조만 차용**한 것 — 열쇠형 고유 데이터가 아니라는 점을 명시. +7. **(M-6 신규) 10연 천장 적용 방식의 원작 이탈**: 원작 `212`(장비형 10연)는 `libid2·3=1`로 **천장이 전혀 적용되지 않는 확률 고정형**이다. 본 설계는 §9-2(I-2)에서 명시했듯 1/10/100연 전 상품에 통일된 점진적 천장을 적용한다 — 원작 10연의 "고정형" 성격을 채택하지 않은 의도적 설계 선택임을 확인 필요. + +--- + +## 14. 리스크 (v1 5건 승계 + M-7 R-H4 상향) + +| ID | 리스크 | v1 심각도 | v2 심각도 | 내용 | +|---|---|---|---|---| +| R-H1 | 옵션 미소비 | 높음(정보성) | **낮음~중**(하향) | C-1로 3/4종 배선 완료. stun_rate 1종만 잔존(§13-3) | +| R-H2 | 천장 가중치 형태 차용 | 중(🟡) | 중(🟡, 무변경) | 열쇠형 자체 가중치 원본 미보유(§3, 무변경) | +| R-H3 | Grade6 중복 스택 언밸런스 | 중 | 중(무변경) | C-1 배선 완료로 실제 전투 영향이 생겼으므로 향후 플레이테스트 시 재검토 우선순위 상향 권고 | +| **R-H4** | 젬 경제 이중 소모처 충돌 | 낮음~중 | **중~높음(M-7 상향)** | M-4 재도출로 단차 젬가가 20→13으로 낮아져 상점 대비 가격격차(3.85배, v1의 2.5배 대비 확대) 심화. 상점=저확정 즉시구매·가챠=저가+고티어확률이라는 구조적 긴장은 실제 가챠 게임의 통상 패턴이나, 격차 확대분은 인지·모니터링 필요 | +| R-H5 | 가챠 도입 정책 리스크 | 낮음(부분 해소) | 낮음(무변경) | IAP 가격 미확정(§13-1) 잔존 | + +--- + +## 15. 기각안 (C32 — v1 8건 승계 + v2 신규 6건) + +**v1 §15의 8건은 무변경 승계**(천장 3안·상점풀 공유·등급 1:1매핑·forging 완전활성화·옵션 재계수화·빈슬롯 유지·대형목돈 스케일). + +**v2 신규 기각안**: + +| # | 검토안 | 기각 사유 | +|---|---|---| +| 9 | M-2: id10~15 EquipUpgrade 행 신설(①안) | §4-3 — 6종 신규 V(L) 곡선 도출은 §8 전체 재시뮬레이션을 요구하는 대형 스코프. 가챠의 "완성형 패키지" 정체성과도 상충. 강화 제외 가드(②안)가 더 자기완결적이고 M-2가 요구한 "루프 차단"을 직접 만족 | +| 10 | M-4: 젬 직결제 완전 삭제(①안) | §5-1 — PD "특정 시점에만 유료 재화" 지시의 직접 대체결제 구조 자체를 없애 문자 그대로의 지시 위반 소지 | +| 11 | M-4: 상점 골드팩 32:1 환율 조정(③안) | §5-1 — 이미 운영 중인 상점 콘텐츠(B1 단계부터)를 가챠 설계 문서에서 변경하는 것은 범위 초과, PD 확인이 별도로 필요해짐. 문제의 근본이 "가챠 젬가 산정 경로"에 있으므로 그쪽에서 자기완결적으로 해소하는 것이 C2 원칙에 더 부합 | +| 12 | C-2: PowerScore에 옵션 슬롯 가치까지 산입해 통합 지표화 | §4-4 — B2가 정의한 PowerScore는 기본 스탯 전용 지표(옵션 개념 자체가 B2엔 없음). 통합 지표를 새로 정의하면 B2·C-2 감사가 준거로 삼은 원 지표와 어긋나 재검증 비용이 커진다. 대신 "기본 스탯 채널"(PowerScore)과 "옵션 채널"(슬롯수·값) 각각 독립 단조 증가를 보이는 것으로 충분(§4-4 보강 논거) | +| 13 | C-3: 가챠 풀을 본 v2에서 즉시 확장해 완주선을 늦춤 | §8-2 — PM이 명시적으로 "본 v2에서 집행하지 말 것"으로 지정(C50 스코프 통제). §17 후속 옵션으로만 제안 | +| 14 | M-7: 상점 daily_sword 등 기존 가격을 상향해 격차 축소 | §14 — 기존 상점가 변경은 가챠 설계 범위를 벗어나고(위 #11과 동일 논리), 격차 자체는 가챠 게임의 통상적 구조(확정구매=비싸고 낮은리스크, 확률뽑기=싸고 높은변동성)라 반드시 해소해야 할 결함이 아니라는 판단 — 리스크 등급 상향으로 인지만 표기 | + +--- + +## 16. 변경 이력 (P16) + +| 일시 | 작성 | 변경 | 근거 | +|---|---|---|---| +| 2026-08-22 | balance-designer | **v1 신규** — 재화 이원결제·천장 3안 비교(열쇠형 채택)·Grade3~6 도입·CSV 3종·옵션 4종 미소비 발견 | PD 지시 + PM 보강지시(천장 3안 비교) | +| 2026-08-22 | balance-designer | **v2 신규 — plan-auditor 차단 반영**(v1 병존). Critical 3(옵션 미소비 배선·PowerScore 등급역전·경제주장 철회)·Major 7(Pity CSV 오류·강화루프·부위재배정·젬가재도출·라벨오류·원작이탈고지·리스크상향)·Minor 5·Improvement 3 전 18항목 반영. 독립 재검증 결과 감사 판정에 이견 없음(반박 없음) | PM 회송(plan-auditor 모드A 차단) — 감사결과 파일 `2026-08-22_P3B3_가챠_설계_v1_감사결과.md` 전문 반영 | + +--- + +## 17. 후속 조치 (본 v2 범위 밖) + +1. **plan-auditor 모드A 재검증** — 본 v2가 새 감사 대상. C35 의무 호출. +2. **stun_rate 전투 로직 신설 여부**(§13-3) — system-designer·개발팀장 협의, 유일 잔존 미소비 옵션. +3. **forging/reforging 활성화**(§13-4) — "재료" 자원 정의 선행. +4. **젬 IAP 가격 확정**(§13-1) — PD 과금 정책. +5. **M-6 3건 원작 이탈 PD 확인**(§13-5~7) — 승인/재조정 여부. +6. **가챠 풀 확장(컨텐츠 깊이) — C-3 후속 옵션**(신규): §8-2가 정직 재기재한 "75~90회 완주선"을 늘리고 싶다면, 신규 Grade3~6 아이템 추가(content-designer 협업)로 수집 목표 자체를 확장하는 방향이 가능하다 — 본 v2는 PM 지시로 미집행(C50), 콘텐츠 배정과 재확률설계가 필요한 별도 스코프. +7. **id10~15 Layer③ 강화 축 개방 여부**(§4-3 M-2 후속) — PD가 원할 경우 신규 EquipUpgrade 곡선 도출 + §8 재시뮬레이션을 동반하는 별도 서브페이즈. +8. **I-3 전체 미집행분** — B1/B2/B4 전체 골드/파워 단가 교차비교(지표 이질성 해소 방법론 선행 필요). +9. **개발팀장 구현 착수** — 본 v2 plan-auditor 통과 후, C49 표준(설계→검증→구현→PM 커밋). +10. **R-H3 재검토 우선순위 상향** — C-1 배선 완료로 Grade6 중복 스택이 실제 전투에 영향을 미치게 됐으므로 플레이테스트 시 우선 확인. diff --git a/공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v2_감사결과.md b/공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v2_감사결과.md new file mode 100644 index 0000000..53ebb6f --- /dev/null +++ b/공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v2_감사결과.md @@ -0,0 +1,88 @@ +# P3-B3 가챠 설계 v2 — plan-auditor 모드A 재검증 결과 (차단·회송) + +> **작성**: plan-auditor 감사 원문 · PM 전재 2026-08-23 · **판정: 차단 (회송) — 개발팀장 구현 인계 부적격** +> **대상**: `2026-08-22_P3B3_가챠_설계_v2.md` (433줄 전문) · 병행 기록 대화로그 §63·§64 +> v1 감사 18항목은 **실질 반영** — 가짜 반영·프레이밍 회피·산술 오류 0건·C-1 배선 코드 실측 동작 확인. 차단 = **수정이 낳은 신규 결함**(§4-3 옵션값·§5-1 젬가 2개 축). 우선순위 1·2는 **PD 결정 영역**. + +--- + +## 1. 18항목 반영 완결성 (전수 대조) + +집계: **완전 반영 13 · 부분 반영 2(M-2·I-3) · 반영했으나 신규 결함 유발 3(C-1→N-1·C-2→N-2·M-4→N-3/N-4)**. + +- C-1 배선: `SurvivalBattleManager.cs:147` `PlayerAttack = SurvivalMeta.FinalAttack()` 실측 — 배선 전투 도달 ✓. `MasteryAttackRatio()` L443-446 패턴 일치. `GachaRolledOptions` 신규 필드라 **이중 계상 경로 없음** ✓ +- C-2: 45.0<55.0<75.0<85.0<130.0<205.0 재검산 일치(가챠 셋 내부 한정) +- C-3: 8.9%·22.8%·17.1회·75.0회 독립 재계산 일치·자기인증 철회 정확 +- M-1: §10-3 2행 `2,4,2,0` ✓ / M-3: SurvivalSlot enum 6종 1:1 ✓ / M-5: §8-3 3행 재검산 일치 / M-6: §13-5·6·7 등재·3.8배 검산 일치 / M-7: 중~높음 상향·격차 확대(2.5→3.85배) 자진 고지 +- m-1~5·I-1·I-2 완전 반영(§9 주석+§10-2 변환 책임·217=5회 각주·개명 근거·회피 부재 확정·`SlotCountForGrade()` 순수함수·`[Serializable] GachaOptionRoll`·회차별 재평가 규약) + +## 2. 회귀 검증 — 훼손 없음 + +천장 열쇠형 4/40 유지·풀 합 10000 유지(§10-1 v1 바이트 동일·Grade 배정 무변경으로 재계산 불요 정당)·원작 이원결제 유지·기각안 체계 강화(v1 8+v2 6=14건)·C39 실측 5건 전부 감사 재측정 일치·C6 통과(GodDem HEAD `d7519eb` 무변동). + +--- + +## 3. Critical 3건 (신규 — v2 수정이 유발) + +### N-1. 옵션 채널이 GodDem 승산항 예산 초과 — 배선 "크기" 미검증 【PD 결정 영역】 +`FinalAttack()` 승산항 가산 결합: `(1 + 승급 + 마스터리 + 가챠옵션)`. 실측 상한: + +| 승산항 | 최대값 | 골드 비용 | 1.0 배율당 골드 | +|---|---|---|---| +| 승급 (B1) | 0.22 (star11) | 253,418G | 1,152,000G | +| 마스터리 (B4) | 0.42 (grade6) | 526,680G | 1,254,000G | +| 기존 합계 | **0.64** | 780,098G | 1,218,900G | +| **가챠 옵션 (v2)** | **약 1.08** | **약 36,000G** | **33,333G** | + +가챠 옵션 기대 합산(비복원 추출·stun 미배선 반영): G3 3.0%×2 + G4 9.0%×2 + G5 24.0% + G6 60.0% ≈ **+1.08**. **완주 36,000G로 승급+마스터리 합(+0.64·780,098G)의 1.7배·골드 효율 36.6배** — B1 승급 11성·B4 만렙이 반올림 오차化. v1 C-2와 동일 계열(셋 내부만 검증·층간 크기 누락). §12에 옵션 채널 절대 크기 행 부재. + +**처리**: 값(200/400/800/1600)은 **원작 B-템플릿 raw값 그대로** → 임의 재계수화는 feedback_pd_directive_altered_to_rescale 항목 1 위반. balance-designer 자체 축소 금지 — **§13 8번 등재 → PD 택일**: "원작 유지 / GodDem 재계수화" (구체 수치 병기). + +### N-2. 슬롯 단위 역전 — Hat에서 가챠가 강화된 상점템보다 약함 【designer 재량】 +비교 축 = 같은 부위의 **B2 강화(L16) 후** 기존 장비(v2는 미강화 G2 최대 id9=40.0만 대조): + +| 부위 | 기존 L16 강화 후 PS | 가챠 | 가챠 PS | 판정 | +|---|---|---|---|---| +| Weapon | id2 42.0 (54,720G) | id12 G4 | 75.0 | 1.79배 | +| **Hat** | **id6 50.25 (56,928G)** | **id10 G3** | **45.0** | **역전 −10.4%** | +| Ring | id8 60.0 | id15 G6 | 205.0 | 3.42배 | +| Boots | id5 30.0 | id11 G3 | 55.0 | 1.83배 | +| Armor | id3 67.5 | id13 G4 | 85.0 | 1.26배 | +| Charm | id9 120.0 (75,520G) | id14 G5 | 130.0 | **1.08배 박빙** | + +id10 = Pool2 최다 빈출(28.05%)인데 강화 id6 대비 다운그레이드·강화 제외 가드로 회복 경로 없음. 원인 = PowerScore 목표를 등급별로만 설정·슬롯별 베이스라인 편차(30.0~120.0, 4배 폭) 미반영 — M-2·M-3 독립 결정·교차 미검증. **조치**: §4-4 목표를 슬롯별 기존 강화 후 베이스라인 대비 배수로 재설정(최소 id10 > 50.25·id14 마진 재검토). + +### N-3. 시작 젬 300 + 13젬 단가 = 골드 획득 이전 74% 확률 Grade5+ 확보 【PD 결정 영역】 +`PlayerManager.cs:75` 신규 계정 젬 300 실측. v1(20젬): 15뽑기→P(Grade5+)=55.4% / **v2(13젬): 23뽑기→73.9%** — M-4 인하가 시작 젬 구매력 53% 증대. 파급: Grade6 Ring(205PS)은 타 경로 도달 불가 수치(기존 최고 id9 만렙 120PS)·R-B5 역할 분리 계정 생성 시점 무효화·B1/B2/B4 성장 곡선 출발점 붕괴. +**정직 고지(C5)**: v1에도 존재(55.4%)·v1 감사가 놓침 — v2가 만든 게 아니라 **악화**시킴. §7 세그먼트 표에 시작 젬 300 미언급. +**처리**: **§13 9번 등재 → PD 택일**: (1) 시작 젬 유지+가챠 접근 게이트(스테이지·레벨 조건) (2) 젬가 하한 (3) 시작 젬 조정((3)은 기존 상점 경제 변경 — designer 재량 밖). + +--- + +## 4. Major 1 · Minor 4 + +- **N-4 (Major)**: 젬 단가 원작 이탈(20→13·÷32 재도출)이 §13 미등재 — M-6 자체 원칙("원작과 다른 지점 PD 확인 등재") 불일치. 과금 가격 변경이라 PD 관련성 최상. §13 4번째 이탈로 등재. +- **N-5 (Minor)**: I-3 유보 사유("층간 지표 이질")가 B2에는 부적용 — B2·B3 동일 지표(PowerScore). 실측: B2 만렙 510,496G/297.0pt=**1,718.8 G/pt** vs B3 완주 36,000G/595.0pt=**60.5 G/pt** — **28.4배**. §12에 B2 대조 행 1줄 추가로 해소. +- **N-6 (Minor)**: M-2 가드 UI 서술 불일치 — `SurvivalLobbyController.EquipUpgrade.cs:185-224` 실측: 강화 패널은 장착품 그대로 표시(카탈로그 순회 아님) → "강화 UI 진입 차단" 불성립. 실동작: Lv 0/16 표시·버튼 "MAX"·클릭 시 "강화가 최대입니다" Toast = **Lv 0에 거짓 표시**(가드레일이 막으려던 "실체 없는 어포던스" 계열). 부수: `itemId < 10` 매직넘버(→ `Grade >= 3` 또는 플래그 권고·C22)·**§4-4 id10~15 `SecondaryStatKey` 컬럼 영구 0 반환·UI "방어 +0.0%" 노출**(v1 M-2 귀결 #1 미해소 — 삭제 또는 미사용 명시)·"원천 차단" 표현 proxy 자기모순 정정 권고. +- **N-7 (Minor)**: §8-3 표 헤더 5열·데이터 4값 열 밀림(수치는 전부 정확). +- **N-8 (Minor)**: v1에 대체 배너 부재 — v1 헤더 "유일 산출물" 잔존·v2 참조 없음. v2가 다수 절을 "v1 승계·재게재 생략" 처리해 v1 필독 구조인데 v1에 폐기 확정값(§4-4 구 스탯·§7 구 젬가·§10-3 `2,4,2,5`·§8-2 철회 주장) 잔존 — 구현자 오독 위험. v1 상단 "🔴 v2로 대체 — §4-4·§7·§10-3·§8-2 폐기" 배너 1줄(C14-5 예외 허용). + +--- + +## 5. 회송 처리 우선순위 + +| 순위 | 항목 | 주체 | 조치 | +|---|---|---|---| +| 1 | N-1 | **PD 결정** | §13-8 등재 — 옵션 raw값(2/4/8/16%) 이식 시 승산항 +1.08 vs 예산 0.64·골드효율 36.6배. 원작 유지 / 재계수화 택일 | +| 2 | N-3 | **PD 결정** | §13-9 등재 — 시작 젬 300÷13젬=23뽑기·P(G5+)=73.9%. 게이트 / 젬가 하한 / 시작 젬 조정 택일 + §7 신규유저 행 | +| 3 | N-2 | designer | §4-4 슬롯별 강화 후 베이스라인 대비 배수 재설정 | +| 4 | N-4 | designer | §13 젬 단가 이탈 등재 | +| 5 | N-5 | designer | §12 B2 대조 행(1,718.8 vs 60.5 G/pt) | +| 6 | N-6 | designer | UI 실측 동작 정정+표시 규약·매직넘버·SecondaryStatKey 컬럼 처리 | +| 7 | N-7·N-8 | designer | 표 열 정정·v1 대체 배너 | + +## 6. 인계 적격 판정 + +**현 시점 부적격** — 구현 가능성 문제가 아니라(§10 CSV·§9 터치포인트는 실측 통과) **구현 결과가 day-one 경제 역전**(N-1 완주 시점 승산항 붕괴·N-3 계정 생성 시점 장비 붕괴). 경로 = §13 등재 → PM 취합 → **PD 상신 → 결정 반영** → 3~7 반영 v3 → 인계 적격 전환. + +**v2 자체 평가**: 회피·왜곡·산술 오류 0건·근본 원인 정확 교체. 신규 결함 3건은 전부 "수정한 축은 맞게 고쳤으나 그 축이 다른 층과 만나는 지점 미재검증" 동일 패턴 — v3에서 반영 항목별 **층간 교차 영향 1문항** 자체 체크리스트 권고. diff --git a/공유/대화로그/GodDem/2026-08-22.md b/공유/대화로그/GodDem/2026-08-22.md index ab23e7c..124142f 100644 --- a/공유/대화로그/GodDem/2026-08-22.md +++ b/공유/대화로그/GodDem/2026-08-22.md @@ -438,3 +438,48 @@ - **pm-auditor 사전 감사(C35): 조건부 통과** — S1 매니페스트 등록(`2026-08-22_230748`) 해소. M1 PD 로그 P3-C 산출물 stale(v1 미구현 표기→v2·`d7519eb` 완료) / M2 사후조치 컬럼 stale(구 대기 "스케일 재조정" 해소·"P1 착수" 무효·gitignore/INDEX 완료 — PD 결정 대기 4건 현행화: XOR 키 보존·penetrate/ele·Stage55+·가챠 IAP) / m3 산출물 컬럼 재추출 4종·인수인계서 등재 — 마일스톤 append와 단일 편집 동시 정정 집행 - **M3 천장 기각안 복원(C32)**: 재추출 §7-2는 히어로 표준(소프트10/하드30) vs 열쇠형(4/40) 2지 제시 — PM 위임 시 10/30 단일화로 기각안 소멸 지적. **PM 1차 선택 = 히어로 표준 10/30**(drawtype 102 libid 실측 확정치)·**기각안 = 열쇠형 4/40**(GodDem 가챠 결과물=장비/옵션 성격상 재평가 여지·balance-designer 판단 교체 허용). balance-designer에게 후속 전달·설계 문서 비교 판단 명기 지시 - **감사관 자기 개정 상신**: pm-auditor 정의 "대화로그 3종 고정 태그" 체크 사문화(조직 전역 0건·P24→C32 흡수로 근거 소멸) — false positive 차단 위해 `.claude/agents/pm-auditor.md` 갱신 별건 안건 + +## 62. B3 가챠 설계 완료 — 열쇠형 천장 채택 + Grade3~6 신규 도입 (balance-designer, GodDem 수정 0건) + +- **PD 원문(2026-08-22, 재추출v1 인용)**: "기존 원작의 로직을 살펴보고 동일하게 맞춰. 인게임 내 뽑기는 일반 골드를 쓰며 특정 시점에만 유료 재화를 쓰는 구조야. 제대로 실측해서 구현해야 해." +- **선행 실측(C39)**: 재추출v1(가챠 SOT)·메타v1 §1-4·§5·B1/B2/B4/C 4종(골드 경제 앵커) 전문 Read + GodDem 코드 실측(`Constant.cs` GOLD_ID/GEM_ID·`SurvivalItemCatalog.cs`·`SurvivalShopCatalog.cs`·`SurvivalMeta.cs`·`SurvivalStatCatalog.cs`·`SurvivalUpgrade.cs`). +- **PM 보강 지시(중도 수령) 처리**: §61 M3가 남긴 "천장 기각안 소멸" 지적(pm-auditor 감사) — PM 1차 권고(히어로 표준 10/30)를 단일 채택안이 아니라 **3안(히어로 표준·열쇠형·장비형) 비교 후 balance-designer 재량으로 재확정**하도록 지시받음. 3안을 결과물 유형·결제구조·P30 재미근거 3축으로 비교한 결과 **열쇠형(소프트4·하드40) 채택, 히어로 표준·장비형 기각**(사유는 아래 기각안 참조) — PM 1차 권고와 다른 결론이므로 §13 PD 확인 대기 항목에 재확인 권고로 명시. +- **결정 요지**: + 1. 재화 = 골드(1차, 기존 GOLD_ID) + 젬(2차 대체, 기존 GEM_ID 재사용, 신규 재화 도입 없음) + 2. 천장 = 열쇠형(소프트4회·하드40회) — 원작 `dj_7011`(보물열쇠)이 "장비 뽑기 티켓"으로 명시 라벨링된 데이터 근거 + 3. 등급 = Grade3~6 신규 도입(기존 Grade1~2=상점 전용과 역할 분리, B2 §8 forging 사다리 q2→q6과 정합) + 4. 단가 = 400골드/20젬(원작 젬단가 20젬을 그대로 포팅 + GodDem 자체 골드/젬 상점 교환비 20:1로 교차 도출) + 5. 옵션 4종(hit/stun/retaliate/combo) 값 = 원작 B-템플릿 raw값(200/400/800/1600) 그대로, GodDem 기존 `BasisPoint` 컨버전 재사용(재계수화 불요) +- **실측 중 신규 발견(C39·C3, 은폐 없음)**: `hit_rate`·`stun_rate`·`retaliate_rate`·`combo_rate` 4종이 `SurvivalStatCatalog.cs` 정의부 외 코드베이스 전체에 소비처 0건 — B4가 발견한 `ele_*` 미소비 문제와 같은 계열이나, 이번은 상태이상·카운터·추가타 등 "전투에 아예 없는 신규 이벤트"라 잠정 배선할 기존 항조차 없음. 획득·저장까지만 본 설계로 완결, 전투 발동 로직 신설은 개발팀 후속 범위로 명시(설계 문서 §13-3·R-H1). +- **기각안(C32 필수 필드, 공란 금지)**: + 1. 천장 = 히어로 표준(10/30) 채택 — 기각. 사유: 이 스케줄의 원작 결과물은 히어로 조각(수집형)인데 GodDem은 히어로 1명 구조라 결과물 유형이 대응하지 않음. 단 이 계열이 원작에서 유일하게 풀 가중치가 전량 실측된 데이터라 가중치 "형태"(등급별 상대 비중)만 열쇠형 카덴스에 재정합해 부분 차용(🟡 표기). + 2. 천장 = 장비형(62/100) 채택 — 기각. 사유: 결제구조가 젬 단일(골드/티켓 경로 없음)이라 PD "일반은 골드" 지시의 이원결제 조건 자체를 충족 못 함. + 3. Grade1~2 기존 상점 아이템을 가챠 풀에도 포함(상점·가챠 완전 공유) — 기각. 사유: 메타v1 R-B5가 이미 지적한 "가챠·상점 중복 판매 시 상점 가치 희석" 리스크 재현. + 4. forging/reforging(B2 §8 골격)을 본 문서에서 완전히 활성화 — 기각. 사유: forging의 "재료" 자원이 미정의라 신규 자원 도입이라는 별도 결정이 선행돼야 함(C50 범위 통제 + C10 중복 작업 방지, B2가 이미 가격을 매긴 부분). + 5. 옵션 4종 값을 B4의 "한계단가 균일화" 방식처럼 GodDem 자체 재계수화 — 기각. 사유: 옵션은 4종 모두 동일 확률로 추첨되는 "가챠" 성격이라 B4식 "구매 선택 균일화"가 적용될 지배 전략 문제 자체가 없음 — 원작 raw값을 그대로 쓰는 편이 더 정직·단순(C44). +- **산출물**: `공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v1.md`(전체 17절 — 재화매핑·천장 3안 비교·등급체계·공식·풀확률표·CSV 3종 스키마·경제시뮬레이션·검증시나리오·밸런싱제안표·PD확인4건·리스크5건·기각안8건·변경이력·후속조치7건) +- **후속**: plan-auditor 모드A 검증(C35 의무 호출 대상, 부서 간 산출물 공유) → 개발팀장 구현(미커밋) → PM push = **원작 아키텍처 이식 5층 완성** → 전체 플레이테스트·PD 밸런싱 확인. PD 확인 대기 4건(젬 IAP 가격·천장 스케줄 재확인·옵션4종 전투로직 신설 여부·forging 활성화 여부)은 §13에 명시, PM 취합 후 PD 상신 필요. + +## 63. B3 가챠 설계 v1 — plan-auditor 차단·balance-designer 회송 (2026-08-22) + +- **plan-auditor 모드A 판정: 차단(회송)** — 구조·SOT 정합·기각안·천장 판단 교체(열쇠형 4/40, feedback 항목5 모범 준수)·R-H1 재현·경제 산술은 통과. 차단 = 수치·CSV·경제 주장 계층 5개 절(§4-4·§6-1·§8-2·§9·§10-3) +- **Critical 3**: C-1 미소비 스탯(옵션 4종) 유료 판매 = `ValidateUpgradeCoverage()` 가드레일 정면 위반 + "배선 불가" 과잉 일반화(실측: retaliate/combo/hit 3종은 B4 선례 잠정 배선 가능·stun만 신규 로직) / C-2 등급-파워 역전(PowerScore: G6 55.0 < G4 92.5 < G5 100.0 — 등급별 상이 앵커·배수로 비교 가능성 미확보) / C-3 "인플레이션 흡수 이중화" 자기 인증(실계산: 가챠 생애 흡수 ~36,000G = 1회성 수집 컨텐츠·한계 효용 0) +- **Major 7**: M-1 Pity CSV 2행 오기(GradeFloor 5→0) / M-2 EquipUpgrade id10~15 미커버(비용 0 무한 강화 루프·SecondaryStatKey 무효) / M-3 부위 배치(2종 즉시 사장·Hat/Boots 미커버) / M-4 젬 직결제 지배전략 소멸(gold_48000 32:1) / M-5 하드천장 라벨 리셋 규칙 모순 / M-6 원작 이탈 3건 PD 확인 미표기(Pool1 티어 3.8배 관대화 등) / M-7 상점 가격축 지배(R-B5) +- **감사 전문 전재**: `공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v1_감사결과.md`(Minor 5·Improvement 3·처리 우선순위 포함) +- **PM 회송 지시**: v2 신규(v1 병존·B2/C 선례)·전 항목 반영(이견은 반박 필드 명기)·재량 결정 3건(M-2 커버리지 택1/M-4 젬 라인 택1·상점 수정 필요 시 PD 확인 등재/C-3 주장 철회 기본·풀 확장은 C50상 제안만)·C-1 잠정 배선 3종+stun PD 확인 분리·C-2 PowerScore 단일 지표 재도출+M-3 부위 재배정·M-6 3건 §13 등재 + +## 64. B3 가챠 설계 v2 완료 — 감사 18항목 전 반영·재량 결정 3건 확정 (balance-designer, GodDem 수정 0건) + +- **선행**: 감사 전문(`_감사결과.md`) 전문 Read 완료. Critical 3건·Major 7건 핵심 수치(8.9%·22.8%·17.1회·3.8배 관대화·32:1 환율 등)를 전부 **독립 재계산으로 재확인** — 감사 판정과 이견 없음, 반박 필드 불요(v2 §0에 명시). +- **재량 결정 3건**: + 1. **M-2 Layer③ 커버리지 = 강화 제외 가드 채택**(EquipUpgrade 행 신설 기각). `CanUpgradeEquip()`에 `itemId<10` 조건 1개로 비용0 무한 루프 원천 차단. 신설안은 §8 전체 재시뮬레이션을 요구하는 대형 스코프이자 "가챠=완성형 패키지" 정체성과 상충해 기각. + 2. **M-4 젬 라인 = 할인율 차등(젬가 재도출) 채택**(직결제 삭제·상점 32:1 조정 기각). 젬가=골드가÷32(상점 최고효율 환율 그대로 채용)로 재도출 — 단차 20→13·10연 200→125·100연 1,800→1,125젬. 기존 상점 무변경이라 PD 확인 불요(PM 지시 조건 미해당). 직결제 삭제는 PD "특정 시점 유료" 지시 위반 소지로 기각, 상점 환율 조정은 범위 초과로 기각. + 3. **C-3 처리 = 흡수 창구 주장 철회 + 정직 재기재**(풀 확장 미집행, C50). "인플레이션 흡수 이중화"를 "완주선(75~90회≈30,000~36,000G) 뚜렷한 유한 수집형 컨텐츠"로 정정 — B1·B2·B4와 동일한 "유한 목표형" 유형이었다는 재평가. 풀 확장(컨텐츠 깊이)은 §17 후속 옵션으로만 제안. +- **C-1 재작성**: retaliate/combo/hit 3종 = B4 `MasteryAttackRatio()` 선례 그대로 `GachaAttackRatio()` 신설 배선(공격 비율 항 합산). stun_rate 1종만 상태이상 시스템 부재로 미배선·PD 확인 잔존(§13-3). +- **C-2 재도출**: PowerScore(Attack+Hp/4) 단일지표로 6종 전면 재설계, G3(45·55) §번호는 프로젝트 누적 연속 (2026-08-22.md §64에서 이어짐) + +## 65. B3 v2 재검증 차단 — 신규 Critical 2건 PD 결정 영역 상신 (2026-08-23) + +- **plan-auditor v2 재검증: 차단(회송)·구현 인계 부적격** — v1 지적 18항목은 실질 반영(가짜 반영·산술 오류 0건·C-1 배선 코드 실측 동작 확인·회귀 훼손 없음). 차단 = **수정이 낳은 신규 결함**: 전부 "고친 축이 다른 층과 만나는 지점 미재검증" 패턴 +- **N-1 【PD 결정】**: 옵션 4종 원작 raw값(슬롯당 2/4/8/16%) 이식 시 가챠 승산항 **+1.08** vs 기존 예산 0.64(승급 0.22+마스터리 0.42) = 1.7배·골드 효율 36.6배(36,000G vs 780,098G). 임의 재계수화는 feedback_pd_directive_altered_to_rescale 금지 영역 → PD 택일(원작 유지/재계수화) +- **N-3 【PD 결정】**: 신규 계정 시작 젬 300(PlayerManager 실측)÷젬가 13 = 23뽑기 → **골드 1G 벌기 전 P(Grade5+)=73.9%**(v1 20젬 기준으로도 55.4% — v1 감사 누락 정직 고지·M-4 인하가 악화). Grade6 Ring 205PS는 타 경로 도달 불가·B1/B2/B4 출발점 붕괴 → PD 택일(접근 게이트/젬가 하한/시작 젬 조정) +- **designer 재량 5건**: N-2 슬롯 단위 역전(Hat: 가챠 id10 45.0 < 강화 id6 50.25·Charm 박빙 1.08배 — 슬롯별 베이스라인 대비 재설정) / N-4 젬 단가 이탈(20→13) §13 미등재 / N-5 B2 대조(1,718.8 vs 60.5 G/pt = 28.4배) / N-6 강화 UI 실측 불일치(Lv0에 "MAX" 거짓 표시·SecondaryStatKey 영구 0 잔존·매직넘버) / N-7·N-8(표 열·v1 대체 배너) +- **감사 전문 전재**: `공유/기획/GodDem/2026-08-22_P3B3_가챠_설계_v2_감사결과.md` +- **PM 조치**: ①balance-designer v3 착수(재량 5건 + §13에 N-1·N-3·N-4 등재 + N-1 재계수화 제안치 사전 산출 — PD 택일 즉시 확정 가능하게) ②PD 상신 2건(AskUserQuestion) — PM 권고: N-1 재계수화((A) 형태 이식 방침 정합 — 절대치 재산정 승인 선례·B1/B2/B4/C 일관)·N-3 접근 게이트(원작도 heroconst hero_sys_unlock_level=3 시스템 언락 게이트 실측 존재·기존 경제 무변경·유일하게 v1 55.4% 문제까지 근본 해소) ③v1·v2·감사 2종 커밋·push