玩家滑动以删除比赛
Player swipe to remove match
假设我有一场与两名玩家的回合制比赛。在某个时刻,参与者 1 意识到他即将输掉比赛。轮到玩家 1 时,他使用 Game Center App 进行滑动以移除匹配项。
问题:
一个。玩家 1 的轮流计时器永远不会过期。因此当时间到期时,比赛的轮到不会切换到玩家 2。
乙。该游戏还提供了一种仅查看模式,因此玩家可以在轮到他时查看游戏进度。但是由于没有状态更新表明玩家 1 手动删除了比赛。应用程序无法提供解决方案。此外,您只能在轮到您时结束比赛。
理想情况下,我想宣布玩家 2 为获胜者并结束比赛。
遇到这种情况你是怎么处理的?
我终于找到了解决方法。
如果您删除匹配项,然后调用 GKTurnBasedMatch:loadMatchesWithCompletionHandler
,删除的匹配项不会出现(如预期的那样)。然而,事实证明你可以仍然使用GKTurnBasedMatch:LoadMatchWithID
重新下载删除的比赛,如果你碰巧还有被删除的比赛的ID。
我认为我们可以合理地假设作弊者将再次玩游戏;否则,他们为什么会在乎蒙受损失?因此,我实施了以下内容:
- 在设备上本地维护 table 匹配项。
- 启动时,从 Game Center 中提取本地玩家的比赛列表并与我的本地列表进行比较。
当作弊者发现情况并使用游戏中心界面删除匹配时,匹配将从游戏中心删除,但不会从我的本地数据库中删除。当 The Cheater 再次开始我的游戏时,我发现他们在本地的比赛比在 Game Center 上的比赛还要多。
然后我会根据需要调用 participantQuitInTurnWithOutcome
或 participantQuitOutOfTurnWithOutcome
,结果为 GKTurnBasedMatchOutcomeLost
。
这将轮到下一位玩家并记录作弊者的损失。但是,如果作弊者不再玩游戏,它就不会起作用。 (但是,如果他们不参加比赛,他们就不会再破坏比赛了,所以混乱得到控制)
假设我有一场与两名玩家的回合制比赛。在某个时刻,参与者 1 意识到他即将输掉比赛。轮到玩家 1 时,他使用 Game Center App 进行滑动以移除匹配项。
问题:
一个。玩家 1 的轮流计时器永远不会过期。因此当时间到期时,比赛的轮到不会切换到玩家 2。
乙。该游戏还提供了一种仅查看模式,因此玩家可以在轮到他时查看游戏进度。但是由于没有状态更新表明玩家 1 手动删除了比赛。应用程序无法提供解决方案。此外,您只能在轮到您时结束比赛。
理想情况下,我想宣布玩家 2 为获胜者并结束比赛。
遇到这种情况你是怎么处理的?
我终于找到了解决方法。
如果您删除匹配项,然后调用 GKTurnBasedMatch:loadMatchesWithCompletionHandler
,删除的匹配项不会出现(如预期的那样)。然而,事实证明你可以仍然使用GKTurnBasedMatch:LoadMatchWithID
重新下载删除的比赛,如果你碰巧还有被删除的比赛的ID。
我认为我们可以合理地假设作弊者将再次玩游戏;否则,他们为什么会在乎蒙受损失?因此,我实施了以下内容:
- 在设备上本地维护 table 匹配项。
- 启动时,从 Game Center 中提取本地玩家的比赛列表并与我的本地列表进行比较。
当作弊者发现情况并使用游戏中心界面删除匹配时,匹配将从游戏中心删除,但不会从我的本地数据库中删除。当 The Cheater 再次开始我的游戏时,我发现他们在本地的比赛比在 Game Center 上的比赛还要多。
然后我会根据需要调用 participantQuitInTurnWithOutcome
或 participantQuitOutOfTurnWithOutcome
,结果为 GKTurnBasedMatchOutcomeLost
。
这将轮到下一位玩家并记录作弊者的损失。但是,如果作弊者不再玩游戏,它就不会起作用。 (但是,如果他们不参加比赛,他们就不会再破坏比赛了,所以混乱得到控制)