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

Nightfall StoriesМеханики

Шкалы состояния

Рассудок, страх и прочие метры: показать, изменить, связать с атмосферой.

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

Основа

Шкала объявляется в схеме флагов как int с min и max — этого достаточно, чтобы движок держал границы:

sanity  int  0…100  по умолчанию 100

Дальше она меняется как любой флаг, а @meter_show выводит её на экран:

@set sanity = 0
@meter_show sanity
@set sanity -= 15
narrator: Отражение моргнуло на полсекунды позже.
движок принял lineset×2effect

@meter_hide убирает. Показывать шкалу постоянно — не обязанность: часто сильнее, когда индикатор появляется только в тот момент, когда стало плохо.

Отклик атмосферы

Самое ценное — не полоска, а то, что при низком значении меняется сама подача. @sanity_distort искажает восприятие; тем же способом можно связать шкалу со звуком, виньеткой, скоростью текста.

Читатель видит своё состояние, не глядя ни на какой индикатор, — и это на порядок сильнее полоски. Хорошая практика: шкала, у которой есть отклик, вообще может не показываться числом.

Но эффект не может быть единственным способом это сказать. @sanity_distort — фоточувствительный: у читателя, включившего мягкие эффекты, он не сыграет вообще, и тот увидит ровный обычный текст. Если падение рассудка показано только искажением, для него ничего не произошло.

Поэтому рядом с эффектом должна стоять строка, которая говорит то же самое словами:

@set sanity = 0
@set sanity -= 20
@sanity_distort 0.6
narrator: Руки не слушались, и буквы в записке расползались, как будто их писали не для него.
движок принял lineeffectset×2

Эффект здесь усиливает то, что уже сказано в тексте. Уберите его — сцена останется понятной; уберите строку — половина читателей не заметит ничего. Подробнее: интенсивность и фоточувствительность.

Как проектировать шкалу

Шкала должна входить хотя бы в одно условие. Число, которое растёт всю историю и нигде не сравнивается, механики не создаёт.

Порог должен быть и достижим, и избегаем. sanity < 20, не берущийся ни на одном маршруте, даёт мёртвую ветку (бот-обход это найдёт); берущийся на всех — обычную сцену.

Считайте потолок накопления. Классическая ошибка: порог >= 5 при том, что за всю главу флаг поднимается максимум до трёх. Граф выглядит связным, а концовка недостижима арифметически.

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

Сколько шкал

Одна, редко две. Три читатель не удерживает и начинает оптимизировать ту, что показана, игнорируя остальные.

Если кажется, что нужны три, две из них обычно выражаются флагами без индикатора: bool has_seen_it часто работает сильнее ещё одной полоски.

Связка с другими механиками

Шкала даёт порог для проверки навыка — тогда бросок становится следствием прошлых решений.

Она же может входить в отношения: доверие персонажа зависит от того, в каком состоянии герой был при разговоре.

Директивы этой темы

Собрано из реестра движка: каждая директива этих категорий ведёт сюда из справочника.

  • @meter_hide Скрыть шкалу состояния
  • @meter_show Показать шкалу состояния в HUD
  • @sanity_distort Искажение восприятия при низком рассудке