Unreal Engine 5와 C++를 활용하여 제작한 PC / VR 대응 1인 개발 방탈출 게임 프로젝트입니다.
던전 탐험, 오브젝트 상호작용, 인벤토리 시스템, VR 환경에서의 UI 조작을 중심으로 구현했습니다.
| 항목 | 내용 |
|---|---|
| 작업 기간 | 2024.04 ~ 2024.05 |
| 인력 구성 | 1인 개발 |
| 사용 언어 | C++ |
| 개발 환경 | Unreal Engine 5 |
| 플랫폼 | PC / VR |
| 기여도 | 100% |
| 역할 | 기획, 레벨 디자인, 클라이언트 개발, VR 상호작용 구현 |
CryptRider는 어두운 던전 공간에서 퍼즐과 기믹을 해결하며 진행하는 방탈출 게임입니다. PC 환경뿐 아니라 VR 기기에서도 플레이할 수 있도록 HUD, 오브젝트 상호작용, 인벤토리 조작 방식을 VR 환경에 맞게 재설계했습니다.
주요 구현 목표는 다음과 같습니다.
- Unreal Engine 5 기반 던전 방탈출 게임 구현
- Lumen 조명을 활용한 몰입형 던전 분위기 구성
- 오브젝트 상호작용과 Inventory 시스템 구현
- PC / VR 환경을 모두 고려한 UI 구조 설계
- WidgetInteractionComponent 기반 VR UI 조작 구현
- 기존 Inventory 구조를 재사용한 VRInventory 확장
| 구현 영역 | 주요 스크립트 |
|---|---|
| 기본 Inventory 시스템 | Inventory.h, Inventory.cpp |
| VRInventory 재정의 | VRInventory.h, VRInventory.cpp |
| Inventory UI | InventoryMenuUserWidget.h, InventoryMenuUserWidget.cpp |
| VR Inventory UI | VRInventoryMenuUserWidget.h, VRInventoryMenuUserWidget.cpp |
| VR 캐릭터 / 상호작용 | VRCharacter.h, VRCharacter.cpp |
| 플레이어 캐릭터 | CryptRiderCharacter.h, CryptRiderCharacter.cpp |
| 아이템 데이터 구조 | ItemData.h, InventoryItem.h, InventoryItem.cpp |
| 인벤토리 아이템 Actor | InventoryItemMaster.cpp, ExaminationActor.cpp |
| 플레이어 컨트롤러 | CryptRiderPlayerController.h, CryptRiderPlayerController.cpp |
| 설계 다이어그램 | CryptRider.drawio |
Medieval Dungeon Asset Pack을 기반으로 던전 레벨을 구성하고, Unreal Engine 5의 Lumen 글로벌 일루미네이션을 활용해 횃불과 샹들리에의 빛이 벽과 바닥에 자연스럽게 반사되도록 설정했습니다.
어두운 분위기의 방탈출 게임이기 때문에 조명, 그림자, 음영을 통해 플레이어가 몰입할 수 있는 던전 환경을 만드는 데 집중했습니다.
주요 구현 요소:
- Medieval Dungeon Asset Pack 기반 던전 구성
- Lumen Global Illumination 적용
- 횃불 / 샹들리에 기반 광원 배치
- 라운드별 방탈출 기믹 배치
- 어두운 분위기와 집중도 있는 공간 연출
VR 기기에서 HUD와 오브젝트를 자연스럽게 사용할 수 있도록 VR 전용 상호작용 구조를 구현했습니다.
VRHand DataConfig를 정의하여 손 움직임을 자연스럽게 표현하고, VR 환경에서도 UI와 오브젝트를 직관적으로 조작할 수 있도록 설계했습니다.
관련 코드:
주요 구현 요소:
- VRHand DataConfig 기반 손 움직임 구성
- VR 환경에서의 오브젝트 상호작용
- VR HUD 출력 구조 설계
- 컨트롤러 기반 입력 대응
Unreal Engine의 UMG를 활용하여 Inventory UI를 개발했습니다. InventoryMenu와 Slot UI를 분리하고, 각 슬롯 상태를 캡슐화하여 관리할 수 있도록 설계했습니다.
또한 BlueprintImplementableEvent를 활용하여 C++ 기반 로직과 Blueprint 확장성을 함께 확보했습니다.
관련 코드:
주요 설계 특징:
- UMG 기반 Inventory UI 구현
- InventoryMenu / Slot 구조 분리
- Slot 상태 캡슐화
- C++ 로직과 Blueprint 확장성 연결
기존 Inventory 시스템을 완전히 분리하지 않고 상속 구조를 활용하여 VRInventory를 재정의했습니다. 이를 통해 PC와 VR이 동일한 데이터 구조를 공유하면서도, VR 환경에 맞는 UI 조작 경험을 제공하도록 구성했습니다.
UInventory
└── UVRInventory
관련 코드:
주요 구현 요소:
- 기존 Inventory 클래스 상속
DropItem()재정의AddItem()재정의UpdateInventorySlot()재정의- VR 환경에 맞는 3D Inventory HUD 구성
Lumen 기반 조명을 활용하는 과정에서 던전 내부에 외부 광원이 침투하는 빛샘 현상이 발생했습니다. 방탈출 게임의 핵심 분위기가 어두운 던전이었기 때문에, 작은 광원 누수도 몰입감을 크게 저하시켰습니다.
- 얇은 Mesh 구조에서 광원 Trace가 외부까지 계산됨
- Lumen Trace Distance가 과도하게 넓게 설정됨
- 던전 외곽 Mesh 두께가 부족함
- Edge Stones와 Floor Mesh를 추가 배치하여 외부 광원 침투 차단
- Post Process Volume에서 Lumen Trace Distance 조정
- 던전 구조를 폐쇄형 공간 기준으로 보강
- 불필요한 빛샘 현상 제거
- 횃불과 샹들리에 기반 조명 분위기 안정화
- 던전 탐험 몰입감 향상
기존 PC 기반 Inventory UI는 VR 환경에서 사용 시 거리감과 깊이감이 맞지 않아 조작이 불편했습니다. 2D UI를 단순히 출력하는 방식은 VR 환경에서 몰입감을 떨어뜨리는 문제가 있었습니다.
- VR 환경에서도 자연스럽게 UI를 조작할 수 있는 구조 설계
- 기존 Inventory 시스템 재사용
- PC / VR 공통 데이터 구조 유지
WidgetInteractionComponent를 활용하여 VR 손 기반 UI 조작 구현- 기존
UInventory를 상속받아UVRInventory재정의 - World Space UI를 활용하여 3D 공간 내 Inventory 출력
- VRHand DataConfig를 구성하여 손 움직임 보정
관련 코드:
- VR 환경에서도 자연스러운 Inventory 조작 가능
- 기존 Inventory 로직을 재사용하여 유지보수성 확보
- PC / VR 모드 간 공통 구조 유지
PC용 Inventory와 VR용 Inventory를 완전히 분리하면 동일한 아이템 데이터와 슬롯 로직이 중복될 가능성이 있었습니다. 따라서 기존 Inventory를 상속하고 필요한 동작만 재정의하여, 공통 데이터 구조를 유지하면서 VR 전용 UX를 확장했습니다.
VR 환경에서는 Screen Space UI보다 실제 공간에 존재하는 UI가 몰입감을 높입니다. Inventory HUD를 3D 공간에 배치하여 사용자가 실제 오브젝트처럼 UI와 상호작용할 수 있도록 구성했습니다.
VR 환경에서는 마우스 입력 대신 손 위치와 컨트롤러 기반 상호작용이 필요합니다. WidgetInteractionComponent를 활용하여 레이 기반 UI 조작을 구현했고, VR 컨트롤러로 Inventory를 자연스럽게 조작할 수 있도록 만들었습니다.
- VR 환경에서는 단순 UI 출력보다 사용자의 시야, 거리감, 손 위치가 중요하다는 점을 학습했습니다.
- 기존 시스템을 유지하면서 VR UX를 추가하는 과정에서 상속 구조와 재사용 가능한 설계의 중요성을 체감했습니다.
- Unreal Engine 5의 Lumen을 활용할 때 레벨 구조와 Post Process 설정이 조명 품질에 큰 영향을 준다는 점을 경험했습니다.
- Hand Tracking 기반 상호작용 추가
- Motion Smoothing을 통한 손 움직임 보정
- VR UI 피드백 강화
- 퍼즐 기믹과 상호작용 오브젝트 확장
- 플레이어 동선과 조명 가이드 개선
- Unreal Engine 5
- C++
- UMG
- Blueprint
- Lumen
- WidgetInteractionComponent
- VR / XR
자세한 기술 정리와 이미지 자료는 Notion 포트폴리오에서 확인할 수 있습니다.