# Skybound Low Level First Upgrade Offer Balance

작성일: 2026-04-26 13:16 KST

## 요청 요약

- 게임 플레이 중 Tactical Level Up으로 무기/스킬 업그레이드 후보가 나온다.
- 이미 많이 레벨업한 무기가 계속 후보에 자주 나오면 특정 무기 몰빵이 쉬워진다.
- 레벨이 낮은 무기/스킬이 다음 후보에 포함될 확률을 더 높인다.
- 레벨이 높은 무기/스킬은 낮은 레벨 스킬 대비 후보 포함 확률을 낮춘다.

## 핵심 문제

기존 `ProgressionSystem.generateSkillCards()`는 이미 보유한 스킬과 near-max 스킬에 보너스를 주는 구조였다.

기존 구조의 문제:

1. 한 무기가 빠르게 고레벨까지 몰릴 수 있다.
2. Lv4 → Lv5 직전 스킬이 자주 후보에 떠서 성장 속도가 급격해진다.
3. 다양한 무기를 경험하기보다 가장 강한 무기 하나가 빠르게 완성된다.
4. Stage 1-2 중반부터 빌드가 너무 빨리 안정화될 수 있다.

## 적용한 변경

### 후보 선택 방식 변경

기존에는 카테고리별로 후보를 고르고, 보유/시너지/near-max에 가중치를 더했다.

변경 후에는 각 스킬마다 `offer weight`를 계산한다.

가중치 기준:

- 남은 레벨이 많을수록 가중치 증가
- Lv0/Lv1 스킬은 상대적으로 더 자주 등장
- Lv3 이상 스킬은 가중치 감소
- max 직전 스킬은 강하게 가중치 감소
- 시너지/EVO 보너스는 유지하되, 고레벨 스킬을 압도적으로 밀어주지는 않음

### 고레벨 몰빵 완화

Near-max 스킬은 기존에 오히려 보너스를 받았지만, 이제는 낮은 확률로만 나온다.

적용 규칙:

- `currentLevel >= maxLevel - 1`: 가중치 35%로 감소
- `currentLevel >= maxLevel * 0.6`: 가중치 58%로 감소

예시:

- Lv0/Lv1 스킬: 목록에 더 잘 등장
- Lv3/Lv4 스킬: 등장 가능하지만 낮은 빈도
- Lv4 → Lv5 완성: 운이 좋아야 뜨는 마무리 선택으로 변경

### 첫 선택 보정

아직 아무 스킬도 없는 첫 Tactical Level Up에서는 새 무기 후보를 우선 제공한다.

목표는 첫 선택이 빌드 방향을 정하는 순간으로 작동하게 하는 것이다.

### 새 무기 확장 선택 유지

이미 스킬을 보유한 이후에도 새 무기 후보가 완전히 사라지지는 않는다.

변경 후:

- 슬롯 여유가 있고 새 무기가 있으면 65% 확률로 하나의 build-expanding option을 제공한다.
- 나머지 후보는 전체 가중치 풀에서 선택한다.

### Mini-boss Reward Cache 보정

미니보스 보상 카드도 가장 높은 레벨 무기를 무조건 우선하지 않도록 변경했다.

변경 후에는 보유 무기 중에서도 낮은 레벨/남은 성장 여지가 큰 무기가 더 잘 선택된다.

### UI fallback 보정

일반적으로 카드 후보는 엔진에서 생성되지만, 예외적으로 `LevelUpModal`에서 fallback 랜덤이 동작할 수 있다.

이 fallback도 동일한 low-level-first 가중치 규칙을 따르도록 변경했다.

## 설계 의도

이번 변경의 목표는 성장 속도를 늦추는 것만이 아니다.

플레이어가 한 무기를 빠르게 완성해 “이미 빌드가 끝났다”라고 느끼는 시점을 뒤로 미루고, 여러 선택지 사이에서 더 오래 고민하게 만드는 것이 핵심이다.

원하는 플레이 감각:

1. 초반에는 새 무기와 낮은 레벨 무기가 자주 보인다.
2. 중반에는 빌드 방향을 넓히거나 약한 축을 보완하게 된다.
3. 고레벨 완성 선택은 자주 뜨지 않지만, 떴을 때 반갑다.
4. 특정 무기 하나가 너무 빨리 완성되어 난이도를 붕괴시키는 일이 줄어든다.

## 수정 파일

- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ProgressionSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/LevelUpModal.tsx`

## 검증

- `npm run build` 성공
- `/sprites/player.png` 경고 없음
- 출력 디렉터리: `dist/26`

## 후속 플레이테스트 체크 포인트

- Stage 1에서 같은 무기가 너무 빠르게 Lv4/Lv5까지 올라가지 않는지 확인한다.
- 낮은 레벨 무기/패시브가 기존보다 자주 후보에 뜨는지 확인한다.
- 고레벨 완성 선택이 너무 안 떠서 답답하지 않은지 확인한다.
- EVO 경로가 완전히 막힌 느낌이 들지 않는지 확인한다.
- 미니보스 보상 카드가 여전히 보상답게 느껴지는지 확인한다.
