Первая нода
Чтобы начать писать свою историю, откройте проект в веб-редакторе.
Настройка стартовой ноды
В вашем проекте уже есть глава Start — это точка входа. Мы используем её для объявления переменных и перехода к первой ноде истории.
Создайте новую главу, нажав кнопку + в боковой панели, и назовите её escape.
Введите \ в редакторе, чтобы быстро вставить команды: <<jump>>, <<declare>> и другие.
title: escape
checkpoint_name: "Escape"
---
===
Это наша стартовая нода. Мы добавили параметр checkpoint_name, чтобы прогресс игрока сохранялся в этой точке.
Связь с нодой Start
Вернитесь к главе Start. Здесь мы объявим переменные и создадим связь с нодой escape:
title: Start
is_entry_point: true
---
// Game vars
// Jump to your start node
<<jump escape>>
===
Хорошая практика — использовать ноду Start для объявления переменных. Это позволяет держать ноды истории чистыми и сосредоточенными на повествовании.
Пишем историю
Перейдите к главе escape и напишите первый диалог. В этой ноде агент сообщает, что его раскрыли, и игроку нужно будет сделать выбор, чтобы помочь ему сбежать.
title: escape
checkpoint_name: "Escape"
---
Срочно! Меня раскрыли. Мне нужно срочно выбираться отсюда.
-> Что случилось?
-> Как я могу помочь?
Нет времени объяснять, просто помоги мне выбраться!
-> Где ты сейчас?
Я в лаборатории №15, но они уже нашли меня. Мне нужен план отхода.
===
Как видите, мы даём игроку выбор ответных реплик, но эти реплики не влияют на дальнейший ход сюжета. Это позволяет игроку почувствовать себя частью истории.
Однако долго так делать не получится — игрок заскучает. Давайте добавим настоящий выбор, который повлияет на сюжет.
Разбивайте сообщения пустой строкой, чтобы сделать текст более читаемым. Нажмите Enter дважды в редакторе, чтобы начать новое сообщение.
...
Я в лаборатории №15, но они уже нашли меня. Мне нужен план отхода.
-> Используй вентиляцию
<<jump escape_ventilation>>
-> За окном стоят строительные леса, можешь спуститься по ним
<<jump escape_scaffolding>>
===
Первый выбор
Мы добавили два варианта выбора, каждый из которых перенаправляет игрока на другую ноду. Создайте две новые главы, нажав + в боковой панели:
Глава: escape_ventilation
title: escape_ventilation
---
===
Глава: escape_scaffolding
title: escape_scaffolding
---
===
Давайте запомним выбор игрока на будущее. Вернитесь к главе Start и объявите переменную:
title: Start
is_entry_point: true
---
// Game vars
<<declare $escape_choice = ''>>
// Jump to your start node
<<jump escape>>
===
Теперь установим значение переменной в каждой главе выбора:
escape_ventilation:
title: escape_ventilation
---
<<set $escape_choice = 'ventilation'>>
===
escape_scaffolding:
title: escape_scaffolding
---
<<set $escape_choice = 'scaffolding'>>
===
История может становиться сложнее. Например, предположим, что агент получил ранение на строительных лесах, и мы хотим уменьшить его здоровье. Добавим переменную $health в главу Start:
title: Start
is_entry_point: true
---
// Game vars
<<declare $escape_choice = ''>>
<<declare $health = 100>>
<<jump escape>>
===
И в escape_scaffolding:
title: escape_scaffolding
---
<<set $escape_choice = 'scaffolding'>>
Хорошо, я спускаюсь по строительным лесам.
<<wait 5>>
<<set $health = $health - 10>>
Меня подстрелили! Чёрт, это было близко. Надо быстрее уходить отсюда.
-> Возвращайся в лабораторию, попробуем через вентиляцию
<<jump escape_ventilation>>
-> Продолжай спускаться
...
===
Мы добавили команду <<set $health = $health - 10>>, которая уменьшает значение переменной health на 10. Команда <<wait 5>> добавляет задержку перед следующим сообщением, имитируя время, необходимое для спуска.
Используйте отладчик (▶) для тестирования вашей истории. Вы можете изменять переменные на лету в панели «Переменные», чтобы проверять разные ветки без необходимости проходить всю историю заново.