Reliable은 언리얼 엔진의 네트워크 통신(RPC)에서 사용하는 신뢰성 있는 메시지 전송 방식이다.
// APlayerController.h
UFUNCTION(Server, Reliable)
void Server_DoSomething();
void RequestDoSomthing();
// APlayerController.cpp
void APlayerController::RequestDoSomthing()
{
if (IsLocalController())
{
Server_DoSomething();
}
}
// 클라이언트를 제외한 서버에서만 작동
void APlayerController::Server_DoSomthing_Implementation()
{
// TODO
}
UFUNCTION()매크로에 Reliable키워드를 붙여서 서버와 클라이언트 간 네트워크 함수 호출(RPC)을 안전하게 보장할 때 사용한다.
언리얼 네트워크는 기본적으로 UDP기반이다.
| Relable | Unreliable | |
|---|---|---|
| 전송 보장 | O(재전송) | X(보장 안 됨) |
| 순서 보장 | O | X |
| 전송 속도 | 상대적으로 느림(재전송 비용) | 빠름 |
| 사용 용도 | 중요한 데이터 | 자주 발생하는 데이터, 중요하지 않은 데이터 |
Reliable을 과도하게 사용하면 네트워크 병목이 발생할 수 있음(재전송 발생시 발생하는 트래픽 지연)
| 키워드 | |
|---|---|
| Server | 서버에서 실행됨 |
| Client | 클라이언트에서 실행됨 |
| NetMulticast | 서버가 모든 클라이언트에게 전송 |
| Reliable | 전송 보장 |
| Unreliable | 전송 보장 안 함 |
| WithValidation | 클라이언트 호출 시 서버 검증 |