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

Nightfall StoriesРемесло

Жест читателя

Удержание, отдача и задержка вариантов: усилие руки под стать усилию в истории.

Выбор — это то, что читатель решает. Жест — это то, что он делает пальцем. Обычно они совпадают: человек касается варианта, история идёт дальше. Директивы этой страницы разводят их: они меняют не смысл выбора, а ощущение от него.

Мерило у них одно — усилие руки должно совпадать с усилием в истории. Тяжёлое решение, которое отдаётся лёгким касанием, читается легче, чем задумано; лёгкое, ради которого пришлось удерживать палец пять секунд, — как придирка интерфейса.

Удержание

@hold_to_act останавливает сцену, пока читатель не удержит нажатие.

narrator: Рычаг холодный. Пути назад после него не будет.
@hold_to_act duration_ms 2000 label "Держать"
narrator: Механизм пошёл.
движок принял line×2hold_to_act

duration_ms — от 200 до 10000. Два ориентира: до 800 мс это «нажатие с характером», от 2000 — физическое усилие, которое читатель ощущает как сопротивление.

Рядом всегда стоит обычное касание. Часть читателей физически не может удерживать нажатие, и альтернатива включена по умолчанию. Выключить её можно, но валидатор отметит это как риск — и правильно сделает: приём, из-за которого человек не может дочитать историю, стоит дороже, чем даёт (интенсивность и доступность).

Используйте на решение, которое нельзя отменить: спустить курок, открыть дверь, произнести имя.

Отдача

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

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

Как появляются варианты

@choices_fade <секунд> заставляет опции проступить с задержкой: реплика уже прочитана, а выбирать ещё нечего.

narrator: Он ждал ответа. И ждал.
@choices_fade 2.5
* choice "Сказать правду"
    -> truth
* choice "Промолчать"
    -> silence
движок принял choiceeffectlinejump×2

Эта задержка — единственный способ заставить читателя побыть в моменте, не отнимая у него выбор. Но она же — самый заметный способ его разозлить: секунда читается как дыхание, пять — как зависший экран. Выше трёх не поднимайтесь без причины, которую видно на экране.

@choice_shake <0..1> — дрожащая кнопка: вариант, который сам боится, что его выберут. Работает, когда дрожит один из вариантов; дрожащие все — это шум.

Практика

Жест — про необратимость. Удержание на выборе, который можно переиграть через сцену, тратит приём впустую.

Никогда — на выход и на паузу. Всё, чем читатель прекращает происходящее, должно нажиматься сразу.

Проверьте пальцем, а не мышью. Задержка, которая в предпросмотре читается как пауза, на телефоне читается как «не нажимается» — это разные вещи, и вторую вам напишут в отзыве.

Ничего из этого не заменяет текст. Если необратимость решения понятна только по тому, что кнопку надо держать, — она не написана.

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

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

  • @choice_shake Дрожащая кнопка выбора
  • @choices_fade Опции проступают с задержкой
  • @haptic Тактильная отдача
  • @hold_to_act Удержание для действия — блокирующий жест (§17: с доступной альтернативой)