Unreal 엔진은 멀티플레이어 게임에서 Server-Client구조를 사용한다.
Server가 정의한 인스턴스가 게임의 상태에 대한 Authority를 가지며, 다른 모든 인스턴스는 Server로부터 업데이트를 받는 Client 이다.
| 실행 모드 | 정의 | 특징 |
|---|---|---|
| Standalone | 네트워킹을 고려하지 않는 단일 인스턴스 | - 싱글 플레이어(Local 세션) - 어떤 것도 다른 곳에 Replicate 하지 않음 - 모든 Gameplay 클래스가 하나의 프로세스에서 실행 |
| Dedicated Server | Server 전용 인스턴스 | - Local 플레이어 없음 - 렌더링 하지 않음. GPU 없이 구동 가능 - 게임 로직과 네트워크 통신만 처리 - 원격 머신이나 클라우드에 배포 |
| Listen Server | 한 플레이어가 동시에 Server 호스트 역할 | - Server이자 Client 역할 수행 - 호스트에게 UI와 PlayerController 존재 - 호스트가 게임을 나가면 Server도 종료 - P2P 스타일 게임에 많이 사용 |
| Client | 호스트가 아닌 모든 플레이어 | - Server로부터 데이터를 받아 표시 - 자신의 입력을 Server에 전송 - 자율적(autonomous) 플레이어 컨트롤러 보유 - 권한 있는 결정과 게임 상태 업데이트는 Server에 의존 |

Unreal Engine의 Gameplay Framework는 다양한 클래스로 구성되며, 이들은 Server와 Client에서 서로 다른 역할을 수행한다.
| 클래스 | 존재 위치 | 역할 |
|---|---|---|
| GameMode | Server | 게임 규칙 제어 |
| GameState | Server와 모든 Client | 게임의 전체적인 정보(e.g. 점수, 시간) 동기화 |
| PlayerController | Server와 자신을 소유한 Client | 각 플레이어의 입력은 자기 Client와 Server에만 알 수 있음 |
| Pawn | Server와 모든 Client | 모든 플레이어가 자신 외의 Pawn도 볼 수 있도록 Server에 Replicate |
이러한 역할 분담을 통해 Server가 Gameplay에 관련된 결정에 독점적인 권한을 갖고, Client는 그에 따른 결과를 표시하며 입력을 Server에 보내는 구조가 명확해집니다.
핵심: 항상 Server의 상태가 최종적으로 신뢰하는 값이다.