iPhone的P2P – 是GKSession不可靠超过4个同行?

原始问题: iOS开发人员库在游戏工具包编程指南中提到

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

这个限制是否也适用于P2P GKsessions?

这里已经提出这样的问题了 (但是从另一个angular度来看)。

更新的问题:当连接了4个以上的对等点时,GKSession是可靠的吗?

注意:这个问题是基于下面的saulobrito的回应而更新的。

参考:使用大量对等连接的应用程序的一个示例是Seedio 。 你会注意到他们没有使用GKSession,因为蓝牙不是连接的select(使用GKSession,你甚至不能select蓝牙或无线networking。GKSession为你做。)查看他们的常见问题有关的一些有趣的信息他们为什么selectWi-Fi而不是蓝牙。

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

我做了很多testing,我会build议实际的限制是4个连接的设备(一个充当服务器和3个客户端)。 当然,你最好自己testing一下。

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

最后,但同样重要的是,Game Center 对对等游戏施加了4个玩家的限制 。

是的,我正在开发一个应该支持10个玩家的游戏,但是在我们的testing中,当有4个以上的设备时,它变得不稳定/不可用。 由于不稳定,我的意思是:有时你不能find一个同伴,并在不到一分钟的时间内连接下降。 更糟糕的是,更新到iOS 6带来了一些奇怪的行为,如冻结(没有错误,没有堆栈跟踪,没有什么),而试图发送消息。 其他奇怪的事情:当一个玩家失去联系,所有其他球员断开连接。

编辑:做了很多testing,因为该响应,并有更多的信息分享:

使用iOS 6我能够使用9个设备使用Wi-Fi或蓝牙可靠地播放 。 尽pipe如此,还是有一个很大的问题:你不能将使用iOS 6的设备连接到使用iOS 5的设备上,因为如果任何设备启用了Wi-Fifunction,你将面临无法解释的冻结无堆栈跟踪时间。 您可以将iOS 6设置为应用程序的最低支持版本,否则您将不得不要求用户禁用其Wi-Fi并使用蓝牙。

在iOS 6.0上,我可以确认GKSession至less允许6个玩家。 我发现你必须确保不要发送消息到对方,直到状态改变为连接。

总的来说,我认为GKSession是一个非常棒的API。 它将使用蓝牙或WiFi,这意味着你甚至不必考虑手机是否连接到WiFinetworking。 延迟是好的和低的(我测量它在4ms不可靠和大约10ms为可靠的networking)。

我的主要注意事项是:

  1. 如果可以的话,使用不可靠的消息。
  2. 确保你在应用程序退出时将.available设置为NO(如果你在广告中被终止,你可以打开幻影会话)。
  3. 不要试图发送消息到对方,直到有问题的对方变成连接状态。
  4. 断开连接后,不要尝试重新使用gsese。
  5. 您可能需要重试连接尝试(如果连接尝试失败,我会自动重试3次)。 我的超时时间是10秒。
  6. 调整您的可靠消息。 我还没有弄清楚这个限制是什么,但是最终似乎你会打击一个传输缓冲区,然后你的延迟就会膨胀。 同样,当你使用不可靠的消息传递时,这不是一个问题。