{"id":2486,"date":"2025-11-30T21:20:14","date_gmt":"2025-11-30T20:20:14","guid":{"rendered":"https:\/\/candy-arts.com\/?page_id=2486"},"modified":"2026-05-25T19:29:55","modified_gmt":"2026-05-25T17:29:55","slug":"candy-dialogue-engine","status":"publish","type":"page","link":"https:\/\/candy-arts.com\/index.php\/candy-dialogue-engine\/","title":{"rendered":"Candy Dialogue Engine"},"content":{"rendered":"\n<p class=\"has-text-align-center has-background has-small-font-size wp-block-paragraph\" style=\"border-top-style:none;border-top-width:0px;border-right-color:var(--wp--preset--color--white);border-right-width:100px;border-bottom-style:none;border-bottom-width:0px;border-left-color:var(--wp--preset--color--white);border-left-width:100px;background-color:#fccf004f;margin-right:0;margin-left:0;padding-top:10px;padding-right:0px;padding-bottom:10px;padding-left:0px\"><strong>Candy Dialogue Engine was first published in March 2026 and is in early release until July 2026.<\/strong><br>This means all advertised features are complete and we&rsquo;ve fixed all issues we could find during testing, but some edge-case bugs may exist.<br>These bugs may only become apparent by implementing it in dozens of different projects, so we rely on our early users to report any issues they encounter.<br>As thanks for your help and understanding, we are offering significant discounts on our Indie-tier licenses until the end of the early release phase.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6488167e wp-block-columns-is-layout-flex\" style=\"padding-right:0;padding-left:0\">\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66%\">\n<h2 class=\"wp-block-heading\">Candy Dialogue Engine<\/h2>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<div class=\"wp-block-buttons is-horizontal is-content-justification-right is-layout-flex wp-container-core-buttons-is-layout-13f386c9 wp-block-buttons-is-layout-flex\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);padding-right:0;padding-left:0\">\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link has-palette-color-4-color has-vivid-green-cyan-background-color has-text-color has-background has-link-color wp-element-button\" href=\"https:\/\/github.com\/Candy-Arts\/Candy-Dialogue-Engine\" style=\"border-style:none;border-width:0px\" target=\"_blank\" rel=\"noreferrer noopener\">Free Download<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link has-vivid-cyan-blue-background-color has-background wp-element-button\" href=\"https:\/\/candyarts.gumroad.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><br>Commercial License<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center has-vivid-cyan-blue-color has-text-color wp-block-paragraph\"><strong>All-In-One Dialogue System, Visual Novel Engine, Media Synchronizer, Cutscene Orchestrator, Narrative Manager, Mod Support Solution.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"margin-top:0;margin-bottom:0\"><strong>Standing at the endgame of dialogue managers, Candy Dialogue Engine was designed to achieve five core goals:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Make dialogues fast and simple to write.<\/li>\n\n\n\n<li>Adapt to any game type or genre.<\/li>\n\n\n\n<li>Provide or support any features developers may need.<\/li>\n\n\n\n<li>Make dialogue synchronization with game events easy.<\/li>\n\n\n\n<li>Allow full code and UI customization.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"margin-top:var(--wp--preset--spacing--20);margin-right:0;margin-bottom:var(--wp--preset--spacing--20);margin-left:0;line-height:1.5\"><strong>To that end, it combines the usual tools you need for speech and narrative crafting, plus more:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Different dialogue modes with various settings and options: dialogue box with portrait, subtitles, speech bubbles, chat box&#8230;<\/li>\n\n\n\n<li>Voiced dialogue support.<\/li>\n\n\n\n<li>VN busts and background image display.<\/li>\n\n\n\n<li>Full UI customization.<\/li>\n\n\n\n<li>Branching dialogues \/ Conditions.<\/li>\n\n\n\n<li>Call functions and emit\/detect signals.<\/li>\n\n\n\n<li>Player choices and input prompts.<\/li>\n\n\n\n<li>Media playback controls.<\/li>\n\n\n\n<li>Variable modification and display.<\/li>\n\n\n\n<li>Cutscene scripting.<\/li>\n\n\n\n<li>Gendered word substitution.<\/li>\n\n\n\n<li>Gendered and random variants.<\/li>\n\n\n\n<li>Lexicon (Glossary).<\/li>\n\n\n\n<li>Localization\/Translation features.<\/li>\n\n\n\n<li>Compatibility features for Text-To-Speech and LLM-generated dialogue.<\/li>\n\n\n\n<li>Dialogue live edit at runtime, parallel dialogues, dialogues as a modding \/ programming layer.<\/li>\n\n\n\n<li>Fully accessible and extendable code.<\/li>\n\n\n\n<li>Standalone dialogue editing GUI with simple &lsquo;click to add line, fill in data, don&rsquo;t type syntax&rsquo; approach.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Candy Dialogue Engine is made for beginners and experts, hobbyists and professionals alike: simple for simple projects, advanced features available for advanced needs, unlimited potential as to never hold you back, and intelligently crafted to maximize productivity and efficiency. The companion <strong><a href=\"https:\/\/candy-arts.com\/index.php\/candy-dialogue-creator\/\" data-type=\"page\" data-id=\"2511\" target=\"_blank\" rel=\"noreferrer noopener\">Candy Dialogue Creator<\/a><\/strong> GUI even makes it ideal for teams, with various features to help separate tasks, compartmentalize access to project files and merge work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But this just scratches the surface &#8212; Candy Dialogue Engine goes much deeper with every feature:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-default\"\/>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Ease Of Use<\/strong><br><br>Let&rsquo;s get this out of the way first: despite how advanced Candy Dialogue Engine is, it remains incredibly simple to use.<br><br>Installation? <strong>Drop it in your project folder \u2192 Add two autoloads and a few input methods \u2192 Done<\/strong>. It&rsquo;s now ready to use with default presets.<br>Dialogue writing? <strong>Click to add lines \u2192 Input relevant data.<\/strong> Minimal typing, convenient data lists, no special formatting, and much more for a fast workflow.<br>Testing dialogues? <strong>Click \u00ab\u00a0Test\u00a0\u00bb \u2192 Alt+Tab to Godot \u2192 Run.<\/strong><br>Final export? <strong>Open the Export menu \u2192 Enter a file name \u2192 \u00ab\u00a0Confirm\u00a0\u00bb.<\/strong><br>Coding? <strong>None to hardly any*.<\/strong> Any coding would be limited to personalizing optional hook functions to better integrate some features with your own game logic, adding custom behavior to UI elements, or creating your own self-made features. As an example, if you can implement game state tracking in your project, then editing the function that modifies game state when dialogue starts or ends is trivial.<br><br><em>*Writing conditions and assigning variables not included &#8212; let&rsquo;s be serious, that&rsquo;s just glorified algebra.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-default\"\/>\n\n\n\n<p class=\"has-text-align-left has-pale-cyan-blue-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Scaling Complexity<\/strong><br><br>What makes Candy Dialogue Engine a great choice for any game and for developers of any experience level, is the fact that it never gets more complicated than your own project.<br><br>\u2022 For <strong>basic needs<\/strong>, Candy Dialogue Engine is as simple as can be and essentially holds your hand: all the standard dialogue features are straightforward, working as you\u2019d usually expect, and default UI elements are provided so you can use the engine out-of-the-box.<br><br>\u2022 For more <strong>advanced features<\/strong>, learn-as-you-go: focus only on the features you use and ignore the rest. When you start configuring things to fit your needs, Candy Dialogue Engine guides you without restraining you beyond reason.<br><br>\u2022 And if you want to do <strong>serious customizing<\/strong>, you have complete freedom: add logic to UI elements beyond their standard functioning, design complex hook functions, or go as far as adding or modifying code in the engine itself.<br><br>Documentation is provided for every feature and option, and the engine logic is a fine-tuned machine. If something ever feels hard, it\u2019s probably because you\u2019re trying to do something hard.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Simple Structure<\/strong><br><br>Dialogue scripts are split into a straightforward hierarchy: Dialogues \u2192 Conversations \u2192 Blocks \u2192 Lines.<br><br>The engine iterates through Lines in order, performing what they&rsquo;re designed and configured to do, and transitioning between Blocks and Conversations as instructed.<br><br>Want to modify variables, call functions or emit signals? Just insert the corresponding Command Lines between Spoken Lines! Candy Dialogue Engine gives you complete game state control from within dialogues with just a few commands!<br><br>No programming required, and no syntax to memorize: just create Conversations and Blocks, add Lines, and fill their data fields as needed.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-group has-pale-cyan-blue-background-color has-background is-vertical is-layout-flex wp-container-core-group-is-layout-b2fa9d5b wp-block-group-is-layout-flex\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;min-height:0px;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--50);padding-left:0\">\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"border-style:none;border-width:0px;border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:var(--wp--preset--spacing--70);padding-bottom:0;padding-left:0;grid-template-columns:auto 46%\"><div class=\"wp-block-media-text__content\">\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-995f960e wp-block-group-is-layout-flex\">\n<p class=\"has-text-align-left wp-block-paragraph\" style=\"border-style:none;border-width:0px;border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;margin-top:0;margin-right:0px;margin-bottom:0;margin-left:0px;padding-top:0;padding-bottom:0;padding-left:0\"><strong>Your Style<\/strong><br><br>Whether you want an RPG dialogue box with portraits, visual novel busts, a chat box format, comic book speech bubbles, subtitles, voice only, or maybe your very own custom style: display dialogues any way you like!<br><br>Portraits are versatile too: display the standard static images, or use animated portraits with Sprite2D\/3D or AnimatedSprite2D\/3D nodes. Or play video portraits with a VideoStreamPlayer node!<br><br>And nothing is stopping you from displaying a live close-up of an animated character in the portrait box if you&rsquo;re crafty.<br><br><\/p>\n<\/div>\n<\/div><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Your-Style-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"928\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Your-Style-Example.png\" alt=\"\" class=\"wp-image-3714 size-full\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Your-Style-Example.png 1024w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Your-Style-Example-300x272.png 300w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Your-Style-Example-768x696.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-pale-cyan-blue-background-color has-background is-vertical is-layout-flex wp-container-core-group-is-layout-e3aa8c1a wp-block-group-is-layout-flex\" style=\"border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\">\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"border-bottom-left-radius:0px;border-bottom-right-radius:0px;padding-top:0;padding-bottom:0;padding-left:0;grid-template-columns:48% auto\"><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Speech-Bubbles-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Speech-Bubbles-Example.png\" alt=\"\" class=\"wp-image-3758 size-full\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Speech-Bubbles-Example.png 1024w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Speech-Bubbles-Example-300x300.png 300w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Speech-Bubbles-Example-150x150.png 150w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Speech-Bubbles-Example-768x768.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">How about a hybrid VN mode, with busts for NPCs and portraits for the player, for a more immersive feel? That&rsquo;s included! <br><br>Does Candy Dialogue Engine feature a progressive writing (typewriter) effect? You bet, with optional &lsquo;press key to instant display&rsquo; and &lsquo;hold key to speed up\/down&rsquo;! <br><br>Custom text colors for different characters? Yes, and other custom BBCode formatting too!<br><br>Automatic progression? Of course, with customizable timer or synced to voice playback! We don&rsquo;t do things halfway around here.<\/p>\n<\/div><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-d0b906e1 wp-block-group-is-layout-flex\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0\">\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile has-light-green-cyan-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--50);padding-left:0;grid-template-columns:auto 58%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong><strong>Your UI<\/strong><\/strong><br><br>When we say &lsquo;customizable UI&rsquo;, we mean it: whether it&rsquo;s the dialogue box, speech bubbles, background displays or anything else &#8212; every UI element can be designed your way, from position on screen, to size, to themes and styles, and even to the node structure itself!<br><br>The process is incredibly simple:<br><strong>1. <\/strong>Select a root node.<br><strong>2.<\/strong> Attach the appropriate UI script among those provided.<br><strong>3.<\/strong> Add the one or two child nodes that Candy Dialogue Engine requires.<br><strong>4.<\/strong> Add their paths to the pointer variables in the script.<br><strong>Done.<\/strong> Feel free to add any additional nodes you want for any purpose, and use the node hierarchy you like.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/UI-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"508\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/UI-Example-1024x508.png\" alt=\"\" class=\"wp-image-4330 size-full\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/UI-Example-1024x508.png 1024w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/UI-Example-300x149.png 300w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/UI-Example-768x381.png 768w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/UI-Example-1536x762.png 1536w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/UI-Example.png 1910w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n<\/div>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:0;padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--60)\">You&rsquo;re also not limited to just one style: you can design multiple variations for each UI element, and swap them dynamically at runtime!<br><br>Default UI elements are provided so you can jump in immediately, and are kept simple so you can easily expand them in any manner you want. The default UI scripts contain hook functions, which the engine calls at various points when it uses UI elements, making it trivial to trigger custom logic in your UI throughout dialogue.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-d0b906e1 wp-block-group-is-layout-flex\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0\">\n<div class=\"wp-block-media-text is-stacked-on-mobile has-pale-cyan-blue-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;padding-top:var(--wp--preset--spacing--70);padding-right:0;padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--70);grid-template-columns:48% auto\"><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Visual-Novel-Example-2.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Visual-Novel-Example-2.png\" alt=\"\" class=\"wp-image-3694 size-full\"\/><\/a><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>Visual Novels<\/strong><br><br>If you&rsquo;re making a visual novel, Candy Dialogue Engine provides a full panel of commands to manage character busts.<br><br>First, create scenes with various image (bust) nodes, such as Sprite2D\/3D, TextureRect, TextureButton for clickable characters, or even VideoStreamPlayer to be fancy. <br><br>Then, use special VN commands to control everything: swap scenes to change bust layouts, assign characters to bust nodes or move them to other busts, swap a character&rsquo;s bust display for another posture or expression, animate or play effects on bust, and more!<br><br>Want to highlight the bust of the speaking character? You can choose among the multiple built-in options: move them to the front, change the size or color tone of the speaker&rsquo;s bust, overlay an outline, display a name tag underneath &#8212; or create your own method!<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile has-pale-cyan-blue-background-color has-background\" style=\"border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;margin-top:0;margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:0;grid-template-columns:auto 48%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">You can also use AnimationPlayer nodes to create and automatically play visual effects when busts join, leave or switch places: slide or fade in or out of view, shake or hop, roll or pirouette&#8230; We&rsquo;re not here to judge.<br><br>And if two dimensions is too restrictive for you, use the Cutscene commands, which allow direct control of any nodes and objects in game space, to create a 2.5D or 3D VN.<br><br>On a small side-note: it&rsquo;s technically possible to create a Visual Novel entirely through Candy Dialogue Engine &#8212; main menu and all &#8212; without coding.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Visual-Novel-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Visual-Novel-Example.png\" alt=\"\" class=\"wp-image-3693 size-full\"\/><\/a><\/figure><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile has-light-green-cyan-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:0;padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70);grid-template-columns:55% auto\"><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Roles-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"912\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Roles-Example.png\" alt=\"\" class=\"wp-image-3772 size-full\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Roles-Example.png 1024w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Roles-Example-300x267.png 300w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Roles-Example-768x684.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>Speaker Roles<\/strong><br><br>Sometimes you just don&rsquo;t know in advance which specific character will speak a given line. For example, when a line is meant to be spoken by the third party member and your game allows changing the composition of the player party.<br><br>No problem! Just assign a speaker role to the line, and later assign a character to the given role at runtime. And just like that, whoever is the third party member when the line is processed will be the speaker of that line!<\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile has-pale-cyan-blue-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70)\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>Dispositions<\/strong><br><br>Want a character to speak differently if they&rsquo;re happy or angry? Want them to only tell a secret if they like the player? Easy: assign a disposition to any line, and it will only be displayed on screen if the speaker&rsquo;s disposition matches!<br><br>And for more advanced games, take things further: assign multiple dispositions to lines or actors, and use intuitive operators to require matching some, all or none of the listed dispositions, all in a single string.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Dispositions-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"880\" height=\"1024\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Dispositions-Example-880x1024.png\" alt=\"\" class=\"wp-image-3821 size-full\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Dispositions-Example-880x1024.png 880w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Dispositions-Example-258x300.png 258w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Dispositions-Example-768x894.png 768w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Dispositions-Example.png 1024w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/a><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-52b43faf wp-block-group-is-layout-flex\" style=\"padding-left:0\">\n<div class=\"wp-block-media-text is-stacked-on-mobile is-vertically-aligned-center has-light-green-cyan-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;padding-top:var(--wp--preset--spacing--70);padding-bottom:0;padding-left:var(--wp--preset--spacing--70);grid-template-columns:55% auto\"><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Word-Substitution-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"832\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Word-Substitution-Example.png\" alt=\"\" class=\"wp-image-3658 size-full\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Word-Substitution-Example.png 1024w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Word-Substitution-Example-300x244.png 300w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Word-Substitution-Example-768x624.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>Word Substitution<\/strong><br><br>Gendered language is the bane of dialogue writers: it often requires writing duplicate lines for each potential option, using complex databases, injecting unintuitive syntax in your texts&#8230;<br><br>Good news! Candy Dialogue Engine features a smooth solution. First setup an entry in the Substitution Table, then:<br>1) Write a gendered word.<br>2) Write which character it refers to.<br>3) Wrap it in a couple of symbols.<br><br>That&rsquo;s it! Candy Dialogue Engine will look up the gender of the designated characters and match the words accordingly. It even features automatic case matching, so you don&rsquo;t need to create duplicate entries when words are capitalized at the start of a sentence.<br><br>And of course, the symbols are customizable for your convenience.<br><\/p>\n<\/div><\/div>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background wp-block-paragraph\" style=\"border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\">It&rsquo;s also not limited to gendered language only: it can compare any keyword to any character property, perform substitutions based on multiple properties, and make comparisons between numerical values &#8212; perfect for displaying a title based on age or level.<br><br>To top it off, substitution rules can be made language-specific to avoid conflicts between translations.<\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile has-pale-cyan-blue-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70)\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>Lexicon<\/strong><br><br>The Lexicon is a dictionary of keywords that can be automatically stylized when displayed on screen, using BBCode tags.<br><br>Each keyword can be styled with a custom size, font, bold\/italics\/underline, text\/highlight\/outline color, or anything else BBCode supports, including tooltip display when hovered.<br><br>Candy Dialogue Engine can even make keywords clickable, and you can freely code any effects you want upon clicking.<br><br>The Lexicon also provides a simple and convenient method to prevent words from being stylized as Lexicon keywords depending on context: prefix Lexicon keywords with a symbol of your choosing, which won&rsquo;t be displayed on screen. Words not prefixed will display as normal.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Lexicon-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"672\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Lexicon-Example.png\" alt=\"\" class=\"wp-image-3627 size-full\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Lexicon-Example.png 1024w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Lexicon-Example-300x197.png 300w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Lexicon-Example-768x504.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Translations &amp; Variants<\/strong><br><br>With Candy Dialogue Engine, even translating your game is simple: each spoken line can be assigned any number of variants, which can act as translations, alternate phrasings, or stylistic rewrites of the same text. Indicate the variant to display with a single variable, et voil\u00e0! Your characters can now speak French or any language you include!<br><br>Meanwhile, translation tables can be used to automatically translate UI elements and even character names or various keywords.<br><br>Right-to-left writing is also supported: specify the default text direction of any language or variant, and optionally make exceptions for specific lines.<br><br>Variants aren&rsquo;t just for translations: you can use them to automatically swap between masculine\/feminine derivations, or according to character personality or moral alignment. Or use the built-in randomization feature to switch between multiple variations at random, to make frequently repeated lines feel more diverse!<br><br>In addition, if you use voice files for dialogues, Candy Dialogue Engine can automatically find and play files for alternate variants, saving you or your translators the long work of manually assigning voice files to lines!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Voiced Dialogues<\/strong><br><br>Of course, voiced dialogues are supported: just assign voice files to lines, or hook to a Text-To-Speech tool of your choosing! And optionally synchronize dialogue writing speed with voice playback duration for a more polished feel!<br><br>And since we know how tedious it is to match lines and voice files, Candy Dialogue Engine\u2019s folder structure keeps everything organized for you: voice files are grouped by actor, then by conversation and dialogue block. The companion Candy Dialogue Creator automatically filters and displays the available files for each line, complete with built-in \u201chover to preview\u201d. Meanwhile, voice files for translations or line variations are automatically resolved by the engine at runtime, based on the originals, saving you hours of extra work!<br><br>The result: no spreadsheets, no obscure line IDs or fragile indexes, not even any typing required. Fully edit dialogues without risk of breaking anything, and preview voice files while writing for perfect tone, pace and sentence matching!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile has-light-green-cyan-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Variables-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"946\" height=\"1024\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Variables-Example-946x1024.png\" alt=\"\" class=\"wp-image-3838 size-full\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Variables-Example-946x1024.png 946w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Variables-Example-277x300.png 277w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Variables-Example-768x831.png 768w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Variables-Example.png 1024w\" sizes=\"auto, (max-width: 946px) 100vw, 946px\" \/><\/a><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>Variables<\/strong><br><br>Candy Dialogue Engine takes variables seriously:<br><br>First, whether variables are stored inside global scripts (autoloads), nodes, or inside Candy Dialogue Engine&rsquo;s own internal dictionary of variables, they are always accessible.<br><br>Display any variables in spoken text, using customizable symbols (similar to BBCode tags), or modify them using commands that support not only GDScript-style syntax, but also a few custom operators, including a method to convert interchangeably between Dictionaries, Strings and Arrays!<br><br>For complete power and control, use variables for any element of command data, making it possible to use dynamic values that change at runtime for every parameter!<\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile has-pale-cyan-blue-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:0;grid-template-columns:auto 52%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>Progression Flags<\/strong><br><br>An optional dictionary is provided for progression flags, which pairs with a special command to quickly modify their values.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instant flag updating during dialogue, fast and minimal writing, and support for a wide list of operators and variable types, including arrays and dictionaries as flag values!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And for maximum convenience, the command automatically calls a hook function, allowing you to automatically run custom code when flags change, such as updating quest trackers.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Flags-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Flags-Example.png\" alt=\"\" class=\"wp-image-3648 size-full\"\/><\/a><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Conditions &amp; Loops<\/strong><br><br>What would a dialogue system be without conditional branching? Candy Dialogue Engine provides command lines to replicate &lsquo;if\/elif\/else&rsquo; conditions, as well as &lsquo;for&rsquo; and &lsquo;while&rsquo; loops! Not only that, but conditions can be nested inside one another, and support elaborate conditions, with parentheses and &lsquo;AND&rsquo;, &lsquo;OR&rsquo;, &lsquo;XOR&rsquo;, and any operators, just like GDScript!<br><br>Use conditions and loops for anything: modify variables, call functions, emit or await signals, or transition to other dialogue Blocks that can feature and run any dialogue command!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Dialogue History<\/strong><br><br>An often secondary but standard feature in dialogue systems: Candy Dialogue Engine can automatically save and display dialogue history. A default implementation is included, or you can create your own UI to display the history log, take advantage of our expandable functions to tailor your own text formatting, and even customize what lines and data get saved.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile has-light-green-cyan-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:0;grid-template-columns:auto 52%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>Player Input<\/strong><br><br>Need the player to enter their name, a password to a secret cave, or write a good joke? Just create input UI elements, and make them appear mid-way through dialogues with a single line.<br><br>The input logic is entirely up to you: restrict, allow or modify any text inputs based on any criteria you wish, from words or specific character types, to input length. You&rsquo;re not on your own, though: Candy Dialogue Engine&rsquo;s default input UI comes with a script that features many options, and is easily modified to serve as a template or expand upon.<br><br>It&rsquo;s not limited to entering text or numbers: create any player-interactive UI you want, packed with advanced internal logic of your own. Virtual buttons, dials, sliders, movement controls, drag-and-drop&#8230; Any input form is compatible. Design and display UIs for virtual keypads, radio transistors, mechanical devices, crafting tables, MIDI mixers, musical instruments, vehicle cockpits, even mini-games, and more!<br><br>Input UIs can communicate with the dialogue engine through a signal, allowing inputs to trigger dialogue commands, character speech, or affect the dialogue script. Even better: you can swap through UIs, display and use multiple UIs side-by-side, or create modular input systems!<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Player-Input-2.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Player-Input-2.png\" alt=\"\" class=\"wp-image-3747 size-full\"\/><\/a><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile has-pale-cyan-blue-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:0;padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Choices-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Choices-Example.png\" alt=\"\" class=\"wp-image-3700 size-full\"\/><\/a><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>Player Choices<\/strong><br><br>Player choices are a staple of any comprehensive dialogue system, but Candy Dialogue Engine takes things further: fully customize choice menus and buttons, display as many choices as you like, group them in categories, and make them run any dialogue commands, including modifying variables or calling functions.<br><br>Not enough? Let choice menus configure themselves when they initialize, using conditions and dialogue commands. You can use this to skip, deactivate or hide unavailable choices, or to limit or randomize the choices offered. You can also set timers to trigger effects or auto-select choices, and you can nest choice menus within one another.<br><br>Special dialogue commands are also available to alter choices and timers, allowing them to modify one-another when selected or timed out. These commands can further be used to run conditional, weighted or randomized logic to limit or select available choices &#8212; wide power and control in a small package!<\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile has-light-green-cyan-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:0;grid-template-columns:auto 54%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>Media Synchronization<\/strong><br><br>Most dialogue systems focus on dialogue display entirely, leaving you to figure out how to synchronize speech with media or real-time game events properly.<br><br>Candy Dialogue Engine saves you that pain: various commands can be used to play videos, sounds, or display images. Not only that, but additional commands are also provided for precise control: pause dialogue processing until a specific media finishes playing or reaches a specific timestamp or frame; or do the opposite and pause media until a specific number of dialogue lines have been processed.<br><br>There&rsquo;s also commands to change media volume or skip to a specific timestamp or video frame, and to hide or show dialogue UI elements.<br><br>And there&rsquo;s even a built-in solution for animated images, using automated image swapping and customizable FPS rate: just place image frames in a same folder, point the image display command to it, and let Candy Dialogue Engine do the rest!<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Media-Sync-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"897\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Media-Sync-Example-1024x897.png\" alt=\"\" class=\"wp-image-3672 size-full\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Media-Sync-Example-1024x897.png 1024w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Media-Sync-Example-300x263.png 300w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Media-Sync-Example-768x673.png 768w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Media-Sync-Example.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Direct Cutscenes<\/strong><br><br>Media controls only scratch the surface of Candy Dialogue Engine&rsquo;s capabilities: commands are also featured to instantiate scenes, move or animate characters or objects in the game world, toggle visibility, change the active camera, or modify lights. This works for both 2D and 3D, and adapts to your node hierarchy, whatever it may be.<br><br>The result: real-time cutscenes can be scripted entirely through dialogues by alternating spoken lines and cutscene commands. Winning a movie award by making video games has never been easier!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile has-light-green-cyan-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:0;padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70);grid-template-columns:44% auto\"><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Your-UI-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Your-UI-Example.png\" alt=\"\" class=\"wp-image-3709 size-full\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Your-UI-Example.png 1024w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Your-UI-Example-300x300.png 300w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Your-UI-Example-150x150.png 150w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Your-UI-Example-768x768.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong><strong>Effects &amp; Backgrounds<\/strong><\/strong><br><br>Just like media and cutscenes, commands are provided to play visual effect animations on screen, such as color flashes, fading to black, shaking, or any other effects you wish to achieve.<br><br>Commands also make it possible to change or animate backgrounds. And not only that, but Candy Dialogue Engine supports any number of background layers, and can use either a general AnimationTree for all layers, or AnimationPlayer nodes for individual layers.<\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>LLM <strong>(AI) &amp; TTS <\/strong>Support<\/strong><br><br>Games are starting to use Large Language Models to generate character speech, and Candy Dialogue Engine is ready for them: enable LLM mode and Candy Dialogue Engine will query an LLM of your choosing, then display its response as character speech. Of course, you have the option to write your own code logic to craft custom prompts and use dialogue data to provide context, and you can add steps to evaluate LLM outputs for errors or problems, then edit or re-query as needed.<br><br>Likewise, if you integrate a Text-To-Speech solution into your game, whether built-in or through an external API, you can let Candy Dialogue Engine use it to speak lines out loud. BBCode and any other tags will be automatically omitted when passing a line to your TTS tool, or you can write and pass specially-written TTS line variants for fine-tuning of rhythm, tone, and other speech parameters!<br><br>And where you want further control, lines and characters can be individually forced or exempted to use LLM-generation and Text-To-Speech, regardless of the general settings.<br><br><em>Note that connecting your game to an LLM API, integrating a TTS solution, and writing the query functions is left to your care, as this is highly specific to each project and outside the scope of a dialogue system. If you have no experience implementing such features, it can be accomplished within an hour with AI assistance.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Game State Tracking<\/strong><br><br>For projects that use a Game State tracker, Candy Dialogue Engine features an externalized function that can be customized to modify Game State appropriately when dialogue starts or ends.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Saving &amp; Data Export<\/strong><br><br>Dialogue commands are provided to export or import any dialogue or project variables to or from text files, supporting a wide number of formats: JSON, TXT, CSV, CFG, BIN, INI, BASE64, and even TRES or RES.<br><br>Importing can be set to update runtime variables directly, or to store the data in any dictionary for other uses.<br><br>This makes it easy to print debug logs or dialogue history, or to create a save\/load system.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile has-light-green-cyan-background-color has-background\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:0;grid-template-columns:auto 55%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>Parallel Dialogues<\/strong><br><br>The engine core code is self-contained, making it possible to run multiple dialogues at the same time. Just attach the script to different nodes, each with their own display UI elements, and call the dialogue start function on any instance as needed.<br><br>No variable conflicts, no fighting for the same UI! Just cleanly separated conversations taking place in turns or simultaneously! Dialogue instances listen to their own signals, and can even be assigned their own input actions!<br><br>Perfect for NPC &lsquo;barks&rsquo;, groups having their own private conversations, multiplayer games, and even running background dialogues as mods!<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Cyberpunk-Combat.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Cyberpunk-Combat.png\" alt=\"\" class=\"wp-image-3606 size-full\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Cyberpunk-Combat.png 1024w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Cyberpunk-Combat-300x225.png 300w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Cyberpunk-Combat-768x576.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Modding<\/strong><br><br>Candy Dialogue Engine&rsquo;s capabilities natively enable it to be used as a modding layer:<br><br>Configure your game to run player-made dialogues at startup, at other strategic points, or even manually, and players will be able to use all the dialogue features to alter the game at runtime: modifying variables, calling functions, condition checks, and everything else!<br><br>Implementing this feature is absurdly easy: program your game to scan and detect player-made dialogues, and for each of them, automatically create an instance of the dialogue engine script, then run them all simultaneously. It&rsquo;s then up to your players &#8212; not you &#8212; to design these &lsquo;mod dialogues&rsquo; to work properly with your game.<br><br>The function for loading dialogues from .txt files is built-in, so you&rsquo;ll only need to write the folder scanning and engine instantiation code. You don&rsquo;t even need to expose variables or functions, since dialogues can access any of them from the project root.<br><br>And if you go further and implement a method for your game to load player-made Godot scenes and other resources, your players could even add their own custom UIs or import custom-made functions for their &lsquo;mod dialogues&rsquo; to call!<br><br>Not only is it easy to make your game moddable this way, but this will also work for games that were not designed with modding in mind from the beginning.<br><br>And in case it&rsquo;s not clear, using Candy Dialogue Engine for modding doesn&rsquo;t require using it for normal game dialogues: modding will work even for games that use third-party dialogue systems, home-made dialogue code, or even no dialogues at all.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Live Dialogue Editing<\/strong><br><br>Modify dialogues even as they are being processed at runtime! At their core, dialogues are just nested dictionaries and arrays, and Candy Dialogue Engine reads and processes a single line at a time. You can therefore make a dialogue line modify any upcoming lines, or even add or remove lines!<br><br>If that&rsquo;s more technical than you&rsquo;re comfortable with, this is an optional feature for special, advanced uses. Modifying dialogue scripts in any way at runtime is not required by any of Candy Dialogue Engine&rsquo;s functionalities.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Turing-Complete<\/strong><br><br>Dialogues can be used as a programming layer that can run any logic you may want, emulating functions: unrestrained variable modification, function calls (including to native Godot methods), signal emission\/detection, conditions, loops and the ability to transition directly to any line are all the tools you need.<br><br>Not only that, but this grants Candy Dialogue Engine meta-programming capabilities: these dialogue-functions can be created at runtime, and can be designed to create more of themselves. Account for the fact that dialogues can be edited live, and you can essentially have functions that modify themselves or others while they run!<br><br>And coming soon to v1.1: the ability for dialogues to create variables in external files, effectively unlocking unlimited runtime variable declaration.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Your Code<\/strong><br><br>Full access to the engine code is provided, allowing you to modify it any way you like. Creating your own custom commands or custom dialogue styles is done by adding elements to match statements and doesn&rsquo;t require modifying any of the existing code otherwise, making the process clean and risk-free.<br><br>Importantly, Candy Dialogue Engine adapts to your projects instead of expecting them to bend to it, and the ease of modifying the code guarantees that you can always make it fulfill your needs, without being dependent on official updates.<br><br>All code is written in GDScript, making it accessible to all developers working in Godot.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Seamless Integration<\/strong><br><br>Candy Dialogue Engine never touches the rest of your project: it doesn&rsquo;t modify your code, your variables or your scenes. Your project calls on it when needed, and tells it how to adapt. In other words, Candy Dialogue Engine is entirely self-contained, doing its thing while being aware of its environment.<br><br>The best measure of this is how easy it is to remove from your project: just delete the Candy Dialogue Engine scripts and scenes, and unless you&rsquo;ve specifically designed something to depend on Candy Dialogue Engine, nothing will be left broken or in need of reconfiguration.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Future<\/strong><br><br>Long-term reliability is essential when you choose a tool like this. It&rsquo;s what we&rsquo;d expect as users, so it&rsquo;s what we&rsquo;re determined to provide:<br><br>\u2022 Candy Dialogue Engine will always be updated to support new Candy Arts products where relevant, and to remain compatible with Godot 4.<br><br>\u2022 Additional features are planned and in the works, including multiple new dialogue display modes. See our <a href=\"https:\/\/candy-arts.com\/index.php\/roadmap\/\" data-type=\"page\" data-id=\"2869\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>roadmap<\/strong><\/a> for details.<br><br>\u2022 We also listen to user feedback: in fact, we&rsquo;re counting on it! We&rsquo;ll gladly add requested features or improve support for unique project needs.<br><br>\u2022 Importantly, we want to ensure updates will always remain compatible with your dialogues, so that you never have to choose between re-editing all your work or passing up on new features. The code is carefully crafted to be future-proof, and in a worst-case scenario we&rsquo;d be able to provide patching tools to automatically update your dialogues in a couple of clicks.<br><br>\u2022 And the absolute guarantee: you can always modify the code yourself to fix any issues or customize features. We have no intention of letting bugs linger and we have long-term plans for Candy DE and Candy Arts, but you can rest easy knowing you don&rsquo;t depend on us.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-group has-pale-cyan-blue-background-color has-background is-vertical is-layout-flex wp-container-core-group-is-layout-6274ffc8 wp-block-group-is-layout-flex\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--70)\">\n<p class=\"wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\"><strong>Candy Dialogue Creator<\/strong><br><br>Instead of featuring an in-Godot UI, Candy Dialogue Engine relies on the standalone <strong><a href=\"https:\/\/candy-arts.com\/index.php\/candy-dialogue-creator\/\" data-type=\"page\" data-id=\"2511\" target=\"_blank\" rel=\"noreferrer noopener\">Candy Dialogue Creator<\/a><\/strong> &#8212; a GUI that makes dialogue writing and translating fast and easy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\"><strong>Among its notable features:<\/strong><br>\u2022 Lines can be added in one click or moved or duplicated just as easily.<br>\u2022 Writing doesn&rsquo;t require typing special syntax.<br>\u2022 Read your project files to display previews of media files like portraits and voice, or to generate data lists you can select from.<br>\u2022 Create custom presets for lines, data or text strings, which you can insert repeatedly in one press of a button.<br>\u2022 Export dialogues directly to your project folders, including a one-click quick-testing option, and even provides various options to merge different dialogues into one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">For teams and studios, it also enables writers and translators to work without any coding experience and without any direct access to the source project files.<\/p>\n\n\n\n<div class=\"wp-block-columns are-vertically-aligned-top is-layout-flex wp-container-core-columns-is-layout-995f960e wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image aligncenter size-large\" style=\"margin-left:var(--wp--preset--spacing--70)\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/Candy-DC-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/Candy-DC-Example-1024x576.png\" alt=\"\" class=\"wp-image-4417\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/Candy-DC-Example-1024x576.png 1024w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/Candy-DC-Example-300x169.png 300w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/Candy-DC-Example-768x432.png 768w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/Candy-DC-Example-1536x864.png 1536w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/Candy-DC-Example.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image aligncenter size-large\" style=\"margin-left:var(--wp--preset--spacing--70)\"><a href=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Writer-Example.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Writer-Example-1024x576.png\" alt=\"\" class=\"wp-image-3880\" srcset=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Writer-Example-1024x576.png 1024w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Writer-Example-300x169.png 300w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Writer-Example-768x432.png 768w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Writer-Example-1536x864.png 1536w, https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/02\/Writer-Example.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The standalone design offers more stability, removes the need to do writing or translation work in the Godot Editor, and works great for multi-monitor setups where you can work on your project on one screen, and edit dialogues on another.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"padding-bottom:0\">The Candy Dialogue Creator is open-source <strong>(MIT License) <\/strong>and completely free, so you may use it as much as you like, any way you like: change the look of the UI, add custom features or create your own edition. It can even be integrated directly into your game to be accessed at runtime!<br><br>That all being said, <strong>dialogues are editor-agnostic<\/strong>: they&rsquo;re just dictionaries in GDScript format. This means that if you don&rsquo;t want to use the Candy Dialogue Creator, you can create your own software\/plugin\/GUI, or even just use a text or spreadsheet editor. Whatever solution you choose, it just needs to create a text file with dialogues formatted the way Candy Dialogue Engine expects.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Pricing<\/strong><br><br>Free Indie License (Indie projects, max \u20ac5 000 budget, non-commercial use only): <strong>Free<\/strong><br>Starter Indie License (Indie projects, max \u20ac5 000 budget, commercial use authorized): <s>\u20ac100<\/s> <strong>\u20ac50 during early release<\/strong><br>Pro Indie License (Indie projects, max \u20ac25 000 budget, commercial use authorized): <s>\u20ac500<\/s> <strong>\u20ac400 during early release<\/strong><br>Studio License (all projects, unlimited budget, commercial use authorized): <strong>2.5% royalties<\/strong>.<br><br>Features are identical across <strong>all<\/strong> licenses.<br>Indie Licenses are valid for one individual. They last a lifetime and can be used by the same license holder for unlimited projects without additional payment.<br>Studio Licenses apply per project and have no seat limits. Royalties are calculated only on the project&rsquo;s direct revenue. Studio projects that earn 0 pay 0.<br><br>See the <a href=\"https:\/\/candy-arts.com\/index.php\/indie-project-checklist\/\" data-type=\"page\" data-id=\"4504\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Indie Project Checklist<\/strong><\/a> to determine if your project qualifies as Indie.<br>See our <strong><a href=\"https:\/\/candy-arts.com\/index.php\/licensing\/\" data-type=\"page\" data-id=\"2493\" target=\"_blank\" rel=\"noreferrer noopener\">Licensing<\/a><\/strong> page for more details.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-58cb00a0 wp-block-buttons-is-layout-flex\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);padding-right:0;padding-bottom:var(--wp--preset--spacing--40);padding-left:0\">\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link has-palette-color-4-color has-vivid-green-cyan-background-color has-text-color has-background has-link-color wp-element-button\" href=\"https:\/\/github.com\/Candy-Arts\/Candy-Dialogue-Engine\" style=\"border-style:none;border-width:0px\" target=\"_blank\" rel=\"noreferrer noopener\">Free Download<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link has-vivid-cyan-blue-background-color has-background wp-element-button\" href=\"https:\/\/candyarts.gumroad.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Commercial License<\/a><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"border-top-left-radius:48px;border-top-right-radius:48px;border-bottom-left-radius:48px;border-bottom-right-radius:48px;background-color:#ffb5ce;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--70);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--70)\"><strong>Compatibility<\/strong><br><br><strong>Godot:<\/strong><br>Candy Dialogue Engine is compatible with Godot Engine 4.<br>\u2022 It was developed with Godot 4.5, tested with 4.5 and 4.6.<br>\u2022 Based on the official Godot <a href=\"https:\/\/docs.godotengine.org\/en\/stable\/tutorials\/migrating\/index.html\" data-type=\"link\" data-id=\"https:\/\/docs.godotengine.org\/en\/stable\/tutorials\/migrating\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>upgrade documentation<\/strong><\/a>, it should be fully compatible with all Godot 4 subversions.<br>\u2022 It will always be updated to maintain compatibility with newer Godot versions.<br><br><strong>Operating System &amp; Hardware:<\/strong><br>Dependent on Godot: hardware and operating systems that can run Godot can run Candy Dialogue Engine.<br><strong><br>Performance:<\/strong><br>Candy Dialogue Engine is very light: it mainly just displays text in RichTextLabels, assigns textures to nodes, and plays media and animations in VideoStreamPlayer, AudioStreamPlayer or AnimationPlayer nodes. None of its processes are heavy in computing power or memory.<\/p>\n\n\n\n<p class=\"has-text-align-center has-text-color has-small-font-size wp-block-paragraph\" style=\"border-style:none;border-width:0px;color:#818181;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\"><em>Screenshots on this page are provided for illustrative purposes. As such, they may include ai-generated art assets<\/em>, <em>such as characters and backgrounds, overlaid with UI elements using Candy Dialogue Engine&rsquo;s capabilities.<\/em> <em>Depicted art assets are not included with Candy Dialogue Engine.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Candy Dialogue Engine was first published in March 2026 and is in early release until July 2026.This means all advertised features are complete and we&rsquo;ve fixed all issues we could find during testing, but some edge-case bugs may exist.These bugs may only become apparent by implementing it in dozens of different projects, so we rely [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2486","page","type-page","status-publish","hentry"],"blocksy_meta":{"background":{"background_type":"color","background_pattern":"type-1","background_image":{"attachment_id":null,"x":0,"y":0},"gradient":"linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)","background_repeat":"repeat","background_size":"auto","background_attachment":"scroll","patternColor":{"default":{"color":"#e5e7ea"}},"overlayColor":{"default":{"color":"CT_CSS_SKIP_RULE"}},"backgroundColor":{"default":{"color":"#ffffff"}}},"content_style_source":"inherit","styles_descriptor":{"styles":{"desktop":"[data-prefix=\"single_page\"] {background-color:#ffffff;background-image:none;}","tablet":"","mobile":""},"google_fonts":[],"version":6},"page_structure_type":"default","has_hero_section":"default","pageTitleFontColor":{"default":{"color":"var(--theme-palette-color-8)"}},"hero_elements":[{"id":"custom_title","enabled":true,"heading_tag":"h1","title":"Accueil","__id":"3pcL3_cIMDgNiUH9RfPWw"},{"id":"custom_description","enabled":true,"description_visibility":{"desktop":true,"tablet":true,"mobile":false},"__id":"6iI968pM4mGVtWCHIPu9v"},{"id":"custom_meta","enabled":false,"meta_elements":[{"id":"author","enabled":true,"label":"Par","has_author_avatar":"yes","avatar_size":25},{"id":"post_date","enabled":true,"label":"Le","date_format_source":"default","date_format":"M j, Y"},{"id":"updated_date","enabled":false,"label":"Le","date_format_source":"default","date_format":"M j, Y"},{"id":"categories","enabled":false,"label":"Dans","style":"simple"},{"id":"comments","enabled":true}],"page_meta_elements":{"joined":true,"articles_count":true,"comments":true},"__id":"L8S0mjnyE1o-v2R9BNbSs"},{"id":"breadcrumbs","enabled":false,"__id":"d7vPgOutF0eioar-gogxb"}],"hero_section":"type-2"},"_links":{"self":[{"href":"https:\/\/candy-arts.com\/index.php\/wp-json\/wp\/v2\/pages\/2486","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/candy-arts.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/candy-arts.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/candy-arts.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/candy-arts.com\/index.php\/wp-json\/wp\/v2\/comments?post=2486"}],"version-history":[{"count":770,"href":"https:\/\/candy-arts.com\/index.php\/wp-json\/wp\/v2\/pages\/2486\/revisions"}],"predecessor-version":[{"id":4818,"href":"https:\/\/candy-arts.com\/index.php\/wp-json\/wp\/v2\/pages\/2486\/revisions\/4818"}],"wp:attachment":[{"href":"https:\/\/candy-arts.com\/index.php\/wp-json\/wp\/v2\/media?parent=2486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}