2017-04-19 81 views
1

我正在构建需要用户之间实时同步的游戏,目前我使用tcp没有延迟,并且速度不够快。实时游戏的对等vs服务器客户端

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

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

第二种方法是保持当前的服务器客户端方式和TCP改变UDP

会是什么速度?并且它会与当前的tcp客户端服务器速度有什么不同?

+0

这个问题太宽泛无法回答。您可能认为通过IP网络双方之间的直接通信不应该比通过中介进行通信要慢,但不同的消息路由和本地网络条件确实可能使直接通信有时会变慢。还要考虑到15个玩家都需要直接相互沟通,每个人需要管理14个同时连接,并且您可能还需要某种同步信号。 –

+1

注意NAT!如果你发送UDP,你需要查看[hole punching](https://en.wikipedia.org/wiki/UDP_hole_punching) –

回答

-1

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

如果客户端或服务器的Internet连接丢失数据包,UDP速度将会更快。这是因为TCP重试。请注意您将丢失数据。

+0

此外,通过中央服务器进行通信可以保护玩家免于元游戏(“我将发起DDOS攻击玩家2就像我开始我的游戏内攻击一样“),并且更好地保留了他们的隐私/匿名。 –

+0

@John Bollinger IP地址不会被泄露;然而,服务器将需要限速 – anonman

+0

如果玩家要按OP提议直接与对方通信,IP地址*失败*如何泄漏? –

0

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

+0

...并且如果您可以容忍数据丢失。 –

+0

所有实时游戏都必须承受一些数据丢失。 – Anonymous

相关问题