T. *_*ayo 6 mobile udp network-programming real-time 3g
我刚刚发现我的手机是在对称的udp防火墙后面,这意味着udp流量是不可能的.我的3g提供商是t-mobile,这是我国最大的提供商之一.我怀疑更多的移动3g提供商有udp限制.
我正计划开发一款实时游戏.udb似乎是快速移动的正确解决方案,但我不能使用udp因为那时我失去了灵活性(在任何地方玩,很多地方没有wifi)和大量观众(3g提供商阻止udp).
像umts和3g这样的移动网络具有高延迟,因此tcp(重发丢失数据包和排队)并不是理想的解决方案.
有替代方案吗?或者应该放弃超过3g的实时游戏的想法?
通过网络实现实时性并满足游戏逻辑的延迟是非常困难的(特别是如果您正在制作第一人称射击游戏之类的游戏,您可以在此处阅读有关克服一些延迟问题的信息:网络物理)。
当谈到移动网络时,嗯,它变得更加困难:当然,你可以让你的生活更轻松,只覆盖 WIFI 连接,但是当没有免费 WIFI 连接可用时,你将失去所有想要通过 3G 玩游戏的用户(或者他们只是坚持使用 3G 连接,因为他们不知道如何更改为 WIFI)。如果您选择覆盖 3G,欢迎来到运营商地狱:没有 UDP、没有套接字、没有非标准端口、没有长时间超时、以及 hello 断开连接、hello 奇怪的标头和 hello 奇怪的代理,现在将其乘以不同的数量世界各地的运营商,瞧,您涵盖了他们的所有问题。
我不是想吓唬你,只是在你的实现过程中记住这些事情:
1. 没有套接字或使用非标准端口 - 出于明显的原因,运营商不允许使用套接字,他们不希望你占用他们的资源,因为在那时他们可以为其他付费客户提供服务;)如果您的游戏逻辑允许,请尝试在没有套接字的情况下实现协议。
2. 与远方的几个朋友一起测试您的游戏,或者使用可以为您完成测试的人群测试服务。您可以通过自己的协议校准延迟。
3. 分布式服务器将极大地帮助解决延迟问题。
4. 确保您没有通过网络发送大量数据,保持聪明,善待设备电池。
5. 压缩您的数据!
全面披露:我在 Skiller 工作,我们为 Android 开发人员(以及其他)提供多人游戏 SDK,其中包括社交层、用户管理、创收等免费工具……我们看到了 3G 多人游戏的很多问题,我们对此进行了补偿它与我们在客户端和服务器端编写的算法一起使用,使开发人员的生活更轻松。如果您想尝试我们:www.killer-games.com