3

我对 GameCenter 的回合制功能有疑问。该应用程序的免费版本将允许用户一次最多创建 3 场比赛,并且会阻止任何创建自动比赛或邀请其他玩家的尝试。我的问题如下,如果一个没有创建匹配限制的玩家邀请另一个达到该限制的玩家,游戏就会发生,这不是我想要的。

我可以为达到比赛限制的玩家设置任何属性吗?我知道如果不满足条件,我可以创建匹配并断开玩家的连接,但这也是我真正想避免的事情。

4

3 回答 3

3

Game Center 本身不支持限制可用比赛的数量。但是,要强制执行限制,您也不需要创建然后删除匹配项。

跟踪游戏中的活跃比赛数量。当玩家达到限制时,停止显示匹配 UI(例如,您的“新匹配”按钮可能会开始显示消息框,而不是显示匹配视图控制器)。看看 Letterpress 是如何做到的 - 当您在免费版本中有 2 个活动游戏时,“+”按钮会提示您购买免费版本。如果您有 1 个或 0 个活动游戏,它会显示匹配视图控制器。

不过,Letterpress 似乎有一个疏忽——可以打开 Game Center 并从那里请求匹配。Game Center 应用程序将打开 Letterpress,然后会显示配对界面并允许您开始比赛。

也许这可以通过注册GKLocalPlayerListener来避免。实现player:didRequestMatchWithPlayers:方法,看看是否可以从那里显示“购买完整版”提示。

于 2014-03-04T15:48:01.940 回答
1

playerGroup 属性可能会对您有所帮助。创建匹配请求时,可以设置属性 playerGroup 以限制仅组中的玩家连接到同一组中的玩家。

GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 4;
request.playerGroup = MyMap_Dark | MyRulesCaptureTheFlag;

如果您的游戏设置了 playerGroup 属性,则只有请求共享相同 playerGroup 值的玩家才会被 Game Center 自动匹配。玩家组的值是任意的。例如,您可以定义不同的 playerGroup 值来实现以下任何过滤器:

游戏可以根据技能水平限制玩家。提供多种游戏模式的游戏可以使用它将玩家过滤到他们想要玩的特定游戏中。通过应用内购买提供奖励内容的游戏可以匹配拥有相同内容的玩家。

将 playerGroup 设置为 0 或根本不设置它意味着该比赛没有玩家组,因此任何人都可以连接到任何人。还请阅读此游戏中心指南https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/GameKit_Guide/ImplementingaTurn-BasedMatch/ImplementingaTurn-BasedMatch.html

希望这会对您有所帮助。

于 2014-02-27T06:54:34.083 回答
0

不幸的是,Game Center 的匹配 API 中没有任何内容来限制玩家正在玩的比赛数量。您也无法阻止已达到游戏内限制的人直接进入 Game Center 并创建比赛在那里,这完全绕过了您的游戏内限制。

于 2014-02-26T20:47:45.280 回答