GameKit转超时

时间:2015-08-21 03:01:56

标签: gamekit gkturnbasedmatch

GameKit允许我们在比赛的下一个参与者超时时结束转弯。但是,我无法找到第一个参与者为其第一次移动设置超时的方法。反正有吗?

EDIT 它开始让我理解为什么Apple会把它从GameKit中删除。当你加入一个GKTurnBasedMatch时,你总会轮流进行,所以不需要超时,因为它是为了避免玩家在等待太长时间轮到他们时感到沮丧。问题是我的超时用例是不同的。我设计锦标赛和暂停意味着你输掉了比赛,不管它是不是第一回合。所以我总是需要能够超时当前转弯。我担心我需要在糟糕的服务器上实现这一点。

2 个答案:

答案 0 :(得分:1)

可能会迟到一点,但游戏中心的TBM超时不会像那样工作。

当您调用endTurnWithNextParticipants时,您必须提供一个将在前一次超时时收到转弯的玩家列表。如果你想要一个玩家在他/她超时时输掉游戏,你必须实现这个,例如在下一个接收转弯的玩家的客户端,Apple服务不会为你做这件事。

根据您的目标,我认为最佳实施方式是检查最近一次转弯的时间,或者比赛创建时间,以防第一次转弯,比较一下到当前系统的日期和时间,如果时间结束,以编程方式结束匹配。

答案 1 :(得分:0)

就像你指出的那样,作为第1轮的player1,还没有任何其他的玩家,所以我怀疑为什么GC没有给我们一个接口来设置player1的超时。

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

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