我正在使用 Google Play Services 和 libGDX 框架提供的实时多人游戏为两个玩家开发一个简单的游戏。基本上我使用的是谷歌教程中的代码片段。
当玩家通过自动匹配功能连接时,一切正常,但是当我尝试接受邀请时出现问题。所有必要的回调都使用状态码 STATUS_OK 调用,但接受邀请的玩家无法向其他玩家发送可靠消息。而发送此邀请的玩家可以发送消息,并且他们到达第二台设备。
有没有关于 GPGS + libGDX 的已知问题?在这种情况下,也许线程很重要(我在哪个线程中调用方法Games.RealTimeMultiplayer.join()
等)?
我很确定我的所有代码都类似于上面的链接,因为我什至尝试使用 GPGS+libGDX 从头开始实现一个新应用程序,但未能将此功能添加到我现有的游戏中。
此外,我已经在多台设备上测试了我的两个应用程序,并且总是得到相同的结果:
- 自动匹配——一切都很好;
- 邀请 - 仅在“一个方向”工作:被邀请者无法发送消息,但可以正常接收消息,日志或回调中没有错误。
从接受邀请的玩家的角度输出示例:
08-11 18:35:52.219 14173-14173/com.teremok.taptapparty D/PartyRoomUpdateListener: onJoinedRoom - success
08-11 18:35:52.219 14173-14173/com.teremok.taptapparty D/PartyRoomUpdateListener: Room participants:
08-11 18:35:52.219 14173-14173/com.teremok.taptapparty D/PartyRoomUpdateListener: HateCrub - p_CMCMr4mRp_K63QEQAQ
08-11 18:35:52.219 14173-14173/com.teremok.taptapparty D/PartyRoomUpdateListener: AlexeyGorovoy - p_CMCMr4mRp_K63QEQAg
08-11 18:35:52.219 14173-14173/com.teremok.taptapparty D/PartyRoomStatusUpdateListener: onPeerJoined - [p_CMCMr4mRp_K63QEQAQ]
08-11 18:35:53.979 14173-14173/com.teremok.taptapparty D/PartyRoomStatusUpdateListener: onP2PConnected - p_CMCMr4mRp_K63QEQAQ
08-11 18:35:54.419 14173-14173/com.teremok.taptapparty D/PartyRoomStatusUpdateListener: onConnectedToRoom
08-11 18:35:54.429 14173-14173/com.teremok.taptapparty D/PartyRoomStatusUpdateListener: onPeersConnected - [p_CMCMr4mRp_K63QEQAQ]
08-11 18:35:54.439 14173-14173/com.teremok.taptapparty D/PartyRoomUpdateListener: onRoomConnected - success
08-11 18:35:54.439 14173-14173/com.teremok.taptapparty D/AndroidMultiplayer: sending message: hello#AlexeyGorovoy#
08-11 18:35:54.439 14173-14173/com.teremok.taptapparty D/AndroidMultiplayer: message sent failed - network error (STATUS_REAL_TIME_MESSAGE_SEND_FAILED)
08-11 18:35:54.779 14173-14173/com.teremok.taptapparty D/PartyMessageReceiver: onMessageReceived: hello#HateCrub#
在此代码段中,您可以看到房间已连接,其他对等方已连接等,但是此播放器无法发送消息,但成功接收到消息。