Hi! First of all, thanks for this great course, I really think I have learned how to setup an dialogue system for any kind of game.
Also, I want to ask two questions, hope you can help me to figure out some answers or approaches:
1) First, the main node could be attached to an NPC to activate the scenes (including dialogues, options, etc.) as the player interacts with the NPC (for example, entering in its area and pressing a button)?
2) Is there a way to add a quest system? I'm thinking that the Character resource can be extended by adding a quest (a string description of a task) and a condition (a boolean, maybe?) that can be meet when the player fulfill the task, but I do not know how to stablish the relations between these components. Is there any possible way to add conditions to this dialogue system?
3) I exported the demo to an android mobile device, but it is not
working; the screen keeps in black, and the scenes never are played,
somebody else tried to export to android and could make the demo work?
Hope I explained well my questions, english is not my native language.
Here are the answers to your questions.
1) I wouldn't do it by adding nodes to NPCs, or well, I'm not sure I'd do it this way. The code of any project and tutorial is always pretty specific, right. As a result, you always have to make some adjustments to use it in a different project, depending on the project's needs.
So for an RPG or something like that, I'd look into another option: having an Autoload with simple functions to start a dialogue. And I would store every dialogue or scene in a resource or some data file.
Now, this is a bit beyond the scope of this tutorial series because to store an entire scene in a resource, maybe you'd want to code or use an editor plugin where you'd design your dialogues. There's Dialogic out there that's really good if you want to use an existing solution.
2) a) Yes, you could add a quest system, but it should be entirely separate from the dialogue system. Typically for quest systems you'd use another autoload with a few exposed functions to start a quest, update a quest, and complete a quest.
Quest systems are highly specific: you need to write it for your game, and it depends entirely on the quests you want to have.
Do you want quests with multiple steps? Can there be lose conditions in quests? What kinds of general objectives would you have (collect items, kill monsters, go somewhere, talk to someone)? How many quests will you create? If you make few quests your code can be very specific, and the more quests you need, the more you'll want to use data and general code to handle many cases.
Depending on all the above and your game's gameplay, your quest system can require a small to a large amount of code.
2) b) Regarding adding the ability to check quests in the dialogues, yes, it's possible. It'd require writing new instructions in the ScenePlayer specifically designed for your quest system.
3) Did you look for errors with remote debugging? Most likely it's that one or more files are missing. When you export a project with Godot, it'll export all your tscn files and their dependencies, but I think it doesn't export some other files formats - in those cases, you need to register the files in the Export window. See the fields in the bottom-right in the image below:
Hi, Nathan, as always, you clear any doubts, thank you so much for your responses. You are right: every project has its specific needs and structure, so its code is meant to be very also specific, it is something I am currently learning. Also, thanks for clarify my doubt about the quest system; I'm planning to build something that could be efficient for an Action RPG, and with this tutorial series, I think I came out with some ideas that could work for that.
Finally, thank you, I did not registered the .scene files, so that is why the demo did not work in my android mobile device.
Anyway, again, thank you, I love your work and I have learned so much from you and your team.