1

这似乎是一个非常明显的问题,但我一直在梳理 Apple 的文档,似乎无法找到一个直接的答案。

当一个轮次超时时实际发生了什么——也就是说,作为 turnTimeout 参数传递的时间间隔endTurnWithNextParticipants:turnTimeout:matchData:completionHandler:已经过去了?逻辑规定要么有一个类似于handleTurnEventForMatch:didBecomeActive:明确处理没有移动的回调,要么nextParticipants数组中的下一个玩家会收到一个转弯通知。

不幸的是,尽管 Apple 很乐意描述如何turnTimeout限制玩家必须采取行动的时间(并告诉您这取决于您的游戏来决定如何处理),但没有关于调用哪些方法或提供哪些数据的信息,并且我看到了一些非常奇怪的行为 - 即通过的玩家正在收到一个 handleTurnEvent 通知,其中包含与他们刚刚超时的回合相同的比赛数据。有人有什么建议吗?

4

1 回答 1

0

Apple 关于它的作用的文档:

如果下一个要行动的玩家没有在指定的时间间隔内轮到他们,则数组中的下一个玩家会收到要行动的通知。这个过程一直持续到玩家轮到或通知列表中的最后一个玩家。

在 2 人比赛的情况下,至少在测试期间,实际上什么都没有发生。如果 P1 回合,下一个参与者的列表看起来像 [ P2, P1 ]。如果 P2 超时,P1 应该收到通知,因为它是列表中的最后一个,但是 P1 刚刚离开,Apple 必须将“列表结束”视为您回到最后播放的人而不是您实际运行的时间出人。这可以防止人们连续玩两个回合。尽管根据文档,这不是我所期望的。我还没有在 3 人以上的游戏中测试过这个。

于 2014-02-25T09:46:33.187 回答