客户端发送数据包后服务器上的时间

时间:2017-03-31 18:46:19

标签: c# unity3d

我目前正在开发一个带有客户端和服务器的游戏,我正在试图找出一种方法来告诉客户端发送数据包和服务器接收它的时间(所以我可以检查敌人在哪里在那一点上。)

我尝试发送

DateTime.Now.Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds

使用then客户端,然后在收到数据包时检查服务器上的相同值,然后减去它们,但问题是如果客户端和服务器位于不同的时区,时区可能会完全破坏它。它似乎也不是最准确的。

有没有“正确”的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

发送纪元时间不会考虑闰秒,但如果您使用DateTime.UtcNow并以UTC进行所有处理,则不应影响时区更改。使用此方法将允许用户操作该数字,因为它基于计算机时间设置。没有真正正确的方法来处理这个问题。查看许多具有延迟问题的游戏。客户端和服务器端处理都会发生这种情况。

根据游戏类型,此方法的另一个问题是用户的反应取决于实时事件。因此,如果您计算计算的时间,那么结果可能会影响其他玩家的行动。

对于复杂的处理,I think the game 'Eve online' will slow down 'Game Time' for large fights.