Как помочь игрокам ориентироваться в текстовых играх со свободным вводом
Когда игра принимает текстовые команды, пустая строка ввода может создавать впечатление, будто сработает практически всё что угодно. Игрокам нужен простор, чтобы пробовать свои формулировки, но им также требуются подсказки о том, что понимает игра и что изменилось после каждой попытки. Практическая цель состоит не в том, чтобы предугадать любое предложение. Она заключается в том, чтобы сделать доступными значимые варианты, показать несколько типичных шаблонов команд и отвечать на неясный ввод полезными указаниями к следующим шагам.
Почему открытое поле ввода может делать следующий шаг неочевидным
Свободный ввод даёт ощущение широких возможностей, однако модель игрового мира и парсер по-прежнему определяют, какие действия могут произойти. Игрок может не понимать, почему команда не сработала: глагол не распознан, объект отсутствует, формулировка неполная или описанное действие просто не имеет эффекта в игре. Эмили Шорт отмечает, что одно лишь указание на неизвестное слово не обязательно объясняет игроку, что попробовать взамен; чёткая цель и короткий наглядный список полезных глаголов помогают сориентироваться («Parser Discussion, Redux»).
Это различие принципиально, поскольку текстовый ввод — это диалог с правилами игры, даже если игра преподносит его как обычный естественный язык. Свобода игрока обретает смысл тогда, когда его действия способны повлиять на представленный мир. Попытка принимать любые мыслимые предложения без соответствующей реакции мира может сформировать ожидания, которые игра не в состоянии оправдать. В своих заметках по геймдизайну Шорт определяет задачу парсера как направление игроков к формулировкам, которые осмысленно меняют игровой мир, попутно обучая их тому, какие типы взаимодействия этот мир поддерживает («Action and Interaction»).
Предлагайте несколько видимых вариантов, не превращая их в ограничение
Оставьте поле ввода открытым, но разместите рядом небольшую подборку контекстных подсказок. Пусть это будут конкретные действия, привязанные к текущей сцене: «осмотреть записку», «спросить Мару о пароме» или «попробовать открыть ворота». Эти примеры демонстрируют ожидаемую структуру ввода и указывают на доступные на месте возможности. Их следует подавать как отправные точки, а не как единственно разрешённые команды.
Полезная подсказка может также называть цель и несколько основных глаголов: «Узнайте, почему мастерская заперта. Вы можете осматривать предметы, разговаривать с людьми или применять вещи к двери». Это говорит игроку, что способно продвинуть сцену вперёд, не навязывая конкретного решения. Шорт описывает два основных способа сделать парсерные игры доступными: поддерживать широкий диапазон формулировок с помощью помощи и подсказок либо ограничить набор доступных действий небольшим числом и чётко его обозначать. В любом случае представленные глаголы должны давать осмысленный ответ («Writing Novice-friendly Parser Games»).
Этот баланс ситуативен и поддаётся настройке. Когда правдоподобных действий много, контекстная подсказка «Что здесь можно сделать?» может предложить краткое меню. Когда цель ясна, пары примеров бывает достаточно. Если действие должно оставаться скрытым, не раскрывайте его решение в списке подсказок; вместо этого укажите типы взаимодействия, доступные в данный момент. Цель — раскрыть словарь и возможности игры, не разжёвывая каждое последствие наперёд.
Обучайте шаблонам команд на примерах
Примеры наиболее полезны, когда они иллюстрируют повторяемые шаблоны, а не перечисляют все принимаемые фразы подряд. Например, игра может показать: «осмотреть [предмет]», «поговорить с [персонажем] о [теме]» и «использовать [вещь] на [объекте]». Затем можно привести один или два конкретных примера: «осмотреть латунный ключ» или «спросить Мару о пароме». Единообразные формулировки учат игроков связывать действия и цели. Включайте формулировку только в том случае, если игра действительно её поддерживает.
Называйте важные существительные как в повествовании, так и в подсказках. Если в описании сцены фигурирует латунный ключ, у игрока должна быть причина попробовать «осмотреть ключ» или «взять ключ»; негласное требование другого, скрытого названия вынуждает действовать наугад. Если полезные действия различаются в зависимости от объекта, может помочь краткий намёк на взаимодействие: «Задвижка достаточно расшатана, чтобы её поднять» или «На записке есть текст с обеих сторон». Шорт рекомендует выделять доступные для взаимодействия существительные и давать подсказки, помогая игрокам понять, с чем можно взаимодействовать («Writing Novice-friendly Parser Games»).
Избегайте перегрузки каждой сцены полным каталогом команд. Слишком большое количество подсказок отвлекает от сюжета, а упоминание специфического глагола может случайно превратиться в спойлер к головоломке. Отдавайте предпочтение небольшому набору для конкретной сцены, добавив команду помощи или раскрывающийся справочник для более подробных указаний. В руководстве IFComp по интерактивной литературе на основе парсера отмечается, что в некоторых играх используется опциональное обучающее руководство, позволяющее игрокам обращаться за поддержкой по ходу сюжета («About IF»).
Делайте неоднозначный ввод поводом для краткого уточнения, а не тупиком
Когда игра понимает действие, но не может определить, какой именно объект имеет в виду игрок, задайте точечный вопрос. Если игрок вводит «открыть книгу», а в поле зрения находятся две книги, ответьте: «Какую книгу: красную книгу на столе или синюю книгу на полке?» Полезное уточнение называет варианты в терминах, понятных игроку. Если отсутствует обязательная деталь и разумного значения по умолчанию нет, запросите эту деталь: «Что именно вы хотите открыть?»
Техническая документация по парсерам приводит конкретный пример такого взаимодействия: TADS описывает запрос к игроку с предложением выбрать между книгами по их видимому цвету, а также отдельный запрос объекта, когда в команде вроде «открыть» отсутствует цель (TADS Parser: The Parsing Sequence). Более широкий урок геймдизайна заключается в том, чтобы по возможности сохранять исходное намерение. Уточняйте только недостающий фрагмент вместо того, чтобы сбрасывать команду и заставлять игрока начинать заново.
Если игра может без риска выбрать вариант по умолчанию, сообщите игроку о сделанном выборе: «Вы открываете садовую калитку латунным ключом». Если два варианта могут привести к разным последствиям, лучше переспросить. Эмили Шорт рекомендует запрашивать уточнение, когда команда неполна и очевидный выбор по умолчанию сделать нельзя, а также чётко обозначать различия между неоднозначными объектами («Action and Interaction»).
Отвечайте на неожиданные вопросы с уважением и направляйте игрока
Игроки неизбежно будут пробовать шутливые, любопытные или не относящиеся к делу команды. Относитесь к подобным экспериментам как к нормальному участию в игре. Избегайте ответов с упрёком, насмешкой или намёком на то, что игрок уже обязан знать правила. Вместо этого составьте ответ так, чтобы по возможности подтвердить понятое намерение, а затем вернуть внимание к происходящему в сцене.
Например, если игрок спрашивает у часов в мастерской, который час, ответ может быть таким: «Часы продолжают тикать, но не отвечают. Записка рядом с ними сплошь покрыта цифрами». Это даёт небольшую реакцию внутри мира игры и одновременно привлекает внимание к заметной зацепке. Если игра не может интерпретировать ввод, прямо скажите об этом и предложите поддерживаемое действие поблизости: «Я не понимаю этого действия здесь. Вы можете осмотреть записку или спросить Мару о мастерской». Не делайте вид, будто игра поняла предложение, которое на самом деле не заложено в её модель: ложное распознавание затрудняет понимание дальнейших событий.
Разделяйте проблемы понимания ввода и исходы внутри игрового мира. Ответ «Я не знаю такой команды» указывает на проблему с формулировкой или словарём. «Ворота заперты» означает, что действие понято, но состояние мира не позволяет его выполнить. «Ворота не двигаются» указывает на предпринятое действие, не давшее эффекта. Когда эти сообщения имеют разные значения, игрок может решить: переформулировать фразу, собрать информацию или попробовать что-то другое. Разбор обратной связи парсера у Шорт наглядно показывает, как общая фраза отказа оставляет игроков в неведении: не поддерживается ли сам глагол или же действие просто невозможно в данном мире («Parser Discussion, Redux»).
Показывайте, что действие зафиксировано, и объясняйте, что изменилось
После понятой команды опишите результат так, чтобы это помогло игроку действовать дальше. Если игрок открывает шкаф, сообщите, что теперь стало видно. Если заданный вопрос меняет реакцию персонажа, покажите конкретный сигнал или расскажите игроку, какую новую информацию он узнал. Если действие не даёт немедленного эффекта, объясните соответствующую причину, если персонаж может разумно о ней знать.
Это вторая половина ориентации: игрокам нужны доказательства того, что их действие дошло до игры, а не просто приглашение к следующему шагу. Шорт утверждает, что вывод должен раскрывать информацию, необходимую для взаимодействия с миром, а успешные изменения должны быть очевидными — включая косвенные изменения, если для них есть полезный сигнал («Action and Interaction»). Держите обратную связь соразмерной: опишите изменившееся состояние замка, вновь замеченную деталь или видимую реакцию персонажа вместо того, чтобы добавлять пространные посторонние пояснения после каждой команды.
Практическая последовательность для проектирования каждого ответа
Для каждой сцены составьте список значимых действий, а затем выстраивайте подсказки и ответы вокруг них. Это превратит общий вопрос «Сколько всего могут напечатать игроки?» в выполнимую задачу геймдизайна: «Видит ли игрок, что поддерживает сцена, может ли он попробовать неожиданную идею, понять ответ и выбрать следующий шаг?»
Определите доступные для взаимодействия объекты, персонажей и ближайшую цель сцены. Используйте только те детали, которые действительно смоделированы или могут быть осмысленно описаны.
Выберите несколько репрезентативных действий и сформулируйте их в виде примеров. Оставьте возможность открытого ввода и убедитесь, что любые предложенные глаголы работают именно так, как заявлено.
Классифицируйте вероятные неоднозначные варианты ввода: неизвестное действие, неизвестный объект, недостающая деталь, несколько возможных целей или понятое действие, которое не может быть успешным в текущем состоянии.
Напишите отдельный ответ для каждого случая. Уточнение должно предлагать узнаваемые варианты; невозможное действие должно объяснять соответствующее препятствие; неподдерживаемое действие должно подсказывать доступный путь рядом.
Убедитесь, что результат успешного действия нагляден, а ранее раскрытую информацию можно просмотреть снова, когда она понадобится игроку. Шорт рекомендует предусматривать способы восстановления уже узнанной информации, что особенно полезно, когда сюжетные детали или диалоги влияют на последующий выбор («Action and Interaction»).
Протестируйте сцену с буквальными, неполными, перефразированными и шутливыми командами. Скорректируйте любой ответ, после которого тестировщик не может понять, не поняла ли игра команду, отклонила её или приняла.
Полезным показателем является не количество предложений, которые принимает игра. Главное — понимают ли игроки связь между своими словами, поддерживаемыми игрой действиями и состоянием мира, которое они видят после этого. Несколько видимых вариантов, примеры, обучающие шаблонам, и понятная, лишённая осуждения обратная связь сохраняют простор для экспериментов, давая игрокам достаточно информации для движения вперёд.
