0

ゲームの時間差を処理しようとしていますが、計算を正しく行うことができませんでした (私の弱点)。私がこれまでに持っているものは次のとおりです。

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

timeSentToServer は、リクエストが送信されたときの Date.now() です。これは複数の要求のために必要であり、この関数は要求を送信する関数の範囲内にありません。serverTime は、サーバーがリクエストを受信した時刻です

timeDifference は、現在の serverTime と一致させるために Date.now() に追加できる値である必要があります (おそらく数ミリ秒ずれていますが、許容範囲です)。

ただし、私がテストしている1つのデバイスがサーバーよりわずか1秒進んでおり、計算全体がうまくいかないという問題が発生しています

例: currentTime: 968952 sentTime: 968834 serverTime: 967742 difference: 1210

その結果、サーバーよりもさらに先を行っています。

Date.now()-difference は私が探している解決策になりますか? また、この件に関して私が読むことができる他の記事や、別の解決策はありますか?

4

0 に答える 0