【发布时间】:2020-04-08 02:49:07
【问题描述】:
我正在完成对支持 4 人游戏中心的游戏的更新,但我突然遇到了以前版本中没有的虚假玩家断开连接消息的问题。更奇怪的是,并非所有连接到匹配项的设备都在接收消息。一台设备会认为播放器已断开连接,但仍有消息从(假定)断开连接的播放器传递给其他播放器。
这些消息直接来自匹配实例,通过 match:player:didChangeState: 消息,所以我认为它不会在我的代码中出现任何内容,但它没有多大意义。游戏可以毫无问题地进行 10 多分钟,一旦出现错误断开连接,其余的很快就会消失。
我已经用我能想到的每一个搜索词搜索了网络,看看其他人是否看到过这种行为,并且它似乎是独一无二的。它必须在我的代码中,但我什至想不出如何深入了解它。
任何帮助将不胜感激, 卡梅伦
【问题讨论】:
-
抱歉,这里不太清楚。我假设玩家断开连接来自 Apple 的 Game Center 服务器,所以我假设我的代码中不会有任何东西生成这些消息。正如我在上一段中所说,因为这似乎是一个独特的问题,所以我只能假设它是我的代码中的某些内容。我只是不知道如何调试。
-
我在 Game Center 沙盒中看到了许多关于问题的帖子。这可能是沙盒的异常情况吗?似乎也不太可能。不会创造一个非常好的测试环境。
-
您是否在代码中添加了大量日志记录?没有它(有时有它!)很难追踪与通信时间相关的错误。
-
我有大量的控制台日志,但这只是在这种情况下非常有用,因为消息直接来自 GameKit。我已经通过对执行堆栈的调查证实了这一点。我将四个设备中的两个连接到工作站,这样我就可以同时看到至少两个控制台输出,并确认一个设备上的错误播放器断开连接没有在另一个设备上注册。我认为在这一点上,我唯一的解决方案是实施辅助机制来验证玩家是否真的掉线了。
-
那里也没有解决方案。播放器断开消息似乎确实表明受影响的播放器和接收设备之间确实失去了通信。我想我会向 Apple 提交一份 TSI,看看他们能否提供任何关于导致这种行为的原因的见解。
标签: ios game-center gamekit