[UE5] Reliable

HyeonjungYun·2025년 3월 12일

언리얼 기초

목록 보기
19/23

Reliable

Reliable은 언리얼 엔진의 네트워크 통신(RPC)에서 사용하는 신뢰성 있는 메시지 전송 방식이다.

Reliable 사용법

// 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기반이다.

  • 기본적으로 빠르지만, 데이터 유실 가능성이 있다.
  • Reliable은 TCP처럼 동작하며, 패킷 유실 시 재전송을 시도한다.

Reliable vs Unreliable

RelableUnreliable
전송 보장O(재전송)X(보장 안 됨)
순서 보장OX
전송 속도상대적으로 느림(재전송 비용)빠름
사용 용도중요한 데이터자주 발생하는 데이터, 중요하지 않은 데이터

Reliable이 필요한 상황

게임의 핵심적인 기능

  • 캐릭터의 스킬 사용 명령
  • 아이템 구매/획득/삭제
  • 채팅 메시지 전송
  • 게임 시작/종료 신호
  • 서버에 저장할 데이터 전송

동작 흐름

  1. 클라이언트가 Reliable함수 호출
  2. 서버로 메시지 전송
  3. 서버가 수신하지 못 하면 자동으로 재전송
  4. 정해진 순서대로 처리되며, 이전 메시지가 도착하지 않으면 이후 메시지도 보류

성능 및 최적화

Reliable을 과도하게 사용하면 네트워크 병목이 발생할 수 있음(재전송 발생시 발생하는 트래픽 지연)

RPC 키워드 정리

키워드
Server서버에서 실행됨
Client클라이언트에서 실행됨
NetMulticast서버가 모든 클라이언트에게 전송
Reliable전송 보장
Unreliable전송 보장 안 함
WithValidation클라이언트 호출 시 서버 검증
profile
게임 프로그래머 공부

0개의 댓글