Mini tech dive into procedural dialogue

Started by Legend, Mar 29, 2020, 12:26 AM

previous topic - next topic

0 Members and 1 Guest are viewing this topic.

Legend



This is the custom editor I've set up for my dialogue system. Since my game is 100% procedural, standard dialogue editors wouldn't work.


Every line of dialogue exists in a vacuum and is independent of other lines. The parameters associated with it are used by the system to procedurally decide what happens. I'm using a bitmask with 32 tags like "introduction" and "greeting." The tags mostly determine how the conversation flows. So for example if an NPC says something that is tagged as both "information" and "insult," the player's conversation wheel gets filled with lines thanking the NPC, lines asking for more information, lines relevant to being insulted, and lines that are a mix.


The second bit of information is how the line of dialogue is presented. If the player/NPC is angry they are more likely to say lines with higher anger values for example. These values also affect emotions internally with NPCs, potentially causing them to go "off script" if something is extreme. An extremely formal line in a black market or an extremely casual line in front of royalty will not go unnoticed.


All of the data and parameters in the screenshot are placeholders. I'll potentially increase it to a 64 tag maximum to make conversations feel less structured and I'll definitely add more presentation variables. Translations will take a lot of work so I might have to have fully separate dialogue lists per language.


One minor but cool thing about this system is that it allows real time conversations. For example a player could directly pick a line tagged with "greeting" and "insult" or they could say a greeting and quickly follow it up with an insult before the NPC responds.


the-pi-guy

So that's how you're handling it.  

Doing things the reasonably high quality tractable way I see.  ;)

Legend

So that's how you're handling it.  

Doing things the reasonably high quality tractable way I see.  ;)
Yup.

From a programmer point of view, I really wish I could stick with my original method where it was closer to an AI. From a manager point of view, this method is so incredibly awesome. Setting up the internal logic is quick and painless and adding additional lines is quick and painless.


I believe I'll only need a few hundred lines to make it functional and a few thousand to make it good. With even more, I'm hoping repetition will be very hard to notice.