Mirror Guide Time Synchronization

less than 1 minute read



Time Synchronization

시간 동기

대부분의 알고리즘에서는 클라이언트와 서버 간에 클럭을 동기화 해야하는데 Mirror는 자동으로 해준다.

현재 시간을 얻으려면 다음의 코드를 사용한다.

double now = NetworkTime.time;

클라이언트와 서버에 같은 값이 반환된다. 서버가 시작될 때 0부터 시작한다.

주의할 점은 시간은 double이기 때문에 float을 사용할 경우 시간이 지날수록 클럭의 정밀도가 떨어지게 된다.

  • after 1 day, accuracy goes down to 8ms

  • after 10 days, accuracy is 62ms

  • after 30 days, accuracy is 250ms

  • after 60 days, accuracy is 500ms

또한 Mirror에서는 애플리케이션에서 볼 수 있는 RTT(Round Trip Time)을 계산한다.

double rtt = NetworkTime.rtt;


정확도를 측정할 수 있다.

double time_standard_deviation = NetworkTime.timeSd;

예를 들어 0.2를 반환하는 경우 이것은 시간 측정값이 약 0.2초 위 아래로 오차가 있다는 것을 의미한다.

이 네트워크 딸꾹질은 EMA(Exponential Moving Average, 이동평균법)를 사용하여 값을 평활하게 함으로 보정된다.


ping을 송신하는 빈도를 설정할 수 있다.

NetworkTime.PingFrequency = 2;

계산에 사용되는 ping 결과의 수를 설정할 수도 있다.

NetworkTime.PingWindowSize = 10;