首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GameKit转向超时

GameKit转向超时
EN

Stack Overflow用户
提问于 2015-08-21 11:01:56
回答 2查看 226关注 0票数 3

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

编辑它开始让我明白为什么苹果会在GameKit中遗漏这一点。当你刚加入GKTurnBasedMatch时,你总是轮流的,所以没有必要暂停,因为它是为了避免玩家在等待轮到太长时间时感到沮丧而添加的。问题是我的超时用例是不同的。我正在设计一场锦标赛,暂停意味着你输掉了比赛,无论是不是第一个回合。所以我总是需要有让当前回合超时的能力。我担心我需要在服务器上实现这一点,这太糟糕了。

EN

回答 2

Stack Overflow用户

发布于 2015-10-17 18:17:23

在这个问题上可能有点晚了,但游戏中心TBM超时不是这样工作的。

当你调用endTurnWithNextParticipants时,你必须提供一个玩家列表,如果前一个玩家超时,这些玩家将接受轮到。如果你想让一个玩家在他/她超时时输掉比赛,你必须实现这一点,例如,在下一个接受轮到的玩家的客户端上,Apple serves不会为你做这件事。

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

票数 3
EN

Stack Overflow用户

发布于 2015-08-22 05:31:45

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32131707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档