Вы когда-нибудь разговаривали с персонажем в игре, который помнил, что вы сказали три часа назад? Или читали книгу, где герой меняет тон, когда узнает, что вы его обманули? Это не магия - это Custom NPC. И если вы пишете сценарии, создаёте игры или просто хотите, чтобы ваши персонажи дышали, а не читали телеграм-каналы, вам нужно понять, как он работает.
Что такое Custom NPC?
Custom NPC - это не просто готовый шаблон диалога. Это персонаж с внутренней логикой, памятью и способностью адаптироваться. В отличие от старых систем, где NPC говорили одно и то же при каждом запуске, Custom NPC учится на взаимодействиях. Он помнит, что вы вчера обещали вернуть меч, а сегодня его не принесли. Он замечает, что вы избегаете темы про родителей - и в следующий раз говорит иначе.
Это не ИИ в стиле ChatGPT, который генерирует бессмыслицу. Это система с чёткими правилами: эмоции, контекст, предыстория, цели персонажа. Даже если вы не программист, вы можете создать такого персонажа - если знаете, как устроены его «мозги».
Как он запоминает?
Custom NPC не хранит всё подряд. Он не помнит, что вы сказали «Привет» в пятом диалоге, если это не имеет значения. Он фильтрует. У него есть три ключевых слоя памяти:
- Факты - то, что произошло: «Игрок дал ключ от подвала», «Игрок лгал о смерти брата».
- Эмоции - как персонаж относится к этому: «Подозревает игрока», «Чувствует вину», «Раздражён».
- Цели - что персонаж хочет: «Собрать доказательства», «Сбежать», «Найти правду».
Каждый раз, когда вы говорите с ним, система сопоставляет ваши слова с этими слоями. Если вы впервые упомянули «Артём», а персонаж знал его как предателя - он скажет: «Ты что, с ним дружишь?». Если вы уже говорили, что Артём - ваш брат, и он это запомнил - он ответит: «Я не знал, что он ваш брат. Простите».
Это не случайность. Это результат чёткой структуры. В играх вроде The Witcher 3 или Disco Elysium такие системы работают на уровне сценариев, написанных с учётом возможных веток. В инди-проектах - на базе простых JSON-таблиц с условиями.
Как писать диалоги для Custom NPC?
Вы не пишете один диалог. Вы пишете множество диалогов - и связываете их логикой.
Вот как это выглядит на практике:
- Вы начинаете с цели персонажа. Например: «Скрыть, что он украл золото».
- Затем вы определяете ключевые триггеры: что может его выдать? «Игрок упомянул имя стража», «Игрок нашёл кровь на полу».
- Для каждого триггера вы пишете реакции: ложь, уклонение, агрессия, сожаление.
- И добавляете память: если игрок уже видел кровь - персонаж начинает нервничать раньше.
Пример:
Игрок: «Ты видел, как убили Лару?»
Custom NPC: «Нет. Я был в баре. Почему ты спрашиваешь?»
Игрок: «У Лары была брошь с лебедем. Я видел её у тебя в кармане».
Custom NPC: «...Ты что, проверяешь мои карманы?»
Игрок: «Я не проверяю. Я просто говорю, что видел».
Custom NPC: «Она мне подарила. Она была добра ко мне. А ты? Ты даже не знаешь, кто она была».
Здесь нет «правильного» ответа. Есть только последовательный. Персонаж не «выдаёт» секрет. Он реагирует на давление. И это делает его живым.
Какие ошибки делают новички?
Самая частая - пытаться сделать NPC «умным» через объём. Пишут 50 вариантов диалогов. И всё равно персонаж ведёт себя как робот.
Вот три главные ошибки:
- «Он должен быть вежливым всегда». Нет. Он должен быть последовательным. Если он грубый в начале - он не станет добрым, просто потому что вы сказали «спасибо».
- «Он должен знать всё». Нет. Он должен знать то, что знает. Если он бедный крестьянин - он не знает про политику королевства. Он знает, что его бабушка умерла от голода, потому что налоги подняли.
- «Он должен отвечать на всё». Нет. Он может молчать. Он может уйти. Он может смеяться. Это тоже реакция.
Лучший тест: представьте, что персонаж - ваш друг. Что бы он сказал, если бы вы сказали ему: «Я обманул тебя»? Не то, что вы хотите, чтобы он сказал. А то, что он действительно сказал бы.
Где это применяется?
Custom NPC - не только для игр. Он есть в:
- Интерактивных книгах - например, в приложениях вроде Choices или Replika, где персонаж меняет отношение к вам в зависимости от ваших решений.
- Обучающих симуляциях - например, для тренировки переговоров: вы общаетесь с «клиентом», который запоминает, как вы ведёте себя в стрессе.
- Театральных проектах - в immersive-постановках, где актёр получает подсказки в наушниках, как реагировать на действия зрителей.
В России такие системы начинают появляться в образовательных играх. Например, в проекте «Город будущего» для школьников - ученики общаются с NPC, которые ведут себя как реальные чиновники: одни лгут, другие боятся, третьи просто не понимают, что происходит.
Как начать, если вы не программист?
Вы не обязаны писать код. Есть инструменты, которые позволяют создавать Custom NPC без строк кода.
- Twine - бесплатная система для создания интерактивных историй. Вы рисуете ветки диалогов, как карту. Можно добавить переменные: «дружба = 5», «подозрение = 2».
- ChatMapper - графический редактор для диалогов. Подходит для игр и VR. Можно привязать эмоции к реакциям.
- AI Dungeon (в режиме настройки) - если вы задаёте персонажу прошлое, цели и ограничения, он начинает вести себя как Custom NPC. Правда, не идеально - но для старта подойдёт.
Начните с малого. Напишите диалог между двумя персонажами: один врёт, другой подозревает. Дайте им по три состояния: «доверяет», «сомневается», «ненавидит». Сделайте три точки, где игрок может повлиять на отношение. И посмотрите, как персонажи меняются.
Почему это важно?
Потому что люди не любят персонажей. Они любят тех, кто их понимает.
Когда NPC запоминает вашу боль, вашу ложь, вашу слабость - вы не играете. Вы живёте в истории. Вы не выбираете «правильный ответ». Вы выбираете, кто вы есть в этой истории.
Это не техника. Это искусство. И оно становится доступнее. Не потому что технологии стали умнее. А потому что мы начали писать диалоги не для машин - а для людей.
Можно ли создать Custom NPC без знания программирования?
Да. Есть инструменты вроде Twine, ChatMapper и даже AI Dungeon, где вы можете задавать правила поведения через интерфейс, без кода. Главное - чётко определить цели персонажа, его эмоции и триггеры. Не нужно писать алгоритмы - нужно писать человеческие реакции.
Почему NPC не запоминает мои действия в некоторых играх?
Потому что разработчики не вложили в них систему памяти. Многие игры используют простые «флаги»: если вы убили кого-то - появляется надпись «все боятся тебя». Но это не память - это статус. Custom NPC требует глубины: он должен помнить как вы это сделали, почему и как вы потом себя вели. Это требует больше времени и ресурсов - поэтому не все игры это делают.
Как проверить, что мой NPC живой?
Задайте ему один и тот же вопрос три раза - но с разным контекстом. Первый раз - он вас не знает. Второй - вы обманули его. Третий - вы помогли ему. Если он отвечает одинаково - он мёртв. Если он меняется: с подозрения → настороженности → благодарности - вы сделали его живым.
Можно ли использовать Custom NPC в книгах?
Да, но не в печатной версии. В интерактивных книгах - да. В приложениях, где читатель выбирает диалоги, персонаж может менять поведение в зависимости от выбора. Например, если вы часто выбираете агрессивные ответы - герой перестаёт доверять вам. Если вы проявляете сочувствие - он раскрывает тайну. Это уже не «книга» - это история, которая меняется с вами.
Чем Custom NPC отличается от ChatGPT?
ChatGPT генерирует ответы на основе статистики - он не помнит вас между сессиями и не имеет целей. Custom NPC - это персонаж с внутренним миром: у него есть прошлое, эмоции, цели и ограничения. Он не «думает» - он реагирует. И его реакции предсказуемы, потому что вы сами их задали. ChatGPT может быть умным. Custom NPC - живым.