安卓多人实时游戏,最佳的协议/通信方式是什么?

5
我希望开发一个Android多人实时游戏。但是我还不确定最好的通信方式是什么。我找到了几个选项:
  1. TCP
  2. UDP
  3. Ajax/Comet/Messaging services,例如pubnub.com、beaconpush.com
  4. Push通知
  5. XMPP
  6. Android云到设备消息
  7. The Pubsubhubub协议
  8. Smartfoxserver
我想知道其他实时游戏都是如何做通信的?我想知道最常用的方法以及可接受的结果。
感谢您的思考。谢谢!

我会使用推送通知(看一下MQTT)...然而,大多数这些服务使用TCP。也许你需要阅读更多来了解这些技术是什么。 - Cristian
感谢Christian提供的MQTT。虽然我有Web开发经验,但我对实时开发还很陌生。 - karl
我熟悉的大型多人游戏都使用UDP作为网络代码的主要部分。Everquest、EQ2、WoW、指环王和战锤。否则延迟太高。当需要发送大量数据且不需要实时性时,使用TCP。想想Everquest中的玩家供应商或WoW中的银行界面(我想是这样的...)。 - JimR
JimR,感谢您的评论。非常感激。我对游戏开发概念还很陌生。这确实有帮助。 - karl
1个回答

2

使用UDP并自行处理更多的网络问题,通常可以获得更好的性能来实现特定目标。TCP和建立在其上的更高级的功能试图为您提供可靠、有序的通信和连接会话的感觉,但它们确保可靠性的方式不一定是最优的。另一方面,它们更容易使用,因为它们为您完成更多的工作。


嗨,Chris,感谢您的回复。但是我想知道其他实时游戏是如何做到的。他们也使用UDP吗? - karl
一般来说,实时游戏根据其需求使用UDP或TCP。例如,实时策略游戏可能会使用TCP,因为这些数据包必须通过。但是实时FPS可能会使用UDP,因为丢失几个数据包是可以接受的。 - Steve Blackwell
我会感到惊讶,如果一个推送通知足够快。但我认为移动网络本身有时可能会很慢...所以这可能取决于您对“实时”的理解。 - Chris Stratton
这是一个简单的2D坦克射击游戏,类似于旧任天堂游戏。该游戏最多可供4名玩家游玩,每个玩家都可以看到对手的移动。 - karl
user530438,不幸的是,Android浏览器目前还不支持WebSockets。但是,我们提供使用传统长轮询的替代传输方法。因此,Beaconpush可以在Android上使用。而iPhone则在4.2版本中支持WebSockets。 - cgbystrom
显示剩余8条评论

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