Edit of asset "DDSL" Accepted
| Old/Current | New/Edit | |
|---|---|---|
| Title | DDSL | DDSL |
| Description |
DDSL is a dialogue manager plugin for [Godot 4.6+](https://godotengine.org/), primarily focusing on snippet-like conversations and integration with the GDScript system Source code and latest versions on [Github](https://github.com/zHoeshin/DDSL) ## Basic usage Dialogue scripts can be created anywhere within the game's project folder. For this, create a text file, and end it with `.ddsl`, then fill it with the dialogue, for example ```ddsl edwin = ^"res://sprites/portraits/edwin.png" edwin: "Hello, little rover. Are you lost?" { autoconfirm = true } <- option - "Yes" edwin: "Oh, well, we can't have that here. Come, follow me" Cutscenes.trigger("edwinTavernWalk") - "No" edwin: "Are you sure? Well, then... Hope this helps you in your journey" Inventory.add("potion/health2") edwin: "If you need me, you can find me in my tavern" - "Kill all humans" ? Inventory.has("weapon/knife") # this branch is not created unless the player has a knife edwin: "Why, why, so aggressive! And here I thought you were a friendly little roomba!" edwin: "I say, you shouldn't have this" Inventory.remove("weapon/knife") edwin: "Are you even old enough to have a knife? When were you born?" age <- number(1980, 10000) ? Time.get_time_dict_from_system()["year"] < age edwin: "A time traveller too? I find it hard to believe." edwin: "I think you should come with me" Cutscenes.trigger("edwinTavernWalk") ``` Information about the domain-specific language can be found on the [wiki](https://github.com/zHoeshin/DDSL/wiki/...) Note that the language focuses on programmer-styled dialogue description rather than a writer-style one. It is also not intended for creating monolithic dialogues carrying the entire story(i.e. it is not made for visual novels) Once a dialogue file is created, it can be executed in-game in two primary ways ```gdscript # Note that there is no default dialogue box provided so Dialogue will error during execution if one is not explicitly set Dialog.setBox(someDialogBoxScene) # The main way the dialogues can interact with GDScript is via explicit object bindings # Global bindings are permanent between all dialogue calls Dialog.bindGlobal(InventoryManager, "Inventory") # This will start the dialogue without blocking current execution, executing _dialog_callback after the dialogue finishes Dialog.start("res://path/to/dialog.ddsl", null, _dialog_callback) # Current execution will be paused for the duration of the dialogue # `value` will be assigned to a dictionary containing all variables created during script execution var vars = await Dialog.start("res://path/to/dialog.ddsl") ``` Full usage instructions can be found in the [wiki](https://github.com/zHoeshin/DDSL/wiki/...) ## Features - Integration with GDScript, including native calls to built-in methods - Operator overloading possible within the DSL - Unboundedly nested branching options without forced use of `goto` statements ## Documentation The documentation for the plugin is hosted on the [Github Wiki](https://github.com/zHoeshin/DDSL/wiki) of the repository |
DDSL is a dialogue manager plugin for [Godot 4.6+](https://godotengine.org/), primarily focusing on snippet-like conversations and integration with the GDScript system Source code and latest versions on [Github](https://github.com/zHoeshin/DDSL) ## Basic usage Dialogue scripts can be created anywhere within the game's project folder. For this, create a text file, and end it with `.ddsl`, then fill it with the dialogue, for example ```ddsl edwin = ^"res://sprites/portraits/edwin.png" edwin: "Hello, little rover. Are you lost?" { autoconfirm = true } <- option - "Yes" edwin: "Oh, well, we can't have that here. Come, follow me" Cutscenes.trigger("edwinTavernWalk") - "No" edwin: "Are you sure? Well, then... Hope this helps you in your journey" Inventory.add("potion/health2") edwin: "If you need me, you can find me in my tavern" - "Kill all humans" ? Inventory.has("weapon/knife") # this branch is not created unless the player has a knife edwin: "Why, why, so aggressive! And here I thought you were a friendly little roomba!" edwin: "I say, you shouldn't have this" Inventory.remove("weapon/knife") edwin: "Are you even old enough to have a knife? When were you born?" age <- number(1980, 10000) ? Time.get_time_dict_from_system()["year"] < age edwin: "A time traveller too? I find it hard to believe." edwin: "I think you should come with me" Cutscenes.trigger("edwinTavernWalk") ``` Information about the domain-specific language can be found on the [wiki](https://github.com/zHoeshin/DDSL/wiki/...) Note that the language focuses on programmer-styled dialogue description rather than a writer-style one. It is also not intended for creating monolithic dialogues carrying the entire story(i.e. it is not made for visual novels) Once a dialogue file is created, it can be executed in-game in two primary ways ```gdscript # Note that there is no default dialogue box provided so Dialogue will error during execution if one is not explicitly set Dialog.setBox(someDialogBoxScene) # The main way the dialogues can interact with GDScript is via explicit object bindings # Global bindings are permanent between all dialogue calls Dialog.bindGlobal(InventoryManager, "Inventory") # This will start the dialogue without blocking current execution, executing _dialog_callback after the dialogue finishes Dialog.start("res://path/to/dialog.ddsl", null, _dialog_callback) # Current execution will be paused for the duration of the dialogue # `value` will be assigned to a dictionary containing all variables created during script execution var vars = await Dialog.start("res://path/to/dialog.ddsl") ``` Full usage instructions can be found in the [wiki](https://github.com/zHoeshin/DDSL/wiki/...) ## Features - Integration with GDScript, including native calls to built-in methods - Operator overloading possible within the DSL - Unboundedly nested branching options without forced use of `goto` statements ## Documentation The documentation for the plugin is hosted on the [Github Wiki](https://github.com/zHoeshin/DDSL/wiki) of the repository |
| Category | Misc | Misc |
| License | Apache-2.0 | Apache-2.0 |
| Repository Provider | GitHub | GitHub |
| Repository Url | https://github.com/zHoeshin/DDSL | https://github.com/zHoeshin/DDSL |
| Issues Url | https://github.com/zHoeshin/DDSL/issues | https://github.com/zHoeshin/DDSL/issues |
| Godot version | Godot 4.6 | Godot 4.6 |
| Version String | 1.2.1 | 1.2.1 |
| Download Commit | d0bcfda426dc133f46ae0d52eb8396e16a76cb20 | d0bcfda426dc133f46ae0d52eb8396e16a76cb20 |
| Download Url (Computed) | https://github.com/zHoeshin/DDSL/archive/d0bcfda426dc133f46ae0d52eb8396e16a76cb20.zip | https://github.com/zHoeshin/DDSL/archive/d0bcfda426dc133f46ae0d52eb8396e16a76cb20.zip |
| Icon Url |
https://raw.githubusercontent.com/zHoeshin/DDSL/refs/heads/main/examples/images/icon.png
|
https://raw.githubusercontent.com/zHoeshin/DDSL/refs/heads/main/examples/images/icon.png
|
| Preview Insert | ||
|---|---|---|
| Type | image | |
| Image/Video URL |
https://raw.githubusercontent.com/zHoeshin/DDSL/refs/heads/main/examples/images/script1.png
|
|
| Thumbnail |
|
|
| Preview Insert | ||
|---|---|---|
| Type | image | |
| Image/Video URL |
https://raw.githubusercontent.com/zHoeshin/DDSL/refs/heads/main/examples/images/preview1.png
|
|
| Thumbnail |
|
|