unreal 5기

251203 언리얼엔진 본캠프 80일차 Replication Notify

parkjinnam 2025. 12. 3. 17:20

Replication Notify란?

언리얼엔진을 이용한 멀티플레이어 게임을 개발할 때 변수의 값이 변경되는 순간 동기화해야 하는 경우가 있을 것이다. 단순히 Replicates를 통해서 해당 변수를 복제해 준 뒤 Tick함수에서 Tick마다 호출하는 방식으로도 구현 가능하겠지만 모든 변수에 Tick을 물리기는 어려운 게 현실이다. 이러한 상황에서 사용하는 것이 

Replication Notify

이다.

 

Replication Notify는 변수가 복제되어 값이 갱신 되는 순간 자동으로 특정 함수가 호출되는 기능이다. 서버에서 값을 변경하면 변경된 값을 받은 클라이언트에서 지정된 OnRep 함수를 자동으로 실행한다. 앞서 예시로 들었던 Tick에 비해 필요한 상황에서만 호출되기 때문에 성능적으로 이점을 가져갈 수 있는 방식이 되겠다.

 

RPC(Remote Procedure Call)과 다른점?

RPC와 Replication Notify가 다른 점은 중도참여에 있다. 예를 들어 플레이어가 문을 여는 것을 MulticastRPC로 구현한다 생각해 보도록 하자 플레이어가 문을 열어 문이 열리게 되면 현재 접속 중인 모든 플레이어에게 문이 열리게 된다. 하지만 그 이후로 다른 플레이어가 접속한다면 해당 플레이어는 RPC를 받지 못했기 때문에 문은 닫혀있는 것으로 보이게 된다.

 

반면에 Replication Notify로 구현하게 된다면 현재의 문 액터의 로테이터 값을 동기화받기 때문에 중도 참여한 플레이어의 화면에도 문이 열려 있는 것으로 보이게 되는 것이다.

 

RepNotify를 사용하면서 주의해야 할 점

RepNotify는 클라이언트가 서버로부터 변경된 값을 받았을 때 호출되는 함수다. 절대 서버에서 자동 호출되지 않는다는 점을 기억해야 한다. 서버가 변수 값을 바꾸더라도 서버 자신에게는 복제가 일어나지 않기 때문에 OnRep 함수가 실행되지 않는 것이다. 이를 해결하기 위해서는 값을 변경한 뒤 OnRep함수를 직접 호출해 주면 된다. 또한 값이 실제로 변해야 호출이 된다는 점도 주의해야 한다.