docs: 게임 시스템 개편 계획 문서 분리
- 121KB 단일 문서를 22개 태스크 문서로 분리 - 메인 인덱스 문서 (game-system-overhaul-index.md) 생성 - Phase 1-10 태스크 문서 10개 분리 - 추가 시스템 태스크 문서 10개 분리 - 재미 요소 설계 문서 1개 분리 - 기존 문서는 archive/ 폴더로 이동
This commit is contained in:
119
doc/task-phase-06-balance.md
Normal file
119
doc/task-phase-06-balance.md
Normal file
@@ -0,0 +1,119 @@
|
||||
# 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
|
||||
- 테스트 및 조정: 반복 작업 필요
|
||||
Reference in New Issue
Block a user