Бумажные кубики, толстые тетради с характеристиками персонажей, ведущий с хриплым от долгих посиделок голосом — раньше текстовые ролевые игры жили именно так, в тесных компаниях единомышленников. Сейчас всё изменилось: роль мастера подземелий вполне способен взять на себя ии-бот, который не устаёт, не забывает деталей и готов вести партию хоть в три часа ночи. Звучит заманчиво, но за внешней простотой прячется уйма нюансов — от выбора модели до тонкой настройки характера ведущего. И чтобы бот не превратился в скучного рассказчика, выдающего шаблонные ответы, стоит разобраться в технологии по полочкам.
Зачем вообще нужен такой бот?
Начнём с мотивации. Ведь без чёткого ответа на вопрос «для кого и зачем» проект быстро увянет на стадии черновика. Кто-то мечтает об уютной партии в стиле «Подземелий и драконов» в одиночку, без необходимости собирать друзей по выходным. Другие хотят детективный нуар, третьи — космооперу, а четвёртые — романтическую драму с ветвящимися сюжетами. Бот закрывает эти запросы лучше любого приложения с фиксированными сценариями. Он импровизирует, реагирует на нестандартные действия игрока и подбрасывает повороты, о которых сам автор и не задумывался. Хотя и тут есть ложка дёгтя — без грамотной настройки бот скатится в бессвязный поток сознания.
Выбор языковой модели
Фундамент всей конструкции — это языковая модель. Без неё бот не заговорит. Варианты есть на любой вкус и кошелёк. Облачные решения — GPT-4, Claude, Gemini — дают живые, насыщенные ответы и отлично держат контекст, но за каждый токен придётся платить. Локальные модели семейства Llama, Mistral, Qwen ставятся на собственное железо и работают бесплатно, однако серьёзное вложение в видеокарту неизбежно. Для приличной 13B-модели понадобится карта с 16 ГБ видеопамяти (а лучше 24). Тридцатимиллиардные модели уже потребуют двух RTX 3090 в связке. Бюджетный путь — арендовать GPU в облаке по часам, что не сильно ударит по кошельку при редких сессиях.
Какую модель выбрать новичку? Если опыта в программировании немного, разумнее начать с API какого-нибудь облачного гиганта. Подключение занимает пару часов, документация подробная, а первые результаты вдохновляют. Локальный путь — для тех, кто готов разбираться с квантизацией, контекстным окном и сэмплерами. Тем более, что приватность переписки в этом случае остаётся при вас, а не оседает на серверах корпорации.
История развивается так, как решаете вы ✍️
Это не книга с готовым финалом и не игра с фиксированными ответами. В нашем телеграм-боте вы сами ведёте диалог с ИИ-персонажем: задаёте тон, принимаете решения, меняете ход событий. Захотели романтики — будет романтика. Захотели интриги — сюжет повернёт туда. Каждая партия — уникальная.
Попробовать прямо сейчас 👉 https://clck.ru/3Ta8kQ
Системный промт — душа ведущего
А вот тут начинается самое интересное. Системный промт — это инструкция, которую бот читает перед каждым ответом. Он определяет всё: тон, жанр, степень жестокости описаний, манеру ведения диалога. Плохой промт превращает мощную модель в безвольного болтуна. Хороший — в харизматичного гейм-мастера, способного держать игрока у экрана часами.
Что обязательно прописать в промте? Во-первых, роль и характер ведущего — циничный наблюдатель, заботливый сказочник, безжалостный судья. Во-вторых, жанр и сеттинг с конкретными деталями: не просто «фэнтези», а «низкое тёмное фэнтези в духе Аберкромби, где магия редка и всегда оборачивается бедой». В-третьих, правила взаимодействия — как бот реагирует на действия игрока, бросает ли виртуальные кубики, описывает ли последствия. Ну и, наконец, ограничения: запрет говорить за персонажа игрока, обязательство заканчивать каждый ответ открытой ситуацией, требующей решения.
Память и контекстное окно
Самая болезненная тема в любой долгой партии — забывчивость бота. Через двадцать-тридцать ходов он перестаёт помнить имя торговца из второй главы, путает локации, теряет квестовые предметы. Дело в том, что у моделей есть лимит контекста — окно, в пределах которого они «видят» переписку. У современных моделей оно колеблется от восьми тысяч до миллиона токенов, но даже миллион не спасает от деградации внимания на длинных дистанциях.
Спасательный круг здесь — внешняя память. Самый рабочий подход — векторная база данных (Chroma, Qdrant, Pinecone), куда складываются ключевые события партии, описания персонажей и локаций. Перед каждым ответом бот достаёт релевантные фрагменты и подмешивает их в контекст. Реализуется это через механику RAG — генерации с дополненной выборкой. Звучит сложно, но готовых библиотек хватает: LangChain, LlamaIndex, Haystack разложат большую часть работы за вас. Параллельно стоит вести «журнал партии» — короткое саммари, которое модель сама дописывает каждые десять-пятнадцать ходов и хранит как сжатую сводку прошлого.
Механики бросков и случайности
Чистая болтовня надоедает. Игрок хочет напряжения, риска, чувства, что исход не предрешён. И тут на помощь приходят кубики. Точнее — генератор случайных чисел, который бот вызывает в нужный момент. Реализовать это можно двумя путями. Первый — научить модель саму писать команды вроде «бросаю d20 на скрытность», после чего внешний скрипт перехватывает запрос, кидает виртуальный кубик и возвращает результат. Второй — предоставить боту инструмент через function calling, что поддерживают все крупные API.
Не стоит перегружать систему сложной математикой. Пары базовых формул хватит за глаза: проверка характеристики против сложности, противостояние двух показателей, бросок урона. Иначе бот будет тратить половину ответа на подсчёты вместо описаний. А ведь именно описания — то, ради чего всё затевается.
Платформа и интерфейс
Где игрок будет общаться с ботом? Выбор зданий, в которые можно поселить ведущего, довольно широк. Telegram-бот — самый ходовой вариант: API дружелюбный, аудитория огромная, разработка занимает выходные. Discord-бот хорош для групповых партий, где несколько игроков взаимодействуют с одним мастером. Веб-приложение на Next.js или Streamlit даёт максимум контроля над оформлением — можно прикрутить карты, портреты персонажей, журнал инвентаря. Ну и, конечно же, никто не отменял настольные клиенты вроде SillyTavern, заточенные специально под ролевые игры с ии.
Какой путь выбрать? Если цель — играть самому, SillyTavern закроет 90% потребностей без единой строчки кода. Если хочется собственный продукт для аудитории, телеграм-бот на Python с библиотекой aiogram станет отличным стартом. А когда проект встанет на ноги, можно подумать и о полноценном веб-сервисе с подпиской.
Подводные камни и типичные ошибки
Здесь есть, о чём предупредить. Первая беда — повторы. Модель цепляется за удачную фразу и начинает её эксплуатировать в каждом ответе. Лечится повышением параметра repetition_penalty и явным запретом в промте. Вторая беда — потеря жанра: тёмное фэнтези внезапно сваливается в комедию положений. Помогает периодическое напоминание о тоне в системных сообщениях. Третья — чрезмерная услужливость, когда бот всегда соглашается с игроком и не создаёт препятствий. Тут нужен жёсткий пункт в промте: «Мир сопротивляется. Не каждое действие игрока заканчивается успехом».
Отдельно стоит упомянуть проблему «бот говорит за моего персонажа». Модель так и норовит дописать реакцию игрока, лишая того субъектности. Лекарство одно — прямой запрет в инструкции, продублированный несколько раз разными формулировками. И всё равно нет-нет, да и проскочит. Тогда выручит постобработка: скрипт, отрезающий всё после фразы вида «вы говорите» или «вы решаете».
Тестирование и отладка
Прежде чем выпускать бота к живым людям, через него стоит прогнать десятки партий самостоятельно. Сыграйте дотошного зануду, безбашенного авантюриста, пассивного наблюдателя — каждый архетип вскроет свой пласт проблем. Ведите заметки: где бот сбился, где забыл деталь, где выдал скучный ответ. После каждой сессии правьте промт, добавляйте примеры желаемого поведения, ужесточайте формулировки. Это кропотливый, но неизбежный процесс. Ведь живой игрок не простит того, что прощает разработчик.
Полезный приём — собрать «золотой набор» сцен: десять-пятнадцать ключевых моментов, которые бот должен отыгрывать на отлично. Битва с превосходящим противником, моральная дилемма, расследование, романтическая сцена, мистический ужас. После каждого изменения промта прогоняйте этот набор и смотрите, не сломалось ли что-то ранее работавшее. Регрессии в ии-системах — штука коварная.
Сколько это стоит?
Деньги — вопрос неизбежный. Облачный путь через GPT-4 при активной игре по два часа в день обойдётся примерно в десять-двадцать долларов в месяц на одного пользователя. Claude Sonnet выйдет дешевле, Gemini — ещё дешевле, но качество отыгрыша у каждой модели своё. Локальный путь требует разовых вложений в железо (от 70 до 250 тысяч рублей за приличную сборку), зато потом считай бесплатно. Аренда GPU в облаке — компромисс: рублей сорок-восемьдесят в час за машину с подходящей картой.
Не стоит гнаться за самой дорогой моделью с порога. Mistral Small или Llama 3.1 8B при грамотной настройке промта дают вполне достойный отыгрыш для большинства жанров. А разница в качестве с топовыми моделями ощущается прежде всего на длинных партиях со сложной интригой.
Шлифовка атмосферы
Технически работающий бот и бот, в которого хочется играть, — две большие разницы. Атмосферу творят мелочи. Описание запаха гари в разрушенной деревне. Дрожь в голосе старого жреца. Шорох плаща в темноте переулка. Этому тоже учат через промт — буквально приводя три-четыре эталонных абзаца с пометкой «вот так должны выглядеть твои описания». Модель схватывает стиль и начинает воспроизводить нужное настроение.
Изюминкой проекта может стать саундтрек. Несколько ботов умеют по тегам сцены подгружать фоновую музыку из заранее собранной библиотеки. Битва — ударные и медь. Таверна — лютня и гомон голосов. Подземелье — низкий гул и капли воды. Реализовать это несложно, а погружение вырастает на порядок.
Удачи в создании собственного цифрового мастера — пусть он водит партии, от которых игроки будут отрываться только под утро, а каждая новая сессия запомнится надолго.

