我对GameCenter的回合制功能有疑问。该应用程序的免费版本将允许用户一次创建最多3个匹配项,并将阻止任何创建自动匹配或邀请其他玩家的尝试。我的问题如下,如果一个没有创建比赛限制的玩家邀请另一个达到该限制的玩家,游戏就会发生,我不会想要这个。
我可以为已达到比赛限额的球员设置任何属性吗?我知道我可以创造比赛并且如果条件不满足则会断开球员的连接,但这也是我真正想避免的事情。
答案 0 :(得分:3)
Game Center不支持本机限制可用匹配的数量。但是,要强制执行限制,您不需要创建然后删除匹配项。
跟踪游戏中活动匹配的数量。当玩家达到限制时,停止显示匹配UI(例如,您的“新匹配”按钮可以开始显示消息框,而不是呈现匹配制作视图控制器)。看看Letterpress是如何做到的 - 当你在免费版本中有2个活跃游戏时,“+”按钮会提示购买免费版本。如果您有1或0个活动游戏,则会显示匹配视图控制器。
Letterpress似乎有疏忽 - 可以打开游戏中心并从那里请求匹配。 Game Center应用程序将打开Letterpress,然后将显示匹配界面并允许您开始比赛。
注册GKLocalPlayerListener也许可以避免这种情况。实施player:didRequestMatchWithPlayers:方法,看看是否可以从那里显示“购买完整版”提示。
答案 1 :(得分: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
希望这会对你有帮助。
答案 2 :(得分:0)
不幸的是,Game Center的配对API中没有任何内容可以限制玩家正在玩的比赛数量。你也无法阻止已达到游戏限制的人直接进入游戏中心。在那里创造一场比赛,完全绕过你的比赛限制。