언리얼 엔진 서버 시스템
엔진에서 멀티 플레이 게임 개발을 위해 제공하는 서버 시스템으로 Listen Server와 Dedicated Server 두 가지 방식이 존재한다.
언리얼 서버 방식
1. Listen Server
플레이어 중 한 명이 호스트가 되어 서버 역할을 맡는 방식. 서버와 클라이언트를 동시에 수행한다. 다른 플레이어들은 해당 호스트의 서버에 접속하는 구조다. 설정이 간단하고 별도의 서버 비용이 들지 않아 소규모 멀티플레이어 게임에서 많이 사용된다. 그러나 호스트의 성능과 네트워크 상태에 영향을 받으며, 호스트가 나가면 서버도 종료된다는 단점이 있다.
2. Dedicated Server
서버 전용 프로그램으로, 서버는 게임에 참여하지 않고 오직 게임 로직과 상태만을 관리한다. 클라이언트는 이 서버에 접속해 게임을 플레이하며, 서버는 클라이언트와 독립적으로 운영된다. 안정적인 성능과 대규모 플레이어 지원이 가능해 대규모 멀티플레이어 게임에 적합하다. 다만, 서버 인프라가 별따로 필요해서 운영 비용이 발생하고 설정이 다소 복잡할 수 있다.
Replication 리플리케이트
리플리케이트는 언리얼 엔진에서 서버와 클라이언트 간의 데이터 동기화를 의미한다. 서버에서 관리하는 정보(예: 캐릭터 위치, 체력 등)를 클라이언트에 전달하여 동일한 게임 상태를 유지하도록 한다. 언리얼에서는 변수, 함수, 액터 등을 리플리케이트할 수 있으며, 이를 통해 서버와 클라이언트 간의 정보가 실시간으로 동기화된다.
언리얼 엔진 구조적으로는 서버가 게임의 주요 상태를 관리하고, 클라이언트가 그 정보를 받아서 화면에 렌더링하거나 플레이어에게 보여준다. 서버에서 클라이언트로, 또는 클라이언트에서 서버로 정보를 정확하게 전달하는 것이 리플리케이션인 셈이다. 서버가 게임의 Authority를 가지고 있고, 모든 주요 게임 로직과 상태 업데이트는 서버에서 일어난다.
리플리케이션 속성
Reliable vs Unreliable
Reliable: 반드시 전달되어야 하는 경우에 사용된다. 예를 들어, 플레이어가 죽는 이벤트나 게임의 중요한 상태 변화에 대해서는 Reliable로 설정해 반드시 전송되도록 해야 한다.
Unreliable: 네트워크 상태가 좋지 않을 때 손실될 수 있다. 예를 들어, 캐릭터의 위치 정보처럼 실시간으로 변하는 값은 Unreliable로 설정할 수 있다.
RepNotify:
변수에 대해 ReplicatedUsing 플래그를 설정하면, 해당 변수의 값이 서버에서 클라이언트로 리플리케이트될 때 특정 함수가 자동으로 호출된다.
주요 클래스의 서버-클라이언트 유무 구분
| 클래스 | 서버에서 존재 | 클라이언트에서 존재 | 설명 |
| GameMode | Y | N | 게임 규칙과 흐름 관리, 서버 전용 |
| GameState | Y | Y | 게임 상태 공유 |
| PlayerController | Y | Y | 플레이어 입력 처리 |
| Pawn/Character | Y | Y | 플레이어의 아바타 |
| HUD | N | Y | UI처리 |
| PlayerState | Y | Y | 플레이어 상태 정보 관리 |
'프로그래밍 > 언리얼엔진' 카테고리의 다른 글
| 언리얼 공부 노트 (0) | 2025.02.22 |
|---|---|
| (작업) 홀로그램 만들어보기 (1) | 2024.11.09 |
| [언리얼5.4] Learning Agents 개요 (4) | 2024.09.28 |
| [언리얼] CharacterMovementComponent 파이프라인-1- (1) | 2024.09.12 |
| [언리얼] 엔진 분석 Character Movement Component -0- (3) | 2024.08.30 |