How can i add a visual novel dialogue system for my game?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By CheeseWithWaffles

Hi! i don’t know much about programming, i’m learning from youtube godot tutorials.
I had watched a few dialogue system tutorials (being honest i don’t know exactly if they were about dialogues systems or just one dialogue with it’s dialogue box? :'D ), but they aren’t what i need or i don’t understand how to use it or were to download the json file for it! ( From the tutorials i think json files are like dictionarys, or they can serve for that)

I’m making a game kind of click and point , and similar to how games made in rpg maker look!, it has a story , so i need a dialogue system like visual novels, something like what i could do in ren’py!

What i need would be(just in case(?)):

-Box for the name of the character who is speaking

  • A personalized dialogue box for the character who is speaking or just a general box! (i’m sorry i hope i’m not saying silly stuff :'3 )
    -that i can do a conversation of more than two characters?
    -That above the dialogue box appears a sprite ( A drawing of the character), and that i can choose a different sprite each dialogue.
    -That there can be different dialogue options that the player can choose, and that each dialogue open a new path of dialogues.

That’s all! :smiley: , i’m sorry, i hope i’m not abusing of your kindness! ;w;
Thank you so much for reading my question!,i hope you’re having a great day or night! :3

:bust_in_silhouette: Reply From: exuin

Hi, CheeseWithWaffles!

In order to make a dialogue system, you need three things:

  1. A way to store the dialogue
  2. A way to parse the dialogue
  3. A way to display the dialogue

Storage

JSON is a way to store the dialogue. It’s a type of format, so you don’t need to download a JSON file in order to make one. It’s not a format that’s specific to Godot. But if you’re not planning to use the data for other non-Godot stuff you can just use a custom Resource in Godot instead. Or you can just use a text file with a custom parser.

Parser

If you’re using JSON or a custom Resource, you won’t really need to code a parser, since you can just convert those into stuff Godot can use easily. However, if you’re going to do custom parsing you’ll have to write your own parser.

Display

Control nodes are a type of node that are used to display UI elements. You should use them to display your dialogue boxes. You can use Labels or RichTextLabels in order to display text. You can use TextureRects to display images. You can use buttons in order let the player choose choices. Your parser will parse the data from the dialogue files and then change your display nodes in order to reflect who is speaking and who is saying what.


I think you should start simple. First, just make a couple of text nodes and a TextureRect and try changing them with code. Then you can add more complicated features like branching dialogue paths.