본문 바로가기
Unreal

Replication / RPC

by ji-han 2025. 3. 17.

Replication 속성은 서버에서 클라이언트로 특정 액터의 동기화를 하는지에 대해 설정하는 것

 

RPC는 네트워크 환경에서 서버-클라이언트 간의 함수를 실행할 수 있도록 해주는 기능

 

RPC 종류 3가지

Run on Server 클라이언트에서 실행 서버에서 호출
Run on Owning Client 서버 " 특정 클라이언트 "
Multicast 서버 " 모든 클라이언트 "

 

Run on Server

-클라이언트가 물건을 생성하고자 함수를 호출하여 서버에서 물건을 생성하는 방식

물건을 생성하였는데 모든 클라이언트에서 보이지 않기에 Replication을 통해 모든 클라이언트에서 볼 수 있도록 설정

 

Run on Owning Client

- 특정 클라이언트만을 대상으로 실해하는 것으로 UI업데이트/ 카메라 등 클라이언트 마다 다를 수 있는 것에 대해 실행

 

Multicast

- 모든 클라이언트를 대상으로 이펙트 / 몬스터 애니메이션 등을 실행 시킴

 

* Run on Server에서 물건을 생성하는 함수를 호출하고 Multicast로 물건을 생성하는 것을 생각해보았지만

충돌 판정 문제같은 것이 발생할 수 있기에 서버에서만 생성하고 Replication를 설정하는 것이 더 안정적

 

 

--------2025.03.20---------------

 

사용법

1. 클라이언트가 서버에서 실행되길 원하는 함수를 호출

UFUNCTION(Server, Reliable)

void 함수명

Server - 서버에서 실행됨

서버에서 실행된다고 해도 HasAuthority()의 Bool 값 등을 이용해 서버인지를 확인하는 코드 작성

 

2. 서버가 특정 클라이언트에서만 실행하고 싶은 함수를 호출

UFUNCTION(Client, Reliable)

void 함수명

IsLocallyControlled()를 사용해서 특정 로컬 플레이어인지를 확인 필요

 

3. 서버가 모든 클라이언트에서 실행하고 싶은 함수를 호출

UFUNCTION(NetMulticast, Reliable)

void 함수명

 

 

* Reliable // Unreliable

Reliable - 네크워크 패킷이 반드시 전달되도록 함

Unreliable - 패킷 손실시 재전송되지 않음 -> 네트워크 부하 감소

 

'Unreal' 카테고리의 다른 글

간단한 미니맵 만들기  (0) 2025.04.11
FPS / V-Sync  (0) 2025.04.02
언리얼 네트워크와 객체 통신  (0) 2025.03.12
래그돌  (0) 2025.03.06
사운드 적용  (0) 2025.03.05