Как сделать чат с ИИ-NPC необязательным, не скрывая ключевую сюжетную информацию
Для инди-дизайнеров нарративных игр, внедряющих необязательные текстовые диалоги в свободной форме, действует простое правило: каждый факт, необходимый игроку для понимания или прохождения основной сюжетной линии, должен быть зафиксирован в каноническом игровом контенте за пределами чата. Чат с NPC может добавлять контекст, индивидуальность и атмосферу, но он не должен быть единственным источником важной зацепки или события. Проверьте это правило с помощью двух прохождений: одного — без открытия чата, и второго — с подробным его изучением. Оба сценария должны приводить к одинаковому пониманию основного сюжета и намеченному результату.
Определите, что игрок обязан знать
Начните со следующего обязательного действия игрока и двигайтесь в обратном направлении. Составьте список фактов, необходимых для принятия решения или выполнения действия: что происходит, какова цель, а также любые условия или зацепки, требуемые для продвижения. Разместите эти факты на основном пути: в кат-сцене, интерактивном объекте, записи в журнале, заметном изменении игрового мира или напоминании о цели. Реплика диалога может подкрепить их, но не должна быть их единственным носителем.
Затем классифицируйте остальную информацию по тому, на что она влияет. Если удаление факта делает основную цель непонятной, невыполнимой или зависящей от угадывания того, что скажет ИИ, это ключевая информация. Если удаление оставляет цель ясной, но делает персонажа, место или событие менее объемными, это необязательная глубина. Если она лишь добавляет шутку, интонацию или мелкую деталь, это колорит.
Это различие касается функции, а не формата. Личная история персонажа может стать ключевой, если основной сюжет позже предполагает, что игрок о ней знает. И наоборот, техническая деталь может оставаться необязательной, если от нее не зависит развитие сюжета. Пересматривайте классификацию каждый раз, когда более поздняя сцена ссылается на информацию, представленную в необязательном разговоре.
Таблица покрытия информации для одного сюжетного момента
Рассмотрим наглядную задачу: доставить запечатанную карту в обсерваторию до закрытия ворот. В таблице показано, как разделить уровни информации; сценарий является примером, а не отчетом о реальной игре.
Информация: Пункт назначения — обсерватория — Нужно игроку для продвижения?: Да — Покрытие на основном пути: В тексте цели названа обсерватория; маркер на карте или понятный маршрут помогают ориентироваться — Вклад необязательного ИИ-чата: Проводник может описать ее характерную крышу
Информация: Ворота закрываются на закате — Нужно игроку для продвижения?: Да, если время влияет на прогресс — Покрытие на основном пути: Сцена или цель указывают на ограничение по времени и демонстрируют соответствующее изменение состояния мира — Вклад необязательного ИИ-чата: Проводник может объяснить, почему ворота закрываются
Информация: Запечатанная карта должна быть доставлена в целости — Нужно игроку для продвижения?: Да, если обращение с ней влияет на выполнение задачи — Покрытие на основном пути: Инструкция основного пути указывает условие доставки; игровой процесс сообщает о любых ограничениях — Вклад необязательного ИИ-чата: Проводник может рассказать историю о том, кто ее запечатал
Информация: Проводник когда-то работал в обсерватории — Нужно игроку для продвижения?: Нет, если от этого не зависит дальнейший сюжет — Покрытие на основном пути: Не требуется для выполнения цели — Вклад необязательного ИИ-чата: Уточняющий вопрос может раскрыть прошлое проводника
Информация: Проводник не любит колокольню — Нужно игроку для продвижения?: Нет — Покрытие на основном пути: Не требуется — Вклад необязательного ИИ-чата: Короткая реплика может выразить это предпочтение
Используйте таблицу как информационный контракт: факты слева являются авторскими требованиями; колонка чата может дополнять их, но не должна негласно становиться их единственным источником. Если более поздний эпизод опирается на прошлое проводника, перенесите необходимую часть этой истории в покрытие основного пути. Остальное оставьте необязательным.
Привязывайте диалоги ИИ к авторитетному состоянию игры
Относитесь к модели как к инструменту ведения допустимого диалога, а не как к авторитетной инстанции, определяющей, что произошло в сюжете. Предоставьте ей строго ограниченное и актуальное представление о каноническом состоянии: текущую цель, установленные факты, доступные персонажу знания и любые разрешенные темы для разговора. Именно игровые системы должны решать, произошло ли событие, была ли найдена улика или изменилась ли цель. ИИ может сформулировать ответ с учетом этого состояния; он не должен придумывать обязательную зацепку, открывать скрытый факт или объявлять о каноническом событии, которое игра не зафиксировала.
Например, если игрок еще не выяснил, что ворота закрываются на закате, NPC может ответить на вопрос подсказкой без спойлеров или направить игрока к вывешенному объявлению. Сама цель или игровой мир по-прежнему обязаны сообщить о сроке. Если игрок задает неожиданный вопрос, безопасный ответ может признать границы знаний персонажа или перенаправить к известным фактам. Избегайте ситуаций, когда система намекает на существование обязательной улики, которой на самом деле нет, или когда NPC помнит событие, отсутствующее в состоянии игры.
Такая архитектура также предотвращает непредсказуемое изменение правил основного пути вследствие необязательных бесед. Если диалогу разрешено менять состояние, четко определите принимаемые игрой изменения состояния и проверяйте их за пределами сгенерированного текста. Красиво сформулированное предложение само по себе не является основанием для переключения игрового флага.
Позвольте чату углублять сцену, не блокируя прохождение
Полезный необязательный разговор предлагает то, что игрок может изучить по собственному желанию: взгляд персонажа на события, связь с предыдущей сценой, местный обычай или деталь, меняющую эмоциональное восприятие локации. Он не должен раз за разом повторять цель так, будто объяснить ее способен только чат. Основной путь также не должен требовать от игрока подбора точной формулировки ради получения зацепки.
Планируйте выход из диалога так же тщательно, как и ветвление. Игроки должны иметь возможность перестать задавать вопросы и вернуться к основной задаче, не теряя ключевых инструкций. Если ответ содержит необязательную информацию, которая впоследствии имеет значение только для дополнительного контента, обозначьте эту связь через окружающий дизайн, а не делайте ее скрытым условием для финала или выполнения цели.
Сценарист студии Tea-Powered Games Флоренсия Минуцци от первого лица делится опытом принятия решений о доступности для игры *Dialogue*. В материале рассматриваются воспроизводимые сцены и дополнительная информация по выбору, существующие параллельно с основным сюжетом, который не блокирует прохождение из-за пропуска этих деталей. Это полезный пример разделения необязательного материала и сюжетного прогресса; данный опыт отражает практику одной команды в конкретной игре и не является доказательством того, что ИИ-диалоги автоматически дают аналогичный результат. [Accessibility in Dialogue: A Writer’s Story](https://www.gamedeveloper.com/design/accessibility-in-dialogue-a-writer-s-story).
Тестируйте оба стиля игры
Протестируйте один и тот же сюжетный отрезок в двух осознанных проходах. В первом — ни разу не открывайте чат с NPC. Следуйте только по основному пути и используйте стандартный интерфейс. Во втором — тщательно исследуйте диалог, включая логичные вопросы, касающиеся цели. Зафиксируйте, что может знать каждый игрок, что он может сделать и что, по сообщению игры, произошло.
Проверка: Могут ли они определить текущую цель и следующее действие? — Игрок, пропускающий чат: Да, по подсказкам основного пути — Игрок, исследующий чат: Да; чат может добавить контекст, не заменяя эти подсказки
Проверка: Могут ли они найти каждую обязательную зацепку и понять ее значимость? — Игрок, пропускающий чат: Да, через авторский мир или элементы интерфейса — Игрок, исследующий чат: Да; чат может закрепить известные факты, но не должен быть единственным источником зацепок
Проверка: Остается ли состояние игры последовательным? — Игрок, пропускающий чат: Обязательные факты задаются авторскими событиями игры — Игрок, исследующий чат: Сгенерированные ответы согласуются с тем же авторитетным состоянием
Проверка: Могут ли они свободно продолжить или прервать диалог? — Игрок, пропускающий чат: Чат не требуется для продвижения — Игрок, исследующий чат: Выход из чата не заводит в тупик и не удаляет инструкцию основного пути
Проверка: Остаются ли необязательные детали необязательными? — Игрок, пропускающий чат: Основной прогресс не предполагает, что эти детали были изучены — Игрок, исследующий чат: Последующие ключевые сцены не воспринимают полученные только из чата знания как общеизвестные
Сбой при любом из проходов указывает на конкретное решение. Если игрок без чата не может действовать, переместите или продублируйте необходимый факт на основном пути. Если исследующий игрок получает противоречивую информацию, скорректируйте передаваемое модели состояние, а также темы или утверждения, которые она может генерировать. Если последующий диалог предполагает, что игрок услышал необязательный ответ, либо зафиксируйте этот факт в другом месте, либо поставьте дальнейшую реплику в зависимость от сохраненного состояния диалога.
Используйте напоминания и повторы для восстановления упущенной информации
Даже информацию, размещенную на основном пути, можно упустить, забыть или встретить в неподходящий момент. Полный список [Game Accessibility Guidelines full list](https://gameaccessibilityguidelines.com/full-list/) включает рекомендации разрешать повторное воспроизведение повествования и инструкций, напоминать игрокам о текущих целях, а для длинных масштабных историй — кратко резюмировать прогресс. Это общие рекомендации по доступности игр, а не тесты ИИ-диалогов. Применительно к данной теме они предлагают эффективные пути решения: журнал заданий, воспроизводимую заново сцену или краткую сводку прогресса, отражающую уже установленные игрой факты.
Напоминание должно помогать восстановить задачу, не делая вид, будто игрок обращался к необязательному контенту. Например, в нем может говориться, что карта должна быть доставлена в обсерваторию до заката, так как это зафиксированная информация о цели. Оно не должно пересказывать личный разговор, которого у игрока никогда не было, или приписывать NPC мотивы на основе сгенерированных домыслов. Напоминания должны быть привязаны к тому же каноническому состоянию, которое использует система целей.
Практическая проверка перед реализацией
Для каждого планируемого диалога с ИИ выпишите факт основного пути, которого он касается, является ли он обязательным, где он зафиксирован за пределами чата, а также какие необязательные детали может добавить диалог. Затем ответьте на следующие вопросы:
Если чат отключен или проигнорирован, сможет ли игрок понять и выполнить основную задачу?
Если чат исследуется, согласуется ли каждый ответ с установленным состоянием мира и знаниями персонажа?
Может ли последующая сцена основного пути случайно воспринять необязательную информацию как общеизвестную?
Может ли игрок восстановить цель или повторно прослушать ее объяснение без опоры на сгенерированный ответ?
Если ответ на первый или четвертый вопрос отрицательный, добавьте авторский способ получения необходимой информации. Если «нет» получено на второй или третий вопрос, пересмотрите передаваемые диалогу параметры состояния, границы ответов или условия для последующих сцен. Это позволит диалогам в свободной форме беспрепятственно раскрывать персонажей и создавать атмосферу, сохраняя понятность основной истории для тех, кто никогда ими не пользуется.
