擅长:python、mysql、java
<p>对于你的第一个问题,是的,PB的性能完全可以满足实时游戏的需要。已经用PB编写了几个游戏。例如,<a href="http://mv3d.com/trac/" rel="nofollow">MV3D</a>使用Twisted和Python食人魔来呈现一个共享的物理模拟。在</p>
<p>对于您的第二个问题,PB运行在面向流的传输上。它可以在“可靠UDP”之上运行,使用vertex附带的<a href="http://bazaar.launchpad.net/~divmod-dev/divmod.org/trunk/view/head:/Vertex/vertex/ptcp.py" rel="nofollow">PTCP</a>模块。在</p>
<p>但是,您应该知道,“可靠UDP”通常会比普通的旧TCP性能差得多。因特网上的路由器都理解TCP,并且可以利用这种理解来优化它。如果您在UDP之上实现可靠性,那么您必然需要实现与TCP功能等效的功能,那么有几个因素会对您不利:</p>
<ul>
<li>可靠性的实现必须在应用程序中运行,而不是在操作系统内核中运行。在</li>
<li>您的TCP实现必须执行与TCP相同的工作,否则您将在意外的网络环境中遇到神秘的错误。在</li>
<li>沿途的路由器不能为你的自定义可靠性层进行优化</li>
</ul>
<p>在某些情况下,可以使UDP“更快”的是<em>通过不可靠的<em>放弃TCP所做的许多工作。如果您的消息传递层不可靠,那么您必须知道它传递的数据可以被任意丢弃。在</p>
<p>通常,适合在游戏中通过UDP传输的数据是移动数据。当你的位置发生变化时,你可以发送一个UDP数据包,它可以被丢弃,因为游戏只关心你最近的<em>位置-一旦收到更新,所有先前的位置都不相关。许多游戏通过一个(不可靠的)UDP通道发送运动数据,然后所有的控制消息都通过一个更可靠的TCP通道。在</p>
<p>但是,Jean-Paul关于优化的回答很好地表明了您何时需要考虑实现优化。在</p>