Платформа NyxtaleЯзык Nyx
Подстановка {flag}
Шаблоны в репликах и в тексте опций; динамическое переименование персонажа.
Фигурные скобки в тексте подставляют значение флага:
@set sanity = 0
@set hero = 0
narrator: Рассудок: {sanity}.
{hero}: Я вернулся.
* choice "Сказать, что меня зовут {hero}"
-> named
Работает в трёх местах: текст реплики, имя говорящего и текст опции выбора. В аргументах директив, именах меток и условиях подстановки нет — там имя флага пишется прямо.
Как выглядит подставленное значение
| Тип флага | Что попадёт в текст |
|---|---|
int |
целое число: 100, -3 |
bool |
true или false |
str |
сама строка |
set |
элементы через запятую с пробелом: key, letter, photo |
bool подставляется английскими словами true/false, поэтому для читателя его обычно показывают
ветвлением:
@set has_key = 0
@if has_key
narrator: Ключ лежал в кармане и был тёплым.
@unless has_key
narrator: Карман был пуст.
Один проход
Текст просматривается слева направо один раз. Подставленное значение второй раз не обрабатывается:
если во флаге hero лежит строка {title}, читатель увидит {title}.
Так превью и приложение выдают одинаковый текст до символа — повторный проход пришлось бы ограничивать глубиной, и глубина стала бы ещё одним местом, где они могут разойтись.
Когда скобка остаётся скобкой
| Написано | Читатель увидит |
|---|---|
Он написал: { |
Он написал: { — скобка не закрыта |
{имя} |
{имя} — внутри должен быть идентификатор: латиница, цифры, подчёркивание, не с цифры |
{unknown} |
{unknown} — такого флага нет |
{{ и }} |
{ и } |
Неизвестный флаг печатается как есть намеренно: это видно в превью с первого прогона, а пустая строка на его месте выглядела бы как задуманная пауза.
narrator: В журнале стояло {{FILE REDACTED}} и больше ничего.
Ввод читателя
Флаг типа str обычно приходит от самого читателя:
@input hero "Как вас зовут?"
narrator: — Значит, {hero}, — повторил он, будто пробовал имя на вес.
@input останавливает сцену, ждёт ввода и кладёт его во флаг. С number введённое читается как
целое: из 13 лет получится 13, из текста без цифр — 0. Любой ввод разбирается, сцену он уронить
не может.
Дальше имя живёт как обычный флаг: подставляется в реплики, в имя говорящего и доходит до концовки.
⚠️ Введённый текст — это текст читателя, а не ваш. Он попадёт на экран как есть, включая то, что читатель напишет назло. Если история читается вслух или её скриншотят — стоит подумать, где имя уместно, а где лучше обойтись обращением без имени.
Что дальше
Подстановка показывает состояние. Как это состояние меняется случайно и при этом воспроизводимо — на странице случайности и детерминизма.