Unity 2D 기반 로그라이크 RPG. 플레이어가 스킬과 아이템을 조합해 다수의 몬스터와 전투하는 게임.
- 개발 형태: 개인 프로젝트 (1인 설계 / 구현)
- 기간: 2024.10.29 ~ 2024.11.07 (10일)
동기
Unity 2D 기반의 탑다운 로그라이크 RPG를 만들고 싶었다. 플레이어가 스킬과 아이템을 조합해 다수의 몬스터와 싸우는 게임이고, 에디터에서 데이터를 관리하고 런타임에서 그대로 소비하는 일관된 파이프라인을 직접 설계해보는 것이 목표였다.
다양한 RPG 콘텐츠를 구현하면서 반복적으로 부딪히는 문제가 있었다. 스킬, 아이템, 몬스터 데이터를 각각 별도 스크립트로 관리하다 보니 데이터가 늘어날수록 수정 비용이 급격히 올라갔고, 코드를 직접 건드리지 않으면 밸런싱조차 할 수 없는 구조였다. Unity 에디터 내에서 데이터를 시각적으로 관리하고, 런타임 시스템이 그 데이터를 그대로 소비하는 일관된 파이프라인이 필요했다.
접근
에디터와 런타임을 관통하는 데이터 구조를 먼저 설계했다. [Serializable] 클래스로 정의한 데이터를 EditorWindow에서 편집하고, JSON/CSV로 직렬화해서 런타임에서 역직렬화하는 구조다. 스킬, 아이템, 드롭테이블 각각에 커스텀 에디터 윈도우를 만들어 데이터 생성/수정/검증을 Unity 안에서 완결했다.
런타임 시스템은 모듈 단위로 분리했다. 스킬은 ISkillStat 인터페이스 기반의 타입별 캐스팅 구조, 아이템은 상속 + 인터페이스 혼합 설계, 스탯은 StatModifier 패턴으로 장비/버프/디버프의 동적 적용을 처리했다.
몬스터 길찾기는 A* 알고리즘을 직접 구현했고, Linecast 기반 경로 단순화로 자연스러운 이동을 만들었다.

핵심 구현
| 영역 | 내용 |
|---|---|
| 데이터 관리 | EditorWindow 기반 커스텀 에디터, JSON/CSV 직렬화, 유틸리티 클래스 |
| RPG 시스템 | 스킬(ISkillStat 인터페이스), 아이템(상속+인터페이스), 스탯(StatModifier), 인벤토리(MVC) |
| 몬스터 AI | 타일맵 기반 그리드 노드화, A* 경로 탐색, Linecast 경로 단순화 |
회고
10일이라는 짧은 기간에 에디터 프레임워크부터 런타임 시스템, 길찾기까지 수직으로 관통하는 구현을 했다. 덕분에 에디터-런타임 데이터 파이프라인의 전체 흐름을 직접 설계하고 검증할 수 있었다.
특히 에디터에서 데이터를 시각적으로 관리하면서 런타임에서 그대로 소비하는 구조가 의도한 대로 잘 맞아떨어지는 것을 보면서, 일관된 데이터 모델이 개발 효율과 유지보수성에 얼마나 큰 영향을 미치는지 체감할 수 있었다.
기술 스택
| 기술 | 적용 영역 |
|---|---|
| C# / Unity 2022.3 | 런타임 시스템, 에디터 확장, 데이터 직렬화 |
| EditorWindow / EditorGUI | 아이템/스킬/드롭테이블 커스텀 에디터 |
| JSON / CSV | 게임 데이터 직렬화 포맷 |
| A* Algorithm | 타일맵 기반 몬스터 경로 탐색 및 최적화 |
문서 구성
| 문서 | 내용 |
|---|---|
| 01-데이터-관리-프레임워크 | EditorWindow 기반 에디터 설계, 직렬화, 데이터 무결성 |
| 02-런타임-RPG-시스템 | 스킬/아이템/스탯/인벤토리 모듈 설계와 트러블슈팅 |
| 03-몬스터-길찾기 | A* 경로 탐색, 그리드 노드화, Linecast 경로 단순화 |





























