언리얼4 RPC
Intro
- RPC 에 대해 알아보기
RPC
Remote Procedure Call
RPC는 로컬에서 호출되지만 다른 머신에서 원격 실행되는 함수를 말한다.
RPC를 이용하면 네트워크 연결을 통해 클라이언트와 서버 사이에 메시지를 전송 할 수 있다.
RPC 사용하기
Client
서버에서 호출되지만 클라이언트에서 실행
UFUNCTION( Client )
void ClientRPCFunction();
Server
클라이언트에서 호출되지만 서버에서 실행
UFUNCTION( Server )
void ServerRPCFunction();
NetMulticast
서버에서 호출되고 서버와 모든 클라이언트에서도 실행
UFUNCTION( NetMulticast )
void MulticastRPCFunction();
멀티캐스트는 클라이언트에서도 호출 가능하지만 이 경우는 로컬에서만 실행된다.
주의사항
-
Actor에서 호출해야한다.
-
Actor는 replicated 여야 한다.
-
클라이언트에서 실행되는 RPC는 해당 Actor를 소유하고있는 클라이언트에서만 실행
-
클라이언트에서 호출하고 서버에서 실행되는 RPC는, 클라이언트는 호출되는 Actor를 소유해야한다.
-
Multicast는 예외.
신뢰성
기본적으로 비신뢰성이므로, 확실한 실행을 원한다면 Reliable
키워드를 사용
UFUNCTION( Client, Reliable )
void ClientRPCFunction();
인증
악성 데이터, 입력감지를 위한 관문 역할을 하는 Validation
함수를 추가하려면 WithValidation
키워드를 추가하면 된다.
UFUNCTION( Server, WithValidation )
void SomeRPCFunction( int32 AddHealth );
그리고는 다음과 같이 Implementation
과 Validate
함수를 추가해주면 된다.
void ARaidPlayer::StartSprintServer_Implementation()
{
...
}
bool ARaidPlayer::StartSprintServer_Validate()
{
if(조건)
{
return false;
}
return true;
}
참고문서
http://api.unrealengine.com/KOR/Gameplay/Networking/Actors/RPCs/
댓글남기기