diff --git a/doc/dfm-extract-notes.md b/doc/bak/dfm-extract-notes.md similarity index 100% rename from doc/dfm-extract-notes.md rename to doc/bak/dfm-extract-notes.md diff --git a/doc/progress-quest-flutter-plan.md b/doc/bak/progress-quest-flutter-plan.md similarity index 100% rename from doc/progress-quest-flutter-plan.md rename to doc/bak/progress-quest-flutter-plan.md diff --git a/doc/progress-quest-tasklist.md b/doc/bak/progress-quest-tasklist.md similarity index 100% rename from doc/progress-quest-tasklist.md rename to doc/bak/progress-quest-tasklist.md diff --git a/doc/game-system-overhaul-plan.md b/doc/game-system-overhaul-plan.md new file mode 100644 index 0000000..09a5eb7 --- /dev/null +++ b/doc/game-system-overhaul-plan.md @@ -0,0 +1,1502 @@ +# ASCII Never Die - 게임 시스템 개편 계획 + +## 1. 개요 + +### 1.1 목적 +Progress Quest 클론에서 **실제 게임성을 갖춘 RPG**로 전환한다. +Idle game의 자동 진행 특성은 유지하되, 전투/성장/사망의 의미있는 시스템을 도입한다. + +### 1.2 핵심 변경 사항 +- Stats가 전투에 실제 영향을 미침 +- 사망 시스템 및 부활 메커니즘 +- MP 기반 스킬 시스템 +- 아이템 스탯 및 가중치 +- 레벨 1-100 밸런싱 +- 종족/클래스 특화 + +### 1.3 현재 상태 +| 항목 | 현재 | 목표 | +|------|------|------| +| Stats | 장식용 (CON→HP, INT→MP, WIS→주문, STR→무게만 영향) | 전투력에 직접 영향 | +| 전투 | 시간 경과 시 자동 승리 | 데미지 계산, 승패 결정 | +| 사망 | 없음 | 장비 상실, 부활 버튼 | +| 스킬 | 획득만 (사용 없음) | MP 소모, 쿨타임 | +| 아이템 | 이름만 존재 | 스탯 보정, 가중치 | +| 레벨 | 무한 성장 | 1-100 (100에서 성장 멈춤) | + +--- + +## 2. 수정 단계 (Phase) + +``` +Phase 1: 핵심 전투 시스템 ████████████████████ (기반) +Phase 2: 아이템 시스템 ████████████████ (의존: Phase 1) +Phase 3: 스킬 시스템 ████████████ (의존: Phase 1, 2) +Phase 4: 사망/부활 시스템 ████████ (의존: Phase 1, 2, 3) +Phase 5: 종족/클래스 특화 ██████ (의존: Phase 1) +Phase 6: 밸런싱 ████████████████████ (전체 의존) +Phase 7: 콘텐츠 확장 ████████████ (의존: Phase 6) +Phase 8: UI/UX 개선 ████████ (병렬 가능) +Phase 9: 스토리/엔딩 ██████ (의존: Phase 7) +Phase 10: 명예의 전당 ████ (최종) +``` + +--- + +## 3. Phase 1: 핵심 전투 시스템 + +### 3.1 목표 +Stats가 전투에 실제 영향을 미치도록 전투 계산 로직을 구현한다. + +### 3.2 새로운 Stats 구조 + +```dart +class CombatStats { + // 기본 스탯 (캐릭터 고유) + final int str; // 힘: 물리 공격력 보정 + final int con; // 체력: HP, 방어력 보정 + final int dex; // 민첩: 회피율, 크리티컬율, 명중률 + final int intelligence; // 지능: 마법 공격력, MP + final int wis; // 지혜: 마법 방어력, MP 회복 + final int cha; // 매력: 상점 가격, 드롭률 보정 + + // 파생 스탯 (장비 + 기본 스탯으로 계산) + final int atk; // 공격력 + final int def; // 방어력 + final int magAtk; // 마법 공격력 + final int magDef; // 마법 방어력 + final double criRate; // 크리티컬 확률 (0.0 ~ 1.0) + final double criDamage; // 크리티컬 데미지 배율 (1.5 ~ 3.0) + final double evasion; // 회피율 (0.0 ~ 0.5) + final double accuracy; // 명중률 (0.8 ~ 1.0) + final double blockRate; // 방패 방어율 (0.0 ~ 0.4) + final double parryRate; // 무기로 쳐내기 확률 (0.0 ~ 0.3) + + // 자원 + final int hpMax; + final int hpCurrent; + final int mpMax; + final int mpCurrent; +} +``` + +### 3.3 전투 계산 공식 + +``` +1. 명중 판정 + 명중 = random() < (공격자.accuracy - 방어자.evasion) + +2. 방어 판정 (명중 시) + 방패 방어 = random() < 방어자.blockRate + 무기 쳐내기 = random() < 방어자.parryRate + +3. 데미지 계산 + 기본 데미지 = 공격자.atk * (1 + random() * 0.2) - 방어자.def * 0.5 + + 크리티컬 판정 = random() < 공격자.criRate + if (크리티컬) 데미지 *= 공격자.criDamage + + if (방패 방어) 데미지 *= 0.3 + if (무기 쳐내기) 데미지 *= 0.5 + + 최종 데미지 = max(1, 데미지) + +4. 전투 결과 + 방어자.hp -= 최종 데미지 + if (방어자.hp <= 0) 전투 종료 +``` + +### 3.4 전투 틱 시스템 + +``` +현재: 2초 후 자동 승리 +변경: 매 틱(200ms)마다 공격 교환, HP가 0이 되면 승패 결정 + +전투 흐름: +1. 플레이어 턴 (atk 기반 공격) +2. 몬스터 턴 (몬스터 레벨 기반 공격) +3. HP 체크 +4. 반복 또는 종료 +``` + +### 3.5 수정 대상 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `core/model/game_state.dart` | CombatStats 클래스 추가, Stats 구조 변경 | +| `core/engine/progress_service.dart` | 전투 틱 로직 변경 | +| `core/util/pq_logic.dart` | 전투 계산 함수 추가 | +| `core/engine/combat_calculator.dart` | **신규** - 전투 계산 전담 | + +### 3.6 예상 작업량 +- 예상 파일 수: 4-5개 +- 신규 코드: ~400 LOC +- 수정 코드: ~200 LOC + +--- + +## 4. Phase 2: 아이템 시스템 + +### 4.1 목표 +아이템에 스탯 보정치를 부여하고, 가중치 시스템을 도입한다. + +### 4.2 아이템 스탯 구조 + +```dart +class ItemStats { + final int atk; // 공격력 보정 + final int def; // 방어력 보정 + final int magAtk; // 마법 공격력 보정 + final int magDef; // 마법 방어력 보정 + final double criRate; // 크리티컬 확률 보정 + final double evasion; // 회피율 보정 + final double blockRate; // 방패 방어율 (방패 전용) + final double parryRate; // 무기 쳐내기 (무기 전용) + + // 추가 효과 + final int hpBonus; + final int mpBonus; + final int strBonus; + final int dexBonus; + // ... 기타 스탯 보너스 +} + +class Equipment { + final String name; + final EquipmentSlot slot; + final int level; // 아이템 레벨 + final int weight; // 가중치 (높을수록 좋은 아이템) + final ItemStats stats; + final ItemRarity rarity; // Common, Uncommon, Rare, Epic, Legendary +} +``` + +### 4.3 아이템 가중치 계산 + +``` +가중치 = 기본값 + (레벨 * 10) + (희귀도 보너스) + (스탯 합계) + +희귀도 보너스: +- Common: 0 +- Uncommon: 50 +- Rare: 150 +- Epic: 400 +- Legendary: 1000 +``` + +### 4.4 자동 장착 로직 + +``` +1. 인벤토리에서 장착 가능한 아이템 필터링 +2. 슬롯별로 그룹화 +3. 각 슬롯에서 가장 높은 가중치 아이템 선택 +4. 현재 장비와 비교하여 더 좋으면 교체 +``` + +### 4.5 아이템 생성 공식 + +```dart +/// 아이템 스탯 생성 (레벨 기반) +ItemStats generateItemStats(int level, ItemRarity rarity, EquipmentSlot slot) { + final rarityMultiplier = { + ItemRarity.common: 1.0, + ItemRarity.uncommon: 1.3, + ItemRarity.rare: 1.7, + ItemRarity.epic: 2.2, + ItemRarity.legendary: 3.0, + }[rarity]!; + + final baseValue = (level * 2 * rarityMultiplier).round(); + + // 슬롯별 주요 스탯 결정 + return switch (slot) { + EquipmentSlot.weapon => ItemStats(atk: baseValue, ...), + EquipmentSlot.shield => ItemStats(def: baseValue ~/ 2, blockRate: 0.1, ...), + EquipmentSlot.armor => ItemStats(def: baseValue, ...), + // ... + }; +} +``` + +### 4.6 수정 대상 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `core/model/game_state.dart` | Equipment 구조 변경, ItemStats 추가 | +| `core/model/equipment_slot.dart` | 슬롯별 기본 스탯 정의 | +| `core/util/pq_logic.dart` | 아이템 생성 로직 변경 | +| `core/engine/item_service.dart` | **신규** - 아이템 관리 전담 | +| `data/pq_config_data.dart` | 아이템 기본 데이터 확장 | + +### 4.7 예상 작업량 +- 예상 파일 수: 5-6개 +- 신규 코드: ~500 LOC +- 수정 코드: ~300 LOC + +--- + +## 5. Phase 3: 스킬 시스템 + +### 5.1 목표 +MP를 소모하여 스킬을 사용하고, 쿨타임을 관리한다. + +### 5.2 스킬 구조 + +```dart +class Skill { + final String id; + final String name; + final SkillType type; // attack, heal, buff, debuff + final int mpCost; + final int cooldownMs; // 쿨타임 (밀리초) + final int power; // 스킬 위력 + + // 효과 + final double damageMultiplier; // 공격 스킬: 데미지 배율 + final int healAmount; // 회복 스킬: 회복량 + final BuffEffect? buff; // 버프 효과 +} + +class SkillState { + final String skillId; + final int lastUsedMs; // 마지막 사용 시간 + final int rank; // 스킬 레벨 + + bool isReady(int currentMs) => + currentMs - lastUsedMs >= skill.cooldownMs; +} +``` + +### 5.3 MP 시스템 + +``` +MP 회복: +- 비전투 시: 50ms당 1 회복 +- 전투 중: 회복 없음 (또는 WIS에 비례하여 느리게 회복) +- 전투 종료: 즉시 전체 회복 + +MP 소모: +- 스킬 사용 시 즉시 차감 +- MP 부족 시 스킬 사용 불가 (일반 공격으로 대체) +``` + +### 5.4 스킬 사용 로직 + +``` +자동 스킬 사용 우선순위: +1. HP < 30% → 회복 스킬 (있으면) +2. 보스전 → 가장 강력한 공격 스킬 +3. 일반 전투 → MP 효율이 좋은 스킬 +4. MP < 20% → 일반 공격만 + +수동 개입: +- 현재 버전에서는 자동만 지원 +- 향후 수동 스킬 사용 UI 추가 가능 +``` + +### 5.5 스킬 목록 예시 + +| 스킬명 | 타입 | MP | 쿨타임 | 효과 | +|--------|------|-----|--------|------| +| Debug Strike | attack | 10 | 3s | 데미지 150% | +| Memory Leak | attack | 25 | 8s | 데미지 250%, 적 방어력 -20% | +| Hot Reload | heal | 20 | 10s | HP 30% 회복 | +| Safe Mode | buff | 30 | 30s | 방어력 +50%, 10초 지속 | +| Core Dump | attack | 50 | 20s | 데미지 400% | +| Kernel Panic | attack | 100 | 60s | 데미지 800%, 자신 HP -10% | + +### 5.6 수정 대상 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `core/model/game_state.dart` | SkillState 추가 | +| `core/model/skill.dart` | **신규** - 스킬 정의 | +| `core/engine/skill_service.dart` | **신규** - 스킬 사용 로직 | +| `core/engine/progress_service.dart` | MP 회복 로직, 스킬 자동 사용 | +| `data/skill_data.dart` | **신규** - 스킬 데이터 | + +### 5.7 예상 작업량 +- 예상 파일 수: 5-6개 +- 신규 코드: ~600 LOC +- 수정 코드: ~200 LOC + +--- + +## 6. Phase 4: 사망/부활 시스템 + +### 6.1 목표 +사망 개념을 도입하고, 페널티 및 부활 메커니즘을 구현한다. + +### 6.2 사망 조건 + +``` +사망 = HP <= 0 + +사망 시 처리: +1. 게임 루프 일시 정지 +2. 장착 중인 모든 장비 제거 (인벤토리로 이동하지 않음 - 상실) +3. 인벤토리 아이템 유지 +4. 골드 유지 +5. 경험치 유지 (레벨 다운 없음) +6. 사망 UI 표시 (부활 버튼) +``` + +### 6.3 부활 프로세스 + +``` +부활 버튼 클릭 시: +1. HP/MP 전체 회복 +2. 자동으로 샵 이동 +3. 골드로 구매 가능한 최고 장비 자동 구매 +4. 각 슬롯에 장비 자동 장착 +5. 게임 루프 재개 +``` + +### 6.4 샵 시스템 + +```dart +class Shop { + /// 현재 레벨에서 구매 가능한 장비 목록 + List getAvailableItems(int playerLevel, int gold); + + /// 최적의 장비 세트 자동 구매 + PurchaseResult autoBuy(int playerLevel, int gold, List emptySlots); +} + +class PurchaseResult { + final List purchased; + final int totalCost; + final int remainingGold; +} +``` + +### 6.5 장비 가격 공식 + +``` +기본 가격 = 아이템 레벨 * 50 * 희귀도 배율 + +희귀도 배율: +- Common: 1.0 +- Uncommon: 2.0 +- Rare: 5.0 +- Epic: 15.0 +- Legendary: 50.0 + +판매 가격 = 구매 가격 * 0.3 +``` + +### 6.6 사망 UI + +``` +┌─────────────────────────────────────┐ +│ │ +│ YOU DIED │ +│ │ +│ Level 45 버그 헌터 │ +│ │ +│ 사망 원인: 커널 패닉 │ +│ │ +│ ───────────────────────── │ +│ 장비 상실: 7개 │ +│ 보유 골드: 15,420 │ +│ ───────────────────────── │ +│ │ +│ [ 부활하기 ] │ +│ │ +└─────────────────────────────────────┘ +``` + +### 6.7 수정 대상 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `core/model/game_state.dart` | isDead 플래그, deathInfo 추가 | +| `core/engine/progress_service.dart` | 사망 판정 로직 | +| `core/engine/resurrection_service.dart` | **신규** - 부활 처리 | +| `core/engine/shop_service.dart` | **신규** - 샵 로직 | +| `features/game/widgets/death_overlay.dart` | **신규** - 사망 UI | +| `features/game/game_session_controller.dart` | 사망/부활 상태 관리 | + +### 6.8 예상 작업량 +- 예상 파일 수: 6-7개 +- 신규 코드: ~500 LOC +- 수정 코드: ~200 LOC + +--- + +## 7. Phase 5: 종족/클래스 특화 + +### 7.1 목표 +종족과 클래스에 고유한 능력치 보정과 특수 능력을 부여한다. + +### 7.2 종족 특성 + +```dart +class RaceTraits { + final String raceId; + final Map statModifiers; // 스탯 보정 + final List passives; // 패시브 능력 + final double expMultiplier; // 경험치 배율 +} +``` + +| 종족 | STR | CON | DEX | INT | WIS | CHA | 특수 능력 | +|------|-----|-----|-----|-----|-----|-----|----------| +| Byte Human | 0 | 0 | 0 | 0 | 0 | +2 | 경험치 +10% | +| Null Elf | -1 | -1 | +2 | +2 | 0 | 0 | 마법 데미지 +15% | +| Buffer Dwarf | +2 | +2 | -1 | -1 | 0 | 0 | 방어력 +10% | +| Stack Goblin | -1 | -1 | +3 | 0 | 0 | +1 | 크리티컬 확률 +5% | +| Heap Troll | +3 | +3 | -2 | -2 | 0 | 0 | HP +20% | +| Pointer Fairy | -2 | -2 | +2 | +2 | +2 | 0 | MP +20% | +| Coredump Undead | +1 | +2 | -1 | 0 | 0 | -2 | 사망 시 장비 1개 유지 | + +### 7.3 클래스 특성 + +```dart +class ClassTraits { + final String classId; + final Map statModifiers; + final List startingSkills; // 시작 스킬 + final List classSkills; // 클래스 전용 스킬 + final EquipmentRestriction restrictions; // 장비 제한 +} +``` + +| 클래스 | 주요 스탯 | 장비 제한 | 특수 능력 | +|--------|----------|----------|----------| +| Bug Hunter | STR/DEX | 전체 가능 | 일반 공격 +20% | +| Debugger Paladin | STR/CON | 중갑, 방패 | 방어력 +15%, 회복력 +10% | +| Compiler Mage | INT/WIS | 경갑, 지팡이 | 마법 데미지 +25% | +| Refactor Monk | DEX/WIS | 경갑, 맨손 | 회피율 +15%, 연속 공격 | +| Pointer Assassin | DEX/STR | 경갑, 단검 | 크리티컬 +20%, 첫 공격 2배 | +| Garbage Collector | CON/STR | 중갑 | HP +30%, 전투 후 HP 10% 회복 | + +### 7.4 수정 대상 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `core/model/race_traits.dart` | **신규** - 종족 특성 | +| `core/model/class_traits.dart` | **신규** - 클래스 특성 | +| `data/race_data.dart` | **신규** - 종족 데이터 | +| `data/class_data.dart` | **신규** - 클래스 데이터 | +| `core/engine/stat_calculator.dart` | **신규** - 최종 스탯 계산 | +| `features/character/character_creation.dart` | 종족/클래스 선택 UI 개선 | + +### 7.5 예상 작업량 +- 예상 파일 수: 6-7개 +- 신규 코드: ~400 LOC +- 수정 코드: ~150 LOC + +--- + +## 8. Phase 6: 밸런싱 + +### 8.1 목표 +레벨 1-100 구간에서 적절한 난이도 곡선을 설계한다. + +### 8.2 레벨 구간 설계 + +| 구간 | 레벨 | 특징 | 예상 플레이 시간 | +|------|------|------|-----------------| +| 초반 | 1-20 | 튜토리얼, 기본 시스템 학습 | 1-2시간 | +| 중반 | 21-50 | 본격적인 성장, 다양한 스킬 | 3-5시간 | +| 후반 | 51-80 | 고급 장비, 어려운 몬스터 | 5-8시간 | +| 엔드게임 | 81-100 | 최종 보스, 명예의 전당 | 3-5시간 | + +### 8.3 경험치 곡선 + +``` +레벨업 필요 경험치 = 기본값 * (1.15 ^ 레벨) + +기본값 = 100 +레벨 10: 405 exp +레벨 50: 108,366 exp +레벨 100: 11,739,085 exp +``` + +### 8.4 몬스터 스탯 스케일링 + +```dart +MonsterStats generateMonster(int level) { + return 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, + ); +} +``` + +### 8.5 사망 확률 목표 + +| 레벨 구간 | 목표 사망 확률 (전투당) | +|----------|----------------------| +| 1-20 | 1-3% | +| 21-50 | 3-5% | +| 51-80 | 5-10% | +| 81-100 | 10-20% | + +### 8.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 deathCauses; +} +``` + +### 8.7 수정 대상 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `core/util/balance_constants.dart` | **신규** - 밸런스 상수 | +| `core/util/pq_logic.dart` | 경험치/몬스터 스케일링 | +| `data/pq_config_data.dart` | 몬스터 레벨 재조정 | +| `test/balance_test.dart` | **신규** - 밸런스 테스트 | + +### 8.8 예상 작업량 +- 예상 파일 수: 4-5개 +- 신규 코드: ~300 LOC +- 수정 코드: ~400 LOC +- 테스트 및 조정: 반복 작업 필요 + +--- + +## 9. Phase 7: 콘텐츠 확장 + +### 9.1 목표 +더 많은 몬스터, 아이템, 애니메이션을 추가한다. + +### 9.2 몬스터 확장 + +현재: ~100종 +목표: ~200종 + +추가할 몬스터 카테고리: +- 레벨 81-100 엔드게임 몬스터 (30종) +- 보스 몬스터 (10종, 각 Act 마다) +- 미니 보스 (20종) +- 특수 이벤트 몬스터 (20종) +- 퀘스트 전용 몬스터 (20종) + +### 9.3 아이템 확장 + +현재: 이름만 존재 +목표: 스탯이 있는 300+ 아이템 + +카테고리별 추가: +- 무기 (50종): 검, 도끼, 활, 지팡이, 단검 등 +- 방어구 (80종): 투구, 갑옷, 장갑, 부츠, 망토 +- 방패 (30종) +- 악세서리 (50종): 반지, 목걸이, 귀걸이 +- 소모품 (50종): 물약, 스크롤 + +### 9.4 ASCII 애니메이션 확장 + +#### 9.4.1 전투 결과별 애니메이션 + +| 상황 | 애니메이션 | +|------|----------| +| 일반 공격 | 기존 battle_mode | +| 크리티컬 히트 | 화려한 이펙트 | +| 회피 성공 | 살짝 비켜가는 모션 | +| 방패 방어 | 방패 들어올리기 | +| 스킬 사용 | 스킬별 고유 애니메이션 | +| 사망 | 쓰러지는 애니메이션 | +| 레벨업 | 빛나는 이펙트 | + +#### 9.4.2 몬스터별 애니메이션 + +```dart +class MonsterAnimation { + final String monsterId; + final List idleFrames; + final List attackFrames; + final List hitFrames; + final List deathFrames; +} +``` + +카테고리별 기본 애니메이션: +- 버그류 (곤충 형태) +- 언데드류 (좀비, 유령) +- 드래곤류 (대형) +- 휴머노이드류 (NPC형) +- 기계류 (로봇, 바이러스) + +### 9.5 수정 대상 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `data/pq_config_data.dart` | 몬스터/아이템 데이터 확장 | +| `data/ascii_animation_data.dart` | 애니메이션 프레임 추가 | +| `data/monster_animations.dart` | **신규** - 몬스터별 애니메이션 | +| `features/game/widgets/ascii_animation_card.dart` | 상황별 애니메이션 선택 | + +### 9.6 예상 작업량 +- 예상 파일 수: 4-5개 +- 신규 코드: ~1000 LOC (대부분 데이터) +- 수정 코드: ~200 LOC + +--- + +## 10. Phase 8: UI/UX 개선 + +### 10.1 목표 +능력치 변화를 실시간으로 표시하고, 전반적인 UI를 개선한다. + +### 10.2 실시간 스탯 변화 표시 + +``` +┌─ Stats ─────────────────┐ +│ HP: 450/500 ████████░░ │ +│ MP: 80/120 ██████░░░░ │ +│ │ +│ ATK: 125 (+15) ▲ │ ← 장비 변경 시 변화량 표시 +│ DEF: 89 (-5) ▼ │ +│ CRI: 12.5% │ +│ EVA: 8.3% │ +└─────────────────────────┘ +``` + +### 10.3 전투 로그 + +``` +┌─ Combat Log ────────────────────┐ +│ > 문법 오류를 공격! 45 데미지 │ +│ > 문법 오류의 반격! 12 데미지 │ +│ > 크리티컬! 98 데미지 │ +│ > Debug Strike 사용! 150 데미지 │ +│ > 문법 오류 처치! +25 exp │ +└─────────────────────────────────┘ +``` + +### 10.4 알림 시스템 + +| 이벤트 | 표시 방식 | +|--------|----------| +| 레벨업 | 화면 중앙 팝업 + 사운드 | +| 장비 획득 | 우측 하단 토스트 | +| 스탯 변화 | 해당 스탯 옆 애니메이션 | +| 사망 위험 (HP < 20%) | HP 바 깜빡임 | +| 스킬 쿨타임 완료 | 스킬 아이콘 빛남 | + +### 10.5 수정 대상 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `features/game/widgets/stats_panel.dart` | 스탯 변화 애니메이션 | +| `features/game/widgets/combat_log.dart` | **신규** - 전투 로그 | +| `features/game/widgets/notification_overlay.dart` | **신규** - 알림 | +| `core/service/notification_service.dart` | **신규** - 알림 관리 | + +### 10.6 예상 작업량 +- 예상 파일 수: 5-6개 +- 신규 코드: ~400 LOC +- 수정 코드: ~200 LOC + +--- + +## 11. Phase 9: 스토리/엔딩 + +### 11.1 목표 +프롤로그부터 엔딩까지 일관된 스토리를 구성한다. + +### 11.2 스토리 구조 + +``` +Act I (레벨 1-20): 각성 +- 프롤로그: 코드의 신으로부터 비전을 받음 +- 마을에서 기본 훈련 +- 첫 번째 던전: 버그 둥지 +- Act I 보스: Syntax Error Dragon + +Act II (레벨 21-40): 성장 +- 디버거 기사단 가입 +- 손상된 네트워크 탐험 +- 배신자 발견 +- Act II 보스: Memory Leak Hydra + +Act III (레벨 41-60): 시련 +- 널 왕국 진입 +- 고대 컴파일러의 시험 +- 동료의 희생 +- Act III 보스: Buffer Overflow Titan + +Act IV (레벨 61-80): 결전 +- 글리치 신의 성채 침입 +- 최후의 동맹 결성 +- Act IV 보스: Kernel Panic Archon + +Act V (레벨 81-100): 종말 +- 글리치 신과의 최종 대결 +- 다중 페이즈 보스전 +- 엔딩: 시스템 재부팅, 평화 회복 +``` + +### 11.3 시네마틱 개선 + +각 Act 전환 시: +- 전용 시네마틱 텍스트 (5-10개 단계) +- ASCII 아트 일러스트 +- 분위기에 맞는 색상 테마 + +### 11.4 수정 대상 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `data/story_data.dart` | **신규** - 스토리 텍스트 | +| `data/game_text_l10n.dart` | 시네마틱 텍스트 확장 | +| `core/engine/story_service.dart` | **신규** - 스토리 진행 관리 | +| `features/game/widgets/cinematic_view.dart` | **신규** - 시네마틱 UI | + +### 11.5 예상 작업량 +- 예상 파일 수: 4-5개 +- 신규 코드: ~600 LOC (대부분 텍스트) +- 수정 코드: ~100 LOC + +--- + +## 12. Phase 10: 명예의 전당 + +### 12.1 목표 +게임 클리어 시 캐릭터를 명예의 전당에 등재한다. + +### 12.2 클리어 조건 + +``` +클리어 = 레벨 100 달성 + 글리치 신 처치 +``` + +### 12.3 명예의 전당 데이터 + +```dart +class HallOfFameEntry { + final String id; + final String characterName; + final String race; + final String klass; + final int level; + final Duration totalPlayTime; + final int totalDeaths; + final int monstersKilled; + final DateTime clearedAt; + + // 향후 아스키 아레나용 + final CombatStats finalStats; + final List finalEquipment; + final List skills; +} +``` + +### 12.4 명예의 전당 UI + +``` +╔═══════════════════════════════════════════════════╗ +║ 명예의 전당 ║ +╠═══════════════════════════════════════════════════╣ +║ ║ +║ 1. 버퍼 드워프 디버거 성기사 "CodeSlayer" ║ +║ Lv.100 | 12시간 34분 | 사망 3회 ║ +║ 2024.03.15 ║ +║ ║ +║ 2. 널 엘프 컴파일러 마법사 "NullMaster" ║ +║ Lv.100 | 15시간 22분 | 사망 7회 ║ +║ 2024.03.10 ║ +║ ║ +║ 3. 스택 고블린 포인터 암살자 "StackKiller" ║ +║ Lv.100 | 18시간 05분 | 사망 12회 ║ +║ 2024.03.08 ║ +║ ║ +╚═══════════════════════════════════════════════════╝ +``` + +### 12.5 클리어 후 처리 + +``` +1. 축하 시네마틱 표시 +2. 명예의 전당 등재 +3. 통계 표시 (플레이 시간, 사망 횟수, 처치 몬스터 등) +4. "새 게임 시작" 버튼 +5. 기존 캐릭터 데이터는 명예의 전당에만 보존 +``` + +### 12.6 수정 대상 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `core/model/hall_of_fame.dart` | **신규** - 명예의 전당 모델 | +| `core/storage/hall_of_fame_storage.dart` | **신규** - 저장/로드 | +| `features/hall_of_fame/hall_of_fame_screen.dart` | **신규** - UI | +| `features/game/game_session_controller.dart` | 클리어 처리 | + +### 12.7 예상 작업량 +- 예상 파일 수: 4-5개 +- 신규 코드: ~400 LOC +- 수정 코드: ~100 LOC + +--- + +## 13. 추가 권장 사항 + +### 13.1 사운드/음악/진동 시스템 + +#### 13.1.1 사운드 효과 (SFX) + +| 상황 | 효과음 | 우선순위 | +|------|--------|----------| +| 일반 공격 | 타격음 | 상 | +| 크리티컬 히트 | 강한 타격음 + 효과음 | 상 | +| 스킬 사용 | 스킬별 고유 효과음 | 중 | +| 피격 | 피해 효과음 | 상 | +| 사망 | 쓰러지는 효과음 | 상 | +| 레벨업 | 팡파레 | 상 | +| 아이템 획득 | 획득 효과음 (희귀도별 차등) | 중 | +| 장비 장착 | 장착 효과음 | 하 | +| 퀘스트 완료 | 완료 효과음 | 중 | +| UI 조작 | 버튼 클릭음 | 하 | + +#### 13.1.2 배경 음악 (BGM) + +| 상황 | BGM 타입 | 우선순위 | +|------|----------|----------| +| 메인 화면 | 웅장한 타이틀 테마 | 중 | +| 일반 탐험 | 평화로운 필드 음악 | 중 | +| 전투 중 | 긴박한 전투 음악 | 상 | +| 보스전 | 강렬한 보스 테마 | 상 | +| 사망 화면 | 슬픈/긴장된 음악 | 중 | +| 시네마틱 | 스토리 테마 | 중 | +| 명예의 전당 | 영광스러운 엔딩 테마 | 중 | + +#### 13.1.3 진동 (모바일 전용) + +| 상황 | 진동 패턴 | 강도 | +|------|----------|------| +| 일반 공격 | 짧은 단일 진동 | 약 | +| 크리티컬 히트 | 강한 단일 진동 | 강 | +| 피격 | 짧은 이중 진동 | 중 | +| 사망 | 긴 진동 | 강 | +| 레벨업 | 리듬 있는 연속 진동 | 중 | +| 희귀 아이템 획득 | 짧은 삼중 진동 | 중 | +| 보스 등장 | 점점 강해지는 진동 | 강 | + +#### 13.1.4 구현 방안 + +```dart +// 사운드 서비스 +class AudioService { + void playSfx(SfxType type); + void playBgm(BgmType type); + void stopBgm(); + void setVolume(double sfx, double bgm); +} + +// 진동 서비스 (모바일) +class HapticService { + void vibrate(HapticPattern pattern); + bool get isSupported; +} +``` + +--- + +### 13.2 업적 시스템 + +#### 13.2.1 업적 카테고리 + +| 카테고리 | 예시 업적 | +|----------|----------| +| **전투** | 첫 번째 몬스터 처치, 100마리 처치, 1000마리 처치, 무피해 보스 처치 | +| **성장** | 레벨 10 달성, 레벨 50 달성, 레벨 100 달성 | +| **수집** | 첫 에픽 아이템, 전설 아이템 획득, 모든 슬롯 에픽 이상 장착 | +| **탐험** | 첫 퀘스트 완료, 100개 퀘스트 완료, 모든 Act 클리어 | +| **생존** | 10연전 생존, HP 1로 생존, 사망 없이 Act 1 클리어 | +| **스킬** | 첫 스킬 사용, 스킬로 100마리 처치, 모든 스킬 습득 | +| **도전** | 레벨 10 이하로 Act 1 보스 처치, 장비 없이 10마리 처치 | +| **히든** | 특정 조합 발견, 이스터에그 발견 | + +#### 13.2.2 업적 보상 + +| 등급 | 보상 | +|------|------| +| 브론즈 | 골드 100-500 | +| 실버 | 골드 500-2000, 아이템 박스 | +| 골드 | 골드 2000-10000, 희귀 아이템 박스 | +| 플래티넘 | 전설 아이템 박스, 특별 칭호 | + +#### 13.2.3 업적 UI + +``` +┌─ 업적 ──────────────────────────┐ +│ ★ 전투 [12/25] │ +│ ☑ 첫 번째 사냥꾼 - 몬스터 처치│ +│ ☑ 백전용사 - 100마리 처치 │ +│ ☐ 천인의 적 - 1000마리 처치 │ +│ │ +│ ★ 성장 [3/10] │ +│ ☑ 신입 개발자 - 레벨 10 │ +│ ☐ 시니어 개발자 - 레벨 50 │ +└─────────────────────────────────┘ +``` + +--- + +### 13.3 도감 시스템 + +#### 13.3.1 도감 종류 + +| 도감 | 기록 내용 | 수집 조건 | +|------|----------|----------| +| **몬스터 도감** | 이름, 레벨 범위, 드롭 아이템, 출현 지역 | 한번이라도 처치 | +| **아이템 도감** | 이름, 스탯, 희귀도, 획득 방법 | 한번이라도 획득 | +| **스킬 도감** | 이름, 효과, MP 소모, 쿨타임 | 한번이라도 습득 | +| **NPC 도감** | 이름, 역할, 등장 시네마틱 | 시네마틱에서 등장 | + +#### 13.3.2 몬스터 도감 상세 + +```dart +class MonsterEntry { + final String id; + final String name; + final int minLevel; + final int maxLevel; + final List dropItems; + final String description; + final int killCount; // 처치 횟수 + final DateTime firstMet; // 첫 조우 시간 + final bool isDefeated; // 처치 여부 +} +``` + +#### 13.3.3 도감 UI + +``` +┌─ 몬스터 도감 [127/200] ─────────┐ +│ │ +│ ┌──────┐ Syntax Error │ +│ │ ∧∧∧ │ Lv. 1-5 │ +│ │ \○/ │ 드롭: 오타, 구두점 │ +│ │ │ │ 처치: 47회 │ +│ └──────┘ │ +│ │ +│ ┌──────┐ Memory Leak │ +│ │ ~~~ │ Lv. 6-12 │ +│ │ ⊂⊃ │ 드롭: 누수 바이트 │ +│ │ ~~~ │ 처치: 23회 │ +│ └──────┘ │ +│ │ +│ ┌──────┐ ??? │ +│ │ ? │ 미발견 │ +│ └──────┘ │ +└─────────────────────────────────┘ +``` + +#### 13.3.4 수집률 보상 + +| 수집률 | 보상 | +|--------|------| +| 25% | 칭호 "수집가 견습생" | +| 50% | 드롭률 +5% | +| 75% | 칭호 "마스터 수집가" | +| 100% | 전설 아이템 + 칭호 "완벽주의자" | + +--- + +### 13.4 통계 화면 + +#### 13.4.1 통계 카테고리 + +| 카테고리 | 통계 항목 | +|----------|----------| +| **시간** | 총 플레이 시간, 현재 세션 시간, 평균 세션 시간 | +| **전투** | 총 전투 횟수, 처치 몬스터 수, 총 데미지, 최고 단일 데미지, 크리티컬 횟수 | +| **생존** | 총 사망 횟수, 사망 원인 Top 5, 최장 생존 시간, 연속 전투 생존 기록 | +| **획득** | 총 획득 골드, 총 획득 아이템, 희귀도별 아이템 수, 가장 비싼 아이템 | +| **스킬** | 총 스킬 사용 횟수, 스킬별 사용 횟수, 스킬 데미지 합계, 가장 많이 쓴 스킬 | +| **탐험** | 완료 퀘스트 수, 방문 지역 수, 현재 Act, 최고 도달 레벨 | +| **효율** | 시간당 경험치, 시간당 골드, 평균 전투 시간, 승률 | + +#### 13.4.2 통계 UI + +``` +┌─ 플레이 통계 ───────────────────┐ +│ │ +│ ⏱ 플레이 시간 │ +│ 총: 15시간 34분 │ +│ 현재 세션: 2시간 12분 │ +│ │ +│ ⚔ 전투 │ +│ 처치 몬스터: 1,247마리 │ +│ 총 데미지: 458,291 │ +│ 최고 데미지: 2,847 (크리티컬) │ +│ 크리티컬 횟수: 312회 │ +│ │ +│ 💀 사망 │ +│ 총 사망: 7회 │ +│ ┌ 사망 원인 Top 3 ┐ │ +│ │ 1. 커널 패닉 (3회)│ │ +│ │ 2. 메모리 누수 (2회)│ │ +│ │ 3. 스택 오버플로우 (2회)│ │ +│ └─────────────────┘ │ +│ │ +│ 💰 획득 │ +│ 총 골드: 124,560 │ +│ 아이템: 892개 │ +│ 전설: 3개 | 에픽: 12개 │ +└─────────────────────────────────┘ +``` + +#### 13.4.3 통계 데이터 구조 + +```dart +class GameStatistics { + // 시간 + final Duration totalPlayTime; + final Duration currentSessionTime; + + // 전투 + final int totalBattles; + final int monstersKilled; + final int totalDamageDealt; + final int highestDamage; + final int criticalHits; + + // 생존 + final int totalDeaths; + final Map deathCauses; + final Duration longestSurvival; + + // 획득 + final int totalGoldEarned; + final int totalItemsObtained; + final Map itemsByRarity; + + // 스킬 + final int totalSkillUses; + final Map skillUseCounts; + + // 탐험 + final int questsCompleted; + final int highestLevel; + final int currentAct; +} +``` + +--- + +### 13.5 설정 화면 + +| 설정 항목 | 옵션 | +|----------|------| +| 게임 속도 | 0.5x, 1x, 2x, 5x | +| 자동 저장 간격 | 1분, 5분, 10분 | +| SFX 볼륨 | 0-100% | +| BGM 볼륨 | 0-100% | +| 진동 | 켜기/끄기 (모바일) | +| 알림 표시 | 켜기/끄기 | +| 전투 로그 | 간략/상세/끄기 | +| 언어 | 한국어/English | + +--- + +### 13.6 성능 최적화 + +| 항목 | 현재 | 개선 방안 | +|------|------|----------| +| 상태 업데이트 | 매 틱마다 전체 rebuild | 변경된 부분만 업데이트 | +| 애니메이션 | Timer 기반 | AnimationController 사용 | +| 저장 | 자동 저장 빈번 | 변경 감지 후 디바운스 | + +### 13.7 테스트 전략 + +| 테스트 유형 | 대상 | 도구 | +|------------|------|------| +| 유닛 테스트 | 전투 계산, 스탯 계산 | flutter_test | +| 위젯 테스트 | UI 컴포넌트 | flutter_test | +| 통합 테스트 | 전체 게임 플로우 | integration_test | +| 밸런스 테스트 | 시뮬레이션 | 커스텀 도구 | + +--- + +## 14. 재미 요소 설계 (Fun Factor Design) + +### 14.1 즉각적인 보상감 (Dopamine Hits) + +| 요소 | 설명 | 우선순위 | +|------|------|----------| +| **데미지 숫자 팝업** | 공격 시 데미지가 화면에 튀어오름 (크리티컬은 크게, 빨간색) | 상 | +| **콤보 시스템** | 연속 처치 시 "x5 COMBO!" 표시 + 보너스 경험치 (10% per combo) | 상 | +| **희귀 드롭 연출** | 전설 아이템 획득 시 화면 번쩍 + 특별 효과음 + 진동 | 상 | +| **레벨업 축하** | 레벨업 시 3초간 화려한 ASCII 이펙트 | 중 | +| **크리티컬 이펙트** | 크리티컬 히트 시 화면 흔들림 + "CRITICAL!" 텍스트 | 상 | + +#### 14.1.1 데미지 팝업 구현 + +```dart +class DamagePopup { + final int damage; + final bool isCritical; + final Offset position; + final double opacity; // 1.0 → 0.0 fade out + final double offsetY; // 위로 떠오름 +} + +// 표시 예시 +// 일반: "45" (흰색, 작게) +// 크리티컬: "127!" (빨간색, 크게, 흔들림) +// 회복: "+30" (녹색) +// 스킬: "DEBUG STRIKE 250" (노란색) +``` + +#### 14.1.2 콤보 시스템 + +``` +콤보 조건: 5초 내 연속 처치 +콤보 보상: +- x2: 경험치 +10% +- x3: 경험치 +15% +- x5: 경험치 +25%, 골드 +10% +- x10: 경험치 +50%, 골드 +25%, 희귀 드롭률 +5% +- x20+: "UNSTOPPABLE!" 칭호 획득 조건 +``` + +--- + +### 14.2 "한 판 더" 유발 요소 + +#### 14.2.1 일일 도전 + +| 요소 | 설명 | +|------|------| +| **일일 미션** | 매일 3개의 미션 (예: "버그 30마리 처치", "크리티컬 10회") | +| **일일 보너스** | 첫 접속 시 골드/아이템 박스 | +| **연속 접속 보상** | 7일 연속 시 전설 아이템 박스 | + +``` +┌─ 일일 도전 ─────────────────────┐ +│ │ +│ ☑ 버그 30마리 처치 [30/30] │ +│ 보상: 골드 500 │ +│ │ +│ ☐ 크리티컬 10회 달성 [7/10] │ +│ 보상: 경험치 물약 │ +│ │ +│ ☐ 레벨업 1회 [0/1] │ +│ 보상: 랜덤 장비 박스 │ +│ │ +│ ───────────────────────────────│ +│ 연속 접속: 5일째 🔥 │ +│ 7일 보상까지: 2일 남음 │ +└─────────────────────────────────┘ +``` + +#### 14.2.2 주간/이벤트 보스 + +| 보스 타입 | 출현 조건 | 보상 | +|----------|----------|------| +| **주간 보스** | 매주 일요일 등장 | 한정 아이템, 대량 골드 | +| **시즌 보스** | 명절/기념일 | 시즌 한정 장비, 칭호 | +| **랜덤 레이드** | 랜덤 (1% 확률) | 희귀 아이템 + 업적 | + +#### 14.2.3 "거의 다 됐어" 심리 + +``` +레벨업까지 남은 경험치가 10% 이하일 때: +→ 경험치 바 색상 변경 (황금색) +→ "조금만 더!" 메시지 표시 +→ 다음 레벨 보상 미리보기 +``` + +--- + +### 14.3 플레이어 선택권 확대 + +#### 14.3.1 스킬 빌드 시스템 + +```dart +class SkillBuild { + final List activeSkills; // 3개 슬롯 + final List passiveSkills; // 2개 슬롯 + final String buildName; // "공격형", "탱커형" 등 +} +``` + +| 빌드 타입 | 특징 | +|----------|------| +| **공격형** | 데미지 스킬 위주, 높은 DPS | +| **방어형** | 회복/방어 스킬, 생존력 특화 | +| **균형형** | 공격 + 회복 혼합 | +| **스피드형** | 쿨타임 감소, 연속 공격 | + +#### 14.3.2 전투 스타일 전환 + +``` +[공격 모드] 🗡️ +- 공격력 +20% +- 방어력 -10% +- 크리티컬 +5% + +[방어 모드] 🛡️ +- 방어력 +30% +- 공격력 -10% +- 블록율 +10% + +[균형 모드] ⚖️ +- 기본 스탯 +- 회복량 +10% +``` + +#### 14.3.3 자동/반자동 전환 + +| 모드 | 설명 | +|------|------| +| **완전 자동** | 모든 것 자동 (기본) | +| **스킬 수동** | 스킬만 수동 선택 | +| **보스전 수동** | 보스전에서만 수동 전환 | + +--- + +### 14.4 감정적 연결 + +#### 14.4.1 캐릭터 성장 기록 + +``` +┌─ 나의 여정 ─────────────────────┐ +│ │ +│ 🎮 함께한 시간: 15시간 34분 │ +│ ⚔️ 처치한 버그: 1,247마리 │ +│ 💀 사망 횟수: 7회 │ +│ 🏆 획득 업적: 23개 │ +│ │ +│ 📝 기억에 남는 순간: │ +│ • 첫 레벨업 (0시간 2분) │ +│ • 첫 사망 (1시간 15분) │ +│ • 첫 전설 아이템 (8시간 22분) │ +│ • 첫 보스 처치 (5시간 47분) │ +└─────────────────────────────────┘ +``` + +#### 14.4.2 상황별 메시지 (유머/위로) + +| 상황 | 메시지 예시 | +|------|------------| +| **첫 사망** | "축하합니다! 첫 번째 교훈을 얻었습니다. 버그는 누구나 만납니다." | +| **연속 사망** | "잠시 쉬어가는 건 어떨까요? 커피 한 잔의 여유..." | +| **레벨업** | "레벨 {n} 달성! 당신의 코드가 더 강해졌습니다." | +| **희귀 아이템** | "운이 좋으시네요! 이건 정말 드문 거에요!" | +| **100 연속 처치** | "무자비한 디버거! 버그들이 당신을 두려워합니다." | +| **장시간 플레이** | "3시간째 플레이 중... 물 한 잔 드세요! 💧" | + +#### 14.4.3 마일스톤 축하 + +| 마일스톤 | 축하 연출 | +|----------|----------| +| 100마리 처치 | "백전용사" 칭호 + 특별 이펙트 | +| 1000마리 처치 | "천인의 적" 칭호 + 업적 팝업 | +| 10시간 플레이 | "헌신적인 개발자" 칭호 | +| 무사망 Act 클리어 | "완벽주의자" 칭호 + 보너스 골드 | + +--- + +### 14.5 예측 불가능한 재미 + +#### 14.5.1 랜덤 이벤트 + +| 이벤트 | 확률 | 효과 | +|--------|------|------| +| **전설 몬스터 출현** | 5% | "갑자기 전설 몬스터가 나타났다!" - 처치 시 대량 보상 | +| **황금 몬스터** | 3% | 골드 10배 드롭 | +| **보물 상자** | 2% | 랜덤 아이템 발견 | +| **도움의 NPC** | 5% | 버프 or 회복 제공 | +| **함정** | 3% | 데미지 or 디버프 (긴장감) | +| **경험치 폭풍** | 1% | 다음 5분간 경험치 2배 | + +#### 14.5.2 행운 시스템 + +```dart +class LuckEvent { + // 연속 불운 시 행운 상승 + int unluckyStreak = 0; + + double getLuckBonus() { + // 10회 연속 일반 드롭 시 희귀 드롭 확률 +50% + return unluckyStreak >= 10 ? 0.5 : 0.0; + } +} +``` + +--- + +### 14.6 사회적 요소 (향후 확장) + +#### 14.6.1 현재 버전 (오프라인) + +| 기능 | 설명 | +|------|------| +| **스크린샷 공유** | 명예의 전당 달성 시 공유 버튼 | +| **기록 내보내기** | 통계를 이미지로 저장 | + +#### 14.6.2 향후 버전 (아스키 아레나) + +| 기능 | 설명 | +|------|------| +| **글로벌 랭킹** | 레벨, 사망 횟수, 클리어 시간 순위 | +| **친구 비교** | 친구의 기록과 비교 | +| **PvP 아레나** | 명예의 전당 캐릭터로 대전 | +| **길드 시스템** | 협력 레이드 보스 | + +--- + +## 15. 피해야 할 요소 + +### 15.1 지루함 유발 요소 + +| 피해야 할 것 | 이유 | 대안 | +|-------------|------|------| +| **긴 대기 시간** | 아무 일도 안 일어나면 지루함 | 항상 뭔가 진행 중 표시 | +| **반복 메시지** | 같은 문구 반복은 지루함 | 30+ 가지 변형 메시지 | +| **단조로운 전투** | 항상 같은 패턴 | 랜덤 이벤트, 크리티컬, 콤보 | +| **느린 초반** | 첫 30분이 지루하면 이탈 | 초반 빠른 레벨업 + 튜토리얼 보상 | + +### 15.2 불쾌감 유발 요소 + +| 피해야 할 것 | 이유 | 대안 | +|-------------|------|------| +| **불공정한 즉사** | 예측 불가능한 사망은 스트레스 | HP 보고 대응 가능하도록 | +| **과도한 페널티** | 레벨 다운은 너무 가혹 | 장비 상실만 (레벨/인벤 유지) | +| **강제 광고** | 게임 흐름 방해 | 광고 없음 | +| **과금 유도** | 필수 과금은 불쾌 | 무과금 완전 클리어 가능 | +| **복잡한 UI** | 정보 과다는 혼란 | 핵심 정보만, 상세는 별도 탭 | + +### 15.3 혼란 유발 요소 + +| 피해야 할 것 | 이유 | 대안 | +|-------------|------|------| +| **설명 없는 시스템** | 무엇인지 모르면 답답 | 첫 등장 시 툴팁/튜토리얼 | +| **너무 많은 스탯** | 이해하기 어려움 | 핵심 6개만 강조 | +| **숨겨진 메커니즘** | 어떻게 작동하는지 모름 | 공식 공개 (도움말) | + +--- + +## 16. 핵심 재미 요약 + +``` +┌─────────────────────────────────────────────────────┐ +│ │ +│ 🎮 ASCII Never Die의 5가지 재미 │ +│ │ +│ 1. "조금만 더" - 다음 레벨업이 가까워! │ +│ → 경험치 바, 레벨업 보상 미리보기 │ +│ │ +│ 2. "오 뭐지?" - 예상 못한 전설 아이템! │ +│ → 랜덤 이벤트, 희귀 드롭 연출 │ +│ │ +│ 3. "다시 해보자" - 사망해도 다시 도전! │ +│ → 적절한 페널티, 빠른 복귀 │ +│ │ +│ 4. "나 잘하네" - 통계로 보는 내 성장! │ +│ → 상세 통계, 업적, 마일스톤 │ +│ │ +│ 5. "수집 완료!" - 도감 100% 달성! │ +│ → 몬스터/아이템 도감, 수집 보상 │ +│ │ +└─────────────────────────────────────────────────────┘ +``` + +--- + +## 17. 작업 우선순위 및 의존성 + +```mermaid +graph TD + P1[Phase 1: 전투 시스템] --> P2[Phase 2: 아이템] + P1 --> P5[Phase 5: 종족/클래스] + P2 --> P3[Phase 3: 스킬] + P1 --> P4[Phase 4: 사망/부활] + P2 --> P4 + P3 --> P4 + P5 --> P6[Phase 6: 밸런싱] + P4 --> P6 + P6 --> P7[Phase 7: 콘텐츠] + P7 --> P9[Phase 9: 스토리] + P9 --> P10[Phase 10: 명예의 전당] + + P8[Phase 8: UI/UX] -.-> P1 + P8 -.-> P4 +``` + +### 권장 작업 순서 + +1. **Phase 1: 핵심 전투 시스템** (필수, 모든 것의 기반) +2. **Phase 2: 아이템 시스템** (전투 시스템 활용) +3. **Phase 5: 종족/클래스 특화** (전투 시스템과 병렬 가능) +4. **Phase 3: 스킬 시스템** (전투 + 아이템 필요) +5. **Phase 4: 사망/부활 시스템** (전투 + 아이템 + 스킬 필요) +6. **Phase 8: UI/UX 개선** (다른 Phase와 병렬 진행 가능) +7. **Phase 6: 밸런싱** (모든 시스템 완료 후) +8. **Phase 7: 콘텐츠 확장** (밸런싱 후) +9. **Phase 9: 스토리/엔딩** (콘텐츠 확장 후) +10. **Phase 10: 명예의 전당** (최종) + +--- + +## 18. 총 예상 작업량 + +| Phase | 신규 코드 | 수정 코드 | 파일 수 | +|-------|----------|----------|---------| +| 1. 전투 시스템 | 400 | 200 | 5 | +| 2. 아이템 | 500 | 300 | 6 | +| 3. 스킬 | 600 | 200 | 6 | +| 4. 사망/부활 | 500 | 200 | 7 | +| 5. 종족/클래스 | 400 | 150 | 7 | +| 6. 밸런싱 | 300 | 400 | 5 | +| 7. 콘텐츠 | 1000 | 200 | 5 | +| 8. UI/UX | 400 | 200 | 6 | +| 9. 스토리 | 600 | 100 | 5 | +| 10. 명예의 전당 | 400 | 100 | 5 | +| **합계** | **5,100** | **2,050** | **57** | + +총 예상 코드량: ~7,150 LOC + +--- + +## 19. 위험 요소 및 대응 + +| 위험 | 영향 | 대응 방안 | +|------|------|----------| +| 밸런스 붕괴 | 게임성 저하 | 시뮬레이션 테스트, 점진적 조정 | +| 복잡도 증가 | 유지보수 어려움 | 모듈화, 문서화 철저 | +| 기존 세이브 호환성 | 사용자 데이터 손실 | 마이그레이션 로직 필수 | +| 성능 저하 | UX 저하 | 프로파일링, 최적화 | +| 원본과의 괴리 | 정체성 혼란 | 명확한 차별화 선언 | + +--- + +## 20. 버전 계획 + +| 버전 | 포함 Phase | 목표 | +|------|-----------|------| +| v0.5.0 | 1, 2 | 기본 전투 + 아이템 | +| v0.6.0 | 3, 5 | 스킬 + 종족/클래스 | +| v0.7.0 | 4, 8 | 사망/부활 + UI | +| v0.8.0 | 6 | 밸런싱 완료 | +| v0.9.0 | 7, 9 | 콘텐츠 + 스토리 | +| v1.0.0 | 10 | 명예의 전당, 정식 출시 | + +--- + +*문서 작성일: 2024년* +*ASCII Never Die - 게임 시스템 개편 계획 v1.0*