Create dialogs, characters and scenes to display conversations in your Godot games.
The plugin is not production ready, this means that it will not work in your game right now unless you know what you are doing. Make sure to follow the repo for the next update.
-
Moved
Dialog.tscn
to the root of the addon so it is easier to find. -
Added a link to the documentation from the editor
-
Refactored a lot of the code and continued splitting the main plugin code into smaller pieces.
-
Rewrote most of the saving and branching systems.
-
New tool: Glossary Editor
- You are now able to write extra lore for any word and Dialogic will create a hover card with that extra information.
- You can create
strings
andnumber
variables. - You can access to those variables from the
Dialogic
Class:Dialogic.get_var('variable_name')
-
In game:
- Portraits changes are reflected in-game.
- Many small improvements.
-
Theme Editor:
- New default asset: Glossary Font
- Added new options to customize the glossary popup
-
Timeline Editor:
- Added categories for the events.
- Color coded some of the events in the same category to avoid having a distracting rainbow in the timelines.
- Conditional event working, but only with "equal to". More conditions coming later.
- Renamed the
End Branch
file names to match the name of the event. This will break the conditionals you have, but this is the time for making breaking changes. Sorry! - New
Set Value
event. Change the current value of a glossary variable inside a timeline. This will reset when you close the game, so a saving system will have to be added on the next version. - New
Emit Signal
event. This event will make the Dialog node emit a signal calleddialogic_signal
. You can connect this in a moment of your timeline with other scripts. - New
Change Scene
event. You can change the current Scene to whatever.tscn
you pick. This will happen instantly, but in the future I'll add some transition effects so it is not that abrupt. - New
Wait Seconds
event. This will hide the dialog and wait X seconds until continuing with the rest of the timeline. - Created independent Character and Portrait picker for reusing in event nodes.
- Portrait picker added to
Text Events
andCharacter Join
events. Text Events
text editor vertical size grows witch each line added.Text Events
now properly create a new message for each line inside the text editor.Text Events
Line count are now displayed next to the preview text when folded.- Re-adding the
End Branch
event just in case you removed the end and you want to add it again in the timeline. - Renamed the
Copy Timeline ID
right click menu option toCopy Timeline Name
since you now have to use that to set the current timeline from code instead of the ID. - Fixed several bugs that corrupted saved files
- Thanks to mindtonix and Crystalwarrior for your first contribution on the choice buttons
-
New
Dialogic
class. With this new class you can add dialogs from code easily:var new_dialog = Dialogic.start('Your Timeline Name Here') add_child(new_dialog)
To connect signals you can also do:
func _ready(): var new_dialog = Dialogic.start('Your Timeline Name Here') add_child(new_dialog) new_dialog.connect("dialogic_signal", self, 'signal_from_dialogic') func signal_from_dialogic(value): print(value)
To view the full changelog click here.
To install a Dialogic, download it as a ZIP archive. All releases are listed here: https://github.com/coppolaemilio/dialogic/releases. Then extract the ZIP archive and move the addons/
folder it contains into your project folder.
If you want to know more about installing plugins you can read the official documentation page.
You can also install Dialogic using the AssetLib tab in the editor, but the version here will not be the latest one available since it takes some time for it to be approved.
There are two ways of doing this; using gdscript or the scene editor.
Using the Dialogic
class you can add dialogs from code easily:
var new_dialog = Dialogic.start('Your Timeline Name Here')
add_child(new_dialog)
And using the editor, you can drag and drop the scene located at /addons/dialogic/Dialog.tscn
and set the current timeline via the inspector.
When you export a project using Dialogic, you need to add *.json
on the Resources tab (see the image below) and also make sure to copy the dialogic
folder to the same place where the executable of your game is (again, see bottom right side of the image).
Yes, you can use Dialogic to make any kind of game (even commercial ones). The project is developed under the MIT License. Please remember to credit!
plugin.cgf
- The required file to be recognized by Godot.
dialogic.gd
- This is the script that loads the addon. Very minimal and should probably have more stuff? Not sure.
Dialog.tscn
- Main scene containing the text bubble and all the required sub-nodes to display your timelines in-game. I left this file in the root node because it will be easier to find and drag-drop to an existing scene.
EditorView.tscn
- When you click on the Dialogic tab, this is the scene you see on the main editor panel. This contains all the sub editors and scripts needed for managing your data. This contains way too many nodes and stuff. Splitting it will come eventually, but for now I like having everything in the same scene because of how connected most of the features are.
editor_view.gd
- This is the code embedded in the EditorView.tscn
. The biggest chunk of code of this project is probably this one. I've been trying to make it smaller by splitting this into a few more sub-scripts (EditorTimeline.gd
, EditorTheme.gd
and EditorGlossary.gd
). This is mostly done but you might still find some functionality here.
EditorTimeline.gd
- Everything related to the timeline editor.
EditorTheme.gd
- Everything related to the theme editor tab.
EditorGlossary.gd
- Everything related to the glossary editor tab.
/Pieces
- Inside this directory you have all the event nodes that populate the timeline editor. Each one has its own name and script. The name is important since it has to be instanced from the editor_view.gd
when clicking on buttons of the same name.
/Pieces/Common
- This is where some of the common element of the pieces are saved. Things like the Character Picker, the Portrait Picker or the Drag Controller are used in several event nodes, so I'm trying to make them easier to plug in to future events that might need them as well.
/CharacterEditor
- This contains the script PortraitEntry.gd
and the scene PortraitEntry.tscn
. When you add a new expression for one of your characters in the Character Editor this node/script will be instanced for handling the settings.
This directory contains the font files and the resources to load.
DefaultFont.tres
- This is the default font used for dialog text such as buttons, names, and the main chat bubble.
GlossaryFont.tres
- The default font for the small popup on hover. This is basically the same font but smaller because you know... Godot <3 Fonts
You shouldn't open this folder expecting it to be organized. Welcome to the world of mixed naming conventions and CaSiNgStYlEs.
All icons are .svg
files so they can scale nicely. I tried reusing many of the default Godot icons, but instead of using the native ones I copy-pasted the svgs and run with it. I should probably replace them and make the custom one more in line with the rest of the editor.
/Images/background
- Here you will find the default background images for the dialogs. More will come in the future.
/Images/portraits
- Some placeholder images for an example project. I might delete these since I'll probably be hosting that somewhere else.
/Images/tutorials
- Right now it only has one file, but every image created for warnings/tutorials/tips will be placed here. Hopefully.
ChoiceButton.tscn
- This is the button created by Dialogic's options events. The node /Dialog.tscn
will instance these when displaying the options to the user.
dialog_node.gd
- The script associated with /Dialog.tscn
. This contains all the logic behind the node and manages everything from timeline parsing, in-game signals and all the visual aspects of the dialog.
glossary_info.gd
- Handles the logic behind the small popup that shows up when you hover the cursor on one of the highlighted words from the glossary inside a dialog. Part of this logic lives inside the dialog_node.gd
script and should probably be moved here.
Portrait.tscn
and Portrait.gd
- Whenever you make a character join a scene, this is the node used for instancing and displaying an image in the screen. It also contains a few effects for fading in/out of a scene.
Code made by Emilio Coppola.
Contributors: Toen, Òscar, Tom Glenn,
Documentation page generated using: https://documentation.page/ by Francisco Presencia
Placeholder images are from Toen's YouTube DF series:
Thank you to all my Patreons for making this possible!
- Mike King
- Allyson Ota
- Buskmann12
- David T. Baptiste
- Francisco Lepe
- Problematic Dave
- Rienk Kroese
- Tyler Dean Osborne
- Gemma M. Rull
- Alex Barton
- Joe Constant
- Kyncho
- JDA
- Chris Shove
- Luke Peters
- Wapiti
- Noah Felt
- Penny
- Lukas Stranzl
- Sl Tu
- Garrett Guillotte
- George Castro
Support me on Patreon https://www.patreon.com/coppolaemilio