在简单的Python套接字服务器与客户端之间同步时间
我正在用Python写一个小型多人游戏,算是学习练习的开始。目前,服务器的运行速度是每秒10帧,而客户端则可以随意运行。这种做法可以节省带宽,但如果客户端不告诉服务器它的输入发生在什么时候,所有的输入就会被固定在100毫秒的时间间隔上。那我该如何让客户端和服务器之间的时间同步,以便进行这些修正呢?一个主要的难点是,我需要测量延迟时间,并对此进行补偿。
2 个回答
0
这个问题非常有趣。不过,遗憾的是没有简单的答案。你需要好好理解这个问题,然后找到一个对你的应用来说“足够好”的解决方案。
我最初的想法是,使用网络时间协议(NTP)来从NTP服务器设置机器时钟,应该能解决这个问题。这里面有一个问题是关于抖动缓冲区的,它涉及到数据包延迟变化。这个问题在RFC 3393文档中有详细说明;它讨论了IP性能指标(IPPM)中的IP数据包延迟变化度量。
1
我无意中发现了一篇非常详细的博客文章,讲的是如何在网络中实现分布式物理效果(不使用传统的客户端预测)。我强烈推荐这篇文章,还有几年前Fiedler在GDC上展示的幻灯片。祝你好运!