1. 개요
멀티플레이어 게임에서
클라이언트와 서버가 데이터를 주고 받기 위해 사용하는
복제 (Replication)과 원격 함수 호출(RPC)에 대해 살펴보자.
2. 복제 (Replication)
복제는 서버 -> 클라이언트 단방향으로 데이터를 동기화한다.
클라이언트에서 서버 방향으로는 데이터를 동기화할 수 없다.
복제는 Actor나 Property의 Replicates = true로 설정하면
해당 데이터가 변경되었을 때
언리얼 엔진에서 제공하는 기능을 통해 자동으로 Client들에게 보내지게 된다.
예를 들어 캐릭터의 위치, 체력, 문이 열렸는지 닫혔는지 등 데이터를 동기화하는데 적합하다.
3. 원격 함수 호출 (RPC)
RPC는 외부 인스턴스의 함수를 호출하는 것을 말한다.
- 서버에서 클라이언트의 함수를 호출하는 것
- 클라이언트에서 서버의 함수를 호출하는 것
RPC는 호출 방향에 따라 3가지 종류가 있다.
| RPC 종류 | UF | 설명 | 방향 |
| Server RPC | UFUNCTION(Server) | 클라이언트에서 서버의 함수를 호출 | Client -> Server |
| Client RPC | UFUNCTION(Client) | 서버에서 클라이언트에서 함수를 호출 | Server -> Client |
| Multicast RPC | UFUNCTION(NetMulticast) | 서버에서 모든 클라이언트 및 자기 자신(서버)의 함수를 호출 | Server -> 모든 Client 및 Server |
4. 복제와 RPC 차이
복제는 특정 데이터를 주기적으로 업데이트 해야할 때 사용하며
RPC는 특정 순간에 상대 인스턴스의 함수를 호출하여 로직을 처리할 때 사용된다.
예를 들어 FPS 게임에서 플레이어의 총알 갯수(지속적으로 변하는 값)는 복제로 전송하고
플레이어가 총을 쐈다는 행위는 RPC로 Server에 보내게 된다.
'Unrael > Network' 카테고리의 다른 글
| [UE/Network] 멀티플레이 게임 - 네트워크 개념 (0) | 2025.03.28 |
|---|