# Phase 6: 밸런싱

> 메인 문서: [game-system-overhaul-index.md](game-system-overhaul-index.md)

---

## 1. 목표
레벨 1-100 구간에서 적절한 난이도 곡선을 설계한다.

## 2. 레벨 구간 설계

| 구간 | 레벨 | 특징 | 예상 플레이 시간 |
|------|------|------|-----------------|
| 초반 | 1-20 | 튜토리얼, 기본 시스템 학습 | 1-2시간 |
| 중반 | 21-50 | 본격적인 성장, 다양한 스킬 | 3-5시간 |
| 후반 | 51-80 | 고급 장비, 어려운 몬스터 | 5-8시간 |
| 엔드게임 | 81-100 | 최종 보스, 명예의 전당 | 3-5시간 |

## 3. 경험치 곡선

```
레벨업 필요 경험치 = 기본값 * (1.15 ^ 레벨)

기본값 = 100
레벨 10: 405 exp
레벨 50: 108,366 exp
레벨 100: 11,739,085 exp
```

## 4. 몬스터 스탯 스케일링

```dart
MonsterStats generateMonster(int level, MonsterType type) {
  final baseStats = MonsterStats(
    hp: 50 + level * 20 + (level * level / 5).round(),
    atk: 5 + level * 3,
    def: 2 + level * 2,
    exp: 10 + level * 5,
    gold: 5 + level * 3,
  );

  return _applyTypeModifier(baseStats, type);
}
```

### 4.1 몬스터 타입별 배율

| 타입 | HP | ATK | DEF | EXP | GOLD |
|------|-----|-----|-----|-----|------|
| 일반 | 1.0x | 1.0x | 1.0x | 1.0x | 1.0x |
| 정예 | 2.0x | 1.3x | 1.2x | 2.0x | 2.0x |
| 미니보스 | 5.0x | 1.5x | 1.5x | 5.0x | 5.0x |
| 보스 | 10.0x | 2.0x | 2.0x | 15.0x | 10.0x |
| 최종보스 | 20.0x | 2.5x | 2.5x | 50.0x | 30.0x |

### 4.2 보스 몬스터 특수 스탯

```dart
class BossStats extends MonsterStats {
  final List<BossPhase> phases;
  final double enrageThreshold;   // 분노 HP %
  final double enrageMultiplier;  // 분노 시 스탯 배율
  final bool hasShield;           // 보호막 여부
  final int shieldAmount;         // 보호막 수치
}
```

| 보스 | 특수 능력 |
|------|----------|
| Syntax Error Dragon | 페이즈 3에서 연속 공격 |
| Memory Leak Hydra | HP 30% 이하 시 회복 |
| Buffer Overflow Titan | 보호막 (일정 데미지 흡수) |
| Kernel Panic Archon | 분노 시 스턴 공격 |
| Glitch God | 5페이즈, 각 페이즈별 완전히 다른 패턴 |

## 5. 사망 확률 목표

| 레벨 구간 | 목표 사망 확률 (전투당) |
|----------|----------------------|
| 1-20 | 1-3% |
| 21-50 | 3-5% |
| 51-80 | 5-10% |
| 81-100 | 10-20% |

## 6. 밸런스 테스트 도구

```dart
/// 시뮬레이션으로 밸런스 검증
class BalanceSimulator {
  /// 특정 레벨 구간을 N회 시뮬레이션
  SimulationResult simulate({
    required int startLevel,
    required int endLevel,
    required int iterations,
  });
}

class SimulationResult {
  final double averageDeaths;
  final double averageTimeMinutes;
  final double survivalRate;
  final List<String> deathCauses;
}
```

## 7. 수정 대상 파일

| 파일 | 변경 내용 |
|------|----------|
| `core/util/balance_constants.dart` | **신규** - 밸런스 상수 |
| `core/util/pq_logic.dart` | 경험치/몬스터 스케일링 |
| `data/pq_config_data.dart` | 몬스터 레벨 재조정 |
| `test/balance_test.dart` | **신규** - 밸런스 테스트 |

## 8. 예상 작업량
- 예상 파일 수: 4-5개
- 신규 코드: ~300 LOC
- 수정 코드: ~400 LOC
- 테스트 및 조정: 반복 작업 필요
