Проект: 🪩 Диско инферно! Беседуем с башкой как в «Disco Elysium»  Публичный пост
9 марта 2025  1743
ОХУЕННО
🪩 Диско инферно! Беседуем с башкой как в «Disco Elysium»
https://github.com/coignard/disco-cli

Я требую объяснений!

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.

Первую версию набросал на один вечер, и она уже радовала меня своими результатами. Случались забавные диалоги:

Думающее мясо с тревогами и налогами, всё так
Думающее мясо с тревогами и налогами, всё так

Пару вечеров спустя довёл внешний вид симулятора диалогов до ума и прикрутил звуки из оригинальной игры:

Звуки, к сожалению, в репозиторий гитхаба не включил из-за копирайта, но они легко гуглятся.

Покажите мне диалоги!

Да, собственно, ради чего мы все здесь и собрались.

Скажем, вот:

Или вот ещё:

И ещё:

Ещё:

И напоследок:

В общем, развлекайтесь! Надеюсь, фанаты дискача оценят :-)

22 комментария 👇

Шикарно было бы такое увидеть в ризонинге LLM

  Развернуть 1 комментарий

@mikawa, Что ты имеешь в виду?

  Развернуть 1 комментарий

@mikawa, если вдруг имеется в виду поддержка LLM, проект изначально построен вокруг этой идеи :-)

  Развернуть 1 комментарий

@coignard, имеется в виду, что модель типа R1 или о3, которая думает перед тем, как дать ответ, делает это в формате совещания с внутренними субличностями.

  Развернуть 1 комментарий
Владимир Капаев Собиратель билдов Satisfactory и GoatSim 10 марта в 09:09

YOUR_CODE_BETRAYS_YOUR_DEGENERACY = True

Хе-хе )

  Развернуть 1 комментарий

@tihoxodka, Головомер гордится тобой

  Развернуть 1 комментарий

Есичё, на GOG.com сейчас Диско Элизиум с 75% скидкой продаётся. Сам на выходных купил, прощевайте!

  Развернуть 1 комментарий

Скорей бы порт на Neuralink...

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

интересно можно ли найти реплики в файлах игры и на них обучить модель. или нету смысла в этом? или даже сделать по агенту для каждой личности

  Развернуть 1 комментарий

Офигенно! Не хватает только описания на github.

  Развернуть 1 комментарий

Тоже уже неделю прохожу Диско Элизиум и после поста захотелось также. Сделал:

  • На основе клифтон теста и тому что про меня знает GPT, попросил его сделать мой портрет из навыков диско элизиума
  • Собрал из этого GPTs, назначил чтобы комментировал ситуацию и предлагал варианты в стиле
  • Теперь по запросу через @ зову его комментировать диалоги. Получается веселее решать задачи :)

  Развернуть 1 комментарий

Как жить тем, кто не может захостить и запустить.. :)

  Развернуть 1 комментарий

@uthersdottir, ТЕХНИКА [Сложно: Неудача] - Я подвёл вас, мессир...

  Развернуть 1 комментарий

@coignard, а можно гайд? Ну типа куда апи кей вставлять, и что вообще подписка нужна)

  Развернуть 1 комментарий

@uthersdottir, я почти начал переделывать в телеграм-ботика, но идет пока сложно, не хватает опыта

  Развернуть 1 комментарий

@cc00ffee, очевидно это должен быть не один бот, а по числу субличностей плюс один дирижер (надеюсь, по имени Horrific Necktie)

  Развернуть 1 комментарий
Oleg Brezhnev Фуллстек-Разработчик 10 марта в 08:37

блин а можно такое в копайлот запихать, прикольно

  Развернуть 1 комментарий

Огонь проект! Я максимум додумался попросить ЧатДжипити поиграть со мной в ДЭ. Пошел общаться.

  Развернуть 1 комментарий

Весь день общаемся с этими товарищами, огонь! А есть интересно какой-то простой способ как веб-приложение это захостить? Хочу дать сестре поиграть, а она с питоном не очень.

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий
Evgenii Kochanov Анализирую данные 11 марта в 08:40

Звёздочкой поддержал

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб