Disco elysium дерево диалогов
The official Reddit community for Disco Elysium.
Hello r/DiscoElysium! I’m here to share a pet project I started many months back: Disco Reader.
What is Disco Reader?
(points to the title) It’s an attempt at building a simple search engine and text visualization tool for all the conversations that take place in Disco Elysium.
You can find it as a web app here: https://disco-reader.gitlab.io/disco-reader
(Sorry mobile users, it’s not meant to be used on mobile at all. You can try it on landscape mode, but I don’t recommend it. I would recommend using the web app on a computer.)
How does the search work?
Simply key in some search terms into the input text fields and hit the ‘Search’ button. Any results will appear in the list below as a pair of IDs separated by a — . The number before the — is the conversation ID and the number after is the corresponding dialogue ID. For example: 1122-132 , where the conversation ID is 1122 and the dialogue ID is 132. You can also search by character. In-game, a character is referred to as ‘Actor’.
You can sort the search result list by alphabetical order, or by relevance score. How relevant a search result is calculated via the BM25 algorithm and is represented by the numerical values you see beside each search result.
How does the text visualization work?
Key in the conversation ID that you want to visualize and hit the ‘Create Graph’ button. The tool will visualize all the dialogues within that conversation as a directed graph. Each node in the graph represents a dialogue ID. It usually «flows» from left to right, but in more complex graphs, the graph can go all over the place sometimes. ¯\_(ツ)_/¯
Some graphs can also take a while to build. Just wait a bit. (The really complex ones should take under a minute. If it takes longer than that, then it’s possible the app died because it exceeded its operation quotas. Oof.)
Once you have built a graph, you can click and drag to pan the graph. You can hover over a node to see some details, and click on a node to see full details. You can also zoom in/out using the scroll wheel.
There are five types of nodes:
- Blue Circle → Uncategorized. These nodes are placeholder nodes, start nodes, hub nodes, redirection nodes, etc.
- Yellow Circle → Dialogue. These are dialogue lines.
- Purple Circle → Variable. These represent some kind of in-game variable: true/false, counters, etc.
- Red Square → Skill Check. These represent skill checks: passive and active.
- Black Star → External. These are entry nodes to another conversation graph.
A graph will look something like this:
That’s part of the graph for the conversation with Joyce Messier about The Pale.
Why did you build this?
Why not? Lol. I thought it would be fun and interesting to see how the conversations would look like once visualized as a graph.
How did you build this?
I broke the project down into three main areas: 1) initial data extraction and parsing, 2) building the search engine (indexer), and 3) graph visualization and user interface. The entire project was done using JavaScript.
- Initial data extraction and parsing: I needed a structured export of all the conversations in the game. The exact structure didn’t matter to me. I didn’t know enough of UABE or the Unity Engine to do this, so I did the first thing most people would do: I googled to see if someone made one already lol. I found this github project: DiscoTranslator and learnt that the plugin has a built-in database export feature — awesome!
Maybe one day I’ll experiment with a fork of the project but that’s a topic for another time. Once I had the data to work with, I had to study it a bit to get a feel for how stuff is laid out.Post-TFC Edit: I now use AssetStudio to extract the dialoguebundle myself. From there, it’s just lots of processing to get everything into mongoDB . - Building the search engine (indexer): I used Lunr.js to build the index. The data I used to do this is already prepared in the previous step. What’s left to do are steps like stopword processing, punctuation removal, combining dialogue strings, etc. Stemming is handled by Lunr.js (it uses the Porter Stemming algorithm ). The index is pre-built as needed (when I feel like updating the dialogue corpus, or when there is a content update for the game). The pre-built index is then loaded by a separate microservice because it’s too large to include with the web app. The index is around 15.6MB while the original data is around 320MB. There are obviously more powerful tools out there, but for this project, Lunr.js was enough.
- Graph visualization and user interface: My framework of choice is Vue.js . For the graphing, I used vue-cytoscape , the Vue flavoured version of Cytoscape.js . The graph layout algorithm I used is the Klay algorithm which determines how the nodes are placed in the graph. The rest of the user interface is just BootstrapVue .
That’s the gist of it, I think. Can you re-create this for other similar purposes? Definitely! Take a look at the example projects on the Cytoscape.js website.
This was a fun project to work on (which I also procrastinated on numerous times because of life) and I hope this little tool will be of interest to some of you. Enjoy! C:
Edit: Here are some fun keywords to search:
Edit 2: Added «how did I build this» section.
Edit 3: Added more details
Edit 4: 3 months later edit (post TFC), added reference to AssetStudio for data extraction
Источник
Disco elysium дерево диалогов
Если ты, дорогой мой детективишка, проходишь впервые путь становления и возвращения легенды (т.е. впервые играешь), то лучше не читать данное руководство. Сначала выбери стартового героя из трёх предложенных. Я бы предложил взять Мыслителя, так как так больше узнаешь о мире, в котором оказался, о реальности его и бездне, скрывающейся внутри души твоей.
Данное руководство посвящено изначально самому её автору, а точнее мне. Сделано это с целью помощи мне при перепрохождение данного шедевра в будущем. Искать каждый раз нужную информацию тяжко, и тем более в закладках браузера, где уже и так тонна всего валяется. Поэтому было решено сделать это именно здесь для упрощения самого поиска. Ну и, поскольку делаю это в Steam’е, то решил ещё и поделиться с вами собранной мной информацией, раз уж я это и так делаю. Let’s go.
- Мысли влияют на варианты фраз в диалогах,
- Также они дают различные бонусы, например:
- увеличение навыков,
- открытие всех белых проверок,
- влияние на интерфейс,
- открытие новых механик;
Пройдя почти до финала, я решил задуматься над мыслями, которые могли бы дать мне какие-то преимущества. Поэтому я начал мысли, уже особо ненужные, заменять на другие. В итоге я пришёл к выводу, что нужно узнать о мыслях всё, если хочу перепройти эту игру ради достижений и кайфа. Для справки: мыслей 53, их все достать почти невозможно за одно прохождение и ОП тоже не бесконечны. В итоге я полазил везде, где только смог, и нашёл много информации, что неудивительно, если посмотреть на популярность Disco Elysium, однако вся собранная мной информация противоречила сама себе. Ну и, поскольку я любитель поработать с Excel’ем и составлять таблички, ведь таблички — это мощь, то, собственно, и создал табличку, потратив немало времени, чтоб собрать всю нужную, по моему мнению, информацию в одном месте. И вроде как, даже достоверную. Ниже прикрепляю ссылочку на Google-диск, где хранится табличка мыслей и источники:
Рекомендуется Excel-файл скачать, так как Google-диск подпортил оформление, а мне влом его снова править.Также рекомендую читать примечания в самой таблице, чтобы разобраться в моих обозначениях.
Ссылка на табличку мыслей [docs.google.com]Замечу, что в ней могут быть ошибки как мои, так и информативные (всё-таки все мысли самолично я не собирал), поэтому буду рад, если укажите на них (если они есть, конечно). Также я не вписывал в таблицу ни время их усвоения, ни какие они дают бусты во время усвоения. Лично не вижу смысла в этой информации, так как табличка оказалась достаточно обширной. Почти все мысли усваиваются за пару часов, а буст во время изучения временный. Хотя, если вы потный хардкорщик, то некоторые из этих временных бустов окажутся полезными. Например, Палец на кнопке катапульты. Во время изучения он даёт Авторитет +2 и Внушение +2 на 2 часа. Однако после этого суицидальные мысли по вечерам. Нужно ли вам это, уже не мне решать.
Что ж, тут поговорим о мыслях, которые стоит качать в первую очередь при почти любом созданном вами герое, по моему мнению, конечно.
Итак, вот списочек:
1. «Бомжекоп». Естественно, его мы изучаем чуть ли не самым первым. Реалов не так уж и много в начале. Это как в России, ради каждого реала готовься убивать. Баночки пособирал, сходил и продал.
2. «Жамевю (дереализация)». +1 ОП за каждую проверенную сферу. Пробежался, протыкал все зелёные, синие кружочки и т.д. до 4-го дня, и забыл мысль.
3. «Едкое ухо». 300 ОП на дороге не валяются. Это целых три ячейки в Шкафчике, целых три улучшения.
4. «Настоящее художественное образование». Ох, искусство — это больше, чем граффити на стенах разрушенного города. Это крик души. Это символ свободы, дающий +10 ОП при срабатывании Концептуализации. Да-да, уважай искусство.
5. «Центр «Тили-Тили-Бом»». Знания — это сила. Знаешь столько фактов, загадок, легенд, но ничего о себе и мире? Серьёзно? Даже для расследования они бесполезны. Тогда для чего они нужны, эти ваши знания? Энциклопедия: пассивные проверки дают +10 ОП и +2 реала.
6. «Джемрокская охота». Как ковбой, взламывайте контейнеры и получайте больше, чем раньше.Замечу, что данные мысли можно получить в начале очень легко и просто, кроме одного —Центр «Тили-Тили-Бом». Его можно получить только спустя три дня с начала бадуна.
В данный список я не добавил ещё несколько мыслей, которые приносят деньги. Но поверьте, с мысли «Бомжекоп» хватит денег по горло, если их тратить разумно, конечно. Хотя, если ты выбрал истинный путь бомжа, то и деньги тебе ни к чему.
Также замечу, что некоторые мысли из Шкафчика практически бесполезны в своём роде. Например, Боядейро, дающий +2 к ИНТЕЛЛЕКТу при курении. Ну, полезен он будет, если вы курите как не в себя, конечно. Или, если вы решили что-то прокачать из навыков ИНТЕЛЛЕКТа, так как при пропадании эффекта курения навык всё равно останется вкаченным.
Ну и сладкое напоследок. ВАЖНО запомнить ещё кое-что. Мысль «Никаких гарантий» реально не даёт никаких гарантий, что ты пройдёшь концовку без пожара в пятой точке. Внимательно читайте, какие временные бонусы мысли дают во время их усвоения.
https://youtu.be/dDOjrJhXuvMЕстественно, я сейчас скажу что-то СТОЛЬ очевидное, но всё-таки блесну водички. Стартовые билды лучше не брать при повторном прохождении. Они распределены не особо хорошо. Сделано это было для того, чтобы игрок поиграл и узнал саму игру, прочувствовал климат, реальность, дух города и персонажей. И если ему уж понравится игра, то сам уже при перепрохождение создаст нужного себе героя. Эта игра заточена под игроков, любящих почитать, подумать, осмыслить. Так что точно будет большинство играющих людей перепроходить эту книжку. Особенно ради Кимчика. Вот ты был хорошим копом, а теперь станешь плохим, чтоб посмотреть на реакцию прележного полицейского напарника.
Особо много говорить я здесь не буду. Просто прикреплю ниже ссылочку на хороший, на мой взгляд, сайт, где подробно, легко и красочно объяснили, что там с навыками, какие на что влияют, какие билды можно создать и так далее. Вперёд, закалённый в поисках себя, мой юный-юный детектив. Пора начать всё со старого похмелья и галстука.
https://wargm.ru/blog/11306/luchshie_bildy_dlya_disco_elysium_kakie_umeniya_kachatБуду очень рад, если кому-то, помимо меня, данное руководство помогло разобраться со Шкафчиком мыслей. Буду верить, что день был потрачен не зря. Если есть какие-то замечания, идеи или что-то ещё, я всегда рад их выслушать в комментариях или в ЛС.
В будущем, может быть, буду дорабатывать как табличку, так и само руководство, так как игра мне очень понравилась и затянула на парочку дней.
Источник