\Листы

Листы — это удобный инструмент для создания сложных сценариев с развилками и циклами. Они помогают организовать повествование, когда история становится слишком разветвленной или требует возвращения к какому-либо фрагменту истории.

Как ими пользоваться?

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

Программа работает также.

Листы – это страницы одной главы в вашей истории, которые читаются по порядку.
\Листы, image #1

Они могут использоваться:

1. Если нам нужно уменьшить объем текста на одной рабочей области

У физической книги размер страницы фиксированный, а рабочая область в Редакторе безгранична: вы можете уйти вниз и вправо насколько хотите. Но постоянно перематывать страницу неудобно, поэтому, когда развилки в истории слишком объемные, мы советуем с помощью команды \лист() переходить на новые листы.

\Листы, image #2

Глава может завершиться как на определенным развилкой листе (команда \конец или \завершить в конце Листа 2 и Листа 3), так и сойтись в одну на Листе 4 и иметь общую концовку:

Важно понимать, что если нет иных команд, то программа читает все листы друг за другом, как человек.
Если в конце Листа 2 не поставить команду \конец или \лист(4), то следующим игрок увидит текст, написанный на Листе 3, что нам не нужно, ведь «игрок не выбирал после ресторана идти в лес».
А вот после Листа 3 в нашей ситуации ставить команду \лист(4) необязательно, так как переход к следующему листу происходит автоматически по завершению предыдущего.

\Листы, image #3
2. Если нам требуется осуществить механику «конца игры» и возвращению к контрольной точке для возможности сделать другой выбор, ведущий к продолжению истории.

Если мы можем сказать программе перепрыгнуть через лист, как в первом примере, мы так же можем сказать ей вернуться к предыдущему, который она будет читать с самого начала. Эту функция используется так:

Лист 1
(основной сюжет)

\Листы, image #4

Лист 2
(контрольная точка, к которой игрок вернется при выборе, ведущем к завершению истории)

\Листы, image #5

Лист 3
(развитие событий при «Уныло сдаться» и в конце переход обратно к выбору тексту «Олег понимал…» и выбору «Что делать?»)

\Листы, image #6

В данном примере повествование продолжится дальше (будет возможность перейти на следующую главу) исключительно при выборе «Превозмочь себя». В противном случае история будет бесконечно закольцована.

\Листы, image #7
Если мы хотим сделать возможность поговорить с персонажем, при этом прибавляя переменные

Циклы диалогов создаются аналогично примеру выше. Но если мы хотим, чтобы каждый заданный вопрос прибавлял какой-либо стат, то мы должны обезопасить себя от поведения игрока, когда он будет задавать один и тот же вопрос несколько раз, тем самым накапливая этот стат до бесконечности.

Для этого нужно создать дополнительную проверку, выбиралась ли эта развилка ранее - и если «да», то вести игрока по пути, где этот стат больше не будет даваться:

Лист 2

Таблица полностью
Первая развилка
Вторая развилка
Завершение цикла (третья развилка)
1 of 4
Таблица полностью

Из свойств переменных мы помним, что если она не объявлялась, то при первом ее появлении (в нашем случае - в шапке команды \если) она равняется нулю. Мы пользуемся им так, что если вопрос не задавался ранее, то программа понимает, что это первый раз, когда игрок зашел в развилку и, соотвтественно, дает ему стат симпатии Олега за интерес к его личности; но еще и фиксирует, что вопрос задавался (переменнная «ответ1» теперь равна 1)
Соответственно, если игрок нажмет на первый вопрос еще раз, то стат ему уже не добавится, потому что на моменте \если он уйдет в пустую развилку, где стата нет.

А если мы хотим разнообразить игру и сделать ее более «реагирующей», то при повторном выборе мы можем сообщить игроку, что знаем, что он уже выбирал этот вариант, как сделано в примере второй развилки «-Сколько тебе платят?»

💡 Инсайт: Такой пример даже можно довести до абсурда, когда, допустим, на пятый раз вы можете буквально \завершить игру, потому что попав в этот бесконечный цикл, персонаж подумал, что сошел с ума и набросился на гг…
  • Помните! Что значение переменной сохраняется на всю игру, поэтому в будущих циклах ваму нужно будет придумывать новые имена переменных, чтобы не было ситуаций, когда игрок совершает выбор в первый раз, а его ведут по развилке, будто он уже его совершал (из-за идентичного названия переменной из другого цикла); либо «очищать» (сбрасывать до 0) на листе ПЕРЕД переходом на лист цикла.
\Листы, image #12

Итак,

  • В одной главе таких страниц-листов может быть максимум 15
  • Перепрыгивать между главами (на листы из других глав) невозможно
  • Названия листов не видны никому, кроме автора. Используйте их для удобства навигации в истории
  • В начале листа нужно как всегда использвать команду \локация(), \аудио() же сохраняется с предыдущего листа
  • Для применения команды не забывайте нажать Enter

Примеры применения функционала Листов не ограничиваются описанным выше. Вы можете использовать их для воплощения самых разных ситуаций, требующих закольцовывания:

  • цикл боя;
  • ответы во время «теста»;
  • допрос и имитации расследования;
  • и др.
Главное — это осозновать, что по своей сути все эти примеры идентичны.
\Листы, image #13

Фантазируйте!

998 views·3 shares