服务器上的时间,因为客户端发送数据包
问题描述:
我目前正在与客户端和服务器的游戏,并试图找出一种方式来告诉从客户端发送数据包和服务器接收它的时间量所以我可以检查那个时候敌人的位置)。服务器上的时间,因为客户端发送数据包
我试图发送
DateTime.Now.Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds
与当时的客户端,然后只需检查服务器上相同的值时,临危包,然后减去他们,但这样做的问题是,时区可以完全打破这一点,如果客户端和服务器在不同的时区。而且它似乎不是最准确的。
有没有“适当”的方式来做到这一点?
答
发送历元时间不会占用闰秒,但如果您使用DateTime.UtcNow
并执行UTC中的所有处理,则不应影响时区更改。使用此方法将允许用户操纵该号码,因为它基于计算机的时间设置。没有真正正确的方法来处理这个问题。看看有许多延迟问题的游戏。这发生在客户端和服务器端处理。
该方法的另一个问题,取决于游戏的类型,是用户的反应实时取决于事件。所以如果你为了计算而扭转时间,那么结果可能会影响到其他玩家的行动。
对于复杂的操作,I think the game 'Eve online' will slow down 'Game Time' for large fights.
感谢您的链接,但是,只要我有一个从客户端发送数据包到服务器接收的时候,会为我做。我的游戏是PvE,客户端处理冲突。 (因此,当客户端检测到冲突时,它会向服务器发送冲突,然后服务器查看该敌人,查看发生冲突时的位置,并查看冲突是否有效)。由于我的比赛不是PvP,我不必处理任何与其他球员有关的事情。 – user183106
@ user183106在这种情况下,您可以在客户端和服务器上都使用'DateTime.UtcNow'。那个时间是协调的,并且不需要基于某一年。 –