Nano Hash - криптовалюты, майнинг, программирование

Обнаружьте, если другой игрок вышел непреднамеренно (например, отключение от Интернета), и повторно подключитесь - многопользовательская игра в реальном времени Google Play

Я реализую многопользовательскую игру в режиме реального времени в игровом сервисе Google Play.

В настоящее время, если я отключу WIFI на одном клиенте, другой клиент не обнаружит, что соединение потеряно. События PeerDisconnect не вызываются.

1. Предоставляет ли API что-нибудь, чтобы проверить, подключен ли еще одноранговый узел?

2 - Есть ли способ позволить игроку повторно подключиться к комнате?


Ответы:


1

1. Предоставляет ли API какие-либо средства для проверки того, подключен ли одноранговый узел?

Как указано в разделе Подключение игроков, вы можете отслеживать состояние подключения участников. с использованием RoomStatusUpdateListener обратных вызовов. Как указано:

Чтобы получать уведомления о подключении всех игроков, ваша игра может использовать обратный вызов RoomUpdateListener.onRoomConnected(). Ваша игра также может использовать обратные вызовы RoomStatusUpdateListener для отслеживания состояния подключения участников. В зависимости от статуса подключения участника ваша игра может принять решение о начале или отмене игрового сеанса.

2. Есть ли способ позволить игроку повторно подключиться к комнате?

Многопользовательская игра в реальном времени — геймплей гласит:

Как только необходимое количество участников для комнаты подключено, комната считается «заполненной», и можно начинать игровой процесс. После того, как участники присоединятся к комнате, ваша игра может позволить им покинуть комнату (фактически исключая их из игры). Однако новые игроки не могут присоединиться к комнате после того, как она "заполнена" (даже для того, чтобы заполнить освободившееся место участника).

В дополнение к этому, ссылаясь на рекомендации для многопользовательской игры в реальном времени:

Если вы не покинете комнату должным образом, игровые сервисы Google Play продолжат отправлять клиенту уведомления о событиях и приглашениях. Вы должны покинуть активную комнату всякий раз, когда происходит один из следующих сценариев:

  • Игровой процесс завершен (например, игрок выиграл матч).
  • Когда ваша игра уходит в фоновый режим.
  • On Android, leave the room when:
    • The player cancels the game in the waiting room UI.
    • Код ответа, возвращаемый в обратном вызове onActivityResult(), равен GamesActivityResultCodes.RESULT_LEFT_ROOM.
    • Активность onStop() вызывается. Это может указывать на то, что ваша активность уничтожается. В этом случае выйдите из комнаты и позвоните disconnect().

Надеюсь, что эти ссылки покроют все ваши опасения. Удачного кодирования! :)

17.05.2016
  • 1 - Спасибо, я посмотрю на это, т.е. изменится ли статус подключения участника, у которого отключен интернет, для другого участника. 2 - Таким образом, короткий ответ заключается в том, что нет возможности повторно подключиться к той же комнате после выхода. :) 17.05.2016
  • ОБНОВЛЕНИЕ: протестировано ваше решение для 1-го вопроса ---- Когда подключение к Интернету участника отключается или даже когда оно просто переключается между данными и Wi-Fi, статус подключения участника не меняется. Он по-прежнему показывает, что участник подключен, пока вы не позвоните другому участнику покинуть комнату. Но теперь вы не можете отправлять сообщения! 20.05.2016
  • У меня та же проблема, и да, реализация обратных вызовов RoomStatusUpdateListener, как предложил @Teyam, не помогает. API просто не вызывает никакого обратного вызова, когда одноранговый узел теряет соединение. Я планирую решить эту проблему, настроив сторожевые таймеры на клиентах, которые постоянно пингуют одноранговые узлы, чтобы проверить, подключены ли они к сети. 10.02.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..