{"id":2479,"date":"2025-11-30T21:03:40","date_gmt":"2025-11-30T20:03:40","guid":{"rendered":"https:\/\/candy-arts.com\/?page_id=2479"},"modified":"2026-08-24T13:54:55","modified_gmt":"2026-08-24T11:54:55","slug":"products","status":"publish","type":"page","link":"https:\/\/candy-arts.com\/","title":{"rendered":"Candy Arts"},"content":{"rendered":"\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/03\/Candy-Logo-Wide-2-Redux-Transparent-Narrow-1024x375.png\" alt=\"\" class=\"wp-image-4150\"\/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" style=\"margin-top:0;margin-bottom:0\"\/>\n\n\n\n<p class=\"has-text-align-center has-background wp-block-paragraph\" style=\"border-style:none;border-width:0px;background-color:#8dd2fc8a;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50)\"><em>When created with care and passion, professional games can be masterpieces of combined talent, while indie games can be true gems of imagination and creativity.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" style=\"margin-top:0px;margin-bottom:0px\"\/>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"hc-wrapper\">\n  <button class=\"hc-arrow hc-prev\" aria-label=\"Previous\">\u276e<\/button>\n  <div class=\"hc-viewport\">\n    <div class=\"hc-track\">\n      <a class=\"hc-item\" href=\"https:\/\/candy-arts.com\/index.php\/candy-dialogue-creator\/\">\n        <img decoding=\"async\" class=\"hc-base\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/08\/Store-Screenshot-A.webp\" alt=\"\">\n        <img decoding=\"async\" class=\"hc-alt\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/08\/Candy-DC-Store-Thumbnail.webp\" alt=\"\">\n      <\/a>\n      <a class=\"hc-item\" href=\"https:\/\/candy-arts.com\/index.php\/candy-triggers\/\">\n        <img decoding=\"async\" class=\"hc-base\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/08\/Example-3.webp\" alt=\"\">\n        <img decoding=\"async\" class=\"hc-alt\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/08\/Candy-Triggers-Store-Thumbnail.webp\" alt=\"\">\n      <\/a>\n      <a class=\"hc-item\" href=\"https:\/\/candy-arts.com\/index.php\/candy-loot\/\">\n        <img decoding=\"async\" class=\"hc-base\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/08\/Candy-Loot-Carousel-1.webp\" alt=\"\">\n        <img decoding=\"async\" class=\"hc-alt\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/08\/Candy-Loot-Store-Thumbnail.webp\" alt=\"\">\n      <\/a>\n      <a class=\"hc-item\" href=\"https:\/\/candy-arts.com\/index.php\/candy-llm\/\">\n        <img decoding=\"async\" class=\"hc-base\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/08\/Example_1R.webp\" alt=\"\">\n        <img decoding=\"async\" class=\"hc-alt\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/08\/Candy-LLM-Store-Thumbnail.webp\" alt=\"\">\n      <\/a>\n      <a class=\"hc-item\" href=\"https:\/\/candy-arts.com\/index.php\/candy-tools\/\">\n        <img decoding=\"async\" class=\"hc-base\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/08\/Candy-Tools-Example-1.webp\" alt=\"\">\n        <img decoding=\"async\" class=\"hc-alt\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/08\/Store-Thumbnail.webp\" alt=\"\">\n      <\/a>\n      <a class=\"hc-item\" href=\"https:\/\/candy-arts.com\/index.php\/candy-dialogue-engine\/\">\n        <img decoding=\"async\" class=\"hc-base\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/08\/Store-Screenshot-3.webp\" alt=\"\">\n        <img decoding=\"async\" class=\"hc-alt\" src=\"https:\/\/candy-arts.com\/wp-content\/uploads\/2026\/08\/Candy-DE-Store-Thumbnail.webp\" alt=\"\">\n      <\/a>\n    <\/div>\n  <\/div>\n  <button class=\"hc-arrow hc-next\" aria-label=\"Next\">\u276f<\/button>\n<\/div>\n\n<style>\n.hc-wrapper{\n  display:flex; align-items:center; gap:10px;\n  width:100%; margin:0 auto 20px;\n}\n.hc-viewport{\n  flex:1 1 auto; min-width:0; overflow:hidden;\n  -webkit-mask-image:linear-gradient(to right,transparent 0,black 60px,black calc(100% - 60px),transparent 100%);\n          mask-image:linear-gradient(to right,transparent 0,black 60px,black calc(100% - 60px),transparent 100%);\n}\n.hc-track{\n  display:flex; flex-wrap:nowrap; gap:14px;\n  width:max-content; will-change:transform;\n}\n.hc-item{\n  display:block; position:relative;\n  flex:0 0 320px; aspect-ratio:16\/9;\n  overflow:hidden; border-radius:8px;\n}\n.hc-item.is-active{ opacity:1; transform:scale(1); }\n.hc-item img{\n  position:absolute; inset:0; width:100%; height:100%;\n  object-fit:cover; transition:opacity .4s ease;\n}\n.hc-alt{ opacity:0; }\n.hc-item:hover .hc-alt{ opacity:1; }\n.hc-item:hover .hc-base{ opacity:0; }\n.hc-arrow{\n  flex:0 0 auto; background:#222; color:#fff; border:none;\n  border-radius:50%; width:40px; height:40px; font-size:18px; cursor:pointer;\n}\n.hc-arrow:hover{ background:#555; }\n@media (max-width:700px){ .hc-item{ flex-basis:240px; } }\n<\/style>\n\n<script>\n(function () {\n  function init() {\n    var wrapper = document.querySelector('.hc-wrapper');\n    if (!wrapper) return;\n    var viewport = wrapper.querySelector('.hc-viewport');\n    var track    = wrapper.querySelector('.hc-track');\n    var prev     = wrapper.querySelector('.hc-prev');\n    var next     = wrapper.querySelector('.hc-next');\n\n    var originals = Array.prototype.slice.call(track.children);\n    var n = originals.length;\n    if (!n) return;\n\n    var COPIES = 2;\n    for (var c = 0; c < COPIES; c++) {\n      originals.forEach(function (el) { track.appendChild(el.cloneNode(true)); });\n      originals.slice().reverse().forEach(function (el) {\n        track.insertBefore(el.cloneNode(true), track.firstChild);\n      });\n    }\n\n    var index = COPIES * n;\n    var busy = false;\n\n    function stride() {\n      var a = track.children[0].getBoundingClientRect();\n      var b = track.children[1].getBoundingClientRect();\n      return (b.left - a.left) || a.width;\n    }\n\n    function markActive() {\n      for (var i = 0; i < track.children.length; i++) {\n        track.children[i].classList.toggle('is-active', i === index);\n      }\n    }\n\n    function apply(animate) {\n      var s = stride();\n      var w = track.children[0].getBoundingClientRect().width;\n      var x = (viewport.clientWidth \/ 2) - (w \/ 2) - (index * s);\n      track.style.transition = animate ? 'transform .45s cubic-bezier(.4,0,.2,1)' : 'none';\n      track.style.transform  = 'translateX(' + x + 'px)';\n      if (!animate) void track.offsetWidth; \/\/ flush, so the next move animates\n      markActive();\n    }\n\n    function step(dir) {\n      if (busy) return;\n      busy = true;\n      index += dir;\n      apply(true);\n    }\n\n    track.addEventListener('transitionend', function (e) {\n      if (e.propertyName !== 'transform' || e.target !== track) return;\n      busy = false;\n      if (index < COPIES * n || index >= (COPIES + 1) * n) {\n        index = COPIES * n + (((index % n) + n) % n);\n        apply(false);\n      }\n    });\n\n    prev.addEventListener('click', function () { step(-1); });\n    next.addEventListener('click', function () { step(1); });\n\n    var t;\n    window.addEventListener('resize', function () {\n      clearTimeout(t);\n      t = setTimeout(function () { apply(false); }, 100);\n    });\n\n    var imgs = track.querySelectorAll('img');\n    var left = imgs.length;\n    if (!left) apply(false);\n    imgs.forEach(function (img) {\n      if (img.complete) { if (--left <= 0) apply(false); }\n      else img.addEventListener('load', function () { if (--left <= 0) apply(false); }, { once: true });\n    });\n    apply(false);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n<\/script>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p class=\"has-text-align-center has-medium-font-size wp-block-paragraph\"><strong>Candy Arts is an independent software studio with a focus on offering useful assets for games made with Godot Engine 4.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We started with the intention of making games in Godot as a hobby. In the course of that, we created various code assets for our own use, until we eventually realized that they could benefit other developers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That's why we launched Candy Arts -- our passion is creativity, and we want to help developers give life to their imagination by providing tools that make creating games much easier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our assets are designed around five core principles:<\/p>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:32px;border-top-right-radius:32px;border-bottom-left-radius:32px;border-bottom-right-radius:32px\">\u2022 <strong>Simple --<\/strong> Tools should require little learning and be easy to use. Complexity should never exceed that of your own project.<br>\u2022 <strong>Powerful --<\/strong> A valuable tool should provide maximum potential: everything you may want to do within its scope, it should help you do it.<br><strong>\u2022 Adaptive --<\/strong> Tools should adapt and fit into your project, they shouldn't require your project to be built around them or ever limit your creative vision.<br><strong>\u2022 Extensible --<\/strong> When you require more, you should always be able to expand features with ease.<br><strong>\u2022 Transparent --<\/strong> Code should feel like your own, not like a foreign system living inside your project: fully accessible, well-structured, and free of third-party dependencies.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Why Trust Candy Arts<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The hard part with choosing third-party add-ons is figuring out if an asset will actually fulfill your needs, and if it's worth your time and money. Will you be able to rely on it completely and never look back, or will you hit limitations that will make it unsuitable for your project?<\/p>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background wp-block-paragraph\" style=\"border-top-left-radius:32px;border-top-right-radius:32px;border-bottom-left-radius:32px;border-bottom-right-radius:32px\"><strong>\u2022 You know exactly what our assets do, and when they do it.<\/strong><br>They don't modify your projects or do things in the background that you're not aware of: they're just scenes and scripts, contained inside their own folders, which your project uses when needed.<br><br><strong>\u2022 Our assets adapt to projects.<\/strong><br>Their self-contained design means they act like modules: they do their work when called upon, then they defer back to your project and let it take over once more. To ensure compatibility with any project, they allow you to configure project-specific elements, such as variables they may need to refer to.<br><br><strong>\u2022 Our assets are designed to cover as many use-cases as possible.<\/strong><br>When we create assets, we always ask ourselves what developers will want to do with this kind of tool, and how to give these abilities. There's two ways to achieve this kind of flexibility: include a large number of features, or a small number of options that can work together to achieve a wide number of things. Our assets combine both methods strategically to achieve an ideal blend of capability and ease-of-use.<br><br><strong>\u2022 Our assets stay in their lane but can expand.<\/strong><br>Many assets make the mistake of trying to reach beyond their scope, and this ultimately narrows the cases they're usable for. Ours know exactly how much they should do, and when they should stop and let your project handle the rest. If you need more, they offer easy expansion options through customizable dictionaries, match statements and hook functions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">All in all, that means you don't have to worry if our assets are compatible with your project or other assets, or whether they can do what you need them for.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Licensing<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To support small indies and provide flexibility, we offer two payment models for the use of our assets:<\/p>\n\n\n\n<div class=\"wp-block-columns has-background is-layout-flex wp-container-core-columns-is-layout-995f960e wp-block-columns-is-layout-flex\" style=\"border-top-left-radius:32px;border-top-right-radius:32px;border-bottom-left-radius:32px;border-bottom-right-radius:32px;background:linear-gradient(90deg,rgb(123,220,181) 0%,rgb(123,220,181) 46%,rgb(142,209,252) 51%,rgb(142,209,252) 100%)\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>Indie Tiers<\/strong> (One-Time Fee)<br><em>For small to medium projects<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 Pay once, make unlimited projects.<br>\u2022 Requires small team and small budget.<br>\u2022 No revenue limits.<br>\u2022 Complete feature access.<br>\u2022 Commercial use allowed.<br>\u2022 Major Assets free for non-commercial use.<br>\u2022 Upgrade to Studio Tier at anytime.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>Studio Tier<\/strong> (Royalties)<br><em>For medium to large projects<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 Royalty rates on gross revenue.<br>\u2022 No risk: no upfront fees or advance payments, pay as you earn.<br>\u2022 No seat or budget limits.<br>\u2022 Complete feature access.<br>\u2022 No payments for non-commercial projects: 0 revenue = 0 royalties.<br>\u2022 Minor Assets free when project royalty rate &gt;= 1%<\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">For more information, see our <a href=\"https:\/\/candy-arts.com\/index.php\/licensing\/\" data-type=\"link\" data-id=\"https:\/\/candy-arts.com\/index.php\/licensing\/\"><strong>general licensing overview<\/strong><\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We're excited to see what you'll create and to support you in your projects!<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Blender Add-Ons<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We also offer add-ons for Blender. These are usually add-ons we create for our own use, but which we provide publicly in case it may help other creators.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our Blender add-ons are licensed separately from our Major and Minor Assets, under GPLv3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Some of these add-ons are provided for free, while others have a small minimum price. We hope users will choose to support us by paying an amount they can afford and find fair, so that we can continue creating more add-ons.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In compliance with the GPLv3, there are no tiers, royalties, seats or other conditions for our Blender add-ons: you can make unlimited use of them once you obtain them.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When created with care and passion, professional games can be masterpieces of combined talent, while indie games can be true gems of imagination and creativity. \u276e \u276f Candy Arts is an independent software studio with a focus on offering useful assets for games made with Godot Engine 4. We started with the intention of making [&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-2479","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":"rgba(255, 255, 255, 0)"}}},"has_hero_section":"default","pageTitleFontColor":{"default":{"color":"var(--theme-palette-color-8)"}},"styles_descriptor":{"styles":{"desktop":"[data-prefix=\"single_page\"] {background-color:rgba(255, 255, 255, 0);background-image:none;}","tablet":"","mobile":""},"google_fonts":[],"version":7}},"_links":{"self":[{"href":"https:\/\/candy-arts.com\/index.php\/wp-json\/wp\/v2\/pages\/2479","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=2479"}],"version-history":[{"count":188,"href":"https:\/\/candy-arts.com\/index.php\/wp-json\/wp\/v2\/pages\/2479\/revisions"}],"predecessor-version":[{"id":5929,"href":"https:\/\/candy-arts.com\/index.php\/wp-json\/wp\/v2\/pages\/2479\/revisions\/5929"}],"wp:attachment":[{"href":"https:\/\/candy-arts.com\/index.php\/wp-json\/wp\/v2\/media?parent=2479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}