# 월드 시스템: 던전/지역/상점 > 메인 문서: [game-system-overhaul-index.md](game-system-overhaul-index.md) --- ## 1. 던전/지역 시스템 ### 1.1 월드 구조 ``` ┌─ 코드 왕국 (세계) ─────────────────────────────────────┐ │ │ │ Act I: 버그 평원 │ │ ├─ 시작 마을 (안전 지역) │ │ ├─ 버그 초원 (Lv.1-5) │ │ ├─ 에러 숲 (Lv.6-10) │ │ ├─ 버그 둥지 [던전] (Lv.8-12) │ │ └─ 문법 오류의 탑 [보스] (Lv.15) │ │ │ │ Act II: 손상된 네트워크 │ │ ├─ 디버거 요새 (안전 지역) │ │ ├─ 손상된 회로 (Lv.16-25) │ │ ├─ 메모리 늪 (Lv.21-30) │ │ ├─ 누수 동굴 [던전] (Lv.25-35) │ │ └─ 히드라의 서버실 [보스] (Lv.40) │ │ │ │ Act III: 널 왕국 │ │ ├─ 바이너리 신전 (안전 지역) │ │ ├─ 널 사막 (Lv.41-50) │ │ ├─ 포인터 미궁 (Lv.46-55) │ │ ├─ 버퍼의 심연 [던전] (Lv.50-60) │ │ └─ 타이탄의 성채 [보스] (Lv.60) │ │ │ │ Act IV: 글리치 영역 │ │ ├─ 저항군 기지 (안전 지역) │ │ ├─ 커널 황무지 (Lv.61-70) │ │ ├─ 패닉 협곡 (Lv.66-80) │ │ ├─ 시스템 감옥 [던전] (Lv.70-85) │ │ └─ 아콘의 왕좌 [보스] (Lv.80) │ │ │ │ Act V: 최종 결전 │ │ ├─ 최후의 캐시 (안전 지역) │ │ ├─ 글리치 회랑 (Lv.81-90) │ │ ├─ 차원의 틈 (Lv.86-95) │ │ ├─ 신의 코어 [던전] (Lv.90-100) │ │ └─ 글리치 신의 영역 [최종 보스] (Lv.100) │ │ │ └─────────────────────────────────────────────────────────┘ ``` ### 1.2 지역 타입 | 타입 | 설명 | 특징 | |------|------|------| | **안전 지역** | 마을, 요새 | 전투 없음, 상점, NPC, 회복 | | **필드** | 일반 사냥터 | 일반 몬스터, 퀘스트 | | **던전** | 인스턴스 지역 | 강화 몬스터, 미니보스, 보상 증가 | | **보스 지역** | Act 보스 | 보스 몬스터, 스토리 진행 | ### 1.3 지역 이동 (Idle 방식) ```dart class AreaProgress { final String currentAreaId; final double explorationProgress; // 0.0 ~ 1.0 final bool isBossUnlocked; /// 탐험 진행 (자동) void progressExploration(Duration elapsed) { // 시간 경과에 따라 탐험도 증가 // 탐험도 100% 달성 시 다음 지역/보스 해금 } } ``` ### 1.4 던전 시스템 | 요소 | 설명 | |------|------| | **입장 조건** | 최소 레벨, 이전 던전 클리어 | | **층 구조** | 3-5층, 층별 강화 몬스터 | | **보스 층** | 마지막 층에 미니보스 | | **보상** | 일반 필드 대비 2-3배 | | **재입장** | 클리어 후 24시간 대기 (일일 1회) | ### 1.5 지역 UI ``` ┌─ 현재 위치 ─────────────────────────┐ │ │ │ 📍 Act II: 손상된 회로 │ │ Lv.16-25 │ │ │ │ 탐험 진행도: ████████░░ 78% │ │ 다음 지역까지: 22% │ │ │ │ ─────────────────────────────────── │ │ │ │ 🏰 디버거 요새 [방문하기] │ │ 🌲 손상된 회로 [현재] │ │ 🌊 메모리 늪 [해금 필요: 탐험 100%] │ │ 🏔 누수 동굴 [해금 필요: Lv.25] │ │ 👹 히드라 서버실 [해금 필요] │ │ │ └─────────────────────────────────────┘ ``` --- ## 2. 상점 시스템 상세 ### 2.1 상점 종류 | 상점 | 위치 | 판매 품목 | |------|------|----------| | **일반 상점** | 모든 마을 | 물약, 기본 장비, 소모품 | | **대장간** | 모든 마을 | 무기, 방어구 (레벨 기반) | | **마법 상점** | Act II 이후 | 스킬서, 마법 장비 | | **비밀 상점** | 랜덤 등장 | 희귀 아이템, 한정품 | | **길드 상점** | 요새 | 길드 포인트 교환 | ### 2.2 상점 갱신 시스템 ```dart class Shop { final ShopType type; final List items; final DateTime lastRefresh; final Duration refreshInterval; /// 상점 아이템 갱신 void refresh(int playerLevel) { items.clear(); items.addAll(_generateItems(playerLevel)); lastRefresh = DateTime.now(); } } ``` | 상점 | 갱신 주기 | 갱신 조건 | |------|----------|----------| | 일반 상점 | 매일 자정 | 자동 | | 대장간 | 레벨업 시 | 레벨업 | | 마법 상점 | 매주 월요일 | 자동 | | 비밀 상점 | 랜덤 | 5% 확률로 등장 | ### 2.3 가격 계산 공식 ```dart /// 구매 가격 계산 int calculateBuyPrice(Equipment item) { final basePrice = item.level * 50; final rarityMultiplier = { ItemRarity.common: 1.0, ItemRarity.uncommon: 2.0, ItemRarity.rare: 5.0, ItemRarity.epic: 15.0, ItemRarity.legendary: 50.0, }[item.rarity]!; return (basePrice * rarityMultiplier).round(); } /// 판매 가격 계산 int calculateSellPrice(Equipment item) { return (calculateBuyPrice(item) * 0.3).round(); } /// CHA 보너스 적용 int applyCharismaDiscount(int price, int cha) { // CHA 10당 1% 할인, 최대 20% 할인 final discount = min(0.20, (cha - 10) * 0.01); return (price * (1 - discount)).round(); } ``` ### 2.4 상점 UI ``` ┌─ 대장간 ────────────────────────────┐ │ │ │ 👤 레벨: 25 💰 골드: 15,420 │ │ 📦 인벤토리: 42/50 │ │ │ │ ─────────────────────────────────── │ │ 판매 중인 아이템 (갱신까지: 2시간) │ │ │ │ ┌─────────────────────────────────┐ │ │ │ ⚔️ 디버거의 검 (Lv.25) │ │ │ │ ATK +35, CRI +3% │ │ │ │ 💰 1,250 골드 [구매] │ │ │ └─────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────┐ │ │ │ 🛡️ 강철 갑옷 (Lv.24) │ │ │ │ DEF +42, HP +50 │ │ │ │ 💰 1,100 골드 [구매] │ │ │ └─────────────────────────────────┘ │ │ │ │ [판매하기] [강화하기] [수리하기] │ │ │ └─────────────────────────────────────┘ ``` ### 2.5 특별 거래 | 기능 | 설명 | |------|------| | **일괄 구매** | 물약 10개/50개 묶음 구매 (5% 할인) | | **일괄 판매** | 선택한 아이템 일괄 판매 | | **자동 구매** | 물약 부족 시 자동 구매 설정 | | **예약 구매** | 비밀 상점 아이템 등장 시 알림 | ---