Remote Procedure Call (RPC)
네트워크를 통해 전달되어 원격 시스템에서 실행되는 함수 호출 메커니즘
- Replication이 서버의 상태를 클라이언트로 자동 동기화하는 데이터 중심
- RPC는 서버와 클라이언트 간에 “행동(이벤트)”을 전달하기 위한 수단
Replication과 RPC의 차이
| 구분 | Replication | RPC |
| 방향 | 서버 → 클라이언트 | 서버 ↔ 클라이언트 |
| 대상 | 상태 데이터(Property) | 함수 호출 |
| 목적 | 상태 동기화 | 명령, 요청, 이벤트 전달 |
| 호출 주체 | 서버 | 서버 또는 클라이언트 (제약 있음) |
RPC 사용 예시
- 클라이언트가 서버에 이동, 공격, 상호작용을 요청할 때
- 서버가 특정 클라이언트에게 UI 정보나 결과를 전달할 때
- 서버가 모든 클라이언트에게 연출, 사운드, 이펙트를 재생시킬 때
(게임 상태에 직접적인 영향을 주지 않는 비결정적 연출)
RPC 종류
Server RPC
- 서버에서 실행되는 함수
- 호출 조건: 해당 Actor를 소유한 클라이언트
- 실행 대상: 서버
- 주 용도: 클라이언트의 입력을 서버에 전달
Client RPC
- 특정 클라이언트에서 실행되는 함수
- 호출 조건: 서버에서만 호출 가능
- 실행 대상: 해당 Actor를 소유한 클라이언트
- 주 용도: 개별 클라이언트 피드백. (스킬 판정 결과, 퀘스트 수행 결과, 특정 연출 등)
NetMulticast RPC
- 서버와 현재 연결된 모든 클라이언트에서 실행되는 함수
- 호출 조건: 서버에서만 호출 가능
- 실행 대상: 연결된 모든 클라이언트
- 주 용도: 이펙트, 애니메이션, 사운드 등 연출 동기화