Twisted Spread适合多人赛车模拟?

时间:2009-11-14 01:49:40

标签: python networking udp twisted multiplayer

你觉得Twisted Spread可能适合多人赛车模拟器(在性能方面)吗?该应用程序的其余部分基于Python-Ogre。

Perspective Broker可以运行(可靠吗?)UDP?

2 个答案:

答案 0 :(得分:5)

这几乎可以肯定是一个合理的协议。记住优化的基本规则:不要这样做。使用任何基于TCP的协议比使用任何基于UDP的协议要容易得多。对于项目的成功而言,这最初要比在客户端和服务器之间发送消息需要30毫秒或45毫秒更重要。最终,当你已经明确了你的项目可能真的成功并且你真的需要弥补这15(或多少)毫秒时,你可以重新访问网络层并考虑是否存在性能瓶颈(无论是延迟)或其他一些指标)是由于您选择的协议。如果是这样,那就是花时间评估各种替代方案的时候了。只有在这一点上,选择理想协议的努力才能得到回报(因为你离已完成的项目更近),到那时你将有一个显着改进对问题的理解,应该非常具体地确定你的要求,另外两件事将使选择适当的协议(无论是基于TCP还是基于UDP)的任务更容易,更可能是正确的。

答案 1 :(得分:3)

对于你的第一个问题,是的,PB的表现对于实时游戏来说是完全足够的。已经使用PB编写了几个游戏。例如,MV3D使用Twisted和Python-OGRE来呈现共享的物理模拟。

对于第二个问题,PB运行以流为导向的传输。它可以在“可靠的UDP”之上运行,使用像PTCP模块一起出现的顶点。

但是,您应该知道“可靠的UDP”通常比普通的旧TCP执行得更差。互联网上的路由器都了解TCP,并可以通过理解来优化它。如果你在UDP之上实现可靠性,那么你需要实现与TCP等效的功能,然后有几个因素会对你造成不利影响:

  • 您的可靠性实现必须在您的应用程序中运行,而不是在操作系统内核中运行。
  • 你的TCP实现必须做与TCP相同的事情,否则你将面临意想不到的网络环境中的神秘错误。
  • 沿途的路由器无法针对您的自定义可靠性层进行优化

在某些情况下,UDP“更快”的原因是通过不可靠来丢弃TCP所做的大部分工作。如果您的消息传递层不可靠,那么您必须知道它所传递的数据可以被任意丢弃。

通常,适合在游戏中通过UDP传输的数据是移动数据。当您的位置发生变化时,您可以发送UDP数据包并将其丢弃,因为游戏只关心您的最近的位置 - 一旦收到更新,之前的所有位置都无关紧要。如此多的游戏通过一个(不可靠的)UDP通道发送移动数据,然后通过更可靠的TCP通道发送所有控制消息。

但是,让 - 保罗关于优化的答案很好地表明了你何时可以考虑实施这种优化。