Unreal Engine 멀티플레이어 게임 개발 2-1
1. WHY
- Remote Procedure Call이 무엇인지 이해
- 기초적인 RPC 지식을 이용한 멀티플레이 채팅 구현
Remote Procedure Calls in Unreal Engine | Unreal Engine 5.7 Documentation | Epic Developer Community
Call functions on remote machines across a network in Unreal Engine.
dev.epicgames.com
2. WHAT
- RPC
👉 호출하는 PC와 실행하는 PC가 달라도 되게끔 해주는 통신 기법

언리얼에서 RPC의 용도
: 게임에 큰 영향을 끼치지 않는 일시적인 효과들에 사용. 주로 코스메틱(사운드, 파티클 등)

- Call / Invoke
📚 Call
- 정적인 의미
- 컴파일 타임에 어떤 함수인지, 호출하는 곳과 실행하는 곳이 정해져야 함
- 지금까지 정의했던 일반적인 전역 함수와 멤버 함수가 이에 해당.
- 즉, 직접적으로 함수를 호출하고 실행
📚 Invoke
- 동적인 의미
- 런타임에 어떤 함수인지, 호출하는 곳과 실행하는 곳이 어딘지 정해짐
- 예를 들어, 함수 포인터, 동적 바인딩, RPC 같은 개념들이 이에 해당
- 즉, 간접적으로 함수를 호출하고 실행. (Indirect) RPC도 마찬가지로 "RPC를 Invoke"라고 표현
- Actor Ownership
📚 네트워크 멀티플레이가 적용되려면, 액터는 서버에서 스폰되고 bReplicated 가 true여야 한다.
서버에서 스폰된 후 SetOwner(PlayerController) 함수를 호출해야 Client-Owned Actor가 된다.
📌 PlayerController가 Local PlayerController와 같다면, Client-Owned Actor
- 예: 내 플레이어 캐릭터
📌 PlayerController가 Local PlayerController와 다르다면, Owned by different client
- 예: 내 화면에 보이는 친구의 플레이어 캐릭터
📌 서버에서 스폰되었지만 SetOwner() 함수 호출이 없으면, Server-Owned Actor
- 예: 보물상자 액터
엑터의 소유권 확인하는 느낌~ 클라이언트 소유, 다른 클라이언트 소유, 서버 소유
Unowned Actor와 Server-Owned Actor를 같은 개념으로 생각해도 됨! (튜터님 피셜)
- NetMulticast, Server, Client 키워드
📌 NetMulticast
- “서버를 포함한 모든 클라이언트에서 해당 RPC를 실행시켜주세요”
📌 Server
- “서버에서 해당 RPC를 실행시켜주세요.”
📌 Client
- “클라이언트에서 해당 RPC를 실행시켜주세요.”



- 자주 쓰이는 케이스

👉 RPC가 클라이언트에서 호출되고 서버에서 실행되어야 하는 경우에는 Server 키워드를 사용
- ClientConnection이 소유하고 있는 액터(Client-Owned)에서 RPC가 호출되어야 합니다.
- _Validate() 함수에서 RPC를 실행할지 말지 결정합니다.

👉 RPC가 서버와 모든 클라이언트에서 실행되어야 하는 경우에는 NetMulticast 키워드를 사용
- 서버에서 호출해야 합니다.
- 부하가 심하므로, 빈번하게 호출되게끔 코드를 작성하는 건 권장되지 않습니다.
- ex) Tick() 함수 내에서 NetMulticast RPC 호출.

👉 RPC가 서버에서 호출되고 클라이언트에서 실행되어야 하는 경우에는 Client 키워드를 사용해야 합니다.
- 서버에서 호출해야 합니다.
- WithValidation
UFUNCTION() 매크로와 함께 사용되는 키워드
👉 서버 RPC의 경우에 해당 키워드를 작성하는 것이 권장
_Validate() : 해당 RPC가 서버에서 실제로 실행할지 말지 결정
👉 True 일 때 _Implementation() 실행, False 일 때 실행 X
👉 서버 실행 로직은 무조건적으로 신뢰되기 때문에, 위변조를 막기 위한 방어막 역할
- Unreliable VS Reliable
UFUNCTION() 매크로와 함께 사용되는 키워드
👉 RPC는 기본적으로 Unreliable 키워드를 기준으로 동작
Unreliable : 원격 PC 에서 무조건 실행 보장 X
- 코스메틱(이펙트, 사운드 등)처럼 게임에 큰 영향이 없는 로직
Reliable : 무조건 실행
- 충돌, 데미지, 스폰처럼 게임에 큰 영향을 끼치는 로직
'내배캠Unreal_TIL > UE' 카테고리의 다른 글
| [TIL] 2026-03-11 | 반투명 머티리얼 만들기 (0) | 2026.03.11 |
|---|---|
| [TIL] 2026-03-11 | 멀티플레이 채팅 구현 (0) | 2026.03.11 |
| [TIL] 2026-03-10 | 아웃라인, 역광효과 머티리얼 만들기, Rim Light Effect, World Position Offset (0) | 2026.03.10 |
| [TIL] 2026-03-09 | UE NetMode, NetConnection, NetDriver, NetRole (2) | 2026.03.09 |
| [TIL] 2026-03-09 | 서버의 종류, 데디케이티드 서버 환경 설정 (0) | 2026.03.09 |