<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Godot Engine Official</title><link/><description/><atom:link href="https://godotengine.org/rss.xml" rel="self" type="application/rss+xml"/><item><title>Dev snapshot: Godot 4.8 dev 5</title><link>https://godotengine.org/article/dev-snapshot-godot-4-8-dev-5/</link><summary>A healthy stream of new features await!</summary><description>&lt;p>As we’re hoping to enter feature freeze later in the month, you can expect this to be one of the last development snapshot highlights of the 4.8 cycle. Relatedly, many of our contributors are currently hard at work to help get their features across the finish line in time, so the number of featured points this time might be slightly lighter than usual. That shouldn’t matter too much though, as quite a few of the new offerings are things that the community have been eagerly awaiting for &lt;em>years&lt;/em>.&lt;/p>
&lt;p>Please consider &lt;a href="#support">supporting the project financially&lt;/a>, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.&lt;/p>
&lt;p>&lt;a href="#downloads">Jump to the &lt;strong>Downloads&lt;/strong> section&lt;/a>, and give it a spin right now, or continue reading to learn more about improvements in this release. You can also try the &lt;a href="https://editor.godotengine.org/releases/4.8.dev5/">&lt;strong>Web editor&lt;/strong>&lt;/a>, the &lt;a href="https://www.meta.com/s/3yJ7i8kop">&lt;strong>XR editor&lt;/strong>&lt;/a>, or the &lt;a href="https://play.google.com/store/apps/details?id=org.godotengine.editor.v4">&lt;strong>Android editor&lt;/strong>&lt;/a> for this release. If you are interested in the latter, please request to join &lt;a href="https://groups.google.com/g/godot-testers">our testing group&lt;/a> to get access to pre-release builds.&lt;/p>
&lt;hr />
&lt;p>&lt;em>The cover illustration is from&lt;/em> &lt;a href="https://store.steampowered.com/app/4721090/ScagJPT/?curator_clanid=41324400">&lt;strong>ScagJPT&lt;/strong>&lt;/a>, &lt;em>a desktop simulation game, where your new &lt;del>companion&lt;/del> best friend, Scag, is here for all your scagalicious needs. You can buy the game on &lt;a href="https://store.steampowered.com/app/4721090/ScagJPT/?curator_clanid=41324400">Steam&lt;/a>, and follow the developers on &lt;a href="https://bsky.app/profile/theaxolotlsun.bsky.social">Bluesky&lt;/a> and &lt;a href="https://discord.gg/WaZbnX49SY">Discord&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;p>In case you missed them, see the &lt;a href="/article/dev-snapshot-godot-4-8-dev-1/">4.8 dev 1&lt;/a>, &lt;a href="/article/dev-snapshot-godot-4-8-dev-2/">4.8 dev 2&lt;/a>, &lt;a href="/article/dev-snapshot-godot-4-8-dev-3/">4.8 dev 3&lt;/a>, and &lt;a href="/article/dev-snapshot-godot-4-8-dev-4/">4.8 dev 4&lt;/a> release notes for an overview of some key features which were already in those snapshots, and are therefore still available for testing in 4.8 dev 5.&lt;/p>
&lt;h2 id="rendering-mip-level-texture-streaming">Rendering: Mip-level texture streaming&lt;/h2>
&lt;p>In the context of an engine such as Godot, “texture streaming” refers to the ability to dynamically load and unload images based on a camera’s relative position. Such a system would allow games to handle significantly more visible textures at any given point in time, which is why such a feature was one of the community’s most desired. Unfortunately, like most highly-desired features, it’s much easier said than done, and the “best” implementation direction isn’t exactly set in stone.&lt;/p>
&lt;p>The approach that &lt;a href="https://github.com/tdaven">Trevor Davenport&lt;/a> took in &lt;a href="https://github.com/godotengine/godot/pull/113429">GH-113429&lt;/a> was mip-level texture streaming. That is: Godot now only loads the necessary &lt;a href="https://en.wikipedia.org/wiki/Mipmap">mipmap&lt;/a> of a texture, representing smaller or less detailed versions of the base texture when far away or otherwise obfuscated. This results in a &lt;em>significant&lt;/em> reduction of VRAM requirements for textures, particularly for 3D titles with large, open worlds.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="A short demo showcasing the new texture mip-level streaming">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-5/mip-level-streaming.webm" type="video/webm" />&lt;/video>
&lt;p>In order to leverage this new functionality, streaming must first be enabled in the project settings, necessitating an editor restart. You can make runtime changes via the &lt;code class="language-plaintext highlighter-rouge">TextureStreaming&lt;/code> singleton.&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-5/mip-level-streaming-settings.webp" alt="The location of the new project setting for texture streaming" />&lt;/p>
&lt;p>Once enabled, textures can be imported as streamed textures, utilizing the new texture import type: “Texture2D Streamed”. This new texture type comes equipped with overrides for minimum and maximum resolution for a given texture, so you can safely preserve crucial details on a case-by-case basis. The per-texture properties override the system settings; the default is to use the system settings.&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-5/mip-level-streaming-import.webp" alt="The new texture import type shown off in the Import dock" />&lt;/p>
&lt;h2 id="import-allow-preserving-alpha-test-coverage">Import: Allow preserving alpha test coverage&lt;/h2>
&lt;p>Speaking of mipmaps: an existing issue in the engine was actually &lt;em>caused&lt;/em> by their use, albeit indirectly. Certain material shaders, such as alpha scissor, would look pretty rough at long distances; this was a direct result of mipmap levels causing them to overfilter and dissolve away. While technical workarounds do exist, such as using a texture format with built-in alpha coverage like &lt;code class="language-plaintext highlighter-rouge">.dds&lt;/code>, it’s still too much of a technical hurdle for what should be straightforward.&lt;/p>
&lt;p>&lt;a href="https://github.com/Arnklit">Kasper Arnklit Frandsen&lt;/a> shared the above sentiment, leading him to create &lt;a href="https://github.com/godotengine/godot/pull/104289">GH-104289&lt;/a>. This allows any given texture to preserve their alpha data, even when falling back to their scaled-down equivalents.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="A demonstration of alpha test coverage toggled on and off">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-5/preserve-alpha-test.webm" type="video/webm" />&lt;/video>
&lt;h2 id="editor-clean-and-simplify-2d-toolbar">Editor: Clean and simplify 2D toolbar&lt;/h2>
&lt;p>&lt;a href="https://github.com/jaydensipe">Jayden Sipe&lt;/a> rounds out our highlights this time with &lt;a href="https://github.com/godotengine/godot/pull/121080">GH-121080&lt;/a>, bringing the editor’s 2D toolbar a well-earned makeover. Being the same mind behind the overhaul of our &lt;a href="/article/dev-snapshot-godot-4-8-dev-1/#editor-docked-game-view-by-default-simplify-toolbar">game view toolbar&lt;/a>, these changes increase parity between the docks with a consistent vision and design philosophy. Once again, an emphasis on usability and clarity was absolutely crucial.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Before&lt;/th>
&lt;th>After&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;video autoplay="" loop="" muted="" playsinline="" title="A short snippet of the old 2D toolbar">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-5/2d-toolbar-old.webm" type="video/webm" />&lt;/video>&lt;/td>
&lt;td>&lt;video autoplay="" loop="" muted="" playsinline="" title="A short snippet of the new 2D toolbar">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-5/2d-toolbar-new.webm" type="video/webm" />&lt;/video>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="and-more">And more!&lt;/h3>
&lt;p>There are too many exciting changes to list them all here, but here’s a curated selection:&lt;/p>
&lt;ul>
&lt;li>2D: Add Information and Frame Time panels to the 2D editor (&lt;a href="https://github.com/godotengine/godot/pull/122848">GH-122848&lt;/a>).&lt;/li>
&lt;li>Animation: Rename &lt;code class="language-plaintext highlighter-rouge">BoneSpreader3D&lt;/code> to &lt;code class="language-plaintext highlighter-rouge">BoneSpaceAdjuster3D&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/122888">GH-122888&lt;/a>).&lt;/li>
&lt;li>Buildsystem: Allow disabling &lt;code class="language-plaintext highlighter-rouge">RenderingDevice&lt;/code> and/or its renderers while compiling (&lt;a href="https://github.com/godotengine/godot/pull/103100">GH-103100&lt;/a>).&lt;/li>
&lt;li>Core: Add support for metadata in text scenes (&lt;a href="https://github.com/godotengine/godot/pull/121920">GH-121920&lt;/a>).&lt;/li>
&lt;li>Core: Simplify &lt;code class="language-plaintext highlighter-rouge">GDType&lt;/code> by storing all properties in a single unified map. Save ~12mb runtime RAM (&lt;a href="https://github.com/godotengine/godot/pull/122751">GH-122751&lt;/a>).&lt;/li>
&lt;li>Editor: Make main screen dock colors more readable (&lt;a href="https://github.com/godotengine/godot/pull/122903">GH-122903&lt;/a>).&lt;/li>
&lt;li>GUI: Add &lt;code class="language-plaintext highlighter-rouge">format&lt;/code> property to SpinBox and deprecate &lt;code class="language-plaintext highlighter-rouge">prefix&lt;/code>/&lt;code class="language-plaintext highlighter-rouge">suffix&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/103998">GH-103998&lt;/a>).&lt;/li>
&lt;li>GUI: Add new default algorithm of automatic focus strategy for &lt;code class="language-plaintext highlighter-rouge">Control&lt;/code> nodes (&lt;a href="https://github.com/godotengine/godot/pull/120631">GH-120631&lt;/a>).&lt;/li>
&lt;li>Input: Add &lt;code class="language-plaintext highlighter-rouge">Input.get_device_orientation()&lt;/code> returning hardware-fused quaternion (&lt;a href="https://github.com/godotengine/godot/pull/119142">GH-119142&lt;/a>).&lt;/li>
&lt;li>Platforms: Implement Feral GameMode integration on Linux (&lt;a href="https://github.com/godotengine/godot/pull/117938">GH-117938&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>78 contributors&lt;/strong> submitted &lt;strong>183 fixes&lt;/strong> for this release. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.8-dev5">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since &lt;a href="/article/dev-snapshot-godot-4-8-dev-4/">4.8 dev 4&lt;/a>. You can also review &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.8">all changes included in 4.8&lt;/a> compared to the previous &lt;a href="/releases/4.7/">4.7 feature release&lt;/a>.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/9552dfb6859a1aaba1e570b8e0ef5c599b830f19">&lt;code class="language-plaintext highlighter-rouge">9552dfb68&lt;/code>&lt;/a>.&lt;/p>
&lt;h2 id="downloads">Downloads&lt;/h2>
&lt;div class="card card-download">
&lt;a class="card-download-link" href="/download/archive/4.8-dev5">
Download Godot 4.8 dev5
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/dev-snapshot-godot-4-8-dev-5.jpg" />
&lt;div class="card-download-platforms">
&lt;div class="download-platform platform-linux">
&lt;img width="24" height="24" src="/assets/images/platforms/linux.svg" title="Linux" alt="Linux" class="lightbox-ignore" />
Linux
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev5&amp;amp;slug=linux.x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev5&amp;amp;slug=mono_linux_x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-linux">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-macos">
&lt;img width="24" height="24" src="/assets/images/platforms/macos.svg" title="macOS" alt="macOS" class="lightbox-ignore" />
macOS
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev5&amp;amp;slug=macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev5&amp;amp;slug=mono_macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary btn-download-primary--mono platform-macos">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-windows">
&lt;img width="24" height="24" src="/assets/images/platforms/windows.svg" title="Windows" alt="Windows" class="lightbox-ignore" />
Windows
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev5&amp;amp;slug=win64.exe.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev5&amp;amp;slug=mono_win64.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-windows">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;div class="card-download-sublinks">
&lt;a class="card-download-other" href="/download/archive/4.8-dev5">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="https://fund.godotengine.org/">
Make a Donation
&lt;/a>
&lt;/div>
&lt;/div>
&lt;style>
.thankyou-wrapper {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.85);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 10;
}
.thankyou {
background: var(--base-color);
box-shadow: var(--more-shadow);
padding: 30px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
position: relative;
border-radius: 13px;
}
.thankyou-reading {
font-size: 16px;
}
.thankyou-reading-list {
font-size: 16px;
margin: 0;
margin-left: 48px;
padding-left: 0;
}
.thankyou-donate {
margin-bottom: 24px;
text-align: center;
}
.btn.btn-donate {
background-color: var(--primary-color);
color: hsla(0, 0%, 100%, 0.9);
font-size: 22px;
font-weight: 600;
margin-bottom: 26px;
}
.thankyou h2 {
text-shadow: var(--base-shadow);
font-size: 36px;
font-weight: 800;
margin-bottom: 12px;
}
.thankyou h2 .anchored-link {
/* Hiding the anchored text automatically added on blogposts */
display: none !important;
}
.thankyou p {
max-width: 620px;
font-size: 25px;
}
@media (max-width: 768px) {
.thankyou-wrapper {
display: block;
}
.thankyou {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: scroll;
padding: 30px 40px 18px 40px;
}
.thankyou-reading-list {
margin-left: 24px;
}
.btn-close-thankyou-popup {
width: 48px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
}
}
.btn-close-thankyou-popup {
cursor: pointer;
position: absolute;
top: 12px;
right: 12px;
}
.btn-close-thankyou-popup img {
background: transparent !important; /* for overwriting the style in the blogposts img */
}
@media (prefers-color-scheme: light) {
.btn-close-thankyou-popup img {
filter: invert(1);
opacity: 0.75;
}
}
&lt;/style>
&lt;script>
document.addEventListener('DOMContentLoaded', () => {
const thankYouWrapper = document.getElementById('thank-you');
// Close itself, when clicked outside of the popup area.
thankYouWrapper.addEventListener('click', (e) => {
if (e.target === thankYouWrapper) {
thankYouWrapper.style.display = 'none';
}
});
// Close with a close button.
const thankYouBackButton = document.querySelector('.btn-close-thankyou-popup');
thankYouBackButton.addEventListener('click', () => {
thankYouWrapper.style.display = 'none';
});
// Open from the main download buttons.
const downloadButtons = document.querySelectorAll('.btn-download, .download-button');
downloadButtons.forEach((it) => {
if (it.dataset?.external === "yes") {
return;
}
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
document.querySelector('.btn.btn-donate').focus();
});
});
// Open from the all downloads list.
const downloadLinks = document.querySelectorAll('.download-link');
downloadLinks.forEach((it) => {
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
});
});
// Close the dialog when the user presses the escape key.
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
thankYouWrapper.style.display = 'none';
}
});
});
&lt;/script>
&lt;div class="thankyou-wrapper" id="thank-you" style="display: none;">
&lt;div class="thankyou">
&lt;h2>Godot is downloading...&lt;/h2>
&lt;p class="thankyou-donate">
Godot exists thanks to donations from people like you. Help us continue our work:
&lt;/p>
&lt;a href="https://fund.godotengine.org" class="btn btn-donate">
Make a Donation
&lt;/a>
&lt;div class="btn-close-thankyou-popup">
&lt;img src="/assets/icons/cross.svg" width="24" height="24" alt="Close this popup" class="lightbox-ignore" />
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>&lt;strong>Standard build&lt;/strong> includes support for GDScript and GDExtension.&lt;/p>
&lt;p>&lt;strong>.NET build&lt;/strong> (marked as &lt;code class="language-plaintext highlighter-rouge">mono&lt;/code>) includes support for C#, as well as GDScript and GDExtension.&lt;/p>
&lt;div class="card card-warning">
&lt;p>
While engine maintainers try their best to ensure that each preview snapshot and release candidate is stable, this is by definition &lt;strong>a pre-release piece of software&lt;/strong>. Be sure to make frequent backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.
&lt;/p>
&lt;/div>
&lt;h2 id="known-issues">Known issues&lt;/h2>
&lt;p>With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of &lt;a href="https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug">known bugs&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>There are currently no known issues introduced by this release.&lt;/li>
&lt;/ul>
&lt;h2 id="bug-reports">Bug reports&lt;/h2>
&lt;p>As a tester, we encourage you to &lt;a href="https://github.com/godotengine/godot/issues">open bug reports&lt;/a> if you experience issues with this release. Please check the &lt;a href="https://github.com/godotengine/godot/issues">existing issues on GitHub&lt;/a> first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.&lt;/p>
&lt;p>In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).&lt;/p>
&lt;h2 id="support">Support&lt;/h2>
&lt;p>Godot is a non-profit, open-source game engine developed by hundreds of contributors in their free time, as well as a handful of part and full-time developers hired thanks to &lt;a href="https://fund.godotengine.org/">generous donations from the Godot community&lt;/a>. A big thank you to everyone who has contributed &lt;a href="https://github.com/godotengine/godot/blob/master/AUTHORS.md">their time&lt;/a> or &lt;a href="https://github.com/godotengine/godot/blob/master/DONORS.md">their financial support&lt;/a> to the project!&lt;/p>
&lt;p>If you’d like to support the project financially and help us secure our future hires, you can do so using the &lt;a href="https://fund.godotengine.org/">Godot Development Fund&lt;/a> platform managed by the &lt;a href="https://godot.foundation/">Godot Foundation&lt;/a>. There are also several &lt;a href="/donate">alternative ways to donate&lt;/a> which you may find more suitable.&lt;/p>
&lt;p>&lt;a class="btn" href="https://fund.godotengine.org/">Donate now&lt;/a>&lt;/p></description><category>Pre-release</category><guid>https://godotengine.org/article/dev-snapshot-godot-4-8-dev-5/</guid><dc:creator>Thaddeus Crews</dc:creator><pubDate>Thu, 10 Sep 2026 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/dev-snapshot-godot-4-8-dev-5.jpg</image></item><item><title>Dev snapshot: Godot 4.8 dev 4</title><link>https://godotengine.org/article/dev-snapshot-godot-4-8-dev-4/</link><summary>4.8 development is now in full force!</summary><description>&lt;p>Those of you who follow our development blogposts closely might’ve noticed that the past few snapshots have been a little on the light side. This isn’t to say that there was a lack of features on display nor that we’re dissatisfied with what we’ve been able to share so far, but it was enough that some users were under the impression that Godot 4.8 was going to mainly be focused on stability and bugfixes compared to past releases. While that wouldn’t be inherently bad, it couldn’t be further from the truth. On the contrary, this development snapshot was easily the hardest to narrow down what features to highlight out of every blog post I’ve written since joining the foundation, because there’s &lt;strong>so much&lt;/strong> to share. Buckle up, we’ve got a &lt;em>lot&lt;/em> of ground to cover.&lt;/p>
&lt;p>Please consider &lt;a href="#support">supporting the project financially&lt;/a>, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.&lt;/p>
&lt;p>&lt;a href="#downloads">Jump to the &lt;strong>Downloads&lt;/strong> section&lt;/a>, and give it a spin right now, or continue reading to learn more about improvements in this release. You can also try the &lt;a href="https://editor.godotengine.org/releases/4.8.dev4/">&lt;strong>Web editor&lt;/strong>&lt;/a>, the &lt;a href="https://www.meta.com/s/3yJ7i8kop">&lt;strong>XR editor&lt;/strong>&lt;/a>, or the &lt;a href="https://play.google.com/store/apps/details?id=org.godotengine.editor.v4">&lt;strong>Android editor&lt;/strong>&lt;/a> for this release. If you are interested in the latter, please request to join &lt;a href="https://groups.google.com/g/godot-testers">our testing group&lt;/a> to get access to pre-release builds.&lt;/p>
&lt;hr />
&lt;p>&lt;em>The cover illustration is from&lt;/em> &lt;a href="https://store.steampowered.com/app/3817250/CICADAMATA/?curator_clanid=41324400">&lt;strong>CICADAMATA”&lt;/strong>&lt;/a>, &lt;em>a fast-paced first person platformer, where you shoot and speedrun your way through the CASCADE while unraveling what you have become. You can buy the game on &lt;a href="https://store.steampowered.com/app/3817250/CICADAMATA/?curator_clanid=41324400">Steam&lt;/a>, and follow the developers on &lt;a href="https://www.youtube.com/@flwrgrdn/">YouTube&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;p>In case you missed them, see the &lt;a href="/article/dev-snapshot-godot-4-8-dev-1/">4.8 dev 1&lt;/a>, &lt;a href="/article/dev-snapshot-godot-4-8-dev-2/">4.8 dev 2&lt;/a>, and &lt;a href="/article/dev-snapshot-godot-4-8-dev-3/">4.8 dev 3&lt;/a> release notes for an overview of some key features which were already in those snapshots, and are therefore still available for testing in 4.8 dev 4.&lt;/p>
&lt;h3 id="vfx-trail3d">VFX: &lt;code class="language-plaintext highlighter-rouge">Trail3D&lt;/code>&lt;/h3>
&lt;p>If you know anything about trails in 3D design, you know that they’re absurdly complicated to get right, requiring an innate understanding of linear algebra and geometry as an absolute minimum. This is why a 3D trail node remained one of our most highly-requested features for years; a means of bridging this knowledge gap for designers, allowing them to achieve the desired effects in an accessible manner. Some developers have taken a stab at their own implementations, such as &lt;a href="https://github.com/MajorMcDoom">Zi Ye&lt;/a> as part of his &lt;a href="https://codeberg.org/MajorMcDoom/cozy-cube-godot-addons">Cozy Cube Godot Addons&lt;/a>, but many desired a native solution that could be leveraged out-of-the-box.&lt;/p>
&lt;p>Enter &lt;a href="https://github.com/QbieShay">QbieShay&lt;/a>. By building on top of the wonderful foundation provided by Zi, she managed an official integration of &lt;code class="language-plaintext highlighter-rouge">Trail3D&lt;/code> with &lt;a href="https://github.com/godotengine/godot/pull/117107">GH-117107&lt;/a>. Those seeking stunning visual effects through trails will no longer need deep knowledge of how meshes are drawn, UVs are assigned, or anything of the sort; everything Just Works™.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="A panning showcase of the new `Trail3D` class in the form of the Godot Logo">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-4/trail-3d-godot-logo.webm" type="video/webm" />&lt;/video>
&lt;div class="card card-warning" style="margin-top: 1em;">
&lt;p>Despite also introducing &lt;code class="language-plaintext highlighter-rouge">Line3D&lt;/code>, that class is unimplemented at this time. Beyond enum declarations, direct use of &lt;code class="language-plaintext highlighter-rouge">Line3D&lt;/code> cannot be achieved.&lt;/p>
&lt;/div>
&lt;h3 id="shaders-visualshader-node-groups">Shaders: VisualShader node groups&lt;/h3>
&lt;p>While we’re quite happy with the current state of our visual shader, some pain points have always remained. This is especially true for more complex implementations, as the scope of the graphs could become quite unweildy over time. It’s no surprise then, that one of the most common requests for the visual shader was a way to reduce or remove the bloat and redundancy that comes from these complex files.&lt;/p>
&lt;p>&lt;a href="https://github.com/Geometror">Hendrik Brucker&lt;/a> delivered a solution in &lt;a href="https://github.com/godotengine/godot/pull/99404">GH-99404&lt;/a>, gracing the visual shader with the versatility and ubiquity of &lt;strong>node groups&lt;/strong>. By leveraging node groups, users can now efficiently encapsulate frequently-used sections of a shader and reuse them across the graph with zero friction. What was once a chaotic mess of boilerplate and difficult-to-parse information is now neatly bundled with dedicated node groups:&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/visual-shader-groups-subgraphs.webp" alt="A simple example of the new VisualShader node groups in action" />&lt;/p>
&lt;h3 id="editor-convert-main-screen-plugins-into-docks">Editor: Convert main screen plugins into docks&lt;/h3>
&lt;p>Ever since the introduction of the &lt;a href="https://docs.godotengine.org/en/stable/classes/class_editordock.html">&lt;code class="language-plaintext highlighter-rouge">EditorDock&lt;/code>&lt;/a> in Godot 4.6, &lt;a href="https://github.com/KoBeWi">Tomasz Chabora&lt;/a> has been on a journey to migrate our existing editor plugins to this new system. The most ambitious migration yet occurred earlier this week with &lt;a href="https://github.com/godotengine/godot/pull/113051">GH-113051&lt;/a>, which converts the &lt;em>main screen itself&lt;/em> into a dock. This is a very fundamental change to how the editor is handled, but the benefits that are immediately available are more than worth it.&lt;/p>
&lt;p>As a result of these changes:&lt;/p>
&lt;ul>
&lt;li>The main screen editors aren’t tied to specific plugins anymore, instead being regular &lt;code class="language-plaintext highlighter-rouge">EditorDock&lt;/code>s.&lt;/li>
&lt;li>Main screen docks have their own editor setting for tab style.&lt;/li>
&lt;li>All main screens can be closed.&lt;/li>
&lt;li>All main screens can float.
&lt;ul>
&lt;li>The only exception is Game, as custom behavior is currently tightly integrated with &lt;code class="language-plaintext highlighter-rouge">WindowWrapper&lt;/code>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;video autoplay="" loop="" muted="" playsinline="" title="An extended showcase of several features described above, only possible with the new dock system">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-4/main-screen-plugins-to-docks.webm" type="video/webm" />&lt;/video>
&lt;div class="card card-info" style="margin-top: 1em;">
&lt;p>The old main screen plugin workflow is still supported, but deprecated. Compatibility might be broken in some edge cases, so exercise caution.&lt;/p>
&lt;/div>
&lt;h3 id="editor-script-method-outline-to-tree">Editor: Script method outline to &lt;code class="language-plaintext highlighter-rouge">Tree&lt;/code>&lt;/h3>
&lt;p>While most IDEs and other editor tools provide a method/section outline for their scripts/documentation in the form of a tree, our editor has presented them in the form of a list for the longest time. Starting with &lt;a href="https://github.com/godotengine/godot/pull/121534">GH-121534&lt;/a>, thanks to the work of &lt;a href="https://github.com/YeldhamDev">Michael Alexsander&lt;/a>, we were able to make the transition to a tree-like syntax thanks to… well, &lt;code class="language-plaintext highlighter-rouge">Tree&lt;/code>.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Before&lt;/th>
&lt;th>After&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/script-method-outline-old.webp" alt="A small sample of the previous script method outline" />&lt;/td>
&lt;td>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/script-method-outline-new.webp" alt="A small sample of the current script method outline" />&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Also the current selection is no longer forgotten when saving your project. Whoops!&lt;/p>
&lt;h3 id="gui-resize-font-to-fit-option-for-label-and-richtextlabel">GUI: Resize font to fit option for &lt;code class="language-plaintext highlighter-rouge">Label&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">RichTextLabel&lt;/code>&lt;/h3>
&lt;p>Every developer knows the struggle of text container constraints all too well. No matter how reasonable you think your font scale is, or what kind of variable text you believe &lt;em>can&lt;/em> make it in, a translation string or player input &lt;em>will&lt;/em> inevitably break those bounds. Even if you actively and thoroughly filter all input length at all times, that’s still a lot of code upkeep and boilerplating across different areas of your project to achieve the desired effect.&lt;/p>
&lt;p>&lt;a href="https://github.com/ismailivanov">Ismail Ivanov&lt;/a> is one of many who felt this struggle, and decided to do something about it. &lt;a href="https://github.com/godotengine/godot/pull/116791">GH-116791&lt;/a> wakes &lt;code class="language-plaintext highlighter-rouge">Label&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">RichTextLabel&lt;/code> from this nightmare in the form of three new properties: &lt;code class="language-plaintext highlighter-rouge">auto_font_size&lt;/code>, &lt;code class="language-plaintext highlighter-rouge">min_font_size&lt;/code>, and &lt;code class="language-plaintext highlighter-rouge">max_font_size&lt;/code>.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="A showcase of various text and font configurations automatically scaling to the specified automatic bounds">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-4/resize-font-to-fit.webm" type="video/webm" />&lt;/video>
&lt;h3 id="rendering-multi-bounce-ambient-occlusion-approximation">Rendering: Multi-bounce ambient occlusion approximation&lt;/h3>
&lt;p>Rendering has already received quite a lot of love in the 4.8 development cycle, which is why it’s all the more impressive that there’s &lt;em>so much&lt;/em> to showcase in this snapshot alone! &lt;a href="https://github.com/KenzieMac130">KenzieMac130&lt;/a> starts out strong with an incredibly impressive first-time contribution in &lt;a href="https://github.com/godotengine/godot/pull/115426">GH-115426&lt;/a>, which introduces multi-bounce ambient occlusion approximation. Previously, ambient occlusion in Godot failed to account for interreflections, meaning scenes were over-darkened in practice. Moving forward, we’ll be able to leverage a low-cost approximation of these interreflections, providing a more vibrant and accurate representation of what a given surface “should” look like.&lt;/p>
&lt;p>As cited in the PR, this implementation is based upon a method from &lt;a href="https://research.activision.com/publications/archives/practical-real-time-strategies-for-accurate-indirect-occlusion">this 2016 Siggraph presentation&lt;/a>, the technique of which has been adoped as industry-standard across multiple other engines. Those seeking a more technical breakdown are strongly encouraged to view the presentation itself!&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Disabled&lt;/th>
&lt;th>Enabled&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/multi-bounce-ao-off.webp" alt="A showcase of a scene with multi-bounce ambient occlusion approximation disabled" />&lt;/td>
&lt;td>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/multi-bounce-ao-on.webp" alt="A showcase of a scene with multi-bounce ambient occlusion approximation enabled" />&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="rendering-directional-lightmap-specular-light">Rendering: Directional lightmap specular light&lt;/h3>
&lt;p>Much like the previous point, &lt;a href="https://github.com/jcostello">Juan Manuel&lt;/a> builds upon an existing foundation—this time by longtime member &lt;a href="https://github.com/Calinou">Hugo Locurcio&lt;/a>—in order to introduce directional lightmap specular light to the engine with &lt;a href="https://github.com/godotengine/godot/pull/109737">GH-109737&lt;/a>. This addresses an existing issue with the way baked directional light set as static interacted with the LightmapGI set to directional, as this combination failed to bake any specular information. Thanks to the aforementioned PR, any directional specular information can not only be baked into the LightmapGI, but will produce results comparable to realtime directional light!&lt;/p>
&lt;p>Those who want more a more technical breakdown on the subject are encouraged to watch &lt;a href="https://youtu.be/AribqDLdIwo?si=84jeECuNTlML7uF9&amp;amp;t=1212">this 2018 GDC presentation&lt;/a>. For practical examples, we welcome you to enjoy this small sample of comparisons pulled from the PR:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Disabled&lt;/th>
&lt;th>Enabled&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/directional-specular-light-1-off.webp" alt="The first showcase of a scene directional lightmap specular light disabled" />&lt;/td>
&lt;td>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/directional-specular-light-1-on.webp" alt="The first showcase of a scene directional lightmap specular light enabled" />&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/directional-specular-light-2-off.webp" alt="The second showcase of a scene directional lightmap specular light disabled" />&lt;/td>
&lt;td>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/directional-specular-light-2-on.webp" alt="The second showcase of a scene directional lightmap specular light enabled" />&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/directional-specular-light-3-off.webp" alt="The third showcase of a scene directional lightmap specular light disabled" />&lt;/td>
&lt;td>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/directional-specular-light-3-on.webp" alt="The third showcase of a scene directional lightmap specular light enabled" />&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="rendering-decal-support-for-the-compatibility-renderer">Rendering: Decal support for the compatibility renderer&lt;/h3>
&lt;p>While not a “new” rendering feature per-se, this might as well be for those stuck on the compatibility renderer. While several features are excluded from this renderer by design—the intent is maximal support and performance after all—that doesn’t mean that an effort isn’t being made to bring existing features over. The only caveat is that the features in question must be suited to the aforementioned scope, such that performance won’t be degraded to any significant degree, nor should the feature itself be compromised to a point that it might as well not have been brought over in the first place.&lt;/p>
&lt;p>&lt;a href="https://github.com/BastiaanOlij">Bastiaan Olij&lt;/a> is no stranger to this song-and-dance, so it’s no surprise that he’s behind &lt;a href="https://github.com/godotengine/godot/pull/118070">GH-118070&lt;/a>, which brings one such feature to the compatibility renderer: decals! Based upon the approach taken by our mobile renderer and further adjusted for OpenGL, decals are brought over largely unscathed for users of all renderer types to enjoy. The only caveats of note for the compatibility renderer are as follows:&lt;/p>
&lt;ul>
&lt;li>The maximum number of decals for a given frame is dependant on the hardware’s buffer limits. This is soft-capped to 64 by default in the project settings, but can be further increased depending on the capabilities of your targeted platform.&lt;/li>
&lt;li>A given surface can only have a maximum of 8 decals. This is a hard-coded limit.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/compatibility-renderer-decal.webp" alt="The compatibility renderer showcasing decal functionality" />&lt;/p>
&lt;h3 id="export-automate-android--java-sdk-setup">Export: Automate Android &amp;amp; Java SDK setup&lt;/h3>
&lt;p>While Godot supports exporting projects to Android, we sympathize with those developers who’ve struggled with the busywork that comes with it. That is: handling the SDK setup for Android and Java beforehand. Nobody is more familiar with this workflow than &lt;a href="https://github.com/m4gr3d">Fredia Huya-Kouadio&lt;/a>, which is why he took to streamlining the entire process in &lt;a href="https://github.com/godotengine/godot/pull/121849">GH-121849&lt;/a>. Starting now, users will be able to leverage the new &lt;code class="language-plaintext highlighter-rouge">AndroidSDKManager&lt;/code> class, which automates the entirety of this process. Now, at the click of a button, the editor will take care of downloading, setting up, and managing the Android and Java SDKs automatically!&lt;/p>
&lt;p>This can be achieved in one of two ways. The first is within the &lt;code class="language-plaintext highlighter-rouge">Export Presets&lt;/code> windows when an Android preset is added. If the editor detects that the current Android/Java SDK is invalid or missing, you’re now prompted with the ability to set those up then and there.&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/automate-android-java-sdk-export.webp" alt="A showcase of accessing the AndroidSDKManager through Export Presets" />&lt;/p>
&lt;p>The second method is a reworked &lt;code class="language-plaintext highlighter-rouge">Install Android Build Template...&lt;/code> from the Project menu, now renamed to &lt;code class="language-plaintext highlighter-rouge">Setup Android Build...&lt;/code>. The updated button triggers the prompt for installing the Android/Java SDK when it detects they are not properly set up.&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-4/automate-android-java-sdk-project.webp" alt="A showcase of accessing the AndroidSDKManager through the Project menu" />&lt;/p>
&lt;h3 id="and-more">And more!&lt;/h3>
&lt;p>There are too many exciting changes to list them all here, but here’s a curated selection:&lt;/p>
&lt;ul>
&lt;li>2D: Improve editing of 2D polygons (&lt;a href="https://github.com/godotengine/godot/pull/98417">GH-98417&lt;/a>).&lt;/li>
&lt;li>Animation: Add &lt;code class="language-plaintext highlighter-rouge">BoneSpreader3D&lt;/code> &amp;amp; &lt;code class="language-plaintext highlighter-rouge">skin_scale&lt;/code> property to Bone in Skeleton3D (&lt;a href="https://github.com/godotengine/godot/pull/120609">GH-120609&lt;/a>).&lt;/li>
&lt;li>Animation: Add AnimationNodeObservers for signaling animation events (&lt;a href="https://github.com/godotengine/godot/pull/118789">GH-118789&lt;/a>).&lt;/li>
&lt;li>Audio: Allow CoreAudio to sleep and avoid busy work when idling (&lt;a href="https://github.com/godotengine/godot/pull/117162">GH-117162&lt;/a>).&lt;/li>
&lt;li>Buildsystem: Fix building Android Editor with separate arches (&lt;a href="https://github.com/godotengine/godot/pull/122186">GH-122186&lt;/a>).&lt;/li>
&lt;li>Buildsystem: Update Emscripten to 6.0.1 (&lt;a href="https://github.com/godotengine/godot/pull/122412">GH-122412&lt;/a>).&lt;/li>
&lt;li>Core: Move property maps from &lt;code class="language-plaintext highlighter-rouge">ClassDB&lt;/code> to &lt;code class="language-plaintext highlighter-rouge">GDType&lt;/code>. Accelerate &lt;code class="language-plaintext highlighter-rouge">Object&lt;/code> property access 1.6x (&lt;a href="https://github.com/godotengine/godot/pull/122596">GH-122596&lt;/a>).&lt;/li>
&lt;li>Editor: Add replace preview to Find in Files (&lt;a href="https://github.com/godotengine/godot/pull/122659">GH-122659&lt;/a>).&lt;/li>
&lt;li>Editor: Add toggle button for texture preview metadata overlay (&lt;a href="https://github.com/godotengine/godot/pull/117216">GH-117216&lt;/a>).&lt;/li>
&lt;li>Editor: Clean and simplify &lt;code class="language-plaintext highlighter-rouge">Inspector&lt;/code> header (&lt;a href="https://github.com/godotengine/godot/pull/117499">GH-117499&lt;/a>).&lt;/li>
&lt;li>Editor: List monitor resolutions and refresh rates in editor Copy System Info (&lt;a href="https://github.com/godotengine/godot/pull/122809">GH-122809&lt;/a>).&lt;/li>
&lt;li>Export: Editor: Add visionOS templates to download manager (&lt;a href="https://github.com/godotengine/godot/pull/122559">GH-122559&lt;/a>).&lt;/li>
&lt;li>GDScript: Disallow strings as comments (&lt;a href="https://github.com/godotengine/godot/pull/121833">GH-121833&lt;/a>).&lt;/li>
&lt;li>Input: Add support for gamepad gyro auto-calibration (&lt;a href="https://github.com/godotengine/godot/pull/121487">GH-121487&lt;/a>).&lt;/li>
&lt;li>Platforms: Android: Expand Portrait Mode support and fix related issues (&lt;a href="https://github.com/godotengine/godot/pull/121892">GH-121892&lt;/a>).&lt;/li>
&lt;li>Platforms: Replace WinRT/C++ dependency with custom COM+ code (&lt;a href="https://github.com/godotengine/godot/pull/121633">GH-121633&lt;/a>).&lt;/li>
&lt;li>Platforms: Windows: Implement support for desktop toast notifications (no WinRT/C++) (&lt;a href="https://github.com/godotengine/godot/pull/121711">GH-121711&lt;/a>).&lt;/li>
&lt;li>XR: visionOS: Add support for hand tracking and PSVR2 controllers on Apple Vision Pro (&lt;a href="https://github.com/godotengine/godot/pull/122567">GH-122567&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>86 contributors&lt;/strong> submitted &lt;strong>224 fixes&lt;/strong> for this release. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.8-dev4">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since &lt;a href="/article/dev-snapshot-godot-4-8-dev-3/">4.8 dev 3&lt;/a>. You can also review &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.8">all changes included in 4.8&lt;/a> compared to the previous &lt;a href="/releases/4.7/">4.7 feature release&lt;/a>.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/b56a91878e7c94977e4af978968e41d0670c0a8b">&lt;code class="language-plaintext highlighter-rouge">b56a91878&lt;/code>&lt;/a>.&lt;/p>
&lt;h2 id="downloads">Downloads&lt;/h2>
&lt;div class="card card-download">
&lt;a class="card-download-link" href="/download/archive/4.8-dev4">
Download Godot 4.8 dev4
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/dev-snapshot-godot-4-8-dev-4.jpg" />
&lt;div class="card-download-platforms">
&lt;div class="download-platform platform-linux">
&lt;img width="24" height="24" src="/assets/images/platforms/linux.svg" title="Linux" alt="Linux" class="lightbox-ignore" />
Linux
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev4&amp;amp;slug=linux.x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev4&amp;amp;slug=mono_linux_x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-linux">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-macos">
&lt;img width="24" height="24" src="/assets/images/platforms/macos.svg" title="macOS" alt="macOS" class="lightbox-ignore" />
macOS
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev4&amp;amp;slug=macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev4&amp;amp;slug=mono_macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary btn-download-primary--mono platform-macos">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-windows">
&lt;img width="24" height="24" src="/assets/images/platforms/windows.svg" title="Windows" alt="Windows" class="lightbox-ignore" />
Windows
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev4&amp;amp;slug=win64.exe.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev4&amp;amp;slug=mono_win64.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-windows">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;div class="card-download-sublinks">
&lt;a class="card-download-other" href="/download/archive/4.8-dev4">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="https://fund.godotengine.org/">
Make a Donation
&lt;/a>
&lt;/div>
&lt;/div>
&lt;style>
.thankyou-wrapper {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.85);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 10;
}
.thankyou {
background: var(--base-color);
box-shadow: var(--more-shadow);
padding: 30px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
position: relative;
border-radius: 13px;
}
.thankyou-reading {
font-size: 16px;
}
.thankyou-reading-list {
font-size: 16px;
margin: 0;
margin-left: 48px;
padding-left: 0;
}
.thankyou-donate {
margin-bottom: 24px;
text-align: center;
}
.btn.btn-donate {
background-color: var(--primary-color);
color: hsla(0, 0%, 100%, 0.9);
font-size: 22px;
font-weight: 600;
margin-bottom: 26px;
}
.thankyou h2 {
text-shadow: var(--base-shadow);
font-size: 36px;
font-weight: 800;
margin-bottom: 12px;
}
.thankyou h2 .anchored-link {
/* Hiding the anchored text automatically added on blogposts */
display: none !important;
}
.thankyou p {
max-width: 620px;
font-size: 25px;
}
@media (max-width: 768px) {
.thankyou-wrapper {
display: block;
}
.thankyou {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: scroll;
padding: 30px 40px 18px 40px;
}
.thankyou-reading-list {
margin-left: 24px;
}
.btn-close-thankyou-popup {
width: 48px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
}
}
.btn-close-thankyou-popup {
cursor: pointer;
position: absolute;
top: 12px;
right: 12px;
}
.btn-close-thankyou-popup img {
background: transparent !important; /* for overwriting the style in the blogposts img */
}
@media (prefers-color-scheme: light) {
.btn-close-thankyou-popup img {
filter: invert(1);
opacity: 0.75;
}
}
&lt;/style>
&lt;script>
document.addEventListener('DOMContentLoaded', () => {
const thankYouWrapper = document.getElementById('thank-you');
// Close itself, when clicked outside of the popup area.
thankYouWrapper.addEventListener('click', (e) => {
if (e.target === thankYouWrapper) {
thankYouWrapper.style.display = 'none';
}
});
// Close with a close button.
const thankYouBackButton = document.querySelector('.btn-close-thankyou-popup');
thankYouBackButton.addEventListener('click', () => {
thankYouWrapper.style.display = 'none';
});
// Open from the main download buttons.
const downloadButtons = document.querySelectorAll('.btn-download, .download-button');
downloadButtons.forEach((it) => {
if (it.dataset?.external === "yes") {
return;
}
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
document.querySelector('.btn.btn-donate').focus();
});
});
// Open from the all downloads list.
const downloadLinks = document.querySelectorAll('.download-link');
downloadLinks.forEach((it) => {
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
});
});
// Close the dialog when the user presses the escape key.
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
thankYouWrapper.style.display = 'none';
}
});
});
&lt;/script>
&lt;div class="thankyou-wrapper" id="thank-you" style="display: none;">
&lt;div class="thankyou">
&lt;h2>Godot is downloading...&lt;/h2>
&lt;p class="thankyou-donate">
Godot exists thanks to donations from people like you. Help us continue our work:
&lt;/p>
&lt;a href="https://fund.godotengine.org" class="btn btn-donate">
Make a Donation
&lt;/a>
&lt;div class="btn-close-thankyou-popup">
&lt;img src="/assets/icons/cross.svg" width="24" height="24" alt="Close this popup" class="lightbox-ignore" />
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>&lt;strong>Standard build&lt;/strong> includes support for GDScript and GDExtension.&lt;/p>
&lt;p>&lt;strong>.NET build&lt;/strong> (marked as &lt;code class="language-plaintext highlighter-rouge">mono&lt;/code>) includes support for C#, as well as GDScript and GDExtension.&lt;/p>
&lt;div class="card card-warning">
&lt;p>
While engine maintainers try their best to ensure that each preview snapshot and release candidate is stable, this is by definition &lt;strong>a pre-release piece of software&lt;/strong>. Be sure to make frequent backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.
&lt;/p>
&lt;/div>
&lt;h2 id="known-issues">Known issues&lt;/h2>
&lt;p>With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of &lt;a href="https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug">known bugs&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>There are currently no known issues introduced by this release.&lt;/li>
&lt;/ul>
&lt;h2 id="bug-reports">Bug reports&lt;/h2>
&lt;p>As a tester, we encourage you to &lt;a href="https://github.com/godotengine/godot/issues">open bug reports&lt;/a> if you experience issues with this release. Please check the &lt;a href="https://github.com/godotengine/godot/issues">existing issues on GitHub&lt;/a> first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.&lt;/p>
&lt;p>In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).&lt;/p>
&lt;h2 id="support">Support&lt;/h2>
&lt;p>Godot is a non-profit, open-source game engine developed by hundreds of contributors in their free time, as well as a handful of part and full-time developers hired thanks to &lt;a href="https://fund.godotengine.org/">generous donations from the Godot community&lt;/a>. A big thank you to everyone who has contributed &lt;a href="https://github.com/godotengine/godot/blob/master/AUTHORS.md">their time&lt;/a> or &lt;a href="https://github.com/godotengine/godot/blob/master/DONORS.md">their financial support&lt;/a> to the project!&lt;/p>
&lt;p>If you’d like to support the project financially and help us secure our future hires, you can do so using the &lt;a href="https://fund.godotengine.org/">Godot Development Fund&lt;/a> platform managed by the &lt;a href="https://godot.foundation/">Godot Foundation&lt;/a>. There are also several &lt;a href="/donate">alternative ways to donate&lt;/a> which you may find more suitable.&lt;/p>
&lt;p>&lt;a class="btn" href="https://fund.godotengine.org/">Donate now&lt;/a>&lt;/p></description><category>Pre-release</category><guid>https://godotengine.org/article/dev-snapshot-godot-4-8-dev-4/</guid><dc:creator>Thaddeus Crews</dc:creator><pubDate>Wed, 26 Aug 2026 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/dev-snapshot-godot-4-8-dev-4.jpg</image></item><item><title>Fixing high polling rate mice on Windows in Godot</title><link>https://godotengine.org/article/fixing-high-polling-rate-mice-on-windows/</link><summary>At long last, a performance issue with high polling rate mice on Windows has been fixed. This article describes how the fix works, and why it's so important today.</summary><description>&lt;p>At long last, a performance issue with high polling rate mice on Windows has been fixed in Godot, starting with the recently released &lt;a href="https://godotengine.org/article/maintenance-release-godot-4-7-2/">Godot 4.7.2&lt;/a>. This article describes how the fix works, and why it’s so important today.&lt;/p>
&lt;p>&lt;em>&lt;strong>Note:&lt;/strong> The definition of “high polling rate” here refers to any mouse that can be configured to having a polling rate of at least 2 kHz. Mice that poll at 1 kHz are &lt;strong>not&lt;/strong> considered high polling rate here, as they generally did not exhibit performance issues except on CPUs with very slow single-core performance.&lt;/em>&lt;/p>
&lt;h2 id="what-are-high-polling-rate-mice-and-what-are-they-useful-for">What are high polling rate mice, and what are they useful for?&lt;/h2>
&lt;p>To ensure games feel good to play, we want the delay between an action being performed and the result being visible on screen (input lag) to be as low as possible. We also want inputs to be spaced as consistently as possible, avoiding jitter.&lt;/p>
&lt;p>Mice are polled at a fixed rate. Historically, this has been 125 Hz as dictated by the USB standard. This means that the mouse input is polled every 8 milliseconds. This poses several limitations:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>The mouse position reported to the operating system only updates 125 times per second. If you have a high refresh rate monitor (144 Hz or more), the mouse position will not update every frame, which will make mouse movement look choppy. This affects not just the operating system, but also games that rely on mouse input, including captured mouse mode.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Even on monitors with a 120 Hz or lower refresh rate, the mouse position will not be as consistent across the displayed frames on screen as with higher polling rates. The reason for this is that the mouse updates don’t line up with display refreshes. With a higher polling rate, there will be a lower average deviation between the time the mouse was last updated and the display refresh.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>On average, and on top of any latency incurred by the operating system and mouse hardware, there will be a delay of 4 milliseconds between the mouse being moved by the user and the updated position being available to the operating system. While this may sound negligible at first, it &lt;em>is&lt;/em> possible for some people to notice differences in mouse latency down to a millisecond.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>In the late 2000s, manufacturers started providing options with 250 Hz, 500 Hz and 1 kHz polling rates. For a long time, 1 kHz was the fastest polling rate available on the market.&lt;/p>
&lt;p>&lt;img src="/storage/blog/fixing-high-polling-rate-mice-on-windows/mouse_polling_rate_comparison.webp" alt="Mouse polling rate comparison between 125 Hz, 250 Hz, 500 Hz and 1,000 Hz" />&lt;/p>
&lt;p>However, since the early 2020s, manufacturers have pushed polling rates beyond 1 kHz, including for wireless models. We’ve seen 2 kHz, 4 kHz and even 8 kHz mice reach the market, with pricing becoming more affordable as time goes on. This high polling rate allows for slightly reduced input latency, but most importantly, it ensures mouse updates are more consistent over time. With modern displays being able to reach refresh rates of 480 Hz, 720 Hz or &lt;a href="https://www.youtube.com/watch?v=rZDcF2bDwWk">even more&lt;/a>, it becomes increasingly important to push mouse polling rates beyond the 1 kHz barrier.&lt;/p>
&lt;p>This led to the rapid adoption of mice with such high polling rates, which poses a problem for software developers.&lt;/p>
&lt;h2 id="whats-the-issue-with-high-polling-rate-mice">What’s the issue with high polling rate mice?&lt;/h2>
&lt;p>As the operating system receives mouse events much more frequently, it must handle them in a timely manner to avoid dropped events, or events being handled too late (which results in additional latency). In other words, with great polling rate comes great responsibility.&lt;/p>
&lt;p>Unfortunately, operating systems originally didn’t account for the fact that mice could one day send thousands of updates per second. While modern CPUs’ processing power makes it possible to bruteforce through this problem on some platforms, this was particularly brutal on Windows.&lt;/p>
&lt;p>In practice, this manifests as significant framerate drops as soon as a certain threshold of mouse updates per second is exceeded. How fast this threshold is reached depends on the mouse movement speed (as tiny mouse movements will not send an update on every poll), as well as CPU single-core performance. As of 2026 and on recent Windows 11 versions, on most CPUs, this limit is generally somewhere between 1 kHz and 2 kHz. If your mouse sends much more updates than this limit, the framerate can drop to the single digits, leading to an unplayable experience:&lt;/p>
&lt;p>&lt;img src="/storage/blog/fixing-high-polling-rate-mice-on-windows/mouse_movement_frametimes_no_vsync_before.webp" alt="Frametimes when moving the mouse quickly prior to the fix" />&lt;/p>
&lt;p>This issue is particularly difficult to troubleshoot for less tech-savvy users, as some mice can even &lt;em>default&lt;/em> to polling rates above 1 kHz. This leads to a performance loss that appears to be related to the use of a specific mouse model, when it is in fact related to its polling rate.&lt;/p>
&lt;p>Godot is not the only engine that runs into this issue on Windows. Thousands of games suffer from this issue too, from the earliest days of Windows gaming to today’s popular releases. Games that use non-captured mouse modes (i.e. with the mouse cursor visible) are more prone to this issue, as extra care must be taken to avoid performance pitfalls in this situation.&lt;/p>
&lt;p>Linux (on both Wayland and X11) is generally not affected by this issue, regardless of the game.&lt;/p>
&lt;h3 id="why-does-this-issue-happen-on-windows-specifically">Why does this issue happen on Windows specifically?&lt;/h3>
&lt;p>Windows has a long story of backward compatibility, dating back 30+ years. While this is a blessing in many cases, it ends up being a problem in this situation.&lt;/p>
&lt;p>Windows has several types of mouse motion events:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Legacy input (known as &lt;code class="language-plaintext highlighter-rouge">WM_MOUSEMOVE&lt;/code>). This is the usual kind of mouse motion event, designed for applications rather than games.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Raw input (known as &lt;code class="language-plaintext highlighter-rouge">WM_INPUT&lt;/code>). Raw input was introduced in Windows XP as a way to allow games to read mouse input in a way that ignores OS processing (such as mouse acceleration, also known as the “Enhanced pointer precision” option). This is particularly desirable for first-person games, where mouse acceleration is usually not wanted by players (or is better configured in-game when desired).&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>However, when requesting raw input in a Windows application, it will still receive legacy input events at the same time. This is the case even when the application is currently in captured mouse mode (such as a first-person game, where the mouse cursor is not visible).&lt;/p>
&lt;p>While it is possible to request &lt;em>only&lt;/em> raw input and no legacy input, doing so breaks several parts of the application that are expected by users, such as moving the window by dragging its title bar. Therefore, we had to implement a different solution inspired by &lt;a href="https://ph3at.github.io/posts/Windows-Input/">PH3’s blog post about high polling rate mice on Windows&lt;/a>.&lt;/p>
&lt;h2 id="solution">Solution&lt;/h2>
&lt;p>The solution is to treat mouse motion inputs separately from other input types, and handle them in a way that prevents congesting the input system. To achieve this:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Buffered reads are performed in the &lt;a href="https://github.com/godotengine/godot/blob/944a3c6cbbbb88284feebcb0603464cb175fa18e/platform/windows/display_server_windows.cpp#L4441-L4509">&lt;code class="language-plaintext highlighter-rouge">DisplayServerWindows::process_raw_input()&lt;/code>&lt;/a> function.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Additionally, in &lt;a href="https://github.com/godotengine/godot/blob/944a3c6cbbbb88284feebcb0603464cb175fa18e/platform/windows/display_server_windows.cpp#L4526-L4570">&lt;code class="language-plaintext highlighter-rouge">DisplayServerWindows::process_events()&lt;/code>&lt;/a>, the Windows API &lt;code class="language-plaintext highlighter-rouge">PeekMessageW()&lt;/code> function is called in a way that prevents raw input (&lt;code class="language-plaintext highlighter-rouge">WM_INPUT&lt;/code>) from being dispatched right away (which is what normally causes performance drops in captured mouse mode). Instead, it stays in queue for the next buffered read in &lt;code class="language-plaintext highlighter-rouge">process_raw_input()&lt;/code>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Legacy inputs (&lt;code class="language-plaintext highlighter-rouge">WM_MOUSEMOVE&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">WM_NCMOUSEMOVE&lt;/code>) are handled separately, but are only dispatched once per frame at most each. This avoids performance issues at high polling rate when in non-captured mouse modes.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Other inputs (keys, mouse buttons, mouse wheel) are treated as before, as they are not sent frequently enough to be a problem under the old approach. While keyboards with a polling rate greater than 1 kHz exist, it’s humanly impossible to (de)press keys in a way that could saturate the current input system.&lt;/p>
&lt;p>Gamepad input remains treated by a separate system on Windows, and is not impacted by this fix. In any case, there are very few gamepads that can poll above 1 kHz as of writing.&lt;/p>
&lt;p>Note that projects should still be careful to optimize their &lt;a href="https://docs.godotengine.org/en/stable/classes/class_node.html#class-node-private-method-input">&lt;code class="language-plaintext highlighter-rouge">_input()&lt;/code>&lt;/a> and &lt;a href="https://docs.godotengine.org/en/stable/classes/class_node.html#class-node-private-method-unhandled-input">&lt;code class="language-plaintext highlighter-rouge">_unhandled_input()&lt;/code>&lt;/a> functions, particularly the code paths that are called for &lt;a href="https://docs.godotengine.org/en/stable/classes/class_inputeventmousemotion.html">&lt;code class="language-plaintext highlighter-rouge">InputEventMouseMotion&lt;/code>&lt;/a>. These methods may be called once per rendered frame when &lt;a href="https://docs.godotengine.org/en/stable/classes/class_input.html#class-input-property-use-accumulated-input">input accumulation&lt;/a> is enabled (the default). For example, on a 480 Hz monitor with V-Sync enabled, these methods may be called 480 times per second during fast mouse movements, assuming the system is fast enough to render at least 480 FPS. When input accumulation is disabled, these methods may be called on every mouse update, which can potentially mean 8,000 calls per second when using a mouse with 8 kHz polling rate.&lt;/p>
&lt;h2 id="benchmark">Benchmark&lt;/h2>
&lt;p>For testing, we use the &lt;em>InputRepro2&lt;/em> testing project which is available in the &lt;a href="https://github.com/godotengine/godot/pull/109639">pull request&lt;/a> description.&lt;/p>
&lt;p>PC specifications:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>CPU:&lt;/strong> AMD Ryzen 9 9950X3D&lt;/li>
&lt;li>&lt;strong>GPU:&lt;/strong> NVIDIA GeForce RTX 5090&lt;/li>
&lt;li>&lt;strong>RAM:&lt;/strong> 64 GB (2×32 GB DDR5-6000 CL30)&lt;/li>
&lt;li>&lt;strong>OS:&lt;/strong> Windows 11 24H2&lt;/li>
&lt;li>&lt;strong>Monitor:&lt;/strong> ASUS ROG PG32UCDP (1080p @ 480 Hz mode)&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> 4.7.1.stable does &lt;strong>not&lt;/strong> include the fix described in this article, while &lt;a href="https://godotengine.org/article/dev-snapshot-godot-4-8-dev-3/">4.8.dev3&lt;/a> is the first development snapshot to include it. The recently released &lt;a href="https://godotengine.org/article/maintenance-release-godot-4-7-2/">4.7.2.stable&lt;/a> also includes the fix.&lt;/p>
&lt;/blockquote>
&lt;p>Average framerate when moving the mouse in circles quickly:&lt;/p>
&lt;h4 id="no-v-sync-unlimited-maximum-framerate">No V-Sync (unlimited maximum framerate)&lt;/h4>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Benchmark&lt;/th>
&lt;th>4.7.1.stable&lt;/th>
&lt;th>4.8.dev3&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>No movement&lt;/td>
&lt;td>4097 FPS (0.24 mspf)&lt;/td>
&lt;td>4061 FPS (0.25 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, visible mouse @ 1 kHz&lt;/td>
&lt;td>2641 FPS (0.38 mspf)&lt;/td>
&lt;td>2560 FPS (0.39 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, visible mouse @ 2 kHz&lt;/td>
&lt;td>1751 FPS (0.57 mspf)&lt;/td>
&lt;td>1848 FPS (0.54 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, visible mouse @ 4 kHz&lt;/td>
&lt;td>973 FPS (1.03 mspf)*&lt;/td>
&lt;td>1546 FPS (0.65 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, visible mouse @ 8 kHz&lt;/td>
&lt;td>173 FPS (5.78 mspf)*&lt;/td>
&lt;td>&lt;strong>1103 FPS (0.91 mspf)&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, captured mouse @ 1 kHz&lt;/td>
&lt;td>2583 FPS (0.39 mspf)&lt;/td>
&lt;td>2669 FPS (0.37 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, captured mouse @ 2 kHz&lt;/td>
&lt;td>1979 FPS (0.51 mspf)&lt;/td>
&lt;td>2110 FPS (0.47 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, captured mouse @ 4 kHz&lt;/td>
&lt;td>1778 FPS (0.56 mspf)*&lt;/td>
&lt;td>1962 FPS (0.51 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, captured mouse @ 8 kHz&lt;/td>
&lt;td>&amp;lt; 1 FPS (&amp;gt;1000.00 mspf)**&lt;/td>
&lt;td>&lt;strong>1703 FPS (0.59 mspf)&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Prior to the fix, performance dropped to unplayable levels when moving the mouse with 8 kHz polling rate. Even with a 4 kHz polling rate, there were significant frametime deviations that resulted in movement being visibly jagged:&lt;/p>
&lt;p>&lt;img src="/storage/blog/fixing-high-polling-rate-mice-on-windows/mouse_movement_frametimes_no_vsync_before.webp" alt="Frametimes when moving the mouse quickly prior to the fix" />&lt;/p>
&lt;p>Compare the above graph with this frametime graph recorded under the same conditions, but with the fix in effect:&lt;/p>
&lt;p>&lt;img src="/storage/blog/fixing-high-polling-rate-mice-on-windows/mouse_movement_frametimes_no_vsync_after.webp" alt="Frametimes when moving the mouse quickly prior to the fix" />&lt;/p>
&lt;p>The 1% low FPS figure has been increased by a factor of &lt;strong>45.8&lt;/strong> here! This is just one example of how significant the improvement can be thanks to this fix.&lt;/p>
&lt;p>On slower CPUs, you will get more benefit from the fix described in this article, as the CPU used for this test has very high single-core performance (which is what determines how many input messages can be read per second). While this fix was not a huge change at 2 kHz polling rate on this particular CPU, it will definitely come in handy on slower processors or laptop CPUs, which have lower single-core performance compared to desktop CPUs.&lt;/p>
&lt;p>How does this translate to a scenario where we aim to reach a high framerate &lt;em>consistently&lt;/em>? With this fix, it’s a lot more feasible at 8 kHz now:&lt;/p>
&lt;h4 id="v-sync-480-hz">V-Sync 480 Hz&lt;/h4>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Benchmark&lt;/th>
&lt;th>4.7.1.stable&lt;/th>
&lt;th>4.8.dev3&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>No movement&lt;/td>
&lt;td>480 FPS (2.08 mspf)&lt;/td>
&lt;td>480 FPS (2.08 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, visible mouse @ 1 kHz&lt;/td>
&lt;td>478 FPS (2.09 mspf)&lt;/td>
&lt;td>478 FPS (2.09 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, visible mouse @ 2 kHz&lt;/td>
&lt;td>473 FPS (2.11 mspf)&lt;/td>
&lt;td>477 FPS (2.10 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, visible mouse @ 4 kHz&lt;/td>
&lt;td>472 FPS (2.12 mspf)*&lt;/td>
&lt;td>477 FPS (2.10 mspf)**&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, visible mouse @ 8 kHz&lt;/td>
&lt;td>151 FPS (6.62 mspf)*&lt;/td>
&lt;td>&lt;strong>477 FPS (2.10 mspf)&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, captured mouse @ 1 kHz&lt;/td>
&lt;td>477 FPS (2.10 mspf)&lt;/td>
&lt;td>478 FPS (2.09 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, captured mouse @ 2 kHz&lt;/td>
&lt;td>477 FPS (2.10 mspf)&lt;/td>
&lt;td>478 FPS (2.09 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, captured mouse @ 4 kHz&lt;/td>
&lt;td>469 FPS (2.13 mspf)*&lt;/td>
&lt;td>478 FPS (2.09 mspf)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>With movement, captured mouse @ 8 kHz&lt;/td>
&lt;td>&amp;lt; 1 FPS (&amp;gt;1000.00 mspf)**&lt;/td>
&lt;td>&lt;strong>477 FPS (2.10 mspf)&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Prior to the fix, we saw a similar issue to the test case where V-Sync is disabled. The framerate didn’t quite reach the 480 FPS target we set here. In fact, it was lower when V-Sync is enabled at 8 kHz with the visible mouse mode (151 FPS instead of 173 FPS). On the frametime graph, there were frametime spikes that were easily noticeable to the naked eye:&lt;/p>
&lt;p>&lt;img src="/storage/blog/fixing-high-polling-rate-mice-on-windows/mouse_movement_frametimes_with_vsync_before.webp" alt="Frametimes when moving the mouse quickly prior to the fix" />&lt;/p>
&lt;p>The framerate is much more stable now, and is &lt;em>almost&lt;/em> a locked 480 FPS:&lt;/p>
&lt;p>&lt;img src="/storage/blog/fixing-high-polling-rate-mice-on-windows/mouse_movement_frametimes_with_vsync_after.webp" alt="Frametimes when moving the mouse quickly with the fix" />&lt;/p>
&lt;p>Slight deviations at framerates this high are expected, as each frame only has ~2.1 milliseconds to render. It may be possible to find further improvements, but we are getting into the realm of diminishing returns here.&lt;/p>
&lt;ul>
&lt;li>*: Large deviations in frametime occur, with some frames going past ~16.7 ms (slower than 1 frame at 60 FPS). Still playable, but not smooth (which is what we’d want from those high polling rates).&lt;/li>
&lt;li>**: Huge deviations in frametime occur (some frames taking over 500 ms), making it unplayable.&lt;/li>
&lt;/ul>
&lt;h2 id="references">References&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/godotengine/godot/pull/109639">Pull request&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://ph3at.github.io/posts/Windows-Input/">PH3 blog post about high polling rate mice on Windows&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://blurbusters.com/faq/mouse-guide/">Blur Busters mouse guide&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.godotengine.org/en/latest/tutorials/rendering/jitter_stutter.html">Fixing jitter, stutter and input lag&lt;/a> in the Godot documentation&lt;/li>
&lt;/ul>
&lt;h2 id="support">Support&lt;/h2>
&lt;p>Godot is a non-profit, open-source game engine developed by hundreds of contributors in their free time, as well as a handful of part or full-time developers hired thanks to &lt;a href="https://fund.godotengine.org/">generous donations from the Godot community&lt;/a>. A big thank you to everyone who has contributed &lt;a href="https://github.com/godotengine/godot/blob/master/AUTHORS.md">their time&lt;/a> or &lt;a href="https://github.com/godotengine/godot/blob/master/DONORS.md">their financial support&lt;/a> to the project!&lt;/p>
&lt;p>If you’d like to support the project financially and help us secure our future hires, you can do so using the &lt;a href="https://fund.godotengine.org/">Godot Development Fund&lt;/a> platform managed by &lt;a href="https://godot.foundation/">Godot Foundation&lt;/a>. There are also several &lt;a href="/donate">alternative ways to donate&lt;/a> which you may find more suitable.&lt;/p></description><category>Progress Report</category><guid>https://godotengine.org/article/fixing-high-polling-rate-mice-on-windows/</guid><dc:creator>Hugo Locurcio</dc:creator><pubDate>Mon, 24 Aug 2026 14:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/fixing-high-polling-rate-mice-on-windows.jpg</image></item><item><title>Maintenance release: Godot 3.6.3</title><link>https://godotengine.org/article/maintenance-release-godot-3-6-3/</link><summary>Godot 3.6.2 has been our recommended stable LTS version of 3.x for a while now, but the time has come to make a new build, primarily due to changes in requirements for Android and iOS.</summary><description>&lt;p>&lt;a href="/article/maintenance-release-godot-3-6-2">Godot 3.6.2&lt;/a> has been our recommended stable LTS version of 3.x for a while now, but the time has come to make a new build, primarily due to changes in requirements for Android and iOS.&lt;/p>
&lt;p>&lt;a href="https://developer.android.com/google/play/requirements/target-sdk">Google Play&lt;/a> now requires new apps and updates to target Android 16 (API level 36). As a result we have updated Godot Android APIs and made compatibility changes to ensure users can update their Godot 3 games on Play Store with 3.6.3.&lt;/p>
&lt;p>On iOS, the minimum version is bumped to 15.0 (the minimum supported by XCode 27), a minimum target export option is added, and 32-bit export is removed as it is not supported since iOS 11.&lt;/p>
&lt;p>&lt;strong>This is a safe and recommended update for all Godot 3.6.x users.&lt;/strong> It should have no major impact on your projects, even complex ones in production, if you’re already using 3.6.2-stable.&lt;/p>
&lt;p>&lt;a href="/download/archive/3.6.3-stable/">&lt;strong>Download Godot 3.6.3 now&lt;/strong>&lt;/a> or try the &lt;a href="https://editor.godotengine.org/3.6.3.stable/">online version of the Godot editor&lt;/a>.&lt;/p>
&lt;div class="card card-download">
&lt;a class="card-download-link" href="/download/archive/3.6.3-stable">
Download Godot 3.6.3 stable
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/maintenance-release-godot-3-6-3.jpg" />
&lt;div class="card-download-platforms">
&lt;div class="download-platform platform-linux">
&lt;img width="24" height="24" src="/assets/images/platforms/linux.svg" title="Linux" alt="Linux" class="lightbox-ignore" />
Linux
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=3.6.3&amp;amp;flavor=stable&amp;amp;slug=x11.64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=3.6.3&amp;amp;flavor=stable&amp;amp;slug=mono_x11_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-linux">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-macos">
&lt;img width="24" height="24" src="/assets/images/platforms/macos.svg" title="macOS" alt="macOS" class="lightbox-ignore" />
macOS
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=3.6.3&amp;amp;flavor=stable&amp;amp;slug=osx.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=3.6.3&amp;amp;flavor=stable&amp;amp;slug=mono_osx.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary btn-download-primary--mono platform-macos">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-windows">
&lt;img width="24" height="24" src="/assets/images/platforms/windows.svg" title="Windows" alt="Windows" class="lightbox-ignore" />
Windows
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=3.6.3&amp;amp;flavor=stable&amp;amp;slug=win64.exe.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=3.6.3&amp;amp;flavor=stable&amp;amp;slug=mono_win64.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-windows">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;div class="card-download-sublinks">
&lt;a class="card-download-other" href="/download/archive/3.6.3-stable">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="https://fund.godotengine.org/">
Make a Donation
&lt;/a>
&lt;/div>
&lt;/div>
&lt;style>
.thankyou-wrapper {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.85);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 10;
}
.thankyou {
background: var(--base-color);
box-shadow: var(--more-shadow);
padding: 30px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
position: relative;
border-radius: 13px;
}
.thankyou-reading {
font-size: 16px;
}
.thankyou-reading-list {
font-size: 16px;
margin: 0;
margin-left: 48px;
padding-left: 0;
}
.thankyou-donate {
margin-bottom: 24px;
text-align: center;
}
.btn.btn-donate {
background-color: var(--primary-color);
color: hsla(0, 0%, 100%, 0.9);
font-size: 22px;
font-weight: 600;
margin-bottom: 26px;
}
.thankyou h2 {
text-shadow: var(--base-shadow);
font-size: 36px;
font-weight: 800;
margin-bottom: 12px;
}
.thankyou h2 .anchored-link {
/* Hiding the anchored text automatically added on blogposts */
display: none !important;
}
.thankyou p {
max-width: 620px;
font-size: 25px;
}
@media (max-width: 768px) {
.thankyou-wrapper {
display: block;
}
.thankyou {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: scroll;
padding: 30px 40px 18px 40px;
}
.thankyou-reading-list {
margin-left: 24px;
}
.btn-close-thankyou-popup {
width: 48px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
}
}
.btn-close-thankyou-popup {
cursor: pointer;
position: absolute;
top: 12px;
right: 12px;
}
.btn-close-thankyou-popup img {
background: transparent !important; /* for overwriting the style in the blogposts img */
}
@media (prefers-color-scheme: light) {
.btn-close-thankyou-popup img {
filter: invert(1);
opacity: 0.75;
}
}
&lt;/style>
&lt;script>
document.addEventListener('DOMContentLoaded', () => {
const thankYouWrapper = document.getElementById('thank-you');
// Close itself, when clicked outside of the popup area.
thankYouWrapper.addEventListener('click', (e) => {
if (e.target === thankYouWrapper) {
thankYouWrapper.style.display = 'none';
}
});
// Close with a close button.
const thankYouBackButton = document.querySelector('.btn-close-thankyou-popup');
thankYouBackButton.addEventListener('click', () => {
thankYouWrapper.style.display = 'none';
});
// Open from the main download buttons.
const downloadButtons = document.querySelectorAll('.btn-download, .download-button');
downloadButtons.forEach((it) => {
if (it.dataset?.external === "yes") {
return;
}
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
document.querySelector('.btn.btn-donate').focus();
});
});
// Open from the all downloads list.
const downloadLinks = document.querySelectorAll('.download-link');
downloadLinks.forEach((it) => {
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
});
});
// Close the dialog when the user presses the escape key.
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
thankYouWrapper.style.display = 'none';
}
});
});
&lt;/script>
&lt;div class="thankyou-wrapper" id="thank-you" style="display: none;">
&lt;div class="thankyou">
&lt;h2>Godot is downloading...&lt;/h2>
&lt;p class="thankyou-donate">
Godot exists thanks to donations from people like you. Help us continue our work:
&lt;/p>
&lt;a href="https://fund.godotengine.org" class="btn btn-donate">
Make a Donation
&lt;/a>
&lt;div class="btn-close-thankyou-popup">
&lt;img src="/assets/icons/cross.svg" width="24" height="24" alt="Close this popup" class="lightbox-ignore" />
&lt;/div>
&lt;/div>
&lt;/div>
&lt;hr />
&lt;p>&lt;em>The cover illustration is from&lt;/em> &lt;a href="https://store.steampowered.com/app/3451980/Souls_Remnant/?curator_clanid=41324400">&lt;strong>Soul’s Remnant&lt;/strong>&lt;/a>, &lt;em>a 2D platformmer MMORPG, where you’ll socialize and conquer your way through this mysterious world. You can play the game for free on &lt;a href="https://store.steampowered.com/app/3451980/Souls_Remnant/?curator_clanid=41324400">Steam&lt;/a>, and check out the developers on &lt;a href="https://bsky.app/profile/soulsremnant.com">Bluesky&lt;/a> and &lt;a href="https://www.youtube.com/@chaomoon">YouTube&lt;/a>!&lt;/em>&lt;/p>
&lt;h2 id="changed">Changed&lt;/h2>
&lt;ul>
&lt;li>Export: iOS: Bump min. version to 15.0, remove 32-bit code, add min. target export option (&lt;a href="https://github.com/godotengine/godot/pull/122324">GH-122324&lt;/a>).&lt;/li>
&lt;li>Network: mbedTLS: Always use Godot’s OS as entropy source (&lt;a href="https://github.com/godotengine/godot/pull/121894">GH-121894&lt;/a>).&lt;/li>
&lt;li>Network: mbedTLS: Update to 3.6.7 (&lt;a href="https://github.com/godotengine/godot/pull/121110">GH-121110&lt;/a>).&lt;/li>
&lt;li>Platforms: Android: Bump default target SDK to 36 (&lt;a href="https://github.com/godotengine/godot/pull/120883">GH-120883&lt;/a>).&lt;/li>
&lt;li>Thirdparty: libpng: Update to 1.6.58 (&lt;a href="https://github.com/godotengine/godot/pull/122506">GH-122506&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="fixed">Fixed&lt;/h2>
&lt;ul>
&lt;li>Audio: Fix audio crackling issues due to incorrect WASAPI buffer size (&lt;a href="https://github.com/godotengine/godot/pull/89283">GH-89283&lt;/a>).&lt;/li>
&lt;li>Audio: Suppress error when device is invalidated after &lt;code class="language-plaintext highlighter-rouge">IAudioClient::GetBufferSize&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/122467">GH-122467&lt;/a>).&lt;/li>
&lt;li>Buildsystem: Add proper flags when using external recast (&lt;a href="https://github.com/godotengine/godot/pull/112029">GH-112029&lt;/a>).&lt;/li>
&lt;li>Buildsystem: Ping &lt;code class="language-plaintext highlighter-rouge">master&lt;/code> cache after saving cache (&lt;a href="https://github.com/godotengine/godot/pull/122267">GH-122267&lt;/a>).&lt;/li>
&lt;li>Core: Minor BVH correctness fixes (&lt;a href="https://github.com/godotengine/godot/pull/121501">GH-121501&lt;/a>).&lt;/li>
&lt;li>Export: Preserve the output from the gradle build command (&lt;a href="https://github.com/godotengine/godot/pull/120612">GH-120612&lt;/a>).&lt;/li>
&lt;li>GDScript: Fix missing function signature hint (&lt;a href="https://github.com/godotengine/godot/pull/68449">GH-68449&lt;/a>).&lt;/li>
&lt;li>Input: Fix new CI compiler warnings (&lt;a href="https://github.com/godotengine/godot/pull/120627">GH-120627&lt;/a>).&lt;/li>
&lt;li>Platforms: iOS: Fix x86_64 simulator build. (&lt;a href="https://github.com/godotengine/godot/pull/122639">GH-122639&lt;/a>).&lt;/li>
&lt;li>Platforms: LinuxBSD: Process TTS callback on the main thread to avoid speech-dispatcher deadlock (&lt;a href="https://github.com/godotengine/godot/pull/110481">GH-110481&lt;/a>).&lt;/li>
&lt;li>Rendering: FTI - Optimize non-interpolated 2D items (&lt;a href="https://github.com/godotengine/godot/pull/111195">GH-111195&lt;/a>).&lt;/li>
&lt;li>Rendering: Make physics interpolation compatible with separate-thread rendering (&lt;a href="https://github.com/godotengine/godot/pull/114211">GH-114211&lt;/a>).&lt;/li>
&lt;li>Web: Add internal get_entropy() javascript function for web build (&lt;a href="https://github.com/godotengine/godot/pull/122647">GH-122647&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>16 contributors&lt;/strong> submitted &lt;strong>20 fixes&lt;/strong> for this release. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#3.6.3">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since the 3.6.2 release.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/a3378686f7196db78d7b3cc7947f72a13bc4864c">&lt;code class="language-plaintext highlighter-rouge">a3378686f&lt;/code>&lt;/a>.&lt;/p>
&lt;h2 id="bug-reports">Bug reports&lt;/h2>
&lt;p>As a tester, you are encouraged to &lt;a href="https://github.com/godotengine/godot/issues">open bug reports&lt;/a> if you experience issues with 3.6.3. Please check first the &lt;a href="https://github.com/godotengine/godot/issues">existing issues on GitHub&lt;/a>, using the search function with relevant keywords, to ensure that the bug you experience is not known already.&lt;/p>
&lt;p>In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in 3.6.2 or earlier 3.x releases no longer works in 3.6.3).&lt;/p>
&lt;h2 id="support">Support&lt;/h2>
&lt;p>Godot is a non-profit, open-source game engine developed by hundreds of contributors in their free time, as well as a handful of part and full-time developers hired thanks to &lt;a href="https://fund.godotengine.org/">generous donations from the Godot community&lt;/a>. A big thank you to everyone who has contributed &lt;a href="https://github.com/godotengine/godot/blob/master/AUTHORS.md">their time&lt;/a> or &lt;a href="https://github.com/godotengine/godot/blob/master/DONORS.md">their financial support&lt;/a> to the project!&lt;/p>
&lt;p>If you’d like to support the project financially and help us secure our future hires, you can do so using the &lt;a href="https://fund.godotengine.org/">Godot Development Fund&lt;/a> platform managed by the &lt;a href="https://godot.foundation/">Godot Foundation&lt;/a>. There are also several &lt;a href="/donate">alternative ways to donate&lt;/a> which you may find more suitable.&lt;/p>
&lt;p>&lt;a class="btn" href="https://fund.godotengine.org/">Donate now&lt;/a>&lt;/p></description><category>Release</category><guid>https://godotengine.org/article/maintenance-release-godot-3-6-3/</guid><dc:creator>lawnjelly</dc:creator><pubDate>Sat, 22 Aug 2026 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/maintenance-release-godot-3-6-3.jpg</image></item><item><title>Maintenance release: Godot 4.7.2</title><link>https://godotengine.org/article/maintenance-release-godot-4-7-2/</link><summary>The second 4.7 maintenance release has arrived!</summary><description>&lt;p>Has it already been a whole month since &lt;a href="/article/maintenance-release-godot-4-7-1/">the last 4.7 maintenance release&lt;/a>? How time flies… Well, no time to dwell on the past; let’s instead dwell on the present with yet another maintenance release: Godot 4.7.2!&lt;/p>
&lt;p>Maintenance releases are expected to be safe for an upgrade, but we recommend to always make backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.&lt;/p>
&lt;p>Please consider &lt;a href="#support">supporting the project financially&lt;/a>, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.&lt;/p>
&lt;p>&lt;a href="/download/archive/4.7.2-stable/">&lt;strong>Download Godot 4.7.2 now&lt;/strong>&lt;/a> or try the &lt;a href="https://editor.godotengine.org/4.7.2.stable/">online version of the Godot editor&lt;/a>.&lt;/p>
&lt;div class="card card-download">
&lt;a class="card-download-link" href="/download/archive/4.7.2-stable">
Download Godot 4.7.2 stable
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/maintenance-release-godot-4-7-2.jpg" />
&lt;div class="card-download-platforms">
&lt;div class="download-platform platform-linux">
&lt;img width="24" height="24" src="/assets/images/platforms/linux.svg" title="Linux" alt="Linux" class="lightbox-ignore" />
Linux
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.7.2&amp;amp;flavor=stable&amp;amp;slug=linux.x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.7.2&amp;amp;flavor=stable&amp;amp;slug=mono_linux_x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-linux">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-macos">
&lt;img width="24" height="24" src="/assets/images/platforms/macos.svg" title="macOS" alt="macOS" class="lightbox-ignore" />
macOS
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.7.2&amp;amp;flavor=stable&amp;amp;slug=macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.7.2&amp;amp;flavor=stable&amp;amp;slug=mono_macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary btn-download-primary--mono platform-macos">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-windows">
&lt;img width="24" height="24" src="/assets/images/platforms/windows.svg" title="Windows" alt="Windows" class="lightbox-ignore" />
Windows
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.7.2&amp;amp;flavor=stable&amp;amp;slug=win64.exe.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.7.2&amp;amp;flavor=stable&amp;amp;slug=mono_win64.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-windows">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;div class="card-download-sublinks">
&lt;a class="card-download-other" href="/download/archive/4.7.2-stable">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="https://fund.godotengine.org/">
Make a Donation
&lt;/a>
&lt;/div>
&lt;/div>
&lt;style>
.thankyou-wrapper {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.85);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 10;
}
.thankyou {
background: var(--base-color);
box-shadow: var(--more-shadow);
padding: 30px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
position: relative;
border-radius: 13px;
}
.thankyou-reading {
font-size: 16px;
}
.thankyou-reading-list {
font-size: 16px;
margin: 0;
margin-left: 48px;
padding-left: 0;
}
.thankyou-donate {
margin-bottom: 24px;
text-align: center;
}
.btn.btn-donate {
background-color: var(--primary-color);
color: hsla(0, 0%, 100%, 0.9);
font-size: 22px;
font-weight: 600;
margin-bottom: 26px;
}
.thankyou h2 {
text-shadow: var(--base-shadow);
font-size: 36px;
font-weight: 800;
margin-bottom: 12px;
}
.thankyou h2 .anchored-link {
/* Hiding the anchored text automatically added on blogposts */
display: none !important;
}
.thankyou p {
max-width: 620px;
font-size: 25px;
}
@media (max-width: 768px) {
.thankyou-wrapper {
display: block;
}
.thankyou {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: scroll;
padding: 30px 40px 18px 40px;
}
.thankyou-reading-list {
margin-left: 24px;
}
.btn-close-thankyou-popup {
width: 48px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
}
}
.btn-close-thankyou-popup {
cursor: pointer;
position: absolute;
top: 12px;
right: 12px;
}
.btn-close-thankyou-popup img {
background: transparent !important; /* for overwriting the style in the blogposts img */
}
@media (prefers-color-scheme: light) {
.btn-close-thankyou-popup img {
filter: invert(1);
opacity: 0.75;
}
}
&lt;/style>
&lt;script>
document.addEventListener('DOMContentLoaded', () => {
const thankYouWrapper = document.getElementById('thank-you');
// Close itself, when clicked outside of the popup area.
thankYouWrapper.addEventListener('click', (e) => {
if (e.target === thankYouWrapper) {
thankYouWrapper.style.display = 'none';
}
});
// Close with a close button.
const thankYouBackButton = document.querySelector('.btn-close-thankyou-popup');
thankYouBackButton.addEventListener('click', () => {
thankYouWrapper.style.display = 'none';
});
// Open from the main download buttons.
const downloadButtons = document.querySelectorAll('.btn-download, .download-button');
downloadButtons.forEach((it) => {
if (it.dataset?.external === "yes") {
return;
}
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
document.querySelector('.btn.btn-donate').focus();
});
});
// Open from the all downloads list.
const downloadLinks = document.querySelectorAll('.download-link');
downloadLinks.forEach((it) => {
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
});
});
// Close the dialog when the user presses the escape key.
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
thankYouWrapper.style.display = 'none';
}
});
});
&lt;/script>
&lt;div class="thankyou-wrapper" id="thank-you" style="display: none;">
&lt;div class="thankyou">
&lt;h2>Godot is downloading...&lt;/h2>
&lt;p class="thankyou-donate">
Godot exists thanks to donations from people like you. Help us continue our work:
&lt;/p>
&lt;a href="https://fund.godotengine.org" class="btn btn-donate">
Make a Donation
&lt;/a>
&lt;div class="btn-close-thankyou-popup">
&lt;img src="/assets/icons/cross.svg" width="24" height="24" alt="Close this popup" class="lightbox-ignore" />
&lt;/div>
&lt;/div>
&lt;/div>
&lt;hr />
&lt;p>&lt;em>The cover illustration is from&lt;/em> &lt;a href="https://store.steampowered.com/app/4585340/Horse_Magnifier_The_Full_Horse/?curator_clanid=41324400">&lt;strong>Horse Magnifier: The Full Horse&lt;/strong>&lt;/a>, &lt;em>a horse-magnifier game about magnifying horses. You can buy the game on &lt;a href="https://store.steampowered.com/app/4585340/Horse_Magnifier_The_Full_Horse/?curator_clanid=41324400">Steam&lt;/a>, and follow the developer on &lt;a href="https://bsky.app/profile/sketbordcat.bsky.social">Bluesky&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="changes">Changes&lt;/h2>
&lt;p>&lt;strong>39 contributors&lt;/strong> submitted &lt;strong>57 fixes&lt;/strong> for this release. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.7.2">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since the &lt;a href="/article/maintenance-release-godot-4-7-1/">4.7.1 maintenance release&lt;/a>.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/ed1daf0bf001b61586d9930840f2f1394092c079">&lt;code class="language-plaintext highlighter-rouge">ed1daf0bf&lt;/code>&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>3D: Fix 3D ruler tool tooltip (&lt;a href="https://github.com/godotengine/godot/pull/120890">GH-120890&lt;/a>).&lt;/li>
&lt;li>Assetlib: Asset Store: Fix image width on different Editor Scales (&lt;a href="https://github.com/godotengine/godot/pull/121470">GH-121470&lt;/a>).&lt;/li>
&lt;li>Core: Fix crash when failing to open log file for writing (&lt;a href="https://github.com/godotengine/godot/pull/121926">GH-121926&lt;/a>).&lt;/li>
&lt;li>Core: Forbid negative weights in &lt;code class="language-plaintext highlighter-rouge">RandomPCG::rand_weighted&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/120004">GH-120004&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Core: Make it impossible to have more than one main thread, and don’t release unnecessarily (&lt;a href="https://github.com/godotengine/godot/pull/121161">GH-121161&lt;/a>)&lt;/strong>.&lt;/li>
&lt;li>Core: Update &lt;code class="language-plaintext highlighter-rouge">DirAccess::create_temp&lt;/code> to not fail on empty &lt;code class="language-plaintext highlighter-rouge">prefix&lt;/code> parameter (&lt;a href="https://github.com/godotengine/godot/pull/121315">GH-121315&lt;/a>).&lt;/li>
&lt;li>Editor: Don’t auto-translate favorite nodes (&lt;a href="https://github.com/godotengine/godot/pull/122260">GH-122260&lt;/a>).&lt;/li>
&lt;li>Editor: Fix Visual Profiler cursor not appearing when graph is partially filled (&lt;a href="https://github.com/godotengine/godot/pull/118294">GH-118294&lt;/a>).&lt;/li>
&lt;li>GDExtension: Fix &lt;code class="language-plaintext highlighter-rouge">register_extension_class&lt;/code> never iterating parents for exposed checks (&lt;a href="https://github.com/godotengine/godot/pull/120985">GH-120985&lt;/a>).&lt;/li>
&lt;li>GUI: Fix &lt;code class="language-plaintext highlighter-rouge">BaseButton&lt;/code> input when &lt;code class="language-plaintext highlighter-rouge">enable_long_press_as_right_click&lt;/code> is true (&lt;a href="https://github.com/godotengine/godot/pull/120962">GH-120962&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Input: Fix performance issues when moving the mouse with high polling rate on Windows (&lt;a href="https://github.com/godotengine/godot/pull/109639">GH-109639&lt;/a>)&lt;/strong>.&lt;/li>
&lt;li>Input: Fix simultaneous shift release (&lt;a href="https://github.com/godotengine/godot/pull/120327">GH-120327&lt;/a>).&lt;/li>
&lt;li>Input: Wayland: Fix IME popup position under fractional scaling on KDE Plasma (&lt;a href="https://github.com/godotengine/godot/pull/121571">GH-121571&lt;/a>).&lt;/li>
&lt;li>Multiplayer: Fix peers stopping replication on deleting node they spawned with MultiplayerSpawner (&lt;a href="https://github.com/godotengine/godot/pull/109864">GH-109864&lt;/a>).&lt;/li>
&lt;li>Navigation: Fix debug &lt;code class="language-plaintext highlighter-rouge">NavigationRegion3D&lt;/code> colors not updating until project re-start (&lt;a href="https://github.com/godotengine/godot/pull/120939">GH-120939&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Network: mbedTLS: Always use Godot’s OS as entropy source (&lt;a href="https://github.com/godotengine/godot/pull/121759">GH-121759&lt;/a>)&lt;/strong>.&lt;/li>
&lt;li>Platforms: Windows: Add exception handling to &lt;code class="language-plaintext highlighter-rouge">DispatcherQueueOptions&lt;/code> init (&lt;a href="https://github.com/godotengine/godot/pull/122261">GH-122261&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix PCSS shadows using shadow range begin in the wrong space (&lt;a href="https://github.com/godotengine/godot/pull/120774">GH-120774&lt;/a>).&lt;/li>
&lt;li>Thirdparty: Update AccessKit to 0.22.3 (&lt;a href="https://github.com/godotengine/godot/pull/121393">GH-121393&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="known-incompatibilities">Known incompatibilities&lt;/h2>
&lt;p>As of now, there are no known incompatibilities with the previous Godot 4.7.1 release. &lt;strong>We encourage all users to upgrade to 4.7.2.&lt;/strong>&lt;/p>
&lt;p>If you experience any unexpected behavior change in your projects after upgrading to 4.7.2, please &lt;a href="https://github.com/godotengine/godot/issues">file an issue on GitHub&lt;/a>.&lt;/p>
&lt;h2 id="bug-reports">Bug reports&lt;/h2>
&lt;p>As a tester, we encourage you to &lt;a href="https://github.com/godotengine/godot/issues">open bug reports&lt;/a> if you experience issues with this release. Please check the &lt;a href="https://github.com/godotengine/godot/issues">existing issues on GitHub&lt;/a> first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.&lt;/p>
&lt;p>In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).&lt;/p>
&lt;h2 id="support">Support&lt;/h2>
&lt;p>Godot is a non-profit, open-source game engine developed by hundreds of contributors in their free time, as well as a handful of part and full-time developers hired thanks to &lt;a href="https://fund.godotengine.org/">generous donations from the Godot community&lt;/a>. A big thank you to everyone who has contributed &lt;a href="https://github.com/godotengine/godot/blob/master/AUTHORS.md">their time&lt;/a> or &lt;a href="https://github.com/godotengine/godot/blob/master/DONORS.md">their financial support&lt;/a> to the project!&lt;/p>
&lt;p>If you’d like to support the project financially and help us secure our future hires, you can do so using the &lt;a href="https://fund.godotengine.org/">Godot Development Fund&lt;/a> platform managed by the &lt;a href="https://godot.foundation/">Godot Foundation&lt;/a>. There are also several &lt;a href="/donate">alternative ways to donate&lt;/a> which you may find more suitable.&lt;/p>
&lt;p>&lt;a class="btn" href="https://fund.godotengine.org/">Donate now&lt;/a>&lt;/p></description><category>Release</category><guid>https://godotengine.org/article/maintenance-release-godot-4-7-2/</guid><dc:creator>Thaddeus Crews</dc:creator><pubDate>Tue, 18 Aug 2026 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/maintenance-release-godot-4-7-2.jpg</image></item><item><title>Submissions open for Godot 2026 showreel</title><link>https://godotengine.org/article/submissions-open-godot-2026-showreel/</link><summary>Showcase your Godot creations in 2026! We're inviting submissions of short videos featuring your published or in-progress Godot games or tools. Don't miss this chance to be a part of it!</summary><description>&lt;p>Showcase your Godot Engine 2026 creations! We invite you to submit videos featuring your published or in-progress games or tools so we can make the Godot 2026 Showreel.&lt;/p>
&lt;p>Our annual showreels are informative and celebratory showcases, to highlight the wide array of projects developed using the Godot Engine. If you want to participate this year and share your Godot-made game, app, or tool, submit your entry starting today.&lt;/p>
&lt;h2 id="help-us-to-decide">Help us to decide!&lt;/h2>
&lt;p>Like last year, we want to invite more people to participate in the voting phase. So, if you are a member of the &lt;a href="https://fund.godotengine.org/">Development Fund&lt;/a>, you will be able to cast your votes alongside the Godot maintainers! To be eligible to vote, you need to have a recurrent donation active.&lt;/p>
&lt;h2 id="how-to-submit">How to submit&lt;/h2>
&lt;p>You can submit your entry in our &lt;a href="https://showreel.godotengine.org/">Godot Showreel website&lt;/a>. Before submitting, please read the &lt;a href="https://showreel.godotengine.org/about">submission guidelines&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>📅 &lt;strong>Submissions close on October 1st 2026&lt;/strong>&lt;/li>
&lt;li>📅 &lt;strong>Voting from October 2nd until October 16th 2026&lt;/strong>&lt;/li>
&lt;/ul>
&lt;h2 id="need-inspiration">Need inspiration?&lt;/h2>
&lt;p>Check out our &lt;a href="https://www.youtube.com/watch?v=7ZwEmxihlw4&amp;amp;list=PLeG_dAglpVo6EpaO9A1nkwJZOwrfiLdQ8&amp;amp;index=1">showreel playlist&lt;/a> for some creative sparks and see what makes a great submission! Here is last year’s showreel:&lt;/p>
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/7ZwEmxihlw4" frameborder="0" allowfullscreen="" style="width: 100%; aspect-ratio: 16 / 9; height: auto;">&lt;/iframe>
&lt;p>Good luck! We can’t wait to see your creations!&lt;/p></description><category>News</category><guid>https://godotengine.org/article/submissions-open-godot-2026-showreel/</guid><dc:creator>Emi</dc:creator><pubDate>Sat, 15 Aug 2026 13:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/godot-showreel-2024.webp</image></item><item><title>GodotFest 2026 returns to Munich this November</title><link>https://godotengine.org/article/godotfest-2026/</link><summary>The second GodotFest takes place on the 3rd and 4th of November in Munich, Germany.</summary><description>&lt;p>Last November, close to 500 people joined us in Munich for the first GodotFest. We had 34
speakers, two stages, a workshop room, and two busy days of Godot. For a first edition, it was
quite a turnout.&lt;/p>
&lt;p>GodotFest is an annual conference for people who build with Godot. We are the small Munich
team behind GodotCon 23, and we run the event independently, in close cooperation with the
Godot Foundation. We started it because we wanted a place where developers could share what
they had learned, show their games, and meet others working with the engine.&lt;/p>
&lt;p>It worked, so GodotFest is coming back to smartvillage in Munich on the &lt;strong>3rd and 4th of
November 2026&lt;/strong>.&lt;/p>
&lt;iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/CRmwGa2k90U" title="GodotFest 2026 mood trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" style="width: 100%; aspect-ratio: 16 / 9; height: auto;">&lt;/iframe>
&lt;p>This year’s theme is “Godot Means Business”. There will still be plenty of technical talks,
panels and community time, but we are making more room for studios, publishers and
service providers building businesses around Godot. MeetToMatch, powered by
&lt;a href="https://www.photonengine.com/">Photon&lt;/a>, is included with every ticket, so attendees can
arrange meetings before the event.&lt;/p>
&lt;p>There will also be a game showcase, with space to bring your own hardware and let people play
your game. The &lt;a href="https://www.youtube.com/@GodotFest">talks from 2025&lt;/a> are online if you would
like an idea of what to expect from the programme.&lt;/p>
&lt;p>And yes, the food is included again. Every ticket covers premium catering on both days:
breakfast, lunch and afternoon snacks, plus coffee, soft drinks and water throughout the
event. Vegan and gluten-free options will be available.&lt;/p>
&lt;h2 id="call-for-speakers">Call for speakers&lt;/h2>
&lt;p>Did you ship a game with Godot, build a useful tool, or learn something the hard way? We would
like to hear about it. We are looking for talks and panels from developers, artists,
educators, tool makers and community organizers. First-time speakers are welcome, too.&lt;/p>
&lt;p>&lt;a href="https://talks.godotfest.com/godotfest-26/">Submit a proposal&lt;/a>, deadline: &lt;strong>August 31st, 2026 at 13:00 UTC&lt;/strong>&lt;/p>
&lt;p>The deadline was already extended once, so this one is final.&lt;/p>
&lt;h2 id="sponsors">Sponsors&lt;/h2>
&lt;p>We are also looking for sponsors to help make GodotFest happen. If your company would like to
meet Godot developers and studios in Munich, have a look at the
&lt;a href="https://godotfest.com/become-sponsor/">sponsorship page&lt;/a> or write to
&lt;a href="mailto:contact@godotfest.com?subject=Sponsorship%20inquiry">contact@godotfest.com&lt;/a>.&lt;/p>
&lt;h2 id="tickets">Tickets&lt;/h2>
&lt;p>Early Bird tickets have sold out. Regular tickets cost 249€ until &lt;strong>September 30th&lt;/strong> and Late
Bird tickets cost 349€ after that. VIP tickets are 799€ and include the VIP dinner and a
custom shirt.&lt;/p>
&lt;p>&lt;a href="https://tickets.godotfest.com/godotfest/26/">Tickets are on sale here&lt;/a>.&lt;/p>
&lt;p>We will share programme announcements on &lt;a href="https://bsky.app/profile/godotfest.com">Bluesky&lt;/a>,
&lt;a href="https://mastodon.social/@GodotFest">Mastodon&lt;/a> and the
&lt;a href="https://newsletter.godotfest.com/newsletter.html">newsletter&lt;/a>. You can also
&lt;a href="https://discord.com/invite/vA4pNu4TTd">join the Discord&lt;/a>.&lt;/p>
&lt;p>See you in Munich!&lt;/p>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;table>
&lt;tbody>
&lt;tr>
&lt;td>🌐 Website&lt;/td>
&lt;td>&lt;a href="https://godotfest.com/">GodotFest.com&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>📅 Dates&lt;/td>
&lt;td>3rd, 4th of November 2026&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>🌍 Location&lt;/td>
&lt;td>Munich, Germany&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>📍 Venue&lt;/td>
&lt;td>smartvillage Bogenhausen &lt;br />&lt;a href="https://www.openstreetmap.org/node/12025157887">Rosenkavalierplatz 13, 81925 Munich&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>🎤 Call for talks&lt;/td>
&lt;td>&lt;a href="https://talks.godotfest.com/godotfest-26/">talks.godotfest.com&lt;/a>, until August 31st&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>🎟️ Tickets&lt;/td>
&lt;td>&lt;a href="https://tickets.godotfest.com/godotfest/26/">tickets.godotfest.com&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>💬 Discord&lt;/td>
&lt;td>&lt;a href="https://discord.com/invite/vA4pNu4TTd">https://discord.com/invite/vA4pNu4TTd&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description><category>Events</category><guid>https://godotengine.org/article/godotfest-2026/</guid><dc:creator>GodotFest Team</dc:creator><pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/godotfest-2026.jpg</image></item><item><title>Dev snapshot: Godot 4.8 dev 3</title><link>https://godotengine.org/article/dev-snapshot-godot-4-8-dev-3/</link><summary>✅️ TIP: Reading development snapshot articles builds character!</summary><description>&lt;p>With &lt;a href="https://conference.godotengine.org/US/2026/">GodotCon Boston&lt;/a> now behind us, our contributors have had nothing but time and energy to get their most-wanted features over the finish line. While feature freeze still isn’t for at least another month, that hasn’t stopped our community from making rapid progress in their work and reviews, meaning that we have quite a lot to go over today, so buckle up!&lt;/p>
&lt;p>Please consider &lt;a href="#support">supporting the project financially&lt;/a>, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.&lt;/p>
&lt;p>&lt;a href="#downloads">Jump to the &lt;strong>Downloads&lt;/strong> section&lt;/a>, and give it a spin right now, or continue reading to learn more about improvements in this release. You can also try the &lt;a href="https://editor.godotengine.org/releases/4.8.dev3/">&lt;strong>Web editor&lt;/strong>&lt;/a>, the &lt;a href="https://www.meta.com/s/3yJ7i8kop">&lt;strong>XR editor&lt;/strong>&lt;/a>, or the &lt;a href="https://play.google.com/store/apps/details?id=org.godotengine.editor.v4">&lt;strong>Android editor&lt;/strong>&lt;/a> for this release. If you are interested in the latter, please request to join &lt;a href="https://groups.google.com/g/godot-testers">our testing group&lt;/a> to get access to pre-release builds.&lt;/p>
&lt;hr />
&lt;p>&lt;em>The cover illustration is from&lt;/em> &lt;a href="https://store.steampowered.com/app/4113940/Sovereign_Tower/?curator_clanid=41324400">&lt;strong>Sovereign Tower&lt;/strong>&lt;/a>, &lt;em>a story-rich manangement RPG, where you play as the Sovereign of a magical tower and recruit eccentric Knights to your Round Table. You can buy the game on &lt;a href="https://store.steampowered.com/app/4113940/Sovereign_Tower/?curator_clanid=41324400">Steam&lt;/a>, and follow the developers on &lt;a href="https://bsky.app/profile/wildwits.games">Bluesky&lt;/a> and &lt;a href="https://wildwits.games/en/home-english/">their website&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;p>In case you missed them, see the &lt;a href="/article/dev-snapshot-godot-4-8-dev-1/">4.8 dev 1&lt;/a> and &lt;a href="/article/dev-snapshot-godot-4-8-dev-2/">4.8 dev 2&lt;/a> release notes for an overview of some key features which were already in those snapshots, and are therefore still available for testing in 4.8 dev 3.&lt;/p>
&lt;h3 id="documentation-support-for-admonitions">Documentation: Support for admonitions&lt;/h3>
&lt;p>We rarely have the opportunity to showcase improvements in our documentation as proper highlights, much less as the opening item in a snapshot’s blog post! So when something like &lt;a href="https://github.com/Cykyrios">Cyril Bissey&lt;/a>’s work in &lt;a href="https://github.com/godotengine/godot/pull/111375">GH-111375&lt;/a>—salvaged from &lt;a href="https://github.com/Calinou">Hugo Locurcio&lt;/a>’s &lt;a href="https://github.com/godotengine/godot/pull/63079">original PR&lt;/a>—delivers something that’s just &lt;em>begging&lt;/em> for a spotlight, we’ll welcome the opportunity with open arms.&lt;/p>
&lt;p>In particular, our documentation—both in-editor and online—now offer native support for admonitions; That being: the built-in systems many documentation tools provide to highlight crucial information. As time of writing, our documentation tools use simple prefixes like “&lt;strong>Note:&lt;/strong>” or “&lt;strong>Warning:&lt;/strong>” to convey a similar effect, but this method causes critical details to blend in with the rest of the text. So starting now, we’ll begin slowly rolling out admonition replacements for these legacy systems, which will end up looking something like what you see below:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Dark Mode&lt;/th>
&lt;th>Light Mode&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-3/admonitions-dark.webp" alt="A showcase of the new admonitions (dark mode)" />&lt;/td>
&lt;td>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-3/admonitions-light.webp" alt="A showcase of the new admonitions (light mode)" />&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="gdscript-underline-warnings-and-errors-in-editor">GDScript: Underline warnings and errors in editor&lt;/h3>
&lt;p>Another improvement to visual feedback of critical details, and one which you will be able to experience right away, comes in the form of in-editor underlines for GDScript warnings and errors. Courtesy of &lt;a href="https://github.com/Meorge">Malcolm Anderson&lt;/a> in &lt;a href="https://github.com/godotengine/godot/pull/119588">GH-119588&lt;/a>, the debugging process for GDScript will become much more streamlined thanks to the direct and immediate information provided by these underlines.&lt;/p>
&lt;p>Now hang on, you might be thinking: “doesn’t GDScript already &lt;em>have&lt;/em> this support?” Well, yes and no. Yes, because you would previously have a line with a warning/error be highlighted if a problem existed. No, because it highlighted the &lt;em>entire line&lt;/em>, which both obfuscated the problem and risked multiple issues being hidden if they existed on the same line. With these changes, only the relevant portions of a given line will be underlined. For instance, the following codeblock would’ve previously been highlighted in its entirety:&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-3/gdscript-underline.webp" alt="A showcase of the focused in-editor underlines for GDScript warnings/errors" />&lt;/p>
&lt;h3 id="editor-filesystem-quality-of-life">Editor: &lt;code class="language-plaintext highlighter-rouge">FileSystem&lt;/code> quality-of-life&lt;/h3>
&lt;p>&lt;a href="https://github.com/jaydensipe">Jayden Sipe&lt;/a> is cheating a bit with this next point, as they managed to squeeze in &lt;em>two&lt;/em> features worthy of a highlight in &lt;a href="https://github.com/godotengine/godot/pull/119103">GH-119103&lt;/a>. Not that we’re complaining; the more the merrier! Both highlights have to do with improvements to &lt;code class="language-plaintext highlighter-rouge">FileSystem&lt;/code> and the way users interact with it.&lt;/p>
&lt;p>The first of these features is the ability to zoom in/out of the window with a mouse’s scrollwheel. By simply holding &lt;code class="language-plaintext highlighter-rouge">Ctrl&lt;/code> while hovering over a &lt;code class="language-plaintext highlighter-rouge">FileSystem&lt;/code> window, the contents will either growing or shrinking upon scrolling the mouse up or down respectively.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="A showcase of scrollwheel zoom functionality in `FileSystem`">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-3/filesystem-scroll-zoom.mp4" type="video/mp4" />&lt;/video>
&lt;p>Next up is glob-based searching. Sometimes you want to find a type of file or something with a specific prefix, without necessarily narrowing it down to a specific file. By utilizing glob-based search, now your results can explicitly capture whatever use-case you desire.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="A showcase of glob search functionality in `FileSystem`">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-3/filesystem-glob-search.mp4" type="video/mp4" />&lt;/video>
&lt;h3 id="plugin-expose-the-property-clipboard">Plugin: Expose the property clipboard&lt;/h3>
&lt;p>Between this and &lt;a href="/article/dev-snapshot-godot-4-8-dev-1/#core-fuzzysearch-and-fuzzysearchmatch">&lt;code class="language-plaintext highlighter-rouge">FuzzySearch&lt;/code>&lt;/a>, we’ve been on a bit of a roll with granting developers access to previously-internal API. &lt;a href="https://github.com/gelvinp">Jamis Gelvin&lt;/a> took the helm this time around with &lt;a href="https://github.com/godotengine/godot/pull/87087">GH-87087&lt;/a>, granting access to the property clipboard directly. Previously, the only way a property’s contents could be copied/pasted is by the engine itself, meaning that users couldn’t directly modify or access this data. Moving foward, one can leverage &lt;code class="language-plaintext highlighter-rouge">get_property_clipboard()&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">set_property_clipboard()&lt;/code> via &lt;code class="language-plaintext highlighter-rouge">EditorInspector&lt;/code>, granting all developers direct access to this information.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="A showcase of the ability to copy/paste values by utilizing the newly exposed property clipbaord">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-3/property-clipboard.mp4" type="video/mp4" />&lt;/video>
&lt;h3 id="xr-visionos-module">XR: visionOS module&lt;/h3>
&lt;p>Remember &lt;a href="https://github.com/rsanchezsaez">Ricardo Sanchez-Saez&lt;/a>, the contributor responsible for &lt;a href="/article/dev-snapshot-godot-4-5-dev-5/#native-visionos-support">native visionOS support&lt;/a>? Well, their work hasn’t concluded just yet, as they—along with co-authors &lt;a href="https://github.com/stuartcarnie">Stuart Carnie&lt;/a> and &lt;a href="https://github.com/huisedenanhai">huiedenanhai&lt;/a>—bring visionOS to new life as a module in &lt;a href="https://github.com/godotengine/godot/pull/109975">GH-109975&lt;/a>! With these changes, not only has our build server’s logic &lt;a href="https://github.com/godotengine/godot-build-scripts/pull/159">dramatically simplified&lt;/a>, but this lays the groundwork for &lt;a href="https://github.com/godotengine/godot/pull/118332">tvOS support&lt;/a> in the near-future! This is all because… Um…&lt;/p>
&lt;p>Alright, I’ll give it to you straight: I have no idea what any of this is about. These are people way smarter than me that’ve been tirelessly at work over the course of a year to fundamentally change systems I can’t even begin to understand to entirely new systems I only marginally understand. So for the time being, we’ll have to leave it at that, with the promise of more information coming soon™.&lt;/p>
&lt;p>Hopefully the next highlight won’t be as technically involved to a point that it’d necessitate a dedicated blog post as well!&lt;/p>
&lt;h3 id="input-fix-performance-issues-when-moving-the-mouse-with-high-polling-rate-on-windows">Input: Fix performance issues when moving the mouse with high polling rate on Windows&lt;/h3>
&lt;p>Ah.&lt;/p>
&lt;p>To make a long story short: some mice are too fast for Windows; they were simply built different. Fortunately, Godot is also built different, and can now handle those mice like a champ. Hugo, the brain behind &lt;a href="https://github.com/godotengine/godot/pull/109639">GH-109639&lt;/a> which implemented this fix, is preparing a dedicated blog post to give this fix the deep-dive it deserves. In the meantime, enjoy this comically oversimplified comparison:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Before&lt;/th>
&lt;th>After&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;video autoplay="" loop="" muted="" playsinline="" title="Tracking the FPS when moving a high poll-rate mouse: before">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-3/windows-mouse-old.mp4" type="video/mp4" />&lt;/video>&lt;/td>
&lt;td>&lt;video autoplay="" loop="" muted="" playsinline="" title="Tracking the FPS when moving a high poll-rate mouse: after">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-3/windows-mouse-new.mp4" type="video/mp4" />&lt;/video>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>Update:&lt;/strong> The dedicated blog post is now up: &lt;a href="/article/fixing-high-polling-rate-mice-on-windows">Fixing high polling rate mice on Windows in Godot&lt;/a>&lt;/p>
&lt;h3 id="and-more">And more!&lt;/h3>
&lt;p>There are too many exciting changes to list them all here, but here’s a curated selection:&lt;/p>
&lt;ul>
&lt;li>Editor: Add Clear Project Cache option (&lt;a href="https://github.com/godotengine/godot/pull/120093">GH-120093&lt;/a>).&lt;/li>
&lt;li>Editor: Android: Enable screen orientation change on large screens and in Project Manager (&lt;a href="https://github.com/godotengine/godot/pull/121387">GH-121387&lt;/a>).&lt;/li>
&lt;li>Editor: Automatically create default resources in the editor for many objects (&lt;a href="https://github.com/godotengine/godot/pull/88647">GH-88647&lt;/a>).&lt;/li>
&lt;li>Editor: Fix metadata formatting in inspector (&lt;a href="https://github.com/godotengine/godot/pull/108878">GH-108878&lt;/a>).&lt;/li>
&lt;li>GDScript: Fix shutdown crash when &lt;code class="language-plaintext highlighter-rouge">ScriptInstance&lt;/code> references its owner (&lt;a href="https://github.com/godotengine/godot/pull/121762">GH-121762&lt;/a>).&lt;/li>
&lt;li>GUI: TabBar: Add options for tab sizing strategy (&lt;a href="https://github.com/godotengine/godot/pull/113385">GH-113385&lt;/a>).&lt;/li>
&lt;li>GUI: Use OS taskbar progress when &lt;code class="language-plaintext highlighter-rouge">ProgressDialog&lt;/code> is shown (&lt;a href="https://github.com/godotengine/godot/pull/121505">GH-121505&lt;/a>).&lt;/li>
&lt;li>Physics: Add &lt;code class="language-plaintext highlighter-rouge">get_velocity_at_(local)_position()&lt;/code> to &lt;code class="language-plaintext highlighter-rouge">RigidBody2D&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/121142">GH-121142&lt;/a>) and &lt;code class="language-plaintext highlighter-rouge">RigidBody3D&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/121122">GH-121122&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix directional shadow culling for orthogonal cameras (&lt;a href="https://github.com/godotengine/godot/pull/121775">GH-121775&lt;/a>).&lt;/li>
&lt;li>Rendering: Improve SPIR-V reflection performance (&lt;a href="https://github.com/godotengine/godot/pull/121835">GH-121835&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>91 contributors&lt;/strong> submitted &lt;strong>176 fixes&lt;/strong> for this release. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.8-dev3">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since &lt;a href="/article/dev-snapshot-godot-4-8-dev-2/">4.8 dev 2&lt;/a>. You can also review &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.8">all changes included in 4.8&lt;/a> compared to the previous &lt;a href="/releases/4.7/">4.7 feature release&lt;/a>.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/51105ccbe58381774ecd7a7486d564b202a5192e">&lt;code class="language-plaintext highlighter-rouge">51105ccbe&lt;/code>&lt;/a>.&lt;/p>
&lt;h2 id="downloads">Downloads&lt;/h2>
&lt;div class="card card-download">
&lt;a class="card-download-link" href="/download/archive/4.8-dev3">
Download Godot 4.8 dev3
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/dev-snapshot-godot-4-8-dev-3.jpg" />
&lt;div class="card-download-platforms">
&lt;div class="download-platform platform-linux">
&lt;img width="24" height="24" src="/assets/images/platforms/linux.svg" title="Linux" alt="Linux" class="lightbox-ignore" />
Linux
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev3&amp;amp;slug=linux.x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev3&amp;amp;slug=mono_linux_x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-linux">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-macos">
&lt;img width="24" height="24" src="/assets/images/platforms/macos.svg" title="macOS" alt="macOS" class="lightbox-ignore" />
macOS
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev3&amp;amp;slug=macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev3&amp;amp;slug=mono_macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary btn-download-primary--mono platform-macos">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-windows">
&lt;img width="24" height="24" src="/assets/images/platforms/windows.svg" title="Windows" alt="Windows" class="lightbox-ignore" />
Windows
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev3&amp;amp;slug=win64.exe.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev3&amp;amp;slug=mono_win64.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-windows">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;div class="card-download-sublinks">
&lt;a class="card-download-other" href="/download/archive/4.8-dev3">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="https://fund.godotengine.org/">
Make a Donation
&lt;/a>
&lt;/div>
&lt;/div>
&lt;style>
.thankyou-wrapper {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.85);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 10;
}
.thankyou {
background: var(--base-color);
box-shadow: var(--more-shadow);
padding: 30px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
position: relative;
border-radius: 13px;
}
.thankyou-reading {
font-size: 16px;
}
.thankyou-reading-list {
font-size: 16px;
margin: 0;
margin-left: 48px;
padding-left: 0;
}
.thankyou-donate {
margin-bottom: 24px;
text-align: center;
}
.btn.btn-donate {
background-color: var(--primary-color);
color: hsla(0, 0%, 100%, 0.9);
font-size: 22px;
font-weight: 600;
margin-bottom: 26px;
}
.thankyou h2 {
text-shadow: var(--base-shadow);
font-size: 36px;
font-weight: 800;
margin-bottom: 12px;
}
.thankyou h2 .anchored-link {
/* Hiding the anchored text automatically added on blogposts */
display: none !important;
}
.thankyou p {
max-width: 620px;
font-size: 25px;
}
@media (max-width: 768px) {
.thankyou-wrapper {
display: block;
}
.thankyou {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: scroll;
padding: 30px 40px 18px 40px;
}
.thankyou-reading-list {
margin-left: 24px;
}
.btn-close-thankyou-popup {
width: 48px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
}
}
.btn-close-thankyou-popup {
cursor: pointer;
position: absolute;
top: 12px;
right: 12px;
}
.btn-close-thankyou-popup img {
background: transparent !important; /* for overwriting the style in the blogposts img */
}
@media (prefers-color-scheme: light) {
.btn-close-thankyou-popup img {
filter: invert(1);
opacity: 0.75;
}
}
&lt;/style>
&lt;script>
document.addEventListener('DOMContentLoaded', () => {
const thankYouWrapper = document.getElementById('thank-you');
// Close itself, when clicked outside of the popup area.
thankYouWrapper.addEventListener('click', (e) => {
if (e.target === thankYouWrapper) {
thankYouWrapper.style.display = 'none';
}
});
// Close with a close button.
const thankYouBackButton = document.querySelector('.btn-close-thankyou-popup');
thankYouBackButton.addEventListener('click', () => {
thankYouWrapper.style.display = 'none';
});
// Open from the main download buttons.
const downloadButtons = document.querySelectorAll('.btn-download, .download-button');
downloadButtons.forEach((it) => {
if (it.dataset?.external === "yes") {
return;
}
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
document.querySelector('.btn.btn-donate').focus();
});
});
// Open from the all downloads list.
const downloadLinks = document.querySelectorAll('.download-link');
downloadLinks.forEach((it) => {
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
});
});
// Close the dialog when the user presses the escape key.
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
thankYouWrapper.style.display = 'none';
}
});
});
&lt;/script>
&lt;div class="thankyou-wrapper" id="thank-you" style="display: none;">
&lt;div class="thankyou">
&lt;h2>Godot is downloading...&lt;/h2>
&lt;p class="thankyou-donate">
Godot exists thanks to donations from people like you. Help us continue our work:
&lt;/p>
&lt;a href="https://fund.godotengine.org" class="btn btn-donate">
Make a Donation
&lt;/a>
&lt;div class="btn-close-thankyou-popup">
&lt;img src="/assets/icons/cross.svg" width="24" height="24" alt="Close this popup" class="lightbox-ignore" />
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>&lt;strong>Standard build&lt;/strong> includes support for GDScript and GDExtension.&lt;/p>
&lt;p>&lt;strong>.NET build&lt;/strong> (marked as &lt;code class="language-plaintext highlighter-rouge">mono&lt;/code>) includes support for C#, as well as GDScript and GDExtension.&lt;/p>
&lt;div class="card card-warning">
&lt;p>
While engine maintainers try their best to ensure that each preview snapshot and release candidate is stable, this is by definition &lt;strong>a pre-release piece of software&lt;/strong>. Be sure to make frequent backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.
&lt;/p>
&lt;/div>
&lt;h2 id="known-issues">Known issues&lt;/h2>
&lt;p>With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of &lt;a href="https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug">known bugs&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>There are currently no known issues introduced by this release.&lt;/li>
&lt;/ul>
&lt;h2 id="bug-reports">Bug reports&lt;/h2>
&lt;p>As a tester, we encourage you to &lt;a href="https://github.com/godotengine/godot/issues">open bug reports&lt;/a> if you experience issues with this release. Please check the &lt;a href="https://github.com/godotengine/godot/issues">existing issues on GitHub&lt;/a> first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.&lt;/p>
&lt;p>In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).&lt;/p>
&lt;h2 id="support">Support&lt;/h2>
&lt;p>Godot is a non-profit, open-source game engine developed by hundreds of contributors in their free time, as well as a handful of part and full-time developers hired thanks to &lt;a href="https://fund.godotengine.org/">generous donations from the Godot community&lt;/a>. A big thank you to everyone who has contributed &lt;a href="https://github.com/godotengine/godot/blob/master/AUTHORS.md">their time&lt;/a> or &lt;a href="https://github.com/godotengine/godot/blob/master/DONORS.md">their financial support&lt;/a> to the project!&lt;/p>
&lt;p>If you’d like to support the project financially and help us secure our future hires, you can do so using the &lt;a href="https://fund.godotengine.org/">Godot Development Fund&lt;/a> platform managed by the &lt;a href="https://godot.foundation/">Godot Foundation&lt;/a>. There are also several &lt;a href="/donate">alternative ways to donate&lt;/a> which you may find more suitable.&lt;/p>
&lt;p>&lt;a class="btn" href="https://fund.godotengine.org/">Donate now&lt;/a>&lt;/p></description><category>Pre-release</category><guid>https://godotengine.org/article/dev-snapshot-godot-4-8-dev-3/</guid><dc:creator>Thaddeus Crews</dc:creator><pubDate>Fri, 07 Aug 2026 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/dev-snapshot-godot-4-8-dev-3.jpg</image></item><item><title>Release candidate: Godot 4.7.2 RC 1</title><link>https://godotengine.org/article/release-candidate-godot-4-7-2-rc-1/</link><summary>What happens when you stabilize stability? Let's find out!</summary><description>&lt;p>A month and a half has passed since our initial release of &lt;a href="/releases/4.7/">Godot 4.7&lt;/a>, which was then followed up with the &lt;a href="/article/maintenance-release-godot-4-7-1/">Godot 4.7.1 maintenance release&lt;/a> nearly three weeks ago. While we stand by the stable foundation of our maintenance releases, that doesn’t mean we’re ready to stop giving support to our most recently released version. In fact, thanks to the amount of work put into the &lt;a href="/article/dev-snapshot-godot-4-8-dev-2/">in-progress 4.8 builds&lt;/a>, the amount of resolved issues and regression fixes has only gone up! As such, we’re eager to deliver yet another maintenance release in the near future, starting with this initial release candidate: Godot 4.7.2 RC 1!&lt;/p>
&lt;p>Please consider &lt;a href="#support">supporting the project financially&lt;/a>, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.&lt;/p>
&lt;p>&lt;a href="#downloads">Jump to the &lt;strong>Downloads&lt;/strong> section&lt;/a>, and give it a spin right now, or continue reading to learn more about improvements in this release. You can also try the &lt;a href="https://editor.godotengine.org/releases/4.7.2.rc1/">&lt;strong>Web editor&lt;/strong>&lt;/a>, the &lt;a href="https://www.meta.com/s/6Ls6Bfa34">&lt;strong>XR editor&lt;/strong>&lt;/a>, or the &lt;a href="https://play.google.com/store/apps/details?id=org.godotengine.editor.v4">&lt;strong>Android editor&lt;/strong>&lt;/a> for this release. If you are interested in the latter, please request to join &lt;a href="https://groups.google.com/g/godot-testers">our testing group&lt;/a> to get access to pre-release builds.&lt;/p>
&lt;hr />
&lt;p>&lt;em>The cover illustration is from&lt;/em> &lt;a href="https://store.steampowered.com/app/4519130/MOLDRISE/?curator_clanid=41324400">&lt;strong>MOLDRISE&lt;/strong>&lt;/a>, &lt;em>a psychological horror game where you must go up, go up, Go Up, Go Up, GO UP, GO UP, GO—. You can buy the game on &lt;a href="https://store.steampowered.com/app/4519130/MOLDRISE/?curator_clanid=41324400">Steam&lt;/a>, and follow the developer on &lt;a href="https://bsky.app/profile/picster.bsky.social">Bluesky&lt;/a>, &lt;a href="https://www.youtube.com/@picster">YouTube&lt;/a>, and &lt;a href="https://picster.itch.io/">itch.io&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;p>This section covers the most relevant changes made since the &lt;a href="/article/maintenance-release-godot-4-7-1/">4.7.1 maintenance release&lt;/a>, which are largely regression fixes (critical changes highlighted in bold):&lt;/p>
&lt;ul>
&lt;li>3D: Fix 3D ruler tool tooltip (&lt;a href="https://github.com/godotengine/godot/pull/120890">GH-120890&lt;/a>).&lt;/li>
&lt;li>Assetlib: Asset Store: Fix image width on different Editor Scales (&lt;a href="https://github.com/godotengine/godot/pull/121470">GH-121470&lt;/a>).&lt;/li>
&lt;li>Core: Fix crash when failing to open log file for writing (&lt;a href="https://github.com/godotengine/godot/pull/121926">GH-121926&lt;/a>).&lt;/li>
&lt;li>Core: Forbid negative weights in &lt;code class="language-plaintext highlighter-rouge">RandomPCG::rand_weighted&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/120004">GH-120004&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Core: Make it impossible to have more than one main thread, and don’t release unnecessarily (&lt;a href="https://github.com/godotengine/godot/pull/121161">GH-121161&lt;/a>)&lt;/strong>.&lt;/li>
&lt;li>Core: Update &lt;code class="language-plaintext highlighter-rouge">DirAccess::create_temp&lt;/code> to not fail on empty &lt;code class="language-plaintext highlighter-rouge">prefix&lt;/code> parameter (&lt;a href="https://github.com/godotengine/godot/pull/121315">GH-121315&lt;/a>).&lt;/li>
&lt;li>Editor: Fix Visual Profiler cursor not appearing when graph is partially filled (&lt;a href="https://github.com/godotengine/godot/pull/118294">GH-118294&lt;/a>).&lt;/li>
&lt;li>GUI: Fix &lt;code class="language-plaintext highlighter-rouge">BaseButton&lt;/code> input when &lt;code class="language-plaintext highlighter-rouge">enable_long_press_as_right_click&lt;/code> is true (&lt;a href="https://github.com/godotengine/godot/pull/120962">GH-120962&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Input: Fix performance issues when moving the mouse with high polling rate on Windows (&lt;a href="https://github.com/godotengine/godot/pull/109639">GH-109639&lt;/a>)&lt;/strong>.&lt;/li>
&lt;li>Input: Fix simultaneous shift release (&lt;a href="https://github.com/godotengine/godot/pull/120327">GH-120327&lt;/a>).&lt;/li>
&lt;li>Input: Wayland: Fix IME popup position under fractional scaling on KDE Plasma (&lt;a href="https://github.com/godotengine/godot/pull/121571">GH-121571&lt;/a>).&lt;/li>
&lt;li>Multiplayer: Fix peers stopping replication on deleting node they spawned with MultiplayerSpawner (&lt;a href="https://github.com/godotengine/godot/pull/109864">GH-109864&lt;/a>).&lt;/li>
&lt;li>Navigation: Fix debug &lt;code class="language-plaintext highlighter-rouge">NavigationRegion3D&lt;/code> colors not updating until project re-start (&lt;a href="https://github.com/godotengine/godot/pull/120939">GH-120939&lt;/a>).&lt;/li>
&lt;li>&lt;strong>Network: mbedTLS: Always use Godot’s OS as entropy source (&lt;a href="https://github.com/godotengine/godot/pull/121759">GH-121759&lt;/a>)&lt;/strong>.&lt;/li>
&lt;li>Rendering: Fix PCSS shadows using shadow range begin in the wrong space (&lt;a href="https://github.com/godotengine/godot/pull/120774">GH-120774&lt;/a>).&lt;/li>
&lt;li>Thirdparty: Update AccessKit to 0.22.3 (&lt;a href="https://github.com/godotengine/godot/pull/121393">GH-121393&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>37 contributors&lt;/strong> submitted &lt;strong>43 improvements&lt;/strong> for this release. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.7.2-rc1">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since the &lt;a href="/article/maintenance-release-godot-4-7-1/">4.7.1 maintenance release&lt;/a>.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/36a04fe528e63567203b28d0e8b27591ddee7915">&lt;code class="language-plaintext highlighter-rouge">36a04fe52&lt;/code>&lt;/a>.&lt;/p>
&lt;h2 id="downloads">Downloads&lt;/h2>
&lt;div class="card card-download">
&lt;a class="card-download-link" href="/download/archive/4.7.2-rc1">
Download Godot 4.7.2 rc1
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/release-candidate-godot-4-7-2-rc-1.jpg" />
&lt;div class="card-download-platforms">
&lt;div class="download-platform platform-linux">
&lt;img width="24" height="24" src="/assets/images/platforms/linux.svg" title="Linux" alt="Linux" class="lightbox-ignore" />
Linux
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.7.2&amp;amp;flavor=rc1&amp;amp;slug=linux.x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.7.2&amp;amp;flavor=rc1&amp;amp;slug=mono_linux_x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-linux">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-macos">
&lt;img width="24" height="24" src="/assets/images/platforms/macos.svg" title="macOS" alt="macOS" class="lightbox-ignore" />
macOS
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.7.2&amp;amp;flavor=rc1&amp;amp;slug=macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.7.2&amp;amp;flavor=rc1&amp;amp;slug=mono_macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary btn-download-primary--mono platform-macos">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-windows">
&lt;img width="24" height="24" src="/assets/images/platforms/windows.svg" title="Windows" alt="Windows" class="lightbox-ignore" />
Windows
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.7.2&amp;amp;flavor=rc1&amp;amp;slug=win64.exe.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.7.2&amp;amp;flavor=rc1&amp;amp;slug=mono_win64.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-windows">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;div class="card-download-sublinks">
&lt;a class="card-download-other" href="/download/archive/4.7.2-rc1">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="https://fund.godotengine.org/">
Make a Donation
&lt;/a>
&lt;/div>
&lt;/div>
&lt;style>
.thankyou-wrapper {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.85);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 10;
}
.thankyou {
background: var(--base-color);
box-shadow: var(--more-shadow);
padding: 30px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
position: relative;
border-radius: 13px;
}
.thankyou-reading {
font-size: 16px;
}
.thankyou-reading-list {
font-size: 16px;
margin: 0;
margin-left: 48px;
padding-left: 0;
}
.thankyou-donate {
margin-bottom: 24px;
text-align: center;
}
.btn.btn-donate {
background-color: var(--primary-color);
color: hsla(0, 0%, 100%, 0.9);
font-size: 22px;
font-weight: 600;
margin-bottom: 26px;
}
.thankyou h2 {
text-shadow: var(--base-shadow);
font-size: 36px;
font-weight: 800;
margin-bottom: 12px;
}
.thankyou h2 .anchored-link {
/* Hiding the anchored text automatically added on blogposts */
display: none !important;
}
.thankyou p {
max-width: 620px;
font-size: 25px;
}
@media (max-width: 768px) {
.thankyou-wrapper {
display: block;
}
.thankyou {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: scroll;
padding: 30px 40px 18px 40px;
}
.thankyou-reading-list {
margin-left: 24px;
}
.btn-close-thankyou-popup {
width: 48px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
}
}
.btn-close-thankyou-popup {
cursor: pointer;
position: absolute;
top: 12px;
right: 12px;
}
.btn-close-thankyou-popup img {
background: transparent !important; /* for overwriting the style in the blogposts img */
}
@media (prefers-color-scheme: light) {
.btn-close-thankyou-popup img {
filter: invert(1);
opacity: 0.75;
}
}
&lt;/style>
&lt;script>
document.addEventListener('DOMContentLoaded', () => {
const thankYouWrapper = document.getElementById('thank-you');
// Close itself, when clicked outside of the popup area.
thankYouWrapper.addEventListener('click', (e) => {
if (e.target === thankYouWrapper) {
thankYouWrapper.style.display = 'none';
}
});
// Close with a close button.
const thankYouBackButton = document.querySelector('.btn-close-thankyou-popup');
thankYouBackButton.addEventListener('click', () => {
thankYouWrapper.style.display = 'none';
});
// Open from the main download buttons.
const downloadButtons = document.querySelectorAll('.btn-download, .download-button');
downloadButtons.forEach((it) => {
if (it.dataset?.external === "yes") {
return;
}
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
document.querySelector('.btn.btn-donate').focus();
});
});
// Open from the all downloads list.
const downloadLinks = document.querySelectorAll('.download-link');
downloadLinks.forEach((it) => {
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
});
});
// Close the dialog when the user presses the escape key.
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
thankYouWrapper.style.display = 'none';
}
});
});
&lt;/script>
&lt;div class="thankyou-wrapper" id="thank-you" style="display: none;">
&lt;div class="thankyou">
&lt;h2>Godot is downloading...&lt;/h2>
&lt;p class="thankyou-donate">
Godot exists thanks to donations from people like you. Help us continue our work:
&lt;/p>
&lt;a href="https://fund.godotengine.org" class="btn btn-donate">
Make a Donation
&lt;/a>
&lt;div class="btn-close-thankyou-popup">
&lt;img src="/assets/icons/cross.svg" width="24" height="24" alt="Close this popup" class="lightbox-ignore" />
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>&lt;strong>Standard build&lt;/strong> includes support for GDScript and GDExtension.&lt;/p>
&lt;p>&lt;strong>.NET build&lt;/strong> (marked as &lt;code class="language-plaintext highlighter-rouge">mono&lt;/code>) includes support for C#, as well as GDScript and GDExtension.&lt;/p>
&lt;div class="card card-warning">
&lt;p>
While engine maintainers try their best to ensure that each preview snapshot and release candidate is stable, this is by definition &lt;strong>a pre-release piece of software&lt;/strong>. Be sure to make frequent backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.
&lt;/p>
&lt;/div>
&lt;h2 id="known-issues">Known issues&lt;/h2>
&lt;p>During the Release Candidate stage, we focus exclusively on solving showstopping regressions (i.e. something that worked in a previous release is now broken, without workaround). You can have a look at our current &lt;a href="https://github.com/orgs/godotengine/projects/61">list of regressions and significant issues&lt;/a> which we aim to address before releasing 4.7.2. This list is dynamic and will be updated if we discover new showstopping issues after more users start testing the RC snapshots.&lt;/p>
&lt;p>With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of &lt;a href="https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug">known bugs&lt;/a>.&lt;/p>
&lt;h2 id="bug-reports">Bug reports&lt;/h2>
&lt;p>As a tester, we encourage you to &lt;a href="https://github.com/godotengine/godot/issues">open bug reports&lt;/a> if you experience issues with this release. Please check the &lt;a href="https://github.com/godotengine/godot/issues">existing issues on GitHub&lt;/a> first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.&lt;/p>
&lt;p>In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).&lt;/p>
&lt;h2 id="support">Support&lt;/h2>
&lt;p>Godot is a non-profit, open-source game engine developed by hundreds of contributors in their free time, as well as a handful of part and full-time developers hired thanks to &lt;a href="https://fund.godotengine.org/">generous donations from the Godot community&lt;/a>. A big thank you to everyone who has contributed &lt;a href="https://github.com/godotengine/godot/blob/master/AUTHORS.md">their time&lt;/a> or &lt;a href="https://github.com/godotengine/godot/blob/master/DONORS.md">their financial support&lt;/a> to the project!&lt;/p>
&lt;p>If you’d like to support the project financially and help us secure our future hires, you can do so using the &lt;a href="https://fund.godotengine.org/">Godot Development Fund&lt;/a>.&lt;/p>
&lt;p>&lt;a class="btn" href="https://fund.godotengine.org/">Donate now&lt;/a>&lt;/p></description><category>Pre-release</category><guid>https://godotengine.org/article/release-candidate-godot-4-7-2-rc-1/</guid><dc:creator>Thaddeus Crews</dc:creator><pubDate>Mon, 03 Aug 2026 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/release-candidate-godot-4-7-2-rc-1.jpg</image></item><item><title>Dev snapshot: Godot 4.8 dev 2</title><link>https://godotengine.org/article/dev-snapshot-godot-4-8-dev-2/</link><summary>The cost of convenience? Nothing!</summary><description>&lt;p>Happy &lt;a href="https://conference.godotengine.org/US/2026/">GodotCon Boston&lt;/a> for those who celebrate! While many key contributors are already at this event as we speak, that doesn’t mean that development snapshots are slowing down anytime soon. We hope anyone that couldn’t make it to the event this year looks forward to further coverage and highlights in the near future, as you enjoy Godot 4.8 dev 2 in the meantime!&lt;/p>
&lt;p>Please consider &lt;a href="#support">supporting the project financially&lt;/a>, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.&lt;/p>
&lt;p>&lt;a href="#downloads">Jump to the &lt;strong>Downloads&lt;/strong> section&lt;/a>, and give it a spin right now, or continue reading to learn more about improvements in this release. You can also try the &lt;a href="https://editor.godotengine.org/releases/4.8.dev2/">&lt;strong>Web editor&lt;/strong>&lt;/a>, the &lt;a href="https://www.meta.com/s/3yJ7i8kop">&lt;strong>XR editor&lt;/strong>&lt;/a>, or the &lt;a href="https://play.google.com/store/apps/details?id=org.godotengine.editor.v4">&lt;strong>Android editor&lt;/strong>&lt;/a> for this release. If you are interested in the latter, please request to join &lt;a href="https://groups.google.com/g/godot-testers">our testing group&lt;/a> to get access to pre-release builds.&lt;/p>
&lt;hr />
&lt;p>&lt;em>The cover illustration is from&lt;/em> &lt;a href="https://store.steampowered.com/app/3641000/The_Incident_at_Galley_House/?curator_clanid=41324400">&lt;strong>The Incident at Galley House&lt;/strong>&lt;/a>, &lt;em>a detective game where you wield a strange contraption to reveal the truth behind the 1936 tragedy at Galley House. You can buy the game on &lt;a href="https://store.steampowered.com/app/3641000/The_Incident_at_Galley_House/?curator_clanid=41324400">Steam&lt;/a>, and follow the developers—&lt;a href="https://william-rous.itch.io/">William Rous&lt;/a> and &lt;a href="https://bsky.app/profile/eviltrout.com">Evil Trout&lt;/a>—on their socials.&lt;/em>&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;p>In case you missed them, see the &lt;a href="/article/dev-snapshot-godot-4-8-dev-1/">4.8 dev 1&lt;/a> release notes for an overview of some key features which were already in that snapshot, and are therefore still available for testing in 4.8 dev 2.&lt;/p>
&lt;h3 id="editor-automatically-expand-created-resources-in-inspector">Editor: Automatically expand created resources in inspector&lt;/h3>
&lt;p>&lt;a href="https://github.com/Calinou">Hugo Locurcio&lt;/a> starts our roundup with &lt;a href="https://github.com/godotengine/godot/pull/99725">GH-99725&lt;/a>, bringing a long-desired QOL addition to the inspector: auto-expansion of resources. While most of our inspector items automatically revealed themselves when initialized, resources always existed as an unfortunate blindspot. As demonstrated below, this will no longer be the case!&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="A demonstration of the auto-expansion functionality by creating several new resources in succession">
&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-2/resource-expansion.mp4" type="video/mp4" />
&lt;/video>
&lt;h3 id="editor-add-play-scene-option-to-file-system-context-menu">Editor: Add “Play Scene” option to file system context menu&lt;/h3>
&lt;p>While the process of playing a scene is already relatively streamlined, there’s always potential for further improvement, if you know where to look. Case-in-point: why not make it possible to play a scene from the file system directly? &lt;a href="https://github.com/DexterFstone">DexterFstone&lt;/a> had this exact same thought, and decided to do something about it in &lt;a href="https://github.com/godotengine/godot/pull/111941">GH-111941&lt;/a>. Now any scene can be played from the file system’s context menu alone; no extra steps required!&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-2/play-scene-context-menu.webp" alt="A showcase of the new &amp;quot;Play Scene&amp;quot; option in the file system context menu" />&lt;/p>
&lt;h3 id="core-write-object-variants-with-n-between-properties">Core: Write Object variants with &lt;code class="language-plaintext highlighter-rouge">\n&lt;/code> between properties&lt;/h3>
&lt;p>While version control is a system we wholeheartedly stand by for production environments, there are undoubtably annoyances that come from it. There’s a reason that most developers will opt for storing settings as text instead of binary data, as the former allows for seamless integration of &lt;code class="language-plaintext highlighter-rouge">diff&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">merge&lt;/code> functionality.&lt;/p>
&lt;p>…In theory, anyway.&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-2/object-diff-old.webp" alt="The original `diff` view of a modified object" />&lt;/p>
&lt;p>Yeah, this advantage kind of breaks apart when everything is batched together on a single line, as is the case with any &lt;code class="language-plaintext highlighter-rouge">Object&lt;/code> data. This makes parsing differences between file versions nearly impossible at a glance, and effectively makes any merge tool have to treat the file as if it were binary to begin with. &lt;a href="https://github.com/robert-wallis">Robert Wallis&lt;/a> recognized these concerns, and spearheaded &lt;a href="https://github.com/godotengine/godot/pull/92102">GH-92102&lt;/a> to give &lt;code class="language-plaintext highlighter-rouge">Object&lt;/code> some breathing room.&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-2/object-diff-new.webp" alt="The updated `diff` view of a modified object" />&lt;/p>
&lt;h3 id="and-more">And more!&lt;/h3>
&lt;p>There are too many exciting changes to list them all here, but here’s a curated selection:&lt;/p>
&lt;ul>
&lt;li>2D: Add proper instructions for using scene paint 2D (&lt;a href="https://github.com/godotengine/godot/pull/121227">GH-121227&lt;/a>)&lt;/li>
&lt;li>3D: Re-enable freelook inertia by default in the 3D editor (&lt;a href="https://github.com/godotengine/godot/pull/121478">GH-121478&lt;/a>).&lt;/li>
&lt;li>Assetlib: Set the Asset Store’s default sorting to highest scored (&lt;a href="https://github.com/godotengine/godot/pull/121112">GH-121112&lt;/a>).&lt;/li>
&lt;li>Core: Make it impossible to have more than one main thread, and don’t release unnecessarily (&lt;a href="https://github.com/godotengine/godot/pull/121161">GH-121161&lt;/a>).&lt;/li>
&lt;li>Core: Speed up removing many child nodes (&lt;a href="https://github.com/godotengine/godot/pull/120942">GH-120942&lt;/a>).&lt;/li>
&lt;li>Editor: Show doc tooltips in quick settings (&lt;a href="https://github.com/godotengine/godot/pull/121278">GH-121278&lt;/a>).&lt;/li>
&lt;li>Editor: Show inspector warning on deprecated properties (&lt;a href="https://github.com/godotengine/godot/pull/121364">GH-121364&lt;/a>).&lt;/li>
&lt;li>Export: Make shader compiler float constant formatting deterministic (&lt;a href="https://github.com/godotengine/godot/pull/120968">GH-120968&lt;/a>).&lt;/li>
&lt;li>GDScript: Make language shutdown more crash resilient (&lt;a href="https://github.com/godotengine/godot/pull/120976">GH-120976&lt;/a>).&lt;/li>
&lt;li>Input: Ignore joypads on unfocused window by default for new projects (&lt;a href="https://github.com/godotengine/godot/pull/120399">GH-120399&lt;/a>).&lt;/li>
&lt;li>Rendering: Use non-volumetric fog in WorldEnvironment sky reflections (&lt;a href="https://github.com/godotengine/godot/pull/107958">GH-107958&lt;/a>).&lt;/li>
&lt;li>Thirdparty: Update to Jolt Physics 5.6.0 (&lt;a href="https://github.com/godotengine/godot/pull/121260">GH-121260&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>93 contributors&lt;/strong> submitted &lt;strong>197 fixes&lt;/strong> for this release. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.8-dev2">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since &lt;a href="/article/dev-snapshot-godot-4-8-dev-1/">4.8 dev 1&lt;/a>. You can also review &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.8">all changes included in 4.8&lt;/a> compared to the previous &lt;a href="/releases/4.7/">4.7 feature release&lt;/a>.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/7220d456dcf116ae5499505a237b449c0b00cfce">&lt;code class="language-plaintext highlighter-rouge">7220d456d&lt;/code>&lt;/a>.&lt;/p>
&lt;h2 id="downloads">Downloads&lt;/h2>
&lt;div class="card card-download">
&lt;a class="card-download-link" href="/download/archive/4.8-dev2">
Download Godot 4.8 dev2
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/dev-snapshot-godot-4-8-dev-2.jpg" />
&lt;div class="card-download-platforms">
&lt;div class="download-platform platform-linux">
&lt;img width="24" height="24" src="/assets/images/platforms/linux.svg" title="Linux" alt="Linux" class="lightbox-ignore" />
Linux
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev2&amp;amp;slug=linux.x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev2&amp;amp;slug=mono_linux_x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-linux">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-macos">
&lt;img width="24" height="24" src="/assets/images/platforms/macos.svg" title="macOS" alt="macOS" class="lightbox-ignore" />
macOS
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev2&amp;amp;slug=macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev2&amp;amp;slug=mono_macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary btn-download-primary--mono platform-macos">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-windows">
&lt;img width="24" height="24" src="/assets/images/platforms/windows.svg" title="Windows" alt="Windows" class="lightbox-ignore" />
Windows
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev2&amp;amp;slug=win64.exe.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev2&amp;amp;slug=mono_win64.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-windows">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;div class="card-download-sublinks">
&lt;a class="card-download-other" href="/download/archive/4.8-dev2">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="https://fund.godotengine.org/">
Make a Donation
&lt;/a>
&lt;/div>
&lt;/div>
&lt;style>
.thankyou-wrapper {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.85);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 10;
}
.thankyou {
background: var(--base-color);
box-shadow: var(--more-shadow);
padding: 30px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
position: relative;
border-radius: 13px;
}
.thankyou-reading {
font-size: 16px;
}
.thankyou-reading-list {
font-size: 16px;
margin: 0;
margin-left: 48px;
padding-left: 0;
}
.thankyou-donate {
margin-bottom: 24px;
text-align: center;
}
.btn.btn-donate {
background-color: var(--primary-color);
color: hsla(0, 0%, 100%, 0.9);
font-size: 22px;
font-weight: 600;
margin-bottom: 26px;
}
.thankyou h2 {
text-shadow: var(--base-shadow);
font-size: 36px;
font-weight: 800;
margin-bottom: 12px;
}
.thankyou h2 .anchored-link {
/* Hiding the anchored text automatically added on blogposts */
display: none !important;
}
.thankyou p {
max-width: 620px;
font-size: 25px;
}
@media (max-width: 768px) {
.thankyou-wrapper {
display: block;
}
.thankyou {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: scroll;
padding: 30px 40px 18px 40px;
}
.thankyou-reading-list {
margin-left: 24px;
}
.btn-close-thankyou-popup {
width: 48px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
}
}
.btn-close-thankyou-popup {
cursor: pointer;
position: absolute;
top: 12px;
right: 12px;
}
.btn-close-thankyou-popup img {
background: transparent !important; /* for overwriting the style in the blogposts img */
}
@media (prefers-color-scheme: light) {
.btn-close-thankyou-popup img {
filter: invert(1);
opacity: 0.75;
}
}
&lt;/style>
&lt;script>
document.addEventListener('DOMContentLoaded', () => {
const thankYouWrapper = document.getElementById('thank-you');
// Close itself, when clicked outside of the popup area.
thankYouWrapper.addEventListener('click', (e) => {
if (e.target === thankYouWrapper) {
thankYouWrapper.style.display = 'none';
}
});
// Close with a close button.
const thankYouBackButton = document.querySelector('.btn-close-thankyou-popup');
thankYouBackButton.addEventListener('click', () => {
thankYouWrapper.style.display = 'none';
});
// Open from the main download buttons.
const downloadButtons = document.querySelectorAll('.btn-download, .download-button');
downloadButtons.forEach((it) => {
if (it.dataset?.external === "yes") {
return;
}
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
document.querySelector('.btn.btn-donate').focus();
});
});
// Open from the all downloads list.
const downloadLinks = document.querySelectorAll('.download-link');
downloadLinks.forEach((it) => {
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
});
});
// Close the dialog when the user presses the escape key.
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
thankYouWrapper.style.display = 'none';
}
});
});
&lt;/script>
&lt;div class="thankyou-wrapper" id="thank-you" style="display: none;">
&lt;div class="thankyou">
&lt;h2>Godot is downloading...&lt;/h2>
&lt;p class="thankyou-donate">
Godot exists thanks to donations from people like you. Help us continue our work:
&lt;/p>
&lt;a href="https://fund.godotengine.org" class="btn btn-donate">
Make a Donation
&lt;/a>
&lt;div class="btn-close-thankyou-popup">
&lt;img src="/assets/icons/cross.svg" width="24" height="24" alt="Close this popup" class="lightbox-ignore" />
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>&lt;strong>Standard build&lt;/strong> includes support for GDScript and GDExtension.&lt;/p>
&lt;p>&lt;strong>.NET build&lt;/strong> (marked as &lt;code class="language-plaintext highlighter-rouge">mono&lt;/code>) includes support for C#, as well as GDScript and GDExtension.&lt;/p>
&lt;div class="card card-warning">
&lt;p>
While engine maintainers try their best to ensure that each preview snapshot and release candidate is stable, this is by definition &lt;strong>a pre-release piece of software&lt;/strong>. Be sure to make frequent backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.
&lt;/p>
&lt;/div>
&lt;h2 id="known-issues">Known issues&lt;/h2>
&lt;p>With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of &lt;a href="https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug">known bugs&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>There are currently no known issues introduced by this release.&lt;/li>
&lt;/ul>
&lt;h2 id="bug-reports">Bug reports&lt;/h2>
&lt;p>As a tester, we encourage you to &lt;a href="https://github.com/godotengine/godot/issues">open bug reports&lt;/a> if you experience issues with this release. Please check the &lt;a href="https://github.com/godotengine/godot/issues">existing issues on GitHub&lt;/a> first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.&lt;/p>
&lt;p>In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).&lt;/p>
&lt;h2 id="support">Support&lt;/h2>
&lt;p>Godot is a non-profit, open-source game engine developed by hundreds of contributors in their free time, as well as a handful of part and full-time developers hired thanks to &lt;a href="https://fund.godotengine.org/">generous donations from the Godot community&lt;/a>. A big thank you to everyone who has contributed &lt;a href="https://github.com/godotengine/godot/blob/master/AUTHORS.md">their time&lt;/a> or &lt;a href="https://github.com/godotengine/godot/blob/master/DONORS.md">their financial support&lt;/a> to the project!&lt;/p>
&lt;p>If you’d like to support the project financially and help us secure our future hires, you can do so using the &lt;a href="https://fund.godotengine.org/">Godot Development Fund&lt;/a> platform managed by the &lt;a href="https://godot.foundation/">Godot Foundation&lt;/a>. There are also several &lt;a href="/donate">alternative ways to donate&lt;/a> which you may find more suitable.&lt;/p>
&lt;p>&lt;a class="btn" href="https://fund.godotengine.org/">Donate now&lt;/a>&lt;/p></description><category>Pre-release</category><guid>https://godotengine.org/article/dev-snapshot-godot-4-8-dev-2/</guid><dc:creator>Thaddeus Crews</dc:creator><pubDate>Tue, 21 Jul 2026 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/dev-snapshot-godot-4-8-dev-2.jpg</image></item><item><title>Godot Community Poll 2026</title><link>https://godotengine.org/article/godot-community-poll-2026/</link><summary>We want to learn more about the Godot community, understand who the users of the engine are, and find out how we can better support you.</summary><description>&lt;p>&lt;strong>Update:&lt;/strong> This poll is now over. &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSetTdpj9_KESbMNPSJGHkWQZTOHioyXkGgpitgLse-PBZ6c7A/viewanalytics">You can view the results here&lt;/a> or &lt;a href="/storage/data/GodotCommunityPoll2026.csv">download the csv with all the responses&lt;/a>.&lt;/p>
&lt;hr />
&lt;p>We want to learn more about the Godot community, understand who the users of the engine are, and find out how we can better support you. To achieve that, we have a short set of questions and hope you will take a few minutes to fill them out. The results will also help us guide our current and future items in the &lt;a href="https://godotengine.org/priorities/">priority list&lt;/a>.&lt;/p>
&lt;p>The poll is anonymous, and we will share the results publicly once submissions are closed. It will remain open for a month and should take only 5-10 minutes to complete.&lt;/p>
&lt;p>👉 &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSetTdpj9_KESbMNPSJGHkWQZTOHioyXkGgpitgLse-PBZ6c7A/viewform">Click here to complete the 2026 community poll!&lt;/a>&lt;/p>
&lt;p>If you are interested in results from previous years, you can find them at the following links:
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScKWGJoLEeNW1qrsDfZRfk7gHultapacH5ZhQmo9XRZADW1IQ/viewanalytics">2025&lt;/a>, &lt;a href="https://docs.google.com/forms/d/1eicOppRQG2RFZ8CjIGFf5Kha5yklO854fV8-YFtlWxk/viewanalytics">2024&lt;/a>, &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSeXRE1nF64PUilO6fA7Pevh2lWukJtpdBvc2_A3fGfuciy-gQ/viewanalytics">2023&lt;/a>, &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSe-OIpxXqou9cDnPXEAjxzpICbf8_YZB3jUizdECXRydtB8cA/viewanalytics">2022&lt;/a>, &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSfOj9m71X98_z7-UC4iiM6Uxd2HhITRzmF-M2Yx-d7Yq5KNUg/viewanalytics">2021&lt;/a>, &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSePCblF1p-Sv3AJYWQ8reRhx8c-1WOX9ZI0P-NJ-5TGw79bqA/viewanalytics">2020&lt;/a>.&lt;/p></description><category>News</category><guid>https://godotengine.org/article/godot-community-poll-2026/</guid><dc:creator>Emi</dc:creator><pubDate>Thu, 16 Jul 2026 17:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/community-poll-2026.jpg</image></item><item><title>Godot Team Updates @ GodotCon Boston 2026</title><link>https://godotengine.org/article/godotcon-us-2026-update/</link><summary>Announcing the schedule and some official updates from the Godot Foundation expected at GodotCon Boston 2026.</summary><description>&lt;style>h4 {margin-bottom:0}&lt;/style>
&lt;p>Our second annual &lt;a href="https://conference.godotengine.org/US/2026/">GodotCon&lt;/a> in North America is right around the corner and it is full steam ahead for the Godot community in Boston. &lt;a href="https://talks.godotengine.org/godotcon-boston-2026/schedule/">The schedule has been announced&lt;/a> so we thought it would be worth highlighting some of the official updates and fun talks from the Godot Foundation that will take place during the conference.&lt;/p>
&lt;hr />
&lt;h4 id="godot-rendering-team-update">Godot Rendering Team Update&lt;/h4>
&lt;p>🗣️ &lt;strong>Clay John&lt;/strong>&lt;/p>
&lt;p>An update on what major changes have happened within the renderer over the last two years with a focus on technical hurdles that we have overcome and the major limitations that we are now seeing.&lt;/p>
&lt;p>Also, a brief look at the future of Godot’s renderer including what to expect in terms of new high-end features and the long-term vision for the renderer.&lt;/p>
&lt;hr />
&lt;h4 id="whats-new-in-android">What’s New in Android&lt;/h4>
&lt;p>🗣️ &lt;strong>Fredia L Huya-Kouadio&lt;/strong>&lt;/p>
&lt;p>Discover what’s new in Android in 2026 for Godot developers!&lt;/p>
&lt;p>This talk will provide updates, new development, and new features to the Godot Android Platform since 2025.&lt;/p>
&lt;p>The talk will also cover the growth of the Godot Android editor since 2025, and will provide a quick look at its 2026 development roadmap.&lt;/p>
&lt;hr />
&lt;h4 id="how-to-make-a-vr-game-entirely-in-vr-no-pc-required">How to make a VR game entirely in VR! (No PC required)&lt;/h4>
&lt;p>🗣️ &lt;strong>David Snopek, Logan Lang&lt;/strong>&lt;/p>
&lt;p>Did you know that the Godot editor can run on standalone VR headsets like the Meta Quest 2/3, Pico 4, or Samsung Galaxy XR?&lt;/p>
&lt;p>This can allow you to build a game entirely in VR, without using a desktop or laptop computer at all!&lt;/p>
&lt;p>In this talk, David Snopek and Logan Lang of Godot’s XR team, will:&lt;/p>
&lt;ul>
&lt;li>Tell the story of “Expedition to Blobotopia”, a VR game which they built in one week for the Godot Wild Jam #81, working entirely on Meta Quest 3 headsets&lt;/li>
&lt;li>Explain the advantages of doing game dev in the headset&lt;/li>
&lt;li>Share tips and tricks for how you can do it too&lt;/li>
&lt;li>Demonstrate the newly released GABE, which allows running full Android Gradle builds on the headset&lt;/li>
&lt;li>Explain the basics of publishing your VR game on the Meta Horizon Store and Google Play Store&lt;/li>
&lt;li>Give a live demo of the editor running on a headset!&lt;/li>
&lt;/ul>
&lt;p>Discover a new way to add VR directly into your game development workflow!&lt;/p>
&lt;hr />
&lt;h4 id="where-every-millisecond-counts-optimizing-godot-for-low-spec-devices">Where Every Millisecond Counts: Optimizing Godot for Low-Spec Devices&lt;/h4>
&lt;p>🗣️ &lt;strong>Clay John, Pablo Selener, David Snopek&lt;/strong>&lt;/p>
&lt;p>Low-spec targets like mobile and standalone VR leave little room for waste. This session covers two things: the engine-level optimizations W4 Games contributed upstream that make all Godot games faster, and the techniques developers can apply in their own projects without modifying Godot’s source. Much of this work was originally funded by commercial engagements and is now upstream for everyone.&lt;/p>
&lt;hr />
&lt;h4 id="getting-started-with-cross-platform-xr-development">Getting started with cross-platform XR development&lt;/h4>
&lt;p>🗣️ &lt;strong>Fredia L Huya-Kouadio, David Snopek&lt;/strong>&lt;/p>
&lt;p>This talk will walk attendees through the process of creating an XR game that can run on all modern XR platforms (Android XR, Meta Horizon OS, Pico OS, visionOS) and leverage capabilities unique to each platform.&lt;/p>
&lt;p>Attendees will also be walked through the process of porting an existing ‘flat’ 3D game to an immersive or volumetric game running on an XR device.&lt;/p>
&lt;hr />
&lt;p>&lt;a href="https://conference.godotengine.org/US/2026/">GodotCon Boston 2026&lt;/a> takes place from July 20th - July 22nd with a day of workshops on the 20th and the main conference on the 21st and 22nd. There are &lt;strong>20 other talks&lt;/strong> to see along with the Godot games showcase, nightly social events, and catered breakfast and lunch. &lt;a href="https://tickets.godotengine.org/scene-tree/godotcon-us-2026/">Tickets are on-sale now&lt;/a>. Room in workshops is still available!&lt;/p>
&lt;p style="text-align: center;">&lt;a class="btn" href="https://tickets.godotengine.org/scene-tree/godotcon-us-2026/">Buy tickets 🎟️&lt;/a>&lt;/p></description><category>Events</category><guid>https://godotengine.org/article/godotcon-us-2026-update/</guid><dc:creator>Chad Stewart</dc:creator><pubDate>Tue, 14 Jul 2026 15:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/godotcon-boston-2026.jpg</image></item><item><title>Maintenance release: Godot 4.7.1</title><link>https://godotengine.org/article/maintenance-release-godot-4-7-1/</link><summary>The first 4.7 maintenance release has arrived!</summary><description>&lt;p>It’s been nearly four weeks since we saw the release of &lt;a href="/releases/4.7/">Godot 4.7&lt;/a>, which has given our team ample time to prepare for its first maintenance release. This progress was made in tandem with Godot 4.8, whose first development snapshot &lt;a href="/article/dev-snapshot-godot-4-8-dev-1/">released last week&lt;/a>, and will hopefully see its second snapshot later this week. But for those sticking with the rock-solid foundation Godot 4.7 provided, only iterating on critical regressions/crashes reported by the community in that time, you need look no further than today’s maintenance release: 4.7.1-stable!&lt;/p>
&lt;p>Maintenance releases are expected to be safe for an upgrade, but we recommend to always make backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.&lt;/p>
&lt;p>Please consider &lt;a href="#support">supporting the project financially&lt;/a>, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.&lt;/p>
&lt;p>&lt;a href="/download/archive/4.7.1-stable/">&lt;strong>Download Godot 4.7.1 now&lt;/strong>&lt;/a> or try the &lt;a href="https://editor.godotengine.org/4.7.1.stable/">online version of the Godot editor&lt;/a>.&lt;/p>
&lt;div class="card card-download">
&lt;a class="card-download-link" href="/download/archive/4.7.1-stable">
Download Godot 4.7.1 stable
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/maintenance-release-godot-4-7-1.jpg" />
&lt;div class="card-download-platforms">
&lt;div class="download-platform platform-linux">
&lt;img width="24" height="24" src="/assets/images/platforms/linux.svg" title="Linux" alt="Linux" class="lightbox-ignore" />
Linux
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.7.1&amp;amp;flavor=stable&amp;amp;slug=linux.x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.7.1&amp;amp;flavor=stable&amp;amp;slug=mono_linux_x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-linux">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-macos">
&lt;img width="24" height="24" src="/assets/images/platforms/macos.svg" title="macOS" alt="macOS" class="lightbox-ignore" />
macOS
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.7.1&amp;amp;flavor=stable&amp;amp;slug=macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.7.1&amp;amp;flavor=stable&amp;amp;slug=mono_macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary btn-download-primary--mono platform-macos">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-windows">
&lt;img width="24" height="24" src="/assets/images/platforms/windows.svg" title="Windows" alt="Windows" class="lightbox-ignore" />
Windows
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.7.1&amp;amp;flavor=stable&amp;amp;slug=win64.exe.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.7.1&amp;amp;flavor=stable&amp;amp;slug=mono_win64.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-windows">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;div class="card-download-sublinks">
&lt;a class="card-download-other" href="/download/archive/4.7.1-stable">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="https://fund.godotengine.org/">
Make a Donation
&lt;/a>
&lt;/div>
&lt;/div>
&lt;style>
.thankyou-wrapper {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.85);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 10;
}
.thankyou {
background: var(--base-color);
box-shadow: var(--more-shadow);
padding: 30px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
position: relative;
border-radius: 13px;
}
.thankyou-reading {
font-size: 16px;
}
.thankyou-reading-list {
font-size: 16px;
margin: 0;
margin-left: 48px;
padding-left: 0;
}
.thankyou-donate {
margin-bottom: 24px;
text-align: center;
}
.btn.btn-donate {
background-color: var(--primary-color);
color: hsla(0, 0%, 100%, 0.9);
font-size: 22px;
font-weight: 600;
margin-bottom: 26px;
}
.thankyou h2 {
text-shadow: var(--base-shadow);
font-size: 36px;
font-weight: 800;
margin-bottom: 12px;
}
.thankyou h2 .anchored-link {
/* Hiding the anchored text automatically added on blogposts */
display: none !important;
}
.thankyou p {
max-width: 620px;
font-size: 25px;
}
@media (max-width: 768px) {
.thankyou-wrapper {
display: block;
}
.thankyou {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: scroll;
padding: 30px 40px 18px 40px;
}
.thankyou-reading-list {
margin-left: 24px;
}
.btn-close-thankyou-popup {
width: 48px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
}
}
.btn-close-thankyou-popup {
cursor: pointer;
position: absolute;
top: 12px;
right: 12px;
}
.btn-close-thankyou-popup img {
background: transparent !important; /* for overwriting the style in the blogposts img */
}
@media (prefers-color-scheme: light) {
.btn-close-thankyou-popup img {
filter: invert(1);
opacity: 0.75;
}
}
&lt;/style>
&lt;script>
document.addEventListener('DOMContentLoaded', () => {
const thankYouWrapper = document.getElementById('thank-you');
// Close itself, when clicked outside of the popup area.
thankYouWrapper.addEventListener('click', (e) => {
if (e.target === thankYouWrapper) {
thankYouWrapper.style.display = 'none';
}
});
// Close with a close button.
const thankYouBackButton = document.querySelector('.btn-close-thankyou-popup');
thankYouBackButton.addEventListener('click', () => {
thankYouWrapper.style.display = 'none';
});
// Open from the main download buttons.
const downloadButtons = document.querySelectorAll('.btn-download, .download-button');
downloadButtons.forEach((it) => {
if (it.dataset?.external === "yes") {
return;
}
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
document.querySelector('.btn.btn-donate').focus();
});
});
// Open from the all downloads list.
const downloadLinks = document.querySelectorAll('.download-link');
downloadLinks.forEach((it) => {
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
});
});
// Close the dialog when the user presses the escape key.
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
thankYouWrapper.style.display = 'none';
}
});
});
&lt;/script>
&lt;div class="thankyou-wrapper" id="thank-you" style="display: none;">
&lt;div class="thankyou">
&lt;h2>Godot is downloading...&lt;/h2>
&lt;p class="thankyou-donate">
Godot exists thanks to donations from people like you. Help us continue our work:
&lt;/p>
&lt;a href="https://fund.godotengine.org" class="btn btn-donate">
Make a Donation
&lt;/a>
&lt;div class="btn-close-thankyou-popup">
&lt;img src="/assets/icons/cross.svg" width="24" height="24" alt="Close this popup" class="lightbox-ignore" />
&lt;/div>
&lt;/div>
&lt;/div>
&lt;hr />
&lt;p>&lt;em>The cover illustration is from&lt;/em> &lt;a href="https://store.steampowered.com/app/3908810/Stackflow/?curator_clanid=41324400">&lt;strong>Stackflow&lt;/strong>&lt;/a>, &lt;em>a strategy rougelike game, where you clear rows of blocks to unlock abilities to more proficently and satisfyingly clear yet more rows of blocks. You can buy the game or try the demo on &lt;a href="https://store.steampowered.com/app/3908810/Stackflow/?curator_clanid=41324400">Steam&lt;/a>, and follow the developer on &lt;a href="https://caueh.itch.io/">itch.io&lt;/a> and &lt;a href="https://github.com/cauehenrique">GitHub&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="changes">Changes&lt;/h2>
&lt;p>&lt;strong>42 contributors&lt;/strong> submitted &lt;strong>78 fixes&lt;/strong> for this release. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.7.1">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since the &lt;a href="/releases/4.7/">4.7-stable release&lt;/a>.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/a13da4feb8d8aefc283c3763d33a2f170a18d541">&lt;code class="language-plaintext highlighter-rouge">a13da4feb&lt;/code>&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>2D: Improve 2D editor dropping code (&lt;a href="https://github.com/godotengine/godot/pull/119418">GH-119418&lt;/a>).&lt;/li>
&lt;li>3D: Fix closed &lt;code class="language-plaintext highlighter-rouge">Curve3D&lt;/code> first/last point missing in/out control point (&lt;a href="https://github.com/godotengine/godot/pull/120684">GH-120684&lt;/a>).&lt;/li>
&lt;li>Animation: Make animation folding access cfg only at save/load project time (&lt;a href="https://github.com/godotengine/godot/pull/120403">GH-120403&lt;/a>).&lt;/li>
&lt;li>Assetlib: Set the Asset Store’s default sorting to highest scored (&lt;a href="https://github.com/godotengine/godot/pull/121112">GH-121112&lt;/a>).&lt;/li>
&lt;li>Editor: Guard against non-main-thread emission of EditorFileSystem changed signal (&lt;a href="https://github.com/godotengine/godot/pull/115083">GH-115083&lt;/a>).&lt;/li>
&lt;li>Editor: Wrap long project title (&lt;a href="https://github.com/godotengine/godot/pull/119580">GH-119580&lt;/a>).&lt;/li>
&lt;li>GUI: Don’t automatically open virtual keyboard when popup menu shows (&lt;a href="https://github.com/godotengine/godot/pull/120768">GH-120768&lt;/a>).&lt;/li>
&lt;li>GUI: Fix crash in &lt;code class="language-plaintext highlighter-rouge">Tree::_get_item_focus_rect&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/120538">GH-120538&lt;/a>).&lt;/li>
&lt;li>GUI: Fix scene tree drag-n-drop regression on touchscreens (&lt;a href="https://github.com/godotengine/godot/pull/120456">GH-120456&lt;/a>).&lt;/li>
&lt;li>GUI: Fix visual glitch with connections lines in &lt;code class="language-plaintext highlighter-rouge">GraphEdit&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/120488">GH-120488&lt;/a>).&lt;/li>
&lt;li>Input: Android: Fix EditorSettings not instantiated error when running game (&lt;a href="https://github.com/godotengine/godot/pull/120723">GH-120723&lt;/a>).&lt;/li>
&lt;li>Input: Fix backspace being unable to delete pre-existing text in any input field when using a soft keyboard on Android (&lt;a href="https://github.com/godotengine/godot/pull/119798">GH-119798&lt;/a>).&lt;/li>
&lt;li>Navigation: Fix navigation agents unconditionally getting added to avoidance simulation after pause resume (&lt;a href="https://github.com/godotengine/godot/pull/120249">GH-120249&lt;/a>).&lt;/li>
&lt;li>Network: Set inited=false on &lt;code class="language-plaintext highlighter-rouge">CookieContextMbedTLS::clear&lt;/code> to avoid accidental double destruction (&lt;a href="https://github.com/godotengine/godot/pull/120371">GH-120371&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix flickering lighting on mesh-instances with non-uniform scale (&lt;a href="https://github.com/godotengine/godot/pull/119784">GH-119784&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix orthographic camera directional shadow culling (&lt;a href="https://github.com/godotengine/godot/pull/120711">GH-120711&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix previous transform getting remembered for 2 frames after the instance stops moving (&lt;a href="https://github.com/godotengine/godot/pull/119941">GH-119941&lt;/a>).&lt;/li>
&lt;li>Rendering: Seek past skipped shader variant payloads to avoid reading incorrect data (&lt;a href="https://github.com/godotengine/godot/pull/119792">GH-119792&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="known-incompatibilities">Known incompatibilities&lt;/h2>
&lt;p>As of now, there are no known incompatibilities with the previous Godot 4.7 release. &lt;strong>We encourage all users to upgrade to 4.7.1.&lt;/strong>&lt;/p>
&lt;p>If you experience any unexpected behavior change in your projects after upgrading to 4.7.1, please &lt;a href="https://github.com/godotengine/godot/issues">file an issue on GitHub&lt;/a>.&lt;/p>
&lt;h2 id="bug-reports">Bug reports&lt;/h2>
&lt;p>As a tester, we encourage you to &lt;a href="https://github.com/godotengine/godot/issues">open bug reports&lt;/a> if you experience issues with this release. Please check the &lt;a href="https://github.com/godotengine/godot/issues">existing issues on GitHub&lt;/a> first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.&lt;/p>
&lt;p>In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).&lt;/p>
&lt;h2 id="support">Support&lt;/h2>
&lt;p>Godot is a non-profit, open-source game engine developed by hundreds of contributors in their free time, as well as a handful of part and full-time developers hired thanks to &lt;a href="https://fund.godotengine.org/">generous donations from the Godot community&lt;/a>. A big thank you to everyone who has contributed &lt;a href="https://github.com/godotengine/godot/blob/master/AUTHORS.md">their time&lt;/a> or &lt;a href="https://github.com/godotengine/godot/blob/master/DONORS.md">their financial support&lt;/a> to the project!&lt;/p>
&lt;p>If you’d like to support the project financially and help us secure our future hires, you can do so using the &lt;a href="https://fund.godotengine.org/">Godot Development Fund&lt;/a> platform managed by the &lt;a href="https://godot.foundation/">Godot Foundation&lt;/a>. There are also several &lt;a href="/donate">alternative ways to donate&lt;/a> which you may find more suitable.&lt;/p>
&lt;p>&lt;a class="btn" href="https://fund.godotengine.org/">Donate now&lt;/a>&lt;/p></description><category>Release</category><guid>https://godotengine.org/article/maintenance-release-godot-4-7-1/</guid><dc:creator>Thaddeus Crews</dc:creator><pubDate>Tue, 14 Jul 2026 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/maintenance-release-godot-4-7-1.jpg</image></item><item><title>Release candidate: Godot 4.7.1 RC 2</title><link>https://godotengine.org/article/release-candidate-godot-4-7-1-rc-2/</link><summary>The de-specialized edition: special edition!</summary><description>&lt;p>As distance from the &lt;a href="/releases/4.7/">Godot 4.7 stable release&lt;/a> grows, so too does the amount of spotted regressions and subsequent regression fixes. We don’t have quite as many fixes to share compared to &lt;a href="/article/release-candidate-godot-4-7-1-rc-1/">4.7.1 RC 1&lt;/a>, but there’s still enough to go around to warrant a second release candidate for this maintenance cycle.&lt;/p>
&lt;p>Please consider &lt;a href="#support">supporting the project financially&lt;/a>, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.&lt;/p>
&lt;p>&lt;a href="#downloads">Jump to the &lt;strong>Downloads&lt;/strong> section&lt;/a>, and give it a spin right now, or continue reading to learn more about improvements in this release. You can also try the &lt;a href="https://editor.godotengine.org/releases/4.7.1.rc2/">&lt;strong>Web editor&lt;/strong>&lt;/a>, the &lt;a href="https://www.meta.com/s/6Ls6Bfa34">&lt;strong>XR editor&lt;/strong>&lt;/a>, or the &lt;a href="https://play.google.com/store/apps/details?id=org.godotengine.editor.v4">&lt;strong>Android editor&lt;/strong>&lt;/a> for this release. If you are interested in the latter, please request to join &lt;a href="https://groups.google.com/g/godot-testers">our testing group&lt;/a> to get access to pre-release builds.&lt;/p>
&lt;hr />
&lt;p>&lt;em>The cover illustration is from&lt;/em> &lt;a href="https://store.steampowered.com/app/3857430/Interdimensional_Vending_Machine/?curator_clanid=41324400">&lt;strong>Interdimensional Vending Machine&lt;/strong>&lt;/a>, &lt;em>a psychological horror game where you play as a homeless girl in a distorted city, surviving off a vending machine whose contents reshape your fate. You can buy the game on &lt;a href="https://store.steampowered.com/app/3857430/Interdimensional_Vending_Machine/?curator_clanid=41324400">Steam&lt;/a> or try an older version for free on &lt;a href="https://neuroticfly.itch.io/interdimensional-vending-machine">itch.io&lt;/a>, and follow the developer on &lt;a href="https://neuroticfly.itch.io/">itch.io&lt;/a> and &lt;a href="https://www.youtube.com/@neuroticfly">YouTube&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;p>This section covers all changes made since &lt;a href="/article/release-candidate-godot-4-7-1-rc-1/">4.7.1 RC 1&lt;/a>, which are largely regression fixes:&lt;/p>
&lt;ul>
&lt;li>2D: Improve 2D editor dropping code (&lt;a href="https://github.com/godotengine/godot/pull/119418">GH-119418&lt;/a>).&lt;/li>
&lt;li>3D: Fix &lt;code class="language-plaintext highlighter-rouge">GridMap&lt;/code> editor cursor starting at the wrong position (&lt;a href="https://github.com/godotengine/godot/pull/120595">GH-120595&lt;/a>).&lt;/li>
&lt;li>Animation: Fix &lt;code class="language-plaintext highlighter-rouge">Abort on Reset&lt;/code> functionality in AnimationNodeOneShot (&lt;a href="https://github.com/godotengine/godot/pull/120478">GH-120478&lt;/a>).&lt;/li>
&lt;li>Core: Cherry-picks for the 4.7 branch (future 4.7.1) - 3rd batch (&lt;a href="https://github.com/godotengine/godot/pull/120917">GH-120917&lt;/a>).&lt;/li>
&lt;li>Editor: Clean Up &lt;code class="language-plaintext highlighter-rouge">x&lt;/code> position calcuation of the &lt;code class="language-plaintext highlighter-rouge">AudioStream&lt;/code> filename in the Inspector (&lt;a href="https://github.com/godotengine/godot/pull/119995">GH-119995&lt;/a>).&lt;/li>
&lt;li>Editor: Fix &lt;code class="language-plaintext highlighter-rouge">.godot&lt;/code> file icon saturation in editor file dialogs (&lt;a href="https://github.com/godotengine/godot/pull/120376">GH-120376&lt;/a>).&lt;/li>
&lt;li>Editor: Fix crash in Project Settings when an autoload has been freed (&lt;a href="https://github.com/godotengine/godot/pull/120874">GH-120874&lt;/a>).&lt;/li>
&lt;li>Editor: Fix debugger call stack not selecting nodes in remote scene tree (&lt;a href="https://github.com/godotengine/godot/pull/94096">GH-94096&lt;/a>).&lt;/li>
&lt;li>Editor: Fix incorrect non-unique resource indicator (&lt;a href="https://github.com/godotengine/godot/pull/120886">GH-120886&lt;/a>).&lt;/li>
&lt;li>Editor: Fix ownership issues when pasting as replacement (&lt;a href="https://github.com/godotengine/godot/pull/119790">GH-119790&lt;/a>).&lt;/li>
&lt;li>Editor: Fix possible freeze when running project with floating script editor (&lt;a href="https://github.com/godotengine/godot/pull/119614">GH-119614&lt;/a>).&lt;/li>
&lt;li>Editor: Fix scene not requesting save for &lt;code class="language-plaintext highlighter-rouge">Load as Placeholder&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/120823">GH-120823&lt;/a>).&lt;/li>
&lt;li>Editor: Fix scene tab titles not updating on language change (&lt;a href="https://github.com/godotengine/godot/pull/120554">GH-120554&lt;/a>).&lt;/li>
&lt;li>Editor: Guard against non-main-thread emission of EditorFileSystem changed signal (&lt;a href="https://github.com/godotengine/godot/pull/115083">GH-115083&lt;/a>).&lt;/li>
&lt;li>Editor: Make Instant Preview work for first selection after being enabled (&lt;a href="https://github.com/godotengine/godot/pull/116651">GH-116651&lt;/a>).&lt;/li>
&lt;li>Export: Fix incorrect per-instance shader parameters when exporting in headless mode (&lt;a href="https://github.com/godotengine/godot/pull/120794">GH-120794&lt;/a>).&lt;/li>
&lt;li>GUI: Add empty icons for file dialog menu to the default theme (&lt;a href="https://github.com/godotengine/godot/pull/120449">GH-120449&lt;/a>).&lt;/li>
&lt;li>GUI: Don’t automatically open virtual keyboard when popup menu shows (&lt;a href="https://github.com/godotengine/godot/pull/120768">GH-120768&lt;/a>).&lt;/li>
&lt;li>GUI: Range: Don’t use min for snap offset when it’s too big (&lt;a href="https://github.com/godotengine/godot/pull/113380">GH-113380&lt;/a>).&lt;/li>
&lt;li>GUI: Set SpinBox’s internal node’s &lt;code class="language-plaintext highlighter-rouge">use_parent_material&lt;/code> to true (&lt;a href="https://github.com/godotengine/godot/pull/120714">GH-120714&lt;/a>).&lt;/li>
&lt;li>Import: Fix extracting materials without a per-material override (&lt;a href="https://github.com/godotengine/godot/pull/120870">GH-120870&lt;/a>).&lt;/li>
&lt;li>Import: GLTF: Use p_state parameter directly (&lt;a href="https://github.com/godotengine/godot/pull/119071">GH-119071&lt;/a>).&lt;/li>
&lt;li>Network: mbedtls: Update to 3.6.7 (&lt;a href="https://github.com/godotengine/godot/pull/121055">GH-121055&lt;/a>).&lt;/li>
&lt;li>Physics: Fix crash when assigning more than 2047 MiB to Jolt temp buffer (&lt;a href="https://github.com/godotengine/godot/pull/120895">GH-120895&lt;/a>).&lt;/li>
&lt;li>Physics: Fix crash when clicking via the Game view API created collisions (&lt;a href="https://github.com/godotengine/godot/pull/120826">GH-120826&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix &lt;code class="language-plaintext highlighter-rouge">hint_default_transparent&lt;/code> used with &lt;code class="language-plaintext highlighter-rouge">sampler2DArray&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/120433">GH-120433&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix orthographic camera directional shadow culling (&lt;a href="https://github.com/godotengine/godot/pull/120711">GH-120711&lt;/a>).&lt;/li>
&lt;li>Tests: Crypto: Add sign/verify and encrypt/decrypt tests (&lt;a href="https://github.com/godotengine/godot/pull/120903">GH-120903&lt;/a>).&lt;/li>
&lt;li>Tests: Crypto: Add tests for AESContext (&lt;a href="https://github.com/godotengine/godot/pull/120847">GH-120847&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>24 contributors&lt;/strong> submitted &lt;strong>29 improvements&lt;/strong> for this release. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.7.1-rc2">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since &lt;a href="/article/release-candidate-godot-4-7-1-rc-1/">4.7.1 RC 1&lt;/a>. You can also review &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.7.1">all changes included in 4.7.1&lt;/a> compared to the previous &lt;a href="/releases/4.7/">4.7 feature release&lt;/a>.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/d6096250e5d7dbc5850de5bfb415edaee3a4595e">&lt;code class="language-plaintext highlighter-rouge">d6096250e&lt;/code>&lt;/a>.&lt;/p>
&lt;h2 id="downloads">Downloads&lt;/h2>
&lt;div class="card card-download">
&lt;a class="card-download-link" href="/download/archive/4.7.1-rc2">
Download Godot 4.7.1 rc2
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/release-candidate-godot-4-7-1-rc-2.jpg" />
&lt;div class="card-download-platforms">
&lt;div class="download-platform platform-linux">
&lt;img width="24" height="24" src="/assets/images/platforms/linux.svg" title="Linux" alt="Linux" class="lightbox-ignore" />
Linux
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.7.1&amp;amp;flavor=rc2&amp;amp;slug=linux.x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.7.1&amp;amp;flavor=rc2&amp;amp;slug=mono_linux_x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-linux">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-macos">
&lt;img width="24" height="24" src="/assets/images/platforms/macos.svg" title="macOS" alt="macOS" class="lightbox-ignore" />
macOS
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.7.1&amp;amp;flavor=rc2&amp;amp;slug=macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.7.1&amp;amp;flavor=rc2&amp;amp;slug=mono_macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary btn-download-primary--mono platform-macos">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-windows">
&lt;img width="24" height="24" src="/assets/images/platforms/windows.svg" title="Windows" alt="Windows" class="lightbox-ignore" />
Windows
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.7.1&amp;amp;flavor=rc2&amp;amp;slug=win64.exe.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.7.1&amp;amp;flavor=rc2&amp;amp;slug=mono_win64.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-windows">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;div class="card-download-sublinks">
&lt;a class="card-download-other" href="/download/archive/4.7.1-rc2">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="https://fund.godotengine.org/">
Make a Donation
&lt;/a>
&lt;/div>
&lt;/div>
&lt;style>
.thankyou-wrapper {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.85);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 10;
}
.thankyou {
background: var(--base-color);
box-shadow: var(--more-shadow);
padding: 30px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
position: relative;
border-radius: 13px;
}
.thankyou-reading {
font-size: 16px;
}
.thankyou-reading-list {
font-size: 16px;
margin: 0;
margin-left: 48px;
padding-left: 0;
}
.thankyou-donate {
margin-bottom: 24px;
text-align: center;
}
.btn.btn-donate {
background-color: var(--primary-color);
color: hsla(0, 0%, 100%, 0.9);
font-size: 22px;
font-weight: 600;
margin-bottom: 26px;
}
.thankyou h2 {
text-shadow: var(--base-shadow);
font-size: 36px;
font-weight: 800;
margin-bottom: 12px;
}
.thankyou h2 .anchored-link {
/* Hiding the anchored text automatically added on blogposts */
display: none !important;
}
.thankyou p {
max-width: 620px;
font-size: 25px;
}
@media (max-width: 768px) {
.thankyou-wrapper {
display: block;
}
.thankyou {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: scroll;
padding: 30px 40px 18px 40px;
}
.thankyou-reading-list {
margin-left: 24px;
}
.btn-close-thankyou-popup {
width: 48px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
}
}
.btn-close-thankyou-popup {
cursor: pointer;
position: absolute;
top: 12px;
right: 12px;
}
.btn-close-thankyou-popup img {
background: transparent !important; /* for overwriting the style in the blogposts img */
}
@media (prefers-color-scheme: light) {
.btn-close-thankyou-popup img {
filter: invert(1);
opacity: 0.75;
}
}
&lt;/style>
&lt;script>
document.addEventListener('DOMContentLoaded', () => {
const thankYouWrapper = document.getElementById('thank-you');
// Close itself, when clicked outside of the popup area.
thankYouWrapper.addEventListener('click', (e) => {
if (e.target === thankYouWrapper) {
thankYouWrapper.style.display = 'none';
}
});
// Close with a close button.
const thankYouBackButton = document.querySelector('.btn-close-thankyou-popup');
thankYouBackButton.addEventListener('click', () => {
thankYouWrapper.style.display = 'none';
});
// Open from the main download buttons.
const downloadButtons = document.querySelectorAll('.btn-download, .download-button');
downloadButtons.forEach((it) => {
if (it.dataset?.external === "yes") {
return;
}
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
document.querySelector('.btn.btn-donate').focus();
});
});
// Open from the all downloads list.
const downloadLinks = document.querySelectorAll('.download-link');
downloadLinks.forEach((it) => {
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
});
});
// Close the dialog when the user presses the escape key.
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
thankYouWrapper.style.display = 'none';
}
});
});
&lt;/script>
&lt;div class="thankyou-wrapper" id="thank-you" style="display: none;">
&lt;div class="thankyou">
&lt;h2>Godot is downloading...&lt;/h2>
&lt;p class="thankyou-donate">
Godot exists thanks to donations from people like you. Help us continue our work:
&lt;/p>
&lt;a href="https://fund.godotengine.org" class="btn btn-donate">
Make a Donation
&lt;/a>
&lt;div class="btn-close-thankyou-popup">
&lt;img src="/assets/icons/cross.svg" width="24" height="24" alt="Close this popup" class="lightbox-ignore" />
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>&lt;strong>Standard build&lt;/strong> includes support for GDScript and GDExtension.&lt;/p>
&lt;p>&lt;strong>.NET build&lt;/strong> (marked as &lt;code class="language-plaintext highlighter-rouge">mono&lt;/code>) includes support for C#, as well as GDScript and GDExtension.&lt;/p>
&lt;div class="card card-warning">
&lt;p>
While engine maintainers try their best to ensure that each preview snapshot and release candidate is stable, this is by definition &lt;strong>a pre-release piece of software&lt;/strong>. Be sure to make frequent backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.
&lt;/p>
&lt;/div>
&lt;h2 id="known-issues">Known issues&lt;/h2>
&lt;p>During the Release Candidate stage, we focus exclusively on solving showstopping regressions (i.e. something that worked in a previous release is now broken, without workaround). You can have a look at our current &lt;a href="https://github.com/orgs/godotengine/projects/61">list of regressions and significant issues&lt;/a> which we aim to address before releasing 4.7.1. This list is dynamic and will be updated if we discover new showstopping issues after more users start testing the RC snapshots.&lt;/p>
&lt;p>With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of &lt;a href="https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug">known bugs&lt;/a>.&lt;/p>
&lt;h2 id="bug-reports">Bug reports&lt;/h2>
&lt;p>As a tester, we encourage you to &lt;a href="https://github.com/godotengine/godot/issues">open bug reports&lt;/a> if you experience issues with this release. Please check the &lt;a href="https://github.com/godotengine/godot/issues">existing issues on GitHub&lt;/a> first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.&lt;/p>
&lt;p>In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).&lt;/p>
&lt;h2 id="support">Support&lt;/h2>
&lt;p>Godot is a non-profit, open-source game engine developed by hundreds of contributors in their free time, as well as a handful of part and full-time developers hired thanks to &lt;a href="https://fund.godotengine.org/">generous donations from the Godot community&lt;/a>. A big thank you to everyone who has contributed &lt;a href="https://github.com/godotengine/godot/blob/master/AUTHORS.md">their time&lt;/a> or &lt;a href="https://github.com/godotengine/godot/blob/master/DONORS.md">their financial support&lt;/a> to the project!&lt;/p>
&lt;p>If you’d like to support the project financially and help us secure our future hires, you can do so using the &lt;a href="https://fund.godotengine.org/">Godot Development Fund&lt;/a>.&lt;/p>
&lt;p>&lt;a class="btn" href="https://fund.godotengine.org/">Donate now&lt;/a>&lt;/p></description><category>Pre-release</category><guid>https://godotengine.org/article/release-candidate-godot-4-7-1-rc-2/</guid><dc:creator>Thaddeus Crews</dc:creator><pubDate>Thu, 09 Jul 2026 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/release-candidate-godot-4-7-1-rc-2.jpg</image></item><item><title>Dev snapshot: Godot 4.8 dev 1</title><link>https://godotengine.org/article/dev-snapshot-godot-4-8-dev-1/</link><summary>The cycle begins anew</summary><description>&lt;p>It’s been just over two weeks since we saw the &lt;a href="/releases/4.7/">stable release of Godot 4.7&lt;/a>. In that time, we’ve been hard at working preparing for an upcoming maintenance release with our &lt;a href="/article/release-candidate-godot-4-7-1-rc-1.md">first 4.7.1 release candidate&lt;/a>, and laying a strong foundation for what will become Godot 4.8. Last week already highlighted the former, so we’re opening the week strong with the latter: our first Godot 4.8 development snapshot. Unlike last week, which was entirely focused on regressions and critical bugfixes, we’ll be spotlighting several new features and functionality you can get your hands on right now.&lt;/p>
&lt;p>As usual, safety precautions should be taken with any pre-release environment. While we prepare these snapshots with the intent to be suitable for general testing, there will always be a non-zero risk of data loss/corruption. Creating backups before hand and/or utilizing version control are strongly recommended!&lt;/p>
&lt;p>Please consider &lt;a href="#support">supporting the project financially&lt;/a>, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.&lt;/p>
&lt;p>&lt;a href="#downloads">Jump to the &lt;strong>Downloads&lt;/strong> section&lt;/a>, and give it a spin right now, or continue reading to learn more about improvements in this release. You can also try the &lt;a href="https://editor.godotengine.org/releases/4.8.dev1/">&lt;strong>Web editor&lt;/strong>&lt;/a>, the &lt;a href="https://www.meta.com/s/3yJ7i8kop">&lt;strong>XR editor&lt;/strong>&lt;/a>, or the &lt;a href="https://play.google.com/store/apps/details?id=org.godotengine.editor.v4">&lt;strong>Android editor&lt;/strong>&lt;/a> for this release. If you are interested in the latter, please request to join &lt;a href="https://groups.google.com/g/godot-testers">our testing group&lt;/a> to get access to pre-release builds.&lt;/p>
&lt;hr />
&lt;p>&lt;em>The cover illustration is from&lt;/em> &lt;a href="https://store.steampowered.com/app/3278290/Feed_The_Pit/?curator_clanid=41324400">&lt;strong>Feed The Pit&lt;/strong>&lt;/a>, &lt;em>a story-driven, investigative horror game where you hunt down the wealthy in order to Feed The Pit. You can buy the game on &lt;a href="https://store.steampowered.com/app/3278290/Feed_The_Pit/?curator_clanid=41324400">Steam&lt;/a> or the &lt;a href="https://apps.apple.com/us/app/tr-49/id6754027574">iOS App Store&lt;/a>, and follow the developers on &lt;a href="https://www.youtube.com/@CuriousFoxSox">YouTube&lt;/a> and &lt;a href="https://curious-fox-sox.itch.io/">itch.io&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;h3 id="editor-docked-game-view-by-default-simplify-toolbar">Editor: Docked game view by default, simplify toolbar&lt;/h3>
&lt;p>One of the most exciting additions of the past few release cycles was undoubtably the ability to embed the game view within the editor. However, this feature might come as a surprise to many of you, as the default behavior since its inception has been a floating window. This was initially because not all desktop platforms had full support for this functionality, but we’ve since reached the point that all of our supported platforms can utilize it. As such, &lt;a href="https://github.com/YeldhamDev">Michael Alexsander&lt;/a> officially kickstarted this new default view in &lt;a href="https://github.com/godotengine/godot/pull/120736">GH-120736&lt;/a> for all projects moving forward.&lt;/p>
&lt;p>Pairing nicely with this new default setting is a new layout for the game view itself. Specifically: a toolbar overhaul. Because even if you &lt;em>were&lt;/em> aware of the docked view before, actually finding the embed options was a bit tricky, as quite a lot of the important information was obfuscated or otherwise obstructed. &lt;a href="https://github.com/jaydensipe">Jayden Sipe&lt;/a> spearheaded a brand new look for the toolbar in &lt;a href="https://github.com/godotengine/godot/pull/118664">GH-118664&lt;/a>, emphasizing usability and clarity compared to the prior implementation.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Old&lt;/th>
&lt;th>New&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;video autoplay="" loop="" muted="" playsinline="" title="Game embed toolbar: old">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-1/game-embed-old.mp4" type="video/mp4" />&lt;/video>&lt;/td>
&lt;td>&lt;video autoplay="" loop="" muted="" playsinline="" title="Game embed toolbar: new">&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-1/game-embed-new.mp4" type="video/mp4" />&lt;/video>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;div class="card card-info" style="margin-top: 1em;">
&lt;p>Docked game view is only enabled by default for new projects; existing projects will have to manually enable this by toggling this option on the updated game view:&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-8-dev-1/game-embed-toggle.webp" alt="Location of the editor embed toggle on the updated toolbar" />&lt;/p>
&lt;/div>
&lt;h3 id="editor-support-drag-toggle-visibility-in-scene-tree">Editor: Support drag-toggle visibility in scene tree&lt;/h3>
&lt;p>There’s a lot of editor goodies to cover today, and &lt;a href="https://github.com/mihe">Mikael Hermansson&lt;/a> keeps the ball rolling with &lt;a href="https://github.com/godotengine/godot/pull/118634">GH-118634&lt;/a>, adding the ability to drag-toggle visibility in the scene tree editor. Now when toggling the visibility of a given node, the newly toggled state can be applied to any subsequent nodes when dragging the mouse across them.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="New drag-toggle visibility functionality showcase">
&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-1/drag-toggle-visibility.mp4" type="video/mp4" />
&lt;/video>
&lt;h3 id="editor-allow-3d-viewports-to-override-gridmap-axis">Editor: Allow 3D viewports to override &lt;code class="language-plaintext highlighter-rouge">Gridmap&lt;/code> axis&lt;/h3>
&lt;p>Michael delivered some QOL to 3D viewports with &lt;a href="https://github.com/godotengine/godot/pull/117569">GH-117569&lt;/a>, enabling them to dynamically override the &lt;code class="language-plaintext highlighter-rouge">GridMap&lt;/code> editor axis. Through the new editor option “Allow Viewport Override” (enabled by default), hovering the mouse over a viewport set to a specific side will cause the currently edited axis to match that side.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="`Gridmap` override showcased across multiple 3D viewports">
&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-1/allow-viewport-override.mp4" type="video/mp4" />
&lt;/video>
&lt;h3 id="editor-pseudolocalization-preview">Editor: Pseudolocalization preview&lt;/h3>
&lt;p>We’ve talked about the importance of accessibility a lot in these blog posts, so it should be emphasized that internationalization goes hand-in-hand with those efforts. To that end: making a title more accessible to users across multiple languages can be streamlined significantly through the use of &lt;a href="https://docs.godotengine.org/en/stable/tutorials/i18n/pseudolocalization.html">pseudolocalization&lt;/a>. This simple toggle simulates changes that might take place during localization, allowing any issues that would come from that process to be recognized as early as possible in development.&lt;/p>
&lt;p>It then should come as no surprise that &lt;a href="https://github.com/KoBeWi">Tomasz Chabora&lt;/a>, the same user responsible for &lt;a href="/article/dev-snapshot-godot-4-5-dev-2/#changing-editor-language-without-restart">hot-swapping languages in the editor&lt;/a>, would seek to further expand the utility and awareness of this crucial functionality. Thanks to &lt;a href="https://github.com/godotengine/godot/pull/119443">GH-119443&lt;/a>, users are now able to access this functionality from within the editor itself. The hope is that this will not only make developers able to find these issues even earlier than before, but that it will also shine a spotlight on the feature as a whole.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="Pseudolocalization preview showcase within the editor">
&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-1/pseudolocalization-preview.mp4" type="video/mp4" />
&lt;/video>
&lt;h3 id="gui-sticky-tree-items">GUI: Sticky tree items&lt;/h3>
&lt;p>One of the most common requests we’ve seen for improving &lt;code class="language-plaintext highlighter-rouge">Tree&lt;/code> functionality is the ability to support “sticky items”. That is: the ability for a given line to stick to the top if it represents a foldable region. &lt;a href="https://github.com/dugramen">Koliur Rahman&lt;/a> is no stranger to &lt;a href="https://github.com/godotengine/godot/pull/103257">integrating popular editor requests&lt;/a>, so it was only a matter of time before they delivered the desired functionality in &lt;a href="https://github.com/godotengine/godot/pull/115697">GH-115697&lt;/a>.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="Sticky tree support showcased across various items">
&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-1/sticky-tree-items.mp4" type="video/mp4" />
&lt;/video>
&lt;div class="card card-warning" style="margin-top: 1em;">
&lt;p>Certain trees that have above-average nesting might have a net-negative experience with sticky headers. This will be given hard-coded exceptions in the meantime (see &lt;a href="https://github.com/godotengine/godot/pull/121000">GH-121000&lt;/a> for &lt;code class="language-plaintext highlighter-rouge">Skeleton3D&lt;/code>), as we investigate &lt;a href="https://github.com/godotengine/godot-proposals/issues/15136">configurable minimums&lt;/a>.&lt;/p>
&lt;/div>
&lt;h3 id="gui-textedit-and-codeedit-touch-support">GUI: &lt;code class="language-plaintext highlighter-rouge">TextEdit&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">CodeEdit&lt;/code> touch support&lt;/h3>
&lt;p>We’ve given the standard desktop experience a lot of love this blogpost, so let’s pivot to something a bit more niche (for desktops): touch support. Given mobile devices represent some of our most prominent platforms, we seek to make the tactile experience of Godot first-rate wherever possible. To that end: &lt;a href="https://github.com/syntaxerror247">Anish Kumar&lt;/a> expanded the red-carpet treatment even further with &lt;a href="https://github.com/godotengine/godot/pull/119706">GH-119706&lt;/a>, bringing touch support to both &lt;code class="language-plaintext highlighter-rouge">TextEdit&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">CodeEdit&lt;/code>. The new functionality is as follows:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Tap (press → release):&lt;/strong> Positions the cursor and opens the virtual keyboard.&lt;/li>
&lt;li>&lt;strong>Drag (press → drag → release):&lt;/strong> scrolls the text content, including inertial scrolling support.
&lt;ul>
&lt;li>This extends to the code completion popup, which previously could not be scrolled via touch input.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Text selection:&lt;/strong>
&lt;ul>
&lt;li>Double-tap selects a word.&lt;/li>
&lt;li>Double-tap, hold, and drag selects the portion you’re hovering over.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;video autoplay="" loop="" muted="" playsinline="" title="`TextEdit` touch support showcased on a mobile interface">
&lt;source src="/storage/blog/dev-snapshot-godot-4-8-dev-1/textedit-touch-support.mp4" type="video/mp4" />
&lt;/video>
&lt;h3 id="core-fuzzysearch-and-fuzzysearchmatch">Core: &lt;code class="language-plaintext highlighter-rouge">FuzzySearch&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">FuzzySearchMatch&lt;/code>&lt;/h3>
&lt;p>“Fuzzy searching” is the practice of a search result returning matches &lt;em>similar&lt;/em> to the passed query, rather than only returning an exact match. This functionality has actually been part of the core engine for nearly two years at this point, courtesy of first-time contributor &lt;a href="https://github.com/a-johnston">Adam Johnston&lt;/a> in &lt;a href="https://github.com/godotengine/godot/pull/98278">GH-98278&lt;/a>, in service of our quick open search. However, that’s where the functionality remained ever since, never actually being exposed to our binding API. But now, courtesy of now regular contributor Adam in &lt;a href="https://github.com/godotengine/godot/pull/107126">GH-107126&lt;/a>, this functionality is finally ready to roll for all users.&lt;/p>
&lt;div class="language-gdscript highlighter-rouge">&lt;div class="highlight">&lt;pre class="highlight">&lt;code>&lt;span class="k">var&lt;/span> &lt;span class="n">items&lt;/span> &lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">"Potion of Healing"&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">"Greater Health Potion"&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">"Poison Vial"&lt;/span>&lt;span class="p">]&lt;/span>
&lt;span class="k">var&lt;/span> &lt;span class="n">fuzzy&lt;/span> &lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span> &lt;span class="n">FuzzySearch&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">new&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="k">for&lt;/span> &lt;span class="n">result&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">fuzzy&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search_all&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">"health potion"&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">items&lt;/span>&lt;span class="p">):&lt;/span>
&lt;span class="c1"># Prints "Greater Health Potion", "Potion of Healing".&lt;/span>
&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">target&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;h3 id="and-more">And more!&lt;/h3>
&lt;p>There are too many exciting changes to list them all here, but here’s a curated selection:&lt;/p>
&lt;ul>
&lt;li>3D: Add octant visualization to &lt;code class="language-plaintext highlighter-rouge">GridMap&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/118583">GH-118583&lt;/a>).&lt;/li>
&lt;li>Audio: Fix &lt;code class="language-plaintext highlighter-rouge">AudioStreamPlayer.get_playback_position()&lt;/code> with &lt;code class="language-plaintext highlighter-rouge">AudioStreamPlaylist&lt;/code> returns 0 regardless of start time (&lt;a href="https://github.com/godotengine/godot/pull/114867">GH-114867&lt;/a>).&lt;/li>
&lt;li>Editor: Add an option to run the project upgrade tool when updating to a new Godot version (&lt;a href="https://github.com/godotengine/godot/pull/119466">GH-119466&lt;/a>).&lt;/li>
&lt;li>Editor: Android: Update game menu bar to match desktop editor (&lt;a href="https://github.com/godotengine/godot/pull/119156">GH-119156&lt;/a>).&lt;/li>
&lt;li>Editor: Show enum integer values in inspector tooltips (&lt;a href="https://github.com/godotengine/godot/pull/102734">GH-102734&lt;/a>).&lt;/li>
&lt;li>Editor: Use VHS Circle as the default editor color picker shape (&lt;a href="https://github.com/godotengine/godot/pull/110615">GH-110615&lt;/a>).&lt;/li>
&lt;li>Export: Add Filter to Project Export → Options tab (&lt;a href="https://github.com/godotengine/godot/pull/118898">GH-118898&lt;/a>).&lt;/li>
&lt;li>Export: Add SPM support for Apple Embedded plugins (.gdip) (&lt;a href="https://github.com/godotengine/godot/pull/116939">GH-116939&lt;/a>).&lt;/li>
&lt;li>Input: Add support for joypad touchpads (&lt;a href="https://github.com/godotengine/godot/pull/111714">GH-111714&lt;/a>).&lt;/li>
&lt;li>Network: mbedTLS: Update to 4.1.0, PSA Crypto (&lt;a href="https://github.com/godotengine/godot/pull/120725">GH-120725&lt;/a>).&lt;/li>
&lt;li>Platforms: Implement &lt;code class="language-plaintext highlighter-rouge">OS::get_processor_name()&lt;/code> for Android (&lt;a href="https://github.com/godotengine/godot/pull/120896">GH-120896&lt;/a>).&lt;/li>
&lt;li>Rendering: Add support for ASTC 6x6 and high quality compression profiles (&lt;a href="https://github.com/godotengine/godot/pull/115003">GH-115003&lt;/a>).&lt;/li>
&lt;li>Shaders: GDShader: Add implicit conversion of &lt;code class="language-plaintext highlighter-rouge">bool&lt;/code> constants to &lt;code class="language-plaintext highlighter-rouge">float&lt;/code>, &lt;code class="language-plaintext highlighter-rouge">int&lt;/code>, and &lt;code class="language-plaintext highlighter-rouge">uint&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/120715">GH-120715&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>135 contributors&lt;/strong> submitted &lt;strong>314 fixes&lt;/strong> for this release. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.8-dev1">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since the &lt;a href="/releases/4.7/">4.7 feature release&lt;/a>.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/ebbf577a041d1ab8d7824b6f90e7d0575461ca45">&lt;code class="language-plaintext highlighter-rouge">ebbf577a0&lt;/code>&lt;/a>.&lt;/p>
&lt;h2 id="downloads">Downloads&lt;/h2>
&lt;div class="card card-download">
&lt;a class="card-download-link" href="/download/archive/4.8-dev1">
Download Godot 4.8 dev1
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/dev-snapshot-godot-4-8-dev-1.jpg" />
&lt;div class="card-download-platforms">
&lt;div class="download-platform platform-linux">
&lt;img width="24" height="24" src="/assets/images/platforms/linux.svg" title="Linux" alt="Linux" class="lightbox-ignore" />
Linux
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev1&amp;amp;slug=linux.x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev1&amp;amp;slug=mono_linux_x86_64.zip&amp;amp;platform=linux.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-linux">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-macos">
&lt;img width="24" height="24" src="/assets/images/platforms/macos.svg" title="macOS" alt="macOS" class="lightbox-ignore" />
macOS
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev1&amp;amp;slug=macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev1&amp;amp;slug=mono_macos.universal.zip&amp;amp;platform=macos.universal" class="btn btn-download btn-download-primary btn-download-primary--mono platform-macos">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;div class="download-platform platform-windows">
&lt;img width="24" height="24" src="/assets/images/platforms/windows.svg" title="Windows" alt="Windows" class="lightbox-ignore" />
Windows
&lt;/div>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev1&amp;amp;slug=win64.exe.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://downloads.godotengine.org/?version=4.8&amp;amp;flavor=dev1&amp;amp;slug=mono_win64.zip&amp;amp;platform=windows.64" class="btn btn-download btn-download-primary btn-download-primary--mono platform-windows">
&lt;div class="download-title">
.NET
&lt;/div>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;div class="card-download-sublinks">
&lt;a class="card-download-other" href="/download/archive/4.8-dev1">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="https://fund.godotengine.org/">
Make a Donation
&lt;/a>
&lt;/div>
&lt;/div>
&lt;style>
.thankyou-wrapper {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.85);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 10;
}
.thankyou {
background: var(--base-color);
box-shadow: var(--more-shadow);
padding: 30px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
position: relative;
border-radius: 13px;
}
.thankyou-reading {
font-size: 16px;
}
.thankyou-reading-list {
font-size: 16px;
margin: 0;
margin-left: 48px;
padding-left: 0;
}
.thankyou-donate {
margin-bottom: 24px;
text-align: center;
}
.btn.btn-donate {
background-color: var(--primary-color);
color: hsla(0, 0%, 100%, 0.9);
font-size: 22px;
font-weight: 600;
margin-bottom: 26px;
}
.thankyou h2 {
text-shadow: var(--base-shadow);
font-size: 36px;
font-weight: 800;
margin-bottom: 12px;
}
.thankyou h2 .anchored-link {
/* Hiding the anchored text automatically added on blogposts */
display: none !important;
}
.thankyou p {
max-width: 620px;
font-size: 25px;
}
@media (max-width: 768px) {
.thankyou-wrapper {
display: block;
}
.thankyou {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: scroll;
padding: 30px 40px 18px 40px;
}
.thankyou-reading-list {
margin-left: 24px;
}
.btn-close-thankyou-popup {
width: 48px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
}
}
.btn-close-thankyou-popup {
cursor: pointer;
position: absolute;
top: 12px;
right: 12px;
}
.btn-close-thankyou-popup img {
background: transparent !important; /* for overwriting the style in the blogposts img */
}
@media (prefers-color-scheme: light) {
.btn-close-thankyou-popup img {
filter: invert(1);
opacity: 0.75;
}
}
&lt;/style>
&lt;script>
document.addEventListener('DOMContentLoaded', () => {
const thankYouWrapper = document.getElementById('thank-you');
// Close itself, when clicked outside of the popup area.
thankYouWrapper.addEventListener('click', (e) => {
if (e.target === thankYouWrapper) {
thankYouWrapper.style.display = 'none';
}
});
// Close with a close button.
const thankYouBackButton = document.querySelector('.btn-close-thankyou-popup');
thankYouBackButton.addEventListener('click', () => {
thankYouWrapper.style.display = 'none';
});
// Open from the main download buttons.
const downloadButtons = document.querySelectorAll('.btn-download, .download-button');
downloadButtons.forEach((it) => {
if (it.dataset?.external === "yes") {
return;
}
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
document.querySelector('.btn.btn-donate').focus();
});
});
// Open from the all downloads list.
const downloadLinks = document.querySelectorAll('.download-link');
downloadLinks.forEach((it) => {
it.addEventListener('click', () => {
thankYouWrapper.style.display = '';
});
});
// Close the dialog when the user presses the escape key.
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
thankYouWrapper.style.display = 'none';
}
});
});
&lt;/script>
&lt;div class="thankyou-wrapper" id="thank-you" style="display: none;">
&lt;div class="thankyou">
&lt;h2>Godot is downloading...&lt;/h2>
&lt;p class="thankyou-donate">
Godot exists thanks to donations from people like you. Help us continue our work:
&lt;/p>
&lt;a href="https://fund.godotengine.org" class="btn btn-donate">
Make a Donation
&lt;/a>
&lt;div class="btn-close-thankyou-popup">
&lt;img src="/assets/icons/cross.svg" width="24" height="24" alt="Close this popup" class="lightbox-ignore" />
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>&lt;strong>Standard build&lt;/strong> includes support for GDScript and GDExtension.&lt;/p>
&lt;p>&lt;strong>.NET build&lt;/strong> (marked as &lt;code class="language-plaintext highlighter-rouge">mono&lt;/code>) includes support for C#, as well as GDScript and GDExtension.&lt;/p>
&lt;div class="card card-warning">
&lt;p>
While engine maintainers try their best to ensure that each preview snapshot and release candidate is stable, this is by definition &lt;strong>a pre-release piece of software&lt;/strong>. Be sure to make frequent backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.
&lt;/p>
&lt;/div>
&lt;h2 id="known-issues">Known issues&lt;/h2>
&lt;p>With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of &lt;a href="https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug">known bugs&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>There are currently no known issues introduced by this release.&lt;/li>
&lt;/ul>
&lt;h2 id="bug-reports">Bug reports&lt;/h2>
&lt;p>As a tester, we encourage you to &lt;a href="https://github.com/godotengine/godot/issues">open bug reports&lt;/a> if you experience issues with this release. Please check the &lt;a href="https://github.com/godotengine/godot/issues">existing issues on GitHub&lt;/a> first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.&lt;/p>
&lt;p>In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).&lt;/p>
&lt;h2 id="support">Support&lt;/h2>
&lt;p>Godot is a non-profit, open-source game engine developed by hundreds of contributors in their free time, as well as a handful of part and full-time developers hired thanks to &lt;a href="https://fund.godotengine.org/">generous donations from the Godot community&lt;/a>. A big thank you to everyone who has contributed &lt;a href="https://github.com/godotengine/godot/blob/master/AUTHORS.md">their time&lt;/a> or &lt;a href="https://github.com/godotengine/godot/blob/master/DONORS.md">their financial support&lt;/a> to the project!&lt;/p>
&lt;p>If you’d like to support the project financially and help us secure our future hires, you can do so using the &lt;a href="https://fund.godotengine.org/">Godot Development Fund&lt;/a> platform managed by the &lt;a href="https://godot.foundation/">Godot Foundation&lt;/a>. There are also several &lt;a href="/donate">alternative ways to donate&lt;/a> which you may find more suitable.&lt;/p>
&lt;p>&lt;a class="btn" href="https://fund.godotengine.org/">Donate now&lt;/a>&lt;/p></description><category>Pre-release</category><guid>https://godotengine.org/article/dev-snapshot-godot-4-8-dev-1/</guid><dc:creator>Thaddeus Crews</dc:creator><pubDate>Mon, 06 Jul 2026 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/dev-snapshot-godot-4-8-dev-1.jpg</image></item></channel></rss>