PROJECT OVERVIEW
빠르게 착지하고, 즉시 교전하며, 끝까지 살아남는 핫드롭 전장
핫드롭은 넓은 전장을 오랫동안 탐색하는 기존 배틀로얄과 달리, 제한된 전장에 플레이어가 밀집해 빠르게 착지하고 루팅과 전투에 진입하는 모드입니다. 짧은 준비 시간과 빠르게 좁아지는 안전 구역을 통해 한 경기의 긴장감과 전투 경험을 압축합니다.

PUBG_HotMode는 이러한 핫드롭의 빠르고 밀도 높은 전투 경험을 Unreal Engine 5.7과 Dedicated Server 기반의 멀티플레이 구조로 재현한 프로젝트입니다. 전용 서버가 경기의 규칙과 상태를 관리하며, 클라이언트는 이를 바탕으로 원작의 핵심 플레이 경험을 재현하도록 구성했습니다.
MY CONTRIBUTION
Dedicated Server 기반의 접속·로비·매치 상태와 전투 진입·종료 흐름을 구현하고, HUD·사운드·콘텐츠 에셋까지 통합했습니다.
- 전용 서버 접속·EntryMap·닉네임 입력 흐름
- 로비 준비 상태와 플레이어 목록 동기화
- 매치 상태·생존자 수·최종 순위 관리
- 비행기·낙하산 진입과 카메라·사운드 연동
- 서버 권위 기반 BlueZone 판정·데미지·Overlay
- 사망·관전 대상 전환·결과 UI 파이프라인
- CompassComponent와 커스텀 HUD 렌더링
- Intro·로비 BGM·전투 사운드 및 입력 UX
- 맵 아이템 배치·패키징 설정·멀티플레이 버그 안정화
- MetaHuman 의상 에셋 통합과 캐릭터 외형 구성
02 / MATCH FLOW
서버 기준으로 경기 흐름을 통제하고, 전투·관전·결과를 연결
경기 시작 시점과 비행 경로는 서버가 결정하고, 클라이언트는 전달받은 기준을 이용해 동일한 플레이어 진입 경험을 재현합니다. 이후 사망·관전·결과 상태도 서버 흐름에 맞춰 이어지도록 구성했습니다.

경기 시작과 낙하 상태를 하나의 흐름으로 연결
준비 페이즈의 카운트다운이 끝나면 서버가 전투 상태로 전환하고 비행기를 출발시킵니다. 플레이어의 낙하 입력은 RPC로 전달하며, 서버가 공중 이동과 낙하산 상태를 갱신한 뒤 착지 시 지상 이동으로 복귀시킵니다.
사망–관전–결과 화면 흐름
플레이어의 사망을 단순한 캐릭터 상태 변경으로 끝내지 않고, 생존자 수·순위·관전 대상·결과 화면을 갱신하는 경기 종료 파이프라인으로 연결했습니다.

그 결과 사망 이후에도 관전과 결과 확인이 끊기지 않고 이어지며, 서버가 결정한 경기 상태를 모든 플레이어가 일관된 화면으로 확인할 수 있습니다.
03 / MULTIPLAYER STATE SYNC
요청은 RPC로, 상태는 Replication으로
멀티플레이 기능을 구현하며 모든 정보를 같은 방식으로 전달하지 않았습니다. 클라이언트의 입력이나 일회성 이벤트는 RPC로 서버에 전달하고, 준비 상태·매치 상태·생존자 수처럼 지속적으로 공유되어야 하는 정보는 Replication으로 관리했습니다.
인벤토리 데이터 동기화 최적화
인벤토리에는 Fast Array Serializer를 적용해 전체 목록이 아닌 변경된 아이템만 전송하도록 구성했습니다. 아이템 추가·삭제·수정 항목만 동기화해 인벤토리 규모가 커져도 불필요한 네트워크 트래픽과 클라이언트 갱신 비용을 줄일 수 있었습니다.

04 / NETWORK PROFILING
실제 네트워크 흐름을 프로파일링으로 검증
RPC와 Replication의 동작을 코드만으로 확인하지 않고, Unreal Insights의 Networking Insights를 사용해 실제 전송 흐름을 추적했습니다. -NetTrace=1 -tracehost=localhost -trace=net 옵션으로 네트워크 데이터를 수집하고, 로비 Ready 요청과 복제된 상태가 서버와 클라이언트 사이에서 어떤 시점에 전달되는지 확인했습니다.
이를 통해 코드상 설계와 실제 실행 결과를 비교하고, 불필요한 호출이나 상태 갱신 시점을 검증할 수 있었습니다. 에디터 Standalone 환경에서 빠르게 확인한 뒤, 최종적으로는 패키징된 Dedicated Server 환경에서도 검증해야 한다는 점을 경험했습니다.

RESULT & GROWTH
멀티플레이 시스템을 설계하며 배운 것
분산된 상태를 기준으로 사고하는 법
로컬에서는 정상적으로 동작하던 기능도 서버와 클라이언트의 시점과 권한이 달라지면 다른 결과가 발생했습니다. 단일 실행 흐름이 아닌 분산된 환경을 전제로 시스템을 설계하는 법을 익혔습니다.
동기화 문제를 구조적으로 해결하는 법
입력과 상태, 화면이 서로 다른 시점에 갱신되며 상태 불일치와 전환 오류를 경험했습니다. 임시 예외 처리보다 각 상태의 책임과 전환 기준을 분리해 문제를 해결하는 능력을 키웠습니다.
보이지 않는 문제를 검증하는 법
네트워크 문제는 발생 시점과 원인을 즉시 확인하기 어려웠습니다. 실행 흐름을 추적하고 실제 동작을 검증하며, 근거를 바탕으로 문제를 분석하고 개선하는 습관을 갖게 되었습니다.
PUBG_HotMode를 통해 서버와 클라이언트의 상태를 조율하고, 동기화 문제를 구조적으로 해결하며, 일관된 멀티플레이 경험을 설계하는 개발자로 성장할 수 있었습니다.
↑ 맨 위로
