언리얼 엔진/언리얼 엔진 이모저모

RPC(Remote Procedure Call)

monstro 2025. 9. 21. 17:26
728x90
반응형

- 개요

언리얼 엔진에서 서버 - 클라이언트간의 데이터를 동기화하는 방법인 Replicate에는 몇가지 단점이 존재합니다.

  • 서버 -> 클라이언트의 단방향으로만 수행
  • 여러 변화가 일어났을 때 뭉쳐서 보내는 특징이 있으므로 단일 변화가 즉시 전송되지 않음

 

이를 위한 대안으로 언리얼 엔진에서 제공하는 RPC를 사용할 수 있습니다.

RPC는 자신이 호출하여 상대방에서 수행하는 함수를 의미합니다.

Replicates와 다르게 단방향으로만 수행하지 않는다는 장점을 지니고 있습니다.

 

1) RPC의 종류 + Reliable 옵션

  • RunOnServer 옵션 : 클라이언트에서 RPC를 호출하면 원격에 있는 서버에서 RPC를 수행
  • RunOnOwningClient 옵션 : 서버에서 RPC를 호출하면 해당 Actor를 소유한 클라이언트에서 RPC를 수행
    • 즉, 2개의 옵션을 모두 사용하면 클라이언트에서 서버로 + 서버에서 클라이언트로 RPC를 사용할 수 있음
  • Multicast 옵션 : 서버에서 RPC를 호출하면 모든 클라이언트 + 서버 자신또한 RPC를 수행
    • 즉, 모두에게 중요한 함수를 수행하기위해 사용

 

RPC는 위와 같이 3개의 옵션이 존재합니다.

필요에 따라서 3개의 옵션 중에서 하나를 선택하여 사용할 수 있습니다.

 

  • 기본값으로 RPC는 비신뢰성이므로 원격에서 RPC의 실행이 보장되지 않음
  • Reliable 옵션 : 설정하면 원격에서 RPC의 실행이 보장됨

 

또 생성한 RPC에 대해서 Reliable 옵션을 어떻게 설정하느냐에 따라 RPC의 신뢰성을 설정할 수 있습니다.

 

2) C++에서의 RPC 사용

C++ 에서의 RPC 관련 키워드

 

UFUNCTION 속성에서 위의 4가지 키워드를 사용하여 RPC를 설정할 수 있습니다.

각각 다음과 같습니다.

  • Server 키워드 : RunOnServer 옵션에 대응
  • Client 키워드 : RunOnOwningClient 옵션에 대응
  • NetMulticast 키워드 : Multicast 옵션에 대응
  • Reliable 키워드 : Reliable 속성을 부여하고 싶은 경우 사용 

 

 

또 RPC로 사용하는 함수를 정의하는 경우 "_Implementation"을 함수이름의 뒤에 수식하여 정의해야 합니다.

위와 같이 함수를 완성했다면 해당 함수는 RPC로서 동작하게 됩니다.

 

3) 블루프린트에서의 RPC 사용

RPC용 커스텀 이벤트 생성

 

블루프린트에서 RPC를 사용하기 위해서는 RPC로 동작할 커스텀 이벤트를 생성해야 합니다.

 

Replicates 옵션 (1)

 

Replicates 옵션 (2)

 

커스텀 이벤트를 선택하고 패널에서 Replicates 옵션을 필요에 따라 설정하면 해당 이벤트는 RPC로 동작합니다.

728x90
반응형

'언리얼 엔진 > 언리얼 엔진 이모저모' 카테고리의 다른 글

Replication 심화  (0) 2025.09.21
소유권(Ownership)  (0) 2025.09.21
플레이어 인덱스  (0) 2025.09.18
서버와 클라이언트의 구분 방법  (0) 2025.09.18
Replication  (0) 2025.09.18