Я требую объяснений!
Disco Elysium — это игра такая. Замечательная игра. В ней главный герой растворил в спиртном свою память и на протяжении всего геймплея проводит расследование по тому, кто же он такой на самом деле. Ещё можно узнать, что за труп на дереве во дворе висит и как его оттуда снять. Но это не обязательно.
В тексте поста спойлеров не будет, однако я всё же настоятельно рекомендую предварительно пройти игру. Те, кто уже знаком с сюжетом и механикой игры дискача — вэлкам.
Рецепт безумия
Дискач (здесь: «Disco Elysium») я больше воспринимаю как интерактивную книгу, потому как большую часть игры вы проведёте за чтением диалогов и совершением выборов. Всё почти как в настоящей жизни. Разговаривать, к слову, случается не только с людьми, но и с самим собой. У главного героя есть двадцать четыре навыка, разделённых на четыре категории. Это не просто навыки: это полноценные субличности, с которыми можно завязать разговор и которые иногда самопроизвольно будут вклиниваться в диалоги.
Примено следующим образом выглядит вырванный из контекста разговор между несколькими субличностями главного героя:
Блин, вот бы можно было не просто выбор в игре делать, а самому говорить с этими товарищами! Выглядит не шибко сложно, особенно если запихать всё это дело в CLI, не заморачиваясь над разработкой интерфейса. Остаётся теперь лишь выбрать генеративный ИИ по вкусу и реализовать задуманное.
There is nothing
Only warm, primordial blackness.
Забавно, что реализацией задуманного я занял себя с пару недель тому назад, когда валялся с гриппом и температурой под сорок. Пытался себя хоть как-то отвлечь от приключившейся болезни.
Решил всё это дело забабахать на питоне, потому как его худо-бедно знаю, и работать мне с ним — сплошное удовольствие. Итак, нам понадобится:
- Библиотека
anthropic
для работы с API Claude — 1 шт. prompt_toolkit
для кастомного оформления поля для ввода текста — 1 шт.pygame
для воспроизведения звуком — 1 шт.rich
для красивого вывода текста — 1 шт.
Claude умеет генерировать XML, если о том его попросить в системном промпте, чем я и воспользовался: каждая субличность отвечает в отведённом ей XML-теге, и мне остаётся лишь распарсить ответ, полученный от Claude.
Первую версию набросал на один вечер, и она уже радовала меня своими результатами. Случались забавные диалоги:
Пару вечеров спустя довёл внешний вид симулятора диалогов до ума и прикрутил звуки из оригинальной игры:
Звуки, к сожалению, в репозиторий гитхаба не включил из-за копирайта, но они легко гуглятся.
Покажите мне диалоги!
Да, собственно, ради чего мы все здесь и собрались.
Скажем, вот:
Или вот ещё:
И ещё:
Ещё:
И напоследок:
В общем, развлекайтесь! Надеюсь, фанаты дискача оценят :-)
Шикарно было бы такое увидеть в ризонинге LLM
Хе-хе )
Есичё, на GOG.com сейчас Диско Элизиум с 75% скидкой продаётся. Сам на выходных купил, прощевайте!
Скорей бы порт на Neuralink...
интересно можно ли найти реплики в файлах игры и на них обучить модель. или нету смысла в этом? или даже сделать по агенту для каждой личности
Офигенно! Не хватает только описания на github.
Тоже уже неделю прохожу Диско Элизиум и после поста захотелось также. Сделал:
Как жить тем, кто не может захостить и запустить.. :)
блин а можно такое в копайлот запихать, прикольно
Огонь проект! Я максимум додумался попросить ЧатДжипити поиграть со мной в ДЭ. Пошел общаться.
Весь день общаемся с этими товарищами, огонь! А есть интересно какой-то простой способ как веб-приложение это захостить? Хочу дать сестре поиграть, а она с питоном не очень.
😱 Комментарий удален его автором...
Звёздочкой поддержал