11

是否可以使用新的 GameKit 框架连接到超过 1 个设备?到目前为止,我看到的所有示例都显示了我们如何连接到 1 个设备。即使是默认连接界面也允许用户只选择一个连接。

谢谢。

4

3 回答 3

15

在以下链接中有一个相当不错的概述,介绍了如何为您的应用程序配置和使用 GameKit。

不幸的是,如果您想支持超过 2 个设备,您将无法使用GKPeerPickerController标准 UI 选择器为您配置 GKSession 实例。相反,您必须开发自己的 UI 元素来设置和配置主/服务器与多个客户端之间的连接。

这是为超过 2 台设备启用 GameKit 的简单方法:

当您使用initWithSessionID:displayName:sessionMode初始化 GKSession 实例时,请使用:

  • sessionMode:GKSessionModeServer用于服务器/主服务器
  • sessionMode:GKSessionModeClient用于其他(多个)客户端

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]; 
于 2009-07-06T07:07:23.170 回答
4

在过去,我读到您可以使用 Gamekit 连接多达 16 台设备。我相信在对等模式下你只能做两个,做两个以上需要一个设备设置为主设备,其他设备设置为客户端模式。

我会寻找演示使用主/客户端的示例,客户端应该适用于所有三个。

您可以调用+maxPlayersAllowedForMatchOfType:GKMatchRequest ( iOS6 +) 来获取实际数字,该数字可能因设备而异,因此您可能应该将其用作上限。

于 2009-07-06T04:19:31.620 回答
0

据我所知,在使用 GameKit 框架时,您只能耦合一对设备,一个充当服务器,另一个充当客户端(如果两者都初始化为对等点,您必须决定哪一个充当一个服务器,可以是任意的,也可以是随机选择的)。

在实践中,可能有许多设备都在运行您的应用程序,但始终会通过配对设备建立连接。

当然,您可以通过 wifi 编写自己的基于 bonjour 的网络代码并克服此限制,尽管这需要更多的编码。

于 2009-07-05T22:08:20.867 回答