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