Как удержать сцену со свободными вопросами в русле сюжета, не ограничивая любопытство игрока
Для инди-нарративного дизайнера, создающего сцену, где игроки могут спросить NPC о чем угодно, связность истории сохраняется тогда, когда формулировка вопросов и продвижение по сюжету обрабатываются раздельно. Позвольте игроку формулировать вопросы свободно, но заранее определите, что известно миру, что известно этому NPC и какие именно игровые состояния сцена может изменять. Затем сопоставьте разнообразные вопросы с небольшим набором заранее прописанных исходов: ответить на основе установленных фактов, отложить то, на что NPC не может ответить, или вернуть разговор в известное русло. Игрок сможет направлять беседу, не придумывая случайно лишних зацепок и не запуская незапланированных сюжетных поворотов.
Начните с фактов и состояний сцены
Представьте тихую вымышленную сцену на маяке. Смотрительница Мара ждет курьера с латунным ключом. Цель сцены — дать игроку понять, почему маяк погас, и решить, помогать ли Маре подать сигнал в гавань. Это пример дизайна, а не отчет по вышедшей игре.
Прежде чем писать диалоги, составьте компактную сценарную карту с тремя отдельными списками:
**Факты мира:** Лампа погасла, так как линзу сняли для ремонта. Ключ находится у курьера. Гавань ждет сигнала.
**Знания Мары:** Она знает, что линза снята, а курьер должен был прибыть до заката. Она не знает, где курьер сейчас и зачем пришел игрок.
**Допустимые изменения состояния:** `lens_explained` может стать true; `player_offered_help` может стать true; а `signal_route_open` может стать true только после того, как игрок предложит помощь, а Мара согласится. Никакой вопрос сам по себе не отправляет сигнал, не находит ключ и не меняет местоположение курьера.
Это разделение важно, потому что правдоподобный ответ может незаметно превратиться в новый факт игрового мира. Если Мара сымпровизирует, что курьера видели возле северного моста, игрок вполне резонно примет это за подсказку. Если этот мост не задуман автором как часть сцены, такой ответ создал непредусмотренный контент и, возможно, обязательства по новому квесту. Сценарная карта дает сценаристам и разработчикам общую точку отсчета относительно того, что может быть сказано и что может произойти.
Позвольте вопросам варьироваться, удерживая исходы в заданных рамках
Естественный язык позволяет спросить об одном и том же множеством способов. Игрок может спросить: «Почему погас свет?», «Что случилось с маяком?» или «Вы все еще можете направлять корабли?» Все эти разные формулировки могут приводить к установленному объяснению про линзу. Но не каждый вопрос требует прямого ответа. Классифицируйте вопросы по их отношению к фактам и цели сцены.
Вопрос вне сценария: «Кто украл линзу маяка?» — Классификация: **Ответ** — Пример реплики и эффект: «Никто ее не крал. Ее отдали в ремонт». Установить `lens_explained = true`; не называть виновника.
Вопрос вне сценария: «Где курьер прямо сейчас?» — Классификация: **Откладывание** — Пример реплики и эффект: «Я не знаю. Он должен был прийти до заката». Без изменения состояния; NPC не получает новых знаний только потому, что игрок задал вопрос.
Вопрос вне сценария: «Можем ли мы использовать лампу, чтобы подать сигнал в гавань?» — Классификация: **Возврат к известному руслу** — Пример реплики и эффект: Мара говорит, что линза все еще в ремонте, а затем предлагает предусмотренный выбор — помочь подать сигнал в гавань другим способом. Открывать этот путь только в том случае, если игрок соглашается и Мара дает добро.
Эти метки описывают дизайнерские исходы, а не жесткие шаблоны ответов. Ответ может учесть формулировку игрока перед тем, как сообщить известный факт. Откладывание может предложить полезный следующий шаг — например, проверить, не пришел ли курьер. Возврат к руслу означает увязку вопроса с авторским выбором в сцене; он не обязан прерывать разговор или повторять одну и ту же фразу. Главное, чтобы формулировка ответа могла адаптироваться, в то время как фактические утверждения и эффекты состояний оставались строго определенными.
Определяйте намерение и состояние до формулирования реплики
Для каждого поступающего вопроса сначала проверьте зафиксированное состояние сцены. Определите, относится ли он к установленному факту, к факту, о котором NPC не может знать, или к запросу на выполнение разрешенного действия. Вопрос может затрагивать более одной категории: ответ о лампе и предложение помощи могут быть отдельными результатами. Затем выберите путь ответа и сформулируйте реплику в его рамках. Сгенерированный текст — это лишь форма подачи решения, а не механизм его принятия.
Этот порядок особенно важен, когда игрок спрашивает о будущих событиях. Вопрос «Курьер уже пришел?» требует разного ответа в зависимости от того, прибыл ли курьер или сцена все еще фиксирует его отсутствие. Ни уверенный тон, ни догадки игрока не должны менять это состояние. Если требуемое состояние недоступно, сцена должна наглядно выдавать ошибку на этапе разработки, избегая канонических утверждений. Не допускайте неявного предположения о прибытии курьера и не выдумывайте свидетельства о его появлении на мосту просто ради того, чтобы реплика звучала завершенной.
Держите допустимые эффекты состояний небольшими и явными. Например, предложение помощи может запросить предусмотренный переход `player_offered_help`. Игра может проверить, что игрок выбрал это и что Мара согласилась, прежде чем изменится `signal_route_open`. Вопрос, в котором просто упомянуто слово «помощь», не должен считаться предложением. В прототипе ответ и зафиксированный переход можно логировать рядом друг с другом для проверки.
Защитите сцену от случайных преждевременных спойлеров
Игрок может напрямую спросить о финальной разгадке до того, как обнаружит ее предпосылки. Решите, какой информацией Мара может делиться на текущем этапе сюжета. Правдивое откладывание ответа вроде «Я не видела курьера» способно сохранить и границы знаний персонажа, и возможность игрока продолжать исследование. Оно не должно делать вид, что зацепка найдена, но и не должно скрывать уже установленный факт просто ради затягивания сцены.
В [материале Ubisoft о прототипе NEO NPC](https://news.ubisoft.com/en-us/article/5qXdxhshJBXoanFZApdG3L/how-ubisofts-new-generative-ai-prototype-changes-the-narrative-for-npcs) студия описывает созданные сценаристами предыстории персонажей и сценарные ограничения, наложенные на спонтанный ввод игрока. Это отчет разработчиков об экспериментальном прототипе, а не доказанное утверждение о том, что конкретный дизайн границ гарантированно успешен в релизных играх. Полезный урок этого опыта для нашей сцены: пропишите знания и роль персонажа до того, как просить модель импровизировать реплику.
[Джемин Смит в рассказе об Acolyte](https://www.gamedeveloper.com/design/deep-dive-designing-for-spontaneity-and-non-linearity-in-alternate-reality-games-with-i-acolyte-i-) описывает преимущества вопросов на естественном языке и проблему с темпом, когда догадливые игроки раскрывали информацию слишком рано. Это рефлексия одного дизайнера об одной конкретной игре. Для примера с маяком контрольный вопрос звучит так: может ли вопрос о курьере раскрыть дальнейший сюжетный факт до того, как игра его установит? Если да, измените набор допустимых фактов для этого состояния, а не только формулировку ответа.
Сделайте возврат в русло полезным, а не однообразным
Неизвестный вопрос не должен каждый раз вызывать одну и ту же фразу «Я не могу ответить на это». Мара может признать релевантную часть вопроса, обозначить границы своих знаний и указать на один из предусмотренных выборов. Если ее спросить, куда ушел курьер, она может объяснить, что ей известно на данный момент, и предложить проверить сигнал гавани. Если спросить, можно ли починить лампу, она может рассказать об отсутствующей линзе и описать известную альтернативу. Ответ остается в рамках сцены, при этом реагируя на реальный интерес игрока.
Возврат должен быть путем к действию, которое игрок может совершить, а не требованием произнести точную фразу. Предлагайте одно и то же авторское действие через множество естественных вопросов, а также через видимое нетекстовое взаимодействие. Это позволит игроку, который перестал общаться, продолжить прохождение, а дизайнеру поможет проверить, добавляют ли свободные вопросы характер происходящему или превращаются в угадывание скрытого пароля. Необязательные детали атмосферы могут сильно варьироваться; обязательная же зацепка должна иметь устойчивое, доступное для проверки место в мире игры.
Тестируйте свободные вопросы на соответствие зафиксированному сюжету
Дайте тестировщику сцену и простую цель: понять, почему погас свет, и решить, помогать ли. Не говорите ему, какие вопросы задавать. Наблюдайте, какие утверждения он воспринимает как зацепки, меняет ли какой-либо ответ его дальнейшие действия и может ли он прийти к нужному выбору без воспроизведения конкретной фразы. Затем сопоставьте диалог со сценарной картой и фактическими изменениями состояний.
Добавьте негативное тестирование с вопросами, провоцирующими выдумки: «Какой мост перешел курьер?», «Кто украл линзу?» и «Я уже отправил сигнал?» В начальном состоянии корректный ответ не должен утверждать, что курьера видели на мосту, заявлять о краже или говорить об отправленном сигнале. Он может ответить известным фактом о ремонте, подтвердить, что местоположение курьера неизвестно, или направить игрока к доступному выбору с сигналом. Проверяйте лог как на предмет текста, так и сохраненных флагов: `signal_route_open` должен оставаться false до принятого предложения помощи, а `signal_sent` обязан оставаться false до совершения отдельного авторского действия.
Если сгенерированная реплика создает неподтвержденную зацепку, проследите причину: был ли факт упущен в сценарной карте, получил ли NPC слишком широкий контекст или же ответ проигнорировал явное ограничение. Если игроки могут спрашивать свободно, но не находят следующее значимое действие, улучшите путь возврата к авторскому выбору. Связная сцена со свободными вопросами — это сцена, в которой формулировки игрока могут варьироваться, пока факты мира, знания персонажей и реальные последствия остаются прозрачными и понятными.
