2026-04-20 13:16:17 +00:00
---
type: 테이블 데이터 구조 재정비 (수상한잡화점)
작성일: 2026-04-20
작성자: 기획팀장 (PM 경유 PD 재발 방지 지시 #42 수용)
관련PD지시: 기획팀 #42 · PD 2026-04-20 "게임 내 테이블 데이터 구조 재확인 + 누락 정보 보완"
상태: **v1 초안 · PD 검증 선행**
2026-04-20 15:44:48 +00:00
근거: Unity Export 실측 (D:/BurningTimes/FilGoodBandits/DeckBuilding/Assets/ResWork/Table/Export/)
2026-04-20 13:16:17 +00:00
---
# 수상한잡화점 — 테이블 데이터 구조 재정비 v1
## §0. 본 문서의 목적
2026-04-20 PD 재발 방지 지시 5종 중 #42 "게임 내 테이블 데이터 구조 재확인 + 누락 정보 보완" 이행. **기존 기획팀이 "WorldMap 4개 그룹" 같이 추측·전제로 데이터 구조를 오해한 사건**을 계기로 Unity Export CSV/JSON 전수 실측 기반 구조 재정비.
**본 문서는 재발 방지 + 추후 모든 기획 작업의 1차 데이터 참조 SOT**다.
---
## §1. PD 용어 정의 확정 (SOT)
| 용어 | 정의 | 데이터 출처 | 총 개수 |
|------|------|------------|---------|
| **월드맵** | 게임 세계 전체 맵 | `WorldMapConfig` | 1개 |
| **구역 / 지역** | 월드맵 내 각 지역 (= Stage) | `WorldMapConfig.n_StageID` 1~21 | **21개** |
| **스테이지** | 지역 내 각 맵 (= MapConfig) | `CreateMapConfig.s_MapConfigID` | **122개** |
| **서브맵** | 스테이지 내 노드 (전투·이벤트·이동 등) | 런타임 생성 (RandomPatternConfig 기반) | 스테이지마다 가변 |
### §1-1. 용어 혼선 주의
- **구 기획팀 용어 "WorldMap"** = 실제로는 **일부 스테이지 묶음의 배경 테마**에 불과 (`WorldMapConfig.s_StageBg` = map_01~map_10 재활용)
- **"WM1~WM4 그룹"은 실측 무근 · 기획팀 추정이었음** — 본 v1 문서 이후 사용 금지
- **PD 지시 용어 엄수**: 월드맵·구역/지역·스테이지 3층 명칭만 사용
---
## §2. WorldMapConfig 구조
### §2-1. 필드 정의 (실측)
| 필드 | 타입 | 의미 |
|------|------|------|
| `n_StageID` | int (1~21) | 월드맵 장소(=지역) 고유 ID |
| `n_StageName` | 참조 (localization) | UI 표기용 명칭 |
| `s_StageDiorama` | string (공란) | 월드맵 배치 디오라마 이미지 |
| `s_StageBg` | string | UI 사용 BG 이미지 (map_01~map_10 재활용) |
| `s_StageBGM` | string (공란) | 스테이지 BGM |
| `n_ExtraRandombag` | int | 이벤트 추가 전리품 랜덤백 ID |
### §2-2. 실측 내용
21개 지역. Stage 1~21. 배경 이미지(`s_StageBg`)는 map_01~map_10이 반복 사용됨.
### §2-3. 기획 의도 재확인
- **각 지역은 독립적 세계관 공간** (지역 1 = 첫 입문 지역, 지역 21 = 최종 지역)
- 지역별 배경 테마는 10종 순환 사용 (디자인 리소스 최적화)
- 기획 시 ** "WorldMap 4개 그룹"은 실존하지 않음** — 21개 지역을 난이도 곡선 상 **입문/초반/중반/후반**으로 나누는 **기획적 구분**은 가능하나, 이는 **데이터 구조가 아닌 기획 레이블**
---
## §3. CreateMapConfig 구조
### §3-1. 필드 정의 (실측 41개 필드)
#### 식별자 + 매핑
| 필드 | 의미 |
|------|------|
| `s_MapConfigID` | 맵 고유 ID (형식: `Stage{지역번호}_{순번}` , 예: `Stage1_1` ·`Stage1_4`) |
| `n_StageType` | 지역 번호 (1~21), WorldMapConfig.n_StageID 참조 |
| `n_AppearMonsterGroup` | 일반 몬스터 그룹 ID → `ApprearMonsterPattern.n_AppearMonserGroup` 참조 |
| `n_AppearBossGroup` | 보스 몬스터 ID (0 = 보스 없음) → `MonsterList.n_ID` 참조 |
#### 노드 확률 체계 (10종 노드 타입)
각 노드 타입은 **4필드 세트** (확률·최소·최대·Data Border):
| 노드 타입 | 확률 필드 | 의미 |
|----------|----------|------|
| 몬스터 | `f_Monster` / `n_MobNodeMin` / `n_MobNodeMax` | 전투 노드 |
| 버프/디버프 | `f_BuffDebuff` / `n_BuffDebuffMin` / `n_BuffDebuffMax` | 효과 노드 |
| 캠프 | `f_CampFire` / `n_CampMin` / `n_CampMax` | 휴식·회복 |
| 암상인 | `f_Merchant` / `n_MerchantMin` / `n_MerchantMax` | 상점 |
| 보물 | `f_Treasure` / `n_TreasureMin` / `n_TreasureMax` | 보상 |
| NPC | `f_NPC` / `n_NPCMin` / `n_NPCMax` | 이벤트 |
| 성소 | `f_Mine` / `n_MineMin` / `n_MineMax` | 특수 장소 |
| 갈림길 | `f_TwoWay` / `n_TwoWayMin` / `n_TwoWayMax` | 경로 선택 |
| Nothing | `f_Nothing` / `n_NothingMin` / `n_NothingMax` | 빈 공간 |
| Random | `f_Random` / `n_RandomMin` / `n_RandomMax` | 랜덤 롤 |
### §3-2. 실측 현황 — 지역별 하위 스테이지 수
| 지역 | 하위 스테이지 수 | | 지역 | 하위 | | 지역 | 하위 |
|------|-----|---|------|-----|---|------|-----|
| 1 | **4** | | 8 | 5 | | 15 | 5 |
| 2 | 6 | | 9 | 6 | | 16 | 3 |
| 3 | 5 | | 10 | 5 | | 17 | 8 |
| 4 | 7 | | 11 | 5 | | 18 | 8 |
| 5 | 6 | | 12 | 7 | | 19 | 9 |
| 6 | 7 | | 13 | 4 | | 20 | 9 |
| 7 | 4 | | 14 | 5 | | 21 | 4 |
**총 122 스테이지**. PD 2026-04-20 실측과 완전 일치.
### §3-3. 기획 의도 재확인
- **현재 수치는 임시 데이터** — 모든 스테이지에 동일 확률(80 몬스터 / 16.2 캠프 등) 입력
- **기획팀의 역할**: 스테이지별 노드 확률·최소/최대 개수 **차별화 설계**
- **PD 고려사항 5종 (재확인)**:
1. **몬스터 특성** : MonsterList.n_Specificity1~4 활용
2. **고정+랜덤** : 스테이지마다 고정 몬스터 + 매 판 랜덤 조합
3. **3★ 조건** : 12개 조건 풀 순환 배치 (P17 배타 7종 준수)
4. **반복 방지** : 지역 내 스테이지 간 + 지역 간 다양성
5. **지역 순차** : 지역 1 완성 → PD 승인 → 지역 2 착수
### §3-4. 누락 정보 (추후 확인 필요)
- `n_AppearBossGroup` 형식 불일치: `CreateMapConfig` 에서 `10001` ·`10002` 등 **MonsterList.n_ID 직접 참조**로 보임. 하지만 이름이 `n_AppearBossGroup`(그룹 ID)이라 의미 혼동 — **개발팀 확인 필요**
---
## §4. ApprearMonsterPattern 구조
### §4-1. 필드 정의
| 필드 | 의미 |
|------|------|
| `n_AppearMonserGroup` | 몬스터 그룹 고유 ID (CreateMapConfig.n_AppearMonsterGroup 참조) |
| `n_MonsterID` | 해당 그룹에 소속된 몬스터 ID (MonsterList.n_ID 참조) |
| `n_AppearRate` | 등장 확률 (100 = 무조건 등장 후보) |
### §4-2. 실측 예시 (Stage1_1)
- `n_AppearMonsterGroup = 10101`
- 소속 몬스터: `14001` ·`14002`·`14013` (Pattern 소속 3종)
### §4-3. 기획 의도
- **그룹 ID 체계**: `{지역번호}0{순번}` (예: 10101 = 지역 1 · 스테이지 1번 · 그룹 1)
- Stage 1 = 10101~10104 (4개 하위 스테이지)
- Stage 2 = 10201~10206 (6개)
- ... Stage 21 = 82101~82104 (4개)
- 각 그룹에 **3~5종 몬스터**가 등장 후보로 등록
- 런타임에 해당 그룹에서 무작위 선택 (PD 고려사항 2 "랜덤" 대응)
---
## §5. MonsterList 구조
### §5-1. 필드 정의 (실측 24개 필드)
#### 식별·표기
| 필드 | 의미 |
|------|------|
| `n_ID` | 몬스터 고유 ID (보스 10001~10028 · 일반 11001~14024 등) |
| `n_Name` | 로컬라이제이션 참조 ID |
| `e_MonsterType` | Boss_Range · Boss_Melee · Normal_Range · Normal_Melee 등 |
| `s_Image` / `s_Icon` | 리소스 경로 |
#### 전투 능력치 (기획팀 1차 참조)
| 필드 | 의미 |
|------|------|
| `n_RewardExp` | 처치 경험치 |
| `n_HP` | 체력 |
| `n_Shield` | 보호막 (0 = 쉴드 없음) |
| `f_AttackCoolTime` | 공격 쿨타임 (초) |
| `n_AttackMin` / `n_AttackMax` | 공격력 범위 |
| `n_HitRate` | 명중력 (정수) |
| `f_Cri` / `f_CriDmg` | 치명타 확률·피해량 |
| `n_Avoid_Meele` / `n_Avoid_Range` | 근·원 회피력 |
| `f_Scale` | 몬스터 크기 배율 |
| `e_AttackType` | Melee / Range |
| `s_Projectile` | 원거리 투사체 경로 |
#### 몬스터 특성 (PD 고려사항 1 대응 — 핵심 기획 축)
| 필드 | 의미 |
|------|------|
| `n_Specificity1~4` | 특성 ID (StatusConditionsList 참조 추정) |
예시:
- **오우거1 (10004)**: Specificity1=31004 · Specificity2=32004 → "체력 2배, 최대 공격력 2배"
- **다크엘프 아처1 (10010)**: Specificity1=31010 · Specificity2=32010 → "광포화-신속 / 치명타 15%"
### §5-2. 참고 필드 (CSV 헤더 31번째 이후)
- `Lv` ·`DPS`·`몬스터 특성` — 기획 참고용 원본 수치
### §5-3. 기획 의도 재확인
- **몬스터 특성**이 PD 고려사항 1의 핵심 — 스테이지별 몬스터 선정 시 특성 조합 기반
- 특성 ID 체계(`31XXX`·`32XXX`)는 `MonsterPatternList.json` 또는 `StatusConditionsList.csv` 와 교차 참조 필요
- **누락 정보**: Specificity ID → 효과명 매핑 테이블이 어디에 있는지 확정 필요 (개발팀 확인)
---
## §6. 기타 관련 테이블 (요약)
### §6-1. RandomPatternConfig
- 스테이지 내 **랜덤 노드 롤 규칙** (몬스터/버프/상인/보물/NPC/성소/갈림길 비중)
- 4가지 프리셋: 기본·많은 상인·많은 상자·많은 몬스터
- CreateMapConfig.f_Random이 이 테이블을 참조하여 런타임 확장
### §6-2. StatusConditionsList
- 상태 효과 정의 (Slow·Burn·Poison·Stun·Freezing·Blind·Heal_Hp_Add·Heal_Shield_Add 등)
- 이펙트 경로 + 표시 위치
- 몬스터 특성·카드 효과에서 참조 가능
### §6-3. CardList
- 카드 스탯 (공격력·쿨·효과)
- Phase 3 `이슈1_3_무시확정_v1.md §3` 에서 고정 전제 확정
### §6-4. GlobalValue
- 게임 전역 상수 (밸런스 조정 기준치 다수)
### §6-5. 추후 전수 조사 필요
- `AchievementsMission` ·`BuffPatternConfig`·`BattleLevelUp`·`ContentsOpenCondition` 등 — 현 Phase 4 범위 외 보류
---
## §7. 기존 산출물 오염 범위 (재정비 대상)
### §7-1. 중대 오염 (전면 재작성 필요)
| 문서 | 오염 내용 | 재정비 방식 |
|------|----------|------------|
| `Phase4_지역1_노드구성_v1.md` | 지역 1 = Stage 1~6 (6개) 가정으로 전체 설계 | **전면 폐기 · v2 재작성** (지역 1 = Stage1_1~1_4 = 4개) |
| `스테이지난이도곡선_v1.md §1` | "WorldMap_1~4 4개 그룹" 가정 | §1만 삭제·재작성 · §2~이후 실측 수치(서브맵수·보스)는 정확하므로 **유지** |
| `맵패턴_사전분석_v1.md` (의심) | "42 슬롯" 체계 가정 (추정 = 21 스테이지 × 2 슬롯) | **재검증 필요** — 121 스테이지 기준으로 재산출 가능성 |
| `재검증보고_맵패턴_v1.md` (Day 11~14) | 상위 가정 오류로 부분 오염 | **설계 원칙 추출만 승격 · 수치 재검증** |
### §7-2. 경미 오염 (원칙 승격 + 언급 수정)
| 문서 | 오염 내용 | 재정비 방식 |
|------|----------|------------|
| `Phase3_종결_설계체계_v1.md` | WorldMap 4그룹 가정 잔존 가능성 | 본 v1 문서 참조 추가 + 해당 표현 교체 |
| `Phase4_노드구성_착수가이드_v1.md` | "청크 1 = Stage 1~6" 가정 | **재정비** — 청크 = 지역 1개씩으로 재정의 (Stage1_1~1_4 = 지역 1 청크) |
| `이슈1_3_무시확정_v1.md §3` | 오염 없음 예상 (카드 수치 영역) | 교차 점검만 수행 |
### §7-3. 오염 없음 (유지)
- `3성조건_12개_상세명세_v1.md` — 조건 풀 자체는 WorldMap 구조 무관
- `SKILL.md P17 배타 7종` — 배타 조합 자체는 WorldMap 구조 무관
- `밸런싱전략_v1.md` ·`밸런싱문서_일관성점검_v1.md`·`전체테이블감사_v1.md` — 데이터 테이블 실측 기반이라 오염 없음
---
## §8. 재정비 우선순위
### §8-1. 즉시 (본 라운드)
1. **본 v1 문서 작성** (SOT 확립)
2. **기획팀 데이터 실측 의무 룰 (#43) 작성**
3. **Phase4_지역1_노드구성_v2.md 재작성** (4개 스테이지 기준)
4. **기존 v1 상단에 "아카이브됨" 배너 추가**
### §8-2. 후속 (별도 PD 지시 수령 시)
5. `스테이지난이도곡선_v1.md §1` 정정
6. `Phase4_노드구성_착수가이드_v1.md` 재정비
7. `맵패턴_사전분석_v1.md` ·`재검증보고_맵패턴_v1.md` 재검증
8. `Phase3_종결_설계체계_v1.md` 표현 수정
---
## §9. 기각안
### §9-1. 기각안 A: 기존 v1 수치 살리기 (Stage 1~6을 지역 1로 유지)
- **기각 사유**: PD 2026-04-20 "PD가 구성한 지역별 스테이지 수량 임의 수정 금지" 직접 지시 위반
- **손실**: v1 초안 전량 재작성 필요
- **이득**: 재작성 없음 (기각)
### §9-2. 기각안 B: "WorldMap 4그룹"을 기획 레이블로 명시하고 병행 사용
- **기각 사유**: 용어 혼선의 근본 원인. 병행 사용 시 신규 기획자 재혼동 유발 (C22 용어 일관)
- **대체안**: "입문/초반/중반/후반 구간"은 **기획 레이블로만 별도 명시** (데이터 구조가 아닌 밸런싱 분류)
### §9-3. 기각안 C: 누락 정보(Specificity ID 매핑 등)를 기획팀 자체 추정으로 보완
- **기각 사유**: C23 허위 보고·추정 사실화 금지. 본 재발 방지 지시 #42의 교훈 정면 위반
- **대체안**: 개발팀 확인 요청 (소통 채널 발행 또는 PM 조율)
---
## §10. 참고 문서
2026-04-20 15:44:48 +00:00
- Unity Export 경로: `D:/BurningTimes/FilGoodBandits/DeckBuilding/Assets/ResWork/Table/Export/`
2026-04-20 13:16:17 +00:00
- 실측 CSV 11종 (본 문서 기반): WorldMapConfig · CreateMapConfig · ApprearMonsterPattern · MonsterList · StatusConditionsList · RandomPatternConfig · CardList · PCList · PCAwakening · PCEvolution · PCEvolutionMax · GlobalValue · ItemList · BuffPatternConfig · RewardRandomBag · SanctuaryConfig · StatusOptionSet
- 전수 감사: `프로젝트/수상한잡화점/기획/전체테이블감사_v1.md`
- 3성 조건 SOT: `프로젝트/수상한잡화점/기획/3성조건_12개_상세명세_v1.md`
- 배타 규칙: SKILL.md P17
- 기획팀 룰: `프로젝트/수상한잡화점/기획/기획팀_데이터_실측_의무_v1.md` (#43 산출물)
---
## §11. 변경 이력 (P16 산출물 추적성)
| 일시 | 변경자 | 변경 필드 | 이전값 → 이후값 | 재미 근거 | 관련 PD 지시# |
|------|--------|----------|----------------|----------|--------------|
| 2026-04-20 | 기획팀장 | 전체 신설 | (없음) → v1 초안 | 재발 방지 + 정확한 데이터 구조가 기획 의도 실현의 전제 | #42 |