Проверьте, находится ли игрок в сети или отключен от сети при отключении питания или выходе из Gameroom
У меня есть игрок, который играет в мою игру в Gameroom Facebook. В моей базе данных есть флаг, указывающий, что игрок вошел в систему через Facebook, чтобы я мог сказать, что он онлайн. В Unity у меня есть скрипт, реализующий MonoBehaviour.OnApplicationQuit() для пометки игрока как офлайн и MonoBehaviour.OnApplicationFocus(bool) для пометки игрока как NoFocus или AFK.
- Случай 1: допустим, что проблема с электричеством отключает компьютер игрока. Как я могу отметить игрока как офлайн? Есть ли способ обнаружить, что плеер выключен?
- Случай 2: игрок закрывает окно игровой комнаты. Есть ли способ обнаружить это действие? OnApplicationQuit() не работал на этом.
2 ответа
Стандартный способ справиться с этим - установить тайм-аут для вашей последней отметки даты и времени. Ваша игра должна регулярно обновлять отметку времени (например, через определенный промежуток времени или при таких событиях, как отправка сообщения в чат или выполнение чего-либо)...
Затем вы настраиваете задание в своей базе данных (например, задание агента в MSSQL Server), чтобы извлекать все зарегистрированные в журнале записи с истекшим временем. Затем задание изменило флаг LoggedIn, чтобы пользователь вышел из системы. Кроме того, агент задания может легко быть программой, которая работает в фоновом режиме на одном из ваших серверов, который обрабатывает это... но это основной метод для обработки ситуаций, о которых вы спрашивали.
Удачи и надеюсь, что это поможет!
Я могу предложить оба как единое решение:
Я предлагаю вам пропинговать интернет-сервис, используя цикл с задержкой (например, подождать 2 секунды и снова выполнить цикл...) и проверить окно комнаты, о котором вы говорите. Верным решением для интернет-соединений является проверка связи с Интернетом (google.com/yourhost.com) во время выполнения этого цикла, в том же цикле вы также можете проверить окно комнаты.