gpt4 book ai didi

ios - 当玩家 "Remove"一场比赛正在进行时如何从 GKTurnBasedMatchmakerViewController 获得通知

转载 作者:行者123 更新时间:2023-11-28 08:17:22 28 4
gpt4 key购买 nike

我正在使用默认的 GKTurnBasedMatchmakerViewController。玩家可以通过向左滑动匹配单元格然后点击红色的“删除”按钮来“删除”正在进行的匹配。但这并没有通知其他玩家第一个玩家已经移除(并退出)了比赛。另一个继续等待另一个玩家加入比赛并转弯。但这违背了我的游戏逻辑。我想在任何玩家退出比赛或移除比赛后立即结束比赛。有什么方法可以接收任何类型的回调或为想要删除比赛的玩家设置 matchOutcome 吗?感谢您的帮助。

最佳答案

长期以来,这一直是 GKTurnBasedMatches 中的一个弱点。比赛可能会在你的游戏之外更新,通过比赛制造商 View Controller 和(在 <= IOS9 中)游戏中心应用程序,经常创建不可恢复的场景。

Player swipe to remove match描述了使用相同的问题(但引用了现已删除的 Game Center 应用程序)作为避免蒙受损失的漏洞。我在那里发布了部分解决方法,类似的方法也将有助于缓解您的情况:

  1. 每当您收到邀请、加入比赛或创建比赛时,将比赛 ID 存储在本地。
  2. 游戏开始时,调用loadMatchesWithCompletionHandler 来拉取本地玩家知道的所有匹配项。本地播放器在您的应用程序“外部”删除的匹配项将(适本地)从服务器列表中丢失。
  3. 即使他们从列表中删除了匹配项,他们仍然可以使用 loadMatchWithID 加载特定匹配项。因此,对于每个“丢失”的匹配项,使用您在本地存储的匹配 ID 调用 loadMatchWithID,获取匹配对象,然后调用 participantQuitInTurnWithOutcomeparticipantQuitOutOfTurnWithOutcome,或 declineInviteWithCompletionHandler 根据玩家在已删除比赛中的状态。
  4. 退出/拒绝将发送通知和/或将回合转给其他玩家。

虽然不理想,但只要“删除者”重新开始游戏,你就有机会评估所有游戏,并强制从他们删除的游戏中干净退出。调用任何一个 participantQuit 函数都会向其他玩家发送通知(和/或通过回合)。

但是,如果“删除者”不再启动游戏,则此变通方法将不起作用。在这种情况下,如果其他玩家在设定的时间间隔后没有看到任何进展,那么他们所能做的就是最终自己离开比赛。

关于ios - 当玩家 "Remove"一场比赛正在进行时如何从 GKTurnBasedMatchmakerViewController 获得通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42242527/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com