본문으로 바로가기

Remote Procedure Call (RPC)

네트워크를 통해 전달되어 원격 시스템에서 실행되는 함수 호출 메커니즘

  • Replication이 서버의 상태를 클라이언트로 자동 동기화하는 데이터 중심
  • RPC는 서버와 클라이언트 간에 “행동(이벤트)”을 전달하기 위한 수단

Replication과 RPC의 차이

구분 Replication RPC
방향 서버 → 클라이언트 서버 ↔ 클라이언트
대상 상태 데이터(Property) 함수 호출
목적 상태 동기화 명령, 요청, 이벤트 전달
호출 주체 서버 서버 또는 클라이언트 (제약 있음)

RPC 사용 예시

  • 클라이언트가 서버에 이동, 공격, 상호작용을 요청할 때
  • 서버가 특정 클라이언트에게 UI 정보나 결과를 전달할 때
  • 서버가 모든 클라이언트에게 연출, 사운드, 이펙트를 재생시킬 때
    (게임 상태에 직접적인 영향을 주지 않는 비결정적 연출)

RPC 종류

Server RPC

  • 서버에서 실행되는 함수
  • 호출 조건: 해당 Actor를 소유한 클라이언트
  • 실행 대상: 서버
  • 주 용도: 클라이언트의 입력을 서버에 전달

Client RPC

  • 특정 클라이언트에서 실행되는 함수
  • 호출 조건: 서버에서만 호출 가능
  • 실행 대상: 해당 Actor를 소유한 클라이언트
  • 주 용도: 개별 클라이언트 피드백. (스킬 판정 결과, 퀘스트 수행 결과, 특정 연출 등)

NetMulticast RPC

  • 서버와 현재 연결된 모든 클라이언트에서 실행되는 함수
  • 호출 조건: 서버에서만 호출 가능
  • 실행 대상: 연결된 모든 클라이언트
  • 주 용도: 이펙트, 애니메이션, 사운드 등 연출 동기화