Делаем простой квест на сбор
В этом уроке мы создадим простой квест со сбором предметов, где герою нужно собрать 5 цветков и принести их бабушке в обмен на награду.
Можно жмакать!
Для выполнения этого урока вам понадобятся базовые навыки работы с Whimtale: рисование Актёров и написание Сценариев. При необходимости см. Написание сценариев, чтобы узнать, как это делается.
Шаг 1: Нарисуйте персонажей и предметы и подготовьте сцену
Первым делом нам нужно нарисовать необходимый Реквизит и Актёров для создания сцены. Здесь надо подумать, что должно быть Актёром, а что может быть реквизитом: Актёры интерактивны и могут иметь Сценарии, тогда как Реквизит неинтерактивен и хорош для построения карты. Если вы когда-либо ошиблись, помните, что вы можете щёлкнуть правой кнопкой мыши по любой плитке на вкладке Реквизитов и превратить его в Актёра.
Нашими Актёрами станут:
Бабушка;Цветок— мы сможем их дублировать на Сцене, поэтому нам хватит одного Актёра-цветка.

В качестве Реквизита вы можете нарисовать любое количество плиток для создания окружения: заборы, плитки для дома, деревья, грибы и кучки травы. Я также выберу встроенную палитру Slimy 05, созданную green guy на сайте Lospec — вы можете найти эту палитру, нажав кнопку 🎨 в нижней части колонки с палитрой.
Шаг 2: Создайте переменную для подсчёта цветов
Сначала давайте настроим переменную для подсчёта собранных цветов:
- Откройте менеджер переменных: перейдите на вкладку настроек или нажмите кнопку "Управление переменными" в разделе Данных библиотеки блоков.
- Нажмите "Добавить переменную".
- Назовите её "цветы".
- Установите тип как "Число".
- Убедитесь, что начальное значение равно 0.

Шаг 3: Напишите сценарий для сбора и подсчёта цветов
- Перейдите к Актёру "Цветок"
- Откройте его вкладку Сценария
- Добавьте следующие блоки:
- Добавьте блок события "Когда герой коснулся"
- Присоедините к событию блок "Изменить переменную"
- Установите Переменную (A) как
цветы - Установите Операцию как
A = A + B - Установите Значение (B) как 1
- Установите Переменную (A) как
- Наконец, присоедините блок "Уничтожить себя"

Блок "Изменить переменную", в настройках которого будет увеличивать переменную цветы на 1 каждый раз, когда герой касается цветка. После этого цветок уничтожит себя с помощью блока "Уничтожить себя".
Подсказка: продвинутая версия
Текущий сценарий работает правильно — он считает цветы и удаляет их со сцены. Но мы также можем показать уведомление, когда игрок соберёт нужное количество цветов. Мы можем изменить сценарий следующим образом, чтобы проверить, есть ли 5 цветов, и показать сообщение при сборе пятого:
- Расцепите блоки "Уничтожить себя" и "Изменить переменную".
- Добавьте блоки "Ветвь", "Сравнение" и "Считать переменную". Поместите "Ветвление" между "Изменить переменную" и "Уничтожить себя".
- Настройте условие: выберите переменную
цветыв блоке "Читать переменную". Затем соедините его вывод со входом A блока Сравнения. В самом блоке Сравнения установите B как 5. Наконец, соедините Результат сравнения с Ветвлением. - Добавьте новый блок "Сказать реплику" (или "Показать сообщение") — он будет отображаться, когда герой соберёт пятый цветок. Соедините его с выхода "Да" у Ветви, и также с блоком "Уничтожить себя".
- Свяжите "Нет" из Ветки так, чтобы цветы всё равно уничтожались, сколько бы их не собрали.

Здесь я добавляю блок Ветвь с присоединённым Сравнением для проверки текущего количества собранных цветов. Сравнение проверяет, равны ли A и B, и мы присоединяем текущее значение переменной цветы как A. Для B мы просто вводим количество нужных цветов с клавиатуры. Этот сценарий будет запускаться каждый раз, когда герой касается цветка, поэтому при сборе пятого цветка условие станет верным, и блок "Сказать строку" выполнится. В обоих случаях нам нужно помнить о уничтожении цветка со сцены.
Шаг 4: Напишите сценарий для бабушки
Сценарий бабушки будет похож на тот, что был у цветка: нам нужно проверить, собрал ли герой 5 или более цветов. Обратите внимание, что в отличие от сценария цветка мы используем оператор < вместо = — герой может собрать больше, чем 5 цветков, а условие всё равно должно сработать. (Вы также можете поменять местами блоки "Сказать реплику" и использовать оператор ≥.)
- Добавьте событие "Когда герой коснулся".
- Добавьте "Ветвь" из категории "Поток выполнения", а также "Сравнение" и "Считать переменную" из категории "Данные".
- В блоке "Считать переменную" выберите переменную
цветыи соедините вывод этого блока со входом А блока Сравнение. - В Сравнении выберите операцию
A < B. В поле ввода B напишите 5. - Соедините Результат сравнения с Ветвью, её Условием.
- Добавьте два блока "Сказать реплику" и соедините каждый из них с выходами "Да" и "Нет" нашей Ветви. В результате "Да" напишите текст, который скажет бабушка, если у вас ещё не хватает 5 цветов. В результате "Нет" напишите, что говорит бабушка, когда вы принесли ей нужное количество цветов.

Каждый раз, когда герой взаимодействует с бабушкой, она будет проверять, есть ли у вас меньше 5 цветов. Если у вас их не хватает, она попросит их. Если вы принесли хотя бы 5 цветов, она поблагодарит вас за ваши усилия.
Шаг 5: Отслеживайте факт выполнения задания
Хоть этого сценария может быть и достаточно, в нём есть несколько недочётов:
- Если нам понадобится проверить в другом месте, было ли выполнено задание, нам потребуется всё время сравнивать, было ли собрано 5 цветков, или нет. Это неудобно. Вдобавок, такой подход вообще не учитывает, отдали ли вы цветы бабушке!
- Также каждый раз при взаимодействии с бабушкой, при наличии 5 или более цветков, она будет благодарить вас снова и снова.
Чтобы решить эту проблему, мы добавим ещё одну переменную, которая сообщит нам, передали ли мы цветы бабушке. Перейдите на вкладку "Настройки" или нажмите кнопку "Управление переменными" в разделе "Данные" библиотеки сценариев и создайте новую переменную "квест бабушки выполнен". Установите её тип как "Да/Нет" и убедитесь, что её начальное состояние — "Нет".

С помощью одной такой переменной мы можем сделать сценарий бабушки более логичным и правдоподобным. И так как переменная "квест бабушки выполнен" уже является значением "Да/Нет", мы можем напрямую соединять её с блоками Ветвь, и с другими тоже!
- Добавьте ещё один блок Ветвь и блок чтения переменной, который будет считывать только что созданную. Свяжите их друг с другом и поместите блок Ветвь сразу после события. (Вам потребуется расцепить старый блок Ветвь.)
- Соедините старый блок Ветвь с исходом "Нет" у нового блока Ветвь.
- Добавьте новый блок "Сказать реплику" и соедините его с пустым исходящим результатом "Да" первого блока Ветвь. Это будет текстом, который скажет бабушка, когда вы уже передали ей цветы и снова взаимодействуете с ней.
- Добавьте блок "Запись переменной" и присоедините его сразу после блока "Сказать реплику", где бабушка принимает цветы. В этом блоке выберите переменную "квест бабушки выполнен" и поставьте значение "Да".
(Новые блоки выделены.)
На что здесь стоит обратить внимание:
- Мы добавляем ветвление перед любыми предыдущими блоками, кроме события, чтобы проверить, передали ли вы уже цветы бабушке. Это предотвращает повторение фразы "вы собрали все цветочки" снова и снова.
- После того, как мы действительно принесём ей цветы, мы изменим значение переменной "квест бабушки выполнен" на "Да". За счёт этого ветвление в начале Сценария сможет полностью заблокировать ту часть себя, которая отвечает за действия бабушки до получения цветов.
Вы также можете добавить дополнительные блоки после "Задать переменную", чтобы улучшить сценарий и повлиять на мир игры:
- Вы можете добавить блок "Показать сообщение" с фразой "Ты дал бабушке 5 цветов".
- Если вам нужно отслеживать цветы где-то ещё, возможно, потребуется уменьшить значение переменной
цветына 5, как только вы их передадите бабушке. (Используйте блок "Изменить переменную".) - Хоть переменная для отслеживания задания позволяет нам получить её состояние позже, бабушка может, например, сразу же открыть на заборе калитку, которая будет вести к другому уровню. Сделать такое можно с помощью блоков "Превратить всех актёров в других" или "Уничтожить всех актёров".
Вот и всё!
Теперь вы знаете, как создавать простые задания в своей игре, где герой может собирать и использовать предметы, найденные на уровнях. Отличная работа! Это хороший способ сделать ваши истории более интерактивными.
Хотите попробовать себя и улучшить свои навыки? Попробуйте выполнить эти задания самостоятельно:
- Добавьте звук при сборе цветов и при получении награды.
- Создайте несколько уровней и добавьте переходы между ними, чтобы бабушка не просила собрать цветы, растущие прямо перед ней 🤐
- Добавьте способ отслеживания количества собранных вами цветов. Подсказка: напишите
${цветы}в ваших диалогах, чтобы выводить значение переменной на экран. Вы можете узнать больше об этом формате на странице Шаблоны сообщений.- Вы можете показать сообщение при сборе каждого цветка;
- Или бабушка может говорить, сколько у вас есть, когда вы с ней взаимодействуете.