- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望在我的回合制游戏中有一个“快速匹配”模式,玩家会自动与第一个可用的玩家匹配。我正在使用我自己的自定义用户界面。到目前为止我的代码如下所示:
- (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/
我正在使用 QuickBlox SDk 进行视频通话。当我从一个用户调用另一个用户时,我收到了来自该用户的调用,但没有收到对方的视频和语音流?你能建议我如何解决这个问题。即使我正在尝试 Quickbl
这个问题并不是特定于语言的,它更多的是关于在 1v1 配对游戏中用于配对玩家的算法背后的逻辑。 这是一个由两部分组成的问题。 如果我有一款配对 1v1 类型的游戏,你打开手机的应用程序,选择“玩”,它
我希望在我的回合制游戏中有一个“快速匹配”模式,玩家会自动与第一个可用的玩家匹配。我正在使用我自己的自定义用户界面。到目前为止我的代码如下所示: - (void)quickMatch { GKMa
我已经阅读了 Professional XMPP 的所有 484 页,并阅读了无数关于花名册 + XMPP 的论坛帖子,这个问题仍然是我正在努力解决的问题。我正在寻找有关最佳实践的见解,所以我至少知道
我正在制作一款用户与计算机对战的游戏。轮到玩家时,计算机对手会考虑下一步行动。如果玩家移动到计算机对手计划移动的位置,计算机对手将重新开始搜索它的移动。 下面是主函数和对手函数的概要: [更新] pt
MCTS算法的步骤是: 选择 扩张 模拟 反向传播 我的问题涉及第三步,模拟。我们用一个新节点扩展了我们的决策树,并模拟了剩余的 Action ,直到游戏结束。这个模拟可以分为两部分: 轮到我们利用决
在serializer.py中使用create方法后出现错误 这是我的错误: Got AttributeError when attempting to get a value for field o
在serializer.py中使用create方法后出现错误 这是我的错误: Got AttributeError when attempting to get a value for field o
我是一名优秀的程序员,十分优秀!