3

GameKit 允许我们为比赛中的下一个参与者以超时结束回合。但是,我找不到为第一个参与者的第一步设置超时的方法。有没有办法做到这一点?

编辑我开始明白为什么 Apple 会将其从 GameKit 中排除。当您刚刚加入 GKTurnBasedMatch 时,您将始终轮流进行,因此无需暂停,因为添加它是为了避免玩家在轮到他们时等待太久而感到沮丧。问题是我的超时用例是不同的。我正在设计一场比赛,而暂停意味着你输掉了比赛,无论是否是第一回合。所以我总是需要有能力让当前回合超时。恐怕我需要在糟糕的服务器上实现这个。

4

2 回答 2

3

这可能有点晚了,但 Game Center TBM 超时不会那样工作。

当你调用 endTurnWithNextParticipants 时,你必须提供一个玩家列表,如果前一个超时,他们将获得轮到。如果你想让一个玩家在他/她超时时输掉比赛,你必须在下一个收到回合的玩家的客户端上实现这个,Apple发球不会为你做这个。

根据您的目标,我认为最好的实现是检查最新回合的播放时间,或者如果是第一回合,则将其与当前系统日期和时间进行比较,并以编程方式进行比较如果时间结束则结束比赛。

于 2015-10-17T10:17:23.397 回答
1

就像你指出的那样,作为turn1的player1,还没有其他玩家,所以我怀疑这就是GC没有给我们一个接口来为player1设置超时的原因。

如何将 NSTimer 设置为所需的超时,然后在它触发时结束回合?

如果您正在查看较长的超时时间,例如几天,用户可能会在超时后离开然后重新加入,您可以通过将超时间隔添加到匹配开始时间来计算所需的截止日期,并将其存储在 NSUserDefaults 中。在每次游戏启动时,检查是否已超过最后期限,并在适当的时候结束回合。

于 2015-08-21T21:31:45.380 回答