# Skybound Skill Slot Limit Weapon 5 Passive 5 작성일: 2026-04-26 13:29 KST ## 요청 요약 - 사용자가 획득할 수 있는 스킬 수량에 제한을 둔다. - 총 10개 스킬을 보유할 수 있게 한다. - 10개 중 5개는 무기, 5개는 패시브로 분리한다. - 슬롯이 부족한 상태에서 새 스킬을 선택하려 하면 `슬롯이 부족합니다`에 해당하는 노티가 필요하다. - 슬롯 제한 때문에 사용하지 못하는 스킬이 목록에 나올 수 있으므로 `Skip Upgrade` 선택지도 계속 필요하다. - 5/5 구조가 적절한지 검토한다. ## 판단 현재 Skybound에는 무기와 패시브 풀이 이미 넓고, 8스테이지까지 성장해야 한다. 따라서 지금 시점에서는 `무기 5개 + 패시브 5개`가 적절하다. 더 줄이는 선택지도 가능하지만, 아직은 권장하지 않는다. - 4/4는 빌드 정체성이 더 강해지는 대신 초반 선택 운 영향이 커진다. - 5/5는 Survivor.io/Vampire Survivors류의 성장 폭과 전략성을 적당히 유지한다. - 6/6 이상은 사용자가 거의 모든 것을 들고 가는 느낌이 강해져 빌드 선택 의미가 약해진다. 그래서 이번 패스에서는 5/5를 기본값으로 적용했다. ## 적용한 변경 ### Skill Slot Limit 추가 `skills.ts`에 슬롯 제한 상수를 추가했다. ```ts export const SKILL_SLOT_LIMITS = { WEAPON: 5, PASSIVE: 5, } ``` 이제 시스템 전반에서 동일한 기준을 사용한다. ### 후보 생성 필터링 `ProgressionSystem.generateSkillCards()`와 `generateMiniBossRewardCards()`에서 슬롯 제한을 반영했다. 규칙: - 이미 보유한 스킬은 계속 레벨업 가능하다. - 새 무기 획득은 무기 슬롯이 5개 미만일 때만 가능하다. - 새 패시브 획득은 패시브 슬롯이 5개 미만일 때만 가능하다. - 슬롯이 꽉 찬 타입의 새 스킬은 정상 후보 생성에서 제외한다. ### 선택 시 슬롯 부족 방어 혹시 예외 경로로 선택 불가 카드가 들어오거나, UI/엔진 동기화 타이밍 문제로 새 스킬 선택이 들어올 수 있다. 그래서 `ProgressionSystem.applySkillSelection()`에도 최종 방어를 추가했다. 슬롯이 부족하면: - 스킬을 추가하지 않는다. - 게임을 재개한다. - 전투 화면에 `WEAPON SLOTS FULL` 또는 `PASSIVE SLOTS FULL` 텍스트를 띄운다. - 보조 텍스트로 `Choose another module or skip`을 띄운다. ### Store 레벨 방어 `useGameStore.addSkill()`에도 동일한 슬롯 제한 방어를 추가했다. 이유: - UI나 엔진 외부에서 `addSkill()`이 호출되더라도 잘못된 스킬이 저장되지 않게 하기 위함이다. - `__skip__`도 기존처럼 저장되지 않는다. ### Level Up UI 슬롯 상태 표시 `LevelUpModal` 상단에 현재 슬롯 상태를 표시한다. 표시: - `Weapons 0/5` - `Passives 0/5` 슬롯이 가득 차면 해당 배지가 붉은 톤으로 바뀐다. ### SLOT FULL 카드 표시 정상 후보 생성에서는 사용 불가 카드가 거의 나오지 않지만, 예외적으로 pre-generated cards나 fallback 상태에서 들어올 수 있다. 이 경우 카드에 다음 표시를 추가했다. - `SLOT FULL` 태그 - `No empty weapon/passive slot` 설명 - `WEAPON slots are full` 또는 `PASSIVE slots are full` 사용자는 이때 새로 추가된 `Skip Upgrade`를 선택해 넘길 수 있다. ## 설계 의도 슬롯 제한의 핵심은 빌드 선택을 더 전략적으로 만드는 것이다. 제한이 없으면 사용자는 결국 대부분의 무기와 패시브를 다 들고 가게 되고, 선택의 의미가 약해진다. 5/5 구조에서는 다음 판단이 생긴다. 1. 무기 슬롯 하나를 새 무기에 쓸 것인가? 2. 기존 무기 레벨업을 기다릴 것인가? 3. 패시브 슬롯을 EVO 재료에 쓸 것인가? 4. 생존 패시브를 포기하고 공격 패시브를 가져갈 것인가? 5. 지금 후보가 별로면 스킵할 것인가? 이번 변경은 `Skip Upgrade`의 존재 이유도 더 명확하게 만든다. ## 수정 파일 - `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/skills.ts` - `/Volumes/Data/project/Antigravity/Skybound/src/features/game/store/useGameStore.ts` - `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ProgressionSystem.ts` - `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/LevelUpModal.tsx` - `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/LevelUpModal.css` ## 검증 - `npm run build` 성공 - `/sprites/player.png` 경고 없음 - 출력 디렉터리: `dist/28` ## 후속 플레이테스트 체크 포인트 - 무기 5개를 보유한 상태에서 새 무기 후보가 정상 레벨업 목록에서 제외되는지 확인한다. - 패시브 5개를 보유한 상태에서 새 패시브 후보가 정상 레벨업 목록에서 제외되는지 확인한다. - 이미 보유한 무기/패시브는 슬롯이 가득 차도 레벨업 가능한지 확인한다. - 예외적으로 `SLOT FULL` 카드가 보일 때 선택하면 슬롯 부족 노티가 뜨는지 확인한다. - `Skip Upgrade`가 슬롯 제한 상황에서 자연스러운 탈출구로 작동하는지 확인한다. - 5/5가 너무 넉넉하거나 너무 답답하지 않은지 확인한다.