【发布时间】:2009-07-05 13:31:22
【问题描述】:
是否可以使用新的 GameKit 框架连接到超过 1 个设备?到目前为止,我看到的所有示例都显示了我们如何连接到 1 个设备。即使是默认连接界面,用户也只能选择一个连接。
谢谢。
【问题讨论】:
标签: iphone iphone-sdk-3.0 gamekit
是否可以使用新的 GameKit 框架连接到超过 1 个设备?到目前为止,我看到的所有示例都显示了我们如何连接到 1 个设备。即使是默认连接界面,用户也只能选择一个连接。
谢谢。
【问题讨论】:
标签: iphone iphone-sdk-3.0 gamekit
下面的链接对如何为您的应用配置和使用 GameKit 提供了相当不错的概述。
很遗憾,如果您想支持超过 2 个设备,您将无法使用 GKPeerPickerController 标准 UI 选择器为您配置 GKSession 实例。相反,您必须开发自己的 UI 元素来设置和配置主服务器/服务器与多个客户端之间的连接。
以下是为超过 2 台设备启用 GameKit 的简单方法:
当您使用 initWithSessionID:displayName:sessionMode 初始化 GKSession 实例时,请使用:
sessionMode:GKSessionModePeer 是第 3 个可用选项,并且是 Apple 提供的大多数示例代码(例如 GKTank 演示)中使用的选项。
注意:您可能使用 GKSessionModePeer 并且仍然拥有超过 2 个设备的网络,因为对等模式将设备同时置于服务器和客户端模式,直到建立连接。将一台设备显式配置为服务器可以简化设置,这对于测试 GameKit API 很有用。
对于服务器:
GKSession *session = [[GKSession alloc] initWithSessionID:kTestSessionID displayName:nil sessionMode:GKSessionModeServer];
对于客户:
GKSession *session = [[GKSession alloc] initWithSessionID:kTestSessionID displayName:nil sessionMode:GKSessionModeClient];
【讨论】:
在过去我读到您可以使用 Gamekit 连接多达 16 台设备。我相信在 Peer 模式下你只能做两个,做两个以上需要一个设备设置为主设备,其他设备设置为客户端模式。
我会寻找演示使用主/客户端的示例,客户端应该适用于所有三个。
您可以在 GKMatchRequest (iOS6+) 上调用 +maxPlayersAllowedForMatchOfType: 以获取实际数字,该数字可能因设备而异,因此您可能应该将其用作上限。
【讨论】:
据我所知,在使用 GameKit 框架时,您只能耦合一对设备,一个充当服务器,另一个充当客户端(如果两者都被初始化为对等点,您必须决定哪一个将充当服务器,任意或随机选择一个)。
实际上,可能有许多设备都在运行您的应用程序,但始终会通过配对设备建立连接。
当然,您可以通过 wifi 编写自己的基于 bonjour 的网络代码并克服这个限制,尽管这需要更多的编码。
【讨论】: