2015-01-14 46 views
1

我一直在制作类似于“街头霸王”的手机游戏,两个玩家通过互联网互相玩游戏。通过3G网络为p2p手机游戏提供建议?

游戏每30ms发送一个小包(控制器状态)给另一方(很多包正在进行)。

我目前使用服务器来连接两个播放器,所有的通信都是通过TCP通过服务器。即使只有30个并发玩家,服务器负载也会增加很多。我知道让通信通过服务器听起来并不明智,所以我认为最好的设计应该让这两个玩家在服务器挂钩之后通过UDP直接进行通信。

不过,我有一些问题想移动到新的设计时:

因为它是一个手机游戏,玩家可能会使用3G网络了不少。 3G网络中的UDP打孔工作正常吗?当玩家实际移动时(例如在汽车内)时,这是否重要?你认为我应该改变设计还是更好的设计理念的建议?或者,也许像这样发送数据包的游戏其实并不是3G网络的好主意?

回答

1

我知道这是一个老问题,但它是一个有趣的人,所以如果任何人想评论/讨论...

它实际上一个非常棘手的问题,我认为,答案将在很大程度上取决于您的特定应用程序 - 例如,重要的是所有的数据到达并且它按照正确的顺序等。

看看这里对这个真正有用的讨论Q & A对UDP和TCP的一些背景和为什么它不是这样一个简单的问题:

在你所谈论的,这也是值得注意的是,你是在VoIP的类型解决方案的领域,因此将是值得看一些关于VoIP的讨论,特别是重点中的数据速率在媒体流即RTP上 - 即与SIP相对的实际语音分组(例如)控制建立和控制呼叫的消息,以及如何直接或通过服务器路由它。此连结在VoIP/SIP的境界在这个精彩讨论:

从你的角度来看,这是值得记住的是不必通过服务器的流量给你的选项分析或修改它,这可能会打开现在或未来新功能的可能性。

我还会说,如果你现在所做的只是转发数据包,那么你可能会发现一个架构可以让你在一个相当平均的服务器上比30个并发'调用'好得多 - 再次查看架构来自VoIP域可能在这里很有用(代理或转发RTP流量的那些,而不是处理信令的控制服务器 - 例如SIP消息)。

VoIP的工作也有相同的UDP'hole punching'问题,并且还有很多关于这方面的文档,如果你搜索STUN和TURN协议,你会得到一个很好的概述。两个以下维基百科链接:

如果没有解决这个为你的应用将是有趣的,在这里看到的结果 - 也许你可以分享作为一个答案这个问题呢?

+0

感谢您的信息。我理解它的大部分内容,但我的问题更多地是关于“3G网络”,因为我看到一些人(在stackoverflow中有一些答案)说,在大多数3G网络中,UDP打孔是不可能的,因为3G提供商打算阻止这种UDP使用,但我不是100%肯定的,所以我希望有人真正了解它可以提供一些具体的答案。另外,有人说3G不能以这样的速度处理UDP数据包,只是忘了它。再次,我希望在放弃游戏理念之前获得更多证据。 –

+0

顺便问一下,问题不是那么老:)我仍然希望得到更多的答案或信息。 –

1

问题是,在3G网络中,与公共WiFi网络或其他更便宜的ISP类似,您最终会在防火墙后面映射IP地址。例如,在我的设备上,我的手机IP地址是100.116.200.55。但是这不能被打断。不幸的是,我没有同一供应商的第二部电话,看看在同一网络上至少两部电话是否可以互相ping通。但是,一旦你处于不同的小区,离得更远,就可能不再工作,就像我无法从电脑上ping我的电话一样。

如果您无法直接联系到电话,那么UDP或TCP甚至不是问题。唯一的解决办法是手机连接到可公开访问的服务器。但是这需要一台服务器。