언리얼 엔진 RPC(1) - 기본 이해
일단 누가 언리얼 엔진의 Replicated나 RPC를 사용한다고 하면 저는 단호하게 Dedicated 서버로 가거나 그냥 싱글플레이를 만들라고 추천할 것입니다.
싱글 플레이 -> 멀티 플레이의 공수가 단순히 2배가 되는게 아니라 체감상 한 5 ~ 6배는 됩니다.
RPC는 크게 Server, Client, NetMulticast로 나뉩니다.
Server는 말 그대로 주 서버를 담당하는 친구 (주로 호스트)
Client는 서버가 아닌 플레이어들 (주로 일반 클라이언트)
NetMulitcast는 서버 + 일반 플레이어라고 생각하면 됩니다.
사용법 예를 들면
PlayerWidget에서 Button을 눌러
PlayerCharacter->SetPlayerColorToRed()이라는 함수를 실행하는게 일반 싱글플레이에서의 방법이다.
다만, RPC에서는 몇가지 방법이 있습니다.
UFUNCTION(Server, Reliable)
Server_SetPlayerColorToRed();
UFUNCTION(NetMutlicast, Reliable)
NetMulticast_SetPlayerColorToRed();
를 선언하고
void Server_SetPlayerColorToRed()
{
NetMulticast_SetPlayerColorToRed();
}
void NetMulticast _SetPlayerColorToRed()
{
SetPlayerColorToRed();
}
이렇게 해서 Server와 모든 플레이어한테 보이는 색을 빨간색으로 바꿔주는 방법이 있다.
이때 netMulticast로 된걸 Client로 바꾸면 모든 플레이어한테서 빨간색으로 바꿔주는게 아니라, 함수를 선언한 플레이어한테만 빨간색으로 바꿔준다.
위에 방법은 단, 일반(서버가 아닌) 플레이어가 호스트한테서 너무 멀어졌다가 다시 가까워지면 빨간색이 아니게 될 가능성이 존재한다.
UFUNCTION 안에 Server/NetMulticast/Client 말고 Reliable/Unreliable도 있는데,
Reliable : 도달을 보장, 너무 많이 쓰면 네트워크에 부하가 올 수 있음
Unreliable : 도달을 보장하지 않음, 움직임과 같은 데이터를 보낼때 소실분이 있어도 괜찮으므로 사용
그래서 OnRep을 사용하는게 좋다.
이거는 다음 시간에 말하겠다.