RPC 기초

haura·2025년 3월 12일
0

UE5

목록 보기
14/21

RPC

  • Remote Procedure(함수) Call의 약자로 로컬에서 실행되지만 다른 머신에서 원격으로 호출되는 함수.

서버와 클라이언트 간 빠르게 명령을 주고받는 데 사용한다.

  • 언리얼 엔진에서 클라이언트에서 서버로 통신하는 유일한 수단이다.
  • RPC 주로 이펙트나 사운드 재생, 파티클 등 액터의 핵심적인 기능과는 무관한 비신뢰성 게임플레이 이벤트를 위해 사용된다.

언리얼에서 RPC 함수를 만드는 방법은 쉽다.

UFUNCTION()에서 원하는 RPC에 해당하는 지정자를 설정해 주고 접미사로 _Implementation을 붙여주면 된다.

예를 들어 헤더파일에서 ClientRPCFunction이라 선언하면 정의는 ClientRPCFunction_Imlementation로 정의해 주면 된다.

Client RPC

  • 서버에서 클라이언트로 호출하는 RPC

이를 활용해 특정 클라이언트에게만 명령을 보낼 수 있음

서버에서 명령을 보낼 클라이언트의 오너십을 소유한 액터를 사용해야함(AActor::GetNetConnection)

즉 액터의 오너십에 의해 RPC의 호출 여부가 결정된다

Server RPC

  • 클라이언트에서 서버로 호출하는 RPC

  • 언리얼 엔진 구조에서 유일하게 클라이언트가 서버의 함수를 호출할 수 있는 기능이다.

서버 쪽에서 클라이언트의 명령을 검증할 수 있는 함수를 구현할 수 있다.

클라이언트의 명령을 검증하는 이유는 이것이 악의적인 것인지 혹은 변조됐는지 확인하기 위해서다.

Client RPC와 동일하게 서버와 동일하게 오너십이 있는 액터를 사용해야 한다

오너십이 있는 액터 : 가장 바깥 오너 액터가 커넥션에 대한 소유권이 있는 액터를 의미한다. AActor::GetNetConnection 함수의 정의를 확인해 보면 이해하기 쉽다.
![](https://velog.velcdn.com/images/hauras/post/2db87003-2dd1-4d14-a4aa-
3c6724acb6a4/image.png)

NetMulticast RPC

  • 서버를 포함해 모든 플레이어에게 명령을 보내는 RPC
    만약 서버에서 호출되면 서버, 모든 클라에서 함수가 호출되고,
    클라이언트에서 호출되면 로컬에서만 호출된다.
    프로퍼티 리플리케이션과 유사하게 연관성 기반으로 동작한다.(오너십이 없어도 동작)
    즉 연관성이 있다면 AutonomousProxy 든 지 SimulatedProxy 든지 상관없 호출됨
  • 프로퍼티 리플리케이션과 유사하지만 다른 용도로 사용

RPC 키워드

0개의 댓글