我刚刚发现我的手机是在对称的udp防火墙后面,这只是意味着无法进行udp流量。我的3g提供商是t-mobile,这是我国最大的提供商之一。我怀疑更多的移动3g提供商都有udp限制。
我打算开发一款实时游戏。 udb似乎是快速移动的正确解决方案,但我不能使用udp,因为我失去了灵活性(在任何地方玩,很多没有wifi的地方)和大量观众(3g提供商阻止udp)。
像umts和3g这样的移动网络具有高延迟,因此tcp(重发丢失数据包和排队)不是理想的解决方案。
有替代方案吗?或者应该将实时游戏的想法超过3g?
答案 0 :(得分:3)
很难通过网络实现实时,并且游戏逻辑具有令人满意的延迟(特别是如果你正在制作像第一人称射击游戏这样的游戏,你可以在这里阅读克服一些延迟问题:networked physics)
谈到移动网络时,它变得更加困难: 当然,你可以让你的生活更轻松,只覆盖WIFI连接,但是当没有免费的WIFI连接可用时,你将失去想要通过3G玩的所有用户(或者他们只是坚持使用3G连接,因为他们不知道如何改为WIFI)。如果你选择覆盖3G以及欢迎运营商地狱:没有UDP,没有套接字,没有非标准端口,没有长时间超时,你好断开连接,你好奇怪的标题和你好奇怪的代理,现在乘以不同的数量世界各地的运营商和Voila'你涵盖了他们所有的问题。
我不是想吓唬你,只是在实施过程中记住这些事情:
1。没有套接字或使用非标准端口 - 运营商不允许套接字出于明显的原因,他们不希望您占用他们的资源,因为在此期间他们可以为其他付费客户提供服务;)如果您的游戏逻辑允许,尝试实现没有套接字的协议。
2。在海上与几个朋友一起测试你的游戏,或者使用可以为你做的人群测试服务。您可以通过自己的协议校准延迟。
3。分发服务器将极大地帮助解决延迟问题。
4。确保您没有通过网络发送大量数据,要聪明,请使用设备的电池。
5。压缩你的数据!
完全披露:我在Skiller工作,我们为Android开发人员(以及其他)提供多人SDK,提供社交层,用户管理,创收等免费工具......我们看到很多关于3G多人游戏的问题我们用我们在客户端和服务器端编写的算法来补偿它,使开发人员的生活更轻松。如果您想尝试我们:www.skiller-games.com
答案 1 :(得分:0)
有一些基于云的实时消息服务旨在自适应地在许多不同的移动平台上工作。在游戏中,您经常需要发布/订阅,因此您可能会看到http://pubnub.com他们会使用14个数据中心来处理您的云基础架构,从而提供低延迟。它们的API非常适合使用为此设计的安全和存在API。他们有一个测试版的新对象数据同步API,可以减少编码。
我喜欢他们的一个关键原因是因为他们已经在这个行业工作了很多年,因此他们的API已经在大多数全球3G和企业网络上进行了测试。
您可能会看到的其他内容包括pusher.com和realtime.co以及Google的新https://cloud.google.com/pubsub/服务。