RPC 유효성 검사(_Validate)

박정훈·2025년 3월 28일

언리얼 네트워크

목록 보기
6/7
//초기상태
UFUNCTION(Server, Reliable, BlueprintCallable)
void ServerRPCFunction(int MyArg);

void AMultiPlayerCourseCharacter::ServerRPCFunction_Implementation(int MyArg)
{
	//...
}
//validation 추가
UFUNCTION(Server, Reliable, WithValidation, BlueprintCallable)
void ServerRPCFunction(int MyArg);

void AMultiPlayerCourseCharacter::ServerRPCFunction_Implementation(int MyArg)
{
	//...
}

bool AMultiPlayerCourseCharacter::ServerRPCFunction_Validate(int MyArg)
{
	return //true; or false;
}

false를 반환하면 Implementation 함수가 서버에서 호출되지 않는다.

원래의 _Validate 함수는 인자(예시에서는 MyArg)가 유효한 값인지 판단하고 잘못된 값이면 false를 반환해서 Implementation 함수를 호출하지 않게 만드는 목적이다.

근데 테스트 환경에서 클라이언트가 자꾸 튕겨서 GPT한테 물어보니,
GPT 왈:
"언리얼 엔진에서는 RPC _Validate 함수가 false를 반환하면, 단순히 _Implementation 함수가 호출되지 않는 것뿐만 아니라 보안상의 이유로 클라이언트의 연결을 끊는 동작을 수행합니다. 이는 클라이언트가 잘못된(또는 부정한) 데이터를 서버에 전달하는 것을 방지하기 위한 기본 메커니즘입니다."

_Validate 함수를 짤 때는 클라이언트가 튕기지 않게 조심히 짜야겠다.

0개의 댓글