【问题标题】:Advise for p2p mobile game over 3G network?建议使用 3G 网络进行 p2p 手机游戏?
【发布时间】:2015-01-14 11:41:58
【问题描述】:

我一直在制作一款类似于“街头霸王”的手机游戏,两个玩家通过互联网互相玩。

游戏每 30ms 向对方发送一个小数据包(控制器状态)(大量数据包正在进行)。

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

但是,在尝试使用新设计时,我有一些问题:

由于是手机游戏,玩家可能会经常使用 3G 网络。 UDP打孔在3G网络中是否有效?当玩家实际移动时(例如在车内)是否重要?你认为我应该改变设计还是推荐更好的设计理念?

或者,也许一个这样发送数据包的游戏实际上对于 3G 网络来说并不是一个好主意?

【问题讨论】:

    标签: networking mobile udp client-server 3g


    【解决方案1】:

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

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

    看看这里关于这个非常有用的问答的讨论,了解 UDP 与 TCP 的一些背景,以及为什么这不是一个简单的问题:

    就您所讨论的数据速率而言,还值得注意的是您处于 VoIP 类型解决方案领域,因此值得关注一些关于 VoIP 的讨论,特别是关注 RTP,这是媒体流 - 即与 SIP(​​例如)相反的实际语音数据包控制建立和控制呼叫的消息,以及如何直接或通过服务器路由。此链接在 VoIP/SIP 领域对此进行了很好的讨论:

    从您的角度来看,值得记住的是,让流量流经您的服务器使您可以选择分析或修改它,这可能会为现在或将来推出新功能提供可能性。

    我还要说,如果此时您所做的只是转发数据包,那么您可能会找到一种架构,它可以在相当普通的服务器上为您提供比 30 个并发“调用”更好的架构 - 再次查看架构VoIP 域在这里可能有用(代理或转发 RTP 流量的域,而不是处理信令的控制服务器 - 例如 SIP 消息)。

    VoIP 工作也有相同的 UDP“打孔”问题,并且也有很多关于此的文档,如果您搜索 STUN 和 TURN 协议,您将获得一个很好的概述。以下两者的维基百科链接:

    如果您确实为您的应用程序解决了这个问题,那么在这里看到结果会很有趣 - 也许您也可以分享它作为问题的答案?

    【讨论】:

    • 感谢您的信息。我了解其中的大部分内容,但我的问题更多是关于“3G 网络”,因为我看到一些人(stackoverflow 中的一些答案)说在大多数 3G 网络中都无法进行 UDP 打孔,因为 3G 提供商打算阻止此类 UDP 使用,但我不是100%肯定,所以我希望真正了解它的人可以提供一些具体的答案。还有,有人说3G不能以这样的速率处理UDP数据包,算了。再一次,我希望在我放弃游戏想法之前获得更多证据。
    • 顺便说一句,这个问题并不老:) 我仍然希望得到更多的答案或信息。
    【解决方案2】:

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

    如果您无法直接拨打电话,UDP 还是 TCP 都不是问题。唯一的解决方法是电话连接到可公开访问的服务器。但这需要一台服务器。

    【讨论】:

      猜你喜欢
      • 2012-04-21
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多