2024-09-29 19:22:44 发布
网友
你认为扭曲排列是否适合多人赛车模拟器(就性能而言)?应用程序的其余部分基于pythonogre。在
透视代理能否运行(可靠?)UDP协议?在
对于你的第一个问题,是的,PB的性能完全可以满足实时游戏的需要。已经用PB编写了几个游戏。例如,MV3D使用Twisted和Python食人魔来呈现一个共享的物理模拟。在
对于您的第二个问题,PB运行在面向流的传输上。它可以在“可靠UDP”之上运行,使用vertex附带的PTCP模块。在
但是,您应该知道,“可靠UDP”通常会比普通的旧TCP性能差得多。因特网上的路由器都理解TCP,并且可以利用这种理解来优化它。如果您在UDP之上实现可靠性,那么您必然需要实现与TCP功能等效的功能,那么有几个因素会对您不利:
在某些情况下,可以使UDP“更快”的是通过不可靠的放弃TCP所做的许多工作。如果您的消息传递层不可靠,那么您必须知道它传递的数据可以被任意丢弃。在
通常,适合在游戏中通过UDP传输的数据是移动数据。当你的位置发生变化时,你可以发送一个UDP数据包,它可以被丢弃,因为游戏只关心你最近的位置-一旦收到更新,所有先前的位置都不相关。许多游戏通过一个(不可靠的)UDP通道发送运动数据,然后所有的控制消息都通过一个更可靠的TCP通道。在
但是,Jean-Paul关于优化的回答很好地表明了您何时需要考虑实现优化。在
这几乎可以肯定是一个合理的协议开始。记住优化的基本原则:不要这样做。使用任何基于TCP的协议将比使用任何基于UDP的协议容易得多。最初,这对于项目的成功要比在客户机和服务器之间发送消息需要30毫秒还是45毫秒要重要得多。最终,当你明白你的项目可能会成功,你真的需要弥补这15毫秒(或多少毫秒)的时候,你可以重新审视网络层,考虑性能瓶颈(不管是延迟还是其他指标)是否是由于你选择的协议造成的。如果是这样的话,那就是花时间评估各种备选方案的时候了。只有在这一点上,选择理想协议的努力可能会有回报(因为你离一个已完成的项目更近了),到那时,你将大大提高对问题的理解,并且应该非常明确地确定你的要求,另外两件事将使选择的任务变得更加重要合适的协议(无论是基于TCP还是UDP)更容易而且更可能是正确的。在
对于你的第一个问题,是的,PB的性能完全可以满足实时游戏的需要。已经用PB编写了几个游戏。例如,MV3D使用Twisted和Python食人魔来呈现一个共享的物理模拟。在
对于您的第二个问题,PB运行在面向流的传输上。它可以在“可靠UDP”之上运行,使用vertex附带的PTCP模块。在
但是,您应该知道,“可靠UDP”通常会比普通的旧TCP性能差得多。因特网上的路由器都理解TCP,并且可以利用这种理解来优化它。如果您在UDP之上实现可靠性,那么您必然需要实现与TCP功能等效的功能,那么有几个因素会对您不利:
在某些情况下,可以使UDP“更快”的是通过不可靠的放弃TCP所做的许多工作。如果您的消息传递层不可靠,那么您必须知道它传递的数据可以被任意丢弃。在
通常,适合在游戏中通过UDP传输的数据是移动数据。当你的位置发生变化时,你可以发送一个UDP数据包,它可以被丢弃,因为游戏只关心你最近的位置-一旦收到更新,所有先前的位置都不相关。许多游戏通过一个(不可靠的)UDP通道发送运动数据,然后所有的控制消息都通过一个更可靠的TCP通道。在
但是,Jean-Paul关于优化的回答很好地表明了您何时需要考虑实现优化。在
这几乎可以肯定是一个合理的协议开始。记住优化的基本原则:不要这样做。使用任何基于TCP的协议将比使用任何基于UDP的协议容易得多。最初,这对于项目的成功要比在客户机和服务器之间发送消息需要30毫秒还是45毫秒要重要得多。最终,当你明白你的项目可能会成功,你真的需要弥补这15毫秒(或多少毫秒)的时候,你可以重新审视网络层,考虑性能瓶颈(不管是延迟还是其他指标)是否是由于你选择的协议造成的。如果是这样的话,那就是花时间评估各种备选方案的时候了。只有在这一点上,选择理想协议的努力可能会有回报(因为你离一个已完成的项目更近了),到那时,你将大大提高对问题的理解,并且应该非常明确地确定你的要求,另外两件事将使选择的任务变得更加重要合适的协议(无论是基于TCP还是UDP)更容易而且更可能是正确的。在
相关问题 更多 >
编程相关推荐