RPGStudio

RPGStudio

Делаю RPG Studio: ролевую игру, где историю ведёт ИИ-мастер. Первые 5 ходов бесплатно, прямо в браузере: rpgstudio.ru. Группа ВКонтакте: vk.ru/club241653606
На Пикабу
96 рейтинг 0 подписчиков 0 подписок 5 постов 0 в горячем
2

Мой самый сильный бот проигрывал самому слабому. История про баланс карточной игры⁠⁠

Я делаю браузерную карточную игру по своей вселенной, «Хроники Варлодов». У соперника три уровня: Новобранец, Ветеран и Полководец. Полководец самый умный, перед каждым ходом он доигрывает партию до конца много раз и выбирает ход с лучшей долей побед. И в какой-то момент этот умник стал проигрывать Новобранцу, который кладёт карты почти наугад. В 58% партий.

Расскажу, как такое вышло, и ещё про пару граблей.

Сначала коротко про игру

Карточная дуэль, три раунда, нужно выиграть два. На старте 10 карт в руке, между раундами добираешь всего две, так что каждая карта на счету. Поле делится на три ветви: Сталь, Разум и Скрытность. Они бьют друг друга по кругу, как камень, ножницы, бумага. За ход можно положить карту, спасовать или вызвать чужую карту на поединок. Есть карты рубашкой вверх: например, Провал, тварь, которая прячется за коврами и съедает того, кто к ней прикоснётся. На карте подпись: «Не трогай ковёр».

В демо две стороны: орден Варлодов и Монстры армии Сарака.

Грабля первая: эвристики, подобранные под одну колоду

Первая версия Полководца была набором правил поверх Ветерана: «береги руку», «не лезь в проигранный раунд» и так далее. На пробных колодах он обыгрывал Новобранца в 71% партий. На настоящих картах Варлодов только в 55%. Правила были подогнаны под конкретные карты и ломались на других.

Поэтому я перешёл на поиск Монте-Карло: бот перебирает свои лучшие ходы и для каждого много раз быстро доигрывает партию до конца. Такому поиску всё равно, какая колода.

Грабля вторая: шум

Чужую руку бот не видит, поэтому вместо неё подставляет «болванки» средней силы. Первые версии раскладывали эти болванки для каждого кандидата заново. В итоге 8 прогонов на ход тонули в шуме, и «спасовать с первого хода» набирало столько же, сколько лучший ход. Полководец проигрывал Новобранцу: выигрывал только 42%.

Помогло одно: проверять всех кандидатов на одних и тех же раскладках и с одной и той же случайностью. Тогда разница между ходами видна, а шум одинаковый у всех.

Грабля третья: бот думал, что соперник тоже умный

Поиск считал соперника разумным. При перевесе в несколько очков Полководец охотно пасовал, ожидая, что соперник тоже встанет. А Новобранец не встаёт, он докладывает карту и забирает раунд. В итоге против Новобранца Полководец выигрывал реже, чем Ветеран: 54% против 66%. Теперь пас разрешён, только если его допускают простые правила Ветерана.

Баланс: Джозеф, который побеждал слишком часто

Баланс проверяют те же боты: Ветеран против Ветерана, Варлоды против Монстров, 800 партий. Норма для героя около 50% побед. Джозеф Хансвел, варлод-мститель, даже после первого ослабления выигрывал 73%. Пришлось резать второй раз: сила по ветвям была 13 и 10, потом 12 и 9, теперь 11 и 8. Дело было в его свойстве «Предвидение»: оно и так делает его поединки дешёвыми, поэтому резать пришлось силу, а свойство я оставил. Крупного дракона ростом с пятиэтажный дом тоже пришлось ослабить.

Что вынес

Бот, который подсматривает карты, меряет не ту игру. Мой видит ровно то, что игрок на экране.

Если умный бот проигрывает глупому, сначала ищи шум в собственных замерах, а уже потом ошибку в логике.

Баланс без сотен автоматических партий не сделать.

Демо уже можно погонять в браузере, название игры выше. Если делали ботов для своих игр, расскажите, на чём спотыкались вы.

Показать полностью
1

Писал ИИ-мастеру самые скучные ходы. Он отвечал вот так⁠⁠

Я вожу с нейросетью текстовые ролевые партии. Решил проверить, что она сделает, если играть как самый унылый игрок на свете: «осматриваюсь», «говорю привет», «иду к кофемашине». Ждал описаний бескрайних полей и загадочных теней. Получил вот что. Текст мастера не правлен, только обрезан.

Ад, очередь на распределение.

Я: «Говорю: я не умер, я просто зашёл».

Мастер: Старушка за твоей спиной поджимает губы и тихо, но отчётливо произносит: «Молодой человек, тут все так говорят. Я вот тоже „зашла“ — в прошлый вторник. И ничего, стою в очереди».

Комедийное фэнтези, ворота замка.

Я: «Говорю стражнику, что я король».

Мастер: «Кто тут король?! Я только что подписал указ о том, что король — это я, и я не намерен это обсуждать!» […] Это указ о том, что с сегодняшнего дня все бутерброды в королевстве должны быть круглыми.

Космическая станция.

Я: «Говорю: привет».

Мастер: «Приветствие принято. Однако регламент требует пояснения по факту нажатия кнопки». […] Дэн коротко усмехается, качает головой и тихо произносит: «Он у нас такой. Пока не объяснишь — не отстанет».

Первый день в офисе.

Я: «Иду к кофемашине».

Мастер: На корпусе, рядом с кнопкой двойного эспрессо, кто-то нацарапал ключом короткое слово — «не надо». […] «А потом уволился. Но это, наверное, просто совпадение».

Таверна в Вольгорде.

Я: «Говорю: привет».

Мастер: «Смелый, — говорит он, разглядывая тебя с ног до головы. — Или глупый. В Вольгорде это часто одно и то же».

Офис тёмного властелина, в четверг проверка.

Я: «В четверг проверка? Тогда в четверг я заболею».

Мастер: «Заболеть в четверг не выйдет. У нас тут болезнь — это справка от некроманта, а он выдаёт их только по вторникам. И то если в очереди не больше трёх человек».

Трактир, у нового хозяина есть кот.

Я: «Эй, рыжий! Будешь мышей ловить — назначу управляющим».

Мастер: Кот на твой окрик не оборачивается, только кончик хвоста дёргается […]. Глаша […] фыркает: «Управляющим он будет, как же. Этот рыжий у меня три года соль со стола таскает, а ты ему должность пророчишь».

Скучнее всего мастер отвечал в хорроре и подземелье: там на «осматриваюсь» он честно описывает темноту и сырость. А в аду и в офисе банальный ход для него как подарок.

Какой самый скучный ход вы бы дали нейросети, чтобы её сломать? Могу прогнать и принести ответ.

Показать полностью
0

Я соврал персонажу нейросети, и он меня сдал⁠⁠

Я написал персонажу нейросети: «Мы никому ничего не должны». Епископ кивнул на меня и сказал хозяйке дворца: «Врёт. […] Врёт и глазом не ведёт. Хорошая школа».

Мой посол действительно врал: его королевство должно империи, это было записано в описании героя. Обычно нейросеть верит игроку на слово и подстраивается под него. Здесь мастер запомнил факт и дал персонажу меня поймать.

Я руковожу проектом, где ролевые партии ведёт нейросеть, а код пишут и проверяют ИИ-агенты. Дольше всего мы бились с сюжетом. Сама по себе модель либо вежливо идёт за игроком, либо выдумывает всё сразу. В одной ранней партии про уютную чайную на втором ходу появились подозрительные ящики с наклейкой «Хрупкое», а на четвёртом котёнок оказался ключом. На вопрос «хочется ли играть дальше» такие партии получали 2,9 из 10.

Что помогло

Тайный план. Перед первым ходом мастер пишет себе план, которого игрок не видит: чего хочет каждый персонаж и чего он не потерпит, что случится само, если герой не вмешается, какие детали выстрелят потом. На 48 партиях с оценкой вслепую сюжет с планом получил 6,1 балла, без плана 4,75.

Напоминание о жанре. Правила из начала разговора модель забывает где-то между шестым и двенадцатым ходом, и уютная чайная съезжает в криминал. Теперь в каждом ходе есть скрытая строка с жанром. Жанр держится в 83% партий, раньше держался в половине.

Сюжет по счётчику. На фразу «мир живёт сам» модель отвечала по-разному: то подбрасывала событие каждый ход, то не подбрасывала никогда. Мы отдали это скрипту. У партии есть шкала «Сюжет»: событие раз в 10, 7, 5, 4 или 3 хода, а на какой именно ход оно выпадет, решает хеш, чтобы игрок не угадал. В этот ход мастер получает скрытую пометку «СОБЫТИЕ», в остальные пометку «новых событий нет, покажи последствия». Лишние события в обычных ходах были в 12 партиях из 12, стали в 5.

Память. Мы дали 14 моделям историю с 15 фактами (кто ранен и в какое плечо, сколько марок в сумке, у какой подковы нет гвоздя) и потом расспрашивали о них, не зная, где какая модель. Модели, дообученные специально под ролевые игры, сыпались: одна назвала героиню «сынок», другая насчитала «двадцать один. Осталось сорок». Мастера по умолчанию выбрали по этим тестам, у него 8 фактов из 10.

Что получилось

Потом я сыграл десять коротких партий: хоррор, придворную интригу, такси в три часа ночи, ад со службой поддержки. Играл по-разному, где серьёзно, где нагло или глупо, и выписывал места, где удивился сам. Вот ещё два. Текст мастера не правлен, только обрезан.

Такси. Охранник предупредил героя, что с этого адреса каждую ночь заказывают машину, а водители потом пропадают. Пассажирка не называет адрес, и я молча свернул к отделу полиции.

Я: Торможу у отдела полиции. «Выходите». Не оборачиваюсь, смотрю в зеркало.
Мастер: […] Она стоит на тротуаре, не закрывая дверь, и говорит в салон: «Ты не первый, кто сюда свернул. Все так делают». […] «Передашь тому, кто будет после тебя», — говорит она и захлопывает дверь.

Ад. Сантехник Петрович попал туда вместо соседа-тёзки, у которого статья «зависть к соседскому паркету». Я ляпнул, что у меня-то линолеум. Через ход операторша Клара отчитывает беса, который предложил оформить Петровича анонимом:

Я: «Тогда списывайте того Петровича! Он в очереди не стоял, а я стою. Кто первый встал, того и тапки».
Мастер: […] «Ты дурак, Грызь, — говорит она почти ласково. — Если я его как анонима проведу, он потом отсюда до второго пришествия не выберется. А он не наш. У него линолеум».

Ещё через три хода менеджер ада посмотрел на Петровича и спросил: «А вы, я так понимаю, сантехник?» У них там течёт котёл.

Если вы пробовали заставить ChatGPT или другую модель вести вам партию, расскажите, на каком ходу она у вас сломалась. Ссылка на игру в профиле.

Показать полностью
3

Город, который забыл своё название⁠⁠

Город, который забыл своё название

Делаю сайт с текстовой ролёвкой, где мастера нет, вместо него программа: https://rpgstudio.ru. Пишешь, что делает герой, она отвечает сценой.

Вот как она начала одну из моих партий:

Город Эйфориум давно утратил свое название, превратившись в лабиринт ржавых ферм и облупившихся стен, где ветер воет в прорехах бетона. Ты стоишь на крыше бывшей библиотеки. Внезапно с юга, от разбитого моста, поднимается столб густого черного дыма.

Мир партии она держит в памяти. Если три хода назад ты соврал стражнику, стражник это помнит.

После регистрации дают 20 чернил, это примерно 30 ходов. Дальше ход стоит меньше рубля.

Ругайте в комментариях, я читаю.

Показать полностью 1

Мастер, который помнит, где лежит ваш меч: делаю текстовую ролевую игру с ИИ-ведущим⁠⁠

Знакомая история: хочется поиграть в настольную ролевую игру, а собрать компанию невозможно. У одного работа, у второго дети, третий «давайте в субботу» говорит уже полгода. Про мастера вообще молчу: это отдельный редкий вид человека, и он всегда занят.

Я решил, что если мастера нет, его надо придумать. Так появился RPG Studio.

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

Как выглядит партия

Открываете сайт (или приложение), описываете мир и героя парой предложений и играете. Пишете, что делаете, мастер отвечает сценой. Можно самому начать историю, а можно попросить мастера открыть сцену первым: тогда вы просто входите в трактир, где что-то уже происходит.

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

Вы: Осторожно приоткрываю дверь склада.
Мастер: Петли вздыхают так, будто их не смазывали со времён прошлого короля. Внутри пахнет мокрой пенькой и чем-то сладким. У дальнего ящика сидит Ирен и пересчитывает монеты. Не поднимая головы, она говорит: «Дверь закрой. Сквозняк, а у меня тут долги считаются». Раненое плечо отзывается тупой болью. Что вы делаете дальше?

Главное: мастер не забывает

Обычный чат с нейросетью через полсотни сообщений начинает путать имена и терять вещи. Здесь мир записан отдельно от разговора. Есть панель «Мир партии»: где вы находитесь, что у вас с собой, кто рядом. Если вы подобрали ключ в третьей главе, мастер помнит про него и в десятой. Плечо ранено вчера, значит, оно ранено и сегодня.

Ещё один отрывок, тоже выдуманный:

Вы: Достаю ключ, который взял у стражника, и кладу на стол перед Ирен.
Мастер: Ирен смотрит на ключ, потом на вас. «Это от восточных ворот. Ты понимаешь, что за него вешают?» Она накрывает ключ ладонью. «Но раз уж ты его принёс, значит, у нас общий враг».

Что ещё умеет

  • Выбор мастера. В онлайне доступно семь нейросетей разного размера и характера, от компактных до огромной на 405 миллиардов параметров. Если одна уходит от острой сцены, можно взять другую.

  • Тринадцать тем оформления: от спокойных тёмных до «Киберпанка», «Нуара», «Пустоши» и «Тишины» (это для хоррора).

  • Таверна: игроки выкладывают своих героев, персонажей и миры, а остальные берут их в свою партию.

  • Картинка профиля героя: нейросеть рисует портрет по описанию.

  • Не понравился ответ мастера? Кнопка «заново» переписывает последний ход.

  • Кости для D&D и пара мини-игр, например покер на костях с трактирщиком.

  • Приложение для Android (версия 0.51, скачивается с сайта). Там мастер может работать прямо на телефоне, без интернета и бесплатно.

Сколько стоит

Офлайн на телефоне бесплатно, без подписок и внутренних покупок. Онлайн-мастер считается на серверах, а это стоит денег, поэтому там расход идёт во внутренней валюте, «чернилах» (1 чернило = 1 ₽). При регистрации дают 20 чернил в подарок. На основной модели ход в начале партии стоит около 45 копеек, так что подарка хватает примерно на три десятка ходов (в длинной партии ход дороже). Хватит, чтобы понять, ваше это или нет.

Что пока сыро

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

О чём прошу

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

Заходите: https://rpgstudio.ru

Показать полностью 7
Отличная работа, все прочитано!

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества

Недвижимость и ремонт

Теги

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

Сообщества