Делаем простой квест на сбор

В этом уроке мы создадим простой квест со сбором предметов, где герою нужно собрать 5 цветков и принести их бабушке в обмен на награду.

Можно жмакать!

На заметку

Для выполнения этого урока вам понадобятся базовые навыки работы с Whimtale: рисование Актёров и написание Сценариев. При необходимости см. Написание сценариев, чтобы узнать, как это делается.

Шаг 1: Нарисуйте персонажей и предметы и подготовьте сцену

Первым делом нам нужно нарисовать необходимый Реквизит и Актёров для создания сцены. Здесь надо подумать, что должно быть Актёром, а что может быть реквизитом: Актёры интерактивны и могут иметь Сценарии, тогда как Реквизит неинтерактивен и хорош для построения карты. Если вы когда-либо ошиблись, помните, что вы можете щёлкнуть правой кнопкой мыши по любой плитке на вкладке Реквизитов и превратить его в Актёра.

Нашими Актёрами станут:

  • Бабушка;
  • Цветок — мы сможем их дублировать на Сцене, поэтому нам хватит одного Актёра-цветка.

В качестве Реквизита вы можете нарисовать любое количество плиток для создания окружения: заборы, плитки для дома, деревья, грибы и кучки травы. Я также выберу встроенную палитру Slimy 05, созданную green guy на сайте Lospec — вы можете найти эту палитру, нажав кнопку 🎨 в нижней части колонки с палитрой.

Шаг 2: Создайте переменную для подсчёта цветов

Сначала давайте настроим переменную для подсчёта собранных цветов:

  1. Откройте менеджер переменных: перейдите на вкладку настроек или нажмите кнопку "Управление переменными" в разделе Данных библиотеки блоков.
  2. Нажмите "Добавить переменную".
  3. Назовите её "цветы".
  4. Установите тип как "Число".
  5. Убедитесь, что начальное значение равно 0.

Шаг 3: Напишите сценарий для сбора и подсчёта цветов

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

Блок "Изменить переменную", в настройках которого будет увеличивать переменную цветы на 1 каждый раз, когда герой касается цветка. После этого цветок уничтожит себя с помощью блока "Уничтожить себя".

Подсказка: продвинутая версия

Текущий сценарий работает правильно — он считает цветы и удаляет их со сцены. Но мы также можем показать уведомление, когда игрок соберёт нужное количество цветов. Мы можем изменить сценарий следующим образом, чтобы проверить, есть ли 5 цветов, и показать сообщение при сборе пятого:

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

Здесь я добавляю блок Ветвь с присоединённым Сравнением для проверки текущего количества собранных цветов. Сравнение проверяет, равны ли A и B, и мы присоединяем текущее значение переменной цветы как A. Для B мы просто вводим количество нужных цветов с клавиатуры. Этот сценарий будет запускаться каждый раз, когда герой касается цветка, поэтому при сборе пятого цветка условие станет верным, и блок "Сказать строку" выполнится. В обоих случаях нам нужно помнить о уничтожении цветка со сцены.

Шаг 4: Напишите сценарий для бабушки

Сценарий бабушки будет похож на тот, что был у цветка: нам нужно проверить, собрал ли герой 5 или более цветов. Обратите внимание, что в отличие от сценария цветка мы используем оператор < вместо = — герой может собрать больше, чем 5 цветков, а условие всё равно должно сработать. (Вы также можете поменять местами блоки "Сказать реплику" и использовать оператор .)

  1. Добавьте событие "Когда герой коснулся".
  2. Добавьте "Ветвь" из категории "Поток выполнения", а также "Сравнение" и "Считать переменную" из категории "Данные".
  3. В блоке "Считать переменную" выберите переменную цветы и соедините вывод этого блока со входом А блока Сравнение.
  4. В Сравнении выберите операцию A < B. В поле ввода B напишите 5.
  5. Соедините Результат сравнения с Ветвью, её Условием.
  6. Добавьте два блока "Сказать реплику" и соедините каждый из них с выходами "Да" и "Нет" нашей Ветви. В результате "Да" напишите текст, который скажет бабушка, если у вас ещё не хватает 5 цветов. В результате "Нет" напишите, что говорит бабушка, когда вы принесли ей нужное количество цветов.

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

Шаг 5: Отслеживайте факт выполнения задания

Хоть этого сценария может быть и достаточно, в нём есть несколько недочётов:

  • Если нам понадобится проверить в другом месте, было ли выполнено задание, нам потребуется всё время сравнивать, было ли собрано 5 цветков, или нет. Это неудобно. Вдобавок, такой подход вообще не учитывает, отдали ли вы цветы бабушке!
  • Также каждый раз при взаимодействии с бабушкой, при наличии 5 или более цветков, она будет благодарить вас снова и снова.

Чтобы решить эту проблему, мы добавим ещё одну переменную, которая сообщит нам, передали ли мы цветы бабушке. Перейдите на вкладку "Настройки" или нажмите кнопку "Управление переменными" в разделе "Данные" библиотеки сценариев и создайте новую переменную "квест бабушки выполнен". Установите её тип как "Да/Нет" и убедитесь, что её начальное состояние — "Нет".

С помощью одной такой переменной мы можем сделать сценарий бабушки более логичным и правдоподобным. И так как переменная "квест бабушки выполнен" уже является значением "Да/Нет", мы можем напрямую соединять её с блоками Ветвь, и с другими тоже!

  1. Добавьте ещё один блок Ветвь и блок чтения переменной, который будет считывать только что созданную. Свяжите их друг с другом и поместите блок Ветвь сразу после события. (Вам потребуется расцепить старый блок Ветвь.)
  2. Соедините старый блок Ветвь с исходом "Нет" у нового блока Ветвь.
  3. Добавьте новый блок "Сказать реплику" и соедините его с пустым исходящим результатом "Да" первого блока Ветвь. Это будет текстом, который скажет бабушка, когда вы уже передали ей цветы и снова взаимодействуете с ней.
  4. Добавьте блок "Запись переменной" и присоедините его сразу после блока "Сказать реплику", где бабушка принимает цветы. В этом блоке выберите переменную "квест бабушки выполнен" и поставьте значение "Да".

(Новые блоки выделены.)

На что здесь стоит обратить внимание:

  • Мы добавляем ветвление перед любыми предыдущими блоками, кроме события, чтобы проверить, передали ли вы уже цветы бабушке. Это предотвращает повторение фразы "вы собрали все цветочки" снова и снова.
  • После того, как мы действительно принесём ей цветы, мы изменим значение переменной "квест бабушки выполнен" на "Да". За счёт этого ветвление в начале Сценария сможет полностью заблокировать ту часть себя, которая отвечает за действия бабушки до получения цветов.

Вы также можете добавить дополнительные блоки после "Задать переменную", чтобы улучшить сценарий и повлиять на мир игры:

  • Вы можете добавить блок "Показать сообщение" с фразой "Ты дал бабушке 5 цветов".
  • Если вам нужно отслеживать цветы где-то ещё, возможно, потребуется уменьшить значение переменной цветы на 5, как только вы их передадите бабушке. (Используйте блок "Изменить переменную".)
  • Хоть переменная для отслеживания задания позволяет нам получить её состояние позже, бабушка может, например, сразу же открыть на заборе калитку, которая будет вести к другому уровню. Сделать такое можно с помощью блоков "Превратить всех актёров в других" или "Уничтожить всех актёров".

Вот и всё!

Теперь вы знаете, как создавать простые задания в своей игре, где герой может собирать и использовать предметы, найденные на уровнях. Отличная работа! Это хороший способ сделать ваши истории более интерактивными.

Хотите попробовать себя и улучшить свои навыки? Попробуйте выполнить эти задания самостоятельно:

  • Добавьте звук при сборе цветов и при получении награды.
  • Создайте несколько уровней и добавьте переходы между ними, чтобы бабушка не просила собрать цветы, растущие прямо перед ней 🤐
  • Добавьте способ отслеживания количества собранных вами цветов. Подсказка: напишите ${цветы} в ваших диалогах, чтобы выводить значение переменной на экран. Вы можете узнать больше об этом формате на странице Шаблоны сообщений.
    • Вы можете показать сообщение при сборе каждого цветка;
    • Или бабушка может говорить, сколько у вас есть, когда вы с ней взаимодействуете.