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

Главная ловушка при создании ДнД с нейросетью в роли мастера не в том, чтобы написать красивый промпт, а в том, чтобы модель не ломала игровую механику: не раздавала бесконечное золото, не забывала инвентарь и не удваивала здоровье героя на ровном месте.
Разработчик браузерной текстовой RPG, где ведущим работает языковая модель, описал четыре конкретные проблемы на стыке вероятностного ИИ и жёсткой игровой арифметики. Игрок пишет действие своими словами, нейросеть отвечает рассказом, а параллельно движок на коде ведёт лист персонажа: здоровье, деньги, характеристики, инвентарь, броски d20. Ниже разбираем, как это устроено и что из этого опыта пригодится тем, кто хочет собрать собственного ДнД мастера на нейросети или просто лучше понять, где модели нужна жёсткая рамка.
Что понадобится
- Языковая модель с поддержкой JSON-ответов. Подойдут модели, доступные через OpenRouter (агрегатор, который даёт единый доступ к десяткам моделей по API). В России можно попробовать YandexGPT или GigaChat, если они поддерживают структурированный вывод.
- Серверная часть. В оригинале используется Node.js 24 с Express и встроенной базой данных node:sqlite. Для экспериментов хватит любого бэкенда, умеющего отправлять HTTP-запросы к API модели.
- Базовое понимание промпт-инжиниринга (промпт-инжиниринг, умение формулировать задания для модели так, чтобы она отвечала в нужном формате и стиле).
- Время: от пары вечеров на прототип до нескольких недель на отлаженный продукт.
Как собрать ДнД мастера на нейросети: пошаговая инструкция
- Отдайте механику коду, а модели оставьте только рассказ. Не просите модель «ответь и обнови лист персонажа целиком». Она забудет предметы, раздаст мечи с бонусом +100 и через десяток ходов потеряет счёт деньгам. Вместо этого модель возвращает строгий JSON, где кроме текста рассказа есть только изменения: сколько здоровья отнять, какой предмет добавить, какой факт запомнить. Применяет изменения движок, и он же проверяет границы: броня не режет урон больше чем вдвое, характеристики не уходят в бесконечность.
{
"check": { "stat": "ХАР", "dc": 12, "why": "уговорить дракона", "ok": true },
"narration": "Дракон открывает один глаз…",
"hp": -3,
"add": [{ "name": "Чужой сапог", "icon": "👢", "slot": "feet", "def": 1 }],
"fact": "Гоша назвал дракона папой"
}
-
Сохраняйте ключевые факты в отдельную хронику. Поле
factиз JSON уходит в короткий список событий, который подмешивается в промпт следующих ходов. Так нейросеть-мастер помнит, что двадцать ходов назад герой назвал дракона папой, а вся история целиком в контекст (окно внимания модели, сколько текста она «видит» за раз) не тащится. -
Бросайте кубик заранее, до запроса к модели. Наивный подход: сначала модель решает, нужна ли проверка, потом игрок бросает кубик, потом второй запрос за рассказом. Это двойная цена и двойная задержка. Вместо этого сервер кидает d20 до запроса и кладёт результат прямо в промпт:
КУБИК: выпало 14, с бонусом Харизмы итог 16.
Системный промпт (системный промпт, скрытая от пользователя инструкция, задающая поведение модели) объясняет правило: если проверка нужна, первым полем ответа идёт check с характеристикой, сложностью и результатом, а рассказ пишется с учётом исхода. Если проверка не нужна, поле check отсутствует, кубик не упоминается.
-
Прячьте исход от игрока до нажатия кнопки. Сервер хранит ответ «запечатанным». Игроку показывается только «нужна проверка Харизмы, сложность 12» и анимация кубика. Поле
ok(успех или провал) вырезается. Игрок нажимает «Бросить», рассказ открывается без нового запроса к модели. -
Страхуйте арифметику модели кодом. Модели иногда пишут «успех» при итоге ниже сложности. Перебрасывать нельзя, рассказ уже написан. Поэтому сервер подвигает сложность так, чтобы честный результат совпал с текстом. Критические 1 и 20 не корректируются: это неприкосновенные значения в настольных RPG.
-
Явно укажите тип каждого числового поля: изменение или итоговое значение. Тестировщики обнаружили баг: стоило мастеру прибавить герою максимум здоровья, как дальше он удваивался. Причина: в промпте было написано «hp, money, stats это изменения», а про
max_hpни слова. Модель видела «Здоровье 10/20», решала прибавить крепости и писалаmax_hp: 20как итог. Движок честно складывал: 20, 40, 80. Решение двухслойное: -
В промпте
max_hpдобавлен в список изменений с правилом «меняй редко и не больше чем на четверть». -
В коде стоит страховка: число больше допустимого шага считается итоговым и превращается в разницу, а сам шаг ограничен плюс-минус 25%.
-
Настройте стиль мастера через позицию блока в промпте. Стили «Классика», «Угар», «Хам», «Эпос», «Документалка» поначалу звучали одинаково: блок стиля стоял в середине длинного системного промпта, и модель его просто теряла. Три правки, которые помогли:
-
Перенести блок стиля в самый конец системного промпта.
- Продублировать одной строкой прямо перед действием игрока:
(Стиль ведущего: Хам.). - Дать каждому стилю свой лимит объёма ответа.
Строка-напоминание оказалась самым дешёвым и самым действенным приёмом: десяток токенов (токен, минимальная единица текста для модели, примерно 3/4 русского слова), а разница в поведении модели заметна сразу.
Игрок написал: «Пытаюсь уговорить дракона отдать сундук, называю его папой». Сервер перед запросом бросил d20, выпало 14, с бонусом Харизмы итог 16. Модель вернула JSON: проверка Харизмы со сложностью 12, успех, рассказ про то, как дракон растрогался, минус 3 HP (дракон всё же задел хвостом), новый предмет «Чужой сапог» в инвентарь и факт в хронику. Игрок увидел анимацию кубика, нажал «Бросить», получил рассказ и обновлённый лист персонажа. Один запрос к модели вместо двух, лист персонажа посчитан кодом, а не фантазией нейросети.
Доверять модели арифметику. Через десяток ходов модель забудет, сколько у героя золота, и начнёт выдумывать. Любое число в ответе модели должно проверяться и применяться кодом.
Не указывать тип числового поля. Если промпт не говорит явно «hp это изменение, а не итог», модель будет чередовать оба варианта непредсказуемо. Баг с удвоением здоровья появился именно так.
Ставить блок стиля в середину длинного промпта. Модель «забывает» инструкции, далёкие от конца. Стиль, тон и характер мастера должны стоять в конце системного промпта и дублироваться строкой перед вводом игрока.
Показывать исход до броска. Если потоковая выдача не придерживает текст, игрок успевает прочитать результат до анимации кубика. Интрига ломается.
Что делать с этим прямо сейчас по ролям?
Авторам Дзена и копирайтерам. Принцип «модель придумывает, код проверяет» работает и для контента: пусть нейросеть генерирует черновик, а жёсткая рамка (чек-лист фактов, лимит длины, обязательные поля) применяется снаружи. Это и есть продуктивный промпт-инжиниринг.
Маркетологам. Если строите чат-бота или интерактив для аудитории, не отдавайте модели контроль над числами: скидками, ценами, остатками. Любая цифра, которую видит клиент, должна приходить из базы, а не из ответа модели.
Предпринимателям в РФ и СНГ. Полностью повторить этот стек можно и с российскими моделями. YandexGPT и GigaChat умеют отвечать в формате JSON. Главное правило то же: не доверяйте модели то, что умеет обычный код.
Этот разбор ценен не столько как руководство по созданию игры, сколько как демонстрация универсального принципа работы с нейросетями. По моим наблюдениям, большинство проблем с ИИ-ассистентами возникает именно там, где модели поручают то, что она делает плохо: считать, помнить числа, соблюдать ограничения. Подход «модель рассказывает, код считает» применим к любому продукту: от образовательного бота до CRM-помощника. Честная оговорка: настроить стабильный JSON-вывод от модели непросто, галлюцинации (когда модель уверенно выдумывает то, чего не было) в структурированных полях встречаются реже, чем в свободном тексте, но не исчезают полностью. Код-валидатор на стороне сервера обязателен.
Хотите научиться управлять нейросетями для своих задач?
В dzen.guru мы разбираем приёмы промпт-инжиниринга и реальные сценарии работы с ИИ для авторов и предпринимателей.
Попробовать dzen.guruРазделение ответственности между моделью и кодом, пожалуй, самый практичный урок из этого проекта: нейросеть-мастер для ДнД работает ровно до тех пор, пока ей не дают считать деньги.

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

ИИ на работе: что такое воркслоп и как его избежать за 5 шагов
Воркслоп звучит как что-то безобидное, пока не окажется, что половина «работы» вашей команды за последний месяц была мусором, который только выглядел как…

Obscura закрывает приватность нейросетей для российских данных: ИНН и СНИЛС больше не утекут в ChatGPT
Obscura перехватывает запросы к нейросетям до отправки и подменяет чувствительные данные синтетическими двойниками, при этом шлюз, развёрнутый внутри…

Что такое ИИ-агент для 1С: за 15 минут нашёл 119 ГБ мусора на рабочем кластере
Компания 1С, кластер, два сервера, 512 ГБ памяти, 16 баз. Субботний вечер. ИИ-агент без RDP-доступа садится за диагностику и за 15 минут находит то, мимо чего…
Комментарии