Official Roblox Dialogue System and Dialogue Editor Beta
Greetings, developers. Let’s talk. For a while now, Roblox has had a C++ oriented dialogue system. It’s not great. It’s very brittle, slow, uncustomizable and linear. I don’t like it. You probably don’t like it. It’s just not great. So, why am I mentioning this? Well, as part of my work here at Roblox this Summer as an intern, I was assigned to create a new dialogue system implemented in Lua. We decided not to use C++ because, well, it’s not necessary. The new system works in both normal games and in Experimental Mode games. It comes with a fancy editor. In fact, why don’t we just talk about the features?
Features of the new Dialogue System
- Support for normal mode and Experimental Mode
- Allows non-linear conversations, such as looping backwards in the conversation to a previous dialogue node
- Allows conditional flow in conversations, giving you the power to script functions that determine the availability of responses
- Implements a way for NPCs to have different responses based on different conditions, allowing them to greet you differently or say different things
- Has a system to dynamically replace text in the dialogue by utilizing a table of DynamicTextFunctions (which you can write your own functions for). Now NPCs can greet you by name!
- Each dialogue node can execute arbitrary code upon being encountered, such as giving you a tool or powerup, or teleporting you somewhere else for a fee
- Each dialogue node can store arbitrary data which is passed into DynamicTextFunctions, actions, and conditions, allowing you to customize behavior
- Has an abstract interface, allowing you to customize the look and behavior of the client-side however you like
- Comes with a default interface, redesigning a classic Roblox look and allowing you to jump start projects
- Allows NPC phrases to be chained into one another for such a purpose as a “next” button like in Zelda where text is split between multiple boxes
- Fully open source and well-documented
And maybe more that I can’t remember right now. If there’s something you think is missing, go ahead and let me know. Your feedback will help me iterate on the design and make an even better product. But all this isn’t even the best part, oh no, the best part is this:
The Dialogue Editor
This plugin allows you to visually create and edit dialogue graphs. It has shortcuts, hotkeys, and many more features in order to make the creation of deep, complex dialogue graphs very easy. It’s also easy to create simple graphs, too.
Where do I get it!?
Well, if you’re not sure about it yet, see the results of its use in this neat little demo I put together: https://www.roblox.com/games/914698145/Dialogue-Demo#!/game-instances
If you’re totally ready to go, here’s the plugin itself: https://www.roblox.com/library/847896485/Roblox-Dialogue-Editor
The default interface is not 100% complete, yet. It is still in development and subject to change. As it’s updated, I’ll provide instructions on how to acquire the most recent version.
Thanks for listening! Please let me know what kind of feedback you have after trying it out. I’m looking forward to iterating on the design with all of your input.