"압도적인 물량의 쾌감과 전략적 디펜스의 조화"
[ 기업 협약 프로젝트 ]
본 프로젝트는 디벨로켓에듀의 언리얼 엔진을 활용한 게임 개발자 부트캠프 과정 중, 블랙스톰과의 기업 협약을 통해 진행된 프로젝트입니다.
| 분류 | 내용 |
|---|---|
| 협업 기업 | 블랙스톰(BLACKSTORM) |
| 개발 기간 | 2026.02 ~ 2026.04 (약 8주) |
| 개발 인원 | 5인 (Team. 행운의 토끼발) |
| 엔진 버전 | Unreal Engine 5.6 |
| 주요 라이브러리 | Gameplay Ability System(GAS) Enhanced Input Niagara Particle System Unreal Motion Graphic(UMG) |
| 대상 플랫폼 | PC(Window) / Mobile(Android) |
Lunar Realm 은 서브컬처 감성의 RPG와 자동 디펜스(Auto-Defense) 장르를 결합한 게임입니다. 플레이어는 메인 캐릭터를 직접 조작하거나 자동 전투를 통해 몰려오는 대규모 적 웨이브를 막아내고, 아군 유닛을 소환하여 적의 기지를 파괴해야 합니다.
| 분류 | 내용 |
|---|---|
| 장르 | 수집형 RPG + 자동 디펜스 |
| 시점 | 가로 사이드뷰 (2.5D/3D 리소스 기반) |
| 핵심 컨셉 | 다수의 적을 처치하는 Hack & Slash의 쾌감 + 아군 멤버/장비 조합을 통한 전략적 디펜스 |
| 레퍼런스 | 냥코 대전쟁, 팔라독 |
git clone https://github.com/jbaem/Lunar_Realm.git
# .uproject 파일을 우클릭하여 Generate Visual Studio project files 실행
# .sln 파일을 열어 Development Editor 구성으로 빌드 (Win64)| 기능 | 관련 클래스 | 설명 |
|---|---|---|
| 월드 이동/비동기 로드 | ULRGameInstance ALRTransitionGameMode |
인게임 에셋 로딩 시 발생하는 프레임 드랍을 방지하기 위해 심리스 트랜지션 및 비동기 레벨 스트리밍 구조를 구축했습니다. |
| 스테이지 관리 | UStageManagerSubsystem | 아웃게임과 인게임 간의 연결을 담당하는 전용 서브시스템입니다. 아웃게임에서는 각 스테이지의 기본 정보와 클리어 여부(진행도)를 관리하며, 인게임 진입 시 핵심 데이터를 전달하도록 구현했습니다. |
| 인게임 흐름 | ALRStageGameMode | 인게임 진입 시 초기화, 웨이브 시작, 게임 종료, 일시 중지 등 인게임에서 발생하는 모든 실시간 흐름을 제어합니다. |
| 기능 | 관련 클래스 | 설명 |
|---|---|---|
| UI 관리 | UUIManagerSubsystem | 게임 내 모든 UMG 위젯의 스택 및 레이어 순서(Z-Order)를 제어하는 전용 서브시스템을 구축했습니다. |
| 위젯 생명주기 최적화 | ULRBaseWidget | 모든 UI의 기반이 되는 최상위 Base 클래스입니다. 위젯의 생성/활성화/비활성화/파괴 등의 생명주기(Lifecycle) 처리를 공통화 및 자동화 했습니다. 팀원들이 위젯을 추가할 때 가상 함수 내부의 핵심 비즈니스 로직만 오버라이드하여 구현할 수 있도록 설계하여 메모리 누수를 방지했습니다. |
| 아웃게임 요소 | UI | 가챠(뽑기)를 제외한, 로비, 도감 등 아웃게임의 UI 콘텐츠 전반을 구현했습니다. |
| 기능 | 관련 클래스 | 설명 |
|---|---|---|
| 텍스쳐 수정 (에디터 확장) | UTextureUtility | 그래픽 리소스 가공을 위해 외부 편집 툴(포토샵 등)을 켜야하는 번거로움을 줄이고자 언리얼 에디터를 확장한 툴입니다. 에디터 내부에서 실시간으로 이미지 반전, 결합 등 간단한 텍스처 편집 작업의 처리를 지원합니다. |
| 런타임 디버깅 | ULRCheatManager | 테스트 및 밸런싱 검증 효율화를 위해 CheatManager를 확장했습니다. 개발 단계에서 재화 강제 지급, 스테이지 해금, 무적 모드 등의 디버깅 커맨드를 런타임 환경에서 제어할 수 있도록 지원합니다. |
| 오브젝트 풀링 | UPoolingSubsystem | 잦은 동적 할당으로 인한 프레임 스파이크를 방지했습니다. |
상속 관계나 기능(Gameplay, System, UI)에 따라 분류하여 개발자가 헤더 파일 및 클래스를 직관적으로 찾을 수 있게 구성했습니다.
Lunar_Realm/
├── Config/ # 프로젝트 설정 파일 (.ini)
├── ExternalSource/ # 외부 정적 데이터
├── Source/LunarRealm/ # C++ 소스 코드 (Public / Private)
├── Content/ # 언리얼 에셋 (Blueprint, Material, DT 등)
├── Image/ # README 및 문서용 이미지 에셋
└── Document/ # 기타 공유 문서
폴더 구조 상세 보기
Source/LunarRealm/Public/
├── AI/ # Behavior Tree 노드 (Service, Task, Decorator)
├── Actors/ # 월드 배치용 기타 기능 액터
├── Anim/ # 애니메이션 관리 (AnimInstance, AnimNotify)
├── Core/ # 게임 흐름 제어 (GameInstance, GameMode, GameState)
├── Data/ # 전역 상수, 열거형(Enum), 데이터 에셋 정의
├── GAS/ # Gameplay Ability System (Gameplay Ability, AttributeSet, Tags)
├── Input/ # Enhanced Input 기반 입력 매핑
├── Interfaces/ # 공용 인터페이스
├── Projectiles/ # 투사체 종류별 로직
├── SaveGame/ # 로컬 데이터 직렬화 및 게임 세이브 구조
├── Structures/ # 스폰, 기지 등 핵심 코어 데이터 (기지, Spawner)
├── Subsystems/ # 엔진 생명주기 기반 모듈형 매니저 및 설정
├── Systems/ # 전역 시스템 유틸리티 (Logging, CheatManager, Texture Utility)
├── UI/ # UMG 위젯 연동 클래스
└── Units/ # 캐릭터 및 컴포넌트 (Character, PlayerController, AIController)
- 모든 외부 리소스는
Content/Asset/하위에서 임포트한 에셋 유형별로 분류하여 관리했습니다.- 에셋 네이밍은 언리얼 표준 접두사 규칙(
M_Material,WBP_Widget Blueprint 등)을 준수하여 리소스 탐색 효율을 보장했습니다.
| 분류 | 설명 |
|---|---|
| Subsystem 중심 설계 | 전역 매니저 객체들은 GameInstanceSubsystem 및 WorldSubsystem 기반의 모듈형 구조로 설계하여, 모듈 간 결합도를 낮추고 안전한 생명주기를 확보했습니다. |
| Gamplay Ability System 기반 전투 | - 언리얼 인젠의 GAS 프레임워크를 도입하여 스킬(Ability), 효과(Effect)의 확장성을 확보했습니다. - Tag 기반 로직 제어: GameplayTag를 활용해 상태 이상, 스킬 트리거, 쿨타임을 데이터 주도형태로 관리했습니다. |
| Data-Driven (데이터 주도형 설계) | 캐릭터 스탯, 장비 정보, 가챠 확률 등 모든 밸런싱 데이터를 Excel 파일과 DataTable을 통해 관리 했습니다. |
| Object Pooling 최적화 | 대규모 물량전 환경에서 유닛 소환, 투사체 생성 시 발생하는 프레임 드랍을 방지하기 위해 전용 PoolingSubsystem을 구현했습니다 |
팀 내 코드 가독성과 협업 효율을 위해 공식 언리얼 엔진 C++ 코딩 표준을 준수합니다.
main: 최종 패키징을 위한 안정화 브랜치develop: 각 기능들의 통합 및 QA를 진행하는 개발 브랜치feature/: 기능 단위 독립 개발 브랜치 (ex.feature/character,feature/ui)
모든 커밋은 프로젝트 변경 내용을 직관적으로 파악할 수 있도록 아래 접두사(Prefix) 규칙을 따릅니다.
| 타입 | 설명 |
|---|---|
feat |
새로운 기능 추가 |
fix |
버그 수정 |
docs |
문서 수정 |
refactor |
코드 리팩토링 |
test |
테스트 코드 |
rename |
파일 및 폴더 이름 수정 및 경로 이동 |
remove |
파일 삭제 |

