Платформер на Construct 2. Сохранение игры

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

 

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

 

Для более быстрого изучения Construct 2, рекомендую полностью проделать этот урок на своем компьютере.

 

Приступим. Запускаем программу и открываем проект (FileOpen…) из прошлого урока.

Затем добавляем объект Local Storage (локальное хранилище).

Платформер на Construct 2. Сохранение игры (скриншот 1)

Локальное хранилище — это специальная база данных. Мы можем записывать в нее данные, получать их, изменять и удалять. Данные хранятся по типу: ключ — значение.

 

Первым делом давайте настроим сохранение переменных. Переходим в список событий levels.

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

 

Добавляем второе действие (ссылка Add action).

Действие 2: объект Local Storage → Set item → в Key вводим «save_progress» (в кавычках), в Value вводим progress → Done

Пусть ключ под переменную называется save_progress (сохранить прогресс).

Платформер на Construct 2. Сохранение игры (скриншот 2)

Теперь в основное событие добавляем восьмое действие (ссылка Add action), которое будет сохранять значение переменной общего количества бонусов.

Действие 8: объект Local Storage → Set item → в Key вводим «save_score» (в кавычках), в Value вводим score → Done

Здесь мы называем ключ save_score (сохранить счет).

Платформер на Construct 2. Сохранение игры (скриншот 3)

С сохранением разобрались. Идем дальше.

 

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

 

Сейчас у нас нет ни того, ни другого. А загружать сохранения в списке уровней не стоит. Могут появится проблемы с кадрами спрайта уровней. Например, уровень открыт, а все равно показан кадр с замком.

Так что давайте создадим новый макет со списком событий.

Платформер на Construct 2. Сохранение игры (скриншот 4)

Новый макет и список событий называем menu.

В следующий уроках создадим полноценное главное меню. А пока размещаем в центре макета кнопку buttons_menu. Делаем кнопку видимой и устанавливаем нулевой кадр.

Платформер на Construct 2. Сохранение игры (скриншот 5)

После чего открываем список событий menu. И добавляем новое событие (Add event).

Условие: объект Touch → On touched object → в Object выбираем buttons_menu → Done

В этом условии отслеживается нажатие на кнопку.

 

Добавляем действие (ссылка Add action).

Действие: объект System → Go to layout → в Layout выбираем макет list of levels → Done

В этом действии выполняется переход в список уровней игры.

 

Оставляем комментарий: Временная кнопка для перехода в список уровней.

Платформер на Construct 2. Сохранение игры (скриншот 6)

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

 

Продолжаем. Прежде, чем загрузить данные из хранилища, нужно проверить их существование. Добавляем новое событие (ссылка Add event).

Условие: объект System → On start of layout

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

 

Добавляем действия (ссылка Add action).

Действие 1: объект Local Storage → Check item exists → в Key вводим «save_progress» (в кавычках) → Done

Действие 2: объект Local Storage → Check item exists → в Key вводим «save_score» (в кавычках) → Done

В этих действиях проверяется существование данных с ключами save_progress и save_score.

 

Оставляем комментарий: Проверка существования сохраненных данных.

Платформер на Construct 2. Сохранение игры (скриншот 7)

Добавляем следующее событие (ссылка Add event).

Условие: объект Local Storage → On item exists → в Key вводим «save_progress» (в кавычках) → Done

В условии говорится, выполнить действие при существовании данных в хранилище.

 

Добавляем действие (ссылка Add action).

Действие: объект System → Set value → в Variable выбираем переменную progress, в Value вводим LocalStorage.ItemValue → Done

В этом действии в глобальную переменную прогресса записывается значение из локального хранилища.

 

Оставляем комментарий: Загрузка сохраненных данных.

 

И добавляем такое же событие, только для загрузки общего счета.

Платформер на Construct 2. Сохранение игры (скриншот 8)

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

 

Для удобства сгруппируем эти события.

Платформер на Construct 2. Сохранение игры (скриншот 9)

Отлично. Теперь вы можете запустить тестирование игры с макета menu. Все должно работать!

Платформер на Construct 2. Сохранение игры (скриншот 10)

После прохождения уровня данные записались. При обновлении страницы браузера все сохранения остались.

 

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