实时游戏的点对点vs服务器客户端

时间:2017-04-19 20:54:18

标签: java sockets tcp udp p2p

我正在制作一款需要在用户之间实时同步的游戏,目前我正在使用 tcp ,没有延迟且速度不够快。

游戏支持15个并发用户,如果有任何事情发送,服务器每20毫秒向用户发送数据,发送的数据最多为1个用户400字节,其他发送30个字节,用户每50毫秒向服务器发送一次数据。

在考虑解决方案时我想为什么不向服务器发送每个用户连接数据,他会将它们发送给"其他人"连接数据,而运行每个用户的游戏将使用 udp 直接向所有其他用户发送他当前的信息。

第二种方法是保持当前服务器客户端的方式并从 tcp 更改为 udp

什么会更快?它会与当前的tcp客户端服务器速度有什么不同吗?

2 个答案:

答案 0 :(得分:0)

从某种意义上说,UDP不一定会更快......虽然它有助于加快速度。 UDP不考虑数据包是否到达目的地。它不是在发送更多数据之前等待数据包到达目的地,而是继续尽可能快地发送。如果你想要一个非回合制的实时游戏,那么你应该试试UDP。

答案 1 :(得分:-1)

这取决于游戏的类型。 通常使用服务器客户端(使用UDP),因为客户端不可信(可以修改为作弊。)

如果客户端或服务器具有丢弃数据包的错误互联网连接,则UDP将更快。这是因为TCP重试。请注意,您将丢失数据。