Как сделать из нейросети честного Гейм-мастера? Мой опыт создания текстовой RPG с кубиками D20, картой и пермадезом
Привет, DTF!
Вы когда-нибудь ловили себя на мысли во время чтения книги или просмотра сериала: «Блин, а как бы повернулся сюжет, если бы мой персонаж поступил вот так?». Наверняка многие пробовали заходить с этим в ChatGPT или AI Dungeon.
Первые 20 ходов обычно вызывают дикий восторг. Но потом всё неизбежно катится в тартарары. ИИ ловит «модельной склероз»: забывает, что у героя оторвана рука, потерянный три локации назад спутник вдруг материализуется из воздуха, а финальный босс резко превращается в доброго соседа. В итоге игра превращается в бесконечную кашу, где у ваших действий просто нет веса и последствий. Добавьте сюда костыли с переводчиками на зарубежных сайтах — и магия окончательно рушится.
Я знатно психанул от этого и решил написать свой игровой движок «Стирая Грань» (Beyond The Verge) — текстовую RPG полностью на русском языке, где свободная фантазия нейросети закована в жёсткие рамки классических настолок.
Тем более, сейчас можно навайбкодить что угодно, если приложить немного усилий :)
Интерфейс: Уходим от формата банального «чатика»
Самое главное — я сразу отказался от концепции бесконечной ленты мессенджера. Игра должна выглядеть как игра. Экран поделён на три логические зоны, которые работают в реальном времени:
Как это устроено изнутри: Авторитарный бэкенд
ИИ в моей игре — это наёмный ведущий, у которого связаны руки. Он не может на ходу выдумать, что вы мгновенно разбогатели или стали бессмертным. На каждый ваш ход нейросеть обязана вернуть серверу строго валидируемый JSON-контракт.
Выглядит этот контракт под капотом примерно так:
Бэкенд перепроверяет каждое поле. Если ИИ решил вычесть у вас здоровье, сервер валидирует урон и меняет статы в базе данных. Если модель попытается сгаллюцинировать и выдать миллион золотых за убийство крысы — сервер просто обрежет это значение капом зоны.
За счёт такого контроля удалось реализовать механики, которых так не хватает обычным нейросетевым чатам:
- Честный кубик D20. Любое критическое действие (взлом, обман, атака) рассчитывается через виртуальный бросок кубика, завязанный на ваши характеристики (might, wit, spirit, craft). Движок берёт текст вашего действия и превращает его в уникальный цифровой отпечаток. Считерить через «сейв-лоад» (перезагрузку страницы) не выйдет: кубик для одного и того же действия всегда выдаст тот же результат. Выпала единица — ИИ обязан описать ваш позорный провал.
- Векторная память против склероза. Хроники мира кодируются и сохраняются в векторную базу данных. ИИ всегда помнит, что происходило 50 ходов назад, потому что бэкенд сам находит важные факты и незаметно подмешивает их в контекст перед каждым вашим действием.
- Перманентная смерть и Эпилоги. На хардкоре у вас всего 3 жизни. Погибли от потери здоровья или истощения энергии — кампания закрывается навсегда. Но игра на этом не обрывается: ИИ генерирует масштабный финальный Эпилог (в духе Fallout или Disco Elysium), расписывая наследие вашего персонажа и судьбу фракций на основе всех совершённых вами выборов.
- Живой мир (Butterfly Simulation). Пока вы думаете над ходом, на сервере тикает симуляция: фракции воюют за влияние, сменяются циклы дня и ночи, а погода меняется с вероятностью 15% за ход, напрямую меняя атмосферу в тексте.
Где пощупать?
Проект полностью живой, переведён на русский язык и оптимизирован под десктоп и мобильные браузеры: beyondtheverge.online
Чтобы не душнить заполнением форм и вводом почты, я сделал гостевой режим на 5 ходов. Можно зайти буквально за три секунды, создать персонажа и проверить, как бэкенд заставляет ИИ кидать кубики на ваши действия.
При создании профиля система выделяет бесплатный лимит примерно на 250 глубоких ходов. Почему именно столько? Один ваш клик «весит» около 4000 текстовых токенов, потому что движок постоянно шлёт ИИ огромные пласты памяти, инвентарь и карту, чтобы мир оставался персистентным и живым. Этого объёма с головой хватит, чтобы пройти одну большую историю или проверить память гейм-мастера на прочность.
На выбор доступно 10 сеттингов (ЛитРПГ, мрачный гримдарк, постапокалипсис, уютный детектив, хоррор и т.д.) и 10 литературных жанров — движок сам пересоберёт под них стартовые квесты, расы и классы.
Залетайте, пробуйте скрафтить что-нибудь безумное из хлама или отлететь на хардкоре в первой же подворотне. Жду геймеров и коллег-разработчиков в комментариях — делитесь мыслями, критикуйте, баги сами себя не найдут!