Dialog System - What do you think?

Hello guys, first post in the community :slight_smile:

Anyway, to the point: I’ve wandering around with the *best method to create a dialog system for my project using blueprint. I’ve seen all the known systems to do it, but none of this really convinced me, and then I came up with the idea of using Enum to store and choose sentences in the dialog.

*Where best I mean the best for MY case, just to be clear ;).

A few days ago I built a system using this, and the result was almost perfect for me, the only thing I can’t make at the moment is that if I want to, for example, change the color of a certain word, I can’t make it (at least I didn’t figure out a properly way).

For this example, I built a simplified version of the system.

Of course as you might notice, there are a lot of things not implemented (for example: reset the variables value each time you press F), but again, I built that simple network just to show the “system” and keep things simple, in other words; what matters is the concept :).

So! At this point, I would like to introduce some unknowns:


*1) The only big negative point of this system I can see, is that I don’t know a way to change the color of a desired word in the same final sentence. With an example:


As you see, we set the Enum, then get the result, convert to string and Append with a String Variable, in this case, a Name. So the result will be “Just a test Tiz”, for example.
The thing here, is that a didn’t figure out a way to stand out the name. I mean, of course there are way, but the name is supposed to be right after the sentence “Just a test”, you know, like a unique sentence. And due to the dynamic nature of the sentences (could be more or less lengthy), is complicated as you imagine.*

So I post this to check if anyone get a workaround for this and also, check if anyone see a big negative point of this system that something I have not thought yet.

I think that’s all!

The way they do the Name is usually by some sort of unique format like %t%. So “Just a test, %t%.” You use a Replace Substring to change %t% to your nameofplayer variable. You can set a variable up for your GET Array, and trigger a set on the variable when you want to switch to a new part of dialog. You could use a DoN to replace the pressed button count and a modified version of the counter to affect your get array, like counter + arraystartposition, get array. Your DoN would be controlled by how many dialog boxes you want to print out, and you would use a custom event to reset the counter.

Hey Dedrick, I didn’t know the existence of the replace node, awesome, indeed it’s way more useful than the append for this case.

I just tested this quickly (I know, EDialog start with 0 and DoN with 1 -error-, but this is just an example… :wink: ) and seems great and more optimized


Anyway, the “bad” point of this system (for me of course), is that you can’t see the sentence, or that if you want to mix sentences for a dialog or from different enum, then this becomes messy. This is another reason I use the enum for dialog: you can go to the content browser and see all your enum dialogs conveniently arranged; this is very useful for translation for example, as you do it much quickly.

Even with this, I still can’t change the color or other property of a desired word (like the name) in the final sentence. Let’s see if anyone figure out a way.

So! One thing I’ll really keep is the Replace node, very very useful for me, thank you!