Files
2nd/10_Wiki/Topics/2026-04-26-Skybound_Skill_Slot_Limit_Weapon5_Passive5.md
T

5.2 KiB

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에 슬롯 제한 상수를 추가했다.

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가 너무 넉넉하거나 너무 답답하지 않은지 확인한다.