2014-12-14 1 views
1

Google Play 서비스 실시간 멀티 플레이 기능으로 Android 용 게임을 개발했습니다. 나는 현재 선수들과 어울리는 문제가있다. 나는 초대 기능을 사용하지 않으므로 모든 플레이어는 자동 기능을 사용합니다.Google Play 서비스 멀티 플레이어 일치하는 플레이어 오류

내 게임은 4 명이 할 수 있지만 3 명 또는 2 명이 게임을 할 수도 있습니다. 이 장치 내 테스트를 위해 내가 사용

RoomConfig.createAutoMatchCriteria(minNumberOfOpponents, maxNumberOfOpponents, 0); 

내가 시작, 종료 및 시간의 번호를 게임을 다시 시작 계속하면, 종종 클라이언트가 제대로 연결되지 않습니다 발생합니다. 작업 케이스에서는 onRoomConnected 게임이 올바르게 호출되고 게임이 시작됩니다. 어떤 경우에는, 이것은 일어나지 않습니다. 이러한 경우 하나의 장치가 다른 장치를 찾고 onPeerJoined() 및 onRoomConnecting() 콜백이 호출됩니다. onRoomConnected()는 tho로 호출되지 않습니다. 왜냐하면 다른 장치는 아무 정보도 얻지 못하기 때문에 roomCreated 콜백 만 호출되고 그 것이다.

그래서 한 장치는 다른 장치를 찾아 다른 장치가 그 방에 들어 갔음을 알게됩니다. 또한이 장치가 방을 다시 벗어날 때 알려줍니다. 그러나 다른 장치는 이것을 인식하지 못합니다.

도움이 될 경우. 이전에 연결이 끊어지는 문제가 있었는데, 언제든지 clint에 방이 남아있을 때마다 apiClient를 다시 시작하여 문제를 해결했습니다. 나는 이것이 tho와 관련 있다고 생각하지 않는다.

나는 그것이 현재 방을 올바르게 떠나는 것, 그리고 어떻게 든 옛 방에 합류하는 것에 문제가있을 수 있다고 생각했지만 처음으로 앱을 시작하는 경우에도 발생합니다. 또한 apiClient 다시 연결은 사전에이 문제를

편집을

들으을하지 않도록해야합니다 : 그것은 오류가 발생 그것의 내 넥서스 5처럼 보인다. 내가 테스트 한 다른 모든 장치는 정상적으로 작동합니다. 대부분의 경우 Nexus 5도 마찬가지입니다. 클라이언트가 연결되고 게임이 시작되면 아무런 문제가 발생하지 않습니다. errrr은이 기기에서 발생하며 온라인 게임을 검색 할 때 6 개 중 5 개에서만 발생합니다.

다른 동료와 onRoomConnecting()을 발견 한 후 언젠가 onRoomCreated() 바로 다음에 가끔 호출되는 콜백을 중지합니다. onRoomConnected()가 호출 된 후 가끔 있습니다.

다른 장치는 이러한 경우에 tho라는 적절한 콜백을 얻습니다.

  • 따라서 오류 장치가 onRoomCreated()에서 중지되면 다른 장치는 클라이언트를 찾습니다.

  • 오류 장치가 다른 장치를 찾아서 onRoomConnecting()을 호출하고 그 후에 멈 추면 다른 장치는 onRoomConnected()를 가져옵니다.

  • 오류 장치가 호출되면 onRoomConnected()가 호출되어 다른 장치가 이미 게임에있는 동안 오류 메시지가 수신되는 경우가 있습니다.

+0

정확하게 기억한다면, 문제는 디바이스 로직과 온라인 콜백에 다른 스레드를 사용하는 것과 관련이 있습니다. 비슷한 문제가있는 경우 mainThread를 gps 콜백 내부의 모든 것에 사용하십시오. – Kedu

답변

0

아마도 도움이 될 것입니다. 나는 내 문제를 고쳤다는 것을 100 % 확신하지 못했다. 그것을 깊이 시험하지는 않았지만 모든 것이 잘 작동하고있는 것처럼 보입니다.

내 문제는 표준 액티비티 GUI 스레드가 apiClient를 시작하고 콜백을 처리하는 내 애플리케이션에 2 개의 다른 스레드가있는 반면, gameengine 스레드는 실 생성을 시작하고 apiClient를 통해 신뢰할 수있는 메시지를 보냅니다.

동료가 처음 데이터를 연결하고 교환하는 동안 상황이 엉망이되는 것처럼 보입니다. 현재 저는 gameengine 스레드에서 apiClient 액션을 직접 호출하는 것을 피했지만 runOnGuiThread를 사용하여 Activity Gui Thread에서 이러한 액션을 처리했습니다.

관련 문제