28 lines
1.5 KiB
Markdown
28 lines
1.5 KiB
Markdown
# 52. 라운드별 적 등장 시스템 (Round-based Enemy Pool)
|
|
|
|
## 1. 목표 (Goal)
|
|
- 게임 진행도(라운드)에 따라 등장하는 적들을 다르게 설정하여 난이도 곡선을 구현합니다.
|
|
- `enemies.json` 데이터에 `tier` 필드를 추가하고, 스테이지에 맞는 적을 소환하는 로직을 `EnemyTable`에 구현합니다.
|
|
|
|
## 2. 구현 상세 (Implementation Details)
|
|
|
|
### 데이터 구조 변경 (`enemies.json` & `EnemyTemplate`)
|
|
- **JSON:** `tier` 필드 추가 (1, 2, 3).
|
|
- **Tier 1:** Goblin, Slime, Wolf, Orc Warrior(Elite).
|
|
- **Tier 2:** Bandit, Skeleton, Giant Spider(Elite).
|
|
- **Tier 3:** Shadow Assassin, Armored Bear, Dark Knight(Elite).
|
|
- **Template:** `tier` 필드를 파싱하고 저장하도록 클래스 업데이트.
|
|
|
|
### 로직 구현 (`EnemyTable`)
|
|
- **`getRandomEnemy(int stage)` 메서드 추가:**
|
|
- 현재 스테이지에 따라 목표 Tier를 결정 (1: 1~12, 2: 13~24, 3: 25+).
|
|
- 해당 Tier의 적 목록에서 랜덤 선택.
|
|
- 해당 Tier의 적이 없을 경우 하위 Tier 또는 전체 풀에서 선택하는 폴백 로직 포함.
|
|
|
|
### 전투 연동 (`BattleProvider`)
|
|
- `_prepareNextStage`에서 적 생성 시 `EnemyTable.getRandomEnemy`를 호출하여 스테이지에 적합한 적이 등장하도록 변경.
|
|
|
|
## 3. 결과 (Result)
|
|
- 게임 초반에는 약한 적, 후반에는 강한 적이 등장하여 단계적인 난이도 상승을 경험할 수 있습니다.
|
|
- 데이터 주도적으로 적의 등장 시기를 제어할 수 있게 되었습니다.
|