<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Dungeon Architect Blog]]></title><description><![CDATA[Procedural Level Generation System]]></description><link>https://blog.dungeonarchitect.dev/</link><image><url>https://blog.dungeonarchitect.dev/favicon.png</url><title>Dungeon Architect Blog</title><link>https://blog.dungeonarchitect.dev/</link></image><generator>Ghost 5.68</generator><lastBuildDate>Fri, 03 Apr 2026 16:59:59 GMT</lastBuildDate><atom:link href="https://blog.dungeonarchitect.dev/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Release Notes Version 3.4.0]]></title><description><![CDATA[<h3 id="landscape-transformer">Landscape Transformer</h3><p>Non-destructive landscape modifications using edit layers - seamlessly blend dungeon layouts with existing terrain and paint material layers based on distance from dungeon boundaries</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/J59kMpTt9K8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Dungeon Architect 3.4 - Landscape Modifiers Showcase (UE5)"></iframe></figure><h2 id="canvas-theme">Canvas Theme</h2><p>Canvas Minimap&apos;s LayoutDrawPercent parameter has been moved from the component to the Canvas Minimap Theme assets, since this is art</p>]]></description><link>https://blog.dungeonarchitect.dev/release-notes-version-3-4-0/</link><guid isPermaLink="false">69746f832df95404a892d6ee</guid><dc:creator><![CDATA[Ali Akbar]]></dc:creator><pubDate>Sat, 24 Jan 2026 07:10:45 GMT</pubDate><content:encoded><![CDATA[<h3 id="landscape-transformer">Landscape Transformer</h3><p>Non-destructive landscape modifications using edit layers - seamlessly blend dungeon layouts with existing terrain and paint material layers based on distance from dungeon boundaries</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/J59kMpTt9K8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Dungeon Architect 3.4 - Landscape Modifiers Showcase (UE5)"></iframe></figure><h2 id="canvas-theme">Canvas Theme</h2><p>Canvas Minimap&apos;s LayoutDrawPercent parameter has been moved from the component to the Canvas Minimap Theme assets, since this is art specific configuration and doesn&apos;t need to be set everytime in the actors</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2026/01/image-1.png" class="kg-image" alt loading="lazy" width="1734" height="1405" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2026/01/image-1.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2026/01/image-1.png 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2026/01/image-1.png 1600w, https://blog.dungeonarchitect.dev/content/images/2026/01/image-1.png 1734w" sizes="(min-width: 720px) 720px"></figure><h2 id="bug-fixes">Bug Fixes</h2><ul><li>Grid Builder&apos;s Pattern matcher was not working correctly when the dungeon was not in the origin.    This also fixes the cropping issues at the edge of the grid builder dungeons</li><li>Recompiled all the sample theme files to upgrade them to the lastest version.     If you have an older theme file from a year ago, open it atleast once in the theme editor and resave to upgrade.<br></li></ul>]]></content:encoded></item><item><title><![CDATA[Release Notes - Version 3.2.0]]></title><description><![CDATA[<h2 id="multiplayer-sample">Multiplayer Sample</h2><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.dungeonarchitect.dev/content/images/2025/12/01.png" width="2000" height="1145" loading="lazy" alt srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2025/12/01.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2025/12/01.png 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2025/12/01.png 1600w, https://blog.dungeonarchitect.dev/content/images/2025/12/01.png 2298w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.dungeonarchitect.dev/content/images/2025/12/02.png" width="1599" height="901" loading="lazy" alt srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2025/12/02.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2025/12/02.png 1000w, https://blog.dungeonarchitect.dev/content/images/2025/12/02.png 1599w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.dungeonarchitect.dev/content/images/2025/12/03.webp" width="2000" height="1098" loading="lazy" alt srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2025/12/03.webp 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2025/12/03.webp 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2025/12/03.webp 1600w, https://blog.dungeonarchitect.dev/content/images/size/w2400/2025/12/03.webp 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.dungeonarchitect.dev/content/images/2025/12/04-1.webp" width="2000" height="1038" loading="lazy" alt srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2025/12/04-1.webp 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2025/12/04-1.webp 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2025/12/04-1.webp 1600w, https://blog.dungeonarchitect.dev/content/images/size/w2400/2025/12/04-1.webp 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>A complete networked dungeon sample is now available in the Launch Pad, featuring server browser, lobby system, and late-join support.</p><p>The Build System coordinates dungeon generation across server and clients - handling login, instructing clients to build locally, waiting for completion (while players remain in spectator mode), then</p>]]></description><link>https://blog.dungeonarchitect.dev/release-notes-version-3-2-0/</link><guid isPermaLink="false">693be8e72df95404a892d6c0</guid><dc:creator><![CDATA[Ali Akbar]]></dc:creator><pubDate>Fri, 12 Dec 2025 11:13:03 GMT</pubDate><content:encoded><![CDATA[<h2 id="multiplayer-sample">Multiplayer Sample</h2><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.dungeonarchitect.dev/content/images/2025/12/01.png" width="2000" height="1145" loading="lazy" alt srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2025/12/01.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2025/12/01.png 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2025/12/01.png 1600w, https://blog.dungeonarchitect.dev/content/images/2025/12/01.png 2298w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.dungeonarchitect.dev/content/images/2025/12/02.png" width="1599" height="901" loading="lazy" alt srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2025/12/02.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2025/12/02.png 1000w, https://blog.dungeonarchitect.dev/content/images/2025/12/02.png 1599w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.dungeonarchitect.dev/content/images/2025/12/03.webp" width="2000" height="1098" loading="lazy" alt srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2025/12/03.webp 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2025/12/03.webp 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2025/12/03.webp 1600w, https://blog.dungeonarchitect.dev/content/images/size/w2400/2025/12/03.webp 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.dungeonarchitect.dev/content/images/2025/12/04-1.webp" width="2000" height="1038" loading="lazy" alt srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2025/12/04-1.webp 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2025/12/04-1.webp 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2025/12/04-1.webp 1600w, https://blog.dungeonarchitect.dev/content/images/size/w2400/2025/12/04-1.webp 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>A complete networked dungeon sample is now available in the Launch Pad, featuring server browser, lobby system, and late-join support.</p><p>The Build System coordinates dungeon generation across server and clients - handling login, instructing clients to build locally, waiting for completion (while players remain in spectator mode), then spawning everyone as pawns.</p><p>Session management, lobby, and server browser code are provided as reference implementations to adapt for your own game.</p><h2 id="build-system-overhaul">Build System Overhaul</h2><ul><li>The build system handles most of the heavylifting of server and cilent sync and also works in single player mode.   <a href="https://docs.dungeonarchitect.dev/unreal/build-system/build-system-overview/?ref=blog.dungeonarchitect.dev" rel="noreferrer">Documentation</a></li><li>Two build modes: &quot;wait for all clients&quot; and &quot;direct start&quot;</li><li>Removed <code>ADungeonGameMode</code> in favor of components - attach to your existing game mode instead</li></ul><h2 id="new-features">New Features</h2><ul><li>Navigation Support in Theme Nodes - Theme mesh nodes now have a flag to affect navigation for both instanced and non-instanced actors/blueprints</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2025/12/image-5.png" class="kg-image" alt loading="lazy" width="1029" height="645" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2025/12/image-5.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2025/12/image-5.png 1000w, https://blog.dungeonarchitect.dev/content/images/2025/12/image-5.png 1029w" sizes="(min-width: 720px) 720px"></figure><ul><li>Dungeon Streaming - Spawn rooms are kept as always resident to avoid race conditions for late-spawning actors</li></ul><h2 id="fixes">Fixes</h2><ul><li>Canvas no longer affects fog of war when using spectator pawn.</li><li>HISM meshes now correctly include actors spawned by the Multi Mesh theme node</li></ul><h2 id="breaking-changes">Breaking Changes</h2><ul><li>ADungeonGameMode has been removed - use the <a href="https://docs.dungeonarchitect.dev/unreal/build-system/build-system-overview?ref=blog.dungeonarchitect.dev" rel="noreferrer">build system</a> components instead</li><li>Add a DungeonCanvas component to your Dungeon actor if you want to use the minimap framework - it is no longer added by default</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2025/12/image-3.png" class="kg-image" alt loading="lazy" width="838" height="679" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2025/12/image-3.png 600w, https://blog.dungeonarchitect.dev/content/images/2025/12/image-3.png 838w" sizes="(min-width: 720px) 720px"></figure>]]></content:encoded></item><item><title><![CDATA[Release Notes - Version 3.0.0]]></title><description><![CDATA[<figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/KVH-zzC8TV4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Dungeon Architect 3.0 Launch Trailer | GPU Voxel Engine for UE5"></iframe></figure><ul>
<li>New: GPU Voxel Engine - Generate infinite organic worlds (Caves, Floating Islands) using GPU compute shaders with full Nanite &amp; Lumen support</li>
<li>New: Interactive Theme Editor - Design themes directly in the Level Viewport using drag-and-drop workflows with real-time propagation</li>
<li>New: Cell Flow Builder - New Voronoi-based layout generator for</li></ul>]]></description><link>https://blog.dungeonarchitect.dev/release-notes-version-3-0-0/</link><guid isPermaLink="false">691f12682df95404a892d6a6</guid><dc:creator><![CDATA[Ali Akbar]]></dc:creator><pubDate>Thu, 20 Nov 2025 13:07:05 GMT</pubDate><content:encoded><![CDATA[<figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/KVH-zzC8TV4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Dungeon Architect 3.0 Launch Trailer | GPU Voxel Engine for UE5"></iframe></figure><ul>
<li>New: GPU Voxel Engine - Generate infinite organic worlds (Caves, Floating Islands) using GPU compute shaders with full Nanite &amp; Lumen support</li>
<li>New: Interactive Theme Editor - Design themes directly in the Level Viewport using drag-and-drop workflows with real-time propagation</li>
<li>New: Cell Flow Builder - New Voronoi-based layout generator for organic, non-grid dungeon structures with dynamic height support</li>
<li>New: PCG Framework Integration - Use Flow Graphs to drive Unreal&apos;s PCG system (includes Electric Dreams integration samples)</li>
<li>New: &quot;Foundry&quot; Theme - A production-ready Industrial Sci-Fi theme asset pack included for free</li>
<li>New: Launch Pad Dashboard - Completely rewritten web-based dashboard for one-click access to samples and documentation</li>
<li>New: Unreal Engine 5.7 Support</li>
<li>New: Pattern Matcher improvements including new &quot;Copy Markers&quot; and &quot;Rename Markers&quot; nodes</li>
<li>Fix: Optimized scene provider to limit active latent tasks, preventing GPU overloads during heavy generation</li>
</ul>
<h1 id="quick-start">Quick Start</h1><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/eXI6MUaGIq4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Dungeon Architect Tutorial - Foundry, Ice Cave &amp; Voxel Sculpting (Unreal Engine)"></iframe></figure>]]></content:encoded></item><item><title><![CDATA[Release Notes - Version 2.33.0]]></title><description><![CDATA[<h2 id="dungeon-canvas-framework-rewrite">Dungeon Canvas Framework Rewrite</h2><p>The Minimap framework called <code>Dungeon Canvas</code> has been rewritten to be more efficient and flexible.    The <a href="https://docs.dungeonarchitect.dev/unreal/canvas-overview.html?ref=blog.dungeonarchitect.dev" rel="noreferrer">documentation</a> has been updated</p><h3 id="camera">Camera</h3><p><strong> </strong>The UI widget lets you choose a camera type, which allows you to focus on the player or NPC, have adaptive zoom based on the</p>]]></description><link>https://blog.dungeonarchitect.dev/release-2-33-0/</link><guid isPermaLink="false">66e3e2102df95404a892d5cf</guid><dc:creator><![CDATA[Ali Akbar]]></dc:creator><pubDate>Fri, 13 Sep 2024 07:37:45 GMT</pubDate><content:encoded><![CDATA[<h2 id="dungeon-canvas-framework-rewrite">Dungeon Canvas Framework Rewrite</h2><p>The Minimap framework called <code>Dungeon Canvas</code> has been rewritten to be more efficient and flexible.    The <a href="https://docs.dungeonarchitect.dev/unreal/canvas-overview.html?ref=blog.dungeonarchitect.dev" rel="noreferrer">documentation</a> has been updated</p><h3 id="camera">Camera</h3><p><strong> </strong>The UI widget lets you choose a camera type, which allows you to focus on the player or NPC, have adaptive zoom based on the velocity or show the entire dungeon.</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2024/09/image.png" class="kg-image" alt loading="lazy" width="916" height="739" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2024/09/image.png 600w, https://blog.dungeonarchitect.dev/content/images/2024/09/image.png 916w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://cdn.discordapp.com/attachments/234155775101108226/1272639453776707669/image.png?ex=66e493da&amp;is=66e3425a&amp;hm=6f20aa7a1ee60b97ec1ca123dbd3866c12c10d8e7aa181ef35f45f54478e491a&amp;=" class="kg-image" alt loading="lazy"></figure><p>You may override the canvas theme on the widget. Leave it blank to have it pick up the default theme provided in the Dungeon Actor</p><h3 id="shared-canvas-resources">Shared Canvas Resources</h3><p>Multiple UI widgets can share the same Dungeon Canvas resources (like layout textures, SDF textures etc) and apply different material themes on it with varying draw settings (like fog of war, camera settings, theme settings etc).  This reduces memory overhead and is faster as it requires less updates</p><h3 id="fog-of-war-rewrite">Fog of War Rewrite</h3><p>In the previous version, we were reading back the fog of war texture pixel states from the GPU back to the CPU for the pixels that the NPCs were on, and showing them when visible.  This is no longer required as we have a better approach that is faster and more visually appealing</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2024/09/image-1.png" class="kg-image" alt loading="lazy" width="1417" height="1495" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2024/09/image-1.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2024/09/image-1.png 1000w, https://blog.dungeonarchitect.dev/content/images/2024/09/image-1.png 1417w" sizes="(min-width: 720px) 720px"></figure><p></p><h3 id="expose-as-material">Expose as Material</h3><p>Apply your minimap materials on any world object.   Attach the <code>DungeonCanvasMaterialThemeBaker</code> component to any actor you&apos;d like to use this on,   choose a texture size and your desired draw settings (camera, fog of war settings etc).  This will render the minimap with the supplied theme and make the final material available to you, which you can apply anywhere in the world</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2024/09/image-4.png" class="kg-image" alt loading="lazy" width="1610" height="1226" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2024/09/image-4.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2024/09/image-4.png 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2024/09/image-4.png 1600w, https://blog.dungeonarchitect.dev/content/images/2024/09/image-4.png 1610w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2024/09/image-2.png" class="kg-image" alt loading="lazy" width="482" height="455"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2024/09/image-3.png" class="kg-image" alt loading="lazy" width="1072" height="611" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2024/09/image-3.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2024/09/image-3.png 1000w, https://blog.dungeonarchitect.dev/content/images/2024/09/image-3.png 1072w" sizes="(min-width: 720px) 720px"></figure><p>The Canvas Snap demo has two of these in the spawn room.    They both have their draw settings customized</p><figure class="kg-card kg-image-card"><img src="https://cdn.discordapp.com/attachments/234155775101108226/1284039290422034442/image.png?ex=66e52e47&amp;is=66e3dcc7&amp;hm=ce87914cfbe494585a35a0b06e697323b8bfe305d3ada3e5b28a4cceaea540b5&amp;=" class="kg-image" alt loading="lazy"></figure><p>The demo character carries a 3D panel showing the map in realtime</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2024/09/image-5.png" class="kg-image" alt loading="lazy" width="2000" height="1163" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2024/09/image-5.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2024/09/image-5.png 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2024/09/image-5.png 1600w, https://blog.dungeonarchitect.dev/content/images/size/w2400/2024/09/image-5.png 2400w" sizes="(min-width: 720px) 720px"></figure><hr><h2 id="automated-dungeon-build-system">Automated Dungeon Build System</h2><p>Automateically build you dungeons at runtime by checking the <code>Auto Build on Play</code> flag in your <code>Dungeon</code> actor in the scene</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2024/09/image-6.png" class="kg-image" alt loading="lazy" width="752" height="349" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2024/09/image-6.png 600w, https://blog.dungeonarchitect.dev/content/images/2024/09/image-6.png 752w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2024/09/image-7.png" class="kg-image" alt loading="lazy" width="738" height="621" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2024/09/image-7.png 600w, https://blog.dungeonarchitect.dev/content/images/2024/09/image-7.png 738w" sizes="(min-width: 720px) 720px"></figure><p>This avoids lots of blueprint boiler plate and gets you up and running quickly.   This works with all types of builders</p><h3 id="multiplayer-support">Multiplayer support</h3><p>Dungeons generated with this system fully support mulitplayer.    To make it work correctly on mulitplayer, your game mode must derive from <code>DungeonGameMode</code>.  Check the various canvas samples demos under <code>DungeonArchitect Content &gt; Samples/DA_Canvas_Demo/DA_Sample_Canvas_CellFlow_Grid.DA_Sample_Canvas_CellFlow_Grid</code></p><hr><h2 id="sgf-entrance-exit-constraints">SGF Entrance / Exit Constraints</h2><figure class="kg-card kg-image-card"><img src="https://cdn.discordapp.com/attachments/234155775101108226/1260116339104682015/image.png?ex=66e5294b&amp;is=66e3d7cb&amp;hm=c7556f6174ff98ebaf41bf76afc05c86b5a782662c71f00edc396b1a07484f95&amp;=" class="kg-image" alt loading="lazy"></figure><p>Tag the room connections in your modules as entrance or exit.  These are great for puzzle games (e.g. portal) or for controlling the flow of your dungeon room layouts</p><hr><h2 id="complete-changelog">Complete Changelog</h2><ul><li>New: Dungeon Canvas Framework has been rewritten to be more powerful and flexible. It is faster, takes up less memory, support for different camera types, minimap materials that can be applied to the world, multiple widgets can share the same dungeon canvas resources with different themes and a lot more. This also paves the way for future PCG integration</li><li>New: Updated documentation on <a href="https://docs.dungeonarchitect.dev/unreal/canvas-overview.html?ref=blog.dungeonarchitect.dev" rel="noreferrer noopener">Dungeon Canvas</a></li><li>New: Automated Dungeon Build System to automatically build your dungeons at runtime (also works on multiplayer). Control this from the Dungeon actor&apos;s detail panel. This avoids a lot of boilerplate blueprint code</li><li>New: SGF supports Entrance / Exit connection constraints</li><li>New: Grid Dungeon Platform Volumes optionally clamp the Z value of the generated dungeons. These are great if you want to align the height of the platforms with existing level geometry</li><li>New: Blueprint function <code>GetAllDungeonSpawnedActors</code> to fetch all the dungeon spawned actors in the scene</li><li>Fix: SGF Door actor correctly orients itself to the direction of the flow graph link its on. This was inconsistent in the past and the door actor would orient itself in the opposite direction, in some cases.</li><li>Fix: SGF Negation Volumes were not working correctly with the reverse flag</li><li>Fix: SGF <code>Create Path</code> node was ignoring the Node Creation constraint</li><li>Fix: Dungeon Canvas Room Shape Texture assets use SoftObject pointers to avoid cooking issues</li><li>Fix: SGF ModuleDB compilation crashed the editor in some cases</li></ul>]]></content:encoded></item><item><title><![CDATA[Release Notes - Version 2.31.1]]></title><description><![CDATA[<p>This is a maintaince release with a critical fix.   The last version <code>2.31.0</code> didn&apos;t deploy correctly on the marketplace and some of the flow graph samples were crashing.    Please update to the latest version</p><h2 id="critical-fix-flow-graph-samples-crash">Critical Fix: Flow Graph Samples Crash</h2><p>Some of the older flow graph</p>]]></description><link>https://blog.dungeonarchitect.dev/release-2-31-1/</link><guid isPermaLink="false">653bfc7813a36f9771d9927e</guid><dc:creator><![CDATA[Ali Akbar]]></dc:creator><pubDate>Fri, 27 Oct 2023 18:15:58 GMT</pubDate><content:encoded><![CDATA[<p>This is a maintaince release with a critical fix.   The last version <code>2.31.0</code> didn&apos;t deploy correctly on the marketplace and some of the flow graph samples were crashing.    Please update to the latest version</p><h2 id="critical-fix-flow-graph-samples-crash">Critical Fix: Flow Graph Samples Crash</h2><p>Some of the older flow graph samples were crashing since they were not auto-upgraded correctly</p><h2 id="grid-flow-transform-logic-marker-transform">Grid Flow Transform Logic marker transform</h2><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-21.png" class="kg-image" alt loading="lazy" width="1373" height="410" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-21.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-21.png 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-21.png 1373w" sizes="(min-width: 720px) 720px"></figure><p>The grid flow transform logic provides you access to the marker&apos;s current transform.  You can use this to adjust your transform.   In the above example, we use it to cancel out (inverse) the rotation of the walls</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://cdn.discordapp.com/attachments/234155775101108226/1166600383926370314/image.png" class="kg-image" alt loading="lazy"><figcaption><span style="white-space: pre-wrap;">Before: Notice the arrows on the walls, We want the walls to align in the same direction</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://cdn.discordapp.com/attachments/234155775101108226/1166600383926370314/image.png" class="kg-image" alt loading="lazy"><figcaption><span style="white-space: pre-wrap;">The transform logic rotates the marker again on the opposite direction (inverse rotation)</span></figcaption></figure>]]></content:encoded></item><item><title><![CDATA[Release Notes - Version 2.31.0]]></title><description><![CDATA[<h2 id="snap-connection-selector-blueprints">Snap Connection Selector Blueprints</h2><p>Apply this blueprint on your snap connection theme graphs. These blueprints give you access to the two room category it connects to and are great for selecting special doors for certain rooms (like boss / treasure rooms)</p><p>This sample has a custom door for boss and treasure</p>]]></description><link>https://blog.dungeonarchitect.dev/release-2-31-0/</link><guid isPermaLink="false">65212094bb8e35088d106ca6</guid><dc:creator><![CDATA[Ali Akbar]]></dc:creator><pubDate>Sat, 07 Oct 2023 16:42:44 GMT</pubDate><content:encoded><![CDATA[<h2 id="snap-connection-selector-blueprints">Snap Connection Selector Blueprints</h2><p>Apply this blueprint on your snap connection theme graphs. These blueprints give you access to the two room category it connects to and are great for selecting special doors for certain rooms (like boss / treasure rooms)</p><p>This sample has a custom door for boss and treasure rooms (red and yellow doors)</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/01.jpg" class="kg-image" alt="image|690x240" loading="lazy" width="1920" height="669" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/01.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/01.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2023/10/01.jpg 1600w, https://blog.dungeonarchitect.dev/content/images/2023/10/01.jpg 1920w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/02.png" class="kg-image" alt="image|679x427" loading="lazy" width="679" height="427" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/02.png 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/02.png 679w"></figure><p>The red and yellow doors have this blueprint attached to it, where we check if either of the two room it connects to has the &quot;Boss&quot; category</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/03.png" class="kg-image" alt="image|690x352" loading="lazy" width="1170" height="598" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/03.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/03.png 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/03.png 1170w" sizes="(min-width: 720px) 720px"></figure><p>Check the sample here:</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/04.png" class="kg-image" alt="image|690x288" loading="lazy" width="1040" height="435" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/04.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/04.png 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/04.png 1040w" sizes="(min-width: 720px) 720px"></figure><p></p><h2 id="procedural-fill-sgf-sample">Procedural Fill SGF sample</h2><p>Design only the main rooms in your SGF dungeons, and procedurally fill up empty space in between. This is done by creating a room that creates procedural goemetry (using another grid dungeon actor inside the room)</p><p>There are only four rooms that are custom designed here, the rest is filled up procedurally</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/12.jpg" class="kg-image" alt="image|463x500" loading="lazy" width="1551" height="1039" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/12.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/12.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/12.jpg 1551w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/13.jpg" class="kg-image" alt="image|690x462" loading="lazy" width="877" height="946" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/13.jpg 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/13.jpg 877w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/iwR5BlY1Zgk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="Dungeon Architect - Snap Grid Flow with procedural rooms"></iframe></figure><p>Find the sample here:</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/14.png" class="kg-image" alt="image|628x298" loading="lazy" width="628" height="298" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/14.png 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/14.png 628w"></figure><blockquote>Tutorial for setting this up is coming soon</blockquote><h2 id="snap-module-streaming-events">Snap Module Streaming Events</h2><p>Any actor in a snap module can receive chunk streaming events. These are great for initialization and cleanup, especially for procedural content (see Procedural SGF Fill sample below)</p><p>Open up an actor blueprint that you&apos;d like to receive chunk streaming events and implement the interface .  Now place this actor in a module to recieve the events. These are great for initialization and cleanup (e.g. building procedural nested dungeons, NPC spawners etc)</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-9.png" class="kg-image" alt loading="lazy" width="845" height="167" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-9.png 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-9.png 845w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-11.png" class="kg-image" alt loading="lazy" width="528" height="291"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-12.png" class="kg-image" alt loading="lazy" width="370" height="554"></figure><h2 id="snap-streaming-actor-serialization">Snap Streaming Actor Serialization</h2><p>Save the state of any actor inside a chunk module when it gets hidden or unloaded. Then automatically restore the state back when it loads back, or becomes visible.  </p><p>If an actor inside a module implements the <code>DungeonStreamingActorSerialization</code> interface, then every variable whos <code>SaveGame</code> flag is set would be saved / restored when the chunk&apos;s visibitliy or load state changes</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-9.png" class="kg-image" alt loading="lazy" width="845" height="167" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-9.png 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-9.png 845w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-10.png" class="kg-image" alt loading="lazy" width="523" height="345"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-14.png" class="kg-image" alt loading="lazy" width="386" height="242"></figure><p></p><h2 id="move-actors-from-snap-module-level-to-persistent-level">Move actors from Snap module level to Persistent Level</h2><p>Use the blueprint node <code>DARecreateActorInLevel</code> to move/recreate actors from snap module level to the persistent level. If you have dynamic actors that are part of a snap module (e.g. a weapon that you can pick up or an NPC), it would disappear when the level streams out. Use this node to recreate the actor in the persistent level</p><p>Check the sample <code>DungeonArchitect Content &gt; Samples &gt; DA_Game_DungeonDoom &gt; Map_DungeonDoom</code></p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-18.png" class="kg-image" alt loading="lazy" width="1024" height="465" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-18.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-18.png 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-18.png 1024w" sizes="(min-width: 720px) 720px"></figure><p>The spawn room contains two artifacts that can be picked up by the player and they get attached to the weapon.  </p><p>Note that these two artifact blueprints were placed inside the spawn room module and are part of the spawn room level.   They will get streamed out when the spawn room chunk unloads (e.g. when you move far away from the spawn room)</p><p>Approach and pick them up, and they get attached to your weapon.  The red artifact gets directly attached to the weapon component. For the green one, we use a slightly different approach.  Before attaching the green artifact, we recreate the green artifact actor in the persistent level and then attach it</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/output.gif" class="kg-image" alt loading="lazy" width="320" height="180"></figure><p>When the spawn room streams out, the red artifact will stream out with it and will no longer be visible.  However, the green artifact will stay on.   </p><p>Before attaching the green artifact, we recreated it in the persistent world</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-19.png" class="kg-image" alt loading="lazy" width="1680" height="611" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-19.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-19.png 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2023/10/image-19.png 1600w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-19.png 1680w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-20.png" class="kg-image" alt loading="lazy" width="1024" height="340" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-20.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-20.png 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-20.png 1024w" sizes="(min-width: 720px) 720px"></figure><p></p><h2 id="sgf-module-selector-blueprints">SGF Module Selector Blueprints</h2><p>Hook on to the build process of a SGF dungeon and filter out modules you don&apos;t want at a certain location. For example, we have two variations of rooms, one with pillars, and one without. We filter out the pillar version if there&apos;s no room below it</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/05.jpg" class="kg-image" alt="image|690x363" loading="lazy" width="1920" height="1012" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/05.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/05.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2023/10/05.jpg 1600w, https://blog.dungeonarchitect.dev/content/images/2023/10/05.jpg 1920w" sizes="(min-width: 720px) 720px"></figure><p>These are added in the dungeon actor&apos;s properites:</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/06.png" class="kg-image" alt="image|607x96" loading="lazy" width="607" height="96" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/06.png 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/06.png 607w"></figure><p>Check out the sample:</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/07.png" class="kg-image" alt="image|690x275" loading="lazy" width="731" height="292" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/07.png 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/07.png 731w" sizes="(min-width: 720px) 720px"></figure><p></p><h2 id="node-coordinate-input-added-to-module-category-selection">Node Coordinate input added to Module Category Selection</h2><p>You can now use the node coordinates while deciding on the category of rooms to select at a certain node in your ModuleCategorySelection blueprints</p><p>For example, use the Z value of the coordinate to give a different look on each floor, or select a differnet room type on the edges of the dungeon</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/15.jpg" class="kg-image" alt="image|690x476" loading="lazy" width="1052" height="726" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/15.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/15.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/15.jpg 1052w" sizes="(min-width: 720px) 720px"></figure><p>Find the sample here:</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/16.png" class="kg-image" alt="image|690x203" loading="lazy" width="964" height="285" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/16.png 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/16.png 964w" sizes="(min-width: 720px) 720px"></figure><p></p><h2 id="snapmap-module-rotation-constraint">SnapMap Module Rotation Constraint</h2><p>SnapMap Module Database items have a flag to allow / disallow module rotation while stitching them together. Previously this was a global flag in the config that affected every module globally. You get more control, similar to the SGF module database</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/08.png" class="kg-image" alt="image" loading="lazy" width="749" height="680" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/08.png 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/08.png 749w" sizes="(min-width: 720px) 720px"></figure><p>The boss room is set to not rotate, which the other modules can rotate. You can find the sample here</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/09.png" class="kg-image" alt="image|690x252" loading="lazy" width="791" height="290" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/09.png 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/09.png 791w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/10.jpg" class="kg-image" alt="image|690x422" loading="lazy" width="1128" height="691" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/10.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/10.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/10.jpg 1128w" sizes="(min-width: 720px) 720px"></figure><p>Find the module database here:</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/11.png" class="kg-image" alt="image|690x250" loading="lazy" width="835" height="303" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/11.png 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/11.png 835w" sizes="(min-width: 720px) 720px"></figure><p></p><h2 id="marker-emitter-blueprint-execution-stage">Marker Emitter Blueprint Execution Stage</h2><p>Marker emitter blueprints run before the pattern matcher, so anything you emit in your blueprint is available to the pattern matcher</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-15.png" class="kg-image" alt loading="lazy" width="1880" height="579" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-15.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-15.png 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2023/10/image-15.png 1600w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-15.png 1880w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Marker Emitter Blueprint</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://docs.dungeonarchitect.dev/assets/images/01-d8121ec8449f05ad35c18e53ac2f5aae.jpg" class="kg-image" alt loading="lazy"><figcaption><span style="white-space: pre-wrap;">Pattern Matcher</span></figcaption></figure><p>Sometimes, you might add new markers from the pattern matcher and would like to have this available in the marker emitter blueprint.    Previously this was not possible since the order was fixed, where the blueprint ran first, creating a list of new markers, and then passing them on to the pattern matcher for it to match and modify</p><p>Change the execution order of your marker emitter blueprints from the class settings</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-16.png" class="kg-image" alt loading="lazy" width="626" height="137" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-16.png 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-16.png 626w"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-17.png" class="kg-image" alt loading="lazy" width="383" height="193"></figure><ul><li><strong>Before Pattern Matcher</strong>: <em>Execute before the pattern matcher. Markers emitted by this blueprint are available to the pattern matcher.  However, the Patter Matcher emitted markers are not available to this blueprint, since they haven&apos;t executed yet</em></li><li><strong>After Pattern Matcher</strong>: <em>Executes after the pattern matcher.  Markers emitted using the Pattern Matcher are available to this blueprint.  However, markers emitted from this blueprint will not be available to the pattern matcher</em></li></ul><h2 id="bug-fixes-misc">Bug Fixes / Misc</h2><ul><li>Theme Engine crashed in some instances when nested markers were used on larger theme files</li><li>Landscape Modifier class&apos;s properties are exposed to blueprint</li><li>Grid Flow Query has a new node to return connected chunk node coords, to allow traversal across the flow graph</li></ul>]]></content:encoded></item><item><title><![CDATA[Release Notes - Version 2.30.0]]></title><description><![CDATA[<h2 id="unreal-engine-53-support">Unreal Engine 5.3 support</h2><figure class="kg-card kg-image-card"><img src="https://dungeonarchitect.dev/releases/unreal/2.30.0/PastedImage20230909131739.png" class="kg-image" alt loading="lazy"></figure><p></p><h2 id="snapmap-custom-module-bounds-shape">SnapMap Custom Module Bounds Shape</h2><p>Define snap module bounds using custom shapes. This opens up lots of possibilities for snap map based dungeons. Previously the doors had to be aligned at the edges of the axis-aligned bounding box. Now you can place the doors at</p>]]></description><link>https://blog.dungeonarchitect.dev/release-2-30-0/</link><guid isPermaLink="false">65218b8ececb7c0aab94fff9</guid><category><![CDATA[Release]]></category><category><![CDATA[News]]></category><dc:creator><![CDATA[Ali Akbar]]></dc:creator><pubDate>Sun, 10 Sep 2023 17:07:00 GMT</pubDate><content:encoded><![CDATA[<h2 id="unreal-engine-53-support">Unreal Engine 5.3 support</h2><figure class="kg-card kg-image-card"><img src="https://dungeonarchitect.dev/releases/unreal/2.30.0/PastedImage20230909131739.png" class="kg-image" alt loading="lazy"></figure><p></p><h2 id="snapmap-custom-module-bounds-shape">SnapMap Custom Module Bounds Shape</h2><p>Define snap module bounds using custom shapes. This opens up lots of possibilities for snap map based dungeons. Previously the doors had to be aligned at the edges of the axis-aligned bounding box. Now you can place the doors at any orientation, at the edge of your custom polygon shape and create a more tightly packed and organic looking level</p><p>Drag drop custom shapes (like boxes, cylinders or polygon) in your module level file</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image.jpg" class="kg-image" alt loading="lazy" width="1600" height="790" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image.jpg 1600w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-1.jpg" class="kg-image" alt loading="lazy" width="789" height="512" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-1.jpg 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-1.jpg 789w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-2.jpg" class="kg-image" alt loading="lazy" width="896" height="703" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-2.jpg 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-2.jpg 896w" sizes="(min-width: 720px) 720px"></figure><p>You can combine snap based dungeons with Unreal Engine 5&apos;s PCG framework. Here, we use Dungeon Architect along with the PCG assets that come along with the free&#xA0;<a href="https://www.unrealengine.com/en-US/electric-dreams-environment?ref=blog.dungeonarchitect.dev">Electric Dreams</a>&#xA0;project from Epic</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-3.jpg" class="kg-image" alt loading="lazy" width="1918" height="1093" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-3.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-3.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/size/w1600/2023/10/image-3.jpg 1600w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-3.jpg 1918w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-4.jpg" class="kg-image" alt loading="lazy" width="1024" height="582" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-4.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-4.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-4.jpg 1024w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-5.jpg" class="kg-image" alt loading="lazy" width="1358" height="645" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-5.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-5.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-5.jpg 1358w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-embed-card"><iframe width="620" height="349" src="https://www.youtube.com/embed/iplZmwlaSq0?si=uTX2ATBIIvX5wDFG" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: block; vertical-align: middle; color: rgb(0, 0, 0); font-family: __Inter_20951f, __Inter_Fallback_20951f; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"></iframe></figure><p></p><h2 id="theme-editor-multi-meshblueprint-node">Theme Editor: Multi-Mesh/Blueprint node</h2><p>The new Multi-Mesh/BP node in the Theme Editor allows you to randomly choose a mesh from a list of meshes (or blueprints). Just drag drop the assets from the content browser on to the theme editor and it would create a single multi-mesh node.</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/multi-node.gif" class="kg-image" alt loading="lazy" width="480" height="360"></figure><p>This drastically reduces the required setup and the number of nodes in the theme editor</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-2.png" class="kg-image" alt loading="lazy" width="318" height="399"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-6.jpg" class="kg-image" alt loading="lazy" width="1078" height="664" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-6.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-6.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-6.jpg 1078w" sizes="(min-width: 720px) 720px"></figure><p></p><h2 id="flow-graph-branch-selection">Flow Graph Branch Selection</h2><p>Select different paths in your flow graph to add randomness to your game. In this example, our graph picks up one of the two possibilities:</p><ul><li>Create a treasure room guarded by a mini-boss room</li><li>Create a locked treasure room, with the key somewhere in the main path</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-3.png" class="kg-image" alt loading="lazy" width="1187" height="735" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-3.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-3.png 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-3.png 1187w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-4.png" class="kg-image" alt loading="lazy" width="1187" height="735" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-4.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-4.png 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-4.png 1187w" sizes="(min-width: 720px) 720px"></figure><p>You can have more than two branches merge into this node and it would pick one up randomly</p><p></p><h2 id="new-mini-map-framework">New Mini-Map Framework</h2><p>The Mini Map framework has ben rewritten. All builders can write to a unified 2D minimap framework.</p><p>Snap based dungeons support 3D minimaps. You can use a simplified snap module for the minimap. The system stitches the minimap version of the modules.</p><p>The minimap can be spawned in the current game world (for a 3D HUD, or a hologram):</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-7.jpg" class="kg-image" alt loading="lazy" width="1024" height="689" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-7.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-7.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-7.jpg 1024w" sizes="(min-width: 720px) 720px"></figure><p>Alternatively, you can create the minimap dungeon in a separate world, outside the game world, and have it rendered to a RenderTexture to display on the HUD. When you spawn and render the minimap on a separate world, you don&apos;t have to use any hacks (like moving the minimap dungeon far away from the playable area os it doesn&apos;t occlude) and you can use a different lighting model</p><figure class="kg-card kg-embed-card"><iframe width="620" height="349" src="https://www.youtube.com/embed/A_89uJhYHko?si=pV7MLjld6i_WnDng" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: block; vertical-align: middle; color: rgb(0, 0, 0); font-family: __Inter_20951f, __Inter_Fallback_20951f; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"></iframe></figure><p>The grid flow minimap actor is removed and replaced with the generic DungeonMinimap2D actor. The gridflow game sample has been updated</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-8.jpg" class="kg-image" alt loading="lazy" width="797" height="503" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-8.jpg 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-8.jpg 797w" sizes="(min-width: 720px) 720px"></figure><h2 id="snap-connection-entrance-and-exit-constraints">Snap Connection Entrance and Exit Constraints</h2><hr><p>Get more control on the flow of your snap based dungeons using the new Entrance and Exit constraint. Setting a door constraint to Entrance would ensure that we do not exit the room from this door. These are great for puzzle games where the player needs to solve a puzzle and get access to the exit door.</p><p></p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-9.jpg" class="kg-image" alt loading="lazy" width="1176" height="664" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-9.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-9.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-9.jpg 1176w" sizes="(min-width: 720px) 720px"></figure><p>You can use the Entrance / Exit constraint to create some advanced patterns. Here, we create a&#xA0;<a href="https://en.wikipedia.org/wiki/Hilbert_curve?ref=blog.dungeonarchitect.dev">Hilbert Curve</a>&#xA0;using Dungeon Architect&apos;s Graph Grammar production rules</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/hc01.png" class="kg-image" alt loading="lazy" width="400" height="727"></figure><p>Create those rules for A, B, C and D in the snap flow grammar editor:</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-5.png" class="kg-image" alt loading="lazy" width="1054" height="693" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-5.png 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-5.png 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-5.png 1054w" sizes="(min-width: 720px) 720px"></figure><p>Then expand the graph a few times and we get a level like this:</p><p></p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-10.jpg" class="kg-image" alt loading="lazy" width="700" height="537" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-10.jpg 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-10.jpg 700w"></figure><p>Expand the graph grammar a few more times (i.e. increase the iteration count in the exec graph) and we get a larger level</p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-11.jpg" class="kg-image" alt loading="lazy" width="1024" height="623" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-11.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-11.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-11.jpg 1024w" sizes="(min-width: 720px) 720px"></figure><h2 id="sgf-city-sample">SGF City Sample</h2><hr><p>You can create many different types of levels with SnapMap and SGF builders. This sample shows you how to build a large drivable city</p><p></p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-12.jpg" class="kg-image" alt loading="lazy" width="1024" height="483" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-12.jpg 600w, https://blog.dungeonarchitect.dev/content/images/size/w1000/2023/10/image-12.jpg 1000w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-12.jpg 1024w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-embed-card"><iframe width="620" height="349" src="https://www.youtube.com/embed/Do1HDzAkQZQ?si=U_BIFXnIm4Ab4hil" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; display: block; vertical-align: middle; color: rgb(0, 0, 0); font-family: __Inter_20951f, __Inter_Fallback_20951f; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"></iframe></figure><h2 id="snapmap-dungeon-rotation-scaling">SnapMap Dungeon Rotation / Scaling</h2><hr><p>SnapMap dungeons inherit the&#xA0;<code>Dungeon</code>&#xA0;actor&apos;s transform. Move / Rotate / Scale the dungeon actor and regenerate the dungeon</p><p></p><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-13.jpg" class="kg-image" alt loading="lazy" width="788" height="841" srcset="https://blog.dungeonarchitect.dev/content/images/size/w600/2023/10/image-13.jpg 600w, https://blog.dungeonarchitect.dev/content/images/2023/10/image-13.jpg 788w" sizes="(min-width: 720px) 720px"></figure><h2 id="editor-improvements">Editor Improvements</h2><hr><ul><li><a href="https://docs.dungeonarchitect.dev/unreal/advanced-theming/spawn-logic?ref=blog.dungeonarchitect.dev">Spawn Logic</a>&#xA0;function has access to the dungeon&apos;s Random Stream object. Use this for any randomness, so all clients generate the same dungeon everywhere</li><li>Theme nodes&apos;s Transform rule, Selection rule and Spawn logic gets disabled if their corresponding enabled flag is unchecked</li><li>Added procedural transform rules. These are built-in rules that are used frequently. Apply these to your nodes, without having to create them everytime. (Example: we have a jitter procedural transform node, select from the drop down and apply this if you want to remove z-fighting with overlapping meshes)</li><li>Flow Editor&apos;s preview viewport&apos;s shadows were pitch black in 5.2+. Added a SkyLight to brighten the scene</li><li>Reduced the download size of Dungeon Architect by half, by optimizing the sample assets</li><li>Custom Dungeon Item Folder Name: The spawned dungeon actors are placed in a separate folder, usually with the name&#xA0;<code>{DungeonActorName}_Items</code>. You can override this with your own nameSelect the Dungeon actor and head over to the&#xA0;<code>Advanced</code>&#xA0;category and check the&#xA0;<code>UseCustomItemFolderName</code>&#xA0;flag and specify your custom folder name</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-6.png" class="kg-image" alt loading="lazy" width="321" height="185"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-7.png" class="kg-image" alt loading="lazy" width="467" height="166"></figure><figure class="kg-card kg-image-card"><img src="https://blog.dungeonarchitect.dev/content/images/2023/10/image-8.png" class="kg-image" alt loading="lazy" width="302" height="164"></figure><hr><h2 id="bug-fixes">Bug Fixes</h2><hr><ul><li>Drag drop assets from the content browser on to the theme editor was not working and has been fixed</li><li>Fixed a bug in SGF link when connecting different paths together</li><li>Theme editor&apos;s actor node was not setting the transform correctly</li><li>Removed experimental tag from the fast cell distribution on the grid config. This was causing the settings to be disabled in the editor</li><li>Some sample blueprints had compile errors and has been fixed</li><li>Fixed a dungeon deletion bug where actors were destroyed while being traversed</li><li>Fixed the&#xA0;<code>SGraphNode</code>&#xA0;hard reference warnings in debug mode</li><li>Fixed a crash issue in the theme editor&apos;s procedural mesh</li><li>Fixed compile errors on Linux</li></ul>]]></content:encoded></item></channel></rss>