Определите, случайно ли ушел другой игрок (например, отключение от интернета), и снова подключитесь - многопользовательская игра Google Play в реальном времени.
Я использую игровой сервис Google Play в реальном времени.
В настоящее время, если я отключаю WIFI на одном клиенте, другой клиент не обнаруживает, что соединение потеряно. События PeerDisconnect не вызываются.
1 - Предоставляет ли API что-либо для проверки, подключен ли одноранговый узел?
2 - Можно ли позволить игроку подключиться к комнате?
1 ответ
1 - Предоставляет ли API что-либо для проверки, подключен ли одноранговый узел?
Как указано в разделе " Подключение игроков", вы можете отслеживать состояние подключения участников с помощью RoomStatusUpdateListener
Обратные вызовы. Как указано:
Чтобы получать уведомления, когда все игроки подключены, ваша игра может использовать
RoomUpdateListener.onRoomConnected()
Перезвоните. Ваша игра также может использоватьRoomStatusUpdateListener
обратные вызовы для контроля состояния соединения участников. В зависимости от статуса подключения участника ваша игра может решить, следует ли начать или отменить игровой сеанс.
2 - Можно ли позволить игроку подключиться к комнате?
Мультиплеер в реальном времени - геймплей гласит:
Как только необходимое количество участников для комнаты будет подключено, комната считается заполненной, и геймплей может начаться. После того, как участники войдут в комнату, ваша игра может позволить им покинуть комнату (фактически выбрасывая их из игры). Однако, новые игроки не могут присоединиться к комнате после того, как она "заполнена" (даже не для того, чтобы заполнить место, которое участник освободил).
В дополнение к этому, ссылаясь на лучшие практики для многопользовательской игры в реальном времени:
Если вы не покинете комнату надлежащим образом, игровые сервисы Google Play продолжат отправлять клиенту уведомления о событиях и приглашениях. Вы должны покинуть активную комнату всякий раз, когда происходит один из следующих сценариев:
- Геймплей окончен (например, игрок выиграл матч).
- Когда ваша игра уходит на задний план.
- На Android выйдите из комнаты, когда:
- Игрок отменяет игру в интерфейсе комнаты ожидания.
- Код ответа, возвращенный в
onActivityResult()
обратный вызовGamesActivityResultCodes.RESULT_LEFT_ROOM
,- Активность
onStop()
называется. Это может указывать на то, что ваша активность уничтожается. В этом случае выйдите из комнаты и позвонитеdisconnect()
,
Надеюсь, что эти ссылки покрывают все ваши проблемы. Удачного кодирования!:)