Документация Nyxtale

Платформа NyxtaleПроверка истории

Достижимость и тупики

Недостижимые узлы, тупики, ловушки-циклы: что это значит в тексте истории.

Структурные проверки читают историю как граф: узлы и переходы. Каждая находка указывает на конкретный узел.

Тупик — NSX_DEAD_END

Узел, из которого нет ни следующего шага, ни выбора, ни @end: читатель дочитывает реплику, дальше ничего не происходит.

@label cellar
narrator: Дверь погреба захлопнулась за спиной.
движок принял line

Чинится переходом или концовкой:

@label cellar
narrator: Дверь погреба захлопнулась за спиной.
@end buried
движок принял endline

Битая ссылка — NSX_BROKEN_REF

-> inside, а метки inside нет. Проверка называет узел, из которого ведёт ссылка, и имя, которого не нашла.

Недостижимый узел — NSX_UNREACHABLE

От входа в сцену до узла нет ни одной дороги: текст написан, компилируется и никогда не будет прочитан.

Две обычные причины: развилку переписали, а старый текст остался ниже; или метку добавили, а перехода на неё ещё нет. Какая из двух — видно по узлу.

Недостижимая концовка — NSX_UNREACHABLE_END

Концовка написана, но ни один маршрут в неё не приводит. Читатель её не увидит, а в счётчике «найдено концовок» она остаётся в знаменателе: история выглядит непройденной, хотя пройдена вся.

Чаще всего причина в арифметике, а не в графе — условие на входе выше, чем можно накопить:

@set trust = 0
@set trust += 1
@if trust >= 5 -> forgiven
@end alone
движок принял endbranchset×2jump

Если trust за историю поднимается максимум до трёх, forgiven мертва. Такие случаи находит бот-обход — он считает, до чего доходит состояние на каждом пути.

Ловушка-цикл — NSX_TRAP_CYCLE

Группа узлов, по которым можно ходить кругами, и ни из одного нет дороги к концовке. Читатель ходит, что-то происходит, и не сразу понимает, что выхода нет.

Сам по себе цикл законен — комната, куда возвращаются, разговор с несколькими темами. Ошибка появляется, когда из круга не ведёт ни одна дорога наружу; обычно теряется одно ребро, например опция «уйти», удалённая при правке меню.

Пустой выбор — NSX_EMPTY_CHOICE

Узел выбора без единой доступной опции: все удалены или все скрыты условием, которое на этом пути ложно.

Опция под @if пустоты не создаёт — движок покажет меню без неё.

Флаги

Код Что означает
NSX_UNKNOWN_FLAG имени нет в схеме — обычно опечатка
NSX_READ_BEFORE_WRITE есть маршрут, где флаг читают раньше, чем задают
NSX_FLAG_TYPE сравнение строки с числом, добавление элемента к int

Подробно — флаги и выражения.

Что дальше

Перечисленное видно по структуре. Ошибки времени выполнения, петли и экономику выборов находит бот-обход.