<?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[Blog - Brickadia]]></title><description><![CDATA[Development Blog]]></description><link>https://brickadia.com/blog/</link><image><url>https://brickadia.com/blog/favicon.png</url><title>Blog - Brickadia</title><link>https://brickadia.com/blog/</link></image><generator>Ghost 5.84</generator><lastBuildDate>Tue, 30 Jun 2026 01:52:55 GMT</lastBuildDate><atom:link href="https://brickadia.com/blog/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[EARLY ACCESS 3: Announcement Trailer]]></title><description><![CDATA[Announcing the third major update for Brickadia Early Access, and another sale!]]></description><link>https://brickadia.com/blog/early-access-3-announcement-trailer/</link><guid isPermaLink="false">6a3ca855b0808500072a5faa</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[durb]]></dc:creator><pubDate>Thu, 25 Jun 2026 17:04:48 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2026/06/blogIcon.png" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2026/06/blogIcon.png" alt="EARLY ACCESS 3: Announcement Trailer"><p>Hello everyone!</p><p>The time has finally arrived for us to announce our third major update for Brickadia! On top of that, Brickadia will be going on sale during the Steam Summer Sales, starting June 25th all the way to July 9th!</p>
<!--kg-card-begin: html-->
<iframe width="1840" height="1035" src="https://www.youtube.com/embed/THeI_thgCSU" title frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<!--kg-card-end: html-->
<p>This update has been in the works for a long time, and we all hope you&apos;re as excited as we are for when this update drops on July 3rd, 2026. Thrusters, game modes, new vehicle physics, new logic gates, huge performance improvements and so much more are on their way!</p><p>If you don&apos;t have Brickadia in your Steam library already, now&apos;s your chance to get in on the brick action while the game is 50% off:</p>
<!--kg-card-begin: html-->
<iframe src="https://store.steampowered.com/widget/2199420/" frameborder="0" width="646" height="190"></iframe>
<!--kg-card-end: html-->
<p>Additionally, if you haven&apos;t done so, you can stay updated with Brickadia by following us on social media and by joining our online communities:  <a href="https://bsky.app/profile/did:plc:hm2f45hhjcmnmc2seqqttguh"><u>Bluesky</u></a>, <a href="https://x.com/brickadiagame"><u>Twitter/X</u></a>, <a href="https://www.tiktok.com/@brickadia"><u>TikTok</u></a>, <a href="https://www.youtube.com/@brickadia"><u>YouTube</u></a>, <a href="https://www.instagram.com/brickadiagame/"><u>Instagram</u></a>, <a href="https://discord.gg/brickadia"><u>Discord</u></a>, <a href="https://www.reddit.com/r/brickadia/" rel="noreferrer">Reddit</a>.</p><p>Stay tuned for further content in the future! </p>]]></content:encoded></item><item><title><![CDATA[Devlog #8 - Scripting, wires upgrades, and the next big patch]]></title><description><![CDATA[A preview of the next version of the game, featuring scripting, voice chat, new wires features, performance improvements and more!]]></description><link>https://brickadia.com/blog/devlog-8/</link><guid isPermaLink="false">69b570aeb0808500072a5796</guid><category><![CDATA[Development]]></category><dc:creator><![CDATA[Sixmorphugus]]></dc:creator><pubDate>Thu, 19 Mar 2026 17:06:22 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2026/03/BrickadiaSteam-Win64-Shipping_wh7jzCAjXJ.png" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2026/03/BrickadiaSteam-Win64-Shipping_wh7jzCAjXJ.png" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch"><p>Hello fellow Brickadians! We&apos;ve been super busy working on the next version of the game that will have scripting, voice chat, new wires features, performance improvements and more! But first, an announcement:</p>
<!--kg-card-begin: html-->
<iframe src="https://store.steampowered.com/widget/2199420/" frameborder="0" width="646" height="190"></iframe>
<!--kg-card-end: html-->
<p><strong>Brickadia is taking part in the Steam Spring Sale!</strong> The game will be 25% off all through the sale. If you want to pick the game up at our lowest ever price of $15, now is the time!</p><h1 id="overall-goals">Overall Goals</h1><p>Brickadia is a great building game, with some of the most robust and advanced tech powering it (in our opinion!) But with it&apos;s current feature-set, building is still the one primary way players play the game. It&apos;s very rare to see other kinds of servers beyond your classic freebuild server.<br><br>Our goal with EA3 is to turn Brickadia from one of the best building games ever to one of the best games ever for building <em>and playing</em>. In other words, give Brickadia gameplay!</p><p>We want you to be able to make tycoon games in Brickadia. We want you to be able to make Battle Royales in Brickadia. We want you to be able to make procedural dungeons in Brickadia. We want you to be able to make Prop Hunt. And Trouble in Terrorist Town. And deathruns. And so much more.<br><br>While some of these games sort of exist in the current version of Brickadia, they usually employ a ton of tricks and hacks. Most are unfinished due to a lack of tools to let creators cross the finish line.</p><p>Like last time, there is a lot we are doing. Let&apos;s talk about it!</p><h1 id="proximity-voice-chat">Proximity Voice Chat</h1><p>Brickadia will soon have proximity voice chat. Speak to your friends as you would in a Discord call, but in 3D space!</p><p>It will be highly configurable. Servers can enable and disable it, players can mute others, and it makes everything just a bit funnier.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    
    	<video class="lazy" preload="none" controls>
    		<source data-src="https://static.brickadia.com/resources/devlog8-voicechat.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Kenko says hello!</figcaption>

</figure>
<!--kg-card-end: html-->
<h1 id="new-wires-features">New Wires Features</h1><p>Everyone trying to use wires has the same three problems:</p>
<ul>
<li>Wire contraptions take up too much space.</li>
<li>There is a lack of useful gates.</li>
<li>They are super annoying to edit once they&apos;ve been built.</li>
</ul>
<p>Let&apos;s fix all of those at once!</p>
<h2 id="microchips">Microchips</h2><p>You&apos;ll soon be able to collapse your infinitely complex circuits into a single brick with Microchips. You can put a microchip anywhere: inside your arcade machine, inside your car, even inside another chip!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2026/03/microchips.jpg" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="2000" height="1125" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/microchips.jpg 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/microchips.jpg 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/microchips.jpg 1600w, https://brickadia.com/blog/content/images/2026/03/microchips.jpg 2000w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2026/03/microchips--1-.jpg" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="2000" height="1125" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/microchips--1-.jpg 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/microchips--1-.jpg 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/microchips--1-.jpg 1600w, https://brickadia.com/blog/content/images/2026/03/microchips--1-.jpg 2000w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2026/03/microchips--2-.jpg" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/microchips--2-.jpg 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/microchips--2-.jpg 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/microchips--2-.jpg 1600w, https://brickadia.com/blog/content/images/2026/03/microchips--2-.jpg 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2026/03/microchips--3-.jpg" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/microchips--3-.jpg 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/microchips--3-.jpg 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/microchips--3-.jpg 1600w, https://brickadia.com/blog/content/images/2026/03/microchips--3-.jpg 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2026/03/microchips--4-.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1255" height="973" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/microchips--4-.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/microchips--4-.png 1000w, https://brickadia.com/blog/content/images/2026/03/microchips--4-.png 1255w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2026/03/microchips--5-.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1042" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/microchips--5-.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/microchips--5-.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/microchips--5-.png 1600w, https://brickadia.com/blog/content/images/2026/03/microchips--5-.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>We are working on further features for microchips, like inputs and outputs, gamemode integration, and player microchips, prior to release. Stay tuned on this one! It&apos;s going to be big.</p><h2 id="new-gates">New Gates</h2><p>We&apos;re adding a bunch of new gates to the game and have a bunch more on the way. Our focus with the gates we&apos;re adding is the same as it is for the update overall. We&apos;re fully invested in <em>drastically</em> increasing the scope of what Brickadia can do gameplay-wise.</p><p>One of the reasons we haven&apos;t added very many gates in the past few updates is because it actually involves quite a bit of stuff: Programming a gate involves quite a lot of boilerplate code, and art pass where the final gate was modeled by hand. Over the holidays, we&apos;ve streamlined this!<br><br>We&apos;re now procedurally generating our gate models. This has allowed us to speed up our iteration times by decoupling the need for a gate model from the final art pass. We also decided to update the base model for gates to try and make it slightly easier to read connections and layers of gates. It now only requires us to manually add the icon to make the gate shippable!</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_devlog8-procgatedemo" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Devlog8_ProcGateDemo.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Gate models procedurally generated with Geometry Nodes in Blender.</figcaption>
    </a>
    <div id="inline_devlog8-procgatedemo" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Devlog8_ProcGateDemo.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>Icons are now textured icons, rendered using an MSDF-encoded texture. No longer are the icons 3d modeled and baked into the gate mesh!</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/UnrealEditor-Win64-DebugGame_ZV5Nj6cvQi.jpg" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="2000" height="1152" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/UnrealEditor-Win64-DebugGame_ZV5Nj6cvQi.jpg 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/UnrealEditor-Win64-DebugGame_ZV5Nj6cvQi.jpg 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/UnrealEditor-Win64-DebugGame_ZV5Nj6cvQi.jpg 1600w, https://brickadia.com/blog/content/images/2026/03/UnrealEditor-Win64-DebugGame_ZV5Nj6cvQi.jpg 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Left is old model, right is new gate model using an MSDF icon.</span></figcaption></figure><p>Vectors are now a supported wire type. All of the existing math gates will support it, and we&apos;re adding new gates to complement them!<br><br>We&apos;re also finally adding support for strings! All of the existing gates that accept a text/string input will be upgraded to have a wire port for the field. We&apos;re also adding gates for manipulating strings: formatting, combining strings, etc. And of course, there will be new gates to display text, including one that will let you place text and icons anywhere on your HUD.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/stringgate.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1669" height="1139" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/stringgate.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/stringgate.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/stringgate.png 1600w, https://brickadia.com/blog/content/images/2026/03/stringgate.png 1669w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Silly test with the new string gates, printing out &quot;you have 1000 chunguses&quot; to the screen.</span></figcaption></figure><p><br><br>So far, a lot of the changes have been back-end changes, but we did still manage to cram in a few new gates. We still plan to add a huge number of useful gates before the update launches, so if you have any suggestions, please let us know through our usual channels!</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_devlog8-prefabspawner1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog8-prefabspawner1.webm" type="video/webm">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Prefab spawner!</figcaption>
    </a>
    <div id="inline_devlog8-prefabspawner1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog8-prefabspawner1.webm" type="video/webm">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="2000" height="485" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image.png 1600w, https://brickadia.com/blog/content/images/2026/03/image.png 2336w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">With Vector support, we now have &quot;Get&quot; versions of all the entity transform gates!</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-1.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="2000" height="1009" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-1.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-1.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-1.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-1.png 2336w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Some advanced math gates, and a Format Text gate.</span></figcaption></figure><h2 id="moving">Moving</h2><p>The resizer will soon be able to move and rotate bricks. Meaning you can now move and rotate your gates <em>without </em>disconnecting the wiring:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_devlog8-movewires" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog8-movewires.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Moving a selection.</figcaption>
    </a>
    <div id="inline_devlog8-movewires" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog8-movewires.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>You can even move multiple bricks around at once:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_devlog8-multimove" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog8-multimove.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Multi-moving a selection.</figcaption>
    </a>
    <div id="inline_devlog8-multimove" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog8-multimove.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p><br><br>We hope this will make wiring a bit less painful than it is currently!</p><h1 id="scripting-with-luau">Scripting with Luau</h1><p>Scripting has waited long enough, and is now officially in production! The next version of Brickadia will feature <a href="https://luau.org/" rel="noreferrer">Luau</a>, a high-performance scripting language, complete with a REPL accessible via chat and the console.<br><br>Luau scripting is intended to have a lot of control over the game. For that reason, we&apos;re gating script usage behind a special permission. It is also server-side only, but we will be augmenting it so you can do more client-specific tasks like UI. Worlds and Gamemodes can include scripts, and they can be shared on the Gallery.<br><br>This prototype version uses auto-generated bindings based on Unreal Engine&apos;s API, so there will be many changes to make scripting easier and friendlier.</p><p>Here&apos;s some things people have already done with our initial prototype!</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_devlog8-autobridge" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog8-autobridge.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A script that places a brick right under your character.</figcaption>
    </a>
    <div id="inline_devlog8-autobridge" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog8-autobridge.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_devlog8-jetpack" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog8-jetpack.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A functioning jetpack!</figcaption>
    </a>
    <div id="inline_devlog8-jetpack" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog8-jetpack.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_devlog8-studioscr" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog8-studioscr.webm" type="video/webm">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Studio mold has evolved...!</figcaption>
    </a>
    <div id="inline_devlog8-studioscr" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog8-studioscr.webm" type="video/webm">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/UnrealEditor-Win64-DebugGame_LylcPiFvIK.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="2000" height="963" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/UnrealEditor-Win64-DebugGame_LylcPiFvIK.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/UnrealEditor-Win64-DebugGame_LylcPiFvIK.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/UnrealEditor-Win64-DebugGame_LylcPiFvIK.png 1600w, https://brickadia.com/blog/content/images/2026/03/UnrealEditor-Win64-DebugGame_LylcPiFvIK.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Terrain generation using a script.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/boom.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="2000" height="886" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/boom.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/boom.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/boom.png 1600w, https://brickadia.com/blog/content/images/2026/03/boom.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Spawning an explosion using very verbose bindings.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/sweeney.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1703" height="714" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/sweeney.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/sweeney.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/sweeney.png 1600w, https://brickadia.com/blog/content/images/2026/03/sweeney.png 1703w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Renaming everyone to... Tim Sweeney...</span></figcaption></figure><p>There is still quite a bit to do, but even in this state it can do quite a lot.</p><h1 id="performance-improvements">Performance Improvements</h1><p>For every major update we try to make your game run a little better, and this one is no exception. Off the top of my head, here&apos;s everything we&apos;ve done so far, and there might still be more to come:</p><ul><li>We&apos;ve upgraded Unreal Engine to 5.7, which required solving several hundred rebase conflicts to integrate all our custom changes into the new version (it turns out Epic also likes to change the engine a lot!),</li><li>We&apos;ve fixed a major performance flaw in the Iris replication system that was causing it to poll sleeping and frozen entities every frame, only to discover that they did indeed not change,</li><li>We&apos;ve implemented a new fast rendering system that makes use of a new engine feature to render meshes while completely bypassing all the overhead that comes from using heavy primitive components to draw them, now in use for brick cluster meshes and character parts,</li><li>We&apos;ve implemented a new tick manager for brick components that only sometimes require ticks to update every frame, such as wheel engines that can go asleep when no one is driving the car and the steering has returned to idle,</li><li>We&apos;ve moved the final remaining part of the weapons system that was using Open Alpha-era barely functioning server side hit detection (melee weapons) to the new system of client predicted hits, which then allowed us to completely disable evaluating player animations on servers and only do it when the player is actually visible on clients,</li><li>We&apos;ve nativized more parts of old character blueprints like updating the nametags on screen that was taking up a lot of time, and optimized some redundant logic for bot controllers,</li><li>We&apos;ve made buoyancy computations roughly 10 times faster while also parallelizing it, now making it so fast that we could also enable buoyancy for all entities such as wheels,</li><li>We&apos;ve fixed that light components did not correctly apply the radius clamp from brightness when loading a map in single player or as a listen server (the issue did not occur as a client),</li><li>We&apos;ve refactored the brick cluster mesh system to now allow merging geometry across chunks when the world contains many sparse bricks over a large area, though it cannot yet combine meshes across different grids,</li><li>We&apos;ve removed all unnecessary access to physics scenes from background threads, which now allows us to run PhysX without the scene locks on every API call, removing a lot of overhead on basically everything,</li><li>We&apos;ve started compiling our &quot;shipping&quot; config binaries with <a href="https://clang.llvm.org/docs/ThinLTO.html" rel="noreferrer">Thin LTO</a>, allowing the compiler to remove many unnecessary virtual function calls and inline small functions even across different files and modules,</li><li>We&apos;ve fixed that physics wasn&apos;t parallelized at all on typical cloud servers with two cores, previously it only worked on three cores and up,</li><li>And more that wasn&apos;t worth mentioning here...</li></ul><h3 id="client-performance">Client Performance</h3><p>Wew! That&apos;s a lot! So what did we gain? Are we writing all this fluff for 5% performance gains? Well, let&apos;s compare EA2 to the current main branch. We&apos;ll use a version of the world &quot;Pinkadia&quot; for comparison, which is one of the most complex worlds ever created in the game:</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2026/03/image-5.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="787" height="88" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-5.png 600w, https://brickadia.com/blog/content/images/2026/03/image-5.png 787w" sizes="(min-width: 720px) 720px"></figure><p>Since most players would see this as a client on a server, we&apos;ve also joined a server as a client. These screenshots are taken on a system with a RTX 5090 and Ryzen 9950X3D, but relative improvements are similar on other computers.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-4.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-4.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-4.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-4.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-4.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">EA2, ray tracing enabled - 46 fps</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-3.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-3.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-3.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-3.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-3.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">EA2, ray tracing disabled - 70 fps</span></figcaption></figure><p>This world seems to perform terribly on a very high end computer. Let&apos;s see if that runs any better in the new version so far.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-6.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-6.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-6.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-6.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-6.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">EA3, ray tracing enabled - 82 fps (78% faster)</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-7.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-7.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-7.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-7.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-7.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">EA3, ray tracing disabled - 111 fps (58% faster)</span></figcaption></figure><p>We&apos;ve certainly made progress here!</p><p>There is more to come for optimizing the client - we&apos;ll soon introduce a new kinematic joint to connect multiple grids together rigidly, while allowing it to rotate with interpolation when controlled by a wire. This will allow you to replace slow physics based doors with much faster kinematic grids, and in the case where the angle is not controlled by a wire, we will be able to merge meshes across subgrids, making builds with a lot of rotated decorative grids massively faster.</p><p>And we haven&apos;t even started optimizing the GPU memory usage yet - the core brick renderer is still from Open Alpha days where builds mostly fit in VRAM and ray tracing was something far off. There are plans for streaming brick clusters so only the ones within the view distance must be resident in VRAM, and a new way to organize brick vertex data that should reduce its size by roughly 5 times (sadly, that will not apply to the separate ray tracing data, but it should help low end computers who will not be using ray tracing anyway the most).</p><h3 id="server-performance">Server Performance</h3><p>Dedicated servers are now also <em>much</em> faster. Before, most of the time was spent on useless things, which we&apos;ve now removed. For example, here is a direct comparison of a server frame running Pinkadia with a single client connected. To capture this trace, we have to use an instrumented build, so it&apos;s a little slower, but watch the difference in timings of the sections:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-9.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1326" height="610" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-9.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-9.png 1000w, https://brickadia.com/blog/content/images/2026/03/image-9.png 1326w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">EA2 server - this sucks actually</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-10.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1595" height="570" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-10.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-10.png 1000w, https://brickadia.com/blog/content/images/2026/03/image-10.png 1595w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">EA3 server - quite a lot more usable (4 times faster)</span></figcaption></figure><p>Running the server with tracing capability adds a lot of overhead, so let&apos;s also just compare the final frame rate the server is able to achieve, by joining it as a client and viewing this beautiful tps counter made out of bricks and gates and wires:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-11.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-11.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-11.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-11.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-11.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">EA2 server running the world sim and one client</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-12.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-12.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-12.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-12.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-12.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">EA3 server running the same (7 times faster)</span></figcaption></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Want your own tps counter? Use prefab code g81-w7w-q69</div></div><p>In the proper &quot;shipping&quot; configuration of the server we can now also see the performance impact of using Thin LTO to let the compiler optimize across the whole program, making it <em>even faster</em> than the previous comparison.</p><p>A listen server runs both the client and server code each tick, so if you are hosting a large world locally, you should expect performance increases somewhere between the two above.</p><p>Oh, and we&apos;ve also made some tools so you can make your own builds and servers faster rather than waiting for us to find a way to do it by magic!</p><h1 id="performance-debug-views">Performance Debug Views</h1><p>Previously, whenever we tried to implement debug views in the engine, the performance left something to be desired:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-23.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-23.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-23.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-23.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-23.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">We&apos;re gonna need to measure in seconds per frame for this one</span></figcaption></figure><p>But recently, we&apos;ve gained a super fast new debug drawer based on the excellent work in the <a href="https://github.com/Brickadia/VoxelCore/blob/brickadia/Source/VoxelCore/Public/VoxelMinimal/VoxelDebugDrawer.h" rel="noreferrer">VoxelCore</a> plugin:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-24.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-24.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-24.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-24.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-24.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Ah. That&apos;s more reasonable.</span></figcaption></figure><p>So naturally, we had a solution and went looking for problems to solve with it...</p><p>For those interested in finding laggy contraptions in your servers and improving the performance of your worlds, we now have several useful debug visualizations you can use, all of which also include statistics for you to look at and use to track down performance issues on your servers.</p><h2 id="entity-debug-view">Entity Debug View</h2><p>This makes it easy to track down rogue entities, like physics grids, that may be contributing to server tick rate issues. It can be enabled with <code>BR.DrawDebugEntities 1</code>.</p><p>Watch out for red entities. Those are actively moving in the simulation and processed by physics and replication.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-15.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-15.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-15.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-15.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-15.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The entity visualizer shows you where all those dynamic grids and wheels are.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-16.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-16.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-16.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-16.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-16.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The entity visualizer works at any distance.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-17.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-17.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-17.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-17.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-17.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Finding those physics objects hiding at the world border is now very easy.</span></figcaption></figure><h2 id="light-debug-view">Light Debug View</h2><p>A very common performance pitfall many builds suffer from is from overlapping lights, and this visualization makes it very easy to spot. It can be enabled with <code>BR.DrawDebugLights 1</code>.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-21.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-21.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-21.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-21.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-21.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The light visualizer shows you all the lights in the world and who made them.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-22.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-22.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-22.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-22.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-22.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">It also shows you how many other lights a light is overlapping.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-18.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-18.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-18.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-18.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-18.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Oh no</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-20.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-20.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-20.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-20.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-20.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">There really are a lot of lights here</span></figcaption></figure><p>If you have many overlapping lights at some location, and you get close to that location, all those lights are going to cover your entire screen, which is very slow.</p><p>So we thought it&apos;d be useful to show how much overlap there really is, counting up for every light how many others touch it, and coloring them from green to red depending on the number, which ended up being a lot more difficult than expected.</p><p>Quiz: How do you determine which of 15,000 lights overlap each other in under 0.5ms on a single core?</p><h2 id="replication-debug-view">Replication Debug View</h2><p>It can be difficult finding specific contraptions in your world that may be contributing to network performance issues. Thankfully, we have a colorful solution! This can be enabled with <code>BR.DrawDebugClientUpdates 1</code> in the console.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_devlog8-repviz1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog8-repviz1.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Replication debug view on a smaller system. Each update renders a colored sphere to make it easy to find.</figcaption>
    </a>
    <div id="inline_devlog8-repviz1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog8-repviz1.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-26.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-26.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-26.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-26.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-26.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">For example, as a host, you might wonder where someone has hidden the 1000 updates/s.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-27.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-27.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-27.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-27.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-27.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The flashing dots and view-relative stats quickly let you home in on the problem.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-28.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-28.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-28.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-28.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-28.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Ah. So that&apos;s why. Maybe we should switch this contraption off.</span></figcaption></figure><h2 id="collider-debug-view">Collider Debug View</h2><p>We&apos;ve had this view before, but it has now been upgraded to visualize the origin, center of mass and intertia tensor of the object, letting you see whether your custom masses had the intended effect. It can be enabled with <code>BR.DrawDebugColliders 1</code> in the console.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-29.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-29.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-29.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-29.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-29.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Collider visualizer.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-30.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-30.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-30.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-30.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-30.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">This object has a custom mass (cyan box) which results in a shift of the COM (grey dot) and inertia tensor (grey box).</span></figcaption></figure><h2 id="brick-cluster-debug-view">Brick Cluster Debug View</h2><p>This one shows you how the brick engine groups the brick geometry to render. It can be enabled with <code>BR.DrawDebugBrickClusters 1</code> in the console.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-25.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-25.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-25.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-25.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-25.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Every separate grid you use creates separate clusters regardless of whether you freeze it or not.</span></figcaption></figure><h1 id="other-goodies">Other Goodies</h1><p>Characters are finally present in the ray tracing scene, and the quality of ray traced reflections is also vastly improved with the new engine version.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-13.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-13.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-13.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-13.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-13.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Who&apos;s that?</span></figcaption></figure><p>We&apos;ve fixed replication of sleeping object positions. No more will you load into a server, approach an object, only to learn that it did in fact not exist at that location, and see your character teleport 50 studs to the side.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-32.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-32.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-32.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-32.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-32.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">All of the sleeping objects on this test server are at the correct position.</span></figcaption></figure><p>We&apos;ve added a network lag indicator that shows up if your average latency is too high or the server hasn&apos;t sent any message at all within a short time frame. There&apos;s also a similar warning for getting close to maxing out your system VRAM.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2026/03/image-34.png" class="kg-image" alt="Devlog #8 - Scripting, wires upgrades, and the next big patch" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2026/03/image-34.png 600w, https://brickadia.com/blog/content/images/size/w1000/2026/03/image-34.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2026/03/image-34.png 1600w, https://brickadia.com/blog/content/images/2026/03/image-34.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">I guess the router died again...</span></figcaption></figure><h1 id="and-more">...And more.</h1><p>There is so much else that we could have covered, but we have to get back to work! If you want to see further highlights, we highly recommend joining our <a href="https://discord.com/invite/brickadia" rel="noreferrer">Discord</a> to get the latest and greatest news in one place. </p><p>Thanks for reading! Stay tuned.</p>]]></content:encoded></item><item><title><![CDATA[Brickadia is now $19.99 until Early Access ends!]]></title><description><![CDATA[To make it easier for you to invite your friends and grow our community, we’re permanently lowering the price to $19.99 for the duration of Early Access.]]></description><link>https://brickadia.com/blog/brickadia-is-now-19-99/</link><guid isPermaLink="false">693c60a1b33dbb0007ef3b34</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[Zeblote]]></dc:creator><pubDate>Sat, 31 Jan 2026 22:51:18 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2026/01/EAprice2.png" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2026/01/EAprice2.png" alt="Brickadia is now $19.99 until Early Access ends!"><p>Hey everyone,</p><p>We&apos;ve been reading all your feedback since the Early Access release, and one thing that&apos;s come up very often was the price of the game. Many of you felt that $29.99 was too high a price while the game is lacking the last major features, and was making it difficult for you to get your friends to try it out with you.</p><p>We are confident that $29.99 reflects the value of the full 1.0 release, but we want the price to reflect the Early Access journey we&#x2019;re on together right now. To make it easier for you to invite your friends and grow our community, we&#x2019;re lowering the price to $19.99 for the duration of Early Access. Regional pricing will apply as before.</p>
<!--kg-card-begin: html-->
<iframe src="https://store.steampowered.com/widget/2199420/" frameborder="0" width="646" height="190"></iframe>
<!--kg-card-end: html-->
<p>To those of you who have already jumped in at the original price point: Thank you! Your early support has been instrumental in keeping development moving at this pace. We&apos;ve always said that our community is the most important part of this project, and by making the game more affordable now, we hope to see your servers feel a lot more alive.</p><p>What&apos;s next?</p><p>We have a large content update following soon after with many new additions to the logic system, giving you greater control over your gameplay. Stay tuned!</p>]]></content:encoded></item><item><title><![CDATA[EARLY ACCESS 2: The Prefabs and Bots Update]]></title><description><![CDATA[Customizable bots, reworked physics prefabs system, new selector, player collision channels, brick property changer, X-Ray mode; and so much more.]]></description><link>https://brickadia.com/blog/early-access-2/</link><guid isPermaLink="false">6918ccdcb33dbb0007ef3af9</guid><category><![CDATA[News]]></category><category><![CDATA[Releases]]></category><dc:creator><![CDATA[Zeblote]]></dc:creator><pubDate>Fri, 12 Dec 2025 18:49:50 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2025/12/ea2release2.png" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2025/12/ea2release2.png" alt="EARLY ACCESS 2: The Prefabs and Bots Update"><p>This is our first major update! We&apos;ve cleaned up all major bugs and fixed a lot of stuff that was broken since EA1. If you encounter issues, please let us know in the bug-reports channel of the Discord or the Steam forums.</p><h2 id="winter-sale">Winter Sale</h2><p>Brickadia is taking part in the Steam Winter Sale! If you haven&apos;t bought the game yet, now is a great time:</p>
<!--kg-card-begin: html-->
<iframe src="https://store.steampowered.com/widget/2199420/" frameborder="0" width="646" height="190"></iframe>
<!--kg-card-end: html-->
<figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/87SfS79kj98?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="Sale + Bots &amp; Prefabs Update Preview!"></iframe></figure><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/d_UWCy9a9FU?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="Bots &amp; Prefabs Update - Brickadia is on sale on Steam right now!"></iframe></figure><h2 id="major-features">Major Features</h2><p>Customizable bots to give life to your maps! Give them any weapon and customize their settings like aggression or 360 degree vision. You can use them without weapons to create wandering NPCs, give them swords to make an army of warriors, or give them all guns to create a deathmatch server. They look the same as a player, and you can give them your avatar settings.</p><p>We&apos;ve fully reworked the prefab system. The new prefabs live in your catalog! Save entire cars, contraptions and other interconnected objects locally for easy reuse. Grab a vehicle from the gallery and place it, instantly, anywhere you have permission. Copy things from the world into your real clipboard, and paste them into Discord or another running instance of the game.</p><p>The selector has been completely rewritten with a new connection mode. Grab a complete physics contraption with all connected grids and entities in a single click.</p><p>Four separate player collision channels let you create invisible walls that only certain teams can pass through, opening up new possibilities for minigames and maps.</p><p>A new component that lets you dynamically change a brick&apos;s visibility, collision, and color through wires. Perfect for hidden doors or interactive displays.</p><p>The Applicator and Connector now have an X-Ray mode, letting you edit components on bricks hidden behind other bricks and entities.</p><h2 id="full-changelog-since-ea1">Full Changelog Since EA1</h2><h3 id="gallery">Gallery</h3><ul><li>Renamed &quot;TOP&quot; and &quot;TOP ALL TIME&quot; categories to &quot;HOT&quot; and &quot;TOP&quot;.</li><li>The &quot;HOT&quot; category now also shows older files on the next pages.</li><li>The browser page no longer reloads every time the dialog is shown.</li></ul><h3 id="worlds">Worlds</h3><ul><li>You can now save the server world to your client if you have any building permissions.</li><li>You can now upload worlds to servers with extended permissions. The server will be in read-only mode with autosave disabled.</li></ul><h3 id="prefabs">Prefabs</h3><ul><li>A new prefab browser is now integrated into the catalog, letting you save your creations and add them to the inventory to place much like bricks and entities.</li><li>Prefabs now have automatically generated thumbnails that look the same as bricks and entities, no longer requiring you to get a nice screenshot.</li><li>A new prefab gallery is also available, letting you share your creations, and browse the ones others shared to use immediately or save for later.</li><li>Copying things now stores a prefab file in your clipboard, letting you paste it in another game client or share it through applications like Discord.</li><li>The legacy prefab system and its associated dialogs were removed, but a button exists in the prefab browser to convert any legacy brs files you may have.</li><li>The Max Selected Bricks default value is now the same as Max Prefab Bricks.</li></ul><h3 id="physics">Physics</h3><ul><li>There are now 4 separate player collision channels, so you can make invisible walls that only some teams can pass.</li><li>Can choose which channel to use on a per-team basis, as well as which channels players on those teams collide with.</li></ul><h3 id="selector">Selector</h3><ul><li>The selection system has been rewritten and now supports tracking an explicit selection of bricks and entities.</li><li>When using a selection box, in addition to immediately copying/cutting that box as before, you can now also add/remove the bricks inside to your selection to refine what you have selected in multiple steps.</li><li>The selector now has an alternative connection selection mode that selects adjacent bricks, such as a whole house on its baseplate.</li><li>The connection mode also supports selecting an entire physics contraption including all connected grids and entities.</li><li>Added entity and brick count limits to the selector.</li><li>The mode switch binding has been changed to C.</li></ul><h3 id="applicator">Applicator</h3><ul><li>You can now press R to toggle X-Ray Mode, which will edit bricks that have existing components through other bricks and entities.</li></ul><h3 id="connector">Connector</h3><ul><li>The connector now also has an X-Ray Mode that only interacts with bricks that have components.</li><li>The gate brick will now be highlighted when hovering a physical port.</li></ul><h3 id="painter">Painter</h3><ul><li>The painter can now paint and pick the color sections of entities, such as making wheels have differently colored tires.</li></ul><h3 id="building">Building</h3><ul><li>High friction tires is now the default for newly placed wheels.</li></ul><h3 id="components">Components</h3><ul><li>Added a new component, the Brick Property Changer. Can be used to change the visibility, collision channels, and color of a brick using wires.</li><li>The ancient per-type component quota has been removed. There is now a single per-user quota of active components (lights, audio, item spawns, engines, etc) which can be adjusted in server settings.</li><li>The Seat component can now be manually attached to all bricks, in case you want to fit custom seats in tight spaces.</li><li>All the uncategorized components have been organized in the list.</li></ul><h3 id="bots">Bots</h3><ul><li>Bots can now be given weapons and use them, attacking with melee weapons or shooting guns, reloading them when appropriate.</li><li>Bots can now wander around freely on the map or walk towards goal points, jumping over obstacles.</li><li>Bots can now be given character skins by copying the current skin from your character.</li><li>Bots can now damage players in the default minigame and join teams by coloring their spawns the same as the team color.</li><li>Bots are now considered for win conditions like last man standing.</li><li>Bots can now spawned and despawned by wires.</li><li>Bots have a lot more settings than we are able to list here.</li></ul><h3 id="weapons">Weapons</h3><ul><li>Return of Crystal Kalis which was accidentally disabled.</li><li>Added Laser Cleaver.</li><li>Added Laser Axe.</li><li>Added Medi-Syringe, an item which quickly heals 50 health when used.</li><li>Added Spear, a melee weapon with a fast underhand stab and a slow overhead stab.</li><li>Added Bandage, a slow self healing item that restores 25 hp.</li><li>Added Basic Claws, Sharp Claws, and Shadow Claws, fast melee weapons intended for zombie bots but also possible to use yourself.</li></ul><h3 id="cosmetics">Cosmetics</h3><ul><li>Added Twintails</li><li>Added Snout (multiple variants)</li><li>Added Shaggy Swept hair (2 variants)</li><li>Added Wings</li><li>Added Back Valve</li><li>Added Robot Paw</li><li>Added Robobunny Ears</li><li>Added Secured Bag</li><li>Added Employee Card</li></ul><h3 id="sounds">Sounds</h3><ul><li>Tool audio has been reclassified under Item audio.</li></ul><h3 id="ui">UI</h3><ul><li>The world browser and catalog now remember the last used tab between sessions.</li><li>Pressing Ctrl F in the My Worlds or My Prefabs tabs will now focus the search box.</li><li>Clicking the current folder breadcrumb will now reload the listing to see external changes.</li><li>The pause menu now has a button to open the server list when on a server as a client.</li><li>The unimplemented admin button has been removed from the pause menu.</li><li>Added the ability to search for worlds. Search also includes files in subfolders of the current folder.</li><li>Added the ability to delete worlds.</li><li>Added a dialog when failing to create a folder.</li><li>Removed the defunct controller column from the key binding menu. This never functioned correctly once we began implementing chorded bindings for tools. The intended way to configure controller mappings is to use Steam Input settings.</li><li>Removed the defunct help menu.</li><li>Removed unnecessary &quot;Release-&quot; text from the version display in the top right.</li><li>The folder tiles in the world and prefab browsers now show how many files and folders are inside them.</li></ul><h3 id="servers">Servers</h3><ul><li>Improved /BrickCount output to include entity counts.</li><li>Removed /DestroyAllGrids, which was an obsolete test command.</li><li>Added /ClearAllEntities, which removes all entities in the world.</li><li>Added /ClearEntities, which removes your own entities.</li><li>Added /ClearEntities [player], which removes someone elses entities.</li><li>Added /ClearAllLooseEntities, which removes all entities not attached to at least one more entity.</li><li>Added /ClearLooseEntities, which does the same but only for your entities.</li><li>Added /ClearLooseEntities [player], which does the same but for someone elses entities.</li><li>Added /ClearAllFarEntities [distance], which removes all entities further away than some distance in studs.</li><li>Added /ClearFarEntities [distance], which does the same but only for your entities.</li><li>Added /ClearFarEntities [player] [distance], which does the same but for someone elses entities.</li><li>Added /BrickCount [player], which shows how many bricks, entities and components a specific player has.</li><li>Updated player admin actions drop down to include Clear Entities, Clear Loose Entities, Clear Far Entities (defaults distance to 10000 studs).</li><li>There is now a permission for whether players can use X-Ray mode, intended for Tutorial but can be used by players too.</li></ul><h3 id="performance">Performance</h3><ul><li>Optimized building and share zone checks when modifying bricks.</li><li>Optimized zone checks when characters move.</li><li>Optimized manipulator searching for possible joints to attach while holding entity.</li></ul><h3 id="engine">Engine</h3><ul><li>The experimental Behaviors code has been removed in preparation of integrating the new Lua scripting engine coming in a future update.</li><li>The world boundary no longer instantly vaporizes your vehicles and simply keeps them inside.</li><li>Some improvements to player movement prediction when walking on large frozen physics grids.</li><li>Refactored how the game accesses worlds and prefabs. File handles are now automatically closed and databases unloaded after a few seconds of inactivity, allowing external access to the files.</li><li>The Test executable is now included with the dedicated server deployment.</li><li>Updated PhysX to the newest patch release of version 5.6.1.</li><li>Updated DLSS plugin to version 8.3.0-NGX310.4.0.</li><li>Updated FSR plugin to 4.0.2b, improving performance and stability.</li></ul><h3 id="localization">Localization</h3><ul><li>Updated Spanish localization with reviewed strings.</li><li>Refreshed strings.</li></ul><h3 id="servers-1">Servers</h3><ul><li>The server log file now logs when a user is unbanned.</li></ul><h3 id="bugs">Bugs</h3><ul><li>Fixed crash auto toggling tool with controller.</li><li>Fixed crash joining server while using a controller.</li><li>Fixed crash when creating a very (very) long chain of rerouters or logic gates.</li><li>Fixed several crashes due to unused quickbar ranges legacy code.</li><li>Fixed crash when recreating output wire with a new type.</li><li>Fixed crash when taking a screenshot with HDR.</li><li>Fixed crash when grenades explode after a garbage collection.</li><li>Fixed clients crashing when homing missile hits a physics object.</li><li>Fixed crash when dedicated server is left alone for a while due to iris replication not ticking.</li><li>Fixed crash running out of replicated objects when playing alone in a listen server.</li><li>Fixed crash when loading specifically crafted world file.</li><li>Fixed crash when applicator dialog is viewing a brick component while replicating additional components.</li><li>Fixed crash when equipping a tool while loading into the server.</li><li>Fixed crash when undoing deletion of a brick tried to revive a brick grid that was deleted.</li><li>Fixed crash due to incorrect check for sync state in async serialize function.</li><li>Fixed crash setting minigame inventory size to 0.</li><li>Fixed crash when placing, resizing and deleting bricks too quickly.</li><li>Fixed crash when trying to load an old world file with components that no longer exist.</li><li>Fixed crash when destroying brick grid entity with a building zone attached to it.</li><li>Fixed crashes caused by being able to attach invalid components to bricks.</li><li>Fixed check against NaN object positions not actually working on world load.</li><li>Fixed rare crash due to use after free in legacy save file loader.</li><li>Fixed rare crash in wire type propagation logic related to placing prefabs.</li><li>Fixed brick replication deadlock in rare case where the first component in the update list generates a message of a specific size.</li><li>Fixed trace scene corruption when trying to set the velocity of a frozen entity.</li><li>Fixed broken overlap check allowing certain cases of intersecting micro wedges to be placed.</li><li>Fixed very rare bundle corruption due to background file write tasks executing in incorrect order.</li><li>Fixed being able to pick up multiple pistols.</li><li>Fixed clients not being able to switch to precision mode on paste when copying bricks from physics grids.</li><li>Fixed chance of mysterious 1 unit offset when using switch to precision mode on paste.</li><li>Fixed Painter getting stuck in &quot;Paint Only Material&quot; mode if put away while ctrl is held.</li><li>Fixed selection outlines not rendering in simple shading mode.</li><li>Fixed hologram and translucent plastic brick materials causing Lumen to render an extremely slow ray traced reflection which cannot be seen.</li><li>Fixed broken depth bounds for fog rendering causing it to cut off on surfaces close to the camera.</li><li>Fixed Z fighting of brick previews when overlapped with the original bricks in precision mode.</li><li>Fixed ugly one pixel visual seams along the edges of brick previews.</li><li>Fixed race condition causing the options button on the escape menu to not function sometimes.</li><li>Fixed non-deterministic vehicle behavior due to wheel engines not applying some settings on servers.</li><li>Fixed non-deterministic joint behavior due to not updating average mass on modifying attached objects.</li><li>Fixed contraptions exploding when deleting a set of jointed bodies and undoing the deletion.</li><li>Fixed re-attaching objects to joints not correctly restoring the relative transform if the joint was bent.</li><li>Fixed re-attaching objects to joints not correctly moving further attached child objects.</li><li>Fixed incorrect mass calculation for bricks grids since the ability to disable collision was added.</li><li>Fixed incorrect joint behavior after re-attaching a wheel to a wheel joint connected to an engine.</li><li>Fixed deleting an entity and undoing the deletion not restoring any changed properties.</li><li>Fixed deleting a frozen object and undoing the deletion failing to re-freeze it.</li><li>Fixed having wheel joints connected to an engine preventing idle physics contraptions from sleeping.</li><li>Fixed being unable to create multiple levels of folders for worlds.</li><li>Fixed client predicted hit markers showing for objects that cannot be damaged.</li><li>Fixed extra physics grids and entities attached to the vehicle you are in blocking the camera.</li><li>Fixed loading a world in single player not waiting for meshes to upload before hiding the loading screen.</li><li>Fixed wrong formatting for the message when using /clearbricks [name] as server.</li><li>Fixed distance to target output not working when a teleport target wire is connected.</li><li>Fixed server settings defaulting to the permissions tab.</li><li>Fixed broken &quot;at target&quot; output on servo bearings.</li><li>Fixed various correctness bugs in world serializer.</li><li>Fixed being able to redo undone actions if the permission to do them was since removed from the client.</li><li>Fixed being able to load nan values through presets in the applicator.</li><li>Fixed being able to place more bricks in a single chunk that the world serializer will allow to load.</li><li>Fixed brick grids teleporting into space when attaching a socket to a bearing.</li><li>Fixed firing weapons in first person while crouched not hitting the correct target on the server side.</li><li>Fixed being able to upload to the gallery from the downloads tab.</li><li>Fixed lives counter not updating for clients in minigames.</li><li>Fixed connection not being aborted if client fails to insert a replicated brick into the designated chunk.</li><li>Fixed gallery viewer scaling incorrectly when there are very long titles.</li><li>Fixed long gallery descriptions breaking the layout of the details page.</li><li>Fixed buttons remaining held when clicked too fast.</li><li>Fixed input splitter being shown in add component list.</li><li>Fixed &quot;Failed to insert brick in chunk&quot; log spam.</li><li>Fixed being able to get stuck in freeze camera mode when entering a minigame.</li><li>Fixed not leaving the current seat when trying to use the teleport command.</li><li>Fixed seats showing the sit prompt in third person when occupied.</li><li>Fixed brick delete sound playing in wrong location when removing bricks from physics grids.</li><li>Fixed &quot;Reselect Last Port&quot; on Connector not being rebindable.</li><li>Fixed &quot;Johnny Ledger&quot; music tracks missing in minigame music selector.</li><li>Fixed inaccurate tool traces against wheels attached to wheel joints.</li><li>Fixed aurora setting in environment not functioning.</li><li>Fixed a case of precision mode on paste selecting the wrong grid.</li><li>Fixed water effects and damage not working when standing in low water.</li><li>Fixed Missile Launcher still being able to fire when out of ammo.</li><li>Fixed flying against a wall accumulating velocity incorrectly.</li><li>Fixed gibs and detached hats affecting physics contraptions.</li><li>Fixed being unable to kick gibs around.</li><li>Fixed hitmarkers playing twice on clients.</li><li>Fixed Manipulator not aiming correctly in free mouse mode.</li><li>Fixed wires not respecting render distance limit.</li><li>Fixed additional bugs that were not correctly tracked.</li></ul>]]></content:encoded></item><item><title><![CDATA[Sale + Bots/Prefabs Preview!]]></title><description><![CDATA[Brickadia is taking part in the Steam Autumn Sale, and our first major update is now available in preview on the unstable branch.]]></description><link>https://brickadia.com/blog/sale-bots-prefabs-preview/</link><guid isPermaLink="false">68dab6f231880f0007fa04bf</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[Zeblote]]></dc:creator><pubDate>Mon, 29 Sep 2025 17:12:05 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2025/09/image.png" medium="image"/><content:encoded><![CDATA[<h3 id="steam-autumn-sale">Steam Autumn Sale</h3><img src="https://brickadia.com/blog/content/images/2025/09/image.png" alt="Sale + Bots/Prefabs Preview!"><p>Brickadia is taking part in the Steam Autumn Sale! If you haven&apos;t bought the game yet, now is a great time:</p>
<!--kg-card-begin: html-->
<iframe src="https://store.steampowered.com/widget/2199420/" frameborder="0" width="646" height="190"></iframe>
<!--kg-card-end: html-->
<h3 id="ea2-preview">EA2 Preview</h3><p>At the same time, we&apos;re releasing a preview version of our first major update on the unstable branch so you can try it a few days early. This has two long-awaited major features:</p><p>We&apos;ve fully reworked the prefab system. The new prefabs live in your catalog! Save entire cars, contraptions and other interconnected objects locally for easy reuse. Grab a vehicle from the gallery and place it, instantly, anywhere you have permission. Copy things from the world into your real clipboard, and paste them into Discord or another running instance of the game.</p><p>Customizable bots to give life to your maps! Give them any weapon and customize their settings like aggression or 360 degree vision. You can use them without weapons to create wandering NPCs, give them swords to make an army of warriors, or give them all guns to create a deathmatch server. They look the same as a player, and you can give them your avatar settings.</p><p>Watch the video below for a sneak peek:</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/87SfS79kj98?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="ea2release wide"></iframe></figure><p>You can read the full changelog <a href="https://store.steampowered.com/news/app/2199420/view/508466730850321053" rel="noreferrer">on Steam</a>.</p>]]></content:encoded></item><item><title><![CDATA[Tutorial - Car Tuning]]></title><description><![CDATA[Struggling to get a car driving well? Here's a guide on tuning your vehicles!]]></description><link>https://brickadia.com/blog/tutorial-car-tuning/</link><guid isPermaLink="false">68b87cfa786a61000738c839</guid><category><![CDATA[Tutorials]]></category><dc:creator><![CDATA[Kenko]]></dc:creator><pubDate>Fri, 05 Sep 2025 16:43:59 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2025/09/tutorial-cartuning.png" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2025/09/tutorial-cartuning.png" alt="Tutorial - Car Tuning"><p>Hello again! After our previous car building tutorial we promised to release a second part dedicated to car tuning, and here it is!</p><p>Got a car built and driving, but you&apos;re struggling to get it controlling well? Wheels bouncing all over the place, or your car flips over all the time? This tutorial guides you through the most important settings to tune your car properly, providing far better control and stability.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/KbsfOc-Ke78?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="Take your Brickadia cars to the next level! - Vehicle Tuning Tutorial"></iframe></figure><p>If you&apos;re not sure how to build a car in the first place, <a href="https://www.youtube.com/watch?v=N2TkDHsSmC8" rel="noreferrer">check out our beginner&apos;s car building tutorial.</a></p><p>You may note that we don&apos;t give concrete &quot;recommended&quot; numbers in this video to use - this is because everyone&apos;s car can be so wildly different! They can be small, massive, super long, super wide, carrying a whole lot of cargo, wielding a massive robotic arm, or even more. So, we encourage experimentation on your specific vehicles to find the right calibration for the kind of handling you&apos;d like.</p><p>Thank you all for your feedback on our previous tutorial video - let us know what you&apos;d like us to teach next!</p>]]></content:encoded></item><item><title><![CDATA[Tutorial - Car Building for Beginners]]></title><description><![CDATA[Here's how to build a simple drivable car in just one minute!]]></description><link>https://brickadia.com/blog/tutorial-car-building/</link><guid isPermaLink="false">689a1757786a61000738c519</guid><category><![CDATA[Tutorials]]></category><dc:creator><![CDATA[Kenko]]></dc:creator><pubDate>Mon, 11 Aug 2025 17:43:06 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2025/08/tutorial-carbuilding.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2025/08/tutorial-carbuilding.jpg" alt="Tutorial - Car Building for Beginners"><p>Hey all! We&apos;ve been loving your enjoyment and feedback of our in-game tutorial. We definitely want to build more in-game tutorials for more specific features, but we&apos;ve also decided to start a new series of video tutorials too!</p><p>Our first video tutorial is on how to build a simple car in just one minute:</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/N2TkDHsSmC8?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="Beginners Car Building Tutorial in Brickadia! &#x1F697;"></iframe></figure><p>The next Brickadia video tutorial will be about <strong>vehicle tuning</strong> - guidance on how to create cars that are more fun to drive. Our video tutorials are going to always be uploaded in full on our Youtube channel with shorter versions on all of our other social medias, so follow and subscribe to become the most skilled builder around!</p>]]></content:encoded></item><item><title><![CDATA[Feature Preview #2: What's next for Brickadia]]></title><description><![CDATA[Going over some short and long term plans after the release!]]></description><link>https://brickadia.com/blog/whats-next-for-brickadia/</link><guid isPermaLink="false">68720bf9786a61000738be02</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[Zeblote]]></dc:creator><pubDate>Wed, 16 Jul 2025 17:36:44 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2025/07/AVAILABLE_NOW.png" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2025/07/AVAILABLE_NOW.png" alt="Feature Preview #2: What&apos;s next for Brickadia"><p>So, it happened. After quite a bit of time, Brickadia Early Access is available for people to play! We still can&apos;t really believe it.</p><p>We&apos;ve been loving your creations on the Gallery. We saw a concurrent player peak just a little higher than what we had in the free demo, which is amazing for day 1 of the paid release! We also saw a really nice amount of engagement with lots of servers being put up and plenty of players running around doing things.</p><h1 id="short-term-roadmap">Short Term Roadmap</h1><h3 id="bugs">Bugs</h3><p>It turns out the best way to find out how many bugs your Early Access game really has is to launch it! While we&apos;ve tracked and fixed dozens of bugs during the closed beta, there are still a few more we didn&apos;t manage to get to in time.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/07/image-4.png" class="kg-image" alt="Feature Preview #2: What&apos;s next for Brickadia" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/07/image-4.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/07/image-4.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/07/image-4.png 1600w, https://brickadia.com/blog/content/images/2025/07/image-4.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The tutorial doesn&apos;t work if people changed their server permissions in the demo (fixed today).</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/07/image-3.png" class="kg-image" alt="Feature Preview #2: What&apos;s next for Brickadia" loading="lazy" width="1903" height="1120" srcset="https://brickadia.com/blog/content/images/size/w600/2025/07/image-3.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/07/image-3.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/07/image-3.png 1600w, https://brickadia.com/blog/content/images/2025/07/image-3.png 1903w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Crash reports are coming in. Users with AMD GPUs seem to be hit more often than others.</span></figcaption></figure><p>Notably there are <em>lots</em> of crashes coming in from AMD. For now we&apos;ve made the game switch all AMD users to DX11 by default as that seems to not crash. We&apos;ve also bought one of the affected AMD GPUs and began debugging it, but it only arrived today, so it will take a while to fix the DX12 mode.</p><p>We&apos;re going to address the most critical issues as they pop up while we work on the new features. The <a href="https://store.steampowered.com/news/app/2199420/view/517467588398153800" rel="noreferrer">first hotfix</a> went out today, with more coming over the next weeks.</p><h2 id="gamemode-system">Gamemode System</h2><p>The Minigame system we currently have is causing a bunch of problems and badly needs an update. It was made for Alpha 4, where it wasn&apos;t really possible to make any kind of real gamemode, and was meant more to help players mess around together in an otherwise building-focused server.</p><p>Over the coming months, we&apos;ll be working on a Gamemode system that will replace it. There will only be one Gamemode supported in a server, but Gamemodes will be much easier to use than Minigames and much more powerful. Crucially, they will be much easier not to use incorrectly, resulting in people who downloaded your world spawning outside it and other issues.</p><p>It&apos;ll be designed for hosts, rather than random players who want to deathmatch in the middle of a server hosted by someone else. In addition, once your Gamemode is done, you&apos;ll be able to put it on the gallery alongside all its internal wires, due to a feature called Gamemode Microchips we&apos;ll talk about in the next section!</p><p>Don&apos;t worry for your existing worlds with a default minigame set up - everything should port over sensibly. In fact, due to the removal of the &quot;included bricks&quot; system, many worlds that are currently broken will immediately be fixed!</p><h2 id="wires-v2come-on-more-stuff">Wires V2 - Come on... More Stuff!</h2><p>Wires V2 is an upgrade we made to the wires system for EA. It turns your wire contraptions into a graph that is stored on the server, like this:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/07/image-9.png" class="kg-image" alt="Feature Preview #2: What&apos;s next for Brickadia" loading="lazy" width="1017" height="706" srcset="https://brickadia.com/blog/content/images/size/w600/2025/07/image-9.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/07/image-9.png 1000w, https://brickadia.com/blog/content/images/2025/07/image-9.png 1017w"><figcaption><span style="white-space: pre-wrap;">&quot;Demo&quot; circuit where 2 switches must be turned on to turn on a light.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/07/Untitled.png" class="kg-image" alt="Feature Preview #2: What&apos;s next for Brickadia" loading="lazy" width="2000" height="403" srcset="https://brickadia.com/blog/content/images/size/w600/2025/07/Untitled.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/07/Untitled.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/07/Untitled.png 1600w, https://brickadia.com/blog/content/images/size/w2400/2025/07/Untitled.png 2400w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Internal wire graph produced to execute that circuit.</span></figcaption></figure><p>Wires are now automatically organized into a dependency graph so we can update all gates in the correct order in a single step. This means you can build arbitrarily complex circuits without having to deal with any of the problems getting multiple signals to arrive at the same time like in the demo! The new system is also massively faster.</p><p>This does add a new restriction - the graph can&apos;t have cycles, so you need to break your circuit up with delays. But it also means things that were slow in the NextFest demo can suddenly run very very fast:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_nextforbrickadia-fastwires" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextForBrickadia_VeryFastWires.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Very fast wire contraption by toval. No, we don&apos;t know how this thing works either.</figcaption>
    </a>
    <div id="inline_nextforbrickadia-fastwires" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextForBrickadia_VeryFastWires.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>It also means that there are no more &quot;false&quot; states. Unlike the demo, wire circuits fully update when an input changed, rather than signals taking 1 tick to propagate.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/07/image-10.png" class="kg-image" alt="Feature Preview #2: What&apos;s next for Brickadia" loading="lazy" width="1097" height="603" srcset="https://brickadia.com/blog/content/images/size/w600/2025/07/image-10.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/07/image-10.png 1000w, https://brickadia.com/blog/content/images/2025/07/image-10.png 1097w"><figcaption><span style="white-space: pre-wrap;">In the demo, this circuit would have beeped every time you flicked the switch on because for 1 tick, the AND gate would have turned on.With wires V2, you will never hear the audio component make a noise.</span></figcaption></figure><p>The new system has allowed us to add something called Exec wires. Exec wires make wires into a scripting system, by passing along a pure &quot;update&quot; signal rather than data. Any data passed into an exec port becomes an update signal if it <em>changed </em>to a nonzero value. Unlike the demo, this lets actions run in a chain:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/07/image-12.png" class="kg-image" alt="Feature Preview #2: What&apos;s next for Brickadia" loading="lazy" width="1414" height="550" srcset="https://brickadia.com/blog/content/images/size/w600/2025/07/image-12.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/07/image-12.png 1000w, https://brickadia.com/blog/content/images/2025/07/image-12.png 1414w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">When a player pushes this button, teleport them, </span><i><em class="italic" style="white-space: pre-wrap;">then</em></i><span style="white-space: pre-wrap;"> play a sound where they arrived.</span></figcaption></figure><p>Unfortunately, making the system itself took so long that we could barely include any gates aside from rewrites of the ones we already included in the NextFest demo! Which is a shame - because once those are in, Wires V2 will <em>really</em> start to shine.</p><p>Our plans for the following weeks are thus:</p><ul><li><strong>Microchips </strong>- compress your logic circuits into a single 1x1f brick. Create entirely custom gates by combining the gates that come with the game!</li><li><strong>Variables and Branching</strong> - Store, read and write values when your wire nodes run. No more manually building flip flops or using the blend gate to store data!</li><li><strong>Proper Gamemode Support</strong> - MANY more gates for responding to minigame events like new rounds, custom chat commands, entity manipulation and more!</li><li><strong>Gamemode &amp; Player Microchips</strong> - Store information on your gamemode/minigame and on players via microchip grids that save and load. Create callable circuits and build a fully reuseable gamemode - just with wires!</li><li><strong>Implicit Input Combining</strong> - Wire multiple things into one input. Booleans implicitly OR, numbers implicitly add, execs implicitly union. In some cases, save tens of gates!</li><li><strong>And Much More</strong> - Array variables and iteration, queues that can wait for many events with parameters, loops, data displays, strings, kinematic joints, entity homes, and more...</li></ul><h2 id="new-prefab-system">New Prefab System</h2><p>This sadly didn&apos;t make the cut for the initial Early Access release, but we&apos;re very close to having our new prefab system completed.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/07/image-6.png" class="kg-image" alt="Feature Preview #2: What&apos;s next for Brickadia" loading="lazy" width="2000" height="1048" srcset="https://brickadia.com/blog/content/images/size/w600/2025/07/image-6.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/07/image-6.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/07/image-6.png 1600w, https://brickadia.com/blog/content/images/2025/07/image-6.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The selector will be upgraded to be able to select bricks, entities, and entire contraptions.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/07/image-7.png" class="kg-image" alt="Feature Preview #2: What&apos;s next for Brickadia" loading="lazy" width="1574" height="1098" srcset="https://brickadia.com/blog/content/images/size/w600/2025/07/image-7.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/07/image-7.png 1000w, https://brickadia.com/blog/content/images/2025/07/image-7.png 1574w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">You can soon select individual objects and precisely control your selection.</span></figcaption></figure><p>The new prefab system finally replaces our legacy &quot;brs&quot; save files from the first alpha version, which can only store bricks from a single grid in a very inefficient manner, with a completely redesigned one based on the worlds format. We will include a brs -&gt; brz converter with the release so old builds can still be loaded in.</p><p>Prefabs will then be able to contain full physics contraptions, properly tuned cars (including their wheels!), logic computers, and whatever else you can think of.</p><p>They&apos;re going to be integrated with the main catalog UI, so you can put prefabs in your hotbar the same way you do with bricks and entities. And we&apos;re adding a gallery for them so you can share them with others.</p><h3 id="bots">Bots</h3><p>This was actually one of the most requested features to the game that we&apos;ve been able to see, with lots of players having a strong desire to use bots to make zombie servers, or simply adding ambient NPCs that roam about the map. We didn&apos;t have strong plans for this, but we think it&apos;ll be cool to throw in as soon as we can especially with our focus on adding more gameplay features.</p><p>The initial version of bots will be ready soon, letting them hold different weapons, move around randomly, and be controlled through wires. This is only the starting stage, but we&apos;d like to get this out the door quickly so that people can start experimenting with them. Here&apos;s a preview:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_nextforbrickadia-botland" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextForBrickadia_Botland.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>The first ever bot DM! Ignore the physics glitches, it is an editor-only issue.</figcaption>
    </a>
    <div id="inline_nextforbrickadia-botland" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextForBrickadia_Botland.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>They will be improved over time, with features like smarter navigation, direct wire controlling, and a special bot type to replace players that disconnect from a minigame. These features might take a while to get to, depending on priorities once the first version is released.</p><h2 id="sounds">Sounds</h2><p>A much smaller but still prevalent complaint that was brought up, presumably from the excess of deathmatch servers, was the difficulty of hearing other players when they were walking around. If someone was sneaking up on you, you could barely hear them!</p><p>We&apos;ll be adding a bunch of smaller features to try to allow hosts to set up exactly how they want such things to work in their server. This requires certain systems to be rewritten first, but we&apos;d like for the game to support dynamically changing how loud and how far certain sounds are on a team basis for minigames. You should also be able to change how a team perceives sound, such as making teammates sound quieter than enemies.</p><p>This is one of the lower priority changes, so we have no ETA on when that will happen. In the meantime, more sounds are going to be added to the audio components, as well as the environment settings. If you&apos;ve got any desires, feel free to suggest them in the Discord!</p><h2 id="and-more">And More...</h2><ul><li><strong>Aircraft</strong> - We&apos;ve been experimenting in the last 2 days with tools for making aircraft. There is nothing that is showable yet but we expect this feature to develop quite quickly, so I&apos;ve included it here.</li><li><strong>Better Admin Tools</strong><ul><li>Finder tool server admins can use to see a tree view of all entities in the world and find hidden or far-away spam entities.</li><li>&quot;Home&quot; positions for entities that they return to when respawned, leave the world, or when the gamemode is reset (mentioned with wire changes above).</li><li>Better, more in depth permissions for players - we&apos;ve already started on this one!</li></ul></li><li><strong>Avatars on the Gallery</strong> - It&apos;s coming, folks! We&apos;re just working on what the UI looks like.</li></ul><h1 id="long-term-roadmap">Long Term Roadmap</h1><p>While it&apos;s too early to fully get into details, we have quite a lot of other features we&apos;re interested in adding to the game, over the next year.</p><ul><li><strong>Editable Voxel Terrain </strong>- Building terrain is super hard! It&apos;s so difficult and tedious for even experienced builders that it causes them to not try to build things. Unfortunately, if you don&apos;t build any terrain, Brickadia currently imposes upon you a very heavy visual punishment - the sight of bare plate as far as the eye can see. Terrain would fix this.</li><li><strong>Destruction </strong>- You&apos;ve probably tried blowing up a wall of bricks with a rocket and noticed that nothing happened whatsoever. So lame! Luckily we&apos;re going to do something about it.</li><li><strong>Scripting</strong> - We&apos;re moving into prototyping for this. Luau is currently on the table, but research is ongoing. Stay tuned.</li><li><strong>Custom Content (Modding)</strong> - We have existing plans for how common types of custom content can be added to the game and automatically replicate to players joining servers. It&apos;s very much on our minds still!<br><br>PS: We have removed all technical measures preventing modification of the game such as package signing and obfuscation. These were leftover from the Open Alpha and never intended to ship in the release. While we don&apos;t think this is the correct approach for a multiplayer game in the end, feel free to mess around locally in the interim. There will be no support.</li></ul><h1 id="anything-else">Anything Else?</h1><p>We&apos;ll be keeping our ear to the ground on what our players think is vital to add to the game. The things that we prioritize will change over time, so make sure to provide your feedback on what you think is most important, or if there&apos;s anything we haven&apos;t yet mentioned you want to see.</p><p>That&apos;s it for now! If your game doesn&apos;t work, let us know and hang tight, we&apos;ll fix it. Otherwise, we hope you are having fun! This is just the beginning of our journey.</p>]]></content:encoded></item><item><title><![CDATA[BRICKADIA EARLY ACCESS IS NOW AVAILABLE]]></title><description><![CDATA[It's really happening!]]></description><link>https://brickadia.com/blog/brickadia-early-access-is-now-available/</link><guid isPermaLink="false">68710c778564ad0006dc8f85</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[Zeblote]]></dc:creator><pubDate>Fri, 11 Jul 2025 16:10:05 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2025/07/AVAILABLE-NOW--1-.png" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2025/07/AVAILABLE-NOW--1-.png" alt="BRICKADIA EARLY ACCESS IS NOW AVAILABLE"><p>Hey, everyone!</p><p>After this long journey of development, we first want to thank you all for joining us on this incredible adventure that has been the creation of Brickadia. We&#x2019;re beyond excited to finally announce that <a href="https://store.steampowered.com/app/2199420/Brickadia/" rel="noreferrer">Brickadia Early Access is NOW LIVE on Steam</a>! To celebrate, we&#x2019;ve put together a launch trailer made entirely with in-game footage, check it out below! &#x1F447;</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/5XXUGW41jos?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="Brickadia | Early Access Launch Trailer"></iframe></figure><p><strong>This isn&#x2019;t the typical Early Access release, </strong><em>Brickadia</em> Early Access already feels like a full game, completely polished and content-rich. With constant updates planned based on your feedback, it&#x2019;s only going to get better from here. </p><p>What are you waiting for? The world of Brickadia is yours to shape, one brick at a time. Join Early Access now and unleash your imagination!</p><p><a href="https://store.steampowered.com/app/2199420/Brickadia/?l=spanish"><u>https://store.steampowered.com/app/2199420/Brickadia/</u></a></p><p>As always, thank you for being part of the journey as we build Brickadia together &#x2665;&#xFE0F;.&#xA0;</p><p>We can&#x2019;t wait to see the game in your libraries and your creations on social media with #Brickadia!</p><p>Look for Brickadia on <a href="https://bsky.app/profile/did:plc:hm2f45hhjcmnmc2seqqttguh"><u>Bluesky</u></a>, <a href="https://x.com/brickadiagame"><u>Twitter/X</u></a>, <a href="https://www.tiktok.com/@brickadia"><u>TikTok</u></a>, <a href="https://www.youtube.com/@brickadia"><u>YouTube</u></a>, <a href="https://www.instagram.com/brickadiagame/"><u>Instagram</u></a> and join the always growing community on <a href="https://discord.gg/brickadia"><u>Discord</u></a>.</p>]]></content:encoded></item><item><title><![CDATA[Feature Preview #1: HDR, Lumen & Ray Tracing]]></title><description><![CDATA[A little preview of some really fancy optional features going into Early Access.]]></description><link>https://brickadia.com/blog/feature-preview-1/</link><guid isPermaLink="false">6856d2a58564ad0006dc8acf</guid><category><![CDATA[Development]]></category><dc:creator><![CDATA[Zeblote]]></dc:creator><pubDate>Sat, 21 Jun 2025 18:38:45 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2025/06/Brickadia-Win64-Shipping_i2rujLCJRp-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2025/06/Brickadia-Win64-Shipping_i2rujLCJRp-1.png" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing"><p>Welcome to a new little blog series we&apos;re doing in the run up to Early Access. We currently don&apos;t have time to write huge technical dev logs like we did <a href="https://brickadia.com/blog/devlog-4/" rel="noreferrer">in</a> <a href="https://brickadia.com/blog/devlog-5/" rel="noreferrer">the</a> <a href="https://brickadia.com/blog/devlog-6/" rel="noreferrer">past</a>, but there are still a lot of new features to talk about! So, we decided to instead post a bunch of little blogs whenever something is ready without losing ourselves too much in the details.</p><p>Today we&apos;ll talk about a few optional graphics enhancements you can use if &quot;Ultra&quot; just isn&apos;t good enough for you and you would really like to use your GPU for heating your room in the winter.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">If you <i><em class="italic" style="white-space: pre-wrap;">don&apos;t</em></i> want to do that for some inexplicable reason, no need to worry, we&apos;ve taken great care to ensure these features existing causes no overhead if you&apos;ve disabled them!</div></div><h2 id="introduction">Introduction</h2><p>Before we start, you can watch this video demonstrating what it looks like with all the features enabled. We had to wait over a day for YouTube to process the video and actually make the 4k60 HDR option available. Isn&apos;t that crazy?&#x1F447;</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/WdKFOIVDVFQ?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="HDR HWRT Lumen Test"></iframe></figure><h2 id="hdr-output-episode-2">HDR Output, Episode 2</h2><p>If you remember our post from a year ago, we actually talked about this <a href="https://brickadia.com/blog/devlog-5/#high-dynamic-range-output" rel="noreferrer">before</a>.</p><p>The only problem was that since that previous post, we had upgraded to Unreal Engine 5.5 just before the demo, and naturally Epic had managed to somehow break the HDR in the new engine version. This is what were greeted with after the update when a user enabled HDR and opened any UI:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/06/image.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1125" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image.png 1600w, https://brickadia.com/blog/content/images/2025/06/image.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Some serious skill issues here.</span></figcaption></figure><p>Luckily, this turned out to be easily fixed after some investigation in RenderDoc. They had merely forgotten to clear a render target before using it, causing all this garbage data to be displayed on screen. </p><p>There was also a second issue where having the avatar editor on screen turned the background black. That one was more involved, but is also fixed now - to render the avatar editor we now first blur the background in HDR, render most of the UI, render the avatar background on top of the blurred HDR render target and cut a hole into the UI where it should show, and finally composite everything back together into the final output.</p><p>These images were captured in 4k HDR using Xbox Game Bar on Windows 11, which writes a JPEG-XR file, and then converted to AVIF using this <a href="https://github.com/ledoge/jxr_to_avif">tool</a> I found, so they can display in the browser. On my computer, the version in the browser looks exactly the same as the game, but I have no idea if that works for you too.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_hdr-test-1" data-lity>
    	<img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output5.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    <figcaption>The avatar editor now has HDR. Whoa.</figcaption>
    </a>
    <div id="inline_hdr-test-1" class="lity-hide">
        <img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output5.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_hdr-test-2" data-lity>
    	<img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output1.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    <figcaption>HDR test image 1.</figcaption>
    </a>
    <div id="inline_hdr-test-2" class="lity-hide">
        <img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output1.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_hdr-test-3" data-lity>
    	<img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output2.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    <figcaption>HDR test image 2.</figcaption>
    </a>
    <div id="inline_hdr-test-3" class="lity-hide">
        <img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output2.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_hdr-test-4" data-lity>
    	<img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output3.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    <figcaption>HDR test image 3.</figcaption>
    </a>
    <div id="inline_hdr-test-4" class="lity-hide">
        <img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output3.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_hdr-test-5" data-lity>
    	<img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output4.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    <figcaption>HDR test image 4.</figcaption>
    </a>
    <div id="inline_hdr-test-5" class="lity-hide">
        <img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output4.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_hdr-test-6" data-lity>
    	<img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output6.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    <figcaption>HDR test image 5.</figcaption>
    </a>
    <div id="inline_hdr-test-6" class="lity-hide">
        <img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output6.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_hdr-test-7" data-lity>
    	<img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output7.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    <figcaption>HDR test image 6.</figcaption>
    </a>
    <div id="inline_hdr-test-7" class="lity-hide">
        <img loading="lazy" src="https://static.brickadia.com/resources/feature-preview-1-output7.avif" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing">
    </div>
</figure>
<!--kg-card-end: html-->
<p>Some troubleshooting if the images don&apos;t display correctly:</p><ul><li>If you don&apos;t have a HDR monitor, you can&apos;t view them.</li><li>If you have HDR disabled in Windows, enable it.</li><li>If you are using Edge or Firefox or something else, use Chrome.</li><li>If you are using Chrome but the images are too dark, change the HDR brightness balance setting in Windows, or change the dynamic tone mapping setting on your display&apos;s menu.</li><li>If you are not using Windows, I can&apos;t help you.</li></ul><h2 id="lumen-hardware-ray-tracing">Lumen &amp; Hardware Ray Tracing</h2><p>Remember how we implemented support for hardware ray tracing bricks <a href="https://brickadia.com/blog/brickadia-alpha-5-patch-5/#experimental-rtx-ray-tracing-support" rel="noreferrer">a long time ago</a>? That code had gotten a little scuffed up over the years and was no longer functioning in the demo, but I just fixed it up. Hardware ray tracing is now back for Early Access, it&apos;s also quite a bit faster since back then (but still slow...).</p><p>In the mean time, Epic had made lots of progress on Lumen. Since we are now on Unreal Engine 5.5, I thought I&apos;d give it another try. We still don&apos;t have distance fields to be able to use <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/lumen-technical-details-in-unreal-engine#software-ray-tracing" rel="noreferrer">software ray tracing</a>, but what if we could make the <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/lumen-technical-details-in-unreal-engine#hardware-ray-tracing" rel="noreferrer">hardware ray tracing</a> path work?</p><p>Naturally the first attempt did not work <em>at all</em>. We weren&apos;t getting any information from HWRT to Lumen whatsoever:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/06/image-1.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1006" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-1.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-1.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-1.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-1.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Not even the wheels and character are working correctly, which only use basic engine meshes.</span></figcaption></figure><p>Since I had never really worked with Lumen before, I opened up an Unreal Engine example project to see how this view should look, and theirs is... quite different, wouldn&apos;t you say?</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/06/image-3.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1098" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-3.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-3.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-3.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-3.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">It&apos;s not black.</span></figcaption></figure><p>Turns out most of that was just because I had purposefully broken the lumen scene  some time ago while making Proto Lumen. Let&apos;s revert that change so it only applies when we are actually running in Proto Lumen mode...</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/06/image-4.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1079" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-4.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-4.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-4.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-4.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Our ground has started to show up. Wheels are still getting culled, but let&apos;s worry about that later.</span></figcaption></figure><p>The bigger problem is that our bricks are still broken.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/06/image-5.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1078" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-5.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-5.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-5.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-5.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">All of the bricks are culled despite taking up all the screen. Why?</span></figcaption></figure><p>It turns out Lumen requires something called a <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/lumen-technical-details-in-unreal-engine#surface-cache" rel="noreferrer">Surface Cache</a> to work properly. Basically, we have to cover our meshes with planes onto which it will render indirect lighting. Of course the code Epic made to do this for normal meshes only works in the editor and is extremely slow as it is intended for offline processing.</p><p>How do we do this? We could just write a more optimized version of their code that works at runtime. They are doing ray tracing against the meshes on the CPU side and it can take like half a second to process a single mesh this way. When we build clusters for a large build, we have <em>thousands</em> of meshes.</p><p>To do it at runtime, we&apos;ll do all of the following:</p><ul><li>We will use the <a href="https://www.embree.org/" rel="noreferrer">embree4</a> library to trace the rays, making full use of its capability to trace 8 rays in parallel with AVX instructions.</li><li>We will use our <a href="https://brickadia.com/blog/optimizing-bricks-for-alpha-5-part-2/#level-of-detail-for-bricks" rel="noreferrer">low detail mesh</a> as input for each brick cluster.</li><li>We will use very few rays, accepting a mediocre real-time result.</li></ul><p>The full algorithm ends up as the following: it will take the low detail mesh we build for the brick cluster, convert this to an embree4 scene to be able to ray trace it on CPU, overlay a 32x32x32 voxel grid, then for each face of the grid (6) it will trace rays through the grid to hit the mesh, generating layers of surfels at the hit surfaces, trace additional rays to determine if some hits might be &quot;inside&quot; the mesh only and useless, then cluster those surfels to finally end up with the set of most significant surfaces to output as cards.</p><p>Our implementation of this is now so fast that it barely increases the time it takes to generate brick clusters.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/06/image-6.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-6.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-6.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-6.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-6.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Generated cards for a hollow brick structure.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/06/image-8.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-8.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-8.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-8.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-8.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">We have full surface caching for all the bricks!</span></figcaption></figure><p>In real builds, it looks significantly more cluttered, but it works surprisingly well. We don&apos;t always cover <em>every</em> surface since the brick clusters may randomly include multiple hollow structures, but we get most of them which is enough for the whole system to work.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/06/image-9.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-9.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-9.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-9.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-9.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">That&apos;s a lot of cards.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/06/Brickadia_x7JN1bPtdx.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/Brickadia_x7JN1bPtdx.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/Brickadia_x7JN1bPtdx.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/Brickadia_x7JN1bPtdx.png 1600w, https://brickadia.com/blog/content/images/2025/06/Brickadia_x7JN1bPtdx.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">We&apos;ve covered like 90% of the scene with at least one card, so I&apos;m happy with the result.</span></figcaption></figure><p>Almost every build I&apos;ve tried had ended up with a usable surface cache.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-11.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-11.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-11.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-11.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-11.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-10.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-10.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-10.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-10.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-10.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-12.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-12.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-12.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-12.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-12.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-13.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-13.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-13.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-13.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-13.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Let&apos;s get rid of those annoying debug views so we can appreciate the glory.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-14.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-14.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-14.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-14.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-14.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-15.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-15.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-15.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-15.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-15.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-16.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-16.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-16.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-16.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-16.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-17.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-17.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-17.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-17.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-17.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-18.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-18.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-18.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-18.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-18.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-19.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-19.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-19.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-19.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-19.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-20.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-20.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-20.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-20.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-20.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-21.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-21.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-21.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-21.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-21.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-22.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1125" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-22.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-22.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-22.png 1600w, https://brickadia.com/blog/content/images/size/w2400/2025/06/image-22.png 2400w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image2.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1125" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image2.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image2.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image2.png 1600w, https://brickadia.com/blog/content/images/size/w2400/2025/06/image2.png 2400w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image3.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1125" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image3.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image3.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image3.png 1600w, https://brickadia.com/blog/content/images/size/w2400/2025/06/image3.png 2400w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image5.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1125" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image5.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image5.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image5.png 1600w, https://brickadia.com/blog/content/images/size/w2400/2025/06/image5.png 2400w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image6.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1125" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image6.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image6.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image6.png 1600w, https://brickadia.com/blog/content/images/size/w2400/2025/06/image6.png 2400w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image7.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1125" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image7.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image7.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image7.png 1600w, https://brickadia.com/blog/content/images/size/w2400/2025/06/image7.png 2400w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image8.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1125" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image8.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image8.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image8.png 1600w, https://brickadia.com/blog/content/images/size/w2400/2025/06/image8.png 2400w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/ScreenShot00050-1.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="2000" height="1125" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/ScreenShot00050-1.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/ScreenShot00050-1.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/ScreenShot00050-1.png 1600w, https://brickadia.com/blog/content/images/size/w2400/2025/06/ScreenShot00050-1.png 2400w" sizes="(min-width: 1200px) 1200px"></figure><p>Yes, it does ray traced reflections too.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/image-23.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-23.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/image-23.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/image-23.png 1600w, https://brickadia.com/blog/content/images/2025/06/image-23.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/06/Brickadia_1W9KYnxKjd.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/Brickadia_1W9KYnxKjd.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/06/Brickadia_1W9KYnxKjd.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/06/Brickadia_1W9KYnxKjd.png 1600w, https://brickadia.com/blog/content/images/2025/06/Brickadia_1W9KYnxKjd.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Almost feels like a real-time photo mode, rivaling the old <a href="https://brickadia.com/blog/brickadia-alpha-5-patch-5/#experimental-rtx-path-tracing-renderer" rel="noreferrer">path tracer</a> we used to have. I&apos;ve never seen a building game capable of looking this good before...</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/06/image-24.png" class="kg-image" alt="Feature Preview #1: HDR, Lumen &amp; Ray Tracing" loading="lazy" width="620" height="472" srcset="https://brickadia.com/blog/content/images/size/w600/2025/06/image-24.png 600w, https://brickadia.com/blog/content/images/2025/06/image-24.png 620w"><figcaption><span style="white-space: pre-wrap;">All the new options at a glance.</span></figcaption></figure><p>The memory usage and performance of this mode can be quite heavy. Epic has several performance optimizations in Unreal Engine 5.6, but we won&apos;t be able to get that in before release. If it doesn&apos;t currently run well on your computer yet, maybe it will once we upgrade to that.</p><p>Well, that&apos;s all for this preview. There are going to be many more before we reach Early Access. Stay tuned!</p>]]></content:encoded></item><item><title><![CDATA[Brickadia Early Access coming this July 11!]]></title><description><![CDATA[Everything you need to know about the upcoming Early Access launch, plus a new montage trailer made entirely from in-game footage!]]></description><link>https://brickadia.com/blog/early-access-coming-this-july-11/</link><guid isPermaLink="false">682f6dd28564ad0006dc8200</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[Zeblote]]></dc:creator><pubDate>Fri, 23 May 2025 12:35:00 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2025/05/brickadia.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2025/05/brickadia.jpg" alt="Brickadia Early Access coming this July 11!"><p>Hey everyone!</p><p>You&#x2019;ve been asking us everywhere, and we can finally say it: Brickadia is launching in <strong>Early Access on July 11, 2025</strong>, on <strong>Steam</strong> - We can&#x2019;t tell you how excited we are to finally write those words!. And we&#x2019;re making this announcement in style, with a <strong>new montage trailer</strong> made entirely from in-game footage. Check it out below &#x1F447;</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/RPAnrTAAjMM?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="BRICKADIA &#x1F9F1; &#x2728;|  Early Access release date - July 11!"></iframe></figure><p>Here&#x2019;s what we can share right now: the Early Access version will feel like the <strong>full game experience from day one</strong>, with the extra-benefit that <strong>it&#x2019;ll come at a lower price </strong>than the final release. It&#x2019;ll be your chance to jump into Brickadia early and be part of something big as it evolves. So for now, don&#x2019;t forget to <strong>wishlist the game on our </strong><a href="https://store.steampowered.com/app/2199420/Brickadia/"><strong><u>Steam page.</u></strong></a></p><p>As always, thank you for being part of the journey as we build Brickadia together.&#xA0;We can&#x2019;t wait to see the game in your libraries, we&apos;re almost there!</p><p><a href="https://discord.gg/brickadia" rel="noreferrer">For more regular updates, join our Discord!</a></p><p>And to make sure you don&#x2019;t miss anything, let us remind you about our official <strong>Brickadia newsletter -</strong> in it, you&#x2019;ll get everything from the<strong> latest game updates to behind-the-scenes news</strong>, and even<strong> a chance to be selected for an exclusive closed beta ahead of Early Access</strong>!</p><p>Sounds interesting? &#x1F447;&#xA0;</p>]]></content:encoded></item><item><title><![CDATA[Next Fest Wrap-Up: Survey Results, Plans for EA]]></title><description><![CDATA[A quick summary of the survey, addressing feedback, and our plan for early access.]]></description><link>https://brickadia.com/blog/next-fest-follow-up/</link><guid isPermaLink="false">67d455f2d1b9ca0007fee672</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[wrap]]></dc:creator><pubDate>Mon, 24 Mar 2025 20:47:01 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2025/03/nextfest.png" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2025/03/nextfest.png" alt="Next Fest Wrap-Up: Survey Results, Plans for EA"><p>Hey everyone! With Steam Next Fest wrapped up, we&apos;re now full steam ahead, working toward our Early Access release. From the bottom of our hearts, we want to thank everyone, especially our amazing community, for participating in the Demo!</p><p>We loved playing with your different worlds and meeting new players and veterans alike. The creativity on display is genuinely beyond our imaginations! Seriously, thank you. We love this community&#x2764;&#xFE0F;!</p><p><a href="#survey-results">Survey Results</a><br>
<a href="#feedback">Feedback</a><br>
&#x2003;<a href="#horrible-hit-detection">Horrible hit detection</a><br>
&#x2003;<a href="#vehicles-are-hard-to-control-slip-and-clip-often">Vehicles are hard to control, slip, and clip often</a><br>
&#x2003;<a href="#no-prefab-support-for-physics-grids">No prefab support for physics grids</a><br>
&#x2003;<a href="#griefing-physics-contraptions-is-too-easy">Griefing physics contraptions is too easy</a><br>
&#x2003;<a href="#the-tutorial-is-clunky-unclear-and-confusing">The Tutorial is clunky, unclear and confusing</a><br>
&#x2003;<a href="#limited-gameplay-gate-options">Limited gameplay gate options</a><br>
<a href="#plans-for-ea">Plans for EA</a><br>
&#x2003;<a href="#improved-tools-and-prefab-support">Improved tools and prefabs support</a><br>
&#x2003;<a href="#improved-combat-and-hit-detection">Improved combat and hit detection</a><br>
&#x2003;<a href="#the-gallery">The Gallery</a><br>
&#x2003;<a href="#improved-physics-and-vehicle-handling">Improved physics and vehicle handling</a><br>
&#x2003;<a href="#wires-v2">Wires V2</a><br>
&#x2003;<a href="#new-game-mode-system">New Game Mode system</a><br>
&#x2003;<a href="#tutorial-world">Tutorial World</a><br>
<a href="#key-giveaway">Key Giveaway</a><br>
<a href="#thank-you">Community Showcase</a></p>
<h1 id="survey-results">Survey Results</h1><p>Near the start of the demo, we put out a survey to help us gauge where we are doing things right, where we fell short, and where we should aim our development goals toward. Nearly 2,000 people submitted their surveys, and there are some interesting findings! That is roughly 5.5% of demo players submitting the survey. Thank you to everyone who submitted one.</p><p>First, some fun statistics (unfortunately, non-interactive on here).</p><p>Roughly half of players who filled the survey indicate they played the Open Alpha. This is interesting, as only about 10% of total players linked an Open Alpha account:</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-5cc311f3-f3af-407e-ad78-21b393605b25.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="840" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-5cc311f3-f3af-407e-ad78-21b393605b25.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-5cc311f3-f3af-407e-ad78-21b393605b25.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-5cc311f3-f3af-407e-ad78-21b393605b25.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-5cc311f3-f3af-407e-ad78-21b393605b25.png 2199w" sizes="(min-width: 720px) 720px"></figure><p>We have an overwhelming majority of male users:</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-4d776e6e-f9a2-4b6c-ba8e-7bc5ac1a8003.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="840" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-4d776e6e-f9a2-4b6c-ba8e-7bc5ac1a8003.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-4d776e6e-f9a2-4b6c-ba8e-7bc5ac1a8003.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-4d776e6e-f9a2-4b6c-ba8e-7bc5ac1a8003.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-4d776e6e-f9a2-4b6c-ba8e-7bc5ac1a8003.png 2199w" sizes="(min-width: 720px) 720px"></figure><p>Our main audience appears to be young adults currently:</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-d275152c-3408-4eae-bc99-bf97a84d9995.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="840" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-d275152c-3408-4eae-bc99-bf97a84d9995.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-d275152c-3408-4eae-bc99-bf97a84d9995.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-d275152c-3408-4eae-bc99-bf97a84d9995.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-d275152c-3408-4eae-bc99-bf97a84d9995.png 2199w" sizes="(min-width: 720px) 720px"></figure><p>The majority of players prefer playing in small friend groups:</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-a738f594-ec27-4214-98a0-aab2fabfae16.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="840" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-a738f594-ec27-4214-98a0-aab2fabfae16.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-a738f594-ec27-4214-98a0-aab2fabfae16.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-a738f594-ec27-4214-98a0-aab2fabfae16.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-a738f594-ec27-4214-98a0-aab2fabfae16.png 2199w" sizes="(min-width: 720px) 720px"></figure><p>During the demo, most people focused on dressing up their avatars and exploring existing worlds, which is about what we expected:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-27b7e069-8826-42af-b3f3-149448b4f315.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="568" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-27b7e069-8826-42af-b3f3-149448b4f315.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-27b7e069-8826-42af-b3f3-149448b4f315.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-27b7e069-8826-42af-b3f3-149448b4f315.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-27b7e069-8826-42af-b3f3-149448b4f315.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><p>Surprisingly, the most liked built-in world was Officecorp Inc! We didn&apos;t know we had so many single player puzzle enjoyers among us:</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-53708a48-f743-4491-a2b5-94b855bb46bf.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="1222" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-53708a48-f743-4491-a2b5-94b855bb46bf.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-53708a48-f743-4491-a2b5-94b855bb46bf.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-53708a48-f743-4491-a2b5-94b855bb46bf.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-53708a48-f743-4491-a2b5-94b855bb46bf.png 2199w" sizes="(min-width: 720px) 720px"></figure><p>Most of you were happy with the visuals and performance of the game, but we can still improve on making the interface easier to use:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-72fbc7e1-ac4d-4ceb-a5a2-e3f3daad8d9e.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="723" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-72fbc7e1-ac4d-4ceb-a5a2-e3f3daad8d9e.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-72fbc7e1-ac4d-4ceb-a5a2-e3f3daad8d9e.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-72fbc7e1-ac4d-4ceb-a5a2-e3f3daad8d9e.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-72fbc7e1-ac4d-4ceb-a5a2-e3f3daad8d9e.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><p>The avatar editor was well liked in general, though some people are still wishing for even more options, despite us already having hundreds of parts!</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-086e2375-526e-4235-918c-4e1a45bb0634.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="868" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-086e2375-526e-4235-918c-4e1a45bb0634.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-086e2375-526e-4235-918c-4e1a45bb0634.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-086e2375-526e-4235-918c-4e1a45bb0634.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-086e2375-526e-4235-918c-4e1a45bb0634.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>It&apos;s very interesting how the mouse controls and keyboard controls were rated nearly the same. I think there is still room for improvement here:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-a609154d-4c01-451d-921d-6bbe0db9dc0c.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="434" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-a609154d-4c01-451d-921d-6bbe0db9dc0c.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-a609154d-4c01-451d-921d-6bbe0db9dc0c.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-a609154d-4c01-451d-921d-6bbe0db9dc0c.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-a609154d-4c01-451d-921d-6bbe0db9dc0c.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><p>Using the hammer to delete bricks is the easiest tool to use. Who could have thought?</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-22136db1-870a-4597-981d-fda1d5578b71.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="542" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-22136db1-870a-4597-981d-fda1d5578b71.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-22136db1-870a-4597-981d-fda1d5578b71.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-22136db1-870a-4597-981d-fda1d5578b71.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-22136db1-870a-4597-981d-fda1d5578b71.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><p>Most of you prefer the streamlined mouse building control scheme:</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-4d1e1058-1f01-4277-914a-30db33a0bb08.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="840" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-4d1e1058-1f01-4277-914a-30db33a0bb08.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-4d1e1058-1f01-4277-914a-30db33a0bb08.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-4d1e1058-1f01-4277-914a-30db33a0bb08.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-4d1e1058-1f01-4277-914a-30db33a0bb08.png 2199w" sizes="(min-width: 720px) 720px"></figure><p>We experimented with a lot of ways to integrate removing bricks into the builder, but it seems the hammer is still the most popular:</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-53e8d2db-178d-4a2d-b5d1-67d94a3e702d.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="840" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-53e8d2db-178d-4a2d-b5d1-67d94a3e702d.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-53e8d2db-178d-4a2d-b5d1-67d94a3e702d.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-53e8d2db-178d-4a2d-b5d1-67d94a3e702d.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-53e8d2db-178d-4a2d-b5d1-67d94a3e702d.png 2199w" sizes="(min-width: 720px) 720px"></figure><p>We are frankly surprised by how high you have rated the stability of the physics in the demo. Are our standards too high?</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-c4496371-7c80-4e0d-9174-1570112a0bc4.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="434" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-c4496371-7c80-4e0d-9174-1570112a0bc4.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-c4496371-7c80-4e0d-9174-1570112a0bc4.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-c4496371-7c80-4e0d-9174-1570112a0bc4.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-c4496371-7c80-4e0d-9174-1570112a0bc4.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><p>Most of you said you were able to figure out some basic contraptions:</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-0576e868-2aaf-408d-a53c-e85487442c1b.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="977" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-0576e868-2aaf-408d-a53c-e85487442c1b.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-0576e868-2aaf-408d-a53c-e85487442c1b.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-0576e868-2aaf-408d-a53c-e85487442c1b.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-0576e868-2aaf-408d-a53c-e85487442c1b.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>Everyone figured out how to drive a vehicle but it was much harder to make a new one that drives well:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-bfa59caa-6de2-4945-b039-7deb61ed133f.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="639" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-bfa59caa-6de2-4945-b039-7deb61ed133f.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-bfa59caa-6de2-4945-b039-7deb61ed133f.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-bfa59caa-6de2-4945-b039-7deb61ed133f.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-bfa59caa-6de2-4945-b039-7deb61ed133f.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><p>Your most desired future features seem to already align with our goals for Early Access and beyond:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-29667248-f138-4d4c-bdc0-dc49326b3279.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="394" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-29667248-f138-4d4c-bdc0-dc49326b3279.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-29667248-f138-4d4c-bdc0-dc49326b3279.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-29667248-f138-4d4c-bdc0-dc49326b3279.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-29667248-f138-4d4c-bdc0-dc49326b3279.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><p>It&apos;s clear that those of you who filled the survey were already very invested in the game:</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2025/03/data-src-image-acfb1e11-cd6c-4f93-978c-27f871eda650.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="950" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/data-src-image-acfb1e11-cd6c-4f93-978c-27f871eda650.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/data-src-image-acfb1e11-cd6c-4f93-978c-27f871eda650.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/data-src-image-acfb1e11-cd6c-4f93-978c-27f871eda650.png 1600w, https://brickadia.com/blog/content/images/2025/03/data-src-image-acfb1e11-cd6c-4f93-978c-27f871eda650.png 2199w" sizes="(min-width: 720px) 720px"></figure><h1 id="feedback">Feedback</h1><p>There was a <em>ton </em>of amazing feedback posted on the survey, on Discord, and on Steam, and we&apos;ve been reading all that we could. Here&apos;s a list of things that you all made very clear needs improving (in no particular order):</p><h3 id="horrible-hit-detection">Horrible hit detection</h3><p>Hit detection has degraded noticeably from Alpha 5 (which already had subpar hit detection).</p><p>The Alpha 5 version of hit registration is based on an unfinished rollback model, where the server validates hits by rewinding time to see where you hit the enemy on your screen. Unfortunately, the solution implemented isn&apos;t perfect due to many factors, and it has seemingly gotten worse due to latency issues from EOS P2P and bugs from engine upgrades.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/03/image-5.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="2000" height="1156" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/image-5.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/image-5.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/image-5.png 1600w, https://brickadia.com/blog/content/images/2025/03/image-5.png 2034w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Skill issue, some would say.</span></figcaption></figure><p>Another issue with weapons is that bullets come from the muzzle of your gun. Seems realistic and reasonable, but in practice, it is very easy to hit obstacles blocking your shot instead of your target in first person. It makes gun fights in corridors and nearby obstacles very annoying.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/03/image-7.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="964" height="578" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/image-7.png 600w, https://brickadia.com/blog/content/images/2025/03/image-7.png 964w"><figcaption><span style="white-space: pre-wrap;">This shot will be blocked, very annoying and common!</span></figcaption></figure><h3 id="vehicles-are-hard-to-control-slip-and-clip-often">Vehicles are hard to control, slip, and clip often</h3><p>One of the more common problems faced in the demo was vehicles flipping over and having little traction. Plus, since we&apos;re using actual physical wheels that actually spin, there&apos;s quite a bit of unstable behavior that occurs (especially at lower frame rates!). Additionally, climbing up plate bricks is a bumpy ride.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/03/image-2.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="1494" height="873" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/image-2.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/image-2.png 1000w, https://brickadia.com/blog/content/images/2025/03/image-2.png 1494w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The average driving experience going up 1f plates.</span></figcaption></figure><p>There were also many cases of &quot;clipping&quot; that occurs when two brick grids interact on a seam. You may have ran into this going up ramps or roads on vehicles where the chassis is low to the ground. This is an inherent limitation of how contacts are generated with physics. This has been mitigated with wheels, but not with brick grids. You can see the core of the issue here:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/03/GhostCollision.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="753" height="328" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/GhostCollision.png 600w, https://brickadia.com/blog/content/images/2025/03/GhostCollision.png 753w"><figcaption><span style="white-space: pre-wrap;">Diagram of how incorrect contacts are generated.</span></figcaption></figure><p></p><h3 id="no-prefab-support-for-physics-grids">No prefab support for physics grids</h3><p>The demo still employs the same old saving system from Alpha 5, which never supported multiple physics grids or entities.</p><p>Additionally, the Selector tool is still functionally similar to the one in Alpha 5, with the addition of working with brick grids and some usability updates (like splitting grids apart). However, it&apos;s not possible to copy/paste an entire contraption at once!</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_prefab-exp" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-average-prefab-experience.webm" type="video/webm">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>The average copy/paste experience or saving prefabs.</figcaption>
    </a>
    <div id="inline_prefab-exp" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextFestWrapUp-average-prefab-experience.mp4" type="video/webm">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="griefing-physics-contraptions-is-too-easy">Griefing physics contraptions is too easy</h3><p>The demo was intended for playing with trusted users only, and therefore barely had any restrictions on physics objects or their interactions. A few brave souls who dared to host a public server soon found out that there is a reason why we did not include the server browser at first as their creation became permanently covered in thousands of wheels and their vehicles lost to outer space.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/03/grieeef.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/grieeef.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/grieeef.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/grieeef.png 1600w, https://brickadia.com/blog/content/images/2025/03/grieeef.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/03/image-10.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/image-10.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/image-10.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/03/image-10.png 1600w, https://brickadia.com/blog/content/images/2025/03/image-10.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Another very common request was to be able to define home positions for contraptions and vehicles so you can reset them with the minigame (or even through wires).</p><h3 id="the-tutorial-is-clunky-unclear-and-confusing">The Tutorial is clunky, unclear, and confusing</h3><p>The demo became super invaluable for us in improving this area. Tons of new users struggled with not only the content of the tutorial, but also in the way the tutorial is presented. It is very clunky to press &quot;M&quot; on your keyboard to free the mouse, just to be able to interact with the tutorial. We&apos;ve seen many screenshots where the tutorial widget is still stuck on in the player&apos;s HUD, no good!</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/03/image-4.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="1229" height="926" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/image-4.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/image-4.png 1000w, https://brickadia.com/blog/content/images/2025/03/image-4.png 1229w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">New players learning how to close the tutorial.</span></figcaption></figure><p>We quickly added some UX improvements during the demo, such as the third-person interaction prompts to tackle some of the low-points, but there is still plenty to improve here.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/03/image-1.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="1064" height="724" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/image-1.png 600w, https://brickadia.com/blog/content/images/size/w1000/2025/03/image-1.png 1000w, https://brickadia.com/blog/content/images/2025/03/image-1.png 1064w"><figcaption><span style="white-space: pre-wrap;">Helping out new players sit in a seat!</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/03/image.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="899" height="633" srcset="https://brickadia.com/blog/content/images/size/w600/2025/03/image.png 600w, https://brickadia.com/blog/content/images/2025/03/image.png 899w"><figcaption><span style="white-space: pre-wrap;">Another instance of the interaction prompt.</span></figcaption></figure><h3 id="limited-gameplay-gate-options">Limited gameplay gate options</h3><p>Wires and the new logic/gameplay gates have opened tons of possibilities for players (and you all have done some insanely creative things with just the ones available!)</p><p>There is definitely some room to improve here, especially when interacting with Gamemode features. For example, it&apos;s not possible to join a team using wires, detect when a round of deathmatch ended, add score, compare score... etc.</p><p>In the Demo, it wasn&apos;t really possible to make anything too groundbreaking when making gamemodes. (Though, there were some creative usages of physics and wires to make games like payload and survive-the-falling-cars!)</p><h1 id="plans-for-ea">Plans for EA</h1><p>We want the launch of Early Access to have the right foundations and the best possible user experience we can muster, but we also don&apos;t want to launch the game next year. So, the changes below from what you saw in the demo are our MVP for Early Access, and we are currently targeting a release in <strong>July 2025</strong>.</p><h3 id="improved-tools-and-prefab-support">Improved tools and prefab support</h3><p>Tackling the issue of saving vehicles and other physics contraptions, we will be upgrading the prefab system to support the new features that BRS did not.</p><p>The Selector will also be getting a big upgrade, such as being able to select or deselect individual bricks, and select by brick grids, which should make the Selector much more powerful than just only being able to select a box-volume.</p><h3 id="improved-combat-and-hit-detection">Improved combat and hit detection</h3><p>Improving the hit detection has been fairly tricky, and originally we wanted the combat system to be <em>very</em> precise. On the technical side, it implements a rollback system (similar to Counter-Strike 2) to ensure hits happened where they happened on your screen. At least, in theory, that is supposed to be what happens.</p><p>Due to various factors like Unreal Engine missing fixed-tick character movement, network replication and compensation, the implementation isn&apos;t very effective. We will likely move towards favoring client hits, with less aggressive server-side &quot;sanity&quot; checks and/or simplifying the implementation.</p><p>And another small but impactful change: the physical muzzle of your gun being blocked will no longer stop bullets the way it used to. Makes it much simpler to build maps that work correctly in first person.</p><h3 id="the-gallery">The Gallery</h3><p>The Gallery is a new feature coming to EA, where you can share your creations with others. It comes with full in-game integration, enabling you to easily find and upload content for all things Brickadia.</p><p>We will likely have a blog post detailing all the features and goodies that the Gallery adds, stay tuned!</p><h3 id="improved-physics-and-vehicle-handling">Improved physics and vehicle handling</h3><p>As mentioned earlier with clipping, this issue is unfortunately a limitation of physics engines. But, there are things we can do to (hopefully!) fix this, such as implementing sweep-based vehicles/wheels. Definitely stay tuned for a future blog post on this!</p><p>We plan on adding various weight bricks / the ability to change your vehicle&apos;s center of mass, which should help improve vehicles from tipping over. Increasing the tire friction is an obvious next step after improving these, and improving the handling of vehicles, especially at high speeds.</p><h3 id="wires-v2">Wires V2</h3><p>One of the limitations of gates in the version of wires that shipped in the demo was the reliance on brick components to implement their functionality. This puts many limitations on what gates can do, like having a variable number of ports, or supporting different wire types.</p><p>Wires v2 introduces &quot;generic&quot; gates, allowing us to implement gates for many different wire types. This is particularly useful for math gates that support integer and float/double math. Additionally, logic gates will benefit by having any number of inputs/outputs, and will let us design new types of gates such as selectors that need the flexibility.</p><p>Anyone who tried creating a complex contraption will likely have noticed timing issues where signals take different time to propagate down paths of different lengths, or even managed to get your gates stuck flickering in a loop for seemingly no reason. While this might be neat in a hardware simulator, it is extremely annoying if you are trying to make things just work. For the new version of wires, the system will correctly order the gates by their dependencies and propagate everything in a single tick.</p><p>A new gate, the Microchip, will also allow you to compact entire logic gate circuits into a single gate. A great utility of it is being able to modularize your wire circuits and share them on the Gallery! Plus, there are some <em>really</em> exciting things Microchips enable, as you&apos;ll read below.</p><h3 id="new-game-mode-system">New Game Mode system</h3><p>We will be replacing the ancient minigames system with gamemodes! Functionally, they will work very similar, and our plan is to keep as much familiarity between both as possible, while improving the UX and confusion around setting up minigames.</p><p>Game modes will be able to be packaged up into a bundle that you can activate independently from the worlds, so you can easily combine different maps with playing different modes on them.</p><p>Problems with the old minigame system included figuring out which bricks/entities should be part of the minigame and unclear configuration, which leads many users (even experienced ones) to wonder why things just don&apos;t work the way they expect when creating minigames.</p><p>Once we&apos;re happy with the new UX, we&apos;re expanding the power of gamemodes in a dramatic way.</p><p>As mentioned before, we&apos;re adding the Microchip, a useful tool in the wiring arsenal for compacting circuit designs. In the context of gamemodes, they get a <em>whole</em> <em>lot</em> more powerful and interesting:</p><p>Microchips can also be attached to players, or directly integrated in your gamemodes to add new logic. Originally, we wanted to wait on Behaviors (our scripting language) to bring this ability, but it seems obvious that wires are a great fit here too, so we&apos;re adding it for EA!</p><p>We will be adding onto the collection of gates available, allowing you to do even more powerful things, like listen to game mode and player events, and do things with those events when used in conjunction with the Microchip.</p><h3 id="tutorial-world">Tutorial World</h3><p>The tutorial widget we had in the demo, while it helped a little, definitely left many users confused. For EA, we plan to include a detailed Tutorial world that guides you through many of Brickadia&apos;s building features, one by one, in an approachable manner.</p><p>If your favorite future feature isn&apos;t listed yet, don&apos;t worry! This journey continues on far beyond Early Access.</p><h1 id="key-giveaway">Key Giveaway</h1><p>For those who opted-in to the key giveaway in the survey, we&apos;ve gone ahead and emailed the randomly selected 5 winners a Steam key. Congratulations to the winners, you will be able to play the game as soon as it releases!</p><h1 id="thank-you">Thank you!</h1><p>And to everyone that had a chance to play the demo, thank you! For those who haven&apos;t seen any of the amazingly creative builds users have built, here is just a handful of ones we picked from our Discord and socials:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_arcade" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-slots.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Fancy slot machine arcade room by FancyPants!</figcaption>
    </a>
    <div id="inline_arcade" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextFestWrapUp-slots.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_strandbeest" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-strandbeast.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A walking strandbeest by durb!</figcaption>
    </a>
    <div id="inline_strandbeest" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextFestWrapUp-strandbeast.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_car2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-car2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A well engineered car by sink</figcaption>
    </a>
    <div id="inline_car2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextFestWrapUp-car2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_monorail" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-monorail.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Fully functioning monorail car by AXIIOM and Stelle!</figcaption>
    </a>
    <div id="inline_monorail" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextFestWrapUp-monorail.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_orion-car" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-automatic-lights.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A car with built-in automatic brakelights, by orion</figcaption>
    </a>
    <div id="inline_orion-car" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextFestWrapUp-automatic-lights.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_mech" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-mech.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A battle-ready mech, by Cybo</figcaption>
    </a>
    <div id="inline_mech" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextFestWrapUp-mech.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_display" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-video-display.webm" type="video/webm">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>An animated dot display matrix display by ZippyDev!</figcaption>
    </a>
    <div id="inline_display" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextFestWrapUp-video-display.webm" type="video/webm">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_tank-treads" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-tank-treads.mp4" type="video/webm">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Fully functioning tank treads by Edz!</figcaption>
    </a>
    <div id="inline_tank-treads" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextFestWrapUp-tank-treads.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_tomogatchi" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-tomogatchi.mp4" type="video/webm">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A beary happy bear tamagotchi by eluna!</figcaption>
    </a>
    <div id="inline_tomogatchi" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextFestWrapUp-tomogatchi.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_walker" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-walker.mp4" type="video/webm">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>An 8-legged walker by Smallguy!</figcaption>
    </a>
    <div id="inline_walker" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/NextFestWrapUp-walker.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>And finally, some crazy devices that employ sound. Take a listen!</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    	<video class="lazy" controls preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-cake-1.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A gigantic MIDI player by cake</figcaption>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    	<video class="lazy" controls preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-cake-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Different shot of a different MIDI player by cake</figcaption>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    	<video class="lazy" controls preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-midi-mini.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A small, customizable MIDI player by TonicThunder</figcaption>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    	<video class="lazy" controls preload="none">
    		<source data-src="https://static.brickadia.com/resources/NextFestWrapUp-morsecode.mp4" type="video/webm">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Morse Code keyboard also by Smallguy!</figcaption>
</figure>
<!--kg-card-end: html-->
<p>We&#x2019;re really excited about what&#x2019;s coming next, and we can&#x2019;t wait to share more with you soon. As always, thanks for all your feedback and support&#x2014;it means the world to us! If you have additional feedback, you can always drop by our Discord (we&apos;re active there!), or send us a message through any of our social medias.</p><p>And lastly, Happy Frog Day! Wait, what do you mean it&apos;s not Frog Day anymore, and it was last week? Oh well, have this frog anyway.</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2025/03/frog-smol.png" class="kg-image" alt="Next Fest Wrap-Up: Survey Results, Plans for EA" loading="lazy" width="32" height="32"></figure>]]></content:encoded></item><item><title><![CDATA[Next Fest Demo Is Out Now!]]></title><description><![CDATA[Limited Time Demo Featuring Building, Wires, Vehicles, Physics, Worlds and much more!]]></description><link>https://brickadia.com/blog/next-fest-demo-is-out/</link><guid isPermaLink="false">67bca602d1b9ca0007fee2d4</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[wrap]]></dc:creator><pubDate>Mon, 24 Feb 2025 17:57:32 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2025/02/ScreenShot00297-1080p.png" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2025/02/ScreenShot00297-1080p.png" alt="Next Fest Demo Is Out Now!"><p>Hey everyone, a short post for once! We&apos;re extremely happy to announce that the <strong>Brickadia Next Fest Demo</strong> <strong>is now available for download</strong> through Steam for a limited time! If you&apos;re here to play the game, <a href="https://store.steampowered.com/app/2199420/Brickadia/" rel="noreferrer">you can click here for the Steam page</a> to download the demo. For everyone else still here (you should go play the demo instead!), read on.</p><p>Our Next Fest Demo includes almost every feature we&apos;ve been cooking up over the last few years, including physics contraptions, drive-able vehicles, wires, and our world system, and of course our brick-building system that supports <em>millions</em> of bricks at the core of it. If you haven&apos;t seen the brand new trailer for this demo, it was filmed entirely in-game in this demo!</p><figure class="kg-card kg-embed-card kg-card-hascaption"><iframe width="200" height="113" src="https://www.youtube.com/embed/t6kyTLkLIXA?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="Brickadia Next Fest Demo Trailer | Cars and Physics Contraptions!"></iframe><figcaption><p><span style="white-space: pre-wrap;">Next Fest Demo Trailer</span></p></figcaption></figure><p>What does this demo <strong>not</strong> include? Behaviors, the new gamemodes system, and the Gallery. Our planned Behaviors scripting system is on the back burner at the moment as we have been focusing on wires and logic gates first! This demo currently has the same old &quot;mini-games&quot; system as our old Alpha had - this system is planned to be replaced with a simpler, more flexible gamemode system in Early Access, but currently this hasn&apos;t been implemented yet for this demo. Our Gallery is also not ready yet - but we do really want it to be part of the proper Early Access release as it will let everyone properly share their creations and instantly load into other peoples awesome worlds.</p><p>A very exciting day for Brickadia indeed! This isn&apos;t our full Early Access release yet, but releasing a brand new demo showcasing the current state of our game is still a giant leap forward for us. We really look forward to seeing what you all create in this demo - please post your creations in our Discord, on social media, and in the subreddit. We love to see them!</p><p>We will have a survey available towards the end of the Demo. Please give us your honest thoughts and suggestions as that will shape the direction we take the first Early Access release.</p><p>As always, thank you for reading. And go play the Demo! Stay tuned.</p>]]></content:encoded></item><item><title><![CDATA[Devlog #7 - Wires, Vehicles, Next Fest & More!]]></title><description><![CDATA[A catch-up of everything we got done in the latter half of 2024, plus a big announcement!]]></description><link>https://brickadia.com/blog/devlog-7/</link><guid isPermaLink="false">6766eaf182f33200061978e4</guid><category><![CDATA[Development]]></category><category><![CDATA[News]]></category><dc:creator><![CDATA[Sixmorphugus]]></dc:creator><pubDate>Fri, 03 Jan 2025 17:17:56 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2025/01/blogscene.png" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2025/01/blogscene.png" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!"><p>Today we&apos;re going to be dipping our toes into two big Early Access features that haven&apos;t been discussed much on the blog: Wires and Vehicles. We&apos;ll also go over all the other cool stuff that the team did in 2024!</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">We would advise you to watch your bandwidth usage, and not to scroll too fast, as this page contains <b><strong style="white-space: pre-wrap;">46 videos</strong></b>!</div></div><p>But before all that, we have an announcement: <strong>In February, we&apos;ll be joining the Steam Next Fest with a time-limited demo!</strong> During the fest, you&apos;ll be able to get your hands on an early preview of all the new creative features we&apos;ve been cooking for the past few years!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2025/01/Banner-Steam-Next-Fest-2023-all.jpg" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="900" height="506" srcset="https://brickadia.com/blog/content/images/size/w600/2025/01/Banner-Steam-Next-Fest-2023-all.jpg 600w, https://brickadia.com/blog/content/images/2025/01/Banner-Steam-Next-Fest-2023-all.jpg 900w"></figure><p>The Next Fest build will be our <strong>Creator Demo</strong>, a build of the game that will focus on building and creators. The demo will be available from February 24 at 10 AM Pacific to March 3. We&apos;ll share more on this demo as we get closer to the Fest!</p><p>To be notified, <a href="https://store.steampowered.com/app/2199420/Brickadia/" rel="noreferrer">add Brickadia to your wishlist on Steam</a>.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Start thinking about what you&apos;re going to build! We&apos;re really looking forward to seeing your creations.</div></div><p><a href="#building-tool-improvements">Building Tool Improvements</a><br>
&#x2003;<a href="#offsetting-from-the-plane-lock-plane">Offsetting From the Plane Lock Plane</a><br>
&#x2003;<a href="#follow-mode-and-precision-mode">Follow Mode and Precision Mode</a><br>
&#x2003;&#x2003;<a href="#new-arcball-rotation-controls">New &quot;arcball&quot; rotation controls</a><br>
&#x2003;&#x2003;<a href="#reorient-rotation-still-exists">Reorient rotation still exists</a><br>
&#x2003;&#x2003;<a href="#in-follow-mode-player-now-faces-the-brick">In follow mode, player now faces the brick</a><br>
&#x2003;<a href="#negative-spacing">Negative Spacing</a><br>
&#x2003;<a href="#upgraded-pie-menu">Upgraded Pie Menu</a><br>
&#x2003;<a href="#default-loadout-of-bricks">Default &quot;Loadout&quot; of Bricks</a><br>
&#x2003;<a href="#correct-grid-snapping-to-edgeover-edge">Correct Grid Snapping (To Edge/Over Edge)</a><br>
&#x2003;<a href="#align-half-plate-thick-bricks-to-surface">Align Half-Plate Thick Bricks To Surface</a><br>
&#x2003;<a href="#inventory-is-single-quickbar-again">Inventory is Single-Quickbar Again</a><br>
&#x2003;<a href="#entities">Entities</a><br>
&#x2003;<a href="#improved-catalog-organization">Improved Catalog Organization</a><br>
<a href="#wires">Wires</a><br>
&#x2003;<a href="#the-solution">The Solution</a><br>
&#x2003;<a href="#the-connector">The Connector</a><br>
&#x2003;<a href="#buttons-targets-and-switches">Buttons, Targets and Switches</a><br>
&#x2003;<a href="#logic-gates">Logic Gates</a><br>
&#x2003;<a href="#wire-types">Wire Types</a><br>
&#x2003;<a href="#various-examples">Various Examples</a><br>
<a href="#vehicles-and-contraptions">Vehicles and Contraptions</a><br>
&#x2003;<a href="#joints">Joints</a><br>
&#x2003;<a href="#joints-being-used-ingame">Joints Being Used Ingame</a><br>
&#x2003;<a href="#seats">Seats</a><br>
&#x2003;<a href="#driveable-cars">Driveable Cars</a><br>
&#x2003;<a href="#various-examples-1">Various Examples</a><br>
<a href="#other-stuff">Other Stuff!</a><br>
&#x2003;<a href="#procedural-brick-generation">Procedural Brick Generation</a><br>
&#x2003;<a href="#weapon-resources">Weapon Resources</a><br>
&#x2003;<a href="#homing-missile">Homing Missile</a><br>
&#x2003;<a href="#pole-resizable-in-all-directions">Pole Resizable in All Directions</a><br>
&#x2003;<a href="#other-new-bricks">Other New Bricks</a><br>
&#x2003;<a href="#skirts-and-dresses">Skirts and Dresses</a><br>
<a href="#ok-thats-everything">OK That&apos;s Everything</a></p>
<h1 id="building-tool-improvements">Building Tool Improvements</h1><p>I really should write a full blog on how these work but here&apos;s an outline of what I have at the moment.</p><h2 id="offsetting-from-the-plane-lock-plane">Offsetting From the Plane Lock Plane</h2>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_offset-plane" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Offset-Plane.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>You are now able to offset from the plane lock plane by scrolling the mouse.</figcaption>
    </a>
    <div id="inline_offset-plane" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Offset-Plane.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>Plane lock was added back into the new mouse building controls with a new feature: You are now able to offset from the plane lock plane in plane lock by scrolling the mouse.</p><p>This creates this cool line between the actual lock grid and the raised one. It has a bunch of uses.</p><h2 id="follow-mode-and-precision-mode">Follow Mode and Precision Mode</h2><p>In a huge surprise to absolutely nobody, I remade Orbit Mode and Detached Mode. They are now renamed to Follow Mode and Precision Mode. These modes share essentially the same codebase with different keybinds. However, several things work much better:</p><h3 id="new-arcball-rotation-controls"><strong>New &quot;arcball&quot; rotation controls</strong></h3><p>The rotation in follow and precision mode now offers an &quot;arcball&quot; rotation scheme when you hold ctrl, inspired by that offered by games such as Space Engineers. What does &quot;arcball&quot; mean? It means rotation is now relative to the surface you&apos;re looking at. Left/Right/Up/Down will all rotate the surface 90 degrees to point in that direction without affecting other axis, while the additional rotate buttons will turn it counter-clockwise and clockwise. Take a look:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-arcball" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-arcball.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Rotation in follow mode.</figcaption>
    </a>
    <div id="inline_catchup-1-arcball" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-arcball.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="reorient-rotation-still-exists">Reorient rotation still exists</h3><p>Holding R still gives you reorient controls. Tapping in a direction will rotate your brick to face in that direction, exactly as is offered by the mouse controls:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-reorient" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-reorient.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Reorientation in follow mode.</figcaption>
    </a>
    <div id="inline_catchup-1-reorient" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-reorient.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="in-follow-mode-player-now-faces-the-brick">In follow mode, player now faces the brick</h3><p>Finally, as a last little polish feature, your player will now &quot;look&quot; at what you are doing while you&apos;re in follow mode. Other clients see this too.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_Catchup-1-Orbit-Follow" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Orbit-Follow.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Look alive while you&apos;re building in Orbit mode!</figcaption>
    </a>
    <div id="inline_Catchup-1-Orbit-Follow" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Orbit-Follow.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h2 id="negative-spacing">Negative Spacing</h2><p>A very oft-requested feature since we added the ability to row-drag templates, and especially since we gave testers the ability to grid and volume-drag them has been negative spacing. Negative spacing allows you to overlap instances of the template you&apos;re dragging, making it possible to place a template that interlocks with itself.</p><p>The simplest example of course is a brick wall like here.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-negative-spacing-1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-negative-spacing-1.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>You can place a brick wall without having to fill in gaps now!</figcaption>
    </a>
    <div id="inline_catchup-1-negative-spacing-1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-negative-spacing-1.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>But there are more advanced cases, especially when you&apos;re placing wires (which we&apos;ll talk about in a bit) which auto-attach when overlapped with the same brick type attached within the template:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-negative-spacing-2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-negative-spacing-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>I&apos;m setting up my communication lines...</figcaption>
    </a>
    <div id="inline_catchup-1-negative-spacing-2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-negative-spacing-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h2 id="upgraded-pie-menu">Upgraded Pie Menu</h2><p>The tool pie menu now has descriptions.</p><p>When you select the Placer from the pie menu, you&apos;ll select the last brick you had selected, or else the first brick found in your inventory, or else a 1x1f will be thrown in the TEMP slot and you&apos;ll select that.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-37.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1082" height="1136" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-37.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-37.png 1000w, https://brickadia.com/blog/content/images/2024/12/image-37.png 1082w"><figcaption><span style="white-space: pre-wrap;">Easier? We&apos;ll see.</span></figcaption></figure><h2 id="default-loadout-of-bricks">Default &quot;Loadout&quot; of Bricks</h2><p>The quickbar now has things in it without you having to open the catalog and add them, which greatly confused people who came by our booth when we showed the game at a convention in November.</p><p>The default loadout is very transparently the minimal kit for building a car (don&apos;t worry, we&apos;ll get to cars):</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-17.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1518" height="251" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-17.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-17.png 1000w, https://brickadia.com/blog/content/images/2024/12/image-17.png 1518w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">We would have put micros in but those aren&apos;t really a new people thing and there wasn&apos;t space.</span></figcaption></figure><h2 id="correct-grid-snapping-to-edgeover-edge">Correct Grid Snapping (To Edge/Over Edge)</h2><p>In alpha 5, when you are in one of the keyboard building modes (follow/precision as they&apos;re now called) your brick has never actually moved or aligned to the grid properly. Thankfully, the only way to notice this was to try and use a micro-brick, or some other brick that wasn&apos;t large enough to align to the grid.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-38.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="2000" height="1063" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-38.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-38.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/image-38.png 1600w, https://brickadia.com/blog/content/images/2024/12/image-38.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">This is how Alpha 5 aligns your micro-brick to the grid in Follow Mode.</span></figcaption></figure><p>In mouse mode, Alpha 5 can align your brick the way we intended - to the nearest edge of the aimed-at grid cell. It&apos;s only follow and precision mode that are broken (actually, quite a lot of the Alpha 5 building is broken).</p><p>What follow and precision mode actually should have been able to do was move bricks that are smaller than the grid cell on the move axis &quot;to, <em>then</em> over&quot; the grid cell&apos;s border, which oftentimes is an uneven movement per button press and so can&apos;t be done by simply offsetting the brick each key press. This corrected &quot;to, <em>then</em> over&quot; movement is how it works in Early Access.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-to-edge" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-to-edge.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>The correct follow mode grid alignment.</figcaption>
    </a>
    <div id="inline_catchup-1-to-edge" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-to-edge.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h2 id="align-half-plate-thick-bricks-to-surface">Align Half-Plate Thick Bricks To Surface</h2><p>When you have the plate grid alignment mode selected (you literally <em>must</em> give it a try!) try aiming at the surface of a micro-brick or some other surface that does not align to that grid in Alpha 5. Your brick will float.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/blogbrick.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1390" height="697" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/blogbrick.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/blogbrick.png 1000w, https://brickadia.com/blog/content/images/2024/12/blogbrick.png 1390w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Bother!</span></figcaption></figure><p>What&apos;s worse is that this can be hard to notice from a distance, so you get done building something and then find it floating an uncorrectable (1-2 unit) distance off the ground.</p><p>In Early Access, your brick aligns to the depth of the surface you&apos;re looking at,  even in Plate mode, as long as it isn&apos;t inside the bounds of a brick. So your micro-brick will actually place against off grid surfaces in Early Access:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-micro-sink" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-micro-sink.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Painting with Micro-Bricks.</figcaption>
    </a>
    <div id="inline_catchup-1-micro-sink" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-micro-sink.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>Also notable here, but easy to miss - resize dragging moves the size up to the first grid edge for the first resize increment, <em>then</em> expands to fill further grid cells.</p><h2 id="inventory-is-single-quickbar-again">Inventory is Single-Quickbar Again</h2><p>Many of you commented on the section of the last blog post saying that the multiple quickbars and increased inventory size may be difficult to deal with for new players. This is exactly what we found during testing, so they&apos;ve been removed.</p><h2 id="entities">Entities</h2><p>Since adding entities, we have added exactly two (2) entity types so far.</p><p>The first is a ball that can be painted and resized. As always, I forgot to add a size limit.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-4.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="2000" height="1014" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-4.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-4.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/image-4.png 1600w, https://brickadia.com/blog/content/images/2024/12/image-4.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Me and the spare Zeblote explore a new planet.</span></figcaption></figure><p>But then we have the current main use case of entities: Wheels. Wheels make perfect sense not to be bricks - they get to have proper analytical collision and they do not waste the server&apos;s processing power managing another brick grid. There are countless wheels in the game so far and here are a few of them:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-19.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1273" height="773" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-19.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-19.png 1000w, https://brickadia.com/blog/content/images/2024/12/image-19.png 1273w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">A bunch of different variations of the regular-sized wheel.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-20.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1086" height="623" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-20.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-20.png 1000w, https://brickadia.com/blog/content/images/2024/12/image-20.png 1086w"><figcaption><span style="white-space: pre-wrap;">A bunch wheels from our &quot;small&quot; wheel set, for trolleys and RC cars!</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-21.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1238" height="925" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-21.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-21.png 1000w, https://brickadia.com/blog/content/images/2024/12/image-21.png 1238w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Bigger wheels!</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-22.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="509" height="505"><figcaption><span style="white-space: pre-wrap;">Airplane wheels!</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-23.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1797" height="1054" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-23.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-23.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/image-23.png 1600w, https://brickadia.com/blog/content/images/2024/12/image-23.png 1797w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Snazzy wheels!</span></figcaption></figure><h2 id="improved-catalog-organization">Improved Catalog Organization</h2><p>Confidentbottle has improved a bunch of stuff relating to the organization of the default catalog. First and foremost, the Entities tab is gone as there were not enough entities in the game to justify it. Instead, the Bricks tab is now an Objects tab:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-24.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="2000" height="1152" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-24.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-24.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/image-24.png 1600w, https://brickadia.com/blog/content/images/2024/12/image-24.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The object catalog.</span></figcaption></figure><p>Categories have been reordered to make more sense, with bricks you&apos;ll want to use first prioritized rather than the alphabetically ordered sets of Alpha 5.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2024/12/image-5.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="451" height="732"></figure><p>Also, Micro-Bricks now have their own tab and are actually ordered sensibly, meaning you don&apos;t have to scroll right to the bottom to get at the regular cubes.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-6.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="946" height="944" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-6.png 600w, https://brickadia.com/blog/content/images/2024/12/image-6.png 946w"><figcaption><span style="white-space: pre-wrap;">The cubes are no longer last!!</span></figcaption></figure><p>All the magical gameplay bricks and entities are spread across 3 categories, rather than ending up hidden in Special;</p><ul><li><strong>Physics</strong> stores bricks and entities meant for making physics contraptions.</li><li><strong>Mechanics</strong> stores bricks and entities meant for making interactive machines or experiences.</li><li><strong>Logic Gates</strong> stores the logic gates provided to users of the wire system.</li></ul><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-25.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="2000" height="1129" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-25.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-25.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/image-25.png 1600w, https://brickadia.com/blog/content/images/2024/12/image-25.png 2398w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The Physics category. We&apos;ll discuss joints later.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-26.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="2000" height="1154" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-26.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-26.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/image-26.png 1600w, https://brickadia.com/blog/content/images/size/w2400/2024/12/image-26.png 2400w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The mechanics category.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-27.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="2000" height="1160" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-27.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-27.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/image-27.png 1600w, https://brickadia.com/blog/content/images/2024/12/image-27.png 2398w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The logic gates category. We&apos;ll discuss Wires... now, actually!</span></figcaption></figure><h1 id="wires">Wires</h1><p>Back when we were thinking about the design of our still TBA scripting language, Behaviors, we very quickly realized that most of our players wouldn&apos;t want to have to use it to do simple things. No matter how approachable you make your scripting system, the more it can do, the more complex it has to be - and the more daunting it becomes to beginners.</p><p>But why should they have to learn what a function is, what bindings are, what symbols and variables and booleans and parameters are, just to make a switch open a door? </p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-door-switch-1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-door-switch-1.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Like this?</figcaption>
    </a>
    <div id="inline_catchup-1-door-switch-1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-door-switch-1.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>Or even to make the correct combination of switch values open a door?</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-door-switch-2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-door-switch-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Like this?</figcaption>
    </a>
    <div id="inline_catchup-1-door-switch-2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-door-switch-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>These are use cases so simple that they shouldn&apos;t even have to go through scripting at all.</p><h2 id="the-solution">The Solution</h2><p>If you&apos;ve read previous blog posts, you already know this bit, but for new people I&apos;m going to go over it again;</p><p>Conveniently, everything in Brickadia is data-driven - i.e. has a state that can be controlled very directly by reading and changing variables. Let&apos;s simply designate some variables outputs, and some variables inputs, and let players designate &quot;links&quot; between a given output and multiple inputs somewhere else. When the output variable changes, linked input variables are set to the same value.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/switchdoor-1.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1000" height="1000" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/switchdoor-1.png 600w, https://brickadia.com/blog/content/images/2024/12/switchdoor-1.png 1000w"><figcaption><span style="white-space: pre-wrap;">For more information on the design, you can check out our old &quot;Interactive Brickadia: Next Steps&quot; blog post which this diagram is from.</span></figcaption></figure><p>This &quot;link&quot; is all a wire is.</p><h2 id="the-connector">The Connector</h2><p>To attach wires, we have this tool, the connector. The connector lets you connect wires between physical ports in 2 clicks. For bricks without those, you can select your source or target port from a list instead:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-wires-basic" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-wires-basic.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Connecting a wire from a source port to the enabled property of a light!</figcaption>
    </a>
    <div id="inline_catchup-1-wires-basic" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-wires-basic.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>As always, we&apos;ve added a bunch of QoL features to the Connector to make it super easy to work with. You can hit R to restart connecting from the last port and hold Ctrl to multi-connect. The GUI has a quick fuzzy find search where you can press enter to choose the first port in the current results.</p><p>You&apos;re probably wondering if there&apos;s a way to organize these wires better. There is! Rerouter bricks. With the Rerouter brick, you can always organize your wires super nicely.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-motor-button" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-motor-button.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Connecting a wire from a source port though a bunch of rerouters to a motor!</figcaption>
    </a>
    <div id="inline_catchup-1-motor-button" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-motor-button.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-11.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="989" height="813" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-11.png 600w, https://brickadia.com/blog/content/images/2024/12/image-11.png 989w"><figcaption><span style="white-space: pre-wrap;">Busses!</span></figcaption></figure><h2 id="buttons-targets-and-switches">Buttons, Targets and Switches</h2><p>We have 3 inputs to the wire system right now, none of which support animations yet:</p><p><strong>Switches</strong> can be clicked to toggle their output signal between off and on. There are a lot of use cases.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-2.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="910" height="762" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-2.png 600w, https://brickadia.com/blog/content/images/2024/12/image-2.png 910w"><figcaption><span style="white-space: pre-wrap;">Control panel with switches.</span></figcaption></figure><p><strong>Buttons</strong> emit an on signal while your mouse is held and an off signal otherwise. Originally, they had an on-off time, but the &quot;holding&quot; functionality is far more versatile. For advanced use cases, you can even get a count for how many players are holding down one button.</p><p><strong>Targets</strong> emit an on signal for a certain amount of time when shot with a projectile or hit with a melee weapon. If hit while on, their current &quot;on&quot; signal will be reset to that amount of time instead.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-shooting-range" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Shooting-Range.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>What else to demo this but a shooting range?</figcaption>
    </a>
    <div id="inline_catchup-1-shooting-range" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Shooting-Range.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h2 id="logic-gates">Logic Gates</h2><p>There are a ton of gate bricks with physical ports (most of which you see in the catalog above) that you can route your wires through. The system is turing complete, and you can use it to do most things. </p><p>As an example, we can use an AND gate to make a door that opens only when two switches are flipped.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_Catchup-1-Door-Switch-3" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Door-Switch-3.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>You must find and turn on both switches to open the door.</figcaption>
    </a>
    <div id="inline_Catchup-1-Door-Switch-3" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Door-Switch-3.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>Or an OR gate to make an item collectable when one of two buttons are held.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-wires-or" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-wires-or.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Either button makes the item collectable.</figcaption>
    </a>
    <div id="inline_catchup-1-wires-or" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-wires-or.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h2 id="wire-types">Wire Types</h2><p>You&apos;ve probably noticed all the wires are red. Can they be other colors? Yes, they can!</p><p>A wire&apos;s color is determined by the type of data it carries. Red wires carry <strong>booleans</strong>, i.e. an on/off signal. But since wires can carry any property type, you can also send <strong>decimal </strong>numbers and do operations on those.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_Catchup-1-Constants-Add" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Constants-Add.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Also, the entry box for integers smart enough to do math on its own!</figcaption>
    </a>
    <div id="inline_Catchup-1-Constants-Add" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Constants-Add.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>Since wires automatically convert between all the basic types, you can send boolean values into ports that take numbers (as 0 or 1) and vice versa (!= 0 is 1).</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_Catchup-1-Bool-Add" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Bool-Add.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>There is no problem whatsoever with treating a boolean as the number 0 or 1 depending on its value. The switch can be wired right in!</figcaption>
    </a>
    <div id="inline_Catchup-1-Bool-Add" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Bool-Add.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>In addition to this, and as you saw above, everything always converts into a <strong>string</strong> - which is how we can display the value on interact at the end.</p><p>With <strong>integer</strong> numbers, you can do bitwise operations. So here&apos;s something more advanced that most of you won&apos;t ever need to do: With a bit of work, we can send 8 different booleans as a single integer value.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_Catchup-1-Combine" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Combine.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>This is how computers count!</figcaption>
    </a>
    <div id="inline_Catchup-1-Combine" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Combine.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">This is a technique testers have ended up using in a lot of their wire contraptions, since an integer can actually hold up to 64 booleans in its bits that can then be sent over just 1 wire! It&apos;s even easier to disassemble later - just use bitwise AND and use that value as a bool.</div></div><h2 id="various-examples">Various Examples</h2><p>You can make lots of things in Brickadia with just wires and no scripting. Eventually, though, wiring contraptions together becomes more of an art itself. There are some things you really should be doing with scripting later. But of course, you don&apos;t <em>have</em> to, so maybe, just for fun, you don&apos;t.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_Catchup-1-Wires-Showcase-1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Wires-Showcase-1.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Conway&apos;s game of life, made with only wires.</figcaption>
    </a>
    <div id="inline_Catchup-1-Wires-Showcase-1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/Catchup-1-Wires-Showcase-1.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-wires-showcase-2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-wires-showcase-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Connect 4, made with only wires.</figcaption>
    </a>
    <div id="inline_catchup-1-wires-showcase-2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-wires-showcase-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-wires-showcase-3" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-wires-showcase-3.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Othello, made with only wires.</figcaption>
    </a>
    <div id="inline_catchup-1-wires-showcase-3" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-wires-showcase-3.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-wires-showcase-4" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-wires-showcase-4.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A deathrun using wires, and joints (discussed next!).</figcaption>
    </a>
    <div id="inline_catchup-1-wires-showcase-4" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-wires-showcase-4.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-43.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="2000" height="1063" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-43.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-43.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/image-43.png 1600w, https://brickadia.com/blog/content/images/2024/12/image-43.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Electrician simulator.</span></figcaption></figure><p>The UX of wires is basically finished with just some polish and additional features down the line.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">And yes, you can hide them. Wires will be hidden if either of the bricks they&apos;re attached to are. If you don&apos;t want to hide either of the attached bricks, put a wire rerouter between your bricks, route the wire though it, and hide that.</div></div><h1 id="vehicles-contraptions">Vehicles &amp; Contraptions</h1><p>You are all <em>long overdue</em> for an explanation of our plans for this, but there is a lot to go over so I will try to be concise here.</p><h2 id="joints">Joints</h2><p>The first part of vehicles we implemented were the basic bearing joints, which currently remain the only joints in the game. Right now, they come in 3 flavors; Bearing, Motor, Servo. To attach a brick to a joint, you simply place it on top of the joint.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-3.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="710" height="839" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-3.png 600w, https://brickadia.com/blog/content/images/2024/12/image-3.png 710w"><figcaption><span style="white-space: pre-wrap;">Every type of bearing currently in the game. The regular Bearing, the Motor, and the Servo.</span></figcaption></figure><p>The <strong>Bearing</strong> (left) simply rotates freely with customizable damping (damping is the force with which the joint tries to slow to a stop while spinning). It&apos;s good for making hinges for doors, windows and other things, but it can&apos;t do anything advanced.</p><p>The <strong>Motor</strong> (center) is your workhorse powered joint. When enabled, it will spin with constant power you set. You can make something that spins constantly such as a platform or part for a total wipeout course, and you can even combine it with wires to make things like deathrun traps, fairground rides, and mechanisms. </p><p>Finally, the <strong>Servo</strong> (right) is what you use when you want something to move to a specific position and to try with user-specified force to stay there. It can be used to make suspensions but is most useful when paired with wires, which you can use to make automatic doors, spinning counters, all sorts of things.</p><p>We have micro joints too!</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-14.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1402" height="770" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-14.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-14.png 1000w, https://brickadia.com/blog/content/images/2024/12/image-14.png 1402w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Micro bearing.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-42.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1446" height="845" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-42.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-42.png 1000w, https://brickadia.com/blog/content/images/2024/12/image-42.png 1446w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Other micro-joints.</span></figcaption></figure><h2 id="joints-being-used-ingame">Joints Being Used Ingame</h2><p>There are lots of use cases. Here are some images and videos from recent dev media.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-joint-showcase-1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-1.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Puppeteering a robot on mars.</figcaption>
    </a>
    <div id="inline_catchup-1-joint-showcase-1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-1.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-joint-showcase-2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Searching in the darkness...</figcaption>
    </a>
    <div id="inline_catchup-1-joint-showcase-2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-joint-showcase-3" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-3.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Collision detail is good enough to make a roblox-style train!</figcaption>
    </a>
    <div id="inline_catchup-1-joint-showcase-3" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-3.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-joint-showcase-4" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-4.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>We can open and close this hatch!</figcaption>
    </a>
    <div id="inline_catchup-1-joint-showcase-4" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-4.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-joint-showcase-5-new" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-5-new.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>By separating collision across multiple grids, we can make a working Geneva drive!</figcaption>
    </a>
    <div id="inline_catchup-1-joint-showcase-5-new" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-5-new.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-joint-showcase-6" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-6.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Slotcars!</figcaption>
    </a>
    <div id="inline_catchup-1-joint-showcase-6" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-6.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-joint-showcase-7" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-7.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A MERP city, animated with joints!</figcaption>
    </a>
    <div id="inline_catchup-1-joint-showcase-7" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-7.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-joint-showcase-8" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-8.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A mechanical seven-segment display!</figcaption>
    </a>
    <div id="inline_catchup-1-joint-showcase-8" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-8.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-joints-showcase-9" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joints-showcase-9.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A rideable ferris wheel!</figcaption>
    </a>
    <div id="inline_catchup-1-joints-showcase-9" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joints-showcase-9.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-joint-showcase-10" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-10.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>More gears!</figcaption>
    </a>
    <div id="inline_catchup-1-joint-showcase-10" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-joint-showcase-10.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/ScreenShot00031.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/ScreenShot00031.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/ScreenShot00031.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/ScreenShot00031.png 1600w, https://brickadia.com/blog/content/images/2024/12/ScreenShot00031.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Something for the Mecha fans!</span></figcaption></figure><h2 id="seats">Seats</h2><p>The obvious next thing to make was some way to sit down and be attached to whatever ride/pseudo-car/other miscellaneous deathtrap you made. That comes in the form of the Seat, which you can click on to sit in.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-seat" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-seat.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Finally, a comfortable chair.</figcaption>
    </a>
    <div id="inline_catchup-1-seat" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-seat.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>There is not much else to say here. If you put one on a physics contraption it works as expected.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-2-seat" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-seat-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>This chair seems less comfortable.</figcaption>
    </a>
    <div id="inline_catchup-2-seat" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-seat-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h2 id="driveable-cars">Driveable Cars</h2><p>Again we are left with the problem of how to make versatile behavior possible without forcing the user to do a lot of work. And just so we&apos;re on the same page, programming good vehicle control is <em>hard</em>, easy to do wrong, and not even the first problem we need to solve. </p><p>The first problem we need to solve is how to allow a player set up their car, which they have built out of a lot of small little bricks, to drive in a way that resembles sensible.</p><p>To demonstrate the solution I came up with, here&apos;s what we want to drive:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-28.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1322" height="895" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-28.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-28.png 1000w, https://brickadia.com/blog/content/images/2024/12/image-28.png 1322w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">My design skills are rivaled by none.</span></figcaption></figure><p>It would certainly be quite a stretch to call this a &quot;vehicle&quot;, but I&apos;m going to anyway.</p><p>We need to mount the wheels, but there&apos;s immediately a problem. If we put our wheels on the car with a Motor, they wouldn&apos;t be able to steer. Motors only turn.</p><p>Enter the Wheel Joint, which can steer and turn. It even has a built in suspension.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-vehicle-1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-1.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Putting wheels on. The line across the joint is the direction the suspension works in and that steering works across.</figcaption>
    </a>
    <div id="inline_catchup-1-vehicle-1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-1.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>Already this is starting to look more like a car. We still can&apos;t drive it, though. Nothing is controlling the wheel joints.</p><p>There are many different schools of thought in sandbox games for how you tell the game how the player&apos;s controls control the car, but me? I&apos;m partial to the approach taken by Robocraft and Spore (a creature is technically a vehicle, right?). That approach being: The game should figure out as much about how to drive and steer your creation as possible on its own, without you needing to be involved in every little decision.</p><p>But this is Brickadia, so we also want modularity. We want to be able to entirely exclude functionality we don&apos;t want, like gear switching and air control. And we want to be able to tweak things that make sense to tweak, like acceleration, braking force and top speed. </p><p>This means that first of all, we should add the least additional functionality to the Seat as possible. We should simply have the Seat emit a <em>Control</em> signal that we can use (or decompose into wire outputs) somewhere else.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/UnrealEditor-Win64-DebugGame_nzVOpzzzCV.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1895" height="1186" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/UnrealEditor-Win64-DebugGame_nzVOpzzzCV.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/UnrealEditor-Win64-DebugGame_nzVOpzzzCV.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/UnrealEditor-Win64-DebugGame_nzVOpzzzCV.png 1600w, https://brickadia.com/blog/content/images/2024/12/UnrealEditor-Win64-DebugGame_nzVOpzzzCV.png 1895w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The seat has a wire output.</span></figcaption></figure><p>What do we attach it to? Introducing the Wheel Engine.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-31.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1157" height="967" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-31.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-31.png 1000w, https://brickadia.com/blog/content/images/2024/12/image-31.png 1157w"><figcaption><span style="white-space: pre-wrap;">Our car has an engine!</span></figcaption></figure><p>The Wheel Engine&apos;s placement designates the forward direction for our vehicle, and also where the engine noise comes from. This means that even if the seat were placed like this:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-32.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1032" height="837" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-32.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-32.png 1000w, https://brickadia.com/blog/content/images/2024/12/image-32.png 1032w"><figcaption><span style="white-space: pre-wrap;">???</span></figcaption></figure><p>The vehicle would still drive correctly. In fact, to make sure, let&apos;s leave that there. We&apos;ll put another one on the other side. For balance. And we&apos;ll also wire up the driver&apos;s seat.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-33.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="897" height="679" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-33.png 600w, https://brickadia.com/blog/content/images/2024/12/image-33.png 897w"><figcaption><span style="white-space: pre-wrap;">Here we go!</span></figcaption></figure><p>The driver sits on the left side, so they&apos;re not in danger of being hit by traffic. I&apos;m so glad we found a way to solve that design problem.</p><p>By the way, you don&apos;t have to use this big bulky engine if you don&apos;t want to. There is a small alternative that has all the same features.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-41.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="384" height="242"><figcaption><span style="white-space: pre-wrap;">Small wheel engine. Good for RC cars!</span></figcaption></figure><p>The engine gets very happy when we sit down in the seat and makes a noise. But we can&apos;t drive yet because we gave it no control over the wheels. </p><p>How do we do that? It&apos;s easy. The engine takes the seat&apos;s input signal and translates it to a wheel control signal that we can wire into the wheel joints.</p><p>Let&apos;s do that now.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-34.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1122" height="1032" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-34.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-34.png 1000w, https://brickadia.com/blog/content/images/2024/12/image-34.png 1122w"><figcaption><span style="white-space: pre-wrap;">You only need to wire the engine&apos;s control signal to the wheels. I used rerouters to make it still look pretty with my very strange seat and engine locations.</span></figcaption></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Later, you will be able to pass that wheel control signal through other bricks before sending it to a wheel, such as the planned transmission brick which will give your engine gear-switching. This is what I mean when I say I want the system to be modular!</div></div><p>And now it drives!</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-vehicle-2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Off we go!</figcaption>
    </a>
    <div id="inline_catchup-1-vehicle-2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>And no, extremely keen eyed readers, you eyes are not deceiving you - the engine is calculating a steering box containing all the wheel joints and doing <a href="https://en.wikipedia.org/wiki/Ackermann_steering_geometry" rel="noreferrer">Ackermann Steering</a>, which reduces wheel slipping and is what you find on most vehicles in the real world:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-ackmann" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-ackmann.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>An engine steers wheels depending on the turning circle, whose center can be adjusted via the Center of Steering.</figcaption>
    </a>
    <div id="inline_catchup-1-ackmann" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-ackmann.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>All this, too can be combined with wires. The engine is fully wire controllable!</p><h2 id="various-examples-1">Various Examples</h2><p>The testing team have built vehicles that are, somehow, even better than mine. Here are some videos of their adventures:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-vehicle-showcase-4" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-showcase-4.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Driving a familiar car in a town.</figcaption>
    </a>
    <div id="inline_catchup-1-vehicle-showcase-4" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-showcase-4.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-vehicle-showcase-5" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-showcase-5.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A tank! Treads are not possible yet, but the engine can tank steer.</figcaption>
    </a>
    <div id="inline_catchup-1-vehicle-showcase-5" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-showcase-5.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-vehicle-showcase-6" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-showcase-6.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Donuts in the city.</figcaption>
    </a>
    <div id="inline_catchup-1-vehicle-showcase-6" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-showcase-6.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-vehicle-showcase-7" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-showcase-7.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Loopin&apos;!</figcaption>
    </a>
    <div id="inline_catchup-1-vehicle-showcase-7" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-showcase-7.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-vehicle-showcase-1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-showcase-1.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Driving a jeep in the mountains as a client on day one that vehicles worked. The netcode has improved a lot since then and continues to!</figcaption>
    </a>
    <div id="inline_catchup-1-vehicle-showcase-1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-vehicle-showcase-1.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h1 id="other-stuff">Other Stuff!</h1><h2 id="procedural-brick-generation">Procedural Brick Generation</h2><p>I have just finished the brick composer, a dev tool we can use to create new procedural brick types.</p><p>Without going too deep into detail, the brick composer is able to take a few carefully made mesh parts parts in blender, like these:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-36.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1644" height="983" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-36.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-36.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/image-36.png 1600w, https://brickadia.com/blog/content/images/2024/12/image-36.png 1644w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The green sections are &quot;dynamic&quot; sections, for which we fit textures automatically.</span></figcaption></figure><p>And by arranging them and retexturing them, create a fully realized resizable brick.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-dyntexturer-1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-dyntexturer-1.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Generates a picket fence of any length!</figcaption>
    </a>
    <div id="inline_catchup-1-dyntexturer-1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-dyntexturer-1.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>This generator is super powerful. It can already be used to make all but 3 of the 28 procedural brick types currently in the game. Of that 25, 16 (including <em>all</em> of the micro-bricks) can be made simply by opening Blender, cutting up the default cube a little bit and throwing some Dyn texture markings on its faces:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-dyntexturer-2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-dyntexturer-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Generates a wedge from any size, with a sliced blender default cube as the only input!</figcaption>
    </a>
    <div id="inline_catchup-1-dyntexturer-2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-dyntexturer-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>We plan to use it for many more bricks including the resizable slider joints.</p><h2 id="weapon-resources">Weapon Resources</h2><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2025/01/Untitled.jpg" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="2000" height="1600" srcset="https://brickadia.com/blog/content/images/size/w600/2025/01/Untitled.jpg 600w, https://brickadia.com/blog/content/images/size/w1000/2025/01/Untitled.jpg 1000w, https://brickadia.com/blog/content/images/size/w1600/2025/01/Untitled.jpg 1600w, https://brickadia.com/blog/content/images/2025/01/Untitled.jpg 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Different types of ammo pickup.</span></figcaption></figure><p>Weapons now have a &quot;resources&quot; system.</p><p>There are several types of weapon ammo in Early Access:</p><ul><li><strong>Arrows</strong>, used for Bows and Crossbows.</li><li><strong>Black Powder</strong>, used for old timey weapons like the Flintlock Pistol.</li><li><strong>Explosive Ammo</strong>, used for the Rocket Launcher &amp; Grenade Launcher.</li><li><strong>Light Ammo</strong>, used for Pistols, SMGs and others.</li><li><strong>Medium Ammo</strong>, used for Assault Rifles, Machine Guns and others.</li><li><strong>Heavy Ammo</strong>, used for precision rifles.</li><li><strong>Magnum Ammo</strong>, used for Magnums, Revolvers, and the LAR.</li><li><strong>Plasma Ammo</strong>, used for heavy energy Sci-Fi weapons.</li><li><strong>Pulse Ammo</strong>, used for low energy Sci-Fi weapons.</li><li><strong>Shotgun Shells</strong>, used for shotguns.</li></ul><p>But the resource system is made in such a way that weapon resources aren&apos;t just limited to ammo. Weapons can have <em>individual<strong> </strong></em>resource values that they track to influence behavior - heat, charge, and more. There are no examples yet - for now, as a task, ammo is large enough.</p><h2 id="homing-missile">Homing Missile</h2><p>I saw a cool implementation of speed-conserving proportional navigation, a homing algorithm for projectiles, on the UE5 marketplace. It made me want to program my own from scratch, so here is Brickadia&apos;s very own homing missile in action:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_catchup-1-homing-missile" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-homing-missile.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Aiming? What for?</figcaption>
    </a>
    <div id="inline_catchup-1-homing-missile" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/Catchup1/catchup-1-homing-missile.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h2 id="speakers">Speakers</h2><p>These come with an audio component pre-attached. Get some tunes on!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2024/12/image-44.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="931" height="858" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-44.png 600w, https://brickadia.com/blog/content/images/2024/12/image-44.png 931w"></figure><h2 id="pole-resizable-in-all-directions">Pole Resizable in All Directions</h2><p>I decided to unlock the pole&apos;s resizing and see what would happen. I expected the brick to break but with a few tweaks to the vertex count generation it&apos;s actually fine. So I&apos;ve left it unlocked:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2024/12/image-7.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="709" height="806" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-7.png 600w, https://brickadia.com/blog/content/images/2024/12/image-7.png 709w"></figure><h2 id="other-new-bricks">Other New Bricks</h2><p>We have (a few) new decorative bricks that don&apos;t do anything at all!</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1341" height="802" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image.png 1000w, https://brickadia.com/blog/content/images/2024/12/image.png 1341w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">A floor pattern made with the new round and inverted round.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/Brickadia-Win64-Shipping_CIdjfK5fR0.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/Brickadia-Win64-Shipping_CIdjfK5fR0.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/Brickadia-Win64-Shipping_CIdjfK5fR0.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/Brickadia-Win64-Shipping_CIdjfK5fR0.png 1600w, https://brickadia.com/blog/content/images/2024/12/Brickadia-Win64-Shipping_CIdjfK5fR0.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">A fence using the inverted round corners.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/Brickadia-Win64-Shipping_Ek3lo8nvYD.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1728" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/Brickadia-Win64-Shipping_Ek3lo8nvYD.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/Brickadia-Win64-Shipping_Ek3lo8nvYD.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/Brickadia-Win64-Shipping_Ek3lo8nvYD.png 1600w, https://brickadia.com/blog/content/images/2024/12/Brickadia-Win64-Shipping_Ek3lo8nvYD.png 1728w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Some chocolate bars using the new ingot brick as segments.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/Brickadia-Win64-Shipping_Qm7FOeqkqV.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1080" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/Brickadia-Win64-Shipping_Qm7FOeqkqV.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/Brickadia-Win64-Shipping_Qm7FOeqkqV.png 1000w, https://brickadia.com/blog/content/images/2024/12/Brickadia-Win64-Shipping_Qm7FOeqkqV.png 1080w"><figcaption><span style="white-space: pre-wrap;">A fridge using the coins and quarter rounds as food.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-35.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1909" height="1087" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-35.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-35.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/image-35.png 1600w, https://brickadia.com/blog/content/images/2024/12/image-35.png 1909w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Frog????</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/UnrealEditor-Win64-DebugGame_DncIYDtgPo.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1558" height="888" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/UnrealEditor-Win64-DebugGame_DncIYDtgPo.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/UnrealEditor-Win64-DebugGame_DncIYDtgPo.png 1000w, https://brickadia.com/blog/content/images/2024/12/UnrealEditor-Win64-DebugGame_DncIYDtgPo.png 1558w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Frog!!!!!!!!!!!!!!!!!!!</span></figcaption></figure><h2 id="skirts-and-dresses">Skirts and Dresses</h2><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-15.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="478" height="658"><figcaption><span style="white-space: pre-wrap;">The basic skirt from in front.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-16.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="433" height="639"><figcaption><span style="white-space: pre-wrap;">Behind.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/image-45.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="2000" height="1125" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/image-45.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/image-45.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/12/image-45.png 1600w, https://brickadia.com/blog/content/images/2024/12/image-45.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Modern home, retro comforts.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/Brickadia-Win64-Shipping_1lrFka9csF.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1132" height="1336" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/Brickadia-Win64-Shipping_1lrFka9csF.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/Brickadia-Win64-Shipping_1lrFka9csF.png 1000w, https://brickadia.com/blog/content/images/2024/12/Brickadia-Win64-Shipping_1lrFka9csF.png 1132w"><figcaption><span style="white-space: pre-wrap;">Peak performance.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/12/ss_2024-12-31_at_18.39.22.png" class="kg-image" alt="Devlog #7 - Wires, Vehicles, Next Fest &amp; More!" loading="lazy" width="1182" height="982" srcset="https://brickadia.com/blog/content/images/size/w600/2024/12/ss_2024-12-31_at_18.39.22.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/12/ss_2024-12-31_at_18.39.22.png 1000w, https://brickadia.com/blog/content/images/2024/12/ss_2024-12-31_at_18.39.22.png 1182w"><figcaption><span style="white-space: pre-wrap;">LET&apos;S GO!</span></figcaption></figure><h1 id="ok-thats-everything">OK, That&apos;s Everything</h1><p><a href="https://discord.gg/brickadia" rel="noreferrer">For more regular updates, join our Discord!</a></p>]]></content:encoded></item><item><title><![CDATA[Devlog #6 - Upgrading the Building System, Part 1]]></title><description><![CDATA[Resizing bricks while placing, easier reorienting, unified inventory, and a few more usability improvements for Early Access.]]></description><link>https://brickadia.com/blog/devlog-6/</link><guid isPermaLink="false">65b70c135d108b000717ca03</guid><category><![CDATA[Development]]></category><dc:creator><![CDATA[Sixmorphugus]]></dc:creator><pubDate>Tue, 26 Mar 2024 17:21:58 GMT</pubDate><media:content url="https://brickadia.com/blog/content/images/2024/03/Brickadia-Win64-Shipping_VGodTFb9o1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://brickadia.com/blog/content/images/2024/03/Brickadia-Win64-Shipping_VGodTFb9o1.jpg" alt="Devlog #6 - Upgrading the Building System, Part 1"><p>My favorite thing to do in Brickadia is watch other people build.</p><p>I&apos;m always interested to see the cool things people are making, but I&apos;m most interested in the techniques they use. How they make use of the tools we made - and how they don&apos;t. What I found out was in some cases surprising, and has fed into a lot of the new design decisions I&apos;ve made.</p><p>Before we go further, make sure you&apos;re not browsing on mobile data! Here&apos;s a table of contents for this post:</p><p><a href="#what-needs-improvement">What Needs Improvement?</a><br>	<a href="#resize-dragging-rather-than-row-dragging">Resize-Dragging rather than Row-Dragging</a><br>	<a href="#unusable-brick-reorientation">Unusable Brick Reorientation</a><br>	<a href="#no-visual-metrics">No Visual Metrics</a><br>	<a href="#bad-new-player-ux">Bad New Player UX</a><br>	<a href="#complicated-dual-inventory-system">Complicated Dual Inventory System</a><br>	<a href="#too-little-inventory-space">Too Little Inventory Space</a><br>	<a href="#unable-to-start-floating-builds">Unable to Start Floating Builds</a><br>	<a href="#more-extensibility-desired">More Extensibility Desired</a><br><a href="#rewrite-the-whole-building-system">Rewrite the whole building system??</a><br><a href="#upgrading-the-inventory">Upgrading the Inventory</a><br>	<a href="#extensible-inventory-slots">Extensible Inventory Slots</a><br>	<a href="#more-inventory-space">More Inventory Space</a><br>	<a href="#keeping-your-character-inventory">Keeping your Character Inventory</a><br>	<a href="#selecting-inventory-slots">Selecting Inventory Slots</a><br><a href="#upgrading-building">Upgrading Building</a><br>	<a href="#the-core">The Core</a><br>	<a href="#aligning-bricks-with-the-mouse">Aligning Bricks with the Mouse</a><br>	<a href="#placing-floating-bricks">Placing Floating Bricks</a><br>	<a href="#gizmos-and-the-preview-grid">Gizmos and the Preview Grid</a><br>	<a href="#dragging-brick-rows-old">Dragging Brick Rows (Old)</a><br>	<a href="#dragging-brick-rows-new">Dragging Brick Rows (New)</a><br>	<a href="#resize-dragging">Resize-Dragging</a><br>	<a href="#rotation-and-reorientation">Rotation and Reorientation</a><br>	<a href="#tool-widgets">Tool Widgets</a><br>	<a href="#tool-bind-hints">Tool Bind Hints</a><br>	<a href="#selection-highlighting">Selection Highlighting</a><br><a href="#more-to-come">More to Come!</a></p><h2 id="what-needs-improvement">What Needs Improvement?</h2><p>First, let&apos;s talk about what we can learn from how players built in Alpha 5, and how we can use that information to improve the tools for Early Access. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">There are even more improvements coming, especially related to building physics contraptions. More on those in a future blog post!</div></div><h3 id="resize-dragging-rather-than-row-dragging">Resize-Dragging rather than Row-Dragging</h3><p>Years ago, we built Brickadia&apos;s original mouse building around point and click placement of bricks, and - as an afterthought intended for people making regular patterned things such as brick walls - made it so that if you click and move the mouse without releasing it, you drag out a row of bricks.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_a5-row-dragging" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-a5-row-dragging.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Building a brick wall with row dragging in Alpha 5.</figcaption>
    </a>
    <div id="inline_a5-row-dragging" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-a5-row-dragging.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>You can do the same thing with a brick template.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_a5-template-row-dragging" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-a5-template-row-dragging.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Building pillars with template row dragging in Alpha 5.</figcaption>
    </a>
    <div id="inline_a5-template-row-dragging" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-a5-template-row-dragging.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>This is super efficient for placing rows of the same brick.</p><p>Brickadia also supports resizing bricks. It&apos;s a separate tool, here.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2024/03/image-10.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-10.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-10.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-10.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-10.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>You can resize any brick to any valid size. If you like a certain size, you can pick it into the quickbar with Ctrl-MMB. You can have up to 10 bricks in your quickbar, which seems like enough for most tasks we can think of. And the resizer has quick binds for resizing to the minimum and maximum size:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_resize-quickly" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-resize-quickly.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Extending a ramp by quick-resizing in Alpha 5.</figcaption>
    </a>
    <div id="inline_resize-quickly" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-resize-quickly.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>And so, our thinking went, now all our builders have everything they need to make cool structures quickly. We released these features in the Open Alpha. </p><p>Here&apos;s how people <em>actually</em> used them:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_build-resize" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-build-resize.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>How many people build in Alpha 5.</figcaption>
    </a>
    <div id="inline_build-resize" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-build-resize.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>First, you place a very small brick. Usually a 2x2x2 micro brick, sometimes larger. It&apos;s the only thing that&apos;s useful to have in your quickbar with this style of building, <em>ever</em>. The size it needs to be is your lowest common denominator - the smallest gap you&apos;d ever need to fit it into, meaning smaller is better. Then, you switch to the resizer. You resize your very small brick to the size it <em>actually </em>needs to be. Then you start over.</p><p>At first this is clumsy. It feels bad. It feels like the game is broken. Slowly, though, you grow used to it. You bind the resizer to its own key. You go through this process tens of times, then hundreds of times, then thousands of times. It becomes muscle memory. You learn to do it without thinking. One building away, I&apos;m standing on a roof, watching you. Horrified.</p><p>The problem here is that our iterative improvements to the game created a contradictory user experience:</p><ul><li>The placer is designed for a building experience where players build things by arranging non-resizable shapes of different sizes.</li><li>Most of the bricks in Brickadia became dynamically resizable when the resizer was added in Alpha 4.</li></ul><p>These players aren&apos;t doing this constant switching between the Placer and the Resizer to be annoying contrarians. To actually be able to leverage the resizability of almost every brick in the game, they&apos;re forced to do it. The placer tool doesn&apos;t let them do so on its own. To add insult to injury, the resizer doesn&apos;t snap brick sizes to the current alignment grid, so if you want plate sized micro-bricks you&apos;re forced to strain your wrists doing it carefully.</p><p>Resizing bricks directly as you place them would make a lot more sense. In reality, there are many more cases where you&apos;d find it handy to resize a brick as you place, than cases where it&apos;s helpful to place a row of the same brick.</p><p>Therefore, clicking and dragging shouldn&apos;t default to row placing. It should place one brick, which resizes according to your drag. In addition, you should be able to resize the brick on all of the axes in one go, so you can make any size you want without ever needing the Resizer unless you want to modify an existing structure.</p><p>Obviously, the resizing should snap to the lines of the current placement grid too.</p><h3 id="unusable-brick-reorientation">Unusable Brick Reorientation</h3><p>This one is not that hard and we should have gotten it right the first time.</p><p>For most of Brickadia&apos;s lifespan it has been a pain to orient bricks to rotations where they are not upright. In Alpha 5, you do this using a horrible keybind called Cycle Brick Orientation (default keybind: Numpad /) that cycles through every possible brick orientation in an apparently random order;</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_horrible-reorient" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-horrible-reorient.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Cycling through brick orientations seemingly arbitrarily.</figcaption>
    </a>
    <div id="inline_horrible-reorient" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-horrible-reorient.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>You might notice I miss the orientation I wanted to stop at the first time and have to go through them all again. This is a result of years of training - most people miss the orientation they want at least twice.</p><p>This was actually an iterative improvement, because we only gave it a dedicated keybind in Alpha 5 - before then, you had to use advanced trickery with side studded bricks if you wanted to reorient a brick.</p><p>Let&apos;s get some insight into what&apos;s happening here. Brickadia stores which way your brick points in an enum (called EBrickDirection), with 6 possible values:</p><figure class="kg-card kg-code-card"><pre><code class="language-cpp">/** An axis aligned direction. */
enum class EBrickDirection : uint8
{
	X_Positive,
	X_Negative,
	Y_Positive,
	Y_Negative,
	Z_Positive,
	Z_Negative,
};</code></pre><figcaption><p><span style="white-space: pre-wrap;">EBrickDirection.</span></p></figcaption></figure><p>Cycle Brick Orientation might seem disordered, but it actually is ordered; it&apos;s going through the values of the EBrickDirection enum. This seemed like the way to go at the time, but the order it goes through orientations is actually so confusing that the Brickadia programmers are still the only people it makes sense to. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">A big lesson you have to learn working on building games where world positions of objects are relevant to players is this: players will never be able to keep track of where north, east, south and west are the same way that they can keep track of up and down.</div></div><p>The fundamental problem is that it is meaningless to tell your players something is X+, Y-, etc, to try to come up with any &quot;natural&quot; order to cycle through the different directions, or to ask them to &quot;set a direction&quot; given a list like the one specified in EBrickDirection. You must let them <em>point </em>in a direction, and then resolve the axis and sign they wanted from that - you must translate how the user understands space to how the computer does.</p><h3 id="no-visual-metrics">No Visual Metrics</h3><p>In the same vein, it&apos;s quite strange that not just Brickadia, but so many advanced creation tools find it sufficient to simply display measurements for things only on the HUD, when you&apos;re doing something in the <em>world</em>.</p><p>I recently watched a GDC talk called <a href="https://www.youtube.com/watch?v=brByJ5EVBn4&amp;t=555s">Keeping Level Designers in the Zone Through Level Editor Design</a>, which for some reason is now unlisted. A lot of the talk is about texturing and pivots and other things not really relevant to Brickadia.</p><p>I found one specific point very interesting though: In Hammer, moveable brushes are positioned as boxes, where we instantly see the measurements of each edge displayed as text on that edge. Not as some &quot;X by Y by Z&quot; formatted size that we have no idea how to translate to the world. </p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-34.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1468" height="874" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-34.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-34.png 1000w, https://brickadia.com/blog/content/images/2024/03/image-34.png 1468w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">A measurement for each axis displayed right in the world, in Hammer 2.</span></figcaption></figure><p>By comparison, the information Brickadia shows you when resizing a brick is completely worthless:</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2024/03/image-35.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="500" height="40"></figure><p>Clearly we can do better here, as well.</p><h3 id="bad-new-player-ux">Bad New Player UX</h3><p>The HUD meant to teach users how to use the Placer is, to put it bluntly, programmer UI:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-2.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="2000" height="1076" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-2.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-2.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-2.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-2.png 2000w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Press E to strain your eyes.</span></figcaption></figure><p>It uses only text, and it doesn&apos;t include certain key functions, like picking, at all. It&apos;s hard coded to display the default keybind rather than displaying the currently bound key name. In a particularly egregious case - the detached mode controls - it simply tells you to move the brick by using &quot;Numpad&quot;.</p><p>In addition, prompts for keys aren&apos;t unified in any way. Down here is a little set of mystery icons meant to show new players how to open the inventory, use tools, use bricks etc, which <em>do</em> change to reflect your current bindings:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-3.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="352" height="310"><figcaption><span style="white-space: pre-wrap;">Press 1 to go hiking, B to buy Brickadia, T to see warnings, or H for a surprise.</span></figcaption></figure><p>Painting has its own style of control prompts again. These, again, don&apos;t change to reflect your key bindings, but do change contextually as you navigate the menu.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-4.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="420" height="590"><figcaption><span style="white-space: pre-wrap;">Top-down is a slightly nicer layout.</span></figcaption></figure><p>And like the Placer, these are missing things like fill paint, which people have requested me to add to the game at least 15 times not knowing it&apos;s already there (alt-click with the paint tool) because there&apos;s no hint.</p><p>In Early Access we should show control prompts in a way that is more prominent, digestible, consistent, complete and reactive.</p><h3 id="complicated-dual-inventory-system">Complicated Dual Inventory System</h3><p>This one was a little contentious. Basically, in Alpha 5, there are two character inventories. We have the brick inventory:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-11.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1091" height="153" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-11.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-11.png 1000w, https://brickadia.com/blog/content/images/2024/03/image-11.png 1091w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">A brick inventory.</span></figcaption></figure><p>And the item inventory:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-12.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1114" height="151" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-12.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-12.png 1000w, https://brickadia.com/blog/content/images/2024/03/image-12.png 1114w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">An item inventory.</span></figcaption></figure><p>This pretty much always confuses new players who don&apos;t realize that they have two inventories and need to use Ctrl+Q to switch between them. They should be merged into one inventory which can contain both bricks and items, like Minecraft, Space Engineers, Stardew Valley, or basically any other game do.</p><h3 id="too-little-inventory-space">Too Little Inventory Space</h3><p>The inventory needs more space than just the 10 slots if we want people creating RPGs, salvage gamemodes and other experiences! This is doubly necessary after the last change as items now share space with bricks. Something that has been requested a lot is more than one quickbar, which advanced users could find very helpful.</p><p>We can design things so that only the currently selected quickbar is considered for adding new items, eliminating cases where new users might otherwise &quot;lose&quot; an item in a different quickbar.</p><h3 id="unable-to-start-floating-builds">Unable to Start Floating Builds</h3><p>People often want to place things in mid air. Brickadia is supposed to be a game that is okay with you placing things in mid air. However, regardless of mode, the controls make this unreasonably hard. I always feel slightly embarrassed watching what people have to do to hoodwink the game into letting them do so.</p><p>To explain, let&apos;s say I want to start building an airship here:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/devlog-6-location.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/devlog-6-location.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/devlog-6-location.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/devlog-6-location.png 1600w, https://brickadia.com/blog/content/images/2024/03/devlog-6-location.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Say we want to build something above the lake here.</span></figcaption></figure><p>My best options are:</p><ul><li>Aiming at some wall on the ground, plane locking and aiming up (the fastest way, but don&apos;t tell the mouse mode haters).</li><li>Going into orbit mode on the ground and holding the &quot;move up&quot; button for an obnoxiously long time.</li><li>Going into detached mode on the ground and holding the &quot;move up&quot; button for an obnoxiously long time.</li></ul><p>You should just be able to position bricks in mid air at a set distance from your face. It should work like this: if you hold a &apos;float&apos; key while in mouse mode, your ghost brick starts hovering at its current distance. If you&apos;re aiming at something too far away (like the sky), it will hover at a preset default distance instead.</p><h3 id="more-extensibility-desired">More Extensibility Desired</h3><p>This final new requirement is that the building system should be implemented in a modular way. That means the core Placer code should do very little, almost all functionality should be inside modes which are added on to it. </p><p>We currently have three types of modes:</p><p><strong>Control Modes</strong> will implement the UX for handling user input and displaying output on the HUD. They will register a set of control hints to display on screen and can show or hide them from the HUD at any time.</p><p>We will continue to have three: Mouse, Orbit, and Detached mode. Implementing them as entire separate modes allows us to implement each mode more robustly as a state machine.</p><p><strong>Alignment Modes</strong> will decide the behavior of the placement grid in all cases. At present, we have Plate, Half, Fifth, Tenth, and Brick.</p><p>Later we might add new alignment modes, or better yet, let the player define their own alignment grids for certain building styles like cube terrain.</p><p>And finally, <strong>Placement Modes</strong> will decide placement behavior. At present, we have Resize-Drag and the old Row-Drag.</p><p>Future placement modes could include a Circle-Drag or Frame-Drag. The way the system is designed will make it easy to extend, and all placement modes will work in all control modes.</p><p>We have our work cut out for us. Time to rewrite the whole building system!</p><h2 id="rewrite-the-whole-building-system">Rewrite the whole building system??</h2><p>There are many reasons we chose to rewrite the building mechanics in this case, even though we want to release the game some time this year still:</p><ul><li>The code for both the old inventory and building systems is almost entirely written in Blueprint prototypes (Unreal Engine&apos;s artist targeted visual scripting language), because we didn&apos;t really know what we were doing back then. Over the years this turned into literal spaghetti code, Blueprints are incredibly slow to refactor, cannot merge or version properly because of binary files, and there are no good tools to edit them other than Unreal&apos;s very clunky editor.</li><li>There are now special bricks and other objects such as physics joints that you can place. Many of them need custom placement behavior. With the old Blueprint code, this was impossible to do in a reasonable way because the code is <em>highly specialized to ordinary bricks</em>.</li><li>Important parts of the inventory system&apos;s &quot;state&quot;, such as the brick inventory in its entirety and the current selected slot, were stored entirely client-side. This meant the server could never do things like know what bricks you have or what you have selected. This prevented us from implementing many long-desired features such as letting you put prefabs from the Gallery (more on that in later posts) in your quickbar.</li><li>There was no modularity or real separation of the control modes (mouse, orbit, detached) and shared behaviors (alignment grid). Everything was either implemented multiple times for each case, or done by a shared function that had to be branch-heavy to the point of unreadability because of all the special cases. Nobody knows what parts you&apos;d have to change to do X! And even if someone did...</li><li>The blueprints were impossible to navigate and maintain, because there were <em>so many</em> functions and variables, and you can only view one at a time:</li></ul><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/brblog_buildingmanager.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1712" height="1164" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/brblog_buildingmanager.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/brblog_buildingmanager.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/brblog_buildingmanager.png 1600w, https://brickadia.com/blog/content/images/2024/03/brblog_buildingmanager.png 1712w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The building manager is perhaps not the worst Blueprint ever made, but pretty hard to work with.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-36.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1959" height="945" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-36.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-36.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-36.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-36.png 1959w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Blueprints are great for making simple logic take incredibly long to read.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-37.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="2000" height="1140" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-37.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-37.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-37.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-37.png 2117w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">I hate working on these so badly.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-38.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="2000" height="762" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-38.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-38.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-38.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-38.png 2153w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Feels more like playing a game of Factorio than code.</span></figcaption></figure><p>Why didn&apos;t we just buckle down and try extending this rather than a rewrite? Well, we sort of did, but it quickly became obvious it wasn&apos;t the way to go.</p><p>If you&apos;ve been following the project for a while, you may have seen the recent Ferris wheel video in our #dev-media <a href="https://discord.com/invite/brickadia">Discord</a> channel, and the not-so-recent <a href="https://www.youtube.com/watch?v=_S9OfbkGH-c">Physics Trailer</a>. Those were made with prototype tools that were created by modifying (bodging) the building manger. And those prototype tools were not very good.</p><p>Here&apos;s me trying to build the Ferris wheel with them <em>again</em>, as a demonstration of how terrible it was the first time:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_holy-hinge" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-holy-hinge.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Aligning the hinges. Only takes about a day each.</figcaption>
    </a>
    <div id="inline_holy-hinge" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-holy-hinge.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_holy-hinge-2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-holy-hinge-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Aligning something on the hinge is even worse.</figcaption>
    </a>
    <div id="inline_holy-hinge-2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-holy-hinge-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>All the problems worked together to make the prototype UX this bad. It was slow for Zeblote to work with, and he had to really fight the fact that the building manager is written only for bricks, and has spaghetti-like code that is essentially working for every one of the neatly separated &quot;modes&quot; we designed above at once. Even if it were fully written in C++, this would have been very tiresome and resulted in wiping out most of the original code either way.</p><p>At the end of the day, addressing this kind of technical debt is something that just can&apos;t wait. </p><p>So let&apos;s get it done!</p><h2 id="upgrading-the-inventory">Upgrading the Inventory</h2><p>Firstly, you will often see me use the expression &quot;the inventory&quot;. But in Brickadia, at least in the Open Alpha, you really had <em>three </em>inventories: the Item Inventory, the Brick Inventory (client side only), and the Tool Inventory.</p><p>The <strong>Item Inventory</strong> lives on your character. It defines what appears in the quickbar, and in Alpha 5 it can only contain items. Because the character inventory lives on your character, it&apos;s fully lost when you die.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-19.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1461" height="182" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-19.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-19.png 1000w, https://brickadia.com/blog/content/images/2024/03/image-19.png 1461w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The character inventory filled with guns.</span></figcaption></figure><p>The <strong>Brick Inventory</strong> holds all the bricks you want to build with.</p><p>This inventory has a special extra slot in it called the TEMP slot. Something can be held in it temporarily, until you switch to another slot, at which point the TEMP slot is destroyed. This was mainly used for picking bricks from the world.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-20.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1614" height="861" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-20.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-20.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-20.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-20.png 1614w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Temp-placing a pumpkin.</span></figcaption></figure><p>The <strong>Tool Inventory</strong> lives on your player controller, which can be seen as the &quot;soul&quot; that inhabits characters you control in Brickadia. Unlike the character, it&apos;s not recreated when you respawn - it&apos;s created once when you join a game, and deleted only when you leave. In addition, the tool inventory being here means you <em>don&apos;t</em> lose your tools when your character dies - they&apos;re kept.</p><p>We display the tool inventory via the tool pie menu:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-21.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="846" height="872" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-21.png 600w, https://brickadia.com/blog/content/images/2024/03/image-21.png 846w"><figcaption><span style="white-space: pre-wrap;">The tool inventory.</span></figcaption></figure><p>The tool inventory can technically be edited by game modes, which will change what&apos;s in the pie menu! There&apos;s no particular reason it can&apos;t contain guns or, in the case of our new inventory changes, bricks. We just haven&apos;t added a way to do so.</p><h3 id="extensible-inventory-slots">Extensible Inventory Slots</h3><p>In Alpha 5, inventory entries <em>always </em>store references to item actors. The game spawns item actors in the world when they are added to someone&apos;s inventory and hides them under the map until they&apos;re held, at which point it welds them to that player&apos;s hand(s) and plays any relevant animations.</p><p>We can visualise that inventory design like this:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-27.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1130" height="180" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-27.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-27.png 1000w, https://brickadia.com/blog/content/images/2024/03/image-27.png 1130w"><figcaption><span style="white-space: pre-wrap;">An inventory in Alpha 5.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-29.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="799" height="365" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-29.png 600w, https://brickadia.com/blog/content/images/2024/03/image-29.png 799w"><figcaption><span style="white-space: pre-wrap;">How that inventory is stored: Inventory entries point directly to item instances.</span></figcaption></figure><p>You will notice it seems like this can&apos;t support bricks, even though we had a Brick Inventory in Alpha 5. That&apos;s exactly right! Alpha 5 only works because the Brick Inventory in Alpha 5 isn&apos;t real. It&apos;s a bunch of Blueprint hell where we create 11 widgets and store a brick reference on each one, and the UI widget calls a function on the building manager to change the current brick being placed. Which means the server has no idea, or authority over, what bricks you have!</p><p>The first thing we are going to do to fix this is throw out this separate, &quot;fake&quot; Brick Inventory and merge it into the Character Inventory. To do that we&apos;ll need to adapt our inventory to store bricks in it, which means we need a layer of indirection between the inventory and the different things you can store in it. Like this:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-18.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1641" height="562" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-18.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-18.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-18.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-18.png 1641w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The slots can now hold arbitrary things.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-30.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1611" height="458" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-30.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-30.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-30.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-30.png 1611w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Here&apos;s what&apos;s going on under the hood now.</span></figcaption></figure><p>Entries point to an item that should be put in the player&apos;s hand when that entry is selected. As selecting a brick still needs to put the placer in your hand, we&apos;ll do something broadly the same as what A5 did - we&apos;ll create a placer instance with every player that joins the server, and put it in their hand when they have any brick selected in the quickbar.</p><h3 id="more-inventory-space">More Inventory Space</h3><p>Currently, our quickbar widget can only ever view the first 10 slots of the inventory - adding more doesn&apos;t work. But we can upgrade it to view specific ranges instead.</p><p>Here&apos;s what we do: When the widget is initialized, it takes the total inventory size and divides it by 10 to compute the quickbar count (i.e. 10). Now, you can switch between quickbars in order by CTRL-scrolling:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_quickbar_scrolling" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-quickbar_scrolling.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Switching between quickbars.</figcaption>
    </a>
    <div id="inline_quickbar_scrolling" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-quickbar_scrolling.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>Or, you can press CTRL-[0-9] to go directly to a specific quickbar:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_quickbar-quick-switching" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-quickbar-quick-switching.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Quick-switching between quickbars.</figcaption>
    </a>
    <div id="inline_quickbar-quick-switching" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-quickbar-quick-switching.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="keeping-your-character-inventory">Keeping your Character Inventory</h3><p>Doing all this has foregrounded an issue that already existed and was quite annoying in Brickadia&apos;s creative mode - when you die, either by physics damage or self destructing for a joke, your character inventory is cleared. The new problem? This now clears all the bricks in your inventory, too.</p><p>To fix this, I&apos;ve added one more new feature: Keep Inventory. If you are in a minigame where this is on, or if you are not in a minigame at all, this feature will cause your inventory to be copied to your new character when you die. This means you don&apos;t lose your bricks, or any guns you spawned in for fun.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_inventory-saving" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-inventory-saving.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>If you die outside a minigame, you keep your character inventory.</figcaption>
    </a>
    <div id="inline_inventory-saving" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-inventory-saving.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="selecting-inventory-slots">Selecting Inventory Slots</h3><p>This mostly only exists for historical reasons at this point, but it seemed like an interesting tidbit nonetheless. When we were setting up the inventory system years ago, we wanted client side prediction for switching and firing weapons.</p><p>That meant the slot selection had to be routed through the character movement component in Unreal Engine. This wasn&apos;t easily extensible, but we had one free byte that could be used.</p><p>How do we select something out of two inventories and a TEMP slot using a single byte? Simple, we encode the current inventory selection in an <strong>int8</strong> - a signed integer with 256 possible values, ranging from -128 to 127 - which we call an inventory index. We map inventory slots to the index like this:</p><ul><li>0 is a special case. It means the player sending this index is not holding anything from any inventory.</li><li>-1 is a special case. It means the player sending this index is holding whatever is in the TEMP slot.</li><li>1 to 100 select inventory items from the character inventory - you can get the index of the item in the character inventory by subtracting 1.</li><li>-2 to -101 to select inventory items from the tool inventory - you can get the index of the item in the character inventory by removing the sign, then subtracting 2.</li></ul><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-26.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="2000" height="585" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-26.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-26.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-26.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-26.png 2017w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Helpful diagram of how inventory indexes map to entries in the inventories.</span></figcaption></figure><p>This fits 126 entries in each inventory, of which we&apos;ll only use 100.</p><h2 id="upgrading-building">Upgrading Building</h2><p>Building has now been mostly rewritten in C++. It&apos;s nicely modularized and much easier to extend and debug. Here are the cliff notes of how it works!</p><h3 id="the-core">The Core</h3><p>With a lot of checking back to the building manager, I started by making the Placer&apos;s core - its state machine for the control mode, as well as selection for the alignment and placement modes.</p><p>Things that work exactly the same way in every mode can be implemented on the Placer itself, so we&apos;ll implement the controls to switch between placement and alignment modes here. C switches alignment mode, J switches placement mode. Holding C selects the special &quot;super&quot; alignment mode.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-32.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1926" height="1120" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-32.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-32.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-32.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-32.png 1926w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Wait, this is just a picture of someone holding a placer while nothing happens.</span></figcaption></figure><p>Of course, even though you can select bricks from the Quickbar, you can&apos;t actually place a brick yet at all. Or see anything happening when you swap the modes. We&apos;re about to get to that. Starting with...</p><h3 id="aligning-bricks-with-the-mouse">Aligning Bricks with the Mouse</h3><p>The second most complicated part of building is the code that uses the position of your mouse to determine where the brick you&apos;re aiming should go. It seems trivial but it&apos;s not. The tool trace hit position must be resolved into a brick placement location, where:</p><ol><li>The resulting placement must be positioned on the grid that was intersected, or if none the global brick grid (and the placement preview should parent itself to that brick grid, so there&apos;s no jittering if that grid is a moving vehicle);</li><li>The resulting placement must not be positioned in a way that causes it to intersect the surface it was aimed at;</li><li>The resulting placement must treat hidden or noncollided bricks like regular bricks;</li><li>The resulting placement must respect the placement alignment grid, meaning that the placement&apos;s edges must be aligned to a minimum of 3 faces of one of the alignment grid cells it lies inside (which is why bricks smaller than the alignment grid align themselves to corners);</li><li>That alignment grid&apos;s origin and oriented cell size must first be resolved from considering the orientation of any hit anchors (such as studs or stud inlets) or else the orientation of the surface on the brick that was hit by our raycast - i.e. if you aim at the side of a reoriented brick, or a stud grid, you get a rotated alignment grid;</li><li>The resulting placement should also <em>orient</em> itself to any anchors (such as studs or stud inlets) unless a specific direction is requested - i.e if you aim at side studs and you haven&apos;t manually set your direction, your brick should turn sideways to place on it, and;</li><li>The specified user rotation, and, if set, direction, should otherwise always be respected.</li></ol><p>In other words, firing the correct raycast given the position of the cursor is the easy part.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_raycast-positioning-fail" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-raycast-positioning-fail.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>How the brick would position itself if we merely fired a raycast.</figcaption>
    </a>
    <div id="inline_raycast-positioning-fail" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-raycast-positioning-fail.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>How do we tackle this?</p><p>Let&apos;s start by grabbing a bit of information from our hit result. We&apos;ll grab:</p><ul><li>The brick grid we hit, or global if we hit the map.</li><li>The EBrickDirection of any anchor (stud or inlet) we hit, or the global up direction (Z+) if we didn&apos;t hit any.</li><li>The type of anchor we hit, or none if we didn&apos;t hit one.</li></ul><p>We can already compute our alignment grid&apos;s origin and cell size from this information combined with our current alignment mode. The origin is the position of any anchor we hit (or the brick grid&apos;s position if we didn&apos;t hit one), and the cell size is our alignment mode&apos;s cell size rotated to our up direction.</p><p>We can now snap our brick to some kind of grid and rotate it to anchors&apos; orientation.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_grid-snap-1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-grid-1-v2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>See? Our 2x micro cube snaps to the grid! We did it, guys! We made building! Don&apos;t ask why I&apos;m suddenly using a 2x micro cube!</figcaption>
    </a>
    <div id="inline_grid-snap-1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-grid-1-v2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>But of course, as soon as we try to place something other than a 2x2 micro brick, it&apos;s obvious that something is still very wrong - even when we align the placement point to the grid, the brick ends up wrongly positioned.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_grid-snap-2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-grid-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Oh...</figcaption>
    </a>
    <div id="inline_grid-snap-2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-grid-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>Positioning the brick properly requires understanding that what we are placing is not a point, but a box with a size. Placing it like that means we can use the box extents to de-penetrate it from the surface we hit and the nearest 3 grid cell faces, which gives us <em>way</em> better results:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_grid-snap-3" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-grid-3.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Placing the brick as a box. Now it does work for most bricks.</figcaption>
    </a>
    <div id="inline_grid-snap-3" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-grid-3.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>And because of what we did before, it&apos;ll even rotate to face away from studs or towards inlets.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_grid-snap-4" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-grid-snap-4.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>The brick rotates away from studs, and towards inlets.</figcaption>
    </a>
    <div id="inline_grid-snap-4" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-grid-snap-4.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>Unfortunately, it&apos;s still a bit difficult to work with. To explain why, let me demonstrate with this extremely long, tall ramp.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_grid-snap-5" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-grid-snap-5-v2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Notice how it&apos;s impossible to place this at the end on its inlet - without a feature like plane lock, which we don&apos;t currently have.</figcaption>
    </a>
    <div id="inline_grid-snap-5" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-grid-snap-5-v2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>This isn&apos;t very usable for building with unless I&apos;m placing it on the floor of the map. For most other use cases, like placing them corner to corner, I need the origin to be where the stud inlet is. I need a <em>pivot.</em></p><p>So let&apos;s upgrade our size to a full pivot - a box with a relative offset and a size that is calculated <em>within</em> the bounds of the brick being placed. We can use the existing code from the old building system, which per-calculates several of these, and we can choose a pivot to use based on what our ray cast hit. We&apos;ll add:</p><ul><li>A &quot;Bottom Studs&quot; pivot, which records the location and size of the first found bottom stud grid. We&apos;ll choose this one for aligning to top studs.</li><li>A &quot;Top Studs&quot; pivot, which does the same for the first found top stud grid. We&apos;ll choose this one for aligning to bottom studs.</li><li>An &quot;Expanded Studs&quot; pivot, which takes the top studs pivot and expands it to the other end of the brick. We&apos;ll choose this one if we&apos;re aligning to the side of a brick with our rotation or aligning against the map, since it helps us cull parts of the brick from the placement calculation that are irrelevant.</li><li>A &quot;Bounds&quot; pivot, which when used produces behavior identical to what we were doing before we used pivots - an unmoved bounding box that encapsulates the entire brick. We&apos;ll only choose this one if we&apos;re aligning to the side of a brick with a different rotation to our previewed one, and we can&apos;t reorient to match it. We can also use it for other placement calculations, such as the origin of the brick in the next section.</li></ul><p>All sorted!</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_long-triangle" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-long-triangle.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Now we can build our long triangle.</figcaption>
    </a>
    <div id="inline_long-triangle" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-long-triangle.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>Knowing where the stud grids are also lets us do stuff like this.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_grid-snap-6" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-grid-snap-6.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>The turkey has studs on its sides, so when you point at an inlet it rotates sideways.</figcaption>
    </a>
    <div id="inline_grid-snap-6" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-grid-snap-6.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>And even if we locked the orientation, we can still line things up relative to the brick being placed on.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_grid-snap-7" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-grid-snap-7.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>When we point at a brick placed sideways, we place on a rotated plate grid, so we can better align to it in that surface&apos;s units.</figcaption>
    </a>
    <div id="inline_grid-snap-7" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-grid-snap-7.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="placing-floating-bricks">Placing Floating Bricks</h3><p>We wanted a floating placement mode that lets you place your brick in front of your face while holding ALT.</p><p>We can do that fairly easily - take the origin and direction of the cursor ray and the distance from it of the current preview brick (or a sensible default distance if there is none) and compute a location. Now, continuously move the brick&apos;s origin to the grid cell nearest to that location:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_float-1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-float-1.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>It just floats in front of your face.</figcaption>
    </a>
    <div id="inline_float-1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-float-1.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>We can improve it further by binding the mouse wheel to changing the distance, so you can move the brick closer or further away.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_float-2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-float-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Threading the needle?</figcaption>
    </a>
    <div id="inline_float-2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-float-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="gizmos-and-the-preview-grid">Gizmos and the Preview Grid</h3><p>You&apos;ve been seeing a grid in the last few videos. That grid is not the same one from Alpha 5 - it&apos;s been re-implemented as something called a gizmo.</p><p>A gizmo is a rendered element that provides interactivity and/or feedback when working with 3D scenes. You may have seen these before:</p><figure class="kg-card kg-image-card"><img src="https://brickadia.com/blog/content/images/2024/03/unnamed.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="512" height="265"></figure><p>These are common gizmos you&apos;ll find in engines like Unity and Unreal, as well as modelling tools like Blender. And soon you&apos;ll find them in Brickadia. But more on that in another post.</p><p>Unreal&apos;s <a href="http://www.gradientspace.com/tutorials/2022/6/1/the-interactive-tools-framework-in-ue5">Interactive Tools Framework</a> provides an entire system for displaying arbitrary gizmos at runtime, and previously, Zeblote has done work that allows me to draw things in the engine&apos;s Editor compositing layer at runtime too. It only makes sense to make some use of it!</p><p>I started by creating a gizmo manager which we&apos;ll provide with some materials to draw gizmos with. You can register gizmos with it, and gizmos are allowed both to control actors, and do manual drawing with ITF&apos;s gizmo elements. Let&apos;s do some quick testing to make sure it can be configured to draw things on top of everything else:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_gizmo-february" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-gizmo-february.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>3d arrow gizmo in the world!</figcaption>
    </a>
    <div id="inline_gizmo-february" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-gizmo-february.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="dragging-brick-rows-old">Dragging Brick Rows (Old)</h3><p>Do you remember when I said that previewing brick placements was the second most complicated part of building? This is the <em>most </em>complicated part. We need to determine, with only a world start location and a camera angle as our inputs, which direction the player wants to drag their brick row - up, down, north, east, south, or west - and how long they want it to be. To recap:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-40.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-40.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-40.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-40.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-40.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Dragging a row of 6 bricks on the ground in Alpha 5.</span></figcaption></figure><p>In Alpha 5, we already had an algorithm to do so that worked roughly like the following steps: </p><p>1. We convert everything to local space relative to the position the row starts at. From there, imagine lines extending in the direction of the 3 axes. The crosshair can be converted to a ray from the camera origin into the world.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-5.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1222" height="1091" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-5.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-5.png 1000w, https://brickadia.com/blog/content/images/2024/03/image-5.png 1222w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Coordinate axis cross, with our camera ray going diagonally.</span></figcaption></figure><p>2. Now, we construct 3 axis aligned planes between each pair of axes, then intersect our ray with each of them. This gives us up to 3 intersection points.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-6.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1200" height="1054" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-6.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-6.png 1000w, https://brickadia.com/blog/content/images/2024/03/image-6.png 1200w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">The ray passes through 1, 2, or 3 planes, or 0 if you&apos;re looking away.</span></figcaption></figure><p>3. For each plane, we determine how close the intersection point is to the axes.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-7.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="764" height="752" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-7.png 600w, https://brickadia.com/blog/content/images/2024/03/image-7.png 764w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Two candidate distances from the first plane hit.</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-41.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1213" height="941" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-41.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-41.png 1000w, https://brickadia.com/blog/content/images/2024/03/image-41.png 1213w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Two more candidates from the second plane hit.</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-8.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1135" height="1101" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-8.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-8.png 1000w, https://brickadia.com/blog/content/images/2024/03/image-8.png 1135w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Two more candidates from the third plane hit.</span></figcaption></figure><p>4. From these, we select the intersection point that is closest to an axis overall. The nearest axis will then be used to drag along.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-9.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1637" height="961" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-9.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-9.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-9.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-9.png 1637w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">The hit closest to an axis was on the second plane, and then we select the axis.</span></figcaption></figure><p>5. From there, we simply have to snap the distance along the selected axis to the grid cell size and return the result.</p><p>This algorithm produced mostly sensible results in most cases, and worked well enough for the Alpha. However, there are many annoying edge cases that we could never figure out how to solve with this approach, such as:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_drag-mystery" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-drag-mystery.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Mysterious flip-flopping between the axes at certain angles.</figcaption>
    </a>
    <div id="inline_drag-mystery" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-drag-mystery.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_drag-mystery-2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-drag-mystery-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>The row sometimes ends up longer or shorter than you expect, or snaps.</figcaption>
    </a>
    <div id="inline_drag-mystery-2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-drag-mystery-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-42.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-42.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-42.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-42.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-42.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">But I wanted it to go left, not in my face...</span></figcaption></figure><h3 id="dragging-brick-rows-new">Dragging Brick Rows (New)</h3><p>The problem is this existing algorithm is not very good at the transitions between planes. It constantly annoyed us by randomly jumping around as it selected a different plane to be closer and produced unintuitive results. So after I pushed the first building changelist, Zeblote rewrote this function to select the closest axis to your cursor in screen space instead.</p><p>1. We start with the same axes and crosshair:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-43.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-43.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-43.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-43.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-43.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Visualizing the 3 axes leading from the drag starting position as yellow lines in the world.</span></figcaption></figure><p>2. We project those world-space lines to screen-space lines. This sounds trivial at first, since Unreal Engine already provides a <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/Kismet/UGameplayStatics/ProjectWorldToScreen">ProjectWorldToScreen</a> function. All we need to do is pick two points on the line (such as the origin and one unit away) and we&apos;ll have screen space points defining our line in 2D.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-44.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-44.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-44.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-44.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-44.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Screen space lines representing the axes overlaid in red.</span></figcaption></figure><p>However, there&apos;s a problem with that approach. In some cases, you might want to start dragging a row and then move or turn your camera far away, until the start point of the line is no longer on screen at all. This then breaks the projection.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-45.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-45.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-45.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-45.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-45.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">We can&apos;t project the origin point to screen.</span></figcaption></figure><p>So we need a more robust way to construct screen space lines. There is a simple solution in theory, we need to find two points on the axis that are actually on screen, but how can we do that reliably?</p><p>One way is to clip the line inside the view frustum, so we end up with a line segment that is entirely on screen. In the above image, this would effectively select the point at the bottom left corner and the point at the horizon.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-46.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-46.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-46.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-46.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-46.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Successfully projected the line segment inside the view frustum to screen space.</span></figcaption></figure><p>We can then extend the line segment again to make sure it reaches the edges.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-47.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-47.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-47.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-47.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-47.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Screen space line with off-screen origin constructed successfully.</span></figcaption></figure><p>3. We select the line that is closest to the cursor in screen space. This effectively divides the screen into up to 6 zones that will select one of the axes, but they&apos;re not necessarily the same size.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-48.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-48.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-48.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-48.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-48.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Pick the closest points to the crosshair on each axis, and see how far away they are.</span></figcaption></figure><p>4. There&apos;s an additional filter to reject axes that are very steep when multiple axes are near the crosshair at the same time. This fixes the issue of extending the row into your face when you are looking at the brick from a steep angle.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-49.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-49.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-49.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-49.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-49.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The steep axis got filtered out as there&apos;s a more likely intended one close enough to the crosshair.</span></figcaption></figure><p>5. Once we have our chosen point on the screen space line, we need to convert it back to a world space point so we can calculate how far along on the axis it actually is. We could attempt to do some linear algebra here, to figure out what distance along the screen space line equals what distance along the world space axis, but that seems annoying given the perspective view.</p><p>So we just use the existing <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/Kismet/UGameplayStatics/DeprojectScreenToWorld">DeprojectScreenToWorld</a> function in the engine to construct a ray from the camera origin going into the scene. By finding the closest point on the world space axis to this ray, we&apos;ve finally got the point we wanted. What an ordeal!</p><p>Also, there&apos;s one more edge case to take care of, if we&apos;re looking away from the axis (even though it is on screen), that trick won&apos;t work, because the ray will diverge from the axis. So we detect that special case and just drag a row to the maximum length along the chosen axis.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-50.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-50.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-50.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-50.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-50.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">The final special case for the screen space axis selection.</span></figcaption></figure><p>Once we picked an axis and world space point, we figure out the row length the same way as before, and we finally have row dragging working again. It&apos;s much more robust now, and the edge cases we had above no longer happen.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_row-drag-1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-row-drag-1.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Dragging a row.</figcaption>
    </a>
    <div id="inline_row-drag-1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-row-drag-1.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>It&apos;s trivial to add in spacing too.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_row-drag-2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-row-drag-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Dragging a row with spacing.</figcaption>
    </a>
    <div id="inline_row-drag-2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-row-drag-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>But we&apos;re not done yet - Let&apos;s take advantage of our gizmo system to display a line on top of everything showing the drag start point and both ends of the row. Near the active end, we&apos;ll display a row length in-world.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_row-drag-3" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-row-drag-3-v2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>The gizmo shows us how long the brick row is in bricks without having to count.</figcaption>
    </a>
    <div id="inline_row-drag-3" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-row-drag-3-v2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="resize-dragging">Resize-Dragging</h3><p>Resize dragging is a simple extension to row dragging, it mainly involved changes to the very last part of the row dragging math. Instead of resizing the brick in increments of the brick size, as if we were row dragging, we resize in increments of the alignment grid size, skipping increments that don&apos;t line up with valid dimensions for the brick type. That means we resize on our grid, like this:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_resize-drag-1" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-resize-drag-1.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Resize dragging from the 4x cube with a plate grid.</figcaption>
    </a>
    <div id="inline_resize-drag-1" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-resize-drag-1.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>We can still resize in increments of the brick size, if we change the grid size:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_resize-drag-2" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-resize-drag-2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Resize dragging from the 4x cube with a 4 stud grid size.</figcaption>
    </a>
    <div id="inline_resize-drag-2" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-resize-drag-2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>One note; we need a special case if the brick&apos;s starting size does not entirely fill the grid cells it&apos;s in. In this case, for the first increment we want to size it up <em>slightly less</em>, so we only resize up to the grid line:</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_resize-drag-3" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-resize-drag-3-v2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Resize dragging micro bricks, snapped to a plate grid.</figcaption>
    </a>
    <div id="inline_resize-drag-3" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-resize-drag-3-v2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<p>But what use is being able to resize only in one direction? Let&apos;s quickly add the support for switching axis with RMB. The row dragging math only needs a few more branches to filter out axes that we&apos;ve already locked in.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_resize-drag-4" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-resize-drag-4-v2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Resize dragging a brick in multiple dimensions.</figcaption>
    </a>
    <div id="inline_resize-drag-4" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-resize-drag-4-v2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_resize-drag-5" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-resize-drag-5-v2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Resize dragging micro-bricks in multiple dimensions.</figcaption>
    </a>
    <div id="inline_resize-drag-5" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-resize-drag-5-v2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Note how now, for plate-sized bricks, the row lengths are displayed in brick units. In addition, we&apos;ve improved the plate size format to display the brick and plate heights separately - 5+1f, not 16f.</div></div><p>We can easily allow this in row dragging mode too to create &quot;grids&quot; and &quot;volumes&quot; - 3d grids of the same brick with arbitrary spacing.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_resize-drag-6" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-resize-drag-6-v2.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Row dragging a lattice in multiple dimensions.</figcaption>
    </a>
    <div id="inline_resize-drag-6" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-resize-drag-6-v2.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="rotation-and-reorientation">Rotation and Reorientation</h3><p>It&apos;s easy to make tapping R rotate our brick clockwise, as before. But remember how we wanted to reorient bricks to the closest direction to the cursor? Well, that&apos;s exactly half of how row-dragging and resize-dragging already work.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/bricks_rendered-1.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="690" height="500" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/bricks_rendered-1.png 600w, https://brickadia.com/blog/content/images/2024/03/bricks_rendered-1.png 690w"><figcaption><span style="white-space: pre-wrap;">When reorienting, bricks should change their direction so that their studs point at the mouse.</span></figcaption></figure><p>We&apos;ll activate this new behavior if the player holds R for more than 200ms and moves the mouse, then finalize the orientation once they release it. While reorienting, we simply make the brick&apos;s up direction point towards where the mouse is.</p><p>And of course, we made a gizmo for this too.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_reorient" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-reorient.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>Reorienting a 4x Cube.</figcaption>
    </a>
    <div id="inline_reorient" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-reorient.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="tool-widgets">Tool Widgets</h3><p>Our HUD is looking quite bare with the new placer.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-33.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1926" height="1120" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-33.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-33.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-33.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-33.png 1926w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">An empty, boring HUD that tells us nothing.</span></figcaption></figure><p>The old one modified some text that was manually added to the A5 HUD - but that text has been removed from the EA one, depriving us of some important information the old placer, resizer and other tools were able to report by modifying it.</p><p>Actually, doesn&apos;t this case happen a lot? There are two other tools I can think of that put information on the screen - the Painter and the Resizer - and yet we manually modify the HUD to add their widgets every time, then just make the tool unhide them. Shouldn&apos;t we have a better system? We should, right?</p><p>Here&apos;s that better system: All tools can now add an arbitrary &quot;large&quot; tool widget to the bottom right corner of the screen, and a &quot;status&quot; tool widget to the area above the quickbar. For the placer, we&apos;ll use this to display more measurements onscreen.</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_inventory-saving" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-hud.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>A brand new HUD for the placer. I gave the text lots of space to expand while keeping it looking nice.</figcaption>
    </a>
    <div id="inline_inventory-saving" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-hud.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="tool-bind-hints">Tool Bind Hints</h3><p>The new system is working nicely, but it needs learnability! We&apos;re in need of a means to display our new controls to the user in a way we can dynamically update in real time, because we want to display all the controls the user can use <em>right now - </em>and hide ones that aren&apos;t relevant until they are.</p><p>First, we needed a nice way to show any input. This <a href="https://kenney.nl/assets/input-prompts">CC0 pack by Kenney</a> fit great into our new UI style, and they even <a href="https://twitter.com/KenneyNL/status/1770217303868633568">fixed a bug</a> we reported quickly. Can definitely recommend these for your project!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://brickadia.com/blog/content/images/2024/03/preview-keyboard-mouse.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="918" height="515" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/preview-keyboard-mouse.png 600w, https://brickadia.com/blog/content/images/2024/03/preview-keyboard-mouse.png 918w"></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/preview-xbox-series.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="918" height="515" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/preview-xbox-series.png 600w, https://brickadia.com/blog/content/images/2024/03/preview-xbox-series.png 918w"><figcaption><span style="white-space: pre-wrap;">Thank you, Kenney!</span></figcaption></figure><p>We then (manually, ugh) wrote a big table that would translate Unreal Engine FKeys to an icon texture reference from the Kenney pack, and a widget that given an Input Action or Input Axis name, displays the icon for the key bound to that action. Or sometimes multiple icons for chords like Ctrl+C.</p><p>Now that we had a way to display keys, we created a system called Tool Bind Hints. All tools are allowed to register them, and they look like this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-13.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="349" height="352"><figcaption><span style="white-space: pre-wrap;">Up close.</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-51.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1926" height="1120" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-51.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-51.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-51.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-51.png 1926w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Positioned on screen! This is the whole HUD as of now.</span></figcaption></figure><p>How it works is that all tools define a list of bind hints they display in any order they choose. For example, the placer defines this list:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/placerbindhints.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1000" height="1114" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/placerbindhints.png 600w, https://brickadia.com/blog/content/images/2024/03/placerbindhints.png 1000w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">The placer&apos;s list of bind hints.</span></figcaption></figure><p>Bind hints have tags, and the game chooses what bind hints to display by determining if they have any tags that are currently shown. For example, here&apos;s how the placer uses its tags:</p><ul><li><em>Previewing</em> is set while the placer is previewing a brick position.</li><li><em>Placing</em> is set while the placer is dragging a brick row.</li><li><em>SwitchAxis[123] </em>are used to show the various switch axis prompts (this might be upgraded to a better solution later, bear with me)</li><li><em>BuildingSpacing</em> is set if you&apos;re placing in a placement mode that allows the usage of spacing (so we hide the spacing hint in resize-drag mode)</li><li><em>FloatBuilding</em> is set if you&apos;re using floating building (to show the scroll prompt).</li><li><em>Reorienting</em> is set if you are reorienting the brick.</li></ul><p>And finally, here&apos;s a demo of its hint UI updating in real time as you place stuff!</p>
<!--kg-card-begin: html-->
<figure class="kg-card kg-image-card kg-width-wide">
    <a href="#inline_hint-update" data-lity>
    	<video class="lazy" muted autoplay loop preload="none">
    		<source data-src="https://static.brickadia.com/resources/devlog-6-hint-update.mp4" type="video/mp4">
			Sorry, your browser doesn&apos;t support embedded videos.
		</video>
    <figcaption>It&apos;s all coming together.</figcaption>
    </a>
    <div id="inline_hint-update" class="lity-hide">
        <video class="lazy" muted autoplay loop preload="none">
            <source data-src="https://static.brickadia.com/resources/devlog-6-hint-update.mp4" type="video/mp4">
            Sorry, your browser doesn&apos;t support embedded videos.
        </video>
    </div>
</figure>
<!--kg-card-end: html-->
<h3 id="selection-highlighting">Selection Highlighting</h3><p>One more thing, we added a system to highlight specific bricks and objects with selection outlines in various colors. For example, the Hammer now shows you which brick is going to be deleted with a red highlight:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://brickadia.com/blog/content/images/2024/03/image-39.png" class="kg-image" alt="Devlog #6 - Upgrading the Building System, Part 1" loading="lazy" width="1920" height="1080" srcset="https://brickadia.com/blog/content/images/size/w600/2024/03/image-39.png 600w, https://brickadia.com/blog/content/images/size/w1000/2024/03/image-39.png 1000w, https://brickadia.com/blog/content/images/size/w1600/2024/03/image-39.png 1600w, https://brickadia.com/blog/content/images/2024/03/image-39.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Selection outline for deletion preview.</span></figcaption></figure><p>Placing new bricks also uses a selection outline around the preview, except it&apos;s white. Did you notice it in the videos above?</p><h2 id="more-to-come">More to Come!</h2><p>That&apos;s all I have for you today, but there&apos;s more coming soon. We&apos;ll show the new modes for building physics contraptions. We&apos;ll look at the new locking modes, which will bring back the plane locking functionality you can get by holding ctrl, and then some. We&apos;ll also be getting into the new orbit mode for building on a controller or Steam Deck, and some new detached mode features.</p><p>I look forward to seeing you then. Stay tuned!</p>]]></content:encoded></item></channel></rss>