Диалоги НПС · подсказки, варианты, проверка

Генератор диалогов НПС: реплики персонажей, которые звучат по-человечески

Создайте свой генератор диалогов НПС

Практический рабочий процесс для диалогов НПС: подсказки с персоной, целью и ограничениями, генерация вариантов, контрольный список проверки и живая 3D-демонстрация, где ваш НПС говорит прямо в мире.

✦Игра
Создайте генератор диалогов НПС

Генератор диалогов НПС превращает письменное описание в варианты реплик персонажа. Вы задаёте персону, ситуацию и цель — он возвращает черновики. Он не решает, какой черновик уйдёт в игру. Это решение остаётся за автором, который сокращает, правит и проверяет реплику в той сцене, где её услышат.

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

Краткий ответ: что делает генератор диалогов НПС

Генератор диалогов НПС принимает три входных параметра — персону, ситуацию и цель — и возвращает варианты реплик. Персона фиксирует, кто говорит и что он знает. Ситуация фиксирует, где находится игрок и что только что произошло. Цель фиксирует, чего НПС хочет от этого разговора. Измените любой из трёх — изменится результат. Не измените ни одного — получите почти одинаковые реплики.

Чего он не делает — так это не доводит реплику до конца. Генератор выдаёт черновики: реплики нужной длины, правдоподобным голосом, нацеленные на нужную цель и всё равно чем-то неверные — это вы заметите, только когда прочитаете их вслух или увидите, как они ложатся на экран. Автор по-прежнему выбирает среди вариантов, вырезает те, что объясняют слишком много, и правит уцелевшую, пока она не станет тем, что мог бы сказать человек. Относитесь к результату как к первому проходу быстрого, неутомимого и слегка слишком буквального соавтора.

Что делает диалог живым в игре

Основную работу делают четыре свойства. Короткие реплики: игрок читает на ходу, а реплику, на которую нужно два вдоха, пропускают. Одно намерение на реплику: реплика, которая одновременно предупреждает и задаёт вопрос, не работает ни как то, ни как другое. Единый голос персонажа: словарь, длина предложений и то, что персонаж отказывается говорить. И границы знаний: НПС должен знать только то, что подсказывает его положение в мире. Докер не знает о здоровье короля. Стражник у северных ворот не знает, что случилось в канализации, если ему никто не рассказал.

Границы знаний нарушают чаще всего, и именно их замечают игроки. Если каждый персонаж может ответить на любой вопрос, мир перестаёт ощущаться местом и начинает ощущаться поисковой строкой. Решите, что каждый персонаж может правдоподобно знать, прежде чем что-либо генерировать. Это решение место в подсказке персоны, а не в вашей голове.

Вот один и тот же запрос, записанный двумя способами. Плоско: «Скажи игроку, что мост разрушен и нужно идти восточной дорогой». В образе, для паромщика, который не спал: «Мост ночью рухнул. Восточная дорога теперь единственный сухой путь. Перевезу, если есть монета, но в темноте грести не буду». Вторая версия несёт ту же информацию и при этом несёт человека. Она подразумевает цену, предел и настроение. Ничего этого в плоской версии не было.

Плоская версия не бесполезна. Это техническое задание. Сначала напишите плоскую реплику, затем перепишите её устами персонажа. Генерация прямо из цели без персоны — это способ получить реплики правильные и взаимозаменяемые.

Шаблоны подсказок: персона, цель, ограничение

Шаблон из трёх частей — персона, цель, ограничение. Персона — это кто говорит и что он знает. Цель — для чего нужен этот разговор. Ограничение — длина, тон и то, чего реплика не должна делать. Заполняйте все три каждый раз. Подсказка только с целью даёт общие реплики; подсказка только с персоной даёт монолог без функции.

Заполненный пример: «Персона: Марта, паромщица, сорок лет на реке, знает, что мост обрушился прошлой ночью и что восточная дорога затапливается в прилив. Цель: сообщить игроку, что мост разрушен, и что она может перевезти его за плату. Ограничение: меньше 30 слов, никаких объяснений её прошлого, не упоминать короля, разговорный регистр, она устала». Такая подсказка возвращает пригодные варианты. Уберите ограничение — получите абзац. Уберите персону — получите указатель.

ПолеЧто в него входитЧастая ошибка
ПерсонаИмя, роль, что персонаж знает и чего не знает, текущее настроениеПеречисление предыстории вместо границ знаний, из-за чего НПС отвечает на вопросы, на которые не должен
ЦельЕдинственное, чего этот разговор должен добиться для игрокаСкладывание двух целей — предупредить и продать — из-за чего реплика не делает чисто ни то, ни другое
ОграничениеКоличество слов, регистр, запретные темы, что нельзя раскрыватьОтсутствие ограничения и абзац на 60 слов для пузыря на 4 секунды

Генерация вариантов без потери голоса

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

Меняйте ситуацию, а не формулировку. Если вы повторите ту же подсказку с той же персоной, целью и ограничением, модель вернёт почти одинаковые варианты: та же структура предложений, заменённые прилагательные. Это не ошибка, так и работает почти детерминированный сэмплер с неизменным входом. Чтобы получить настоящее разнообразие, измените то, на что персонаж реагирует. Игрок пришёл на рассвете, а не ночью. Игрок ранен. Игрок задал тот же вопрос в третий раз. Тот же голос, другое давление, другая реплика.

Держите блок персоны неизменным во всех вариантах. Если позволить персоне уплывать от запуска к запуску, вы уже генерируете не варианты одного персонажа, а нескольких персонажей, которые случайно носят одно имя. Заморозьте персону, варьируйте ситуацию — и результаты останутся сопоставимыми.

Сохраняйте подсказку, которая дала реплику, ушедшую в игру. Через шесть недель, когда понадобится вторая реплика для того же персонажа, вы загрузите эту подсказку, а не будете восстанавливать голос по памяти. Файлы подсказок должны лежать в системе контроля версий рядом с данными диалогов.

Контрольный список перед выпуском реплики

Пять проверок по порядку. Прогоняйте их для каждой реплики, прежде чем она попадёт в таблицу диалогов.

1

01

Длина на экране. Посчитайте слова и оцените время чтения примерно в три слова в секунду. Реплика длиннее примерно 20 слов не успеет закончиться до закрытия речевого пузыря, если не продлить таймер. Сокращайте, а не продлевайте.

2

02

Знания, которых у НПС быть не должно. Спросите, что этот персонаж мог бы правдоподобно знать исходя из своего положения и недавней истории. Если реплика раскрывает то, о чём ему никогда не говорили, либо вырежьте её, либо добавьте сцену, где ему это сказали.

3

03

Согласованность имён и лора. Проверьте написание по таблице персонажей и каждое имя собственное — по библии мира. Генераторы придумывают названия мест, которые звучат правильно и противоречат вашей карте.

4

04

Даёт ли реплика выход. Реплика, которая заканчивает разговор без ветки, без обновления квеста и без прощания, оставляет игрока перед персонажем, которому больше нечего сказать. Каждой разговорной реплике нужен выход, даже если этот выход — «больше нечего сказать».

5

05

Тест чтения вслух. Произнесите реплику вслух в темпе разговора. Реплики, которые хорошо выглядят на экране, спотыкаются о скопления согласных и неудобные ударения. Если вы запнулись, актёр озвучивания тоже запнётся, а игрок пропустит.

Вложите реплику в уста персонажа

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

Реплика без точки читается как закадровый текст. Игрок слышит голос без видимого источника, и мозг записывает его в рассказчика, а не в персонажа. Точка — это то, что сообщает игроку, кто говорит, ещё до первого слова. Радиус срабатывания — то, что делает реплику откликом на приближение, а не трансляцией. Пузырь — то, что удерживает реплику привязанной к телу, пока игрок двигается.

Проверяйте размещение в живой 3D-сцене, а не в макете. В 3D-конструкторе игр Neta Studio вы можете поместить персонажа в проходимый мир, задать радиус срабатывания, привязать утверждённую реплику к пузырю и провести игрока через сцену. Mini World — небольшая сцена именно для такой проверки. Если пузырь прорезает стену или срабатывание идёт с другого конца площади, вы увидите это за десять секунд ходьбы. The Cyclops' Island — сцена крупнее, где ту же реплику можно проверить при большем количестве геометрии между игроком и персонажем.

  • ТочкаФиксированная позиция и направление взгляда персонажа, выбранные так, чтобы тело читалось как принадлежащее этому месту.
  • Радиус срабатыванияОбъём малой дальности, который запускает реплику при приближении; настройте его так, чтобы реплика не звучала с другого конца комнаты.
  • Речевой пузырьЭлемент в мировом пространстве, привязанный к голове персонажа, чтобы реплика оставалась на месте, пока игрок двигается.
  • Длительность пузыряЗадаётся по количеству слов из расчёта примерно три слова в секунду; продлевайте таймер только после того, как сократили реплику.

Где диалог вписывается в поведение НПС

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

Если вы используете дерево поведения, диалог принадлежит листовому узлу, до которого дерево доходит, уже решив, что персонаж в разговоре. Дерево отвечает за приближение, поворот, паузу и выход. Узел диалога поставляет реплику. Так список реплик остаётся управляемым данными, а дерево отвечает за тайминг. Это также значит, что вы можете заменить фиксированную реплику сгенерированной, не переписывая дерево.

Для AI-НПС, которые реагируют на ввод игрока, структура та же: восприятие питает дерево, дерево выбирает узел диалога, узел либо берёт фиксированную реплику, либо во время выполнения вызывает модель с персоной, целью и ограничением. Agent Sprite Forge здесь полезен, потому что визуальная идентичность персонажа и его диалоговая идентичность остаются парой — вы не выпускаете сгенерированную реплику на спрайте, который никогда не создавался под этот голос.

Фиксированный список реплик — лучший выбор чаще, чем кажется. Используйте его, когда реплику слышат много раз, когда информация должна быть точной, когда персонаж входит в цепочку квестов с гарантированными состояниями или когда задержка сломала бы сцену. Используйте модель, когда ввод открытый, реплику слышат один раз, и слегка неверный ответ стоит меньше, чем отсутствующий.

Mini World — поставьте персонажа в проходимую сцену и посмотрите, где окажется реплика.

Шагните в мир, которому она принадлежит

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

FAQ

Что такое генератор диалогов НПС? +

Инструмент или шаблон подсказки, который принимает персону, ситуацию и цель и возвращает варианты реплик для неигрового персонажа. Он создаёт черновики; автор всё равно выбирает, сокращает и правит, прежде чем реплика уйдёт в игру.

Нужна ли языковая модель для диалогов НПС? +

Нет. Фиксированный список реплик в таблице данных покрывает большинство НПС, особенно реплики, которые слышат многократно или которые привязаны к состояниям квеста. Модель стоит задержки и затрат, когда ввод открытый, а реплику слышат один раз.

Сколько реплик на НПС писать? +

Столько, сколько требует функция персонажа, и не больше. Фоновому НПС нужно от двух до четырёх реплик. Квестодателю нужна реплика на каждое состояние плюс запасная. Считайте состояния, прежде чем считать реплики.

Как сохранить персонажа последовательным в сгенерированных репликах? +

Заморозьте блок персоны и используйте его дословно. Держите карточку персонажа со словарём, длиной предложений, границами знаний и запретными темами, а подсказку храните рядом с данными диалогов, чтобы последующие реплики начинались с того же ввода.

Можно ли использовать сгенерированный диалог коммерчески? +

Это зависит от условий модели или инструмента, которые вы используете, и от вашего собственного процесса проверки, а не только от генератора. Проверьте лицензию вашего конкретного провайдера и оставляйте человеческую проверку в цикле перед выпуском.

Как тестировать диалог в игре? +

Поставьте персонажа на точку в проходимой сцене, задайте радиус срабатывания, привяжите утверждённую реплику к речевому пузырю и проведите игрока через сцену в темпе разговора. Проверьте время чтения, прорезание пузыря и то, что реплика даёт выход, прежде чем утвердить её.

Вернуться к 3D-конструктору игр

Все 31 готовых 3D-мира, игры и сцены собраны на одной странице — в каждый можно играть.

Платформа: Neta StudioСтраница: Генератор диалогов НПС: реплики персонажей, которые звучат по-человеческиЧитайте далее: /explore/guide/ai-npc · /explore/guide/npc-behavior · /explore/guide/what-is-a-non-player-character
×