英文原文:
https://mirror-networking.gitbook.io/docs/guides/time-sync
对于许多算法,您需要在客户端和服务器之间同步时钟。 Mirror 会自动为您执行此操作。
要获取当前时间,请使用以下代码:
double now = NetworkTime.time;
它将在客户端和服务器中返回相同的值。服务器启动时它从 0 开始。请注意,时间是双精度的,永远不应转换为浮点数。将其转换为浮点数意味着时钟将在一段时间后失去精度:
- 1 天后,准确度下降到 8 毫秒
- 10 天后,准确度为 62 毫秒
- 30 天后,精度为 250 毫秒
- 60 天后,精度为 500 毫秒
Mirror 还将计算应用程序看到的 RTT(往返时间):
double rtt = NetworkTime.rtt;
您可以测量准确性。
double time_standard_deviation = NetworkTime.timeSd;
例如,如果返回 0.2,则意味着时间测量值上下摆动大约 0.2 秒
通过使用 EMA 平滑值来补偿网络故障。
您可以配置希望发送 ping 的频率:
NetworkTime.PingFrequency = 2;
您还可以配置计算中使用多少个 ping 结果:
NetworkTime.PingWindowSize = 10;