Bro you are a fucking legend man. I really tried like 5-6 different tutorials and spend hours on hours trying on my own to do a decent dialogue system, nothing worked. And then a light in the dark called "Dave the Dev" came around and saved my god-damn ass xD. I'm pretty new to developing and your tutorial series isn't just showing the dialogue system, it explains how and why it works. Even the little "game" that you did with the two syntax errors that you hid were really nice for learning programming. Big shoutout man. And now I am heading to the other tutorials to let some comments there for the algorithm.
This is really impressive and I'm glad I found it! Thank you very much. I'm also developing an RPG game in Godot (actually converting an initial project from RPG Maker to Godot) and your library will be super useful to me. Thanks a lot!
Thank you for making a great tutorial video for the Godot community. I'm doing an ARPG. I need a dialogue between the characters and the boss in the level. Excuse me, can I use your plug-in for narration? The event in the level then triggers the conversation. If I want this effect, what do I need to do? Thank you again.
Sure, you're free to use it. The event in your game just has to call a public function in your dialog player that displays text data from your Story File using the included Story File Reader class.
Amazing video! Great content! Sorry, but noob question incoming: Can I trigger events depending on the dialogue choice ? Im quite new to godot, but found the animation player's ability to "Key" anything and be able to play it incredible. Is there a similar, kind of way to mark when to trigger what ?
I do! Here is some psudocode. I will also be covering conditional branching in a tutorial soon. 1. Put some JSON between tags with the choices as keys and the slot number as values. For, example, {"yes": 0, "no": 1, "maybe": 2}. The tags are arbitrary, your dialog player just has to get the text between whatever tags you make. 2. Extract the JSON from the tags in the dialog player. 3. Use the "parseJSON" function to convert the JSON to a Dictionary. 4. Have the dialog player iterate over the dictionary and display the options to the player. 5. Wait for the player to pick an option. 6. Get the slot number associated with the option the player picked. 7. Get the new NID associated with the chosen slot. 8. Load and display the next node via the newly selected NID. Hope that helps a bit. ^_^
Hey sorry I'm a bit late but is there a way to prematurely end the dialog? I'm trying to have a system where if you just walk away the dialogue ends for npcs
Thank you for your good work, I have some questions: For audio support I suppose something like this: Player You don't look so tough! /dialogVoices/audio1.mp3 func _play_node(): var audio = self._get_tagged_text("audio", raw_text) #passing variable to audio player How can I change the speed of text displaying to sync with an audio duration (lips sync)? 2. How can display several choices for any question?
Absolutely, in fact, ideas like this are the reason why the system is implemented the way that it is. 1. AudioSteams have a get_length() func that returns the length in seconds. From there it is easy to set the text speed on the body label such that it takes the same time as the audio duration. Look at the body_label script for an example. 2. For choices: Use something like Use JSON text here for choices and their associated Slot then have the dialog player convert the JSON to a Dictionary it can use to display the choices and follow the linked Slot.
@@DavetheDev Unfortunately, I was not able to implement a branch of questions in this example. Can you upload a sample story demonstrating this feature please?
@@ivailoburov1295 Hi Ivailo, I can give you a bit of pseudo-code here that might help you out. But, if you'd be willing to compensate me for the work, I have some time open for freelancing and I can make that for you. Email me at davidlipps.dev@gmail.com. 1. Put some JSON between the tags with the choices as keys and the slot number as values. For, example, {"yes": 0, "no": 1, "maybe": 2}. 2. Extract the JSON from the tags in the dialog player. 3. Use the "parseJSON" function to convert the JSON to a Dictionary. 4. Have the dialog player iterate over the dictionary and display the options to the player. 5. Wait for the player to pick an option. 6. Get the slot number associated with the option the player picked. 7. Get the new NID associated with the chosen slot. 8. Load and display the next node via the newly selected NID. Hope that helps a bit. ^_^
Sure thing, it's pretty easy. Just include the filepath to the image between custom tags in your node and have the dialog player extract the filepath and load the image to a TextureRect. I might do that soon in the Dialog player sub-tutorials I'm working on now.
It's still there, at the moment the image links are broken because I updated it, and it's pending update approval. It's called the "Godot Dialog System"
This tutorial will make a fine addition to my collection.
Bro you are a fucking legend man.
I really tried like 5-6 different tutorials and spend hours on hours trying on my own to do a decent dialogue system, nothing worked. And then a light in the dark called "Dave the Dev" came around and saved my god-damn ass xD.
I'm pretty new to developing and your tutorial series isn't just showing the dialogue system, it explains how and why it works. Even the little "game" that you did with the two syntax errors that you hid were really nice for learning programming.
Big shoutout man. And now I am heading to the other tutorials to let some comments there for the algorithm.
This dialog system is awesome ! I'm gonna test it right away !
This is such a great resource! Thank you
This tutorials will dazzle me by teaching me something I care about. Then I will teach others around me if they are interested. Thanks
How does this vid only have 1k veiws, it is fricking amazing, keep it up dude!!!
:)
Good to see you back man
This is really impressive and I'm glad I found it! Thank you very much. I'm also developing an RPG game in Godot (actually converting an initial project from RPG Maker to Godot) and your library will be super useful to me. Thanks a lot!
Thank you, i'm definitely going to be using this for my game!
This is excellent. Certainly will help a lot of people! :D
Thanks for the tool! You are a legend!
This is pretty helpful.
Thanks for this great video bro!!
please make a tutorial , making a dialog box using this addons...
Thank you for making a great tutorial video for the Godot community. I'm doing an ARPG. I need a dialogue between the characters and the boss in the level. Excuse me, can I use your plug-in for narration? The event in the level then triggers the conversation. If I want this effect, what do I need to do? Thank you again.
Sure, you're free to use it. The event in your game just has to call a public function in your dialog player that displays text data from your Story File using the included Story File Reader class.
@@DavetheDev thanks~:D
Amazing video! Great content!
Sorry, but noob question incoming: Can I trigger events depending on the dialogue choice ?
Im quite new to godot, but found the animation player's ability to "Key" anything and be able to play it incredible. Is there a similar, kind of way to mark when to trigger what ?
Does anybody know how to do the conditional aspect of this dialog system? I am not seeing any example of it on the github.
I do! Here is some psudocode. I will also be covering conditional branching in a tutorial soon.
1. Put some JSON between tags with the choices as keys and the slot number as values. For, example, {"yes": 0, "no": 1, "maybe": 2}. The tags are arbitrary, your dialog player just has to get the text between whatever tags you make.
2. Extract the JSON from the tags in the dialog player.
3. Use the "parseJSON" function to convert the JSON to a Dictionary.
4. Have the dialog player iterate over the dictionary and display the options to the player.
5. Wait for the player to pick an option.
6. Get the slot number associated with the option the player picked.
7. Get the new NID associated with the chosen slot.
8. Load and display the next node via the newly selected NID.
Hope that helps a bit. ^_^
Dave the Dev THANK YOU! You have earned yourself a new subscriber and lifelong supporter!
for some reason, the csv files don't load for me ;-;
Edit: You have to load the story file before the csv ^_^' I looked up on the github page
Yes.
Hey sorry I'm a bit late but is there a way to prematurely end the dialog? I'm trying to have a system where if you just walk away the dialogue ends for npcs
Wait nevermind, I just figured out that it was the text animation that prevented it from stopping
Can I use thoose assets in commercial project?
If you're talking about the Dialog System, sure, it's under the MIT License. You can use it for whatever.
@@DavetheDev ok, thank for the info
ily
Does this thing support branching dialogue?
Thank you for your good work,
I have some questions:
For audio support I suppose something like this:
Player
You don't look so tough!
/dialogVoices/audio1.mp3
func _play_node():
var audio = self._get_tagged_text("audio", raw_text)
#passing variable to audio player
How can I change the speed of text displaying to sync with an audio duration (lips sync)?
2. How can display several choices for any question?
Absolutely, in fact, ideas like this are the reason why the system is implemented the way that it is.
1. AudioSteams have a get_length() func that returns the length in seconds. From there it is easy to set the text speed on the body label such that it takes the same time as the audio duration. Look at the body_label script for an example.
2. For choices: Use something like Use JSON text here for choices and their associated Slot then have the dialog player convert the JSON to a Dictionary it can use to display the choices and follow the linked Slot.
@@DavetheDev Unfortunately, I was not able to implement a branch of questions in this example. Can you upload a sample story demonstrating this feature please?
@@ivailoburov1295 Hi Ivailo, I can give you a bit of pseudo-code here that might help you out. But, if you'd be willing to compensate me for the work, I have some time open for freelancing and I can make that for you. Email me at davidlipps.dev@gmail.com.
1. Put some JSON between the tags with the choices as keys and the slot number as values. For, example, {"yes": 0, "no": 1, "maybe": 2}.
2. Extract the JSON from the tags in the dialog player.
3. Use the "parseJSON" function to convert the JSON to a Dictionary.
4. Have the dialog player iterate over the dictionary and display the options to the player.
5. Wait for the player to pick an option.
6. Get the slot number associated with the option the player picked.
7. Get the new NID associated with the chosen slot.
8. Load and display the next node via the newly selected NID.
Hope that helps a bit. ^_^
Cool stuff!
It would be nice if you can assign a portrait to a piece of dialogue =)
Sure thing, it's pretty easy. Just include the filepath to the image between custom tags in your node and have the dialog player extract the filepath and load the image to a TextureRect. I might do that soon in the Dialog player sub-tutorials I'm working on now.
@@DavetheDev OH yes please do!
@@Marsleader88 Magic: th-cam.com/video/IsBlXNFifO4/w-d-xo.html
I don't have the AssetLib button like you, how can I open that menu?
If you don't, something is wrong. Make you're your Godot editor is up to date and/or reinstall.
I didn't see in the asset market. Did you do something with it?
It's called "Godot Dialog System". What version of Godot are you using?
how do i fix assertion failed error?
The assertions are designed to fail when incorrect data is passed to one of the functions. The debug info should tell you which function failed.
Hey I noticed that this addon is no longer in the Godot Asset Library, is there a reason for that?
Really? I just checked, it seems to be there. Its called "Godot Dialog System" by DaveTheDev. Maybe you have some of the search filters on?
@@DavetheDev Oh no, I was searching for "Dialogue" instead of "Dialog" lol. Thanks for clearing that up!
@@OatmealSoldier lol Sorry, I'm originally from America, where no one knows how to spell. XD
i cant find it anymore?
It's still there, at the moment the image links are broken because I updated it, and it's pending update approval. It's called the "Godot Dialog System"
Hi I'm Seth and I'm making a super smash bros like superhero fighting game called xenomon on game maker 2