So I’d like to get some of the community’s thoughts on this. So, I’m looking to add in a dialogue system for a game. One where players interact with a character, have dialogue choices and responses, and an NPC displays information in return.
When it comes to managing that backend, I know there’s a variety of options out there, but is there one that people find the most reliable and useful? For instance, I’ve liked Davidii’s Dialogue Editor plugin, and there’s also the built-in Dialog and Dialog choice class.
Out of all these options, is there an out of the box solution that most people recommend or would view as consistently reliable? It’s also nice to have features like customizing the GUI or adding dialogue trees too if possible.
If you have knowledge with Luau, you’d probably be better off just programming your own one, open source ones are good but if you can program your own one you’ll be able to add all the features that you want.
If you need help with it, I’d be happy to help you out with programming it.
The most versatile and generalized approach, whilst also supporting visual programming, would probably be using behavior trees. They’re super easy to use, especially so when there’s a module (and a visual editor!) already released by Defaultio. You can simply evaluate the tree everytime a player sends an input, and it should suffice. For more complex behavior, you’re probably more interested in programming it yourself.
What are you more interested in? Visual programming? And what specific behavior are you looking for? Original question is a bit too broad to properly answer IMO.
I’m currently working on a new dialogue system that uses attributes and ObjectValue Instances, the final product when finished should allow for a multitude of dialogue triggers including ProximityPrompts, Touched events, BindableEvents and just about anything else that could be useful for triggering a dialogue prompt.
Along with that I’ll ensure that it has support for non-linear/recurring dialogue (like going back to a starting dialogue after a prompt) along with camera panning, event connections, and anything else that might be useful for an RPG game.
Once fully finished I plan on publicly releasing it, ideally it will be one of the easiest to use available and should be helpful for any developer on this site. When it’s done I’ll make sure to link it here.
If you’re writing a custom one and want some inspiration for how to structure things, here’s how I structured my tree
click to expand
DIALOG_TREES = {
-- Example dialog
-------------------------------------------------------------------------
IntroDialog = {
Intros = {"What can I do for you, traveler?"},
Options = {
[1] = {"Who are you?",{"I am a merchant"},'IntroDialog'},
[2] = {"Where am I?",{"Where do you think?. Take a look around!"}},
[3] = {"Let's trade",function()
print(9+10)
-- custom logic here
--[[
if whatever then
return {{"no, go away"}}
else
return {{"yes... let's keep talking"},'IntroDialog'}
end
]]
return {{"Sorry, I can't trade right now."},'IntroDialog'}
end},
[4] = {"Tell me a story",{"Have you heard the one about the man who really liked apples?"},'AppleStory'}
}
},
-------------------------------------------------------------------------
AppleStory = {
Intros = {"There once was a man who liked apples."},
Options = {
[1] = {"Continue",{"He ate many apples every day. All he ate was apples",
"One day, this man died.",
"A few years later, an apple tree started to grow on his grave."}}
}
}
}