以编程方式在 Game Center 中查找现有的回合制比赛列表?
Programmatically find list of existing turn-based matches in Game Center?
Game Center 文档说
If you display the standard matchmaking user interface, then the
player sees existing matches as well.
它没有解释是否有任何方法可以在以编程方式生成的用户界面中显示现有的匹配项。
这可能吗?
无法 API 找到服务器上所有现有比赛的列表,甚至无法找到所有等待玩家的比赛。通过 GameKit
APIs 你只能做两件事:
1.Use 在匹配请求中查找满足要求的单个匹配:
[GKTurnBasedMatch findMatchForRequest:request withCompletionHandler:^(GKTurnBasedMatch *match, NSError *error)
{
};
2.Load玩家之前参加过的所有比赛,因此已经亲自知道。
[GKTurnBasedMatch loadMatchesWithCompletionHandler:^(NSArray *matches, NSError *error)
{
}];
作为替代方案,除了 Game Center
之外,您还可以考虑使用 Apple 的 CloudKit
(或任何其他 back-end 云存储)来保存匹配列表。每次玩家创建新比赛时,您都可以将比赛 ID 和其他您认为合适的相关详细信息保存到 public 数据库中,并维护您自己的所有现有会话列表。您还需要在比赛结束时删除这些记录。
我一直不知道该怎么做(虽然 Thunk 提供的策略看起来不错),但万一有人试图实现相同的目标,这就是我最终做的。
我的最终目的是,如果两个玩家大约同时搜索匹配项,我希望他们能够确保彼此连接,而不是让他们各自获得不同的空匹配项。
我原以为唯一的方法是获取公开比赛的列表,但这比那容易一点。
关键是搜索比赛的玩家只会连接到现有的比赛如果这些比赛中的每个人都已经轮到他们了。Game Center 希望您能够立即连接到比赛后立即轮到你,所以它永远不会为你提供等待其他人比赛的比赛。
所以我让任何获得空匹配的玩家立即结束他们的回合。这使得匹配可以立即被任何其他玩家填充。
效果很好。不是所有的时间,但足够频繁。
当然,在玩家连接后,我必须弄清楚真的轮到谁了,这完全是另一回事,但最终并没有那么困难。
Game Center 文档说
If you display the standard matchmaking user interface, then the player sees existing matches as well.
它没有解释是否有任何方法可以在以编程方式生成的用户界面中显示现有的匹配项。
这可能吗?
无法 API 找到服务器上所有现有比赛的列表,甚至无法找到所有等待玩家的比赛。通过 GameKit
APIs 你只能做两件事:
1.Use 在匹配请求中查找满足要求的单个匹配:
[GKTurnBasedMatch findMatchForRequest:request withCompletionHandler:^(GKTurnBasedMatch *match, NSError *error)
{
};
2.Load玩家之前参加过的所有比赛,因此已经亲自知道。
[GKTurnBasedMatch loadMatchesWithCompletionHandler:^(NSArray *matches, NSError *error)
{
}];
作为替代方案,除了 Game Center
之外,您还可以考虑使用 Apple 的 CloudKit
(或任何其他 back-end 云存储)来保存匹配列表。每次玩家创建新比赛时,您都可以将比赛 ID 和其他您认为合适的相关详细信息保存到 public 数据库中,并维护您自己的所有现有会话列表。您还需要在比赛结束时删除这些记录。
我一直不知道该怎么做(虽然 Thunk 提供的策略看起来不错),但万一有人试图实现相同的目标,这就是我最终做的。
我的最终目的是,如果两个玩家大约同时搜索匹配项,我希望他们能够确保彼此连接,而不是让他们各自获得不同的空匹配项。
我原以为唯一的方法是获取公开比赛的列表,但这比那容易一点。
关键是搜索比赛的玩家只会连接到现有的比赛如果这些比赛中的每个人都已经轮到他们了。Game Center 希望您能够立即连接到比赛后立即轮到你,所以它永远不会为你提供等待其他人比赛的比赛。
所以我让任何获得空匹配的玩家立即结束他们的回合。这使得匹配可以立即被任何其他玩家填充。
效果很好。不是所有的时间,但足够频繁。
当然,在玩家连接后,我必须弄清楚真的轮到谁了,这完全是另一回事,但最终并没有那么困难。