iPhone P2P - GKSession超过4个同行不可靠吗?

时间:2012-07-23 12:39:46

标签: ios networking p2p

原始问题:

中的游戏套件编程指南中的iOS开发者库mentions
  

客户端 - 服务器游戏的最大尺寸为16个玩家。

此限制是否也适用于P2P GKsessions?

这已经被问到了here(但是从不同的角度来看)。

更新了问题:连接超过4个对等体时,GKSession是否可靠?

注意:问题已根据response下面的saulobrito进行了更新。

参考:使用大量对等连接的应用的一个示例是Seedio。你会发现他们使用GKSession,因为蓝牙不是连接选项(使用GKSession,你甚至不能选择蓝牙或Wi-Fi .. GKSession会为你做这件事。)查看他们FAQ提供了一些有趣的信息,说明他们为什么选择Wi-Fi而不是蓝牙。

2 个答案:

答案 0 :(得分:3)

我可以向您保证,GKSession非常不稳定,您不应该相信这些文档。事实上,Apple最近决定完全删除文档。

我做了很多测试,我建议实际限制是4个连接设备(一个充当服务器和三个客户端)。当然,你做自己的测试场景会更好。

我也找不到任何允许超过4名玩家的游戏。我唯一知道的是苹果自己的德州扑克 - 允许8名玩家,但他们决定将其删除。

最后,但并非最不重要的是,游戏中心imposes a 4 player limit进行点对点游戏。

是的我正在开发一款应该支持10名玩家的游戏,但是在我们的测试中,当有超过4台设备时,它变得不稳定/无法使用。不稳定我的意思是:有时你找不到同伴,连接在不到一分钟内就会掉线。更糟糕的是,在尝试发送消息时,更新到iOS 6会带来一些奇怪的行为,例如冻结(没有错误,没有堆栈跟踪,没有任何内容)。其他奇怪的事情:当玩家失去联系时,所有其他玩家都会断开连接。

编辑:自那次回复以来做了很多测试,并有更多信息要分享:

使用iOS 6,我可以使用wi-fi或蓝牙可靠地播放9台设备。虽然存在一个很大的问题:你无法使用iOS 6将设备连接到使用iOS 5的设备,因为如果任何设备启用了wi-fi,你将面临无法解释的冻结 - 无堆栈跟踪的时间。您可以将iOS 6设置为应用程序的最低支持版本,或者您必须要求用户禁用其Wi-Fi并使用蓝牙。

答案 1 :(得分:3)

在iOS 6.0上,我可以确认GKSession允许至少6名玩家。我发现您必须确保在状态更改为已连接之前不要向对等方发送消息。

总的来说,我认为GKSession是一个非常简单的API。它将使用蓝牙或WiFi,这意味着您甚至不必考虑手机是否连接到WiFi网络。延迟很好而且很低(我测量的是4ms,不可靠,大约10ms,可靠的网络)。

我的主要注意事项是:

  1. 如果可以,请使用不可靠的消息。
  2. 确保在应用程序退出时将.available设置为NO(如果您在广告时终止,则可以让虚拟会话处于打开状态。)
  3. 在有问题的对等方改变为连接状态之前,请勿尝试向对等方发送消息。
  4. 一旦断开连接,请不要尝试重新使用gksession。
  5. 您可能需要重试连接尝试(如果连接尝试失败,我会自动重试3次)。我的超时是10秒。
  6. 限制您可靠的消息传递。我还没有弄清楚限制是什么,但最终看起来你会吹一个传输缓冲区,然后你的延迟会膨胀。同样,当您使用不可靠的消息传递时,这不是一个问题。