본문 바로가기
공부/Unreal Engine 5

[언리얼5] 멀티플레이 시간 동기화

by MY블로그 2024. 3. 18.

 

멀티플레이 프로젝트를 진행하며 서버와 클라이언트간의 시간차이를 줄이기 위해서는 클라이언트가 서버의 현재시간을 요청하면서 요청한 시간부터 서버에서 회신 하는 시간까지의 타임렉을 이용하여 클라이언트의 시간을 서버의 시간으로 동기화 한다.

 

클라이언트(IsLocalController)가 동기화를 요청

클라이언트에서 동기화를 요청하여 서버RPC를 사용하여 서버의 현재 시간을 확인 한다.

클라이언트에서 서버로 시간 체크

이후 서버는 해당 요청(함수)를 실행하는데 매개변수(클라이언트의 현재시간)를 확인해서 클라이언트에게 시간을 전달 한다.

클라이언트는 서버에서 받아온 시간과 현재 자신의 시간 차이의 값을 계산하고

해당 값을 반으로 나눈(클라이언트 에서요청 시작 ~ 서버가 회신하고 다시클라이언트에게 회신 하기때문에 왕복시간이아닌 편도시간만 계산)시간을 사용하여 어느정도의 차이점(RoundTripTime)을 보완 하도록 한다.

댓글