回合制玩家无需对手调用takeTurn即可接收自己的数据

时间:2019-04-23 17:28:25

标签: android google-play-services

我一直在实施自己的回合制棋盘游戏。整个游戏基于PlayGameService的SkeletonTbmp example,并进行了一些修改。

我的问题是,玩家有时会收到自己使用takeTurn()发送给对手的数据。我已经多次检查getNextParticipantId()返回正确的ID。例如,我的模拟器会保留移动数据,然后将其正确发送到我的实际Android手机中,而该手机会如示例中所示持久存在。然后几秒钟后,我的仿真器接收到了相同的数据,而实际设备没有持久化它并调用takeTurn()。有时在第一回合的游戏开始时也会发生这种情况,模拟器会在没有实际设备发送任何内容的情况下接收到第一个“虚拟”回合数据。并非每转都会发生这种情况,只是偶尔发生。

这可能与我的Google Play控制台设置有关吗?还是这些回合缓冲了某些方式,然后在某些时候发布了这些内容?

2 个答案:

答案 0 :(得分:2)

由于您没有提供任何代码,所以我无法指出问题所在。但是,仅出于解释的目的,只要比赛进行了,比赛将包含数据,无论是否轮到您。为了查明发生这种情况的确切位置,请检查updatematch()的执行,因为它必须在没有实际需要的情况下触发。 (登录,重新连接,启动,连接提示等)。不能确定您的代码,但是可以选择绕过该错误的替代方法,实际上您可以在MATCH_TURN_STATUS_MY_TURN之外对转数计数器进行检查,否则将通过空转弯。希望它能对我有所帮助,如果没有您的代码我会帮不上忙。

答案 1 :(得分:0)

似乎我只是忘了总是从“检查游戏” -UI中删除旧游戏,这就是为什么当我已经与同一个对手一起参加新游戏后,它会在一段时间后发送相同数据的原因。