[Unity Mirror] 时间同步

81 篇文章 31 订阅

英文原文:

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;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值