Пауза и остановка
Пауза должна замораживать игровой смысл, а не соединение с платформой.
Что останавливать
При session.pause прекращайте начисление очков, счёт игрового времени, появление целей и связанные звуки. Запомните остаток countdown. Возобновление не должно считать время, проведённое на паузе, активной игрой. Не запускайте новый requestAnimationFrame цикл поверх старого.
Что продолжает работать
WebSocket, heartbeat и отображение причины остановки остаются активными. В Unity Time.timeScale не является универсальной остановкой асинхронных задач; в браузере скрытая вкладка может менять частоту таймеров. Игровая логика обязана проверять состояние явно.
Stop и потеря связи
session.stop немедленно блокирует новый ввод. Очистите временную подсветку только если транспорт ещё доступен; не задерживайте выход бесконечно. Потеря соединения также выключает gameplay. Запрещено автоматически переключаться на mouse/mock или самостоятельно отправлять resume. После Completed/Stopping поздний resume не возвращает игру в Running.