我正在制作多人游戏,尽管可以使用udp套接字将其应用于不同类型的应用程序。
我的服务器每秒向客户端发送60次消息,因为这是我设置的帧率上限。当客户端运行速度低于60 fps时,会发生此问题。发生这种情况时,消息将添加到队列中,然后在应该已经发生之后进行处理。这让我觉得我在玩TPP! :P
除了降低默认fps之外,我能想到的唯一解决方法是每帧清除队列。我现在这样做是这样的:
self.socket.setblocking(0)
msg = ""
try:
while True:
msg = self.socket.recvfrom(1024)[0]
except:
pass
finally:
# Will handle msg here
pass
现在这确实有效,因为它会不断获取尽可能多的消息,直到没有更多消息,然后只使用最后收到的消息。我只是想知道这是否是一种很好的方法,或者是否有更好的方法来处理这个问题。
编辑:我最终坚持使用它,因为它似乎运行良好,从查看其他Python源代码我注意到趋势是有异常是一种可行的方法。我总是只是学习编程,如果你有能力控制编程,你就不应该在编程时遇到异常。我真的希望得到一些反馈,让我走上正确的道路。