2.8 KiB
2.8 KiB
🔄 In-Game Progression & Evolution (인게임 성장 및 진화 시스템)
카테고리: Skybound, Game Design, Software Architecture 상태: 🔵 구현 완료 (Implemented) 최종 업데이트: 2026-04-22
📌 개요 (Overview)
Skybound의 인게임 성장은 EXP 수집을 통한 레벨업, 3지선다 스킬 선택, 그리고 특정 조건 만족 시 발생하는 '진화(Evolution)'로 구성된다. 이 시스템은 게임 엔진의 상태 기계(State Machine)와 React UI 간의 단방향 데이터 흐름을 기반으로 동작한다.
🛠️ 핵심 메커니즘 (Core Mechanisms)
1. 레벨업 프로세스 (Level-Up Pipeline)
- EXP 수집: 적 처치 시 드롭되는 젬을 수집하여
exp게이지가 차오르면 트리거됨. - Pause Gate Pattern: 레벨업 발생 시 엔진은 즉시
setPaused(true)를 호출하여 인게임을 멈추고,LEVEL_UP이벤트를 UI로 발송한다. - 결정론적 카드 생성: 카드 풀은 UI가 아닌
ProgressionSystem엔진 로직 내에서 생성되어 전달되므로, 엔진의 상태와 UI가 항상 동기화된다. - Resume: 플레이어가 카드를 선택하면
applySkillSelection을 통해 엔진 state가 업데이트되고 다시setPaused(false)로 재개된다.
2. 진화 시스템 (Evolution / EVO)
- 발동 조건: 주 무기(Primary Skill)가 최대 레벨에 도달하고, 특정 보조 무기(Support Skill)를 보유하고 있을 때 다음 레벨업 시 발생.
- NOVA_GUARDIAN:
aoe_nova(Lv.3 MAX) +energy_shield(Lv.1+) 조합의 진화형. - EVO 효과: 단순히 데미지가 증가하는 것이 아니라, 쿨다운 대폭 감소, 반경 확장, 시각적 강화(황금색), 그리고 발동 시 짧은 무적(Shield Burst) 등의 유틸리티 성능이 추가된다.
3. 패시브 동기화 (Passive Sync)
- 패시브 스킬(Fire Rate, Speed, Magnet)은
syncPassives()를 통해 매 프레임 플레이어의EffectiveStats에 주입되어 즉각적인 성능 변화를 체감하게 한다.
💡 주요 설계 패턴 (Design Patterns)
1. TDZ (Temporal Dead Zone) 회피 패턴
useGameEngine내에서ctx선언 전 클로저 참조 문제를 해결하기 위해let ctx선언 후 나중에 할당하는 패턴을 사용하여 초기화 안정성을 확보함.
2. 단방향 데이터 흐름 (Unidirectional Data Flow)
- UI는 엔진의 상태를 직접 수정하지 않고,
applySkill콜백을 통해서만 의사결정을 엔진에 주입한다.
승인인: AI 개발부장 코다리 🫡
관련 코드: ProgressionSystem.ts, evolutions.ts, GameSceneRenderer.tsx, useGameEngine.ts