‹ 게임

레벨 디자인 — Chapter I 수치표

내부 기획

레벨 디자인 — Chapter I 수치표

상태: 솔로 오클러 autoPlayRun N=200 측정으로 튜닝된 1차 수치.
문헌 근거는 LEVEL_DESIGN_RESEARCH.md.
종수 KPI 없음 — 페이싱·생존율이 우선.
페이싱을 바꾸면 측정 열을 다시 찍고 목표와 맞출 것.

1. 설계 전제

항목
첫 시련 파티 오클러 솔로 (허브 기사 영입은 시련 종료 후)
측정 봇 autoPlayRun — 싸게 사고 → 배치 → 전투
층간 회복 postBattleHealRatio = 35% hpMax
적 스케일 floor^0.65 × 티어 × 아키타입 × soloSoftMult × (보스 배수)

2. 목표 생존율 (솔로 봇)

SOLO_SIM_TARGETS (packages/shared/data/growthCurve.ts)

지표 목표 측정 (N=200)
≥ F3 85% ~88%
≥ F4 75% ~87%
≥ F5 65% ~77%
≥ F6 (F5 보스 클리어) 40% ~52%
≥ F10 4% ~4–5%
victory 2% ~4%

사람 플레이어는 상점·배치를 더 잘하므로 클리어율은 봇보다 높게 기대한다.
사람 디자인 목표(~55% F10 클리어)는 텔레메트리/수동 플레이로 별도 검증 — 나이브 봇 CI 하한과 분리.

2b. 듀오 봇 목표 (DUO_SIM_TARGETS)

오클러+기사 2인 (duoBenchmarkSquad), 첫 시련 이후 편성 가정.

지표 목표 측정 (N=120)
≥ F6 38% ~37–40%
≥ F10 12% ~10–12%
victory 5% ~4–5%

3. 층별 스폰 가중 (monsterSpawnWeight)

동일 층 밴드에 여러 종이 있을 때 역할별 가중으로 뽑는다 (pickMonsterFromPool).

구간 의도
F1–3 ash_mite ↑ — 솔로 튜토리얼 위협
F4–5 spark_rat·ember_hound ↑ — 중반 압박
F6–7 엘리트 가중 ↓, gale_bat·cliff_golem ↑ — 게일 전환
F8–9 wind_razor·엘리트 ↑ — 후반 밀도

균등 랜덤(rng.pick)은 사용하지 않는다.

4. 층별 페이싱 (CHAPTER_I_PACING)

로컬 태그 maxGroup soloSoftMult 역할
1 intro 1 0.42 튜토리얼 위협
2 intro 1 0.50
3 intro 1 0.58 솔로 밴드 끝
4 pressure 2 0.68 그룹 도입
5 boss 1 0.48 Magma — 솔로 클리어 가능 스파이크
6 pressure 2 0.55 엘리트 구간
7 pressure 2 0.58
8 pressure 2 0.55
9 pressure 2 0.55
10 boss 1 0.28 Gale Stalker — Ch1 하드 스파이크 (Warden은 Ch2)

보스 배수 (bossMultiplier): F≤5 → 1.35, F≤10 → 1.30, 이후 2.2 / 2.8.

5. 대표 적 위협 (시드 샘플)

로컬 적 HP 적 ATK 비고
1 ~13 ~2 trash 1체
5 ~127 ~12 Magma 보스
6 ~80 ~13 엘리트/그룹
10 ~150 ~13 Gale Stalker (soft 0.28)

플레이어 기준선: 오클러 HP 100 / DEF 2 / 단검 ATK 3 (+상점 성장).

6. 오클 밴드 (솔로 봇 측정 반영)

OCHL_BANDS — 초반은 활성화·구매로 낮아지고, 중반 spill로 회복.

글로벌 층 ochlMin–Max
1 10–14
2–4 4–12
5 8–18
6–9 14–30
10 18–45

7. 시뮬 수정 (LD와 함께 한 것)

  • 봇이 전투 전에 구매하도록 순서 수정 (이전엔 스타터만 들고 돌진)
  • 층간 회복 10% → 35% (솔로 어트리션 사망 방지)
  • 활성화 불가 시 silent stall → 봇은 defeat로 종료 (플레이어는 상점 soft-lock; 오클 0 ≠ 패배)

9. 검증

pnpm --filter @chaosforge/shared test
# Admin → Growth 탭: 적 vs 시뮬 플레이어 + reach rate
node --import tsx scripts/measure-chapters.mjs --n=60 --from=1 --to=30

9. 아직 아닌 것

  • 사람 플레이 55% F10 클리어 검증
  • 기사 영입 후 2차 시련 곡선
  • Ch2/3 층별 스폰 가중 튜닝 — 1차 반영 · Ch2/3 soloSoftMult 페이싱 추가 · F10/victory 밴드는 추가 튜닝 필요
  • 영입 가격 플레이테스트 튜닝 (RECRUIT_PRICES_DRAFT.md 검수 OK)

완료 (2026-07): 몬스터 100종 DT 초안 → rembg → sprites/monsters/ + sprite-map.json · 6바이옴 배경 · Ch1 층별 스폰 가중.

2c. Ch2/3 솔로 봇 기준선 (1차 측정, N=120)

동일 CHAPTER_I_PACING·솔로 오클러 봇 — 챕터별 몬스터 풀·글로벌 스케일만 다름.

챕터 ≥ F5 ≥ F10 victory
I ~71% ~10% ~5%
II ~63% ~2% ~0%
III ~38% ~0% ~0%

CHAPTER_II/III_PACING + 글로벌 보스 배수 곡선 조정 후 (2026-07). 측정: node --import tsx scripts/measure-chapters.mjs

2d. Ch1–30 챕터별 벤치 스쿼드 기준선 (BALANCE 2.7)

autoPlayRun 나이브 봇 + 챕터별 벤치 스쿼드 (--squad=auto 기본). Ch4+ late는 Lv24 commander. 인간 숙련 목표(§4.2)와 별도.

챕터 squad ≥ F5 ≥ F10 victory
I solo 70% 0% 0%
III duo 25% 2.5% 0%
V late 100% 97.5% 92.5%
X late 60% 15% 5%
XV late 100% 100% 92.5%
XX late 100% 75% 50%
XXV late 100% 70% 20%
XXX late 100% 55% 25%

(N=40 measure-chapters.mjs --squad=auto. 봇 하한 전부 PASS.)

봇 하한 (measure-chapters.mjs): Ch1 solo F5≥50% · Ch3≥10% · Ch5≥5% · Ch10≥5% · Ch11≥1% · Ch15≥1% · Ch20≥1% · Ch30≥1%.

arc soft (BALANCE 2.7): Ch4–10 0.45 · Ch11–14 0.30 · Ch15–17 0.14 · Ch18–20 0.09 · Ch21–25 0.08 · Ch26–30 0.05; CHAPTER_IV_PACING F5 0.12 · F10 0.08.

측정 (벤치 스쿼드): node --import tsx scripts/measure-chapters.mjs --n=60 --squad=auto --chapters=1,3,5,10,11,15,20,25,30

로드아웃 매트릭스 (fight_only 고정 키트, N=60, BALANCE 2.7)

정본 검증: 상점 나이브 봇이 아니라 배낭 스펙으로 챕터 곡선 판정.

loadout Ch1 Ch5 Ch10 Ch15 Ch20 Ch25 Ch30
bare F5 / F10 / win 100/0/0 100/0/0 5/0/0 100/0/0 48/0/0 48/0/0 68/0/0
mid F5 / F10 / win 100/100/100 100/100/100 58/0/0 100/100/100 100/0/0 100/7/0 100/7/0
late F5 / F10 / win 100/100/100 100/100/100 100/100/97 100/100/100 100/100/100 100/100/100 100/100/100
apex F5 / F10 / win 100/100/100 100/100/100 100/100/100 100/100/100 100/100/100 100/100/100 100/100/100

matched(human 참고): mid@Ch5 · late@Ch15–20 · apex@Ch25–30 F10 PASS. mid@Ch8–10 F10=0%는 스펙 한계(soft로 mid 클리어까지 맞추지 않음). bare@Ch1 F10 GAP는 스타터 내구도 마모.

노트: late/apex 고정 킷이 Ch30까지 win≈100% — fight_only·내구도999·오클 탑업 조건. 상점 성장 없는 “갖춰진 편성” 상한. 난이도 사다리는 bare→mid 구간과 나이브 봇 victory 곡선(Ch10 5% → Ch30 25%)에 남음.

로드아웃 측정: node --import tsx scripts/measure-loadouts.mjs --n=60 --chapters=1,5,10,15,20,25,30 --loadouts=bare,mid,late,apex