0

试图为游戏处理时间差异,但我无法正确计算数学(我的弱点)。继承人我到目前为止:

function(timeSentToServer, serverTime) {
    var difference = serverTime-timeSentToServer
    var roundTripTime = Date.now()-timeSentToServer;
    var responseTime = roundTripTime-difference;
    timeDifference = responseTime;
}

timeSentToServer 是发送请求时的 Date.now()。由于多个请求,这是必需的,并且此功能不在发送请求的功能范围内。serverTime 是服务器收到请求的时间

timeDifference 应该是我可以添加到 Date.now() 以将其与当前 serverTime 匹配的值(可能关闭几毫秒,但这是可以接受的)

但是,我遇到了一个问题,即我测试的一台设备仅比服务器提前一秒,并且它使整个计算失控

例如:当前时间:968952 发送时间:968834 服务器时间:967742 差异:1210

这导致更领先于服务器。

Date.now()-difference 会是我正在寻找的解决方案吗?另外,我还可以阅读有关该主题的其他文章以及任何不同的解决方案吗?

4

0 回答 0