マルチプレイヤーゲームの帯域幅を節約するために、サーバーティックごとにすべてのオブジェクトを更新するのではなく、各オブジェクトがupdateRateを持ち、このオブジェクトがXサーバーティックごとに更新されることをゲームに伝えます。
オブジェクトの更新メッセージを受け取ったとき、次の更新が来ると予想される時間を計算します。
origin = serverCurrentPosition
diff = serverNextPosition - origin
arriveTime = now + timeBetweenTicks * updateRate
オブジェクトを描画するとき、次の更新までの残り時間を計算し、それに応じて位置を補間します。
step = 100 / timeBetweenTicks * updateRate
delta = 1 - step * ((arriveTime - now) / 100)
position = origin + diff * delta
それは動作します...しかし、図面にはまだ少しのジッターがありますが、私の理論では、スケーリングはある程度のラグを処理する必要があるので、すべてがうまくいくはずです、そうでしょうか?
ここでの質問は、これが最良のアプローチですか?実際の遅延を計算に入れる必要がありますか?もしそうなら、どうすればいいですか?私はいくつかの実験を行いましたが、ジッターは悪化しました。