플레이 영상
개발 도구

언리얼 엔진 5.4
C++ 기반 로직과 블루프린트의 연동을 통해 다양한 게임 시스템을 개발

Rider
언리얼 C++ 코드를 효율적으로 관리하고 디버깅할 수 있는 개발 환경으로 사용

GitHub
팀 프로젝트의 형상 관리를 위해 사용

SourceTree
실시간 상태 확인과 버전 히스토리 추적에 유용하게 활용
프로젝트 진행 과정
개발 초기에 기능별 목표를 정리하고 팀과 함께 공유하면서
주차 단위로 체계적으로 프로젝트를 완성해 나갔습니다.
프로토타입 보고 (2주)
[ 구현 목표 ]
하이트맵을 통한 랜드스케이프 생성
머티리얼 인포 적용
레이어를 활용한 표면 구역 설정
PCG를 활용한 액터 배치
스플라인을 통한 도로 및 울타리 생성
CBT 빌드 보고 (3주)
[ 구현 목표 ]
배치된 건물에 랜덤한 아이템 스폰
바다 구현
이벤트(보급품) 구현
자기장 구현
문 상호작용 구현
OBT 빌드 보고 (2주)
[ 구현 목표 ]
PCG의 스탬프 기능을 통한 최적화
날씨 효과 구현
사운드 추가
주요 기능
실제 사녹 맵 모작
실제 배틀그라운드 사녹 맵의 크기와 구조를 참고하여 언리얼 엔진에서 맵을 구현하였습니다.
머티리얼 레이어 및 블렌딩
높이에 따라 자동으로 머티리얼이 적용되도록 설정하고,
Layer Blending 기능을 활용해 지형 텍스처를 자연스럽게 구성하였습니다.
PCG 시스템 활용
Procedural Content Generation을 이용해 건물, 도로, 바위 등 조건에 맞게 오브젝트를 자동으로 배치하였습니다.
맵 최적화 시스템 요약
콘텐츠를 에디터에서 미리 Bake하여 런타임 계산 최소화 및 로딩 속도 향상 기법인 PCG Bake 활용하였습니다.
다수의 액터를 하나의 Static Mesh로 병합해 렌더링 효율 개선을 진행하였습니다.
GameInstance 기반 시스템 관리
UBaseGameInstance를 활용하여 게임의 전역 데이터와 상태를 관리하는 시스템을 구성하였습니다.
ItemSpawnerComponent를 활용한 랜덤 아이템 스폰 시스템 구현
아이템 스포너 컴포넌트를 통해, 지정된 위치들 중 무작위로 아이템을 선택 및 생성하는 자동 배치 시스템을 구성하였습니다.
문 상호작용 시스템
플레이어가 문 근처에 접근하면 트리거 박스를 통해 감지되어, 타임라인을 활용해 문이 부드럽게 열리거나 닫히도록 구현하였습니다.
자기장 시스템
자기장의 축소는 타임라인을 기반으로 점진적으로 진행되며, 플레이어가 자기장 밖으로 벗어날 경우 게임 어빌리티 시스템(GAS)의 GameplayEffect를 활용해 데미지를 적용합니다.
회고
이번 프로젝트를 통해 처음 접한 PCG 시스템은 맵 제작의 반복 작업을 줄여주고, 규칙 기반 자동 배치의 편리함을 경험하게 해주었습니다. 이를 통해 작업 효율을 높일 수 있었고, 서버와의 연동 구조를 이해하며 멀티플레이 시스템 전반에 대한 기초도 함께 다질 수 있는 계기가 되었습니다.
또한, 그동안 어렵게만 느껴졌던 머티리얼 제작도 직접 다뤄볼 수 있어, 게임의 시각적 요소에 대한 관심과 흥미도 함께 키울 수 있었습니다.
앞으로는 이러한 경험을 바탕으로 더 다양한 방식의 자동 배치와 연출을 시도해보고 싶다는 생각이 들었습니다.