← Back to Projects

BladeAugment

Phase 0 완료·2025-03·game
C#Unity 6URP 2DInput SystemScriptableObjectAseprite
BladeAugment

Overview

Unity 6(URP 2D)로 개발한 2D 횡스크롤 액션 RPG입니다. 메이플스토리에서 영감받은 전투 시스템에 카드 기반 스킬 강화 메커니즘을 결합했습니다. 플레이어 이동, 점프, 대쉬, 콤보 공격, 카드 스킬(회오리 등), 적 AI, 웨이브 스폰, 레벨업 시스템까지 핵심 게임 루프를 완성한 상태입니다.

Key Features

01플레이어 컨트롤러: 가변 점프, 대쉬, 하단 점프, 8방향 이동을 Unity Input System으로 구현
02콤보 전투 시스템: 연속 공격 판정 + 타이밍 기반 콤보 체인, 히트박스/허트박스 분리
03카드 기반 스킬: ScriptableObject로 카드 데이터 관리, 회오리(Whirlwind) 등 특수 스킬 이펙트
04적 AI & 웨이브 스폰: 상태 머신 기반 적 행동 패턴, StageManager로 웨이브 단위 스폰 관리
05게임 상태 관리: GameManager 싱글턴으로 Playing/Paused/LevelUp/Dead 상태 전환
06데미지 팝업 & UI: 실시간 데미지 표시, 레벨업 선택 UI, HP/EXP 바
07카메라 팔로우: SmoothDamp 기반 플레이어 추적 카메라

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

Problem

전투 시 히트박스 판정이 프레임 타이밍에 따라 불안정하게 동작

Solution

히트박스와 허트박스를 분리하고, 판정을 FixedUpdate 기반으로 변경. 콤보 입력 윈도우를 타이머로 관리하여 일관된 조작감 확보

Problem

새로운 적/스킬/스테이지를 추가할 때마다 코드를 수정해야 했음

Solution

ScriptableObject 패턴을 도입하여 적 스탯, 카드 스킬, 스테이지 구성을 모두 에셋으로 분리. 코드 변경 없이 인스펙터에서 콘텐츠 추가 가능

Problem

게임 상태(전투중/레벨업/일시정지) 전환 시 여러 시스템이 꼬이는 버그

Solution

GameManager에 중앙 집중식 상태 머신을 구현하고, 이벤트 시스템으로 상태 변경을 구독하는 패턴으로 시스템 간 의존성 해소