Files
asciinevrdie/doc/task-phase-06-balance.md
JiWoong Sul b110b2dc53 docs: 게임 시스템 개편 계획 문서 분리
- 121KB 단일 문서를 22개 태스크 문서로 분리
- 메인 인덱스 문서 (game-system-overhaul-index.md) 생성
- Phase 1-10 태스크 문서 10개 분리
- 추가 시스템 태스크 문서 10개 분리
- 재미 요소 설계 문서 1개 분리
- 기존 문서는 archive/ 폴더로 이동
2025-12-16 19:33:57 +09:00

120 lines
3.2 KiB
Markdown

# 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
- 테스트 및 조정: 반복 작업 필요