【问题标题】:Turn-based matchmaking not working in iOS 10回合制配对在 iOS 10 中不起作用
【发布时间】:2017-01-29 00:30:48
【问题描述】:

我的游戏在 iOS 10 之前运行良好。现在,使用 iOS 10 的每个人都无法邀请和玩他们想要的人。

当用户说他们想玩多人游戏时,我会像这样创建一个GKMatchRequest

GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 4;
request.defaultNumberOfPlayers = 2;

我使用GKTurnBasedMatchmakerViewController 来处理邀请等。用户会看到一个界面,可以让他们更改比赛中的玩家数量并邀请玩家。假设他们只想要 2 个玩家,所以他们离开了,想和他们的朋友一起玩。因此,他们使用该界面向他们的朋友发送邀请。结果,didFindMatch 被我的代表调用,GKMatch 有 4 个参与者。它应该只有2个!第一个参与者是本地玩家,其他 3 人的状态为“匹配”。所以,他们的朋友甚至不在名单上。有没有人有任何解决这个问题的建议?相同的代码在 iOS 10 之前的 iOS 版本中运行良好。

【问题讨论】:

标签: ios objective-c gamekit gkturnbasedmatch


【解决方案1】:

似乎在 IOS10 中,defaultNumberOfPlayers 没有得到遵守。

请记住,GKTurnBasedMatch 在给定比赛中拥有三种类型的玩家:

  • 创建比赛的发起者
  • 受邀参加比赛的球员
  • 自动匹配到比赛中的玩家

如果您查看比赛中所有 4 名球员的球员状态(使用您的示例),我怀疑您会看到以下结果

  1. 主动(发起者)
  2. 已邀请(您邀请的 1 人)
  3. 匹配
  4. 匹配

如果是这样,则表明 defaultNumberOfPlayers 被忽略,并且创建的比赛最多包含 4 名玩家(1 个发起者、1 个被邀请者和 2 个自动匹配位置)。

解决方法似乎是将maxNumberOfPlayers 设置为所需的上限,在本例中为 2,当您创建匹配项时。

【讨论】:

  • 感谢您的回复。就我而言,其他 3 名球员都被列为“匹配”。没有处于“受邀”状态的玩家。在 iOS 9 中,我得到了预期的结果。这仅在 iOS 10 中被破坏。
猜你喜欢
  • 2018-01-04
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多