BladeAugment
Overview
Unity 6(URP 2D)로 개발한 2D 횡스크롤 액션 RPG입니다. 메이플스토리에서 영감받은 전투 시스템에 카드 기반 스킬 강화 메커니즘을 결합했습니다. 플레이어 이동, 점프, 대쉬, 콤보 공격, 카드 스킬(회오리 등), 적 AI, 웨이브 스폰, 레벨업 시스템까지 핵심 게임 루프를 완성한 상태입니다.
Key Features
Architecture
Unity 6 (URP 2D) ├── Managers (Singleton) │ ├── GameManager: 게임 상태 (Playing/Paused/LevelUp/Dead) │ ├── CardManager: 카드 스킬 데이터 관리 │ └── StageManager: 웨이브 스폰 + 스테이지 진행 ├── Player │ ├── PlayerController: 이동, 점프, 대쉬 │ ├── PlayerCombat: 콤보 공격, 스킬 사용 │ └── PlayerStats: HP, EXP, 레벨 ├── Enemy │ ├── EnemyAI: 상태 머신 (Idle/Chase/Attack/Die) │ └── EnemySpawner: 웨이브 기반 스폰 ├── Data (ScriptableObject) │ ├── CardData: 스킬 카드 정의 │ ├── EnemyData: 적 스탯 정의 │ └── StageData: 스테이지 구성 └── UI: 데미지 팝업, 레벨업 선택, HUD
Results
Phase 0 (기초 시스템) 100% 완료
10개+ 독립 시스템이 유기적으로 동작하는 게임 루프 완성
ScriptableObject 기반으로 기획자가 코드 없이 밸런싱 가능한 구조
Phase 1 (컨텐츠 확장) 준비 완료
Challenges & Solutions
전투 시 히트박스 판정이 프레임 타이밍에 따라 불안정하게 동작
히트박스와 허트박스를 분리하고, 판정을 FixedUpdate 기반으로 변경. 콤보 입력 윈도우를 타이머로 관리하여 일관된 조작감 확보
새로운 적/스킬/스테이지를 추가할 때마다 코드를 수정해야 했음
ScriptableObject 패턴을 도입하여 적 스탯, 카드 스킬, 스테이지 구성을 모두 에셋으로 분리. 코드 변경 없이 인스펙터에서 콘텐츠 추가 가능
게임 상태(전투중/레벨업/일시정지) 전환 시 여러 시스템이 꼬이는 버그
GameManager에 중앙 집중식 상태 머신을 구현하고, 이벤트 시스템으로 상태 변경을 구독하는 패턴으로 시스템 간 의존성 해소