Yet another (linear) dialogue system/addon/plugin for Godot.
- ✍️ Written in human-readable syntax.
- 😐 ....
- 📝 And 100% written in GDScript!
Important
This project is still in development, and is subject to frequent, breaking changes, and bugs.
Rendered | Written |
|
Fine-tune your dialogue flow with {delay}
and {speed}
.
Godette:
"Hello!{delay = 0.7} Nice to meet you."
Godette:
"Hello!
delay=0.7
Nice to meet you."
Connect your story to the game with function calls.
{player_name}:
"Thanks! That feels so much better."
Player.heal(20)
Ritsu:
"Cheers!"
Portrait.set("ritsu_smile.png")
Call functions only at specific points in the Dialogue.
Dia:
"Let's brighten up the room a little...{d = 1.1}
{0}
there we go."
# Call this function using its index: {0}
Background.set_brightness(1.0)
More comprehensive Dialogue features documented here.
Write your epic Dialogue!
# write it directly with triple quotation marks
var epic_dialogue = Dialogue.new("""
Dia:
"For performance reason, I'd recommend
using the method below instead."
""")
# alternatively, write it in a *.dlg file, and load it
var epic_dialogue = Dialogue.load("res://epic_dialogue.dlg")
Set the Stage! Add Stage
and DialogueLabel
node to your scene. Structure your scene like the following:
Adjust the position and size of the PanelContainer
to your liking.
Select the Stage
node, and reference the Label
& DialogueLabel
node to display your Dialogue. Adjust and configure your Stage
via the inspector. Alternatively, you can also set them in script:
Reference the Stage
node in the script, and set up a way to progress your Dialogue with Stage.progress()
.
func _input(event):
if event.is_action_pressed("ui_accept"):
my_stage.progress()
And finally, start the Stage
with your epic_dialogue
.
func _ready():
my_stage.start(epic_dialogue)
More detailed quick start tutorial here.
- Theatre is licensed under MIT.
- Theatre logo, created by nnda, is licensed under CC-BY 4.0.
- Class icons from @fontawesome (recolored), are licensed under CC-BY 4.0.