
YADS - a Godot 4 dialogue plugin
A downloadable plugin
This plugin implements lightweight but powerful non-linear dialogue support for Godot 4. It is inspired by game industry formats such as Yarn and Ink, but unlike them, it's made directly in Godot and integrates with your game seamlessly.
With several others around, why choose this plugin?
I have tried out multiple tutorials and plugins, and even developed another dialogue system before (one based on building dialogues as scenes). However, I was not satisfied with the UX of any of these. Some of the problems I have encountered and wanted to avoid were:
- noticeably increased start-up times, or bloat in general
- custom editors with no undo feature or no keyboard shortcuts for basic text editing (Ctrl+Backspace anyone?)
- GUIs where you only see a small part of the whole dialogue
- GUIs where a basic change in how dialogue flows is a 10 minute task of reordering many GUI elements
- writing dialogue as JSON (typing that by hand gets old very fast - I tried)
Conclusion? I needed a script-based system which can be typed directly in Godot's text editor. If this story sounds familiar, this plugin is for you.
Key features
Key characteristics of YADS:
Lightweight
YADS is written in GDScript and has a tiny footprint. No hacky solutions, bloat or increased load times.
Plaintext file format with simple syntax
Write all the dialogue you want in one file or split it across multiple. No clicking around when you need to look up the context of the dialogue you're writing. YADS syntax is minimal and the plugin comes with a built-in highlighter, so you can do all your work within Godot.
You can see an example of a raw script file here.
Highly scriptable
Your dialogue files can contain script snippets ("commands"). The script snippets allow you to execute pretty much any code you want via GDScript, thanks to Godot's built-in Expression class. YADS compliments the capabilities of Expressions by adding support for setting variables intuitively.
You define the flow of the dialogue right in its text - with if statements and by jumping to sections (a.k.a. nodes). Everything can be conditional in pretty much any combination - regular text, commands and player replies.
Easy integration and customization
Integrating with your game only requires two tiny scripts: a handler and a snippet executor (typically a singleton). Both of them can be as short as 6-8 lines. You can then define custom dialogue functions in your snippet executor.
Naturally, the GUI is customizable too; you can use a copy of the provided GUI as a starting point. It has BBCode support, a typing animation, optional blip sounds, and optional auto-continue delay. There is also an example of a boilerplate GUI with no animation if you wish to start from scratch.
Easy to deploy and test
To run dialogue, you only need to add a handler node to your scene and call the start function. The plugin handles the rest internally, including spawning your custom GUI.
Additionally, you can easily test your dialogues by running the handler node as a scene (F6 in the editor).
Translatable
YADS supports gettext translations, enabling you to use existing tools to support a changing source text. If you already use CSV translations, gettext's PO files can be used alongside CSV.
What type of game this is for
I made this plugin with single-character RPG dialogue in mind; think Gothic or Pathologic. With some customization, YADS should be able to handle most usecases, ranging from simple quips to visual novel games with character expressions/emotes and scene changes.
Requirements
The plugin was made in Godot 4.4. However, it does not use any exotic cutting-edge features, so it is likely to be backwards compatible with older Godot 4 versions.
Support and documentation
If you have any questions before or after buying the plugin, you can ask them on Discord:
YADS (YADS Aid Discord Server)
Bug reports: post on Discord or start a GitHub issue.
Notes
YADS is a relatively young project, so a few things are worth noting:
- Bugs might happen and I will be very thankful if you report them.
- It might be subject to change in the future. Features might be added and altered, and script syntax might slightly change - if possible, this will be done in a backwards-compatible manner. Breaking changes will of course be announced and documented.
- That being said, this plugin is being used in my personal project, so I make it as stable and comfortable to use as possible. If you use it in your own games I would love to hear about it and maybe showcase them here!
Information about the license
By purchasing this plugin, you get:
- access to its source code
- the right to use the plugin in your game projects (commercial or free)
- the right to share the plugin with the development team of your game (as long as your game's source code is not public)
You are not allowed to redistribute or resale the plugin in forms other than the above. Team members are not allowed to reuse the plugin for their own projects. The above information is not the license proper.
Published | 13 hours ago |
Status | In development |
Category | Tool |
Author | SwampGuru |
Tags | asset, assets, dialogue, dialogue-system, Godot |
Links | Discord, GitHub |
Purchase
In order to download this plugin you must purchase it at or above the minimum price of $10 USD. You will get access to the following files:
Leave a comment
Log in with itch.io to leave a comment.