‹ 게임

몬스터 로스터 (211종 · Ch.I–X)

내부 기획

몬스터 로스터 (211종 · Ch.I–X)

설정: DESIGN.md — 자연 마수 약 100여 종(초기) → Ch.I–X EA 211종
바이옴·층: PROGRESSION_DESIGN.md §3.6
Ch1 LD: MONSTER_CONCEPTS_CH1.md · LEVEL_DESIGN.md

데이터 소스

파일 역할
packages/shared/data/monster-roster.json 마스터 로스터 (211종, Ch.I–X)
packages/shared/data/monsters.ts 런타임 템플릿·스탯 배율
scripts/assets/monster-manifest.json Draw Things 프롬프트·시드
scripts/assets/seed-monster-roster.mjs 로스터·매니페스트 재생성

재생성: node scripts/assets/seed-monster-roster.mjs

바이옴 × 챕터 (6종 배경)

챕터 로컬 층 바이옴 ID 주속성 종수(대략)
I 1–5 ember_caverns fire ~15 + F5 보스
I 6–10 gale_cliffs wind ~15 + F10 보스
II 1–5 moss_depths earth ~17 + F5 보스
II 6–10 tide_hollows water ~17 + F10 보스
III 1–5 rift_gallery void ~17 + F5 보스
III 6–10 summit_peak 혼합 ~17 + F10 보스

전투 배경: packages/client/src/features/battle/battleBiome.ts
배경 생성: node scripts/assets/generate-drawthings-assets.mjs --execute --only backgrounds

아키타입·티어

  • trash — 일반 몹 (아키타입: bruiser / skirmisher / caster / tank)
  • elite — 층 후반 가중; 시드 데이터는 archetype: elite → 런타임에서 역할 추론
  • boss — 로컬 F5·F10 고정 (챕터별 2~3종)

특수 스킬 (elite·boss)

스킬 ID 효과 (시뮬 최소)
none
frenzy ATK ×1.2
gale_cut 공격 간격 −3
fortify DEF ×1.25, HP ×1.1
magma_slam frenzy + 타격 데미지 보너스
moss_regen 틱당 HP 0.5% 회복
tide_slow 타격 시 chill 부여
void_leech 가한 피해 25% 흡혈
burn_aura frenzy급 ATK + burn 부여
static_shock 35% expose
petrify DEF ×1.15 + 20% root

아트 파이프라인

  1. DT 초안: node scripts/assets/generate-monsters.mjs --execute (기존 스킵)
  2. rembg·트림: .venv-assets/bin/python scripts/assets/process-monsters.py --from-manifest
  3. 스프라이트 승격: 수동 검수 후 packages/client/public/assets/sprites/monsters/

artStatus

  • spritesprites/monsters/{id}.png + sprite-map.json 등록 (현재 Ch.I–III ~100종; Ch.IV–X는 draft)
  • draft — DT 초안만 (reference/drawthings/monsters/{id}_draft.png)

아트 배치 명령 (참고)

node scripts/assets/generate-monsters.mjs --execute
.venv-assets/bin/python scripts/assets/process-monsters.py --from-manifest
node scripts/assets/generate-drawthings-assets.mjs --execute --only backgrounds
python3 scripts/assets/promote-backgrounds.py

운영 메모

  • 종수 자체는 KPI 아님 — 페이싱·가중 스폰이 우선 (encounters.ts)
  • Ch2/3 풀은 로스터·도감·어드민에 노출; 런 챕터별 스폰은 monstersForLocalFloor(chapter) 사용
  • i18n: translateMonsterName이 미등록 id는 snake_case → Title Case 폴백