RPC (Remote Procedure Call) - 네트워크를 통한 함수 리플리케이션 지정하기

목차
RPC (Remote Procedure Call)
네트워크를 통한 함수 리플리케이션 지정하기
RPC (Remote Procedure Call)란?
RPC(Remote Procedure Call)는
네트워크를 통해 원격 위치에 있는 다른 컴퓨터 또는 서버에 함수를 호출하도록 허용하는 프로토콜이다.
주로 멀티플레이어 게임에서 사용되며, 클라이언트와 서버 간의 상호작용을 가능하게 한다.
RPC의 핵심 개념은 함수가 로컬 시스템에서 실행되지 않고, 네트워크를 통해 전송된 후 원격 시스템에서 실행된다는 것이다.
RPC 기능은 언리얼 엔진의 Replication 시스템과 밀접하게 연관되어 있다. Replication은 네트워크 멀티플레이어 환경에서 게임 오브젝트와 그 상태들 사이의 동기화를 담당한다.
RPC의 종류 : Client, Server, NetMulticast
함수를 RPC 로 선언하려면 UFUNCTION 매크로 내에 Server, Client, NetMulticast 키워드를 명시하여 해당 함수가 어떤 유형의 RPC인지 알려줘야 한다.
Client | 함수를 서버에서 호출되지만 클라이언트에서 실행되는 RPC 로 선언 |
Server | 함수를 클라이언트에서 호출되지만 서버에서 실행되는 RPC 로 선언 |
NetMulticast | Multicast RPC는 서버에서 호출된 다음 서버는 물론 현재 연결된 모든 클라이언트에서도 실행되도록 고안된 것이다. |
UFUNCTION( Client ) void ClientRPCFunction(); UFUNCTION( Server ) void ServerRPCFunction(); UFUNCTION( NetMulticast ) void MulticastRPCFunction();
RPC 작동원리
RPC는 클라이언트와 서버 간에 함수 호출을 전송하는 방식으로 작동한다. 이는 네트워크를 통해 원격 위치에 있는 다른 컴퓨터 또는 서버에게 함수 실행을 요청하거나, 결과를 반환받는 것을 가능하게 한다.
1. 함수 정의 | 언리얼 엔진에서 UFUNCTION 매크로를 사용하여 RPC 함수를 정의 이때, 해당 함수가 어떤 유형의 RPC인지(Server, Client, NetMulticast) 명시 |
2. 함수 호출 | 클라이언트 또는 서버가 해당 RPC 함수를 호출. 이때 호출하는 쪽이 '클라이언트'일 경우 '서버'로, '서버'일 경우 '클라이언트'로 메시지가 전달. |
3. 메시지 전송 | 네트워크 프로토콜을 통해 메시지(함수 이름과 인자)가 원격 시스템으로 전송 |
4. 함수 실행 | 원격 시스템에서 메시지를 받으면 해당 시스템에서 그 메시지에 대응하는 함수를 찾아 실행 |
5. 결과 반환 | 만약 RPC가 결과 값을 반환해야 하는 경우(즉, 동기식인 경우), 그 결과 값은 다시 네트워크 프로토콜을 통해 원래 시스템으로 전달되고, 원래의 함수 호출자에게 반환됨. |
RPC 사용시 주의사항
네트워크 오버헤드 | RPC는 네트워크 통신을 필요로 하기 때문에, 호출 횟수가 많아질수록 네트워크 대역폭에 부담을 줄 수 있다. 따라서 불필요한 RPC 호출은 최대한 줄이는 것이 좋다. |
비동기성 | 일반적으로, 네트워크 통신은 비동기적이다. 즉, 함수를 호출하고 결과를 받는 사이에 지연이 발생할 수 있다. 이 점을 고려하여 게임 로직을 설계해야 한다. |
보안 | 클라이언트에서 서버로의 RPC 호출은 잠재적인 보안 위협 요소가 될 수 있다. 클라이언트에서 발생한 데이터나 요청은 항상 신뢰할 수 없으므로, 서버에서는 모든 클라이언트의 요청을 검증해야 한다. |
함수 인자 제한 | 언리얼 엔진의 RPC 시스템은 일부 데이터 유형만 전송할 수 있도록 제한되어 있다. 복잡한 클래스나 구조체 등을 인자로 사용하려면 직렬화(Serialization) 과정이 필요하다. |
호출 순서 | 여러 개의 RPC가 연속적으로 호출될 경우, 그들 사이에 있는 네트워크 지연으로 인해 실제 실행 순서가 코드상의 호출 순서와 다르게 될 가능성도 있다. |
언리얼 공식문서
https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/Networking/Actors/RPCs/
RPC
네트워크를 통한 함수 리플리케이션 지정하기 입니다.
docs.unrealengine.com
https://docs.unrealengine.com/5.0/en-US/rpcs-in-unreal-engine/
RPCs
Designating function replication across the network
docs.unrealengine.com
'⭐ Unreal Engine > UE 개념정리' 카테고리의 다른 글
[Unreal] 언리얼엔진 상속관계(=계층구조) (0) | 2023.04.11 |
---|---|
[Unreal] Unreal Authority (0) | 2023.04.06 |
[Unreal] 이벤트 디스패처 Event Dispatcher (0) | 2023.04.02 |
Slate UI (0) | 2023.03.27 |
[Unreal] UProperty (0) | 2023.03.20 |
댓글
이 글 공유하기
다른 글
-
[Unreal] 언리얼엔진 상속관계(=계층구조)
[Unreal] 언리얼엔진 상속관계(=계층구조)
2023.04.11언리얼 엔진에서 클래스의 상속 관계는 매우 중요한 부분을 차지한다. 언리얼 엔진은 객체 지향 프로그래밍의 특징을 가지고 있기 때문에, 상속은 코드 재사용, 확장성 및 유지 관리를 신경써야 한다. 아래에 언리얼 엔진에서 일반적으로 사용되는 몇 가지 주요 클래스와 그들 사이의 기본적인 상속 관계에 대한 설명을 적었다. 목차 Unreal 상속관계 Unreal 상속관계와 특징 ("Is A" vs "Has A" 관계) 데이터 level에 배치 시각적 실체 Contorller에 의해 빙의 가능 Character movement component Character 전용 기능 UObject O X X X X X AActor O O O X X X APawn O O O O X X ACharacter O O O O O O … -
[Unreal] Unreal Authority
[Unreal] Unreal Authority
2023.04.06글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자입니다 목차 Unreal Authority 언리얼에서의 Authority란? Udemey link - Authority and Replication 설명 https://www.udemy.com/tutorial/unrealmultiplayer/authority-and-replication/ 언리얼 공식문서 https://docs.unrealengine.com/4.27/ko/Resources/ContentExamples/Networking/1_2/ … -
[Unreal] 이벤트 디스패처 Event Dispatcher
[Unreal] 이벤트 디스패처 Event Dispatcher
2023.04.02이벤트 디스패처는 게임이나 애플리케이션에서 애니메이션 트리거, 사운드 재생, UI 요소 업데이트 또는 체크포인트 또는 레벨 전환과 같은 게임 이벤트 트리거와 같은 다양한 용도로 사용할 수 있다. 코드의 다른 부분을 분리하고 프로젝트를 모듈식으로 확장할 수 있는 유연하고 강력한 방법이다. 목차 이벤트 디스패처 Event Dispatcher 이벤트 디스패처란? 언리얼 엔진에서 이벤트 디스패처는 게임이나 애플리케이션에서 서로 다른 객체와 시스템 간의 통신을 위한 강력한 도구이다. 기본적으로 이벤트 디스패처는 이벤트가 트리거될 때 실행되어야 하는 함수 또는 메서드 목록을 보유할 수 있는 변수 유형이다. 이벤트가 발생하면 목록의 모든 함수가 순서대로 호출되어 여러 개체가 동일한 이벤트에 다른 방식으로 응답할 수 … -
Slate UI
Slate UI
2023.03.27글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자입니다 목차 UI Slate UI https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/Slate/ 슬레이트 UI 프레임워크 Slate, 슬레이트는 툴과 게임내 UI 제작에 쓰이는 크로스 플랫폼 유저 인터페이스 프레임워크 입니다. docs.unrealengine.com H H 실행화면 H H H H 실행화면
댓글을 사용할 수 없습니다.