Проверьте, находится ли игрок в сети или отключен от сети при отключении питания или выходе из Gameroom

У меня есть игрок, который играет в мою игру в Gameroom Facebook. В моей базе данных есть флаг, указывающий, что игрок вошел в систему через Facebook, чтобы я мог сказать, что он онлайн. В Unity у меня есть скрипт, реализующий MonoBehaviour.OnApplicationQuit() для пометки игрока как офлайн и MonoBehaviour.OnApplicationFocus(bool) для пометки игрока как NoFocus или AFK.

  1. Случай 1: допустим, что проблема с электричеством отключает компьютер игрока. Как я могу отметить игрока как офлайн? Есть ли способ обнаружить, что плеер выключен?
  2. Случай 2: игрок закрывает окно игровой комнаты. Есть ли способ обнаружить это действие? OnApplicationQuit() не работал на этом.

2 ответа

Стандартный способ справиться с этим - установить тайм-аут для вашей последней отметки даты и времени. Ваша игра должна регулярно обновлять отметку времени (например, через определенный промежуток времени или при таких событиях, как отправка сообщения в чат или выполнение чего-либо)...

Затем вы настраиваете задание в своей базе данных (например, задание агента в MSSQL Server), чтобы извлекать все зарегистрированные в журнале записи с истекшим временем. Затем задание изменило флаг LoggedIn, чтобы пользователь вышел из системы. Кроме того, агент задания может легко быть программой, которая работает в фоновом режиме на одном из ваших серверов, который обрабатывает это... но это основной метод для обработки ситуаций, о которых вы спрашивали.

Удачи и надеюсь, что это поможет!

Я могу предложить оба как единое решение:

Я предлагаю вам пропинговать интернет-сервис, используя цикл с задержкой (например, подождать 2 секунды и снова выполнить цикл...) и проверить окно комнаты, о котором вы говорите. Верным решением для интернет-соединений является проверка связи с Интернетом (google.com/yourhost.com) во время выполнения этого цикла, в том же цикле вы также можете проверить окно комнаты.

Другие вопросы по тегам