[UE5] Replication과 RPC 차이점 정리

eomcri·2025년 3월 20일

이 글은 언리얼 엔진에서 멀티 플레이를 할 때 알아야할 Replication과 RPC의 차이점에 대한 내용을 다루고 있습니다.

Unreal Engine: Replication과 RPC 차이점 정리

네트워크 멀티플레이를 구현할 때 ReplicationRPC(Remote Procedure Call)은 필수적인 과정이다. 두 기능은 서버와 클라이언트 간 데이터 동기화 및 명령 실행을 담당하지만, 목적과 사용 방식이 다릅니다. 이번 포스팅에서는 Replication과 RPC의 차이점을 정리하고, 어떤 경우에 사용해야 하는지 알아보게에요.


1. Replication이란?

Replication(복제)은 서버에서 특정 변수나 객체의 상황을 클라이언트와 자동으로 동기화하는 기능이다. 예를 들어, 플레이어의 체력, 위치, 탄약 개수 등 지속적으로 변화하는 값들은 Replication을 사용하여 서버가 관리하고 클라이언트에 전파한다.

✔️ 사용 방법

  • UPROPERTY(Replicated)를 선언하여 변수 복제 설정
  • GetLifetimeReplicatedProps()에서 복제할 변수 등록
  • 값 변경 시 RepNotify를 활용하여 추가 처리 가능
UCLASS()
class AMyCharacter : public ACharacter
{
    GENERATED_BODY()

public:
    AMyCharacter();

protected:
    UPROPERTY(ReplicatedUsing=OnRep_Health)
    float Health;

    UFUNCTION()
    void OnRep_Health();

    virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
};

void AMyCharacter::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
    Super::GetLifetimeReplicatedProps(OutLifetimeProps);
    DOREPLIFETIME(AMyCharacter, Health);
}

void AMyCharacter::OnRep_Health()
{
    // 클라이언트에서 체력이 변경될 때 실행할 로직
}

2. RPC(Remote Procedure Call)이란?

RPC는 클라이언트와 서버 간 특정 함수를 호출하는 기능이다. Replication이 데이터를 지속적으로 동기화하는 방면, RPC는 특정 이벤트 발생 시 실행되는 것이 틀립니다.

✔️ 실행 방향

  • Server RPC : 클라이언트 → 서버 (클라이언트의 요청을 서버에서 실행)
  • Client RPC : 서버 → 특정 클라이언트 (서버가 특정 클라이언트에 함수 호출)
  • Multicast RPC : 서버 → 모든 클라이언트 (서버가 모든 클라이언트에서 실행)
UCLASS()
class AMyCharacter : public ACharacter
{
    GENERATED_BODY()

public:
    UFUNCTION(Server, Reliable)
    void ServerFire();

    UFUNCTION(NetMulticast, Reliable)
    void MulticastPlayFireEffect();
};

void AMyCharacter::ServerFire()
{
    if (HasAuthority())  // 서버에서만 실행
    {
        // 총아웃 처리
        MulticastPlayFireEffect();
    }
}

void AMyCharacter::MulticastPlayFireEffect()
{
    // 모든 클라이언트에서 총기 발사 이피터 재생
}

3. 마무리

Replication과 RPC를 활용해 효율적인 네트워크 동기화를 구현해야 한다.

  • 상황(State) 동기화가 필요하면 Replication
  • 즉각적인 동작 실행이 필요하면 RPC
profile
게임 개발자가 꿈인 게이머

0개의 댓글