코닥쿠 2023. 2. 14. 00:40
반응형

기본적으로 RPC는 함수의 온라인 멀티플레이의 원격 프로시저 호출(영어: remote procedure call, 리모트 프로시저 콜, RPC)은 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술이다. 다시 말해, 원격 프로시저 호출을 이용하면 프로그래머는 함수가 실행 프로그램에 로컬 위치에 있든 원격 위치에 있든 동일한 코드를 이용할 수 있다.

 

함수 (컴퓨터 과학) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 함수(function), 서브루틴(subroutine), 루틴(routine), 메서드(method), 프로시저(procedure)는 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분을 의미한다. 함수는 대

ko.wikipedia.org

만약 멀티플레이의 기초적으로 알아야할것은 모든 플레이어는 기본적으로 클라이언트라는 프로세스가 있다.

그림으로 표현하면 이런느낌이다.

각자의 클라이언트가 떨어져있으면 만약 싱글플레이나 각자의 게임이면 누구에게 해를 입히든 방해를 하든 아무상관이 없을거다. 하지만 멀티플레이입장에서는 각 클라이언트들에게 자신이 뭘 했다. 자신이 뭘 했으니 이걸 실행해라 이런조의 호출이 필요한것이다.

그래서 RPC라는 개념이 생긴것이며 언리얼에서는 3가지의 호출방법이 있다. 

1. Server 호출 (Server, 즉 호스트에게 보내는 신호이며 실행을 Server에서 실행을 한다.)

2. Client 호출 (Client, 즉 자신 클라이언트에서 호출하여 실행을 자신 클라이언트에서 실행을 한다.)

3. NetMulticast 호출 (NetMulticast, Client매크로와 같은개념이지만 특별하게 액터소유 클라이언트만이 아닌 다른 연결되어있는 클라이언트 즉 다른 프로세스들에게도 호출해 실행하는 매크로입니다.)

 

여기서 중요한점은 호스트라는것은 Server의 주인장 같은개념이다. Server가  각 Client들에게 전달하는 해당 함수를 실행을 하면 주인장이 하는 모든것을 볼수 있다. 하지만 손님들은 자신의 행동하는 모습을 볼수 없다는것이다. 그래서 손님들은 주인장에게 "나 이것 좀 해도 하겠습니다."하고 실행을 하면 Server에게만 보이며 만약 자신이 하는행동이 다른사람에게 보이고 싶으면 먼저 한다고 알린다음에 각 손님들에게 행동을 보여줘야만 손님들에게도 모습이 보여지는것이다.

 

주인장이 행동을하면 이런식으로 주인장은 어떠한 매크로도 없이 행동의 모습들이 보여짐.
주인장에게 자신을 행동할것이다 알려주며(Server 매크로) 다른 손님들에게 자신의 모습을 보여주고 싶어 각 손님들에게 자신의 모습을 보여줌.(NetMulticast 매크로)

그래서 이렇게 호출을 하면 자신이 원하는 상황에서의 호출이 일어날수 있다.

그 후로는, Reliable(신뢰성)과 WithValidation(인증)이 있다.

Reliable같은 경우에는 기본 함수들은 비신뢰성, 믿지 못하여 RPC함수에 Reliable을 추가를 해야한다. (unreliable도 있지만 이 함수에 대한 호출 복제는 신뢰할 수 없는 채널에서 수행될 수 있습니다.)

 

WithValidation같은 경우에는 최근, 악성 데이터/입력 감지를 위한 관문 역할을 위해 RPC 에 인증같은 개념이다. 만약 진짜로 자신이 정한 속도가 넘어가거나 변수의 말도 안되는 값이 발견될경우 연결 자체를 끊어버린다. 진짜로 끊어버린다. (하지만 입력감지는 자신이 정하는 기준을 세워줘야 끊긴다.)

 

 

RPC

네트워크를 통한 함수 리플리케이션 지정하기 입니다.

docs.unrealengine.com

 

반응형