본문으로 건너뛰기
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

RPC 전체 구조 이해하기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“RPC 전체 구조 이해하기” 코드 리뷰에서 유지해야 할 설계 원칙은 무엇인가요?
  2. 문제 2‘Specifier를 호출 위치로 해석’ 실수를 판단할 때 “RPC 전체 구조 이해하기” 강의가 제시한 기준은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

13강. RPC 전체 구조 이해하기 미완료 상태