移动网络上的实时多人游戏?

7
我刚刚发现我的手机被对称UDP防火墙所限制,这意味着UDP流量不可能通过。我的3G提供商是我国最大的之一——T-Mobile。我怀疑许多其他移动3G提供商也会有UDP限制。
我计划开发一个实时游戏。UDP似乎是快速移动的正确解决方案,但由于UDP受到3G提供商的限制,我不能使用它,否则我将失去灵活性(可以在任何地方玩,包括没有WiFi的地方)和大量观众。
移动网络(如UMTS和3G)具有较高的延迟,因此TCP(带有重新发送丢失数据包和排队等功能)并不是理想的解决方案。
是否有替代方案?或者应该放弃在3G上进行实时游戏的想法?
2个回答

4

如果你正在制作像第一人称射击游戏这样的游戏,要实现令人满意的延迟时间的实时网络非常困难(你可以在此处阅读有关克服一些延迟问题的内容:networked physics)。

谈到移动网络,情况就更加困难: 当然,你可以让自己的生活变得更轻松,只覆盖WIFI连接,但是你会失去所有想要在3G上玩游戏的用户,当没有免费WIFI连接可用时(或者他们因为不知道如何切换到WIFI而被困在3G连接中)。如果你选择覆盖3G,那么欢迎来到运营商的地狱:没有UDP,没有套接字,没有非标准端口,没有长超时时间,你好断开连接,你好奇怪的头文件和奇怪的代理,现在将它乘以全球不同运营商的数量,你就可以解决所有这些问题了。

我不是在吓唬你,只是希望你在实施过程中记住以下几点:
1. 不要使用套接字或非标准端口 - 运营商不允许使用套接字,因为他们不希望你占用他们的资源,浪费了时间就意味着失去了其他付费客户。如果你的游戏逻辑允许,尝试不使用套接字来实现协议。
2. 与海外的几个朋友一起测试你的游戏,或使用可以为你完成测试的众测服务。你可以通过自己的协议校准延迟。
3. 分布式服务器将极大地帮助解决延迟问题。
4. 确保你不会在网络上传输大量数据,要聪明、要节约设备电池。
5. 压缩你的数据!

完全公开:我在Skiller工作,我们为Android开发人员提供多人游戏SDK(以及其他工具),包括社交层、用户管理、收入生成等等... 我们看到了很多3G多人游戏的问题,并通过我们在客户端和服务器端编写的算法来弥补这些问题,使开发者的生活更加轻松。如果你想试试我们:www.skiller-games.com


0

有一些基于云的实时消息服务旨在适应许多不同的移动平台。在游戏中,您经常需要发布/订阅,因此您可能会看一下http://pubnub.com。他们通过14个数据中心提供低延迟来照顾您的云基础设施。他们的API非常适合游戏,具有专为此设计的安全性和存在性API。他们有一个新的对象数据同步API处于测试版,可以减少编码量。

我喜欢他们的一个关键原因是因为他们已经在业务上很多年了,所以他们的API已经在大多数全球3G和企业网络上进行了测试。

其他您可能要查看的包括pusher.com和realtime.co以及Google的新https://cloud.google.com/pubsub/服务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接