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

Платформа NyxtaleСтруктура истории

Переходы между сценами

scene_transition, известные сцены и почему граф проверяется целиком.

Внутри сцены переход -> label идёт к метке. Если такого имени в сцене нет, движок ищет сцену с этим именем — и переход становится переходом между сценами.

narrator: За поворотом коридор кончался дверью.
-> basement
движок принял linejump

Синтаксис перехода один и тот же в обоих случаях, поэтому при разбиении сцены на файлы переходы переписывать не нужно.

Что происходит на границе

Переезжает Не переезжает
флаги фон
зерно случайности (детерминизм) петля звука
прогресс главы активные эффекты

Новая сцена начинается с чистого кадра, поэтому сцена читается одинаково независимо от того, откуда в неё пришли. Ставьте обстановку первыми строками:

@scene basement
@bg basement_dark
@ambient drip loop
narrator: Внизу пахло мокрым камнем.
движок принял lineeffect×2

Известные сцены

Компилятор видит один файл, поэтому -> basement при компиляции отдельной сцены он не проверяет. Проверяет сборка истории: ей известен полный список имён, и ссылка в никуда даёт NSX_BROKEN_REF — как и битая метка внутри сцены.

Граф проверяется целиком

Достижимость считается по всей истории, а не по каждому файлу отдельно. Сцена, в которую не ведёт ни один переход из всей истории, недостижима — даже если внутри себя она безупречна.

Иначе проверка была бы бесполезной именно там, где нужнее всего. Разбиение на файлы происходит, когда история выросла; а именно в выросшей истории и заводятся забытые сцены, оставшиеся от переписанной третьей главы.

По той же причине концовки считаются на всю историю. «Найдено 12 из 17» — это про историю, а не про файл.

Как делить

Делите по месту и времени, а не по объёму. Сцена — это эпизод: одна локация, один разговор, один отрезок ночи. Файл, разрезанный посередине сцены ради размера, читается хуже целого.

Точка возврата — хороший шов. Если несколько веток сходятся в одно место, это место просится отдельной сценой: тогда её обстановка ставится один раз, а не в конце каждой ветки.

Не делайте сцену ради одного узла. Переход между сценами — это граница, на которой сбрасывается кадр. Сцена из трёх строк заставляет читателя пережить эту границу ради ничего.

Что дальше