6

Свой Dungeon Master в Телеграме на коленках

В прошлый раз я рассказывал, как пытался играть в ДнД с ChatGPT. Почувствовал потенциал, но удовлетворения не получил: сценарию гпт не следует, бросать кубики не умеет, подыгрывает и всё забывает. Играть хотелось, но продолжать есть кактус было больно. И я подумал: а вдруг я смогу как-то улучшить этот опыт? Тем более что я как-то делал себе бот-напоминалку в тг на N8N, плюс под эту платформу есть даже готовый шаблон "незабывающего" ДМ... в общем, звёзды совпали! :) Я решил собрать своего Франкенштейна.

За основу взял как раз N8N + Telegram. Для стадии PoC (проверки концепта) это идеальный вариант: логика наглядно собирается стрелочками, связи очевидны, и не нужно тратить недели на написание бэкенда с нуля там, где можно провериться за несколько вечеров. Плюс у них есть ноды-агенты и лёгкая интеграция почти с чем угодно. Для хранения данных выбрал Google sheets. Сами данные оказалось удобно хранить в json, примерно так:

Описание гоблина в JSON

Описание гоблина в JSON

В сочетании с N8N это оказалось чертовски удобным. На каждом шаге можно открыть входящий и исходящий json и посмотреть, что там внутри и всё ли правильно.

Общий алгоритм выполнения получился следующий:

  1. получаем сообщение игрока

  2. собираем данные локации и историю из гугл таблиц

  3. пакуем всё это вместе, чтобы скормить агенту

  4. агент переваривает и выдаёт мега-json со всеми изменениями

  5. парсим ответ агента

  6. обновляем базу данных (гугл таблицы)

  7. пишем ответ ИИ-мастера игроку

Что касается агента, тут всё просто. В N8N есть готовая нода Agent, к ней привязывается модель, на которую у вас есть подписка и API ключ; я использовал groq/llama-70b-versatile. Также можно привязать тулы (инструменты); в моём случае это генератор бросков кубов. Плюс агенту нужен контекст - та самая память: собирается из данных о локации и сжатой истории. Наконец, понадобится большой системный промпт: как отвечать, на что реагировать, как заполнять выходной json, чтобы не сломать базу.

Сборку входных данных для агента и парсинг его ответа я сделал через JS ноды, код которых любезно написал для меня ChatGPT.

В результате получилась вполне рабочая схема. Выглядит это всё вот так.

Схема "ДН в Телеграм" на N8N

Схема "ДН в Телеграм" на N8N

Я потратил какое-то время на перекладывание своего готового сценария на 10 локаций в json и раскладывание по табличкам, и сел играть. Что я могу сказать, оно работает! Поскольку локации и статы лежат в базе, бот не может их забыть. Из любой локации можно идти только туда, куда прописаны переходы, и никаких "тайных проходов". Если очень постараться, можно заставить его не галлюцинировать лут и не наделять его магическими свойствами. Броски теперь не сочиняются, а честно генерируются отдельным инструментом. Ну, круто! :)

Ограничений, конечно, тоже много, и назвать это полноценной игрой никак нельзя. Исключительно проверка гипотезы PoC, не больше. Сейчас этот Франкенштейн уже перерастает во что-то большее. Если пост зайдет, в следующий раз расскажу про эволюцию архитектуры, ограничения ИИ, трудности соло-разработки и о многом другом)) Что думаете, взлетит такая тема для игр?

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества