게임 개발/학습 일지

언리얼 내배캠 - 언리얼 멀티플레이 기초 RPC(Remote Procedue Call)

이개 2026. 6. 19. 11:31
RPC란?
  • 호출하는 PC와 실행하는 PC가 달라도 되게끔 해주는 통신 기법

  • 대부분 게임에 큰 영향을 끼치지 않는 일시적인 효과들에 사용해야한다.
  • 게임에 큰 영향을 끼치는 것들은 프로퍼티 레플리케이션을 사용해야 한다.
 



 
Call vs Invoke
  • Call
  • Invoke
 
Actor Ownership
  • 네트워크 멀티플레이가 적용되려면, 액터는 서버에서 스폰되고 bReplicated가 true여야한다.
  • 서버에서 스폰된 후 SetOwner(PlayerController) 함수를 호출해야 Client-Owned Actor가 된다.
  • PlayerController가 Local PlayerController와 같다면, 호출한 클라이언트가 소유한 액터가 되어야 한다.
  • PlayerController가 Local PlayerController와 다르다면 다른 클라이언트가 소유한 액터가 되어야한다.
  • 서버에서 스폰되었지만 SetOwner() 함수 호출이 없으면, Server-Owned Actor가 되어야한다.
  • Unowned Actor와 Server-Owned Actor를 같은 개념으로 생각하면 된다.
 
NetMulticast, Server, Client 키워드
  • UFUNCTION() 매크로와 함께 사용되는 키워드
  • 해당 원격 PC에서 RPC를 실행시켜달라는 요청을 나타내야함
  • 실제로 실행될지는 표에 따라 판단
 
NetMulticast RPC는 액터가 레플리케이트 되어있는 모든 컴퓨터에서 실행
 
Server RPC는 클라이언트에서 호출되고 서버에서 실행
  • Server 키워드를 사용
  • ClientConnection이 소유하고 있는 액터에서 RPC가 호출되어야함
 
Client RPC는 서버에서 호출되고 클라이언트에서 실행
  • 해당 ClientConnection이 소유하고 있는 액터에서 RPC가 호출되어야 한다.
  • PlayerController의 멤버 함수로 UFUNCTION 달고 클라이언트 키워드를 넣어주면 된다.
 
WithValidation
  • UFUNCTION() 매크로와 함께 사용되는 키워드
  • 서버에서 실행되는 RPC인 경우에 사용
  • _Implementation() 함수와 _Validate() 함수로 나뉨
 
Unreliable VS Reliable
  • UFUNCTION() 매크로와 함께 사용되는 키워드
  • RPC는 기본적으로 Unreliable
  • 코스메틱(이펙트, 사운드)처럼 큰 영향이 없으면 Unreliable, 충돌, 대미지, 스폰처럼 게임에 큰 영향을 끼치는 로직은 Reliable로 설정
  •