Replicate, RPC 간단 정리

김재혁·2025년 3월 26일

데이터의 성격에 따라 사용 방식을 결정

Replicateion(복제, 단방향)

  • 서버의 중요한 상태 데이터(레벨, 체력 등)를 클라이언트에 지속적으로 동기화 하여 모든 클라이언트가 최신 정보를 공유할수 있도록 해줌.

  • 지정한 변수들은 엔진이 자동으로 클라이언트에 복제

Replication Conditions

  • 최적화 기법으로 필요한 상황(OND_OwnerOnly, COND_InitialOnly 등)에서만 데이터를 전송하여 네트워크 부하를 줄임

  • 델타 업데이트를 통해 전체 데이터 대신 변경된 부분만 전송.

간단 예시

플레이어 레벨업 -> 서버의 PlayerState에 있는 레벨 값이 업데이트 -> Replication을 통해 모든 클라이언트에 그 값이 자동으로 전달

RPC(원격 프로시저 호출, 양방향)

  • 단발성 이벤트(공격, 스킬 사용 등)을 처리하기 위하여 클라이언트와 서버 간에 함수 호출을 통해 데이터를 전달

  • 이벤트 발생 시 필요한 함수만 호출하여 데이터를 전달하는 명시적 호출방식.

  • Server RPC : 클라이언트 -> 서버 호출

  • Multicast RPC : 서버 -> 모든 클라이언트로 이벤트 전송

Reliable RPC

  • 호출이 반드시 서버나 클라이언트에 도달하도록 보장함으로써 호출이 누락되면 문제가 생기는 경우 사용 (레벨업, 중요 아이템 습득)

  • 빈번하게 사용시 네트워크 부하가 커지고 호출 지연이 발생될 수 있음 (기본 Reliable 버퍼 한도는 256개 Packet으로 부하가 걸리거나 하는 상황 발생시 꽉차서 클라이언트 접속이 끊길 수 있음)

Unreliable RPC

  • 호출이 전송되지만 네트워크 상황에 따라 도달하지 않을 수 있어 잦은 업데이트가 필요하거나 호출이 누락되어도 큰 영향을 주지 않는 경우 사용 (이펙트 등)

  • 기본적으론 Unreliable로 설정하고 필요한 경우 Reliable로 바꾸기(언리얼에서 설정을 안할 시 기본값도 Unrealiable)

간단 예시

공격 버튼을 누름 -> 클라이언트에서 서버로 공격 요청 전송 -> 서버가 Multicast RPC를 통해 모든 클라이언트에 공격 애니매이션, 이펙트 등을 전달

0개의 댓글