Новости
0
23
Поделиться
Диалоги с ИИ-персонажами в игре: как перейти от идеи к работающему прототипу
Сегодня, 13:00
Новости
0
23
Поделиться

Диалоги с ИИ-персонажами в игре: как перейти от идеи к работающему прототипу


Убедительный ИИ-персонаж должен помнить разговор, соблюдать правила мира и отвечать без затяжных пауз. Для первого прототипа достаточно проверить эти свойства на одном герое.

 

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

 

 Какие задачи будет решать ИИ-персонаж 

Диалоги с ИИ-персонажами в игре: как перейти от идеи к работающему прототипу

 

Для первой версии достаточно одной роли: проводник объясняет маршрут, торговец обсуждает ассортимент. Нужно определить, что персонаж знает и какие действия ему разрешены. Формулировка «веди себя как житель города» оставляет слишком много пространства для выдумок.

 

Краткий паспорт персонажа помогает связать сценарий с кодом:

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

Языковая модель формирует реплику или предложение действия. Игровой код проверяет право на действие, состояние квеста, цену и наличие предмета, после чего применяет изменение. Текст «я подарил тебе меч» сам по себе не должен добавлять меч в инвентарь. В сетевой игре эту проверку выполняет авторитетный сервер, которому клиент не может подменить состояние.

 

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

 

 Как задать характер, знания и память 

ХарактерХарактер

 

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

 

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

 

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

 

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

 

Для проверки памяти предложим контрольный сценарий: игрок назвал своё имя, завершил задание и вернулся после перезагрузки. Герой должен сохранить допустимые сведения, признать завершённый этап и не выдать награду повторно.

 

 Где запускать модель и какие ресурсы нужны 

ЗапускЗапуск

 

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

 

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

 

В серверной конфигурации для инференса — выполнения уже обученной модели — одним из вариантов ускорителя может быть видеокарта nvidia a100. Версию PCIe проверяют по совместимости с конкретным сервером, доступному питанию и воздушному потоку: пассивный радиатор охлаждается вентиляторами платформы. Исполнение SXM требует другой платформы и не устанавливается в обычный слот PCIe. Также проверяют сочетание драйвера, вычислительной среды и выбранного ПО для модели.

 

СерверСервер

 

Расчёт памяти начинается с весов. Условная модель на 8 млрд параметров при хранении каждого параметра в двух байтах занимает 16 млрд байт, или примерно 14,9 ГиБ. Это расчёт только весов: нужны дополнительные буферы, память среды исполнения и KV-кэш, сохраняющий промежуточные данные обработки контекста. При прочих равных длинные диалоги и большее число одновременных запросов увеличивают требования к этому кэшу.

 

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

 

 Как проверить качество и задержки диалогов 

ДиалогиДиалоги

 

Для оценки нужен фиксированный набор сцен с ожидаемым поведением: сохранением фактов, характера и разрешений. Набор повторяют после изменения модели, инструкций или базы знаний; версии компонентов сохраняют вместе с результатами.

 

В набор включают несколько групп:

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

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

 

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

 

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

 

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

 

Видео: разработка игры с помощью ИИ 


Лайк, если понравилось
Сохранить
Комментарии
Высказать своё мнение

Уважаемые пользователи! Просьба высказывать свою точку зрения без применения ненормативной лексики!*

  

  

Кликните на изображение чтобы обновить код, если он неразборчив  


  • winkwinkedsmileam
    belayfeelfellowlaughing
    lollovenorecourse
    requestsadtonguewassat
    cryingwhatbullyangry