Skip to content

rossunger/TownGame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dialogic v0.9 Godot v3.2

Create dialogs, characters and scenes to display conversations in your Godot games.

Screenshot

⚠️ Under development! ⚠️

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.


Changelog

🆕 v0.9 - House keeping

  • 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 and number 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 called dialogic_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 and Character 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 to Copy 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.


FAQ

🔷 How can I install Dialogic?

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.

🔷 How can I make a dialog show up in game?

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.

🔷 Why are the dialogs are not working when exporting my project?

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). Screenshot

🔷 Can I use Dialogic in one of my projects?

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!


Source structure

/ (At the root level)

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.

/Editor

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.

/Fonts

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

/Images

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.

/Nodes

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.


Credits

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

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published