gpt4 book ai didi

iphone - 游戏中心快消: randomly matching opponents (GKTurnBasedMatch)

转载 作者:行者123 更新时间:2023-12-03 19:08:56 25 4
gpt4 key购买 nike

我希望在我的回合制游戏中有一个“快速匹配”模式,玩家会自动与第一个可用的玩家匹配。我正在使用我自己的自定义用户界面。到目前为止我的代码如下所示:

- (void)quickMatch {
GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 2;
request.playersToInvite = nil;
[GKTurnBasedMatch findMatchForRequest:request withCompletionHandler:^(GKTurnBasedMatch *match, NSError *error) {
NSLog(@"MATCH: %@ %@ %@ %d",error,match,match.matchID,(int)match.status);
}];

这成功创建了一场比赛,但比赛中的第二个参与者的 ID 为 null (playerID:(null) status:Matching)。

认为如果我在另一个实例上使用不同的 Game Center ID 运行相同的代码,那么两个用户将相互匹配...但这似乎并非如此正确的。每当我调用 GKTurnBasedMatch loadMatchesWithCompletionHandler 函数时,我都会继续检索相同的比赛,每个比赛只有 1 个有效参与者(本地玩家)。

这个问题似乎类似于 iOS Development: How do I auto match players in Game Center?这确实表明设置 request.playersToInvite = nil; 应该完成自动匹配,但这似乎对我不起作用。

如何让 Game Center 自动将这些玩家相互匹配?

最佳答案

让我解决您在这里看到的问题。首先,没有必要将 PlayersToInvite 属性设置为 nil,因为这是默认状态,除非将玩家分配给它,但这不会导致您的“问题”。我将其放在引号中,因为您实际上正确地执行了代码,并且只发现了不存在的问题。让我向您介绍一下 findMatchForeRequest 完成后会发生什么。

当完成 block 被调用时,Game Center 创建了一个新的 GKTurnBasedMatch 对象,其中有两个参与者,第一个是本地玩家(你),第二个实际上是一个空参与者,玩家 ID 为 nil。原因是当与随机(未分配)对手进行比赛时,Game Center 不会分配所有参与者。当轮到他们时,随机分配一个参与者。在您的游戏中,在您进行第一个回合之前,该比赛不会显示在云端供其他人参加。

现在,在您的其他设备/Game Center ID 上调用 loadMatchesWithCompletionHandler 不会自动显示比赛,除非您通过 PlayersToInvite 特别邀请了该玩家(并且已经按上述指定轮到您了)。可以这样想:如果按照这种方式工作,世界上的每个玩家在调用 loadMatchesWithCompletionHandler 时都会看到存在的所有自动匹配。

其他 Game Center ID 必须实际调用 findMatchForRequest 且未设置playersToInvite 属性,才能匹配到您的其他 ID 创建的游戏中可用的空座位。这样,创建比赛时“总是轮到你”的范例得以保留,但该玩家现在位于第二个位置,而不是第一个位置。只需按照与第一个 ID 完全相同的方式在第二个 ID 上创建游戏,您的游戏就会由两个参与者创建,第一个参与者来自最初创建它的 ID,第二个参与者来自加入比赛的 ID通过调用 findMatchForRequest。这里的关键是,如果playersToInvite 为零,findMatchForRequest 并不总是创建新的匹配。如果现有的比赛有空位,它只会将本地玩家匹配到该比赛中。

祝你编码愉快!
科尔宾

关于iphone - 游戏中心快消: randomly matching opponents (GKTurnBasedMatch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18687108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com