언리얼4 RPC

Intro

  • RPC 에 대해 알아보기

RPC

Remote Procedure Call

RPC는 로컬에서 호출되지만 다른 머신에서 원격 실행되는 함수를 말한다.

RPC를 이용하면 네트워크 연결을 통해 클라이언트와 서버 사이에 메시지를 전송 할 수 있다.

RPC 사용하기

Client

서버에서 호출되지만 클라이언트에서 실행

2

UFUNCTION( Client )
void ClientRPCFunction();

Server

클라이언트에서 호출되지만 서버에서 실행

3

UFUNCTION( Server )
void ServerRPCFunction();

NetMulticast

서버에서 호출되고 서버와 모든 클라이언트에서도 실행

1

UFUNCTION( NetMulticast )
void MulticastRPCFunction();

멀티캐스트는 클라이언트에서도 호출 가능하지만 이 경우는 로컬에서만 실행된다.

주의사항

  1. Actor에서 호출해야한다.

  2. Actor는 replicated 여야 한다.

  3. 클라이언트에서 실행되는 RPC는 해당 Actor를 소유하고있는 클라이언트에서만 실행

  4. 클라이언트에서 호출하고 서버에서 실행되는 RPC는, 클라이언트는 호출되는 Actor를 소유해야한다.

  5. Multicast는 예외.

신뢰성

기본적으로 비신뢰성이므로, 확실한 실행을 원한다면 Reliable 키워드를 사용

UFUNCTION( Client, Reliable )
void ClientRPCFunction();

인증

악성 데이터, 입력감지를 위한 관문 역할을 하는 Validation 함수를 추가하려면 WithValidation 키워드를 추가하면 된다.

UFUNCTION( Server, WithValidation )
void SomeRPCFunction( int32 AddHealth );

그리고는 다음과 같이 ImplementationValidate 함수를 추가해주면 된다.

void ARaidPlayer::StartSprintServer_Implementation()
{
	...
}

bool ARaidPlayer::StartSprintServer_Validate()
{
    if(조건)
    {
        return false;
    }
	return true;
}

참고문서

http://api.unrealengine.com/KOR/Gameplay/Networking/Actors/RPCs/

댓글남기기