Хелпикс

Главная

Контакты

Случайная статья





Сохранение и чекпоинты



Всем привет, с вами Loko™ с очередным уроком по Construct Classic. На этот раз мы склепаем систему Save/Load с помощью INI файлов, а также узнаем об одном способе создания чекпоинтов. Урок обещает быть долгим, поэтому заварите чаю, усядьтесь поудобнее, расслабьтесь и приступайте к прочтению. Save/Load с помощью INI файлов Давно уже не секрет, что стандартные средства сохранения/загрузки Construct Classic мягко говоря не идеальны. Поэтому мы пойдем другим путем, используя INI файлы. INI файлы – это обычные текстовые файлы, в которых будут храниться нужные нам значения. В чем суть данного метода: Мы добавляем глобальную переменную, в которой цифры будут означать номера уровней. И при старте одного из уровней будем давать этой переменной нужное значение и записывать это значение в INI файл. Таким образом, у нас всегда будет внешний файл с хранящейся информацией, и нам остается только загружать его, чтобы восстановить прогресс прохождения. Подготовка Создадим меню с двумя кнопками – " Продолжить игру" и " Новая игра". Создадим первую кнопку: Insert an object – Text Переименуйте только что созданный объект в Continue. Измените следующие поля в Properties: Text – Продолжить игру Size – 30 Bold – поставьте галочку Создадим вторую кнопку: Insert an object – Text Переименуйте только что созданный объект в Newgame. Измените следующие поля в Properties: Text – Новая игра Size – 30 Bold – поставьте галочку Расставьте аккуратненько созданные тексты на уровне. Например, так: Создадим глобальную переменную: В правом окошке снизу переходим во вкладку Project – щелкаем правой кнопкой мыши по папке Global variables – Add global variable – в поле Name пишем Level – OK Обратим внимание на папку Layouts. Сейчас там красуется лишь один уровень с названием Layout 1. Выделите его и переименуйте на Menu. Склонируйте уровень – правой кнопкой мыши на Menu – Clone layout Переименуйте только что склонированный уровень в Level 1. Это будет первый уровень игры. Создадим еще один уровень: Правой кнопкой мыши на Level 1 – Clone layout Переименуйте только что склонированный уровень в Level 2. Это, соответственно, второй уровень в игре. Сделайте какие-нибудь изменения на уровнях. Сделайте переходы между уровнями (если вы не знаете, как делаются переходы, прочтите 7 часть статьи " Создание 2D платформера а-ля Ghost Quest" ) Добавьте в каждый уровень поддержку клавиатуры и мыши: Insert an object – Mouse & Keyboard Обязательно добавьте в каждый уровень объект INI: Insert an object - INI Итак, подготовительная часть закончена, переходим в редактор событий уровня Menu (Event Sheet Editor). Сперва нам нужно указать, с каким INI файлом мы будем работать. Событие: Insert event – System – Start of layout Действие: New action – INI – Set INI file – в поле Path пишем apppath+" Save. scrr" – Finish В событии мы указали условие – при запуске уровня В действии мы указали, с каким INI файлом будем работать (Save. srr) Следующее событие будет для начала новой игры. Событие: Insert event – MouseKeyboard – On object clicked – Pick an object – Newgame – Finish Действие: New action – System – Next layout – Finish Событие – игрок кликнул по тексту " Новая игра" Действие – перейти на следующий уровень (предполагается, что следующий уровень – это уровень 1) Теперь сделаем событие для щелчка по " Продолжить игру". Событие: Insert event – MouseKeyboard – On object clicked – Pick an object – Continue – Finish Действие: New action – System – Set value – в графе Variable выбираем Level, в поле Value пишем INI. ItemValue(" Level", " Level" ) – Finish Событие – игрок кликнул по тексту " Продолжить игру" Действие – загружаем значение глобальной переменной из INI файла Подсобытие 1: Щелкаем правой кнопкой мыши по только что созданному событию – Insert sub-event – System – Compare global variable – Level, Equal to, Compare to = 1 – Finish Действие для подсобытия 1: New action – System – Go to layout – в поле Layout вставляем значение 2 – Finish Подсобытие – если загруженное значение глобальной переменной равно 1 Действие – перейти на уровень 2 (т. к. уровень Menu считается первым, то уровень Level 1 – считается вторым) Подсобытие 2: Щелкаем правой кнопкой мыши по только что созданному событию – Insert sub-event – System – Compare global variable – Level, Equal to, Compare to = 2 – Finish Действие для подсобытия 2: New action – System – Go to layout – в поле Layout вставляем значение 3 – Finish Подсобытие – если загруженное значение глобальной переменной равно 2 Действие – перейти на уровень 3 Если проверить, то по нажатию на кнопку " Новая игра" – загружается первый уровень, но по нажатию на кнопку " Продолжить игру" – ничего не происходит. Это потому, что мы еще не настроили сохранение прогресса в INI файл на уровнях. Переходим в редактор событий уровня Level 1. Событие: Insert event – System – Start of layout Действия: 1. New action – System – Set value – Level, Value = 1 – Finish 2. New action – INI – Set INI file – в поле Path пишем apppath+" Save. scrr" – Finish 3. New action – INI – Write value – в поле Group пишем " Level" (в кавычках), в поле Item пишем " Level" (в кавычках), в поле Value пишем global('Level') – Finish Событие – при старте уровня Действие 1 – установить значение глобальной переменной Level на 1 Действие 2 – указываем, с каким INI файлом мы работаем Действие 3 – записываем значение глобальной переменной в INI файл Переходим в редактор событий уровня Level 2. Событие: Insert event – System – Start of layout Действия: 1. New action – System – Set value – Level, Value = 2 – Finish 2. New action – INI – Set INI file – в поле Path пишем apppath+" Save. scrr" – Finish 3. New action – INI – Write value – в поле Group пишем " Level" (в кавычках), в поле Item пишем " Level" (в кавычках), в поле Value пишем global('Level') – Finish Событие – при старте уровня Действие 1 – установить значение глобальной переменной Level на 2 Действие 2 – указываем, с каким INI файлом мы работаем Действие 3 – записываем значение глобальной переменной в INI файл Все готово. Теперь, на уровнях записываются значения глобальных переменных в INI файл. И, если мы включим первый или второй уровень, затем выключим игру, запустим уровень Menu и нажмем на " Продолжить игру" – запуститься тот уровень, на котором мы были в последний раз. Чекпоинты Для реализации чекпоинтов мы будем использовать систему Quicksave/Quickload. Система очень проста – при соприкосновении героя и чекпоинта – игра делает быстрое сохранение. Когда герой погибает – игра делает быструю загрузку. Переходим на нужный уровень. Создадим новый спрайт: Insert an object – Sprite – заливаем все зеленым цветом (в игре этот спрайт будет невидимым, так что можете не стараться, и не придавать залитому объекту индивидуальности) – сохраняем Переименуйте только что созданный спрайт в Checkpoint. Сделаем его невидимым: Выделяем Checkpoint – Properties – поставьте галочку напротив Invisible on start Переходим в редактор событий этого уровня (Event Sheet Editor) Сперва сделаем быстрое сохранение игры при запуске уровня. Событие: Insert event – System – Start of layout Действие: New action – System – Quicksave/Quickload – из списка выбираем Quicksave – Finish Здесь событие – при запуске уровня Действие – сделать быстрое сохранение игры. Сделаем какое-нибудь событие, при котором герой считается мертвым, и игру можно загружать по новой. Например, если герой вышел за пределы уровня (например, упал в пропасть). Событие: Insert event – bazis (это герой) – Object is outside layout? Действие: New action – System – Quicksave/Quickload – из списка выбираем Quickload – Finish Здесь событие – если герой покинул пределы уровня Действие – сделать быструю загрузку с места последнего быстрого сохранения. Сделаем горячую клавишу для быстрой загрузки: Событие: Insert event – MouseKeyboard – On key pressed – R (это горячая клавиша быстрой загрузки) – Finish Действие: New action – System – Quicksave/Quickload – из списка выбираем Quickload – Finish Событие – нажата клавиша R Действие – сделать быструю загрузку с места последнего быстрого сохранения. Разберемся, непосредственно, с чекпоинтом. Событие: Insert event – bazis – On collision with another object – Pick an object – Checkpoint – Finish Действия: 1. New action – Checkpoint – Destroy 2. New action – System – Quicksave/Quickload – из списка выбираем Quicksave – Finish Событие – герой коснулся чекпоинта Действие 1 – уничтожить чекпоинт (чтобы игрок не мог сохраняться несколько раз подряд на одном и том же месте) Действие 2 – сделать быстрое сохранение Все готово, проверяем. Небольшой совет по чекпоинтам – размещайте их в спокойных местах, где рядом нет противников. Чтобы не было такой картины: быстрая загрузка - хлоп, снаряд в героя. Если вы хотите, чтобы при быстрой загрузке восстанавливалось количество здоровья, или чего еще – используйте событие System – On load и действиями к нему восполняйте драгоценное HP. Я надеюсь, что мой урок еще на шаг приблизил вас к реализации вашей игры. Для вас старался Loko™, успехов!

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.