Проблема: визуально ветвление есть, а на деле игра ничего не помнит
Мы добавили выбор и прописали разные реплики для Алекса и Джордана. В редакторе всё выглядит красиво - ветки событий расходятся в стороны, но вот загвоздка: выбор игрока не сохраняется и смысл выбора тут же исчезает.
История не сохраняется. Если дальше по сюжету вам понадобится реплика вроде «Ты же помнишь, что я уже приходил?», игра её не выдаст. У неё просто нет памяти. И сегодня мы этот пробел закроем.
Что такое переменная
Переменная - это значение с уникальным именем, которое история хранит и может менять по ходу игры. Например:
toldTruth- параметр, который фиксирует, вышла ли тайна наружуmood- значение, которое меняется по мере того, как выборы игрока формируют сцену
Вы задаёте ей имя, тип (логический, целочисленный, текстовый и так далее) и начальное значение. Затем узлы читают её и записывают в неё.
Шаг 1 - Создайте переменную
Прежде чем использовать toldTruth, её обязательно нужно задать в системе, иначе движок её просто не увидит
- На панели инструментов графа откройте Переменные.
- Выберите Управлять переменными, затем Создать переменную.
- Укажите служебное имя -
toldTruth- выберите типboolean(логическое), а по умолчанию оставьтеfalse(флажок с чекбоксом должен быть пустым).
Итого мы имеем: логическую переменную с собственным именем. По умолчанию она равна false, пока система не присвоит ей значение true.

Шаг 2 - Установите его, когда игрок выбирает опцию
Теперь свяжем выбор так, чтобы один ответ переключал значение. В графе опция реплики сама по себе не несёт значения - вы направляете её в узел Задать переменную.
- Выберите опцию «Я не был уверен, что приду» (ответ, где Джордан признаётся, что чуть не остался дома).
- Из выхода этой опции добавьте узел Задать переменную.
- В нём выберите переменную
toldTruthи задайте её значениеtrue. - Продолжайте вести логику из этого узла туда, куда раньше вела стрелка ветвления.
То же самое сделайте с другой опцией, если хотите, чтобы она сохраняла другой исход, - иначе оставьте toldTruth со значением по умолчанию.
Шаг 3 - Появление реплики только в том случае, если этот параметр включен (равен true)
Так как toldTruth уже логического типа, прокинуть её напрямую:
- Добавьте узел данных Получить переменную, выберите
toldTruth. - Подключите её выход напрямую к пину условия узла Условие (ветвление) - сравнение не нужно, так как узел Условие принимает логическое значение напрямую.
- Реплику, которая должна играть только при
toldTruth == true, поместите на ветку Да.
Теперь эта реплика появляется только тогда, когда игрок действительно изменил значение на true. На другой ветке - то, что должно произойти в противном случае.

Шаг 4 - Проверьте обе ветки в браузере
Запустите сцену прямо в редакторе кнопкой Запустить на панели инструментов.
- Пройдите один путь - выберите опцию, которая устанавливает
toldTruth = true- и убедитесь, что условная реплика показывается. - Пройдите другой путь - оставьте значение
false- и убедитесь, что она остаётся скрытой.
Что вы решили сегодня
- Вы объявили переменную (
toldTruth) с типом и значением по умолчанию. - Вы установили её из выбора, направив опцию в узел Задать переменную.
- Вы построили условие, подключив Получить переменную напрямую к узлу Условие.
- Вы проверили обе ветки в браузере.
Игра теперь помнит, что выбрал игрок, - и действует на основе этого.
Что дальше: экспорт и публикация
Сцена разветвлённая и запоминающая состояние. Дальше мы экспортируем её и отдаём другим на прохождение. Экспортируйте в HTML5 для мгновенной браузерной игры или в Ren'Py, Ink, Yarn Spinner, Dialogic - для своего движка.
Попробуйте сейчас: откройте проект на scriptformer.com/app, добавьте переменную toldTruth и проведите один выбор через узел Set variable.
FAQ
Как создать переменную?
Откройте Переменные в панели инструментов графа, затем Управлять переменными и Задать переменную. Укажите служебное имя, тип и значение по умолчанию.
Задаёт ли опция выбора переменную сама по себе?
Нет. Опция только направляет к следующему узлу. Чтобы изменить значение, направьте опцию в узел Задать переменную, который его присваивает.
Как сделать реплику видимой только при условии?
Подключите выход логического узла Получить переменную к пину условия узла Условие и поместите реплику на ветку Да. Для значений не логического типа сначала соберите сравнение (например, через узел Равно).
Какими могут быть типы переменных?
Логическое, целочисленное, вещественное, текст, строковое или элемент - задаётся при создании переменной.
Как протестировать ветки?
Используйте Запустить на панели инструментов редактора и пройдите каждый путь. Плеер в редакторе и HTML5-экспорт ведут себя одинаково.
