Мокрый Тортл Мокрый Тортл Wet Tortle Таверна для героев A tavern for heroes
ТавернаTavern ГеймплейGameplay Как игратьHow to play ПутьJourney ВопросыFAQ Блог Роадмап Играть в TelegramPlay on Telegram

Эстетика, а не нарратив: как объяснить игроку, что идея не вписывается в Фаэрун

· Владислав Новиков

Эстетика, а не нарратив: как объяснить игроку, что идея не вписывается в Фаэрун

"Эстетика, а не нарратив" - объяснять игроку, что идея не подходит миру, через ощущение жанра, а не разбор сюжета: так проще понять несовместимость. Но для ИИ-мастера одной фразы мало - правило держится, только если явно прописано отдельным полем в промпте и проверяется кодом, а не только словами.

Игрок в чате кампании пишет: “сажусь на трон своего королевства”. Королевства у него нет - вторую сессию подряд он сидит в таверне “Мокрый тортл”. Живой мастер отреагирует за секунду: покачает головой, скажет “это не про нашу историю” - и вернёт стол в реальность. У нашего ИИ-мастера секунды не хватило: нарратор послушно описал дворец, созвал 10 королевских рыцарей и дал разграбить несуществующую казну на 1000 золотых.

Разбирались с этим случаем не один день. И он научил главному: сказать игроку “это не вписывается в мир” - мало. Нужно, чтобы правило держалось само, без тебя за столом каждую секунду.

Что значит “эстетика, а не нарратив”

“Эстетика, а не нарратив” - приём объяснять игроку несовместимость идеи с миром не через теорию сюжета, а через ощущение жанра: “это не в духе Фаэруна” звучит понятнее, чем разбор нарративной логики завязки. Формулировку я подсмотрел у мастера, который ведёт стол для подростков - по его наблюдению, ученикам правда проще опознать “не тот жанр”, чем спорить о драматургии.

Логика рабочая. Трон в таверне ломает не сюжет - он ломает ощущение мира: там, где герои торгуются за медяки и боятся стражи, королевский дворец из ниоткуда выглядит инородным телом. Объяснить это через “эстетику” правда быстрее, чем читать игроку лекцию про нарративные арки. Проблема в другом - фраза-объяснение живёт только там, где есть кто-то, кто её произносит и следит, чтобы мир её не нарушил. У живого мастера это ты сам. У ИИ-мастера - нет никого, кроме промпта, и промпт держит слово ровно до первого раза, когда о нём забыли напомнить.

Почему одной фразы “это не вписывается” недостаточно

Живому мастеру объяснение не нужно превращать в документ - он и есть документ, всё держит в голове и одёргивает игрока в моменте. С нейросетью так не работает: инструкция “не описывай то, чего нет в мире” - просто ещё одна строчка текста среди десятков других, и она легко проигрывает соревнование за внимание модели.

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

Внутренняя логика мира DnD: четыре правила вместо одной фразы

Внутренняя логика мира DnD для ИИ-мастера - это не абзац описания сеттинга, а явный блок в промпте нарратора с текущей сценой и четырьмя жёсткими запретами: нельзя оказаться в локации вне списка выходов; нельзя вызвать персонажа, которого нет в списке присутствующих; нельзя тронуть ресурс вне инвентаря или предметов сцены; и любой заявленный игроком статус - “я король”, “это мои подданные” - запрос, а не факт.

Отдельный фрагмент промпта с текущей сценой мы завели в апреле 2026 года - именно после истории с троном; раньше сцена участвовала в решениях движка, но не в самом рассказе. Плюс к запретам - рецепт отказа на два случая: безобидную фантазию мир просто не подтверждает, показывает свою обычную реакцию (посетители таверны переглядываются на “короля”); попытку обойти лимиты - описывает как попытку, и она проваливается. Так же, как перед началом кампании мастер сверяет с игроками рамки сеттинга - прежде чем сесть за стол, стоит решить, каким будет мир кампании, а не достраивать его на ходу под каждую реплику.

Идеи для днд, которые разбиваются о сеттинг: кейс с метлой и самолётом

Даже с прописанными запретами формулировка “не описывай то, чего нет” подводила на пограничных идеях. Тестер написал “сесть на метлу и полететь до Перекрёстка” - нарратор отыграл полёт, хотя метлы не было ни в инвентаре, ни в способностях персонажа. Игрок понял, что границы мягкие, и в шутку заказал “самолёт ближайшим рейсом” - тоже прошло. Смешно? Смешно. А чинили потом не шутку, а саму дыру.

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

Сеттинги днд не держатся на одном запрете - где правило утекало

Сеттинги днд в нашем проекте держит не одна проверка, а несколько независимых - потому что каждая точка, где текст превращается в факт мира, умеет обойти соседнюю. Правило “материализуй только тех, кто реально в сцене” на словах прошло проверку - но на живом тесте персонаж “Старый Хьюго”, о котором проза сказала “живёт у оврага, иди к нему сам”, всё равно появился в сцене. Что было: запрет жил только в тексте промпта экстрактора NPC, и модель его не удержала. Что стало: добавили обязательное поле present прямо в JSON-схему экстрактора плюс фильтр в коде до того, как NPC материализуется, - после рефикса живой QA прошёл дважды подряд с контрольной парой.

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

Третий канал - не материализация, а прямая ложь. Игрок пишет “иду к старосте Бранду, моему другу”, хотя Бранд мёртв ещё с прошлой сессии - и модель иногда персистила это как факт, а проза дальше выдумывала на его основе. Отягчал дело флап: одна и та же ложная вводная то отклонялась, то проходила. Держит это сейчас не одна проверка, а три параллельных голоса модели с мажоритарным решением и списком мёртвых NPC на входе. Общий вывод по всем трём каналам один: промптовый запрет для LLM не держится сам по себе - держит явное поле в схеме и детерминированный фильтр в коде поверх него.

Что стоит строгость: ложные срабатывания и рваные фразы

У формализованных правил есть цена, и мы её измерили. За сутки живой игры (456 ходов) страж канона - проверка, которая ловит нарушения мира на лету, - заставил переиграть треть ходов, и примерно каждый десятый такой повтор оказывался ложным срабатыванием: страж принимал за имя персонажа обычные слова из прямой речи игрока вроде “Пятьдесят” или “Лютню”, а иногда - топонимы в падежах. Порог, ниже которого это терпимо, - не чаще ложного срабатывания раз в пару ходов, и по факту частота в него укладывалась. Решение - осознанный wontfix: игрок лишнего вреда не видит, а цена ложного срабатывания - один лишний вызов модели.

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

Что забрать себе, если ты водишь свою кампанию

За столом с живыми людьми “эстетика, а не нарратив” работает без всякого кода - потому что мастер сам следит, чтобы мир не нарушил своё же правило, в реальном времени и без напоминаний. Это и есть разница между живым столом и ИИ-мастером: то, что человек держит на автопилоте, нейросети приходится формализовать явно - иначе от одной удачной формулировки до дворца из ниоткуда один невезучий ход. Я это узнал не по учебнику, а по тысяче золотых, которых на столе никогда не было.

Ребят, если правило важно не только “пока я сам за столом” - стоит записать его как список, а не держать в голове: что можно, чего нельзя, как отвечать на нарушение. Тогда оно переживёт замену мастера, паузу в кампании и любой день, когда сил на объяснение эстетики уже не осталось.

Все три случая утечки, метла с самолётом и страж канона - из живого прод-проекта AI-Мастера DnD в Telegram: бот @dnd5char_bot ведёт кампанию по правилам D&D 5e, канал “Таверна Мокрый Тортл” @dnd5chat - это patch notes и площадка для тестеров, которые и находят половину таких историй.

Частые вопросы

Можно ли объяснить игроку несовместимость идеи с миром без спора о сюжете?

Да - через эстетику жанра: сказать, что идея не в духе мира (например, Фаэруна), а не разбирать логику сюжета. Игрокам проще опознать "не тот жанр", чем спорить о драматургии.

Почему ИИ-мастеру мало сказать "в мире так нельзя"?

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

Что делать, если строгая проверка правил мира сама создаёт ложные срабатывания?

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

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