Unreal Engine 멀티플레이LESSON 13
RPC 전체 구조 이해하기
난이도입문 → 초급
예상 시간80분
선수지식12강의 Owning Connection
13강. RPC 전체 구조 이해하기
1. 이번 강의에서 해결할 문제
RPC 이름만 보고 “Server는 서버에서 호출”, “Client는 클라이언트가 호출”이라고 이해하면 실행 방향을 거꾸로 설계합니다. Specifier는 어디에서 실행될 함수인가를 뜻하고, 실제 전달 여부는 호출 머신·Actor Ownership·복제 상태에 따라 달라집니다.
2. 학습 목표
3. 핵심 개념
| 종류 | 정상 호출 위치 | 원격 실행 위치 | 대표 용도 |
|---|---|---|---|
| Server | 소유 클라이언트의 복제 Actor | 서버 | 입력 의도·상호작용 요청 |
| Client | 서버의 특정 클라이언트 소유 Actor | 해당 소유 클라이언트 | 개인 오류·확인·화면 명령 |
| NetMulticast | 서버의 복제 Actor | 서버와 현재 관련 클라이언트 | 순간적인 공용 시각·음향 효과 |
RPC는 네트워크 왕복 함수가 아니므로 return 값을 선언하지 않습니다. 결과가 지속되어야 하면 서버가 Replicated Property를 바꾸고, 요청 결과를 특정 사용자에게만 알려야 하면 별도 Client RPC나 상태를 사용합니다.
4. 단계별 실습
RpcProbeActor.h
UCLASS()
class CAPTUREARENA_API ARpcProbeActor : public AActor
{
GENERATED_BODY()
public:
ARpcProbeActor();
UFUNCTION(Server, Reliable)
void Server_ReportReady(int32 ClientSequence);
UFUNCTION(Client, Reliable)
void Client_ConfirmReady(int32 AcceptedSequence);
UFUNCTION(NetMulticast, Unreliable)
void Multicast_PlayReadyPulse();
};
RpcProbeActor.cpp
ARpcProbeActor::ARpcProbeActor()
{
bReplicates = true;
}
void ARpcProbeActor::Server_ReportReady_Implementation(int32 ClientSequence)
{
UE_LOG(LogTemp, Display, TEXT("Server ready Seq=%d Authority=%d"),
ClientSequence, HasAuthority());
Client_ConfirmReady(ClientSequence);
Multicast_PlayReadyPulse();
}
void ARpcProbeActor::Client_ConfirmReady_Implementation(int32 AcceptedSequence)
{
UE_LOG(LogTemp, Display, TEXT("Owning client confirmed Seq=%d"),
AcceptedSequence);
}
void ARpcProbeActor::Multicast_PlayReadyPulse_Implementation()
{
UE_LOG(LogTemp, Display, TEXT("Ready pulse NetMode=%d"), GetNetMode());
}
Probe는 테스트 클라이언트가 소유하도록 서버에서 SetOwner(PlayerController)를 설정합니다. 소유 클라이언트와 비소유 클라이언트에서 Server_ReportReady를 각각 호출해 서버 도달 차이를 기록합니다. 클라이언트가 Multicast를 직접 호출하면 원격으로 퍼지지 않고 호출한 로컬에서만 실행되는 것도 확인합니다.
5. 코드가 동작하는 이유
Server RPC는 소유 연결을 따라 서버로 전달됩니다. 서버가 같은 Actor에서 Client RPC를 호출하면 Owning Connection 하나를 찾아 그 클라이언트에서 실행합니다. 서버 Multicast는 현재 Actor가 관련성 있는 연결들로 전송되며 늦게 접속한 클라이언트에게 과거 호출을 재생하지 않습니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2RPC 전체 구조 이해하기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
13강. RPC 전체 구조 이해하기 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.