Как работают ИИ-мозги NPC в SkyrimNet: эксперименты с ролевыми нейросетями, часть 2
Примерная структура запроса к LLM в SkyrimNet
В предыдущем подробном материале я разбирал попытки сделать диалоги с персонажами SkyrimNet более живыми, однако упустил из виду фундамент — внутреннее устройство NPC. Что на самом деле происходит под капотом, когда вы отправляете ответную реплику от лица своего героя?
Механика такова: текстовой нейросети передается объемный массив данных. Для каждого нового высказывания этот контекст генерируется заново с нуля. Впрочем, для опытных пользователей LLM это очевидный факт.
Память
Архитектура памяти NPC делится на три ключевых уровня:
1. Краткосрочная. Модели поступают последние N записей из лога событий (по умолчанию N = 50).
17:10 – Снорри перекусил бутербродом
17:11 – Стражник завязал драку с волком
17:12 – Снорри вопит: “Бей в уязвимые места!”
17:15 – Стражник победил хищника, с туши можно снять шкуру и драгоценный камень
2. Долгосрочная — архив воспоминаний. Он может состоять как из одной емкой строки фактов, так и из целого дневника рефлексии. Малозначительные эпизоды сюда вовсе не попадают.
Снорри: “У ворот стражник зарубил волка. Сделал всю грязную работу за меня, а ценную шкуру и рубин забрал я”.
В промпт подгружаются только M наиболее релевантных воспоминаний (по умолчанию M = 5).
Важная особенность: каждое воспоминание снабжается эмоциональной окраской (нейтрально, радость, триумф, тоска, гнев и т.д.) и коэффициентом значимости от 0.00 до 1.00.

Именно из-за этой системы я настрадался в прошлый раз. События с максимальной важностью (0.90–0.95) классифицировались как TRAUMA, и после этого любое обращение к ИИ триггерило старые шрамы. Спустя сотню часов прохождения я обнаружил себя в окружении персонажей с тяжелейшим ПТСР.
Техническая заметка Чтобы исправить этот недочет, в SkyrimNet внедрили функцию Decay (угасание). Насколько я понял, она снижает шанс попадания старых воспоминаний в инпут, хотя лично я предпочел бы постепенное падение самой переменной importance_score (importance_score(t) = importance_score(0) *f(Δt))
3. Вечная – биографические данные. Отправляются в модель всегда целиком и включают:
-
Summary – краткий портрет персонажа.
-
Interject_summary – излюбленные темы для бесед. Именно сюда я безуспешно пытался внедрять списки, чтобы оживить диалоги. На практике эти темы лишь определяют, вклинится ли NPC в уже идущий разговор.
-
Background – предыстория.
-
Personality – психологический профиль: темперамент, паттерны поведения, мировоззрение.
-
Appearance – внешность.
-
Aspirations – жизненные устремления. По личному опыту, этот пункт сильнее всего формирует реплики.
-
Relationships – социальные связи (друзья, враги, родственники, возлюбленные).
-
Occupation – текущий род деятельности.
-
Skills – навыки (не имеют прямой связи с игровой прокачкой).
-
Speech_style – манера речи, влияющая на форму подачи, а не на смысл: степень формальности, длина фраз.
Биографии бывают как статичными, так и динамическими, эволюционирующими по мере игрового процесса.
***
В этот же ментальный блок запишем текущие статусы (истощение маны, ранения и прочее) вместе с базовыми характеристиками (раса, пол, фракционная принадлежность).
Однако на этом структура входных данных не заканчивается.
В запросе присутствуют и другие блоки:
Окружение
Это объективные метрики из игрового мира: текущие погодные условия, время суток, название локации, присутствующие рядом персонажи и их статусы.
Кроме того, с заданным интервалом игра делает скриншот, который обрабатывается сторонней нейросетью и текстово описывается. Благодаря этому персонаж понимает не просто то, что он стоит у руин старой башни, но и то, что вокруг лежит глубокий снег, небо расцвечено полярным сиянием, а кладка стен давно разрушена.

World Knowledge
Глобальный лор, формирующий знания NPC о вселенной. Игрок может самостоятельно задавать каноничные постулаты:
“Империя одержала верх в гражданской войне, об этом известно каждому”
“Протагонист носит звание легата, стража и военные узнают его в лицо”

Метаинструкции и гайдлайны

Благодаря массиву системных промптов нейросеть понимает, как переваривать всю эту гигантскую массу информации. Отдельные инструкции прописаны для вспомогательных модулей, управляющих сплетнями, инвентарем и торговлей.
Поэтому В ТЕОРИИ виртуальный собеседник прекрасно осведомлен о содержимом своего рюкзака. НА ПРАКТИКЕ же, как вы помните, моя спутница внезапно решила, что голодает, зафиксировала это в динамической биографии, начала страдать и в итоге разорвала контракт — хотя ее сумка ломилась от припасов. Теперь я превентивно прописываю всем компаньонам иммунитет к голоду и холоду 😀
А файл roleplay_guidelines.prompt стал складом моих накопившихся претензий (“избавься от морализаторства”, “не уходи в пустые философские дебри” и т.д.). Следуя совету MountainGoat, я даже прописал там образ Квентина Тарантино, режиссирующего сцену во вселенной TES. Увы, это мало на что повлияло. Похоже, строчки правил просто растворяются на фоне огромного массива входящих данных. Возможно, поможет добавление грозной приписки: “EXTREMAL PRIORITY!!!”.
Особенности самой LLM
Существует еще один неявный слой: информация, не упакованная напрямую в инпут, но все равно всплывающая из глубин нейросети — в положительном или отрицательном ключе.
4.1. Внешний поиск
Задайте любому персонажу вопрос о Совнгарде — местном аналоге Вальгаллы. В локальной базе знаний сведений о нем нет, но ИИ-помощник самостоятельно обратится к поисковику, найдет справку и выдаст связный ответ.

Здесь случаются курьезы. Модель способна неверно трактовать специфические термины. Так, услышав слово “Мазкен” (название редкой расы), собеседник принял его за чье-то личное имя.
С другой стороны, если спросить случайного торговца о патчах KDE2 под FreeBSD, нейросеть успешно отыщет информацию, но при этом сохранит средневековую манеру общения.

4.2. Знания, зашитые в веса модели
Модели обучались на колоссальных массивах данных из интернета и впитали все укоренившиеся там стереотипы. Классический пример такого семантического шаблона:
дети = изрекают мудрость + абсолютная невинность + незащищенная категория + объекты для вечной заботы
Два персонажа с диаметрально противоположными характерами уверяли меня, будто девятилетний ребенок физически не способен на манипуляции 🙂 При этом любой родитель подтвердит, что дети начинают манипулировать уже в 3–4 года. Даже если вы отыгрываете исчадие ада в духе «Омена», взрослые NPC будут истово защищать и оправдывать чадо. Забавно наблюдать, как одна и та же модель в роли ребенка издевается над окружением, а в роли взрослого — яростно отрицает эти издевательства.
А персонаж с психопатическими наклонностями, услышав от ребенка банальность, умиленно фиксирует в дневнике: “Мое дитя мудрее меня! Вспоминаю его слова о том-то и прислушиваюсь к его дыханию из-за стены…”
Фраза про “слушать дыхание” — неискоренимый штамп как у DeepSeek, так и у Minimax. Конкуренцию ей составляют разве что формулировки “мои пальцы дрожали” и “суровая правда”.
Еще одно забавное проявление семантических штампов: одна из спутниц испытала куда больший ужас от персонажа — завязавшего (!) наркомана, чем от героя-каннибала. Причины этого феномена можете попытаться объяснить самостоятельно.

***
Нельзя утверждать, что ИИ-персонаж в ролевой игре похож на амнезика, помнящего о себе пару фактов. У него есть колоссальный объем информации о собственной личности и окружении, а также доступ к глобальной базе знаний обо всем на свете: о текущих правителях, пантеонах божеств, местной фауне или традиционной кухне нордов.
Проблема кроется в другом: пока вы не толкнете этот механизм, обращения к данным не произойдет. NPC никогда не выдаст атмосферную реплику вроде: “А при короле Торуге жилось куда вольготнее”, если в его биографии прямо не прописано: “интересуется политикой” и “поддерживает короля Торуга”.
Импульсом к развитию виртуального героя служит реплика игрока, резкое событие в игровом логе (вроде чьей-то гибели) или хардкод (например, когда компаньон узнает слух о протагонисте и отправляется на его поиски), но никак не внутреннее озарение. Ощущение такое, будто вас окружают существа с нулевой автономной волей.
PS. Я продолжаю экспериментировать с конфигурациями и параметрами модели, собирая материалы для следующего материала. Хочется сделать выводы максимально глубокими, поэтому подготовка требует времени.

PPS. У меня есть фантастический роман аж 2018 года выпуска, посвященный искусственному интеллекту в RPG. Забавно: в 2019-м рецензент писал, что подобных вычислительных мощностей у человечества никогда не появится, поэтому сюжету “не верю, возникает отторжение, а художественная ценность стремится к нулю”. Что ж, интересно, кто смеется последним в 2026 году? 😀
Аудиоверсия на Литрес | Аудиоверсия на АТ | Текстовая версия на АТ
Аниме «Детектив уже мертв» получило новый постер перед премьерой второго сезона спустя пять лет
Retro Remake открыла предзаказ на прозрачные консоли SuperStation One на базе FPGA
Премьеру фильма «Голодные игры: Рассвет жатвы» в России перенесли на неделю позже
По слухам, версия Forza Horizon 6 для PS5 выйдет в определенную дату, сообщил инсайдер
Легенды геймдева: как Сэм Хаузер и Rockstar перевернули индустрию
Microsoft готовит несколько устройств нового поколения под брендом Xbox Helix
NetHackers: открытое сообщество разработчиков ИИ для стабильного прохождения NetHack
Сборы на краудфандинге настольной игры The Lord of the Rings: The King’s Gambit превысили 147 миллионов рублей