Платформа NyxtaleНачало
Персонаж: имя и портрет
Как персонаж появляется в истории: реплика с именем, эмоция, спрайт и его место на экране.
Отдельной сущности «персонаж» в формате нет. Персонаж — это две независимые вещи, которые вы связываете сами: имя в реплике и портрет в директиве.
Ничего не нужно объявлять заранее: имя работает с первой же реплики, портрет — с первого @sprite.
Имя
Слово до двоеточия. Читатель видит его плашкой над репликой.
Марк: Кто здесь?
Имя — отображаемый текст, а не идентификатор: любой алфавит, пробелы, любые буквы. Смотритель,
Голос из-за двери, Марк (не он) — всё это допустимые имена.
narrator зарезервирован. Реплика от него выходит без плашки — это повествование:
narrator: Дверь была приоткрыта.
Марк: Кто здесь?
Имя можно подставить флагом, если читатель называет героя сам:
@input hero "Как вас зовут?"
{hero}: Я вернулся.
Подробно — подстановка {flag}.
Эмоция
В скобках после имени. Доезжает до читателя отдельным полем, а не частью текста:
mark (fear): Здесь кто-то был.
⚠️ Идентификатор эмоции — только латиницей. Марк (страх): сейчас не разбирается, хотя само имя
кириллицей работает.
Портрет
Картинка загружается в ресурсы истории и получает идентификатор. В тексте вы пишете идентификатор, а не имя файла:
@sprite mark_calm left @alt "Марк, мокрая куртка, смотрит в сторону"
Марк: Я в порядке.
@alt — описание для скринридера. Для спрайта описывайте состояние, а не только кто это: смена
портрета — это событие, и в линеаризованном виде оно существует только через подпись
(alt-текст).
Места на экране
Три слота: left, center, right. Без указания слота портрет встаёт в center.
@sprite mark_calm left @alt "Марк слева"
@sprite anna_wary right @alt "Анна справа, руки в карманах"
Марк: Ты первая.
Анна: Я подожду.
Повторный @sprite в тот же слот заменяет того, кто там стоял, с перекрёстным растворением.
@sprite_hide left убирает портрет из слота.
Имя и портрет не связаны
Движок не знает, что mark_calm — это тот же Марк, что говорит в реплике. Он рисует портрет там,
где вы поставили @sprite, и плашку с тем именем, которое стоит в строке.
Практически это значит:
- смену выражения ставите вы. Марк испугался — поставьте
@sprite mark_scared leftперед его репликой, иначе он останется спокойным; - портрет не исчезает сам. Персонаж ушёл — уберите его
@sprite_hide, иначе он останется стоять всю сцену; - при переходе в другую сцену кадр сбрасывается. Портреты нужно ставить заново — как и фон (переходы между сценами).
Несколько состояний одного персонажа
Каждое состояние — отдельная картинка со своим идентификатором. Договоритесь об именовании сразу, иначе через две главы вы не вспомните, что чем было:
@sprite mark_calm left @alt "Марк, спокоен"
Марк: Всё нормально.
@sprite mark_scared left @alt "Марк, отшатнулся, смотрит за спину рассказчику"
Марк: Не оборачивайся.
Что дальше
- Синтаксис — грамматика реплик целиком.
@spriteв справочнике — аргументы и границы.- Ассеты и их права — что нужно, чтобы картинку пропустили на публикации.