GameKit允许我们在比赛中为下一个参与者暂停以结束一个回合。然而,我找不到一种方法来设置第一个参与者的第一步的超时。有没有办法做到这一点?
编辑它开始让我明白为什么苹果会在GameKit中遗漏这一点。当你刚加入GKTurnBasedMatch时,你总是轮流的,所以没有必要暂停,因为它是为了避免玩家在等待轮到太长时间时感到沮丧而添加的。问题是我的超时用例是不同的。我正在设计一场锦标赛,暂停意味着你输掉了比赛,无论是不是第一个回合。所以我总是需要有让当前回合超时的能力。我担心我需要在服务器上实现这一点,这太糟糕了。
发布于 2015-10-17 18:17:23
在这个问题上可能有点晚了,但游戏中心TBM超时不是这样工作的。
当你调用endTurnWithNextParticipants时,你必须提供一个玩家列表,如果前一个玩家超时,这些玩家将接受轮到。如果你想让一个玩家在他/她超时时输掉比赛,你必须实现这一点,例如,在下一个接受轮到的玩家的客户端上,Apple serves不会为你做这件事。
根据您的目标,我认为最好的实现是检查最近一轮的时间,或者如果是第一轮,则检查比赛的创建时间,将其与当前系统日期和时间进行比较,如果时间已结束,则以编程方式结束比赛。
发布于 2015-08-22 05:31:45
正如你所指出的,就像turn1上的player1一样,还没有其他玩家,所以我怀疑这就是为什么GC没有给我们一个接口来设置player1的超时。
如何将NSTimer设置为所需的超时,然后在触发时结束该轮?
如果您正在查看很长的超时,比如几天,用户可能会离开,然后在超时后重新加入,您可以通过将超时间隔与比赛开始时间相加来计算所需的截止日期,并将其存储在NSUserDefaults中。在每次游戏启动时,检查截止日期是否已过,并在适当的时候结束回合。
https://stackoverflow.com/questions/32131707
复制相似问题