Главная » Статьи » Конструкторы игр, системы разработки игр » Scirra Construct » Сохранение и чекпоинты
|
Сохранение и чекпоинты
[ Поделиться ]
[ Спасибо! ]
|
18:28
На этот раз мы склепаем систему 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™, успехов!
Категория: Scirra Construct |
Просмотров: 9187 |
Добавил: Loko™ (18.11.2012)
| Рейтинг: 5.0/5
Теги: |
HTML ссылка на материал: BB ссылка на материал: |
Всего комментариев: 0 | |