Metaverse/UE5

RPC

onenewkong 2024. 1. 29. 05:50

RPC(Remote Procedure Call)는 로컬에서 호출되지만 호출하는 머신과는 다른 머신에서 원격 실행되는 함수를 말한다.

RPC 함수는 네트워크 연결을 통해 클라이언트와 서버 사이에 메시지를 전송할 수 있다. 이 기능의 주요 용도는 휘발성인 비신뢰성 게임플레이 이벤트를 위한 것이다. 사운드 재생, 파티클 스폰, 액터의 핵심적인 기능과는 무관한 일시적인 효과와 같은 작업을 하는 이벤트 등을 포함한다.

 

RPC 사용하기

함수를 RPC로 선언하려면 UFUNCTION 선언에 Server, Client, NetMulticast 키워드를 붙여주기만 하면 된다.

ex) 함수를 서버에서 호출되지만 클라이언트에서 실행되는 RPC로 선언하려면

UFUNCTION( Client )
void ClientRPCFunction();

ex) 함수를 클라이언트에서 호출되지만 서버에서 실행되는 RPC로 선언하려면

UFUNCTION( Server )
void ServerRPCFunction();

Multicast RPC는 서버에서 호출된 다음 서버는 물론 현재 연결된 모든 클라이언트에서도 실행되도록 고안된 것이다. 멀티캐스트 함수를 선언하려면 NetMulticast 키워드를 사용하면 된다.

UFUNCTION( NetMulticast )
void MulticastRPCFunction();

 

주의사항

  1. Actor에서 호출되어야 한다.
  2. Actor는 반드시 replicated여야 한다.
  3. 서버에서 호출되고 클라이언트에서 실행되는 RPC의 경우, 해당 Actor를 실제 소유하고 있는 클라이언트에서만 함수가 실행된다.
  4. 클라이언트에서 호출되고 서버에서 실행되는 RPC의 경우, 클라이언트는 RPC가 호출되는 Actor를 소유해야 한다.
  5. Multicast RPC는 예외
    • 서버에서 호출되는 경우, 서버에서는 로컬에서 실행될 뿐만 아니라 현재 연결된 모든 클라이언트에서도 실행된다.
    • 클라이언트에서 호출되는 경우, 로컬에서만 실행되며, 서버에서는 실행되지 않는다.

'Metaverse > UE5' 카테고리의 다른 글

Build Tool  (0) 2024.02.01
Automation Tool  (0) 2024.02.01
Network  (0) 2024.01.29
Animation  (1) 2024.01.25
MyVox - Player Move(1)  (0) 2024.01.25