\Листы
Листы — это удобный инструмент для создания сложных сценариев с развилками и циклами. Они помогают организовать повествование, когда история становится слишком разветвленной или требует возвращения к какому-либо фрагменту истории.
Как ими пользоваться?
Все как в жизни: чтобы прочесть историю, мы должны открыть книгу. Текст может быть написан на одной странице, а может на нескольких, но в любом случае мы читаем его по порядку и (без острой необходимости) не возвращаемся к уже прочитанному.
Программа работает также.
Листы – это страницы одной главы в вашей истории, которые читаются по порядку.
Они могут использоваться:
1. Если нам нужно уменьшить объем текста на одной рабочей области
У физической книги размер страницы фиксированный, а рабочая область в Редакторе безгранична: вы можете уйти вниз и вправо насколько хотите. Но постоянно перематывать страницу неудобно, поэтому, когда развилки в истории слишком объемные, мы советуем с помощью команды \лист() переходить на новые листы.
Глава может завершиться как на определенным развилкой листе (команда \конец или \завершить в конце Листа 2 и Листа 3), так и сойтись в одну на Листе 4 и иметь общую концовку:
Важно понимать, что если нет иных команд, то программа читает все листы друг за другом, как человек.
Если в конце Листа 2 не поставить команду \конец или \лист(4), то следующим игрок увидит текст, написанный на Листе 3, что нам не нужно, ведь «игрок не выбирал после ресторана идти в лес».
А вот после Листа 3 в нашей ситуации ставить команду \лист(4) необязательно, так как переход к следующему листу происходит автоматически по завершению предыдущего.
2. Если нам требуется осуществить механику «конца игры» и возвращению к контрольной точке для возможности сделать другой выбор, ведущий к продолжению истории.
Если мы можем сказать программе перепрыгнуть через лист, как в первом примере, мы так же можем сказать ей вернуться к предыдущему, который она будет читать с самого начала. Эту функция используется так:
Лист 1
(основной сюжет)
Лист 2
(контрольная точка, к которой игрок вернется при выборе, ведущем к завершению истории)
Лист 3
(развитие событий при «Уныло сдаться» и в конце переход обратно к выбору тексту «Олег понимал…» и выбору «Что делать?»)
В данном примере повествование продолжится дальше (будет возможность перейти на следующую главу) исключительно при выборе «Превозмочь себя». В противном случае история будет бесконечно закольцована.
Если мы хотим сделать возможность поговорить с персонажем, при этом прибавляя переменные
Циклы диалогов создаются аналогично примеру выше. Но если мы хотим, чтобы каждый заданный вопрос прибавлял какой-либо стат, то мы должны обезопасить себя от поведения игрока, когда он будет задавать один и тот же вопрос несколько раз, тем самым накапливая этот стат до бесконечности.
Для этого нужно создать дополнительную проверку, выбиралась ли эта развилка ранее - и если «да», то вести игрока по пути, где этот стат больше не будет даваться:
Лист 2




Из свойств переменных мы помним, что если она не объявлялась, то при первом ее появлении (в нашем случае - в шапке команды \если) она равняется нулю. Мы пользуемся им так, что если вопрос не задавался ранее, то программа понимает, что это первый раз, когда игрок зашел в развилку и, соотвтественно, дает ему стат симпатии Олега за интерес к его личности; но еще и фиксирует, что вопрос задавался (переменнная «ответ1» теперь равна 1)
Соответственно, если игрок нажмет на первый вопрос еще раз, то стат ему уже не добавится, потому что на моменте \если он уйдет в пустую развилку, где стата нет.
А если мы хотим разнообразить игру и сделать ее более «реагирующей», то при повторном выборе мы можем сообщить игроку, что знаем, что он уже выбирал этот вариант, как сделано в примере второй развилки «-Сколько тебе платят?»
💡 Инсайт: Такой пример даже можно довести до абсурда, когда, допустим, на пятый раз вы можете буквально \завершить игру, потому что попав в этот бесконечный цикл, персонаж подумал, что сошел с ума и набросился на гг…
- Помните! Что значение переменной сохраняется на всю игру, поэтому в будущих циклах ваму нужно будет придумывать новые имена переменных, чтобы не было ситуаций, когда игрок совершает выбор в первый раз, а его ведут по развилке, будто он уже его совершал (из-за идентичного названия переменной из другого цикла); либо «очищать» (сбрасывать до 0) на листе ПЕРЕД переходом на лист цикла.
Итак,
- В одной главе таких страниц-листов может быть максимум 15
- Перепрыгивать между главами (на листы из других глав) невозможно
- Названия листов не видны никому, кроме автора. Используйте их для удобства навигации в истории
- В начале листа нужно как всегда использвать команду \локация(), \аудио() же сохраняется с предыдущего листа
- Для применения команды не забывайте нажать Enter
Примеры применения функционала Листов не ограничиваются описанным выше. Вы можете использовать их для воплощения самых разных ситуаций, требующих закольцовывания:
- цикл боя;
- ответы во время «теста»;
- допрос и имитации расследования;
- и др.
Главное — это осозновать, что по своей сути все эти примеры идентичны.
Фантазируйте!
