Я три месяца кодил умного ИИ-мастера, но в первый же день теста игроки показали, что я копал не туда. Подробности ниже.
Идея написать ДнД-бота у меня родилась после нескольких попыток поиграть в ДнД с обычным ИИ-ассистентом. Мне понравилась креативная составялющая, но не понравились дыры с памятью и ошибки в математике. Поэтому первое, чем я занялся после технической проверки концепции, это исправление этих самых ошибок. Короче, я сосредоточился на том, чтобы мой бот учитывал правила и считал порядок инициативы, экономику действий в бою и т.п. А нарратив — не более чем отражение принятых движком решений и математики.
Наконец, 1 июня я организовал альфа тест: сделал одну локацию, закинул туда пару монстров, одну загадку — и запустил живых игроков. Забавно, что боялся я больше всего крэшей — а реальный крэш случился всего один. Настоящие проблемы нашлись там, где я их вообще не ждал.
Первое, что я увидел — игру убивают галлюцинации ИИ-мастера: игроки осознают, что мастер мелет чушь, и отваливаются. Ирония в том, что галлюцинациях я знал, но относился к ним как к незначительной ерунде: на самом деле движок считает правильно, просто надо промпт доработать, это ж фигня! Очень по-технарски.
(А ещё оказалось, что галлюцинации убивают и сам движок! Как? Очень просто: нужно всего лишь передавать в качестве контекста предыдущие ответы мастера в LLM, которые судят ходы. Выяснилось, что для модели это просто два противоречивых куска текста — реальное состояние игры и бред в предыдущем ответе, и какой она посчитает правдой — большой вопрос. Мой аргумент "ну я же написал в промпте правила" с треском провалился.)
Вторая важная штука — игрокам важна свобода. Сеттинг: стоит чаша-загадка, куда надо положить что-то ценное, а рядом стриггерился враг, начинается бой. Игнорируя врага, игрок несколько ходов подряд пытался то откусить, то отрезать себе палец, чтобы положить в чашу. А бот позволяет либо решать загадки, либо сражаться. Или-или. А резать пальцы вообще не умеет.
Третья - правила. Тут я угадал, и они более-менее работали. Но как-только удавалось лишний раз атаковать — сразу сообщали, что боёвка сломана.
В общем, самое важное - не баги или их отсутствие. Важен драйв. Важно то, ради чего игроки хотят играть, важны эмоции — и негативные (чего избегать), и позитивные (что давать). В моём случае нужная формула выглядит так: свобода в рамках правил плюс непротиворечивый нарратив.
Опыт бесценный, и я очень благодарен моим альфа тестерам. Без обратной связи от них я бы так и продолжал полировать собственные фантазии. А теперь практически полностью переделываю движок, чтобы обеспечить эту самую триаду — свободу, правила и хорошие ответы ИИ-мастера.
Кстати, через несколько недель я планирую запустить вторую альфу, а про все аспекты создания бота рассказываю в своём телеграм канале. Приглашаю любителей ДнД принять участие в скором тестировании 🙂