Игры Construct 3 работают в автономном режиме. Пока игра была загружена один раз в сети, пользователь может снова играть в нее после выхода из сети. Это особенно хорошо для приложений «Добавить на главный экран», так как вы получаете значок на своем устройстве для запуска игры, и вам не нужно быть в сети, чтобы играть — так же, как родное приложение! В этом руководстве описывается, как работает автономная поддержка и как вы можете улучшить ее с помощью таких функций, как автоматическое обновление.
СЛУЖЕБНЫЙ РАБОТНИК
В играх Construct 3 используется технология браузера, называемая Service Worker, позволяющая играм работать в автономном режиме. По сути, это какой-то JavaScript, который может работать даже без подключения к Интернету, а также может читать локально сохраненные файлы, поэтому он может продолжать читать файлы, используемые игрой, даже в автономном режиме.
После экспорта проекта вы должны заметить два файла в экспортированной папке с именами sw.js и offline.json. Вместе они обеспечивают автономную поддержку. sw.js — это Service Worker, то есть JavaScript, который позволяет игре загружаться в автономном режиме. offline.json — это, по сути, просто список всех файлов в проекте, поэтому все они могут быть сохранены для использования в автономном режиме.
После загрузки вашей игры в Интернет (и при условии, что ваш сервер использует HTTPS), браузер сохранит всю вашу игру на диск после ее первой загрузки. После этого, если вы снова загрузите игру, она загрузится с диска. Вообще ничего не скачивается! Обычно это означает, что игра загружается очень быстро. Это означает, что даже если вы не в сети, вы все равно можете загрузить игру и играть. Импортированные файлы проектов также кэшируются для автономного использования.
ОБНОВЛЕНИЕ ВАШЕЙ ИГРЫ
Вы можете задаться вопросом: если игра всегда загружается с диска, как вы обновляете свою игру?
Если вы находитесь в сети и загружаете игру, браузер загружается с диска мгновенно, как и раньше. Однако во время работы игра проверяет наличие обновлений в фоновом режиме. Если вы загрузили новую версию, браузер загрузит ее и сохранит на диск. Затем, когда вы в следующий раз загрузите игру (включая обновление страницы), браузер загрузит новую версию. До тех пор пользователь продолжает играть в старую версию.
Объект Browser имеет два условия для обнаружения этого события: «Об обновлении найдено» и «Готово к обновлению». «Об обновлении найдено» срабатывает, как только браузер обнаруживает новую версию в фоновом режиме. Однако он еще не готов к использованию — только начал скачивать обновление. «Готово к обновлению» срабатывает, когда загрузка завершена и новая версия готова к загрузке. Если это срабатывает на титульном экране игры, вы можете предложить пользователю перезагрузить страницу (используя действие браузера «Перезагрузить»), чтобы он играл в самую последнюю и самую лучшую версию. Тем не менее, вы, вероятно, не захотите прерывать их в середине игры!
Это позволяет вам легко сделать простой автообновитель для вашей игры. Вы можете отобразить текстовый объект с надписью "Загрузка обновления...", чтобы уведомить пользователя о том, что обновление загружается после триггеров «Об обновлении найдено». Когда срабатывают триггеры «Готово к обновлению», вы можете захотеть отобразить сообщение о готовности обновления и отобразить кнопку, которая перезагружает страницу при нажатии.
НЕ ЗАБУДЬТЕ ПОВТОРНО ЗАГРУЗИТЬ OFFLINE.JSON
Если вы обновляете хотя бы один файл своей игры, вы также должны каждый раз повторно загружать экспортированный файл offline.json! В противном случае браузер решит, что ничего не изменилось, и не будет загружать обновление. (Файл offline.json должен быть изменен, чтобы браузер мог проверить наличие обновлений, а Construct добавляет отметку времени в начало файла, чтобы гарантировать, что он всегда меняется.)
Самый простой способ запомнить это — просто всегда повторно загружать все файлы после экспорта.
ИСПРАВЛЕНИЕ ПРОБЛЕМ
Если вы не видите, что обновление происходит даже после загрузки нового набора файлов, включая offline.json, проверьте конфигурацию кэширования вашего веб-сервера. Например, если ваш сервер отправляет файл offline.json с кеширующим заголовком, в котором говорится: «Вы можете продолжать читать этот файл из кеша в течение 24 часов», то вы не увидите обновления еще 24 часа. Если он позволяет постоянно кэшировать файлы, вы можете никогда не увидеть обновление. Очистка кеша браузера и проверка заголовков HTTP-ответа сервера могут помочь определить это.
ДРУГИЕ ПОЛЕЗНЫЕ ФУНКЦИИ
Объект Browser также имеет триггер «В автономном режиме». Это запускается при первой загрузке игры после того, как она была сохранена на диск. С этого момента игра может работать в автономном режиме. До этого, если пользователь переходит в автономный режим, он еще не закончил сохранение, поэтому не будет работать в автономном режиме.
Объект Browser имеет еще три полезных условия: «В сети», «В интернете» и «Когда выключился». С их помощью вы можете определить, находится ли пользователь в настоящее время в сети, и определить, подключаются ли они к сети и выходят из сети во время игры. Это может быть полезно для включения и отключения любых онлайн-функций, таких как объект AJAX.
Наконец, если вы хотите проверить статус сохранения или обновления вашей игры Service Worker, вы можете проверить консоль браузера. Она будет регистрировать сообщения о состоянии, поскольку Service Worker определяет, является ли он актуальным или доступно ли обновление, когда он начинает загрузку новой версии, когда она готова к использованию и т. д.
ВЫВОД
Construct использует Service Workers, чтобы ваши игры могли работать в автономном режиме. Обязательно обновляйте offline.json всякий раз, когда обновляете игру. Вставьте объект Browser в свою игру и используйте события проверки обновлений. Теперь у вас есть игра, которая работает в автономном режиме и автоматически обновляется всякий раз, когда пользователь находится в сети. Это очень просто настроить, но очень полезно! Обязательно добавьте поддержку в свои игры!