<?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.4 dev 7</title><link>https://godotengine.org/article/dev-snapshot-godot-4-4-dev-7/</link><description>&lt;p>Season’s greetings, everyone! As our team winds down for the holiday season, we present you with one last gift before
the new year: our final development build of the year!&lt;/p>
&lt;p>After having a few notable regressions in dev 6, we intended to do a quick turnaround for dev 7 with high priority bug
fixes. But we got greedy and ended up making dev 7 another feature-packed new release so you will have plenty of things
to check out while we are on holidays.&lt;/p>
&lt;p>Keep in mind that while we try to make sure each dev snapshot is stable enough for general testing, this is by
definition a pre-release piece of software. 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;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.4.dev7/">&lt;strong>Web editor&lt;/strong>&lt;/a>, &lt;a href="https://www.meta.com/experiences/godot-game-engine/7713660705416473/">&lt;strong>XR editor&lt;/strong>&lt;/a>, or the &lt;strong>Android editor&lt;/strong> for this release (join the &lt;a href="https://groups.google.com/g/godot-testers">Android editor 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/2506810/Pest_Apocalypse/">&lt;strong>Pest Apocalypse&lt;/strong>&lt;/a>, &lt;em>a hyper-realistic post apocalyptic physics based pizza delivery action rogue-lite! It is developed by &lt;a href="https://www.kikimora.games/">Kikimora Games&lt;/a>. You can purchase the game &lt;a href="https://store.steampowered.com/app/2506810/Pest_Apocalypse/">on Steam&lt;/a>, and follow the developers &lt;a href="https://bsky.app/profile/kikimora.games">on BlueSky&lt;/a> and &lt;a href="https://discord.com/invite/sSmGbJSa4E">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-4-dev-1/">4.4 dev 1&lt;/a>, &lt;a href="/article/dev-snapshot-godot-4-4-dev-2/">4.4 dev 2&lt;/a>,
&lt;a href="/article/dev-snapshot-godot-4-4-dev-3/">4.4 dev 3&lt;/a>, &lt;a href="/article/dev-snapshot-godot-4-4-dev-4/">4.4 dev 4&lt;/a>, &lt;a href="/article/dev-snapshot-godot-4-4-dev-5/">4.4 dev 5&lt;/a>, and &lt;a href="/article/dev-snapshot-godot-4-4-dev-6/">4.4 dev 6&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 dev 7.&lt;/p>
&lt;p>Here are highlights of a few new features in dev 7 that you might find particularly exciting!&lt;/p>
&lt;h3 id="jolt-physics-module">Jolt Physics module&lt;/h3>
&lt;p>Ever since its inception in late 2022, &lt;a href="https://github.com/godot-jolt/godot-jolt">godot-jolt&lt;/a> has become the de-facto 3D
physics engine for many of our developers. Much of the history behind why this was the case is documented in &lt;a href="https://github.com/godotengine/godot-proposals/issues/7308">this
proposal&lt;/a> by &lt;a href="https://github.com/adamscott">Adam Scott&lt;/a>, but
the main takeaway was a strong push for this tool to be recognized as an official addon. In doing so, users would be
able to find this amazing resource in a way that was promoted by the engine itself; an exciting prospect!&lt;/p>
&lt;p>The Godot Jolt maintainers, &lt;a href="https://github.com/mihe">Mikael Hermansson&lt;/a> and &lt;a href="https://github.com/jrouwe">Jorrit Rouwe&lt;/a>,
took this idea one step further: integrating the tool as part of the engine &lt;em>directly&lt;/em>. There was already a symbiosis
between their team and the Godot engine, with many features being added to Godot &lt;em>and&lt;/em> Jolt to accommodate both, but the
integration of an official module was no small feat; their pull request
(&lt;a href="https://github.com/godotengine/godot/pull/99895">GH-99895&lt;/a>) ended up adding over 500 files and 115 &lt;strong>thousand&lt;/strong> lines
of code! So while this was one of the most rigorously tested PRs relative to the amount of time it’s been up, it’d be
impossible for any team to account for &lt;em>everything&lt;/em> this behemoth introduced, so we eagerly await your feedback (and bug
reports) on one of the most highly-requested features of 4.x.&lt;/p>
&lt;p>&lt;strong>Note:&lt;/strong> At time of writing, this does &lt;strong>not&lt;/strong> replace Godot Physics as the default 3D physics engine.
The Jolt Physics integration in Godot is considered experimental, and may change in future releases. It also lacks some features of Godot Physics so isn’t a full drop-in replacement. If your interests/use-case are supported, the
tool can be enabled by changing the &lt;code class="language-plaintext highlighter-rouge">physics/3d/physics_engine&lt;/code> project setting to &lt;code class="language-plaintext highlighter-rouge">Jolt Physics&lt;/code>.&lt;/p>
&lt;h3 id="net-80">.NET 8.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/paulloz">Paul Joannon&lt;/a> and &lt;a href="https://github.com/raulsntos">Raul Santos&lt;/a> have put the final pieces in
place for moving both the GodotSharp library and user projects to .NET 8 (&lt;a href="https://github.com/godotengine/godot/pull/92131">GH-92131&lt;/a> and
&lt;a href="https://github.com/godotengine/godot/pull/100195">GH-100195&lt;/a>). All new projects will use .NET 8 by default and
existing projects will automatically update to .NET 8 once opened with this release or any newer 4.4 build.&lt;/p>
&lt;h3 id="improved-scene-tree-editor-performance">Improved Scene Tree editor performance&lt;/h3>
&lt;p>The amount of performance boosts that have been crammed in between dev 6 and dev 7 has been staggering. Of note are the
recent improvements to the engine’s core including many optimizations throughout the String class, spearheaded by
&lt;a href="https://github.com/Ivorforce">Ivorforce&lt;/a>. But perhaps the most obvious improvement comes from &lt;a href="https://github.com/hpvb">HP van
Braam&lt;/a> and their modifications to the SceneTree system
(&lt;a href="https://github.com/godotengine/godot/pull/99700">GH-99700&lt;/a>). While this will prove beneficial across all projects,
these changes result in especially complex scenes having a tenfold performance in the editor when moving or renaming
nodes in the SceneTree.&lt;/p>
&lt;h3 id="documentation-tooltips">Documentation tooltips&lt;/h3>
&lt;p>Thanks to &lt;a href="https://github.com/dalexeev">Danil Alexeev&lt;/a> the GDScript code editor will now display a tooltip containing
information about functions, variables, classes, etc. when you hover over them, including the documentation you have
written using our documentation system (&lt;a href="https://github.com/godotengine/godot/pull/91060">GH-91060&lt;/a>). This makes using
the integrated documentation system even more powerful as you no longer have to bounce between the code editor and the
related docs to quickly get information.&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-4-dev-7/documentation-tooltip.webp" alt="Documentation tooltip" />&lt;/p>
&lt;h3 id="baked-shadowmasks-for-lightmaps">Baked shadowmasks for lightmaps&lt;/h3>
&lt;p>Until now, you have always had to choose between fully baked or fully dynamic shadows when using LightmapGI. However,
sometimes you want to have dynamic shadows up close where detail matters, but use static shadows in the distance where a
low resolution is acceptable. Finally it is possible thanks to the hard work of
&lt;a href="https://github.com/BlueCube3310">BlueCube3310&lt;/a> in &lt;a href="https://github.com/godotengine/godot/pull/85653">GH-85653&lt;/a>. You can
now enable shadow masks while baking your LightmapGI to combine dynamic and static shadows for the best quality.&lt;/p>
&lt;p>Additionally, this allows you to drastically shorten the range of your dynamic shadows which is a very important
optimization, especially for mobile devices.&lt;/p>
&lt;p>This feature is still experimental and it will change in response to feedback, so please test it out and let us know
what you think!&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-4-dev-7/shadowmask.webp" alt="Baked Lightmap" />&lt;/p>
&lt;h3 id="updated-toolchains-for-official-builds">Updated toolchains for official builds&lt;/h3>
&lt;p>We updated some of the toolchains we use for official builds in &lt;a href="https://github.com/godotengine/build-containers/pull/150">build-containers#150&lt;/a>,
notably macOS and iOS SDKs from Xcode 16.2, and MinGW 12.0.0 with GCC 14.2.1 for Windows builds.&lt;/p>
&lt;p>Toolchains for Linux, Android, and Web are still the same versions as for Godot 4.3.&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>3D: Add 3D translation sensitivity to Editor Settings (&lt;a href="https://github.com/godotengine/godot/pull/81714">GH-81714&lt;/a>).&lt;/li>
&lt;li>3D: Add ruler mode to 3D (&lt;a href="https://github.com/godotengine/godot/pull/100162">GH-100162&lt;/a>).&lt;/li>
&lt;li>Animation: Add animation node extension (&lt;a href="https://github.com/godotengine/godot/pull/99181">GH-99181&lt;/a>).&lt;/li>
&lt;li>Audio: Add Web MIDI support (&lt;a href="https://github.com/godotengine/godot/pull/95928">GH-95928&lt;/a>).&lt;/li>
&lt;li>Buildsystem: Add loongarch64 support for Linux/*BSD (&lt;a href="https://github.com/godotengine/godot/pull/97822">GH-97822&lt;/a>).&lt;/li>
&lt;li>Buildsystem: Make Godot compile on &lt;code class="language-plaintext highlighter-rouge">FreeBSD&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/100047">GH-100047&lt;/a>).&lt;/li>
&lt;li>Core: Fix &lt;code class="language-plaintext highlighter-rouge">JSON.{from,to}_native()&lt;/code> issues (&lt;a href="https://github.com/godotengine/godot/pull/99765">GH-99765&lt;/a>).&lt;/li>
&lt;li>Core: Optimize StringBuilder by using &lt;code class="language-plaintext highlighter-rouge">LocalVector&lt;/code> instead of &lt;code class="language-plaintext highlighter-rouge">Vector&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/99775">GH-99775&lt;/a>).&lt;/li>
&lt;li>Core: Optimize String construction from statically known strings by evaluating &lt;code class="language-plaintext highlighter-rouge">strlen&lt;/code> at compile-time (&lt;a href="https://github.com/godotengine/godot/pull/100132">GH-100132&lt;/a>).&lt;/li>
&lt;li>Core: Add move assignment and move constructor to Variant (&lt;a href="https://github.com/godotengine/godot/pull/100426">GH-100426&lt;/a>).&lt;/li>
&lt;li>Documentation: Document &lt;code class="language-plaintext highlighter-rouge">_process()&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">_physics_process()&lt;/code> delta behavior at low FPS (&lt;a href="https://github.com/godotengine/godot/pull/94636">GH-94636&lt;/a>).&lt;/li>
&lt;li>Editor: Add ability to create a new inherited scene from code (&lt;a href="https://github.com/godotengine/godot/pull/90057">GH-90057&lt;/a>).&lt;/li>
&lt;li>Editor: Add profiler autostart indicator to EditorRunBar (&lt;a href="https://github.com/godotengine/godot/pull/97492">GH-97492&lt;/a>).&lt;/li>
&lt;li>Editor: Allow dragging to specific folders in filesystem dock (&lt;a href="https://github.com/godotengine/godot/pull/99453">GH-99453&lt;/a>).&lt;/li>
&lt;li>Editor: Make the Script Editor’s parser execute sooner on edit after error was found (&lt;a href="https://github.com/godotengine/godot/pull/87542">GH-87542&lt;/a>).&lt;/li>
&lt;li>Editor: Show String properties’ text in a tooltip in the inspector (&lt;a href="https://github.com/godotengine/godot/pull/76231">GH-76231&lt;/a>).&lt;/li>
&lt;li>Export: Use temp dirs instead of cache dirs for export (&lt;a href="https://github.com/godotengine/godot/pull/100150">GH-100150&lt;/a>).&lt;/li>
&lt;li>GDExtension: Fix &lt;code class="language-plaintext highlighter-rouge">Variant&lt;/code> modulo operation (&lt;a href="https://github.com/godotengine/godot/pull/99559">GH-99559&lt;/a>).&lt;/li>
&lt;li>GDScript: Add &lt;code class="language-plaintext highlighter-rouge">@warning_ignore_start&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">@warning_ignore_restore&lt;/code> annotations (&lt;a href="https://github.com/godotengine/godot/pull/76020">GH-76020&lt;/a>).&lt;/li>
&lt;li>GUI: Change default Arabic font to Vazirmatn (&lt;a href="https://github.com/godotengine/godot/pull/100053">GH-100053&lt;/a>).&lt;/li>
&lt;li>GUI: Fix Tree drag-and-drop scrolling having low FPS at low Physics Ticks per Second (&lt;a href="https://github.com/godotengine/godot/pull/98766">GH-98766&lt;/a>).&lt;/li>
&lt;li>GUI: Improve emoji SVG parsing by caching (&lt;a href="https://github.com/godotengine/godot/pull/100300">GH-100300&lt;/a>).&lt;/li>
&lt;li>GUI: Save color palette as resources to reuse later (&lt;a href="https://github.com/godotengine/godot/pull/91604">GH-91604&lt;/a>).&lt;/li>
&lt;li>Import: Consider all texture types for resource thumbnail generation (&lt;a href="https://github.com/godotengine/godot/pull/100247">GH-100247&lt;/a>).&lt;/li>
&lt;li>Input: Add &lt;code class="language-plaintext highlighter-rouge">Tablet/Trackpad&lt;/code> 3D navigation preset (&lt;a href="https://github.com/godotengine/godot/pull/97985">GH-97985&lt;/a>).&lt;/li>
&lt;li>Navigation: Despaghettify NavigationServer path queries (&lt;a href="https://github.com/godotengine/godot/pull/100129">GH-100129&lt;/a>).&lt;/li>
&lt;li>Plugin: Export &lt;code class="language-plaintext highlighter-rouge">EditorInspector::instantiate_property_editor&lt;/code> for use by plugins (&lt;a href="https://github.com/godotengine/godot/pull/87375">GH-87375&lt;/a>).&lt;/li>
&lt;li>Rendering: Add Blend Distance property to ReflectionProbe (&lt;a href="https://github.com/godotengine/godot/pull/99958">GH-99958&lt;/a>).&lt;/li>
&lt;li>Rendering: Allow changing the anisotropic filter level at run-time per Viewport (&lt;a href="https://github.com/godotengine/godot/pull/88313">GH-88313&lt;/a>).&lt;/li>
&lt;li>Rendering: Further performance improvements from The Forge (&lt;a href="https://github.com/godotengine/godot/pull/99257">GH-99257&lt;/a>).&lt;/li>
&lt;li>Rendering: Automatically compress new lightmap textures (&lt;a href="https://github.com/godotengine/godot/pull/100327">GH-100327&lt;/a>).&lt;/li>
&lt;li>Rendering: Optimize PointLight2D shadow rendering by reducing draw calls and RD state changes (&lt;a href="https://github.com/godotengine/godot/pull/100302">GH-100302&lt;/a>).&lt;/li>
&lt;li>Rendering: Implement &lt;code class="language-plaintext highlighter-rouge">RD::buffer_get_data_async()&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">RD::texture_get_data_async()&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/100110">GH-100110&lt;/a>).&lt;/li>
&lt;li>Shaders: Avoid error spam when shaders fail to compile by freeing shader_data version when compilation fails (&lt;a href="https://github.com/godotengine/godot/pull/100128">GH-100128&lt;/a>).&lt;/li>
&lt;li>XR: Allow locking the camera to the &lt;code class="language-plaintext highlighter-rouge">XROrigin3D&lt;/code> for benchmarking or automated testing (&lt;a href="https://github.com/godotengine/godot/pull/99145">GH-99145&lt;/a>).&lt;/li>
&lt;li>XR: OpenXR: Add support for binding modifiers (&lt;a href="https://github.com/godotengine/godot/pull/97140">GH-97140&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>113 contributors&lt;/strong> submitted &lt;strong>263 improvements&lt;/strong> for this new snapshot. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.4-dev7">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since the previous 4.4-dev6 snapshot.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/46c8f8c5c5874c7c56ea5b1384259de9402d3449">&lt;code class="language-plaintext highlighter-rouge">46c8f8c5c&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.4-dev7">
Download Godot 4.4 dev7
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/dev-snapshot-godot-4-4-dev-7.webp" />
&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://github.com/godotengine/godot-builds/releases/download/4.4-dev7/Godot_v4.4-dev7_linux.x86_64.zip" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev7/Godot_v4.4-dev7_mono_linux_x86_64.zip" 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://github.com/godotengine/godot-builds/releases/download/4.4-dev7/Godot_v4.4-dev7_macos.universal.zip" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev7/Godot_v4.4-dev7_mono_macos.universal.zip" 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://github.com/godotengine/godot-builds/releases/download/4.4-dev7/Godot_v4.4-dev7_win64.exe.zip" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev7/Godot_v4.4-dev7_mono_win64.zip" 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.4-dev7">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="/donate/">
Make a Donation
&lt;/a>
&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;ul>
&lt;li>.NET 8.0 or newer is required for this build, changing the minimal supported version from .NET 6 to 8.&lt;/li>
&lt;/ul>
&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;p>There are currently no known issues introduced by this release.&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 on 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>Pre-release</category><guid>https://godotengine.org/article/dev-snapshot-godot-4-4-dev-7/</guid><dc:creator>Thaddeus Crews</dc:creator><pubDate>Thu, 19 Dec 2024 18:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/dev-snapshot-godot-4-4-dev-7.webp</image></item><item><title>Godot XR community - December 2024</title><link>https://godotengine.org/article/godot-xr-community-nov-2024/</link><description>&lt;p>Godot has a very active XR-focused community on the XR channel of the &lt;a href="/community/">official Godot Discord server&lt;/a>.
Today, we want to put a spotlight on a number of community projects.&lt;/p>
&lt;h2 id="godot-xr-community-game-jams">Godot XR community Game Jams&lt;/h2>
&lt;p>To showcase the engine capabilities and the ingenuity of the Godot XR community, game jams are now being organized twice a year.
It’s a fun way for participants to get introduced to Godot’s XR capabilities.&lt;/p>
&lt;h3 id="godot-xr-game-jam-1">Godot XR Game Jam #1&lt;/h3>
&lt;p>The &lt;a href="https://itch.io/jam/godot-xr-game-jam">first Godot XR Game Jam&lt;/a> was held from 1 December until 4 December 2023.
The theme of this game jam was Vapor.
We saw both many new faces and long-time community members join, and had a total of 17 entries.&lt;/p>
&lt;p>The #1 spot went to &lt;a href="https://itch.io/jam/godot-xr-game-jam/rate/2402526">Cloud Shepherd&lt;/a> which won 3 out of 6 categories, including “Originality”, “User experience”, and “Audio”.
In this entry, you herd sheep on clouds in the sky by using fans to create breezes that blow the sheep to their destinations.&lt;/p>
&lt;p>The #2 spot was taken by &lt;a href="https://itch.io/jam/godot-xr-game-jam/rate/2402404">Super Steam Hands&lt;/a> which won 2 out of 6 categories (“Fun factor” and “Theme incorporation”).
Don’t let the thumbnail of this entry fool you. It’s a great game where you can feel like Iron Man by using jets of steam to parkour around a level.&lt;/p>
&lt;p>The #3 spot went to &lt;a href="https://itch.io/jam/godot-xr-game-jam/rate/2400974">Pipe Stream&lt;/a> which ranked the best in the “Haptics” category.
It’s a great little puzzle game where you need to chip away a path for vapor to reach a target. Very challenging!&lt;/p>
&lt;p>There were far more great entries, so be sure to &lt;a href="https://itch.io/jam/godot-xr-game-jam/entries">check out the jam page for more&lt;/a>!&lt;/p>
&lt;h3 id="godot-xr-game-jam-2">Godot XR Game Jam #2&lt;/h3>
&lt;p>The &lt;a href="https://itch.io/jam/godot-xr-game-jam-july-2024">second Godot XR Game Jam&lt;/a> was held from 8 July until 15 July 2024.
We decided to give participants a full week to complete their game.
The theme this jam was Relaxation. There were a total of 26 entries and this time we scored them on the average points in all categories.&lt;/p>
&lt;p>The #1 spot went to &lt;a href="https://itch.io/jam/godot-xr-game-jam-july-2024/rate/2821459">Who’s a good boy&lt;/a> with 4.042 points.
This cute little game has you play fetch with a dog in a park.
It features some excellent interactions both from the player’s and dog’s points of view.&lt;/p>
&lt;p>The #2 spot went to &lt;a href="https://itch.io/jam/godot-xr-game-jam-july-2024/rate/2830514">Constellation Coach VR&lt;/a> with 3.974 points.
This game has you find constellations in the night sky by holding up a picture of the constellation and aligning it with the relevant stars.
Excellent haptic feedback lets you know when you’ve gotten close, and successfully aligning the constellation lights it up.&lt;/p>
&lt;p>The #3 spot went to &lt;a href="https://itch.io/jam/godot-xr-game-jam-july-2024/rate/2830121">Summer Pottery VR&lt;/a> with 3.938 points.
This game lets you do some clay pottery sculpting.
It’s a great and very well-executed use of physically interacting with the clay to shape and paint your creation.&lt;/p>
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/0IxvWaj8iUo?si=em-D99NacStXyIYA" title="5 VR Games Made in Godot To Inspire You" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">&lt;/iframe>
&lt;p>Again, many of the other entries were of great quality and we highly recommend &lt;a href="https://itch.io/jam/godot-xr-game-jam-july-2024/entries">checking them out&lt;/a>.&lt;/p>
&lt;h3 id="godot-xr-game-jam-3">Godot XR Game Jam #3&lt;/h3>
&lt;p>The 3rd game jam will be held in the week starting 10 February 2025. &lt;a href="https://itch.io/jam/godot-xr-game-jam-feb-2025">You can read all about it and sign up here&lt;/a>.&lt;/p>
&lt;h2 id="universal-godot-vr-plugin">Universal Godot VR plugin&lt;/h2>
&lt;p>Inspired by the Universal Unreal Engine VR Mod, community member TeddyBear082 has created a mod to inject VR capabilities into existing 3D games made with Godot.&lt;/p>
&lt;p>TeddyBear082 previously made a name for himself with the excellent VR port of the popular game Cruelty Squad and has used the knowledge gained with that and similar projects to create a more universal mod.&lt;/p>
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/Hb9BDcCZHCY?si=Zr2Jw3MV7cY00yEE" title="UGVR Demo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">&lt;/iframe>
&lt;p>You can find the plugin &lt;a href="https://github.com/teddybear082/UGVR">on teddybear082’s GitHub profile&lt;/a>.&lt;/p>
&lt;h2 id="body-tracking-and-motion-capture-plugins">Body tracking and motion capture plugins&lt;/h2>
&lt;p>Core contributor Malcolm Nixon has created various plugins for Godot that use the new body tracking feature to make tracking data available from various sources.&lt;/p>
&lt;p>He has support for Rokoko, Axis Studio and Movella.
He also has a plugin for VMC (Virtual Motion Capture), which is a standard used by a number of motion capture systems.&lt;/p>
&lt;p>You can find the plugins &lt;a href="https://github.com/Malcolmnixon?tab=repositories">on his GitHub profile&lt;/a>.&lt;/p>
&lt;h2 id="meta-platform-plugin">Meta platform plugin&lt;/h2>
&lt;p>Community member Decacis has released a few of his games on the Meta Horizon store and implemented part of the Meta platform SDK in support of this.
He has implemented support for things like in-app purchases, leaderboard, challenges, and much much more.&lt;/p>
&lt;p>The plugin he created is open source and can be found &lt;a href="https://github.com/decacis/godot_oculus_platform">on his GitHub profile&lt;/a>.&lt;/p>
&lt;h2 id="godot-xr-tools">Godot XR Tools&lt;/h2>
&lt;p>We’ve showcased XR Tools before, but with version 4.4 of the plugin nearly ready for release, it’s worth quickly looking at what’s coming.&lt;/p>
&lt;ul>
&lt;li>Improved support for Godot 4.2+ features such as pass through logic with both OpenXR and WebXR.&lt;/li>
&lt;li>New objects to make games suitable for both VR and non-VR use.&lt;/li>
&lt;li>A new gaze interaction component for controller-less experiences.&lt;/li>
&lt;li>Various improvements to snap points.&lt;/li>
&lt;li>Improvements to hands interacting with physics.&lt;/li>
&lt;/ul>
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/YWdcc6r9w3E?si=BimitXSjjVQxcLrO" title="Godot XR tools demo for GodotCon 2024" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">&lt;/iframe>
&lt;h2 id="godot-arcore-support">Godot ARCore support&lt;/h2>
&lt;p>ARCore support in Godot has been a long time coming.
From an early working prototype in Godot 3, to moving this into a community maintained plugin, there have been plenty of hurdles along the way. Thanks to the persistance of Patrick Exner, Luca Junge, and Chambefort Maxime, we have nearly reached the finish line.&lt;/p>
&lt;p>Supporting changes were recently merged into the master branch of Godot and you can find the plugin itself &lt;a href="https://github.com/GodotVR/godot_arcore">on the plugin’s GitHub&lt;/a>.&lt;/p></description><category>News</category><guid>https://godotengine.org/article/godot-xr-community-nov-2024/</guid><dc:creator>Bastiaan Olij</dc:creator><pubDate>Wed, 18 Dec 2024 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/december-2024-update-godot-xr-community.webp</image></item><item><title>Meet the creator behind the Godot Game Awards</title><link>https://godotengine.org/article/godot-game-awards-stayathomedev/</link><description>&lt;p>If you’ve watched Godot-related content on YouTube, &lt;a href="https://www.youtube.com/@stayathomedev">StayAtHomeDev&lt;/a> needs no introduction. He’s been sharing his passion for game development and the Godot Engine through his channel. As the creator of the popular “&lt;a href="https://www.youtube.com/playlist?list=PLEHvj4yeNfeHArSU6U2a715ssJYYCnKCg">This Week in Godot&lt;/a>” series, and the Godot Game Awards, he’s helped showcase the amazing work of the Godot community. We had the chance to talk with him about his journey, what inspired the awards, and his efforts to support the community.&lt;/p>
&lt;h3 id="what-inspired-you-to-create-the-godot-game-awards-and-how-long-has-it-been-running">What inspired you to create the Godot Game Awards, and how long has it been running?&lt;/h3>
&lt;p>I started the “&lt;a href="https://www.youtube.com/playlist?list=PLEHvj4yeNfeHArSU6U2a715ssJYYCnKCg">This Week in Godot&lt;/a>” series over two years ago on my channel. At first it started as a compilation of cool projects or games I found throughout each week. About 7-8 videos in, I thought it would be cool if people could vote for their favorite each week and the engagement exploded. People would comment every week and eventually I compiled every winner into a final vote for the “&lt;a href="https://www.youtube.com/watch?v=3_3N_nL9gIM">Best Godot Project of the Year&lt;/a>” in 2023.&lt;/p>
&lt;p>This year I wanted to expand that into multiple categories, highlighting certain achievements like art design and music, and give attention to other things like plugins, tutorials, even devlogs. From that came the Godot Game Awards, a compilation of the best Godot-based games, plugins, and projects as voted by viewers on my channel.&lt;/p>
&lt;h3 id="how-can-people-get-involved-in-this-years-edition">How can people get involved in this year’s edition?&lt;/h3>
&lt;p>People can get involved from now until December 15th by voting on the 20+ different categories with an official 2024 🗳️ &lt;a href="https://forms.gle/Q4yYy82neZcKA3Ny6">Godot Game Awards Ballot&lt;/a>.&lt;/p>
&lt;p>The winners will be announced in a premiere video on December 28th at 2:00pm EST on my channel so that everyone can watch together and help support the great work by these developers.&lt;/p>
&lt;h3 id="tell-us-about-your-youtube-channelwhat-kind-of-content-do-you-focus-on-and-what-motivated-you-to-start-creating-videos">Tell us about your YouTube channel—what kind of content do you focus on, and what motivated you to start creating videos?&lt;/h3>
&lt;p>I started &lt;a href="https://www.youtube.com/@stayathomedev">StayAtHomeDev&lt;/a> over two years ago to share my passion for creating through game development. At the time, I had a potential job offer to be the Web Coordinator for a professional football team in the US. But I had just been given a grant by Meta for some VR development work with their Oculus Quest 2 headset so I used that to launch the channel. It really was an exercise to create independent income so I could stay at home with my kids. That was a lifestyle choice I knew I wanted to make for them, so I took a shot at YouTube.&lt;/p>
&lt;p>I’m very interested in sharing knowledge so the channel has had an element of teaching with tutorials or game development concept videos. With the “&lt;a href="https://www.youtube.com/playlist?list=PLEHvj4yeNfeHArSU6U2a715ssJYYCnKCg">This Week in Godot&lt;/a>” series, the channel started to steer more towards enriching the Godot community and showcasing what people were creating with the engine. Now, it’s a mix of tutorials, QAs about general game development topics, and the newest format, interviews. I am actually most excited about the interview videos because they really give a chance for viewers to peek into real game dev life with stories and advice from developers actively breaking through the industry or those who are already successful, and of course doing it with the Godot Engine.&lt;/p>
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/8nsJw89FG_A" frameborder="0" allowfullscreen="" style="width: 100%; aspect-ratio: 16 / 9; height: auto;">&lt;/iframe>
&lt;h3 id="how-did-you-discover-godot-when-did-you-start-using-it-do-you-have-prior-experience-with-other-game-engines">How did you discover Godot? When did you start using it? Do you have prior experience with other game engines?&lt;/h3>
&lt;p>If you look at the earliest videos on the channel, you’ll notice they were all focused on the Unreal Engine. I actually worked within Unreal first. Long ago…like long ago…I started making little games with an engine called 3D GameStudio.&lt;/p>
&lt;p>When I started the channel, I knew of Godot (which I thought was called GoDot) but never tried it. After spending more time on YouTube and lurking around other game dev content, Godot kept popping up, so I took it for a test drive. I ended up making a video about it which went “viral” for a small channel while my first kid was being born. There was clearly a lot of interest in the engine so I kept playing around with it and fell in love. Not only with how streamlined it felt but also because it was open source and had such a strong sense of community and pride. I decided I wanted to help support that with the channel.&lt;/p>
&lt;h3 id="what-advice-would-you-give-to-someone-starting-out-as-a-game-developer-or-content-creator-in-the-godot-community">What advice would you give to someone starting out as a game developer or content creator in the Godot community?&lt;/h3>
&lt;p>I would say the WORST thing you can do is stop yourself before you even try. Game development and content creation are both difficult. They are also largely self-motivated so telling yourself you can’t do them means you likely won’t.&lt;/p>
&lt;p>The BEST thing you can do is just try. If you are interested in making games, download the engine and try. You are going to hit walls and fail at a number of things but that’s part of the learning process. The information and tools are out there, you just need to start the climb.&lt;/p>
&lt;p>In more applicable terms…start small, remake Pong or level 1 of Mario Bros. If something seems too difficult to understand, break it into smaller pieces. Don’t try to make an entire 2D platformer controller, make it move left and right first. And don’t think you’re going to sell your first game and make tons of money. You’ll put too much pressure on yourself and it won’t be fun anymore, you’ll get frustrated, and you’ll quit.&lt;/p>
&lt;p>For content creation, it’s a marathon so the most important thing is don’t worry about the views. Make content that you want to make. If a video gets more views than normal, analyze why, and do it again with a small change. YouTube is sort of a constantly moving target and you won’t get a good idea of your style, your interest, or what people want to watch for a while. And even then, those things can always change. Consistency is the important variable…keep doing it and consistently try to get better. Better sound, better speaking, better editing, better pacing, better thumbnails, better topics, better storytelling. There is always something you can improve. If you create videos consistently and improve with every video, you’ll get to where you want to go and build a ton of new skills along the way.&lt;/p>
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/C-sJarU469Y" frameborder="0" allowfullscreen="" style="width: 100%; aspect-ratio: 16 / 9; height: auto;">&lt;/iframe>
&lt;h3 id="do-you-plan-to-continue-organizing-the-godot-game-awards-in-the-future">Do you plan to continue organizing the Godot Game Awards in the future?&lt;/h3>
&lt;p>Absolutely! There have already been nearly 1000 ballots submitted, which is crazy to me. People comment how they enjoy finding new Godot projects every week with the weekly video series and tell me that they feel inspired to make something themselves. That is the best thing I could hope for, that people feel inspired to create. I’m also a music therapist so I have seen the effect creativity and expression can have on a person’s well-being. To me, games are an art form and within that lies the ability to create powerful feelings in other people through interactive play. If one person continues to be inspired by the games showcased in the awards, then I’ll keep making the videos.&lt;/p>
&lt;hr />
&lt;p>&lt;span style="font-size: 28px; font-family: var(--header-font-family); font-weight: 800;">🗳️ &lt;a href="https://forms.gle/Q4yYy82neZcKA3Ny6">Vote now!&lt;/a> 👈&lt;span>&lt;/span>&lt;/span>&lt;/p>
&lt;hr />
&lt;p>If you want to support StayAtHomeDev you can visit his &lt;a href="https://www.patreon.com/StayAtHomeDev_">Patreon&lt;/a>, subscribe to &lt;a href="https://www.youtube.com/@stayathomedev">his channel&lt;/a>, or vote for your favorite Godot projects each week.&lt;/p>
&lt;p>Good luck to all the nominees, and thank you StayAtHomeDev for all your work organizing the awards!&lt;/p></description><category>Showcase</category><guid>https://godotengine.org/article/godot-game-awards-stayathomedev/</guid><dc:creator>Emi</dc:creator><pubDate>Mon, 09 Dec 2024 18:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/godot-awards-stayathomedev.webp</image></item><item><title>Dev snapshot: Godot 4.4 dev 6</title><link>https://godotengine.org/article/dev-snapshot-godot-4-4-dev-6/</link><description>&lt;p>Safety goggles on, people! Features and Quality-of-Life are being integrated at blinding speeds; precautions must be taken to view them head-on. Once secure, we can dive into what’s shaping up to be one of the final development snapshots before 4.4-beta builds roll out!&lt;/p>
&lt;p>Keep in mind that while we try to make sure each dev snapshot is stable enough for general testing, this is by
definition a pre-release piece of software. 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;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.4.dev6/">&lt;strong>Web editor&lt;/strong>&lt;/a>, &lt;a href="https://www.meta.com/experiences/godot-game-engine/7713660705416473/">&lt;strong>XR editor&lt;/strong>&lt;/a>, or the &lt;strong>Android editor&lt;/strong> for this release (join the &lt;a href="https://groups.google.com/g/godot-testers">Android editor 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/3019370/Malware/">&lt;strong>Malware&lt;/strong>&lt;/a>, &lt;em>an installation simulator where players must navigate a minefield of circa-1999 malware! It is developed by &lt;a href="https://store.steampowered.com/search/?developer=Odd%20Games">Odd Games&lt;/a>. You can purchase the game &lt;a href="https://store.steampowered.com/app/3019370/Malware/">on Steam&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-4-dev-1/">4.4 dev 1&lt;/a>, &lt;a href="/article/dev-snapshot-godot-4-4-dev-2/">4.4 dev 2&lt;/a>,
&lt;a href="/article/dev-snapshot-godot-4-4-dev-3/">4.4 dev 3&lt;/a>, &lt;a href="/article/dev-snapshot-godot-4-4-dev-4/">4.4 dev 4&lt;/a>, and &lt;a href="/article/dev-snapshot-godot-4-4-dev-5/">4.4 dev 5&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 dev 6.&lt;/p>
&lt;p>Here are highlights of a few new features in dev 6 that you might find particularly exciting!&lt;/p>
&lt;h3 id="camera3d-preview-in-inspector">Camera3D preview in inspector&lt;/h3>
&lt;p>Previously, adjusting the view of a &lt;code class="language-plaintext highlighter-rouge">Camera3D&lt;/code> in a scene could be a chore to handle. It required activating the camera you wanted to preview, and then reverting it back if it wasn’t the main camera. You could pin a preview of a camera in a dedicated viewport, but that meant reducing the real-estate of your main viewport.&lt;/p>
&lt;p>Now, with &lt;a href="https://github.com/timothyqiu">Haoyu Qiu&lt;/a>’s feature (&lt;a href="https://github.com/godotengine/godot/pull/90778">GH-90778&lt;/a>), every selected 3D camera shows a preview inside the inspector. No switching cameras needed to preview anymore.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="">
&lt;source src="/storage/blog/dev-snapshot-godot-4-4-dev-6/camera3d-inspector.mp4?1" type="video/mp4" />
&lt;/video>
&lt;h3 id="collisionshape3d-debug-color-customization">CollisionShape3D debug color customization&lt;/h3>
&lt;p>3D collision shapes now have parity with their 2D counterparts with the newly added &lt;code class="language-plaintext highlighter-rouge">debug_color&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">debug_fill&lt;/code> properties, which lets you customize the appearance of debug collision shapes in the editor, or at runtime if “Visible Collision Shapes” is enabled in the Debug menu. Thanks to first-time contributor &lt;a href="https://github.com/BattyBovine">BattyBovine&lt;/a> for implementing this much-requested proposal (&lt;a href="https://github.com/godotengine/godot/pull/90644">GH-90644&lt;/a>).&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-4-dev-6/debug-color.webp" alt="Examples of custom debug colors" />&lt;/p>
&lt;h3 id="replace-internal-csg-implementation-with-manifold-library">Replace internal CSG implementation with Manifold library&lt;/h3>
&lt;p>Godot added support for CSG, or Constructive Solid Geometry, &lt;a href="/article/godot-gets-csg-support/">back in 3.1&lt;/a>. This is a great tool for rapidly prototyping level geometry or even simple props and characters by combining 3D primitives with various boolean operations (union, intersection, subtraction).&lt;/p>
&lt;p>Our implementation suffered from a number of bugs and stability issues, with no dedicated maintainer to tackle them. Thankfully, a great open source library has been released since then which can be used as a well-maintained replacement for our CSG internals: &lt;a href="https://github.com/elalish">Emmett Lalish&lt;/a>’s &lt;a href="https://github.com/elalish/manifold">Manifold&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://github.com/fire">Ernest Lee&lt;/a> did an amazing work implementing Manifold in Godot, with help from Emmett to ensure that the library fits our requirements (&lt;a href="https://github.com/godotengine/godot/pull/94321">GH-94321&lt;/a>). As this is a fairly big change to how Godot’s CSG works internally (but with minimal impact on the user API), you might notice differences in your projects using CSG. Please report any change that appears to have a negative impact on your usage.&lt;/p>
&lt;h3 id="runtime-wav-file-loading">Runtime WAV file loading&lt;/h3>
&lt;p>First-time contributor &lt;a href="https://github.com/what-is-a-git">cherry&lt;/a> implemented the long-requested support for runtime loading of WAV files (&lt;a href="https://github.com/godotengine/godot/pull/93831">GH-93831&lt;/a>). This adds parity with OGG Vorbis audio tracks, and will be a welcome addition for users who want to load user-generated content at runtime (including non-game audio applications).&lt;/p>
&lt;h3 id="extend-curve-to-allow-for-domains-outside-of-0-1">Extend Curve to allow for domains outside of &lt;code class="language-plaintext highlighter-rouge">[0, 1]&lt;/code>&lt;/h3>
&lt;p>Have you ever wished that you could edit a &lt;code class="language-plaintext highlighter-rouge">Curve&lt;/code> in a domain that goes beyond the normalized &lt;code class="language-plaintext highlighter-rouge">[0, 1]&lt;/code> range? &lt;a href="https://github.com/anvilfolk">ocean&lt;/a> finally got their implementation of this feature merged (&lt;a href="https://github.com/godotengine/godot/pull/67857">GH-67857&lt;/a>), which should give you greater flexibility in how to map your functions and data to Godot’s ubiquitous Curve resource.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="">
&lt;source src="/storage/blog/dev-snapshot-godot-4-4-dev-6/curve-extended-domain.mp4?1" type="video/mp4" />
&lt;/video>
&lt;h3 id="temporary-file-and-directory-utilities">Temporary file and directory utilities&lt;/h3>
&lt;p>Tool creators, &lt;a href="https://github.com/adamscott">Adam Scott&lt;/a> cooked a little something that could be interesting for you. A brand new API lets you create and dispose of temporary files. Handy if you need to write content on disk, but without worrying about polluting user data. These temporary files and directories even dispose of themselves after use by default. For more information, see (&lt;a href="https://github.com/godotengine/godot/pull/98397">GH-98397&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>2D: Change how multi selection scale is applied to canvas item (&lt;a href="https://github.com/godotengine/godot/pull/99506">GH-99506&lt;/a>).&lt;/li>
&lt;li>2D: Ensure primitive meshes are created before connected to changed signal (&lt;a href="https://github.com/godotengine/godot/pull/99740">GH-99740&lt;/a>).&lt;/li>
&lt;li>3D: Add ShadowCastingSetting to MeshLibrary / GridMap items (&lt;a href="https://github.com/godotengine/godot/pull/85443">GH-85443&lt;/a>).&lt;/li>
&lt;li>3D: Add CollisionShape3D custom debug colors (&lt;a href="https://github.com/godotengine/godot/pull/90644">GH-90644&lt;/a>).&lt;/li>
&lt;li>3D: Add Camera3D preview in Inspector (&lt;a href="https://github.com/godotengine/godot/pull/90778">GH-90778&lt;/a>).&lt;/li>
&lt;li>3D: Allow tool scripts to alter transform of Node3DEditorViewport camera (&lt;a href="https://github.com/godotengine/godot/pull/93503">GH-93503&lt;/a>).&lt;/li>
&lt;li>3D: Fix mesh corruption of CSG by using elalish/manifold (&lt;a href="https://github.com/godotengine/godot/pull/94321">GH-94321&lt;/a>).&lt;/li>
&lt;li>3D: Adjust VoxelGI gizmo opacity (&lt;a href="https://github.com/godotengine/godot/pull/99969">GH-99969&lt;/a>).&lt;/li>
&lt;li>Animation: Add persistent folding to Animation Library Editor (&lt;a href="https://github.com/godotengine/godot/pull/86481">GH-86481&lt;/a>).&lt;/li>
&lt;li>Animation: Fix crash when re-importing model with AnimationPlayer panel open and node selected (&lt;a href="https://github.com/godotengine/godot/pull/95795">GH-95795&lt;/a>).&lt;/li>
&lt;li>Animation: Add RetargetModifier3D for realtime retarget to keep original rest (&lt;a href="https://github.com/godotengine/godot/pull/97824">GH-97824&lt;/a>).&lt;/li>
&lt;li>Animation: Prioritize proximity to green arrow when selecting overlapping transitions in AnimationNodeStateMachine (&lt;a href="https://github.com/godotengine/godot/pull/98401">GH-98401&lt;/a>).&lt;/li>
&lt;li>Audio: Add runtime file loading to &lt;code class="language-plaintext highlighter-rouge">AudioStreamWAV&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/93831">GH-93831&lt;/a>).&lt;/li>
&lt;li>Audio: Fix AudioStreamPlayer2D/3D’s &lt;code class="language-plaintext highlighter-rouge">get_playback_position&lt;/code> returning &lt;code class="language-plaintext highlighter-rouge">0&lt;/code> right after calling &lt;code class="language-plaintext highlighter-rouge">seek&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/99759">GH-99759&lt;/a>).&lt;/li>
&lt;li>C#: Preserve no-hint behavior for unmarshallable generics in dictionaries (&lt;a href="https://github.com/godotengine/godot/pull/99485">GH-99485&lt;/a>).&lt;/li>
&lt;li>Core: RegEx: Fix handling of unset/unknown capture groups (&lt;a href="https://github.com/godotengine/godot/pull/73973">GH-73973&lt;/a>).&lt;/li>
&lt;li>Core: FileAccess: Return error codes from &lt;code class="language-plaintext highlighter-rouge">store_*&lt;/code> methods (&lt;a href="https://github.com/godotengine/godot/pull/78289">GH-78289&lt;/a>).&lt;/li>
&lt;li>Core: Avoid duplicating signals from scene instances into packed scenes (&lt;a href="https://github.com/godotengine/godot/pull/97303">GH-97303&lt;/a>).&lt;/li>
&lt;li>Core: Make loading translations from threads safe (&lt;a href="https://github.com/godotengine/godot/pull/99527">GH-99527&lt;/a>).&lt;/li>
&lt;li>Core: Do not generate &lt;code class="language-plaintext highlighter-rouge">*.uid&lt;/code> files for JSON, certificates, and translations (&lt;a href="https://github.com/godotengine/godot/pull/99540">GH-99540&lt;/a>).&lt;/li>
&lt;li>Core: Convert line breaks to &lt;code class="language-plaintext highlighter-rouge">\n&lt;/code> and strip line break from the end of string returned by &lt;code class="language-plaintext highlighter-rouge">OS::read_string_from_stdin&lt;/code>/&lt;code class="language-plaintext highlighter-rouge">OS::get_stdin_string&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/99542">GH-99542&lt;/a>).&lt;/li>
&lt;li>Core: Fix &lt;code class="language-plaintext highlighter-rouge">OS::has_feature()&lt;/code> skipping custom features (&lt;a href="https://github.com/godotengine/godot/pull/99864">GH-99864&lt;/a>).&lt;/li>
&lt;li>Core: Add temp utilities (alias &lt;code class="language-plaintext highlighter-rouge">OS::get_temp_dir()&lt;/code>, &lt;code class="language-plaintext highlighter-rouge">FileAccess::create_temp()&lt;/code>, and &lt;code class="language-plaintext highlighter-rouge">DirAccess::create_temp()&lt;/code>) (&lt;a href="https://github.com/godotengine/godot/pull/98397">GH-98397&lt;/a>).&lt;/li>
&lt;li>Editor: Extend Curve to allow for domains outside of &lt;code class="language-plaintext highlighter-rouge">[0, 1]&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/67857">GH-67857&lt;/a>).&lt;/li>
&lt;li>Editor: Implement zooming and panning in the profiler (&lt;a href="https://github.com/godotengine/godot/pull/76055">GH-76055&lt;/a>).&lt;/li>
&lt;li>Editor: Fix jumping to editor help does not scroll correctly sometimes (&lt;a href="https://github.com/godotengine/godot/pull/96449">GH-96449&lt;/a>).&lt;/li>
&lt;li>Editor: Show file names in remove files confirmation dialog (&lt;a href="https://github.com/godotengine/godot/pull/98539">GH-98539&lt;/a>).&lt;/li>
&lt;li>Editor: Add editor setting to stop the bottom panel from switching to the Stack Trace (&lt;a href="https://github.com/godotengine/godot/pull/98657">GH-98657&lt;/a>).&lt;/li>
&lt;li>Editor: Don’t tint editor bottom panel icons when hovered or pressed (&lt;a href="https://github.com/godotengine/godot/pull/98765">GH-98765&lt;/a>).&lt;/li>
&lt;li>Editor: Add copy button to toast notification (&lt;a href="https://github.com/godotengine/godot/pull/98778">GH-98778&lt;/a>).&lt;/li>
&lt;li>Editor: Enable editing of controls inside viewports in editor (&lt;a href="https://github.com/godotengine/godot/pull/99401">GH-99401&lt;/a>).&lt;/li>
&lt;li>Editor: Improve appearance of external links in built-in docs (&lt;a href="https://github.com/godotengine/godot/pull/99480">GH-99480&lt;/a>).&lt;/li>
&lt;li>Editor: Make the alt selection menu available for all modes (&lt;a href="https://github.com/godotengine/godot/pull/99795">GH-99795&lt;/a>).&lt;/li>
&lt;li>Export: Ensure excluded GDExtension files are not included in &lt;code class="language-plaintext highlighter-rouge">extension_list.cfg&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/97216">GH-97216&lt;/a>).&lt;/li>
&lt;li>Export: Write text server data from memory, instead of using temporary file (&lt;a href="https://github.com/godotengine/godot/pull/99164">GH-99164&lt;/a>).&lt;/li>
&lt;li>GDExtension: Register Engine, OS, ProjectSettings, and Time singletons in time for &lt;code class="language-plaintext highlighter-rouge">INITIZATION_LEVEL_CORE&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/98862">GH-98862&lt;/a>).&lt;/li>
&lt;li>GDExtension: Support extension icons in ScriptCreateDialog (&lt;a href="https://github.com/godotengine/godot/pull/98914">GH-98914&lt;/a>).&lt;/li>
&lt;li>GDScript: Fix crash when division by zero/modulo by zero happen on vectors (&lt;a href="https://github.com/godotengine/godot/pull/95172">GH-95172&lt;/a>).&lt;/li>
&lt;li>GDScript: Improve GDScript autocompletion for methods (&lt;a href="https://github.com/godotengine/godot/pull/99102">GH-99102&lt;/a>).&lt;/li>
&lt;li>GDScript: LSP: Fix spec violations that break the VSCode outline (&lt;a href="https://github.com/godotengine/godot/pull/99295">GH-99295&lt;/a>).&lt;/li>
&lt;li>GDScript: Core: Fix built-in enum constant bindings (&lt;a href="https://github.com/godotengine/godot/pull/99424">GH-99424&lt;/a>).&lt;/li>
&lt;li>GDScript: Support tracking multiple analyzer and runtime errors in tests (&lt;a href="https://github.com/godotengine/godot/pull/99490">GH-99490&lt;/a>).&lt;/li>
&lt;li>GUI: Add a Viewport method to get automatically computed 2D stretch transform (&lt;a href="https://github.com/godotengine/godot/pull/80965">GH-80965&lt;/a>).&lt;/li>
&lt;li>GUI: Make &lt;code class="language-plaintext highlighter-rouge">FileDialog&lt;/code> filtering case insensitive (&lt;a href="https://github.com/godotengine/godot/pull/85789">GH-85789&lt;/a>).&lt;/li>
&lt;li>GUI: Make TextEdit autocompletion replace word unless Shift is held (&lt;a href="https://github.com/godotengine/godot/pull/90723">GH-90723&lt;/a>).&lt;/li>
&lt;li>GUI: Reshape and update button on oversampling change (&lt;a href="https://github.com/godotengine/godot/pull/95511">GH-95511&lt;/a>).&lt;/li>
&lt;li>GUI: Prevent infinite recursion in first &lt;code class="language-plaintext highlighter-rouge">_draw&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/97328">GH-97328&lt;/a>).&lt;/li>
&lt;li>GUI: Add theme type variations for secondary Trees and ItemLists (&lt;a href="https://github.com/godotengine/godot/pull/97884">GH-97884&lt;/a>).&lt;/li>
&lt;li>GUI: RTL: Add support for vertical alignment (&lt;a href="https://github.com/godotengine/godot/pull/97963">GH-97963&lt;/a>).&lt;/li>
&lt;li>GUI: Introduce a &lt;code class="language-plaintext highlighter-rouge">SubViewportContainer&lt;/code> config for drag-and-drop target locations (&lt;a href="https://github.com/godotengine/godot/pull/99270">GH-99270&lt;/a>, &lt;a href="https://github.com/godotengine/godot/pull/99691">GH-99691&lt;/a>).&lt;/li>
&lt;li>GUI: Fix SVG font rendering (&lt;a href="https://github.com/godotengine/godot/pull/99459">GH-99459&lt;/a>).&lt;/li>
&lt;li>GUI: Add tooltip support to meta/url tag (&lt;a href="https://github.com/godotengine/godot/pull/99481">GH-99481&lt;/a>).&lt;/li>
&lt;li>Import: Generate thumbnails on imported scenes (&lt;a href="https://github.com/godotengine/godot/pull/96544">GH-96544&lt;/a>).&lt;/li>
&lt;li>Import: Blend file import: Don’t keep original files when not unpacking them (&lt;a href="https://github.com/godotengine/godot/pull/96782">GH-96782&lt;/a>).&lt;/li>
&lt;li>Import: Betsy: Add BC3 and BC5 support (&lt;a href="https://github.com/godotengine/godot/pull/99537">GH-99537&lt;/a>).&lt;/li>
&lt;li>Multiplayer: Fix UID support in MultiplayerSpawner (&lt;a href="https://github.com/godotengine/godot/pull/99712">GH-99712&lt;/a>).&lt;/li>
&lt;li>Navigation: Improve &lt;code class="language-plaintext highlighter-rouge">NavMeshQueries3D::polygons_get_closest_point_info&lt;/code> performance (&lt;a href="https://github.com/godotengine/godot/pull/97928">GH-97928&lt;/a>).&lt;/li>
&lt;li>Navigation: Make NavMap objects request sync only on demand (&lt;a href="https://github.com/godotengine/godot/pull/99646">GH-99646&lt;/a>).&lt;/li>
&lt;li>Network: Add half precision floating point support to &lt;code class="language-plaintext highlighter-rouge">StreamPeer&lt;/code> and &lt;code class="language-plaintext highlighter-rouge">FileAccess&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/97716">GH-97716&lt;/a>).&lt;/li>
&lt;li>Network: Allow disabling UPNP implementation on the Web (&lt;a href="https://github.com/godotengine/godot/pull/99597">GH-99597&lt;/a>).&lt;/li>
&lt;li>Physics: Fix &lt;code class="language-plaintext highlighter-rouge">GodotSpace3D::test_body_motion()&lt;/code> not setting &lt;code class="language-plaintext highlighter-rouge">local_shape&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/99901">GH-99901&lt;/a>).&lt;/li>
&lt;li>Porting: Android: Fix immersive mode issue (&lt;a href="https://github.com/godotengine/godot/pull/98917">GH-98917&lt;/a>).&lt;/li>
&lt;li>Porting: macOS: Change the shortcut for Align Transform with View (&lt;a href="https://github.com/godotengine/godot/pull/94026">GH-94026&lt;/a>).&lt;/li>
&lt;li>Porting: Unix: Don’t create world-writable files when safe save is enabled (&lt;a href="https://github.com/godotengine/godot/pull/96399">GH-96399&lt;/a>).&lt;/li>
&lt;li>Porting: Windows: Fix restoring fullscreen window (&lt;a href="https://github.com/godotengine/godot/pull/98631">GH-98631&lt;/a>).&lt;/li>
&lt;li>Porting: Windows: Fix Inspector tooltips blinking on Windows (&lt;a href="https://github.com/godotengine/godot/pull/99988">GH-99988&lt;/a>).&lt;/li>
&lt;li>Porting: Windows: Improve frame pacing by busy waiting as needed (&lt;a href="https://github.com/godotengine/godot/pull/99833">GH-99833&lt;/a>).&lt;/li>
&lt;li>Porting: Implement &lt;code class="language-plaintext highlighter-rouge">DisplayServer.beep&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/99371">GH-99371&lt;/a>).&lt;/li>
&lt;li>Rendering: Optimize &lt;code class="language-plaintext highlighter-rouge">RenderForwardClustered::_setup_render_pass_uniform_set&lt;/code> by reducing Vector allocations (&lt;a href="https://github.com/godotengine/godot/pull/94368">GH-94368&lt;/a>).&lt;/li>
&lt;li>Rendering: Deprecate the pointless unsafe threading model for rendering (&lt;a href="https://github.com/godotengine/godot/pull/98383">GH-98383&lt;/a>).&lt;/li>
&lt;li>Rendering: Automatically resolve initial and final action for draw lists (&lt;a href="https://github.com/godotengine/godot/pull/98670">GH-98670&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix occlusion culling for double builds by enforcing float conversion for Embree (&lt;a href="https://github.com/godotengine/godot/pull/98770">GH-98770&lt;/a>).&lt;/li>
&lt;li>Rendering: Mask out shadows on CanvasItems that don’t have a matching &lt;code class="language-plaintext highlighter-rouge">item_shadow_mask&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/98835">GH-98835&lt;/a>).&lt;/li>
&lt;li>Rendering: Add lightmap bake cancelling (&lt;a href="https://github.com/godotengine/godot/pull/99483">GH-99483&lt;/a>).&lt;/li>
&lt;li>Rendering: Add VoxelGI bake cancelling and progress UI improvement (&lt;a href="https://github.com/godotengine/godot/pull/99562">GH-99562&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix ReflectionProbe AABB (&lt;a href="https://github.com/godotengine/godot/pull/99802">GH-99802&lt;/a>).&lt;/li>
&lt;li>Shaders: Allow &lt;code class="language-plaintext highlighter-rouge">SCREEN_UV&lt;/code> to be used in light function of spatial shader (&lt;a href="https://github.com/godotengine/godot/pull/94981">GH-94981&lt;/a>).&lt;/li>
&lt;li>Shaders: VisualShader: Add LinearToSRGB and SRGBToLinear to ColorFunc node (&lt;a href="https://github.com/godotengine/godot/pull/97388">GH-97388&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>114 contributors&lt;/strong> submitted &lt;strong>259 improvements&lt;/strong> for this new snapshot. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.4-dev6">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since the previous 4.4-dev5 snapshot.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/1f47e4c4e3a09a422e96880a7918d986dd575a63">&lt;code class="language-plaintext highlighter-rouge">1f47e4c4e&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.4-dev6">
Download Godot 4.4 dev6
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/dev-snapshot-godot-4-4-dev-6.webp" />
&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://github.com/godotengine/godot-builds/releases/download/4.4-dev6/Godot_v4.4-dev6_linux.x86_64.zip" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev6/Godot_v4.4-dev6_mono_linux_x86_64.zip" 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://github.com/godotengine/godot-builds/releases/download/4.4-dev6/Godot_v4.4-dev6_macos.universal.zip" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev6/Godot_v4.4-dev6_mono_macos.universal.zip" 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://github.com/godotengine/godot-builds/releases/download/4.4-dev6/Godot_v4.4-dev6_win64.exe.zip" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev6/Godot_v4.4-dev6_mono_win64.zip" 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.4-dev6">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="/donate/">
Make a Donation
&lt;/a>
&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;ul>
&lt;li>See also &lt;a href="https://docs.godotengine.org/en/latest/tutorials/scripting/c_sharp/index.html#c-platform-support">C# platform support&lt;/a>.&lt;/li>
&lt;/ul>
&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;p>Here are some known regressions introduced in this snapshot:&lt;/p>
&lt;ul>
&lt;li>Occlusion culling randomly occluding things completely in the open (&lt;a href="https://github.com/godotengine/godot/issues/100032">GH-10032&lt;/a>).
&lt;ul>
&lt;li>A pull request is already open to fix this in the next dev snapshot (&lt;a href="https://github.com/godotengine/godot/pull/100060">GH-100060&lt;/a>).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Error “Manifold creation from mesh failed” with Plane and Quad shapes, which do not get rendered (&lt;a href="https://github.com/godotengine/godot/issues/100014">GH-100014&lt;/a>).
&lt;ul>
&lt;li>Planes and Quads cannot be used with CSG, and just seemed to be usable previously. We’ll improve the usability so they cannot be selected for CSGMesh3D. Instead, use MeshInstance3D to place Planes and Quads.&lt;/li>
&lt;/ul>
&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 on 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>Pre-release</category><guid>https://godotengine.org/article/dev-snapshot-godot-4-4-dev-6/</guid><dc:creator>Thaddeus Crews</dc:creator><pubDate>Thu, 05 Dec 2024 17:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/dev-snapshot-godot-4-4-dev-6.webp</image></item><item><title>Beyond #100000: You're breathtaking!</title><link>https://godotengine.org/article/beyond-100000-you-re-breathtaking/</link><description>&lt;div class="card card-info" style="margin-top: 1em;">
&lt;p>This blog post was originally posted on &lt;a href="https://github.com/godotengine/godot/issues/100000">GH-100000&lt;/a>.&lt;/p>
&lt;/div>
&lt;p>It’s been over 10 years now that Godot has been developed in the open, with code contributions from 2,800 users.&lt;/p>
&lt;p>The total count of people who helped build Godot is actually far greater, as it should include documentation writers, testers, bug reporters, translators, moderators, content creators, users doing community support or talking at events, folks making games that credit Godot visibly, everyone supporting the project financially, and many other types of contributions which I can’t keep enumerating.&lt;/p>
&lt;p>All these people brought Juan and Ariel’s little-engine-that-could from this:&lt;/p>
&lt;p>&lt;img src="/storage/blog/beyond-100000-you-re-breathtaking/godot-1-0.webp" alt="Screenshot of the isometric 2D demo in Godot 1.0" />&lt;/p>
&lt;div class="small text-center">
&lt;p>&lt;em>Screenshot of the isometric 2D demo in Godot 1.0.&lt;/em>&lt;/p>
&lt;/div>
&lt;p>To this:&lt;/p>
&lt;p>&lt;img src="/storage/blog/beyond-100000-you-re-breathtaking/godot-4-3.webp" alt="Screenshot of PVKK: Planetenverteidigungskanonenkommandant in Godot 4.3" />&lt;/p>
&lt;div class="small text-center">
&lt;p>&lt;em>Screenshot of &lt;a href="https://store.steampowered.com/app/2956040/PVKK_Planetenverteidigungskanonenkommandant/">PVKK: Planetenverteidigungskanonenkommandant&lt;/a> in Godot 4.3.&lt;/em>&lt;/p>
&lt;/div>
&lt;p>That’s no small achievement, so I encourage all contributors to take a minute to contemplate the progress that we’ve made together over this journey so far!&lt;/p>
&lt;p>Amidst the daily churn of fixing issues, reviewing &lt;abbr title="pull requests">PRs&lt;/abbr>, making releases, etc., it’s important to remind ourselves of where we are, and how we got there.&lt;/p>
&lt;video autoplay="" loop="" muted="">
&lt;source src="/storage/blog/beyond-100000-you-re-breathtaking/cozy-space-survivors.webm" />
&lt;/video>
&lt;div class="small text-center">
&lt;p>&lt;em>GIF of &lt;a href="https://store.steampowered.com/app/2657850/Cozy_Space_Survivors/">Cozy Space Survivors&lt;/a> where asteroids form the word “GO♥DOT”.&lt;/em>&lt;/p>
&lt;/div>
&lt;h2 id="some-stats-about-godot-usage-on-github">Some stats about Godot usage on GitHub&lt;/h2>
&lt;p>Between our usual traditions of either &lt;a href="https://github.com/godotengine/godot/issues/10000">making silly jokes&lt;/a> or &lt;a href="https://github.com/godotengine/godot/issues/30000">sharing some inspiring stats&lt;/a> for round issue numbers, I picked the latter for this 100,000th issue&lt;sup id="fnref:1" role="doc-noteref">&lt;a href="#fn:1" class="footnote" rel="footnote">1&lt;/a>&lt;/sup>, and wanted to look a bit closer at our issue and &lt;abbr title="pull request">PR&lt;/abbr> numbers over time.&lt;/p>
&lt;p>A lot of people coming to Godot’s repository to see over 10,000 open issues and 3,000 open &lt;abbr title="pull requests">PRs&lt;/abbr> might rightfully wonder whether this is normal, or a sign of a maintenance issue.
I will make the case that it is a bit of both :)&lt;/p>
&lt;h3 id="issues">Issues&lt;/h3>
&lt;p>&lt;img src="/storage/blog/beyond-100000-you-re-breathtaking/issue-history.webp" alt="Graph showing issue count over time" />&lt;/p>
&lt;div class="small text-center">
&lt;p>&lt;em>Visualization from OSS Insight showing issue count over time, &lt;a href="https://ossinsight.io/analyze/godotengine/godot#issue-history">see the interactive version&lt;/a>.&lt;/em>&lt;/p>
&lt;/div>
&lt;p>The two accumulated curves show the total number of issues created over the lifetime of the repository (topmost curve), and the subset of those which have been closed (as fixed or invalid). The difference between the two curves represents the number of issues still open at a given point in time - currently exactly 11,000, out of 53,648 issues total, so roughly 20%.&lt;/p>
&lt;p>This is a fairly normal percentage of yet-unresolved issues in software projects of this scale, but it can definitely be better.&lt;/p>
&lt;p>I annotated the graph with some key events of Godot’s development which match peaks in either reported bugs (usually at the start of a beta phase, or shortly after a stable release), or closed issues (when we do a “spring cleaning” going through old issues to check if they are still reproducible in a newly released Godot version). You can see notably two big peaks of closed issues around the 3.2 release, when we had a coordinated effort from maintainers to go through the whole backlog and ask reporters to confirm whether their issues were still valid, or had been fixed. This reduced the percentage of open issues from 29% to 19%, and it’s been mostly stable since, with minor fluctuations.&lt;/p>
&lt;p>We are preparing a new “spring cleaning” to properly reassess a lot of the old issues which have been opened before the 4.0 release, or in the early days of 4.0 or 4.1, and may no longer be relevant nowadays with 4.3 and soon 4.4 beta.&lt;/p>
&lt;p>As the volume of issues keeps increasing steadily, but the number of active bug triagers doesn’t really grow as fast, we are working on improving and documenting our workflows so that we can:&lt;/p>
&lt;ul>
&lt;li>Onboard new volunteers to help triage new and old issues;&lt;/li>
&lt;li>Spread the workload and be more consistent with our issue triage;&lt;/li>
&lt;li>Be confident that while doing so, we do increase the &lt;em>quality&lt;/em> of our open issues, which isn’t something that can be easily tracked in numbers.&lt;/li>
&lt;/ul>
&lt;p>We will share more details here and on the Godot blog when this process is ready to welcome new volunteers.&lt;/p>
&lt;p>In the meantime, you can already do some simple things which help greatly the existing bug triage team:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/godotengine/godot/issues?q=is%3Aissue%20state%3Aopen%20author%3A%40me">&lt;strong>Regularly re-assess your own issues&lt;/strong>&lt;/a> (you can bookmark that URL). Make sure that they are reproducible in the latest stable release and dev snapshots, and that there is a minimal reproduction project that contributors can use to reproduce and fix the issue. If your issue is no longer relevant, please close it with a comment explaining why.&lt;/li>
&lt;li>Feel free to apply the same process to other people’s issues that you stumble upon, especially if their last update was a long time ago. In this case you can’t close issues yourself, but you can suggest it by commenting that the issue is no longer reproducible in the version you tested. Bug triagers will get a notification and can double check.&lt;/li>
&lt;/ul>
&lt;h3 id="pull-requests">Pull Requests&lt;/h3>
&lt;p>&lt;img src="/storage/blog/beyond-100000-you-re-breathtaking/pull-request-history.webp" alt="Graph showing pull request count over time" />&lt;/p>
&lt;div class="small text-center">
&lt;p>&lt;em>Visualization from OSS Insight showing pull request count over time, &lt;a href="https://ossinsight.io/analyze/godotengine/godot#pr-history">see the interactive version&lt;/a>.&lt;/em>&lt;/p>
&lt;/div>
&lt;p>I didn’t annotate this one, but a few takeaways:&lt;/p>
&lt;ul>
&lt;li>Godot gets almost the same number of new pull requests per month as new issues, roughly 600 of each per month (that’s 20 &lt;abbr title="pull requests">PRs&lt;/abbr> and 20 issues per day).&lt;/li>
&lt;li>The &lt;abbr title="pull request">PR&lt;/abbr> volume increased a lot over the lifetime of the project to culminate at over 700 &lt;abbr title="pull requests">PRs&lt;/abbr> per month at the end of the 4.0 development. Since then, as the Godot userbase grew a lot and we are more careful with compatibility and API design, reviews can take a bit longer and the total monthly volume seems to have plateaued around 500-600. That’s still plenty enough for a fairly small group of reviewers.&lt;/li>
&lt;li>Someone should plot this data with relative percentages, but it seems like the size/complexity of pull requests is slightly increasing recently. Whether that trend gets confirmed or not, I can attest that reviewing 600 &lt;abbr title="pull requests">PRs&lt;/abbr> per month is hard, and that we need more help for interested contributors and users to both test and review the &lt;abbr title="pull requests">PRs&lt;/abbr> that get opened on a daily basis.&lt;/li>
&lt;/ul>
&lt;hr />
&lt;p>That’s all for now, I was already way too long and verbose while drafting this at the last minute to (try to) snatch the 100,000th issue number ;)&lt;/p>
&lt;p>Aside from showing some cool numbers, I mostly want to convey that we are well aware that we have a significant backlog, though it’s not as dire as it might look from the outside.&lt;/p>
&lt;p>To deal with it, we need better triage and review processes (which we are designing now), more volunteers involved in these processes, but also importantly &lt;a href="https://fund.godotengine.org/">&lt;strong>more funding&lt;/strong>&lt;/a>. Volunteer contributors do a ton of work, but many critical parts of the workflow depend on a few paid contractors, and we need to grow that group to better manage the increasing scale of the project.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;ol>
&lt;li id="fn:1" role="doc-endnote">
&lt;p>I’ll make a quick note that 100,000 is the combined number of issues and &lt;abbr title="pull requests">PRs&lt;/abbr>, which share the same index system on GitHub.&lt;br />&lt;br />At the time of writing, we’ve actually had 53,648 issues and 45,213 &lt;abbr title="pull requests">PRs&lt;/abbr> created. Astute minds will notice that the sum is not 100,000; the difference comes from spam issues or &lt;abbr title="pull requests">PRs&lt;/abbr> which have been deleted by GitHub. &lt;a href="#fnref:1" class="reversefootnote" role="doc-backlink">&amp;#8617;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description><category>News</category><guid>https://godotengine.org/article/beyond-100000-you-re-breathtaking/</guid><dc:creator>Rémi Verschelde</dc:creator><pubDate>Wed, 04 Dec 2024 19:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/beyond-100000-you-re-breathtaking.webp</image></item><item><title>Godot Foundation Update December 2024</title><link>https://godotengine.org/article/godot-foundation-update-dec-2024/</link><description>&lt;p>The Foundation has been working on a number of things behind the scenes that are important for the organization and for
the Godot ecosystem more broadly. We wanted to take the chance to highlight a few of them in this post.&lt;/p>
&lt;h2 id="key-policies-and-procedures">Key policies and procedures&lt;/h2>
&lt;p>The Foundation was formed in August 2022, but we only began operating in a full capacity in July 2023. We initially
adopted the &lt;a href="https://sfconservancy.org/projects/policies/">member project policies&lt;/a> of the Software Freedom Conservancy.
Doing so allowed us to operate exactly as we had when we were a member project of the SFC, and maintain very high
standards.&lt;/p>
&lt;p>In September, we adopted a modified version of those policies that is more specific to our organization. You can read the
updated version on the &lt;a href="https://godot.foundation/policies-and-procedures/key-policies">Godot Foundation website&lt;/a>.&lt;/p>
&lt;p>We are very happy with the policies and we hope you are too. They hold us to a very high standard and ensure that the
Foundation will always operate in a way that supports Godot.&lt;/p>
&lt;h2 id="contractors">Contractors&lt;/h2>
&lt;p>The Foundation currently has 10 contractors working on the engine directly (6 full time, 4 part time) and 3 contractors
working on administration and infrastructure.&lt;/p>
&lt;p>This is the most contractors we have had at once, and even so, we feel understaffed as there is always more
work that needs to be done than we can do. Accordingly, we would like to continue hiring once funding allows for it.&lt;/p>
&lt;h2 id="upcoming-projects">Upcoming projects&lt;/h2>
&lt;p>The Foundation is working on 4 major projects in addition to working on Godot itself:&lt;/p>
&lt;ol>
&lt;li>An official asset store&lt;/li>
&lt;li>An official job board on the Godot website&lt;/li>
&lt;li>A public project priorities page&lt;/li>
&lt;li>A public trademark policy&lt;/li>
&lt;/ol>
&lt;h3 id="asset-store">Asset store&lt;/h3>
&lt;p>We have been working towards an initial version of the asset store for a while now. It has taken us some time to get the legal aspects into place and a design agreed upon.&lt;/p>
&lt;p>We expect to have an early access version of the site up and running this month and we will begin inviting testers to help us polish it and get it ready for a full release sometime in 2025.&lt;/p>
&lt;h3 id="job-board">Job board&lt;/h3>
&lt;p>We aim to have a place for people to post that are looking to hire Godot developers to add to their game team or Godot
contributors to fix high priority bugs that may be impacting your team.&lt;/p>
&lt;p>In addition to a job board, we will be curating a list of service providers who have shown that they offer services in
the Godot ecosystem to make it easy to find someone to contract with if you need support or any other services.&lt;/p>
&lt;p>Much of the foundational work for this has been finished, but it will likely be released after the asset store so we can
focus our efforts more on that first.&lt;/p>
&lt;h3 id="project-priorities">Project priorities&lt;/h3>
&lt;p>Soon we will be adding a project priorities page to our website to give the community more clarity on the direction of
development.&lt;/p>
&lt;p>We have avoided providing a roadmap as we don’t want to promise more than we can deliver, or put too much pressure on
volunteer contributors. However, the Godot Project maintainers have agreed that it is time to at least write down what
the largest tasks are that we are working towards. This won’t be like a traditional roadmap where we have specific tasks
with expected dates. However, we believe it will answer a lot of questions that the community has about the future of
the project.&lt;/p>
&lt;h3 id="trademark-policy">Trademark policy&lt;/h3>
&lt;p>We registered the Godot trademark and the Godot logo trademark while still a member project of the SFC. Last year, the
SFC granted the Godot Foundation ownership over the trademarks. Now we need to have a public policy that says how and
when others can use the trademarks to protect them.&lt;/p>
&lt;p>We are working with our lawyers to craft a policy that is fair to existing users, as permissive as possible, and still
able to protect our trademark.&lt;/p>
&lt;p>We will have a blog post soon with more information.&lt;/p>
&lt;h2 id="the-foundations-role-in-the-project">The Foundation’s role in the project&lt;/h2>
&lt;p>We also wanted to take this chance to muse about the Foundation’s role in the project. In particular, we want to
contrast the size of the Foundation with the size of the Godot project contributor pool. As explained above, the
Foundation currently hires 13 contractors to work on Godot, while the total number of contributors to Godot is over
2,500 (the 4.3 release alone had over 500 contributors)! This large group of contributors is the reason why Godot is
able to improve so quickly and do so much for a fraction of the funding that the other large engines have.&lt;/p>
&lt;p>The Foundation (meaning the Board of Directors and the people hired by the Foundation) does not determine the priorities
of the project in a top-down way. In other words, the Foundation does not dictate to individual volunteers what they
should work on. Instead, it influences the project implicitly by making hiring decisions and hiring people for specific
tasks that aren’t being done by the community.&lt;/p>
&lt;p>Ultimately, it is the Godot community that deserves the most credit for the growth and development of Godot. While we
hope to see the Foundation grow and take on a stronger role in the project, it should be seen as a central pillar of the
project that volunteers can rally around. Donating to the Foundation is one avenue to contribute, but there are many
more and Godot needs contribution in all areas in order to continue growing at this pace. Please consider contributing
however you are able!&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 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>News</category><guid>https://godotengine.org/article/godot-foundation-update-dec-2024/</guid><dc:creator>Godot Foundation</dc:creator><pubDate>Mon, 02 Dec 2024 17:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/godot-foundation-update-2024.webp</image></item><item><title>Statement on GodLoader malware loader</title><link>https://godotengine.org/article/statement-on-godloader-malware-loader/</link><description>&lt;p>Security researchers at &lt;a href="https://research.checkpoint.com/">Check Point Research&lt;/a> have &lt;a href="https://research.checkpoint.com/2024/gaming-engines-an-undetected-playground-for-malware-loaders/">published a report&lt;/a> about GodLoader, a malware loader using Godot as its runtime to execute malicious code and infect unaware users with known malware. Based on the report, affected users thought they were downloading and executing cracks for paid software, but instead executed the malware loader.&lt;/p>
&lt;p>As the report states, the vulnerability is not specific to Godot. The Godot Engine is a programming system with a scripting language. It is akin to, for instance, the Python and Ruby runtimes. It is possible to write malicious programs in any programming language. We do not believe that Godot is particularly more or less suited to do so than other such programs.&lt;/p>
&lt;p>&lt;strong>If you downloaded a Godot game or the editor from a reliable source, you don’t have to do anything. You are not at risk.&lt;/strong>
We encourage people to only execute software from trusted sources – whether it’s written using Godot or any other programming system.&lt;/p>
&lt;p>For some more technical details:&lt;/p>
&lt;p>Godot does not register a file handler for &lt;code class="language-plaintext highlighter-rouge">.pck&lt;/code> files. This means that a malicious actor always has to ship the Godot runtime (&lt;code class="language-plaintext highlighter-rouge">.exe&lt;/code> file) together with a &lt;code class="language-plaintext highlighter-rouge">.pck&lt;/code> file. The user will always have to unpack the runtime together with the &lt;code class="language-plaintext highlighter-rouge">.pck&lt;/code> to the same location and then execute the runtime. There is no way for a malicious actor to create a “one click exploit”, barring other OS-level vulnerabilities. If such an OS-level vulnerability were used then Godot would not be a particularly attractive option due to the size of the runtime.&lt;/p>
&lt;p>This is similar to writing malicious software in Python or Ruby, the malicious actor will have to ship a &lt;code class="language-plaintext highlighter-rouge">python.exe&lt;/code> or &lt;code class="language-plaintext highlighter-rouge">ruby.exe&lt;/code> together with their malicious program.&lt;/p>
&lt;h2 id="good-security-practices">Good security practices&lt;/h2>
&lt;p>We would like to take this opportunity to remind users about some good security practices when it comes to downloading and executing software.&lt;/p>
&lt;ul>
&lt;li>Only download and execute software (including game mods) from trusted sources:
&lt;ul>
&lt;li>Official project website. Confirm it by checking the URL, and verify with a search engine that this seems to be the most frequently referenced website for this software.&lt;/li>
&lt;li>Trusted distribution platform: Steam, Epic Games Store, Windows Store, Google Play, Apple Store, etc.&lt;/li>
&lt;li>People you know, after confirming that they are who they claim to be if the communication is text-based (see below).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>On Windows and macOS, verify that the executable is signed (and notarized, on macOS) by a trusted party.&lt;/li>
&lt;li>Be wary of executing cracked software, which is a prime attack vector for malicious actors.&lt;/li>
&lt;li>Be wary of executing software even from people you know, if you can’t confirm that their account hasn’t been compromised. A very common attack vector targeting specifically game developers is for Discord accounts to get hacked, and then malicious actors use them to send malicious downloads to their friends in private messages (“hey will you try my game?”). Make sure to confirm the identity of your contacts before executing such software.&lt;/li>
&lt;/ul>
&lt;h2 id="reporting-security-issues">Reporting security issues&lt;/h2>
&lt;p>We thank Check Point Research for following the security guidelines of responsible disclosure, which let us confirm that this attack vector, while unfortunate, is not specific to Godot and does not expose a vulnerability in the engine or for its users.&lt;/p>
&lt;p>If you would like to report a security vulnerability or concern, please send an email to &lt;a href="mailto:security@godotengine.org">security@godotengine.org&lt;/a>.&lt;/p></description><category>News</category><guid>https://godotengine.org/article/statement-on-godloader-malware-loader/</guid><dc:creator>Godot Security Team</dc:creator><pubDate>Thu, 28 Nov 2024 11:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/statement-on-godloader-malware-loader.webp</image></item><item><title>Dev snapshot: Godot 4.4 dev 5</title><link>https://godotengine.org/article/dev-snapshot-godot-4-4-dev-5/</link><description>&lt;p>With &lt;a href="https://godotengine.org/article/review-godotcon24/">GodotCon&lt;/a> behind us and our developers recuperated, we’re thrilled to return
to a more frequent release-cycle. It’s only been two weeks since we last checked in, yet there’s still so much to talk about!
So buckle on in for a breakdown of what you can expect to see in 4.4 dev 5.&lt;/p>
&lt;p>Many of the changes in this release are bug fixes that will be backported to Godot 4.3 and released in 4.3.1! So please
test this release well so we can be confident with the changes and release 4.3.1 with them as soon as possible.&lt;/p>
&lt;p>Keep in mind that while we try to make sure each dev snapshot is stable enough for general testing, this is by
definition a pre-release piece of software. 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;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.4.dev5/">&lt;strong>Web editor&lt;/strong>&lt;/a>, &lt;a href="https://www.meta.com/experiences/godot-game-engine/7713660705416473/">&lt;strong>XR editor&lt;/strong>&lt;/a>, or the &lt;strong>Android editor&lt;/strong> for this release (join the &lt;a href="https://groups.google.com/g/godot-testers">Android editor 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/2716400/The_Rise_of_the_Golden_Idol/">&lt;strong>The Rise of the Golden Idol&lt;/strong>&lt;/a>, &lt;em>a mystery game where you unravel the truth behind 20 cases of crime in the 1970s! It is developed by &lt;a href="https://www.thegoldenidol.com/">Color Gray Games&lt;/a>. You can purchase the game &lt;a href="https://store.steampowered.com/app/2716400/The_Rise_of_the_Golden_Idol/">on Steam&lt;/a> and follow the developer on &lt;a href="https://twitter.com/colorgray7/">Twitter&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-4-dev-1/">4.4 dev 1&lt;/a>, &lt;a href="/article/dev-snapshot-godot-4-4-dev-2/">4.4 dev 2&lt;/a>,
&lt;a href="/article/dev-snapshot-godot-4-4-dev-3/">4.4 dev 3&lt;/a>, and &lt;a href="/article/dev-snapshot-godot-4-4-dev-4/">4.4 dev 4&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 dev 5.&lt;/p>
&lt;p>Here are highlights of a few new features in dev 5 that you might find particularly exciting!&lt;/p>
&lt;h3 id="universalize-uid-support">Universalize UID support&lt;/h3>
&lt;p>Previously, the &lt;abbr title="Universal ID">UID&lt;/abbr> format was not supported by all Resource types. This proved to be a pain point for users wishing to reference their scripts and other resources in a manner that’s path-agnostic. This, along with a need to refactor their scripts anytime these kinds of files were moved, put a significant duty of care on the end-user that shouldn’t have been necessary.&lt;/p>
&lt;p>Starting with dev 5, this will no longer be your burden to bear! Thanks to a long-term effort from &lt;a href="https://github.com/reduz">reduz&lt;/a>, UIDs will now be applied universally in a way the engine can automatically track and account for. This is achieved via &lt;code class="language-plaintext highlighter-rouge">.uid&lt;/code> files for the resource types that previously didn’t support them, functioning similarly to other metadata files that “track” a main file.&lt;/p>
&lt;p>Note that, unlike metadata files, &lt;code class="language-plaintext highlighter-rouge">.uid&lt;/code> files are strictly for the editor; the information is migrated to the uid database on export. Despite this, users using version control software &lt;strong>should add these files&lt;/strong>, as they’re required to properly sync data (similar to &lt;code class="language-plaintext highlighter-rouge">.import&lt;/code> files). For more information, see (&lt;a href="https://github.com/godotengine/godot/pull/97352">GH-97352&lt;/a>).&lt;/p>
&lt;h3 id="favorite-editor-items">Favorite editor items&lt;/h3>
&lt;p>A common complaint we hear regarding the inspector is the potential for it to get cluttered. Namely, while there’s generally a wide selection of options available for a given class/script, users will usually only care about a particular subsection that suits them. To account for this, &lt;a href="https://github.com/YeldhamDev">YeldhamDev&lt;/a> brings us the long-awaited ability to pin one’s favorite properties in the inspector! Check out the implementation from PR (&lt;a href="https://github.com/godotengine/godot/pull/97415">GH-97352&lt;/a>) below:&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="">
&lt;source src="/storage/blog/dev-snapshot-godot-4-4-dev-5/favorite-inspector.mp4?1" type="video/mp4" />
&lt;/video>
&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 a way to know when a TileMapLayer’s cell is modified (&lt;a href="https://github.com/godotengine/godot/pull/96188">GH-96188&lt;/a>).&lt;/li>
&lt;li>2D: Make possible to scale multiple nodes at once in the canvas editor (&lt;a href="https://github.com/godotengine/godot/pull/98534">GH-98534&lt;/a>).&lt;/li>
&lt;li>3D: Fix Gridmap shortcut conflicts with 3D editor (&lt;a href="https://github.com/godotengine/godot/pull/99170">GH-99170&lt;/a>).&lt;/li>
&lt;li>3D: Move GridMapEditor to bottom panel (&lt;a href="https://github.com/godotengine/godot/pull/96922">GH-96922&lt;/a>).&lt;/li>
&lt;li>Animation: Add &lt;code class="language-plaintext highlighter-rouge">advance_on_start&lt;/code> option to &lt;code class="language-plaintext highlighter-rouge">NodeAnimation&lt;/code> to handle &lt;code class="language-plaintext highlighter-rouge">advance(0)&lt;/code> for each &lt;code class="language-plaintext highlighter-rouge">NodeAnimation&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/94372">GH-94372&lt;/a>).&lt;/li>
&lt;li>Animation: Fix key is deselected by changing key time in KeyEdit in FPS mode (&lt;a href="https://github.com/godotengine/godot/pull/99319">GH-99319&lt;/a>).&lt;/li>
&lt;li>Animation: Implement LookAtModifier3D (&lt;a href="https://github.com/godotengine/godot/pull/98446">GH-98446&lt;/a>).&lt;/li>
&lt;li>Animation: Sort blend shapes in the inspector by ID instead of alphabetically (&lt;a href="https://github.com/godotengine/godot/pull/99231">GH-99231&lt;/a>).&lt;/li>
&lt;li>Audio: Allow waveform resize (&lt;a href="https://github.com/godotengine/godot/pull/97551">GH-97551&lt;/a>).&lt;/li>
&lt;li>Audio: Fix &lt;code class="language-plaintext highlighter-rouge">AudioStreamWAV::save_to_wav&lt;/code> adding extra ‘.wav’ to file if existing ext is not lower case (&lt;a href="https://github.com/godotengine/godot/pull/98717">GH-98717&lt;/a>).&lt;/li>
&lt;li>Buildsystem: Bump minimum version of SCons to 4.0 &amp;amp; Python to 3.8 (&lt;a href="https://github.com/godotengine/godot/pull/99134">GH-99134&lt;/a>).&lt;/li>
&lt;li>Core: Add typed dictionary support for binary serialization (&lt;a href="https://github.com/godotengine/godot/pull/98120">GH-98120&lt;/a>).&lt;/li>
&lt;li>Core: Fix &lt;code class="language-plaintext highlighter-rouge">Freed Object&lt;/code> booleanization (&lt;a href="https://github.com/godotengine/godot/pull/93885">GH-93885&lt;/a>).&lt;/li>
&lt;li>Core: Fix &lt;code class="language-plaintext highlighter-rouge">MissingResource&lt;/code> properties being stripped on save (&lt;a href="https://github.com/godotengine/godot/pull/86600">GH-86600&lt;/a>).&lt;/li>
&lt;li>Core: Fix comparison of callables (&lt;a href="https://github.com/godotengine/godot/pull/99078">GH-99078&lt;/a>).&lt;/li>
&lt;li>Core: Provide a reliable way to see original resources in a directory (&lt;a href="https://github.com/godotengine/godot/pull/96590">GH-96590&lt;/a>).&lt;/li>
&lt;li>Dotnet: Add Codium support to C# external editors (&lt;a href="https://github.com/godotengine/godot/pull/89051">GH-89051&lt;/a>).&lt;/li>
&lt;li>Dotnet: Implement &lt;code class="language-plaintext highlighter-rouge">[ExportToolButton]&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/97894">GH-97894&lt;/a>).&lt;/li>
&lt;li>Editor: Add a pin toggle to prevent involuntary bottom editor switching (&lt;a href="https://github.com/godotengine/godot/pull/98074">GH-98074&lt;/a>).&lt;/li>
&lt;li>Editor: Add fuzzy string matching to quick open search (&lt;a href="https://github.com/godotengine/godot/pull/98278">GH-98278&lt;/a>).&lt;/li>
&lt;li>Editor: Highlight scripts used by current scene (&lt;a href="https://github.com/godotengine/godot/pull/97041">GH-97041&lt;/a>).&lt;/li>
&lt;li>Editor: Optimize FileSystem Dock filtering (&lt;a href="https://github.com/godotengine/godot/pull/95107">GH-95107&lt;/a>).&lt;/li>
&lt;li>Export: Add ability for PCK patches to remove files (&lt;a href="https://github.com/godotengine/godot/pull/97356">GH-97356&lt;/a>).&lt;/li>
&lt;li>Export: Display project settings splash color on web export (&lt;a href="https://github.com/godotengine/godot/pull/96625">GH-96625&lt;/a>)&lt;/li>
&lt;li>GDExtension: Fix method binds not saying if they are varargs (&lt;a href="https://github.com/godotengine/godot/pull/99403">GH-99403&lt;/a>).&lt;/li>
&lt;li>GDExtension: Improve macOS library loading/export (&lt;a href="https://github.com/godotengine/godot/pull/98809">GH-98809&lt;/a>).&lt;/li>
&lt;li>GDScript: Add support for &lt;code class="language-plaintext highlighter-rouge">print&lt;/code> command in local (command line &lt;code class="language-plaintext highlighter-rouge">-d&lt;/code>) debugger (&lt;a href="https://github.com/godotengine/godot/pull/97218">GH-97218&lt;/a>).&lt;/li>
&lt;li>GUI: Fix tooltip appearing in old place, on movement (&lt;a href="https://github.com/godotengine/godot/pull/96721">GH-96721&lt;/a>).&lt;/li>
&lt;li>Import: Allow passing UID to importer (&lt;a href="https://github.com/godotengine/godot/pull/97363">GH-97363&lt;/a>).&lt;/li>
&lt;li>Import: Reload cached resources in runtime on file reimport (&lt;a href="https://github.com/godotengine/godot/pull/98710">GH-98710&lt;/a>).&lt;/li>
&lt;li>Input: Revert “Fix &lt;code class="language-plaintext highlighter-rouge">InputEvent&lt;/code> device id clash” and add a compatibility function (&lt;a href="https://github.com/godotengine/godot/pull/99449">GH-99449&lt;/a>).&lt;/li>
&lt;li>Multiplayer: Handle scene UIDs in MultiplayerSpawner (&lt;a href="https://github.com/godotengine/godot/pull/99137">GH-99137&lt;/a>).&lt;/li>
&lt;li>Navigation: Improve &lt;code class="language-plaintext highlighter-rouge">NavMeshGenerator2D::generator_bake_from_source_geometry_data&lt;/code> performance (&lt;a href="https://github.com/godotengine/godot/pull/98957">GH-98957&lt;/a>).&lt;/li>
&lt;li>Navigation: Reduce allocations for NavMap synchronisation (&lt;a href="https://github.com/godotengine/godot/pull/98866">GH-98866&lt;/a>).&lt;/li>
&lt;li>Network: Split Unix/Windows IP implementation (&lt;a href="https://github.com/godotengine/godot/pull/99026">GH-99026&lt;/a>).&lt;/li>
&lt;li>Network: Split Unix/Windows NetSocket implementation (&lt;a href="https://github.com/godotengine/godot/pull/98969">GH-98969&lt;/a>).&lt;/li>
&lt;li>Plugin: Make the method selector dialog available via &lt;code class="language-plaintext highlighter-rouge">EditorInterface&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/98859">GH-98859&lt;/a>).&lt;/li>
&lt;li>Rendering: Add &lt;code class="language-plaintext highlighter-rouge">multimesh_get_buffer_rd_rid&lt;/code> method to &lt;code class="language-plaintext highlighter-rouge">RenderingServer&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/98788">GH-98788&lt;/a>).&lt;/li>
&lt;li>Rendering: Ensure shadow material and mesh are not used with wireframe mode (&lt;a href="https://github.com/godotengine/godot/pull/98683">GH-98683&lt;/a>).&lt;/li>
&lt;li>Rendering: Normalize normal, tangent, and binormal before interpolating in the mobile renderer to avoid precision errors on heavily scaled meshes (&lt;a href="https://github.com/godotengine/godot/pull/99163">GH-99163&lt;/a>).&lt;/li>
&lt;li>Rendering: Reduce shader permutations in the compatibility backend (&lt;a href="https://github.com/godotengine/godot/pull/87558">GH-87558&lt;/a>).&lt;/li>
&lt;li>Shaders: Add renderer state defines to shader preprocessor (&lt;a href="https://github.com/godotengine/godot/pull/98549">GH-98549&lt;/a>).&lt;/li>
&lt;li>Shaders: Add swap connection option to visual shader graph (&lt;a href="https://github.com/godotengine/godot/pull/99177">GH-99177&lt;/a>).&lt;/li>
&lt;li>XR: Fix pose recenter signal to be omitted properly (&lt;a href="https://github.com/godotengine/godot/pull/99159">GH-99159&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>116 contributors&lt;/strong> submitted &lt;strong>265 improvements&lt;/strong> for this new snapshot. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.4-dev5">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since the previous 4.4-dev4 snapshot.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/9e6098432aac35bae42c9089a29ba2a80320d823">&lt;code class="language-plaintext highlighter-rouge">9e609843&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.4-dev5">
Download Godot 4.4 dev5
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/dev-snapshot-godot-4-4-dev-5.webp" />
&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://github.com/godotengine/godot-builds/releases/download/4.4-dev5/Godot_v4.4-dev5_linux.x86_64.zip" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev5/Godot_v4.4-dev5_mono_linux_x86_64.zip" 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://github.com/godotengine/godot-builds/releases/download/4.4-dev5/Godot_v4.4-dev5_macos.universal.zip" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev5/Godot_v4.4-dev5_mono_macos.universal.zip" 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://github.com/godotengine/godot-builds/releases/download/4.4-dev5/Godot_v4.4-dev5_win64.exe.zip" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev5/Godot_v4.4-dev5_mono_win64.zip" 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.4-dev5">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="/donate/">
Make a Donation
&lt;/a>
&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;ul>
&lt;li>See also &lt;a href="https://docs.godotengine.org/en/latest/tutorials/scripting/c_sharp/index.html#c-platform-support">C# platform support&lt;/a>.&lt;/li>
&lt;/ul>
&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;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 on 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>Pre-release</category><guid>https://godotengine.org/article/dev-snapshot-godot-4-4-dev-5/</guid><dc:creator>Thaddeus Crews</dc:creator><pubDate>Thu, 21 Nov 2024 18:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/dev-snapshot-godot-4-4-dev-5.webp</image></item><item><title>GodotCon 24: Berlin Edition</title><link>https://godotengine.org/article/review-godotcon24/</link><description>&lt;p>&lt;br />
📋 &lt;a href="https://forms.gle/3tALsQid32qqvu2Z8">Feedback form for visitors&lt;/a>
🎤 &lt;a href="https://www.youtube.com/playlist?list=PLeG_dAglpVo6TS0q858NajyeglRuvb7hs">Talk &amp;amp; workshop recordings&lt;/a>
🫙 &lt;a href="https://godotcon.itch.io/">Jam games&lt;/a>&lt;/p>
&lt;hr />
&lt;p>Variety was the name of the game this year. GodotCon keeps going around the globe and adds more activities to the program: the event team made up of volunteers and Godot Foundation staff put a lot work into making this more than a mere meetup occasion for the ever-growing community forming around the Godot Engine.&lt;/p>
&lt;p>Judging by the smiley pictures taken all around the &lt;a href="https://www.silent-green.net/">Silent Green&lt;/a> venue, and the excited chatter about what the next installments might bring to the table, we seem to have hit the sweet spot for our 574 attendees. For those of you that couldn’t be there yourself - considering both ticket batches sold out within an hour - join us on a retrospective walk through GodotCon, highlighting all the wonderful speakers, exhibitors, and sponsors that made this event possible.&lt;/p>
&lt;h1 id="sponsor-support">Sponsor support&lt;/h1>
&lt;p>GodotCon 2024 wouldn’t have been possible without the generosity of &lt;a href="https://conference.godotengine.org/2024/#sponsors">our sponsors&lt;/a>, who enabled us to bring this event to life.&lt;/p>
&lt;h2 id="critical-reflex">Critical Reflex&lt;/h2>
&lt;p>Having a publisher with experience in Godot on-board was as exciting for us as it seemed for the audience of “Indie Publishing 101” by their business developer Daniel. Additionally, you might have spotted the goodie bags they provided us.&lt;/p>
&lt;p>🔗 &lt;a href="https://criticalreflex.com">criticalreflex.com&lt;/a>&lt;/p>
&lt;p>&lt;img alt="Venue picture featuring Critical Reflex goodie bag" src="/storage/blog/godotcon24/goodie-bag.webp" />&lt;/p>
&lt;h2 id="endless-foundation">Endless Foundation&lt;/h2>
&lt;p>“Block Coding: Making Godot Accessible to Learners Everywhere” was another well-visited talk on the agenda, as was the booth of the biggest exhibitor team onsite. Their tech demonstration drew in fellow educators as well as curious game developers looking to contribute.&lt;/p>
&lt;p>🔗 &lt;a href="https://www.endlessos.org/">endlessos.org&lt;/a>&lt;/p>
&lt;p>&lt;img alt="Screenshot of their block coding editor" src="/storage/blog/godotcon24/block-coding.webp" />&lt;/p>
&lt;h2 id="w4-games">W4 Games&lt;/h2>
&lt;p>Port your Godot games to console with ease! The company founded by Godot Engine veterans explained “W4’s role in the Godot Ecosystem” on stage and let you playtest their products and talk business at their busy booth.&lt;/p>
&lt;p>🔗 &lt;a href="https://w4games.com">w4games.com&lt;/a>&lt;/p>
&lt;p>&lt;img alt="Juan giving a presentation about W4 Games on stage" src="/storage/blog/godotcon24/w4-games.webp" />&lt;/p>
&lt;h2 id="poki">Poki&lt;/h2>
&lt;p>The provider of free online games also has shown interest in Godot before and is hoping to expand their selection with your projects. We talked with them about improving Godot for the Web together; let’s see what the future might bring!&lt;/p>
&lt;p>🔗 &lt;a href="https://poki.com">poki.com&lt;/a>&lt;/p>
&lt;p>&lt;img alt="Photo of the Poki booth with two of the representatives smiling and giving a thumbs up" src="/storage/blog/godotcon24/poki.webp" />&lt;/p>
&lt;h2 id="aws">AWS&lt;/h2>
&lt;p>After demonstrating “How to quick start a Godot Engine game on AWS”, the cloud provider team spent time answering questions on the exhibition floor.&lt;/p>
&lt;p>🔗 &lt;a href="https://aws.amazon.com/gametech/">aws.amazon.com&lt;/a>&lt;/p>
&lt;p>&lt;img alt="The AWS team presenting at the main stage." src="/storage/blog/godotcon24/aws.webp" />&lt;/p>
&lt;hr />
&lt;p>If you or your company are interested in supporting the next edition of GodotCon, we’d love to hear from you! &lt;br />Please reach out to us at &lt;a href="mailto:godotcon@godotengine.org">godotcon@godotengine.org&lt;/a>.&lt;/p>
&lt;hr />
&lt;h1 id="game-exhibition">Game exhibition&lt;/h1>
&lt;p>For the first time ever, we tried curating a selection of projects ahead of time and invited game development teams to a showcase on the venue floors. Decorated booths and sometimes even goodies caught the eyes of many attendees, and provided the exhibitors with valuable playtest information as well as wishlists. Some told us this was the first event they participated in with their project!&lt;/p>
&lt;div class="preview-image-container">
&lt;img alt="Bug Off booth" src="/storage/blog/godotcon24/bug-off.webp" />
&lt;img alt="Data Garden booth" src="/storage/blog/godotcon24/data-garden.webp" />
&lt;img alt="Dung Slinger booth" src="/storage/blog/godotcon24/dung-slinger.webp" />
&lt;img alt="Fogpiercer booth" src="/storage/blog/godotcon24/fog-piercer.webp" />
&lt;img alt="Immersive Home booth" src="/storage/blog/godotcon24/immersive-home.webp" />
&lt;img alt="In Good Faith booth" src="/storage/blog/godotcon24/in-good-faith.webp" />
&lt;/div>
&lt;div class="preview-image-container">
&lt;img alt="Keep The Heroes Out booth" src="/storage/blog/godotcon24/keep-out.webp" />
&lt;img alt="Looking Up I See Only A Ceiling booth" src="/storage/blog/godotcon24/looking-up.webp" />
&lt;img alt="PVKK: Planetenverteidigungskanonenkommandant booth" src="/storage/blog/godotcon24/pvkk.webp" />
&lt;img alt="Robot Detour booth" src="/storage/blog/godotcon24/robot-detour.webp" />
&lt;img alt="Voice of Flowers booth" src="/storage/blog/godotcon24/voice-of-flowers.webp" />
&lt;img alt="Window Arcade booth" src="/storage/blog/godotcon24/window-arcade.webp" />
&lt;/div>
&lt;p>&lt;strong>Exhibitor list:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://curio-compass-games.itch.io/bug-off">Bug Off&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://store.steampowered.com/app/2644670/Data_Garden/">Data Garden&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://s4g.itch.io/dung-slinger">Dung Slinger&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://store.steampowered.com/app/3219010/Fogpiercer/">Fogpiercer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://immersive-home.org/">Immersive Home&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://store.steampowered.com/app/3151800/In_Good_Faith/">In Good Faith&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://store.steampowered.com/app/2592340/Keep_the_Heroes_Out/">Keep The Heroes Out&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://store.steampowered.com/app/1742930/Looking_Up_I_See_Only_A_Ceiling/">Looking Up I See Only A Ceiling&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://store.steampowered.com/app/2956040/PVKK_Planetenverteidigungskanonenkommandant/">PVKK: Planetenverteidigungskanonenkommandant&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://store.steampowered.com/app/2666840/Robot_Detour/">Robot Detour&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://schwarzeralptraum.itch.io/skyes-ducky-adventure-quest-for-gluttony">Skye’s Ducky Adventure: Quest for Gluttony&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://store.steampowered.com/app/2609560/Voice_of_Flowers/">Voice of Flowers&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://windowarcade.com">Window Arcade&lt;/a>&lt;/li>
&lt;/ul>
&lt;h1 id="activities">Activities&lt;/h1>
&lt;p>&lt;img alt="The graffiti canvas full of different drawings by the visitors" src="/storage/blog/godotcon24/canvas.webp" />&lt;/p>
&lt;p>What do you do at a conference, besides watching talks, browsing through the exhibition, or doing business? Have some fun and get to know other attendees in a casual way, of course.&lt;/p>
&lt;p>This is exactly what we aimed to facilitate with our onsite activities, especially the &lt;a href="https://conference.godotengine.org/2024/activities/">sticker challenge&lt;/a> tying them all together (since many of you asked: the stickers were designed by community artist &lt;a href="https://gotibo.fr/">Tibo&lt;/a>). From networking bingo to graffiti canvas, we saw many people striking up conversations with strangers or having a great time with friends.&lt;/p>
&lt;p>&lt;img alt="People participating in a game jam" src="/storage/blog/godotcon24/one-pc-jam.webp" />&lt;/p>
&lt;p>One of the most popular activities turned out to be the One PC Jam (taking place at three laptops concurrently) where the conference attendees created a jam game over the course of two days. The twist: everyone only was granted one hour on the project, before having to concede their seat to the next person. This resulted in three separate, actually playable games, which you can &lt;a href="https://godotcon.itch.io/">find on our GodotCon itch.io site&lt;/a>.&lt;/p>
&lt;h1 id="talks-and-workshops">Talks and workshops&lt;/h1>
&lt;p>&lt;img alt="View of the stage, with people standing behind full rows of chairs." src="/storage/blog/godotcon24/backstage.webp" />&lt;/p>
&lt;p>The Godot community once again came through and submitted more interesting talks than we could fit on the program - resulting in us repurposing the admittedly rather small workshop room to squeeze some more of the talented speakers in. Luckily, we also invited a camera crew onsite, that took great care recording both the workshops and two talk tracks, for you to enjoy on the Godot Engine YouTube channel - some of them already available, the rest being edited as you read this blog post.&lt;/p>
&lt;p>&lt;span style="font-size: 1.5em">
🔗 &lt;a href="https://www.youtube.com/playlist?list=PLeG_dAglpVo6TS0q858NajyeglRuvb7hs">YouTube Playlist&lt;/a>
&lt;/span>&lt;/p>
&lt;h1 id="feedback">Feedback&lt;/h1>
&lt;p>Considering the new additions we introduced to the event concept, and to learn from your experiences as visitors in general, we would appreciate it if you took the time to fill out this &lt;a href="https://forms.gle/3tALsQid32qqvu2Z8">feedback survey&lt;/a> we prepared. It should only take a few minutes.&lt;/p>
&lt;h1 id="thank-you">Thank you!&lt;/h1>
&lt;p>And that concludes our tour through GodotCon 24. Hope you had fun reminiscing with us!&lt;/p>
&lt;p>If you want to be notified about our next one, sign up to our mailing list and be the first to know:&lt;/p>
&lt;form method="post" action="https://godot.news/subscription/form" class="listmonk-form">
&lt;div>
&lt;input type="hidden" name="nonce" />
&lt;input type="email" name="email" required="" placeholder="E-mail" style="font-size: 18px;padding: 16px 18px;border: 1px solid var(--base-color);box-shadow: 0 4px 9px -3px #0000002e;background: var(--card-footer-color);color: var(--base-color-text);" />
&lt;p style="display:none;">
&lt;input id="6e6e9" type="checkbox" name="l" checked="" value="6e6e9ba4-732b-4528-b4cd-71bbe6850f8d" />
&lt;label for="6e6e9">Godot Conference&lt;/label>
&lt;/p>
&lt;input type="submit" class="btn" value="Subscribe" style="cursor: pointer;border: inherit; border-radius: 0;
box-shadow: none;
height: 54px;" />
&lt;/div>
&lt;/form>
&lt;p>🌐 &lt;a href="https://conference.godotengine.org/">https://conference.godotengine.org/&lt;/a>&lt;/p>
&lt;h3 id="-see-you-next-year">👋 See you next year!&lt;/h3>
&lt;style>
.preview-image-container {
display: flex;
justify-content: center;
align-items: center;
gap: 5px;
/* padding: 16px; */
background-color: transparent;
}
.preview-image-container {
background-color: transparent;
}
.preview-image-container img {
max-height: 300px;
background-color: transparent;
}
&lt;/style></description><category>Events</category><guid>https://godotengine.org/article/review-godotcon24/</guid><dc:creator>Nat</dc:creator><pubDate>Wed, 13 Nov 2024 18:30:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/godotcon-2024-post.webp</image></item><item><title>Dev snapshot: Godot 4.4 dev 4</title><link>https://godotengine.org/article/dev-snapshot-godot-4-4-dev-4/</link><description>&lt;p>We are back roughly a month after the release of dev3 to bring you a host of new improvements. Many of our developers
traveled to Germany in October for GodotCon and the yearly Godot contributor meeting. There they spent two days
discussing some of the biggest technical challenges and puzzling out solutions.&lt;/p>
&lt;p>Many of the changes in this release are bug fixes that will be backported to Godot 4.3 and released in 4.3.1! So please
test this release well so we can be confident with the changes and release 4.3.1 with them as soon as possible.&lt;/p>
&lt;p>Keep in mind that while we try to make sure each dev snapshot is stable enough for general testing, this is by
definition a pre-release piece of software. 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;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.4.dev4/">&lt;strong>Web editor&lt;/strong>&lt;/a>, &lt;a href="https://www.meta.com/experiences/godot-game-engine/7713660705416473/">&lt;strong>XR editor&lt;/strong>&lt;/a>, or the &lt;strong>Android editor&lt;/strong> for this release (join the &lt;a href="https://groups.google.com/g/godot-testers">Android editor 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/2211170/Unrailed_2_Back_on_Track/">&lt;strong>Unrailed 2: Back on Track&lt;/strong>&lt;/a>, &lt;em>a chaotic co-op railroad construction game where you build your track across procedurally generated worlds! It is developed by &lt;a href="https://indoorastronaut.ch/">Indoor Astronaut&lt;/a>. You can purchase the game in early access &lt;a href="https://store.steampowered.com/app/2211170/Unrailed_2_Back_on_Track/">on Steam&lt;/a> and follow the developer on &lt;a href="https://x.com/IndoorAstronaut">Twitter&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-4-dev-1/">4.4 dev 1&lt;/a>, &lt;a href="/article/dev-snapshot-godot-4-4-dev-2/">dev2&lt;/a>,
and &lt;a href="/article/dev-snapshot-godot-4-4-dev-3/">dev 3&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 dev 3.&lt;/p>
&lt;p>Here are a few highlights that you might find particularly exciting!&lt;/p>
&lt;h3 id="interactive-in-game-editing">Interactive in-game editing&lt;/h3>
&lt;p>One of the most requested features is the ability to debug the running game from within the editor including pausing the
game, clicking on elements within the scene, and embedding the running game window inside the editor. Dev4 comes with
the first two of these workflows thanks to the contribution from &lt;a href="https://github.com/YeldhamDev">YeldhamDev&lt;/a> of Lone Wolf
Technology &amp;amp; W4 Games, users are now able to explore their project’s world freely!&lt;/p>
&lt;p>The actual embedding of the game window into the editor will come later in a subsequent PR.&lt;/p>
&lt;p>Check out the PR (&lt;a href="https://github.com/godotengine/godot/pull/97257">GH-97257&lt;/a>) and the video below to see exactly what
this change enables.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="">
&lt;source src="/storage/blog/dev-snapshot-godot-4-4-dev-4/game-editor-debug.mp4?1" type="video/mp4" />
&lt;/video>
&lt;h3 id="use-collision-detection-ray-to-reposition-an-object-already-in-the-scene">Use collision detection ray to reposition an object already in the scene&lt;/h3>
&lt;p>&lt;a href="https://github.com/ryevdokimov">ryevdokimov&lt;/a> added object snapping for placing 3D objects in the editor (&lt;a href="https://github.com/godotengine/godot/pull/96740">GH-96740&lt;/a>).&lt;/p>
&lt;p>This is not a drill, see below.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="">
&lt;source src="/storage/blog/dev-snapshot-godot-4-4-dev-4/physics-placement.mp4?1" type="video/mp4" />
&lt;/video>
&lt;h3 id="ubershaders-and-pipeline-pre-compilation-and-dedicated-transfer-queues">Ubershaders and pipeline pre-compilation (and dedicated transfer queues)&lt;/h3>
&lt;p>This change combines 2 huge improvements (&lt;a href="https://github.com/godotengine/godot/pull/90400">GH-90400&lt;/a>):&lt;/p>
&lt;ol>
&lt;li>Ubershaders: a technique that allows us to completely avoid shader stutter when objects are viewed in a scene for the first time&lt;/li>
&lt;li>Dedicated transfer queues: by relying on special hardware functions we can dramatically improve the load time for scenes containing many graphics assets like meshes and textures.&lt;/li>
&lt;/ol>
&lt;p>Thanks to &lt;a href="https://github.com/dariosamo">DarioSamo&lt;/a> for months of hard work on this. The implementation of Ubershaders
is something that took a lot of design and implementation to get right, but the end result is something we are very
happy with.&lt;/p>
&lt;p>“Ubershaders” are a version of each shader that contains all features and are compiled at load time. We pair the
ubershader with the ability to compile specialized shader pipelines in the background. This way when we draw a new
object, instead of freezing and waiting for the pipeline to compile, we fallback on the ubershader and compile the
specialized shader in the background.&lt;/p>
&lt;p>Most games will notice the improvement from ubershaders without any content changes. However, there are certain cases
where the ubershader won’t work and some content changes will be needed to avoid shader stutter. However, the
workarounds for avoiding shader stutter are now very simple and are well documented already in the &lt;a href="https://docs.godotengine.org/en/latest/tutorials/performance/pipeline_compilations.html">official docs&lt;/a>.&lt;/p>
&lt;p>Taking advantage of the new ubershader infrastructure, we can now optimize our shaders by creating specialized variants
that skip unused pathways. We have already begin doing so to optimize our existing shaders
(&lt;a href="https://github.com/godotengine/godot/pull/98825">GH-98825&lt;/a>).&lt;/p>
&lt;h3 id="add-shadow-caster-mask-property-to-light3d">Add Shadow Caster Mask property to Light3D&lt;/h3>
&lt;p>This long awaited improvement from &lt;a href="https://github.com/EMBYRDEV">EMBYRDEV&lt;/a> allows users to apply a mask on Light3Ds to
select what rendering layers will be considered when casting shadows
(&lt;a href="https://github.com/godotengine/godot/pull/85338">GH-85338&lt;/a>). Previously it was only possible to disable shadows from a
GeometryInstance (for all Light3Ds) or a Light3D (for all GeometryInstances). This allows much more fine-grained control
that allows users to further optimize dynamic lights and control where shadows appear in their games.&lt;/p>
&lt;h3 id="always-add-decimal-when-converting-float-to-string">Always add decimal when converting float to string&lt;/h3>
&lt;p>Currently when printing float values Godot trims trailing &lt;code class="language-plaintext highlighter-rouge">.0&lt;/code>s as they are technically unnecessary. However, this could
lead to issues for users who need to distinguish between floating point numbers and integers.
&lt;a href="https://github.com/kobewi">KoBeWi&lt;/a> has now changed the behavior when floats are converted to strings to always add the decimal number, even if it would be &lt;code class="language-plaintext highlighter-rouge">.0&lt;/code>.
This makes floats always recognizable when they are converted to strings (&lt;a href="https://github.com/godotengine/godot/pull/47502">GH-47502&lt;/a>).&lt;/p>
&lt;p>This change in behavior may break your project if you are relying on the current serialization behavior. If this change
breaks your project, please let us know by opening an issue on GitHub.&lt;/p>
&lt;div class="language-gdscript highlighter-rouge">&lt;div class="highlight">&lt;pre class="highlight">&lt;code>&lt;span class="c1"># Before:&lt;/span>
&lt;span class="k">var&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kt">float&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">1.0&lt;/span>
&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># Prints 1&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;div class="language-gdscript highlighter-rouge">&lt;div class="highlight">&lt;pre class="highlight">&lt;code>&lt;span class="c1"># After:&lt;/span>
&lt;span class="k">var&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kt">float&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">1.0&lt;/span>
&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># Prints 1.0&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>2D: Revert unintentional rounding change when 2D transform snapping (&lt;a href="https://github.com/godotengine/godot/pull/98195">GH-98195&lt;/a>).&lt;/li>
&lt;li>Animation: Fix error when stopping empty animation player (&lt;a href="https://github.com/godotengine/godot/pull/97760">GH-97760&lt;/a>).&lt;/li>
&lt;li>Audio: Expose some AudioStreamPlayback methods (namely mix_audio()) (&lt;a href="https://github.com/godotengine/godot/pull/86539">GH-86539&lt;/a>).&lt;/li>
&lt;li>Buildsystem: CI: Add MinGW/GCC build to Windows GHA (&lt;a href="https://github.com/godotengine/godot/pull/97446">GH-97446&lt;/a>).&lt;/li>
&lt;li>Core: Implement array based hash map AHashMap (&lt;a href="https://github.com/godotengine/godot/pull/92554">GH-92554&lt;/a>).&lt;/li>
&lt;li>Core: Expose &lt;code class="language-plaintext highlighter-rouge">Geometry2D.bresenham_line()&lt;/code> method (&lt;a href="https://github.com/godotengine/godot/pull/74714">GH-74714&lt;/a>).&lt;/li>
&lt;li>Core: Add Object support for String.format (&lt;a href="https://github.com/godotengine/godot/pull/65962">GH-65962&lt;/a>).&lt;/li>
&lt;li>Dotnet: Change generated &lt;code class="language-plaintext highlighter-rouge">On{SignalName}&lt;/code> to &lt;code class="language-plaintext highlighter-rouge">EmitSignal{SignalName}&lt;/code> (&lt;a href="https://github.com/godotengine/godot/pull/97588">GH-97588&lt;/a>).&lt;/li>
&lt;li>Dotnet: Generate &lt;code class="language-plaintext highlighter-rouge">ReadOnlySpan&amp;lt;T&amp;gt;&lt;/code> Overloads for GodotSharp APIs (&lt;a href="https://github.com/godotengine/godot/pull/96329">GH-96329&lt;/a>).&lt;/li>
&lt;li>Editor: Improve UI of sun angle in the sun/preview env popup (&lt;a href="https://github.com/godotengine/godot/pull/97747">GH-97747&lt;/a>).&lt;/li>
&lt;li>Editor: Add submenu support to EditorContextMenuPlugin (&lt;a href="https://github.com/godotengine/godot/pull/97292">GH-97292&lt;/a>).&lt;/li>
&lt;li>Editor: Improve display for lightmap probes in the editor (&lt;a href="https://github.com/godotengine/godot/pull/83863">GH-83863&lt;/a>).&lt;/li>
&lt;li>Editor: Add missing audio bus button styles #(&lt;a href="https://github.com/godotengine/godot/pull/93443">GH-93443&lt;/a>).&lt;/li>
&lt;li>Editor: Add Markdown syntax highlighting to the script editor (&lt;a href="https://github.com/godotengine/godot/pull/78312">GH-78312&lt;/a>).&lt;/li>
&lt;li>GDExtension: Fix loss of gdextension on editor startup (&lt;a href="https://github.com/godotengine/godot/pull/98041">GH-98041&lt;/a>).&lt;/li>
&lt;li>GDScript: GDScript: Fix cached parser error when using typed Dictionaries (&lt;a href="https://github.com/godotengine/godot/pull/98400">GH-98400&lt;/a>).&lt;/li>
&lt;li>GDScript: GDScript: Fix annotation parsing adding new annotation entries (&lt;a href="https://github.com/godotengine/godot/pull/98146">GH-98146&lt;/a>).&lt;/li>
&lt;li>GUI: Add hover state to Tree items display (&lt;a href="https://github.com/godotengine/godot/pull/88530">GH-88530&lt;/a>).&lt;/li>
&lt;li>GUI: Handle scroll events in RichtTextLabel (&lt;a href="https://github.com/godotengine/godot/pull/97730">GH-97730&lt;/a>).&lt;/li>
&lt;li>Import: Rewrite index optimization code for maximum efficiency (&lt;a href="https://github.com/godotengine/godot/pull/98801">GH-98801&lt;/a>).&lt;/li>
&lt;li>Import: LOD: Remove “Raycast Normals” and associated “Normal Split Angle” settings (&lt;a href="https://github.com/godotengine/godot/pull/98620">GH-98620&lt;/a>).&lt;/li>
&lt;li>Import: Betsy: Implement BC4 compression (&lt;a href="https://github.com/godotengine/godot/pull/97295">GH-97295&lt;/a>).&lt;/li>
&lt;li>Import: Emit filesystem_changed only once per frame (&lt;a href="https://github.com/godotengine/godot/pull/98584">GH-98584&lt;/a>).&lt;/li>
&lt;li>Navigation: Optimize some parts of NavMap::sync (&lt;a href="https://github.com/godotengine/godot/pull/90182">GH-90182&lt;/a>).&lt;/li>
&lt;li>Porting: Implement native file picker support for Android (&lt;a href="https://github.com/godotengine/godot/pull/98350">GH-98350&lt;/a>).&lt;/li>
&lt;li>Porting: Implement has_hardware_keyboard method for Android and iOS (&lt;a href="https://github.com/godotengine/godot/pull/97743">GH-97743&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix various issues and minor performance optimisations in 2D renderer (&lt;a href="https://github.com/godotengine/godot/pull/98652">GH-98652&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix volumetric fog artifacts when inside the fog (&lt;a href="https://github.com/godotengine/godot/pull/86103">GH-86103&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix updating dynamic objects in LightmapGI (&lt;a href="https://github.com/godotengine/godot/pull/97925">GH-97925&lt;/a>).&lt;/li>
&lt;li>Rendering: Add draw indirect to Rendering Device (&lt;a href="https://github.com/godotengine/godot/pull/97247">GH-97247&lt;/a>).&lt;/li>
&lt;li>Rendering: Add Swappy &amp;amp; Pre-Transformed Swapchain (&lt;a href="https://github.com/godotengine/godot/pull/96439">GH-96439&lt;/a>).&lt;/li>
&lt;li>Shaders: Implement instance uniforms in Compatibility renderer (&lt;a href="https://github.com/godotengine/godot/pull/96819">GH-96819&lt;/a>).&lt;/li>
&lt;li>Shaders: Implement custom function overloading in shading language (&lt;a href="https://github.com/godotengine/godot/pull/92441">GH-92441&lt;/a>).&lt;/li>
&lt;li>XR: OpenXR: change bindings to ‘flatten’ source paths (&lt;a href="https://github.com/godotengine/godot/pull/98163">GH-98163&lt;/a>).&lt;/li>
&lt;li>XR: Add support for external camera feed from external plugin on Android (&lt;a href="https://github.com/godotengine/godot/pull/96705">GH-96705&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>131 contributors&lt;/strong> submitted &lt;strong>339 improvements&lt;/strong> for this new snapshot. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.4-dev4">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since the previous 4.4-dev3 snapshot.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/36e6207bb48fafd43b98a458d0c461ad982b4e68">&lt;code class="language-plaintext highlighter-rouge">36e6207bb&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.4-dev4">
Download Godot 4.4 dev4
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/dev-snapshot-godot-4-4-dev-4.webp" />
&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://github.com/godotengine/godot-builds/releases/download/4.4-dev4/Godot_v4.4-dev4_linux.x86_64.zip" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev4/Godot_v4.4-dev4_mono_linux_x86_64.zip" 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://github.com/godotengine/godot-builds/releases/download/4.4-dev4/Godot_v4.4-dev4_macos.universal.zip" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev4/Godot_v4.4-dev4_mono_macos.universal.zip" 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://github.com/godotengine/godot-builds/releases/download/4.4-dev4/Godot_v4.4-dev4_win64.exe.zip" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev4/Godot_v4.4-dev4_mono_win64.zip" 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.4-dev4">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="/donate/">
Make a Donation
&lt;/a>
&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;ul>
&lt;li>See also &lt;a href="https://docs.godotengine.org/en/latest/tutorials/scripting/c_sharp/index.html#c-platform-support">C# platform support&lt;/a>.&lt;/li>
&lt;/ul>
&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;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 on 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>Pre-release</category><guid>https://godotengine.org/article/dev-snapshot-godot-4-4-dev-4/</guid><dc:creator>Clay John</dc:creator><pubDate>Fri, 08 Nov 2024 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/dev-snapshot-godot-4-4-dev-4.webp</image></item><item><title>Dev snapshot: Godot 4.4 dev 3</title><link>https://godotengine.org/article/dev-snapshot-godot-4-4-dev-3/</link><description>&lt;p>We are back with another big dev update with over 330 commits merged in the last few weeks! Contributors continue to
work on amazing new things while we continue to merge our backlog of important features that missed the 4.3 cutoff. The
combined result is a lot of great stuff compressed into a short amount of time.&lt;/p>
&lt;p>Many of the changes in this release are bug fixes that will be backported to Godot 4.3 and released in 4.3.1! So please
test this release well so we can be confident with the changes and release 4.3.1 with them as soon as possible.&lt;/p>
&lt;p>Keep in mind that while we try to make sure each dev snapshot is stable enough for general testing, this is by
definition a pre-release piece of software. 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;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.4.dev3/">&lt;strong>Web editor&lt;/strong>&lt;/a>, &lt;a href="https://www.meta.com/experiences/godot-game-engine/7713660705416473/">&lt;strong>XR editor&lt;/strong>&lt;/a>, or the &lt;strong>Android editor&lt;/strong> for this release (join the &lt;a href="https://groups.google.com/g/godot-testers">Android editor 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/3219010/Fogpiercer/">&lt;strong>Fogpiercer&lt;/strong>&lt;/a>, &lt;em>a turn-based card battler where your deck is a train! It is developed in Godot 4.3 by &lt;a href="https://x.com/MadCookiesGames">Mad Cookies Studio&lt;/a>. You can wishlist the game &lt;a href="https://store.steampowered.com/app/3219010/Fogpiercer/">on Steam&lt;/a> and follow the developers on &lt;a href="https://x.com/MadCookiesGames">Twitter&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-4-dev-1/">4.4 dev 1&lt;/a> and &lt;a href="/article/dev-snapshot-godot-4-4-dev-2/">dev 2&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 dev 3.&lt;/p>
&lt;p>Here are a few highlights that you might find particularly exciting!&lt;/p>
&lt;h3 id="export_tool_button-annotation">&lt;code class="language-plaintext highlighter-rouge">@export_tool_button&lt;/code> annotation&lt;/h3>
&lt;p>Being able to create a button in the inspector from tool scripts was a highly requested feature, and many contributors
took it upon themselves to make it happen in &lt;a href="https://github.com/godotengine/godot/pull/96290">GH-96290&lt;/a>: new
contributors &lt;a href="https://github.com/jordi-star">jordi-star&lt;/a> and &lt;a href="https://github.com/Macksaur">Macksaur&lt;/a>, and maintainers
&lt;a href="https://github.com/fire">Ernest&lt;/a> and &lt;a href="https://github.com/dalexeev">Danil&lt;/a>!&lt;/p>
&lt;p>This new feature allows you to be even more expressive with the dev tooling that you can easily create with &lt;code class="language-plaintext highlighter-rouge">@tool&lt;/code>
scripts.&lt;/p>
&lt;p>Let’s take a look at an example:&lt;/p>
&lt;div class="language-gdscript highlighter-rouge">&lt;div class="highlight">&lt;pre class="highlight">&lt;code>&lt;span class="err">@&lt;/span>&lt;span class="k">tool&lt;/span>
&lt;span class="k">extends&lt;/span> &lt;span class="n">Sprite2D&lt;/span>
&lt;span class="c1"># With a callable (could also be a local function).&lt;/span>
&lt;span class="err">@&lt;/span>&lt;span class="n">export_tool_button&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">"Toot"&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">"Callable"&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="k">var&lt;/span> &lt;span class="n">print_action&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">print&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">bind&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">"toot"&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># With a lambda.&lt;/span>
&lt;span class="err">@&lt;/span>&lt;span class="n">export_tool_button&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">"Randomize Color"&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">"ColorRect"&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="k">var&lt;/span> &lt;span class="n">color_action&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">func&lt;/span>&lt;span class="p">():&lt;/span> &lt;span class="n">self_modulate&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kt">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">randf&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="nb">randf&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="nb">randf&lt;/span>&lt;span class="p">())&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-4-dev-3/export_tool_button.gif" alt="Export tool button examples" />&lt;/p>
&lt;h3 id="massively-optimized-scene-startup-for-large-projects">Massively optimized scene startup for large projects&lt;/h3>
&lt;p>Work has not slowed down on improving the scene startup experience, still thanks to amazing contributions by
&lt;a href="https://github.com/Hilderin">Hilderin&lt;/a>. This dev snapshot introduces a massive improvement to editor load speed for
large projects (&lt;a href="https://github.com/godotengine/godot/pull/95678">GH-95678&lt;/a>). Large projects can expect up to a 3×
speed improvement when loading the project and a similar speedup when doing any operations that scan the filesystem.&lt;/p>
&lt;h3 id="vertex-shading">Vertex shading&lt;/h3>
&lt;p>This dev release re-introduces the long-awaited vertex shading option for materials
(&lt;a href="https://github.com/godotengine/godot/pull/83360">GH-83360&lt;/a>), thanks to contributor &lt;a href="https://github.com/ywmaa">ywmaa&lt;/a>
landing their second major feature in Godot, after export support for
&lt;a href="https://github.com/godotengine/godot/pull/87735">Blender Geometry Nodes&lt;/a>.
Vertex shading is used primarily to achieve an early PSX style and to optimize performance on older and lower-end
devices.&lt;/p>
&lt;p>You can enable vertex shading either from within an existing &lt;code class="language-plaintext highlighter-rouge">StandardMaterial3D&lt;/code>, &lt;code class="language-plaintext highlighter-rouge">ORMMaterial3D&lt;/code>, &lt;code class="language-plaintext highlighter-rouge">ShaderMaterial&lt;/code>,
or by force enabling it on all materials using the &lt;code class="language-plaintext highlighter-rouge">rendering/shading/overrides/force_vertex_shading&lt;/code> project setting.&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-4-dev-3/vertex_shading.webp" alt="Two spheres, one is vertex shaded" />&lt;/p>
&lt;h3 id="add-batching-to-renderercanvasrenderrd">Add batching to RendererCanvasRenderRD&lt;/h3>
&lt;p>After tackling the &lt;a href="https://godotengine.org/article/dev-snapshot-godot-4-4-dev-1/#metal-rendering-backend">Metal rendering backend&lt;/a>
merged in an earlier snapshot, &lt;a href="https://github.com/stuartcarnie/">Stuart&lt;/a> took on another impressive rendering
contribution: 2D batching!&lt;/p>
&lt;p>Batching has been implemented in the Compatibility renderer since the release of 4.0. This release brings the same
performance benefits to the other backends by implementing batching when using the Forward+ and Mobile backends
(&lt;a href="https://github.com/godotengine/godot/pull/92797">GH-92797&lt;/a>). Now 2D performance is comparable between all backends.&lt;/p>
&lt;p>Batching is a performance optimization that drastically reduces the number of draw calls in a scene. The benefits of
batching will be particularly noticeable in scenes with a lot of text rendering or repeated sprites that share a texture
(e.g. when using tilemaps or making a bullet hell).&lt;/p>
&lt;p>We have further improvements planned for batching on the RD backends that should allow it to be even faster than the
Compatibility backend. Stay tuned for updates in later dev releases!&lt;/p>
&lt;h3 id="expression-evaluator-repl-in-the-debugger">Expression evaluator (REPL) in the debugger&lt;/h3>
&lt;p>The expression evaluator adds a new tab to the bottom panel that allows you to evaluate expressions using the local
state of your scripts while stopped at a breakpoint. Many users are familiar with this workflow from other
&lt;a href="https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop">REPL&lt;/a> debuggers.&lt;/p>
&lt;p>This feature has been a work in progress for awhile and was recently finished and merged in
(&lt;a href="https://github.com/godotengine/godot/pull/97647">GH-97647&lt;/a>), thank you to &lt;a href="https://github.com/rohanrhu">Oğuzhan&lt;/a>,
&lt;a href="https://github.com/rxlecky">Erik&lt;/a>, and &lt;a href="https://github.com/KoBeWi/">Tomek&lt;/a> for bringing it across the finish line.&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-4-dev-3/repl.webp" alt="Evaluate tab in the debugger" />&lt;/p>
&lt;h3 id="implement-autostart-for-all-profilers">Implement autostart for all profilers&lt;/h3>
&lt;p>A common complaint from users is that they need to go back to the editor once they start their game in order to enable
the profiler. This made it hard to measure performance in the first few seconds of loading a scene and was an overall
hassle for developers.&lt;/p>
&lt;p>&lt;a href="https://github.com/Geometror">Hendrik&lt;/a> introduced a checkbox that allows you to set the profiler to automatically start
when you run the engine and capture valuable profiling data immediately
(&lt;a href="https://github.com/godotengine/godot/pull/96759">GH-96759&lt;/a>).&lt;/p>
&lt;p>&lt;img src="/storage/blog/dev-snapshot-godot-4-4-dev-3/auto-start.webp" alt="Auto start checkbox in profiler" />&lt;/p>
&lt;h3 id="add-markers-to-animation">Add markers to Animation&lt;/h3>
&lt;p>Markers allow you to create sub regions of an animation that can be jumped to, or looped without playing the entire
animation.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="">
&lt;source src="/storage/blog/dev-snapshot-godot-4-4-dev-3/markers.mp4?1" type="video/mp4" />
&lt;/video>
&lt;p>Markers are even supported inside the Animation Tree, where you can easily select animation markers for looping or to
begin playback.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="">
&lt;source src="/storage/blog/dev-snapshot-godot-4-4-dev-3/markers2.mp4?1" type="video/mp4" />
&lt;/video>
&lt;p>For more details check out the pull request &lt;a href="https://github.com/godotengine/godot/pull/91765">GH-91765&lt;/a>, which was one
of the first Godot contributions of &lt;a href="https://github.com/chocola-mint">ChocolaMint&lt;/a>!&lt;/p>
&lt;h3 id="linux-camera-support">Linux camera support&lt;/h3>
&lt;p>Previously, Godot only supported accessing the device camera on macOS and iOS devices.
&lt;a href="https://github.com/pkowal1982">pkowal1982&lt;/a>’s long-running pull request &lt;a href="https://github.com/godotengine/godot/pull/53666">GH-53666&lt;/a>
was finally merged and adds support for the Linux platform, allowing developers to access connected cameras from within
their game.&lt;/p>
&lt;h3 id="fallback-to-opengl-3-if-other-rendering-drivers-are-not-supported">Fallback to OpenGL 3 if other rendering drivers are not supported&lt;/h3>
&lt;p>Currently when trying to run Godot with the Forward+ or Mobile backend on a device that doesn’t support Vulkan, D3D12,
or Metal, the engine will provide the user with an OS alert notifying them that they don’t have support for the needed
graphics API and they need to try again with the Compatibility backend. This alert has proven to be confusing for users
and the process of opening the scene ends up being cumbersome.&lt;/p>
&lt;p>Now with &lt;a href="https://github.com/godotengine/godot/pull/97142">GH-97142&lt;/a>, first contribution from
&lt;a href="https://github.com/SheepYhangCN">SheepYhangCN&lt;/a>, the engine will automatically fall back to using OpenGL (the
Compatibility backend) when the other backends are not available. This should provide the smoothest possible experience
for users on older devices.&lt;/p>
&lt;p>Since the Compatibility backends can look different from the other backends, game developers may not want Godot to
automatically fall back. In that case, they can disable the &lt;code class="language-plaintext highlighter-rouge">rendering/rendering_device/fallback_to_opengl3&lt;/code> project
setting to avoid falling back, and users with OpenGL-only devices would then get notified that their hardware is not
supported.&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: Fix pink GradientTexture2D (&lt;a href="https://github.com/godotengine/godot/pull/94744">GH-94744&lt;/a>).&lt;/li>
&lt;li>2D: Fix polygon node losing its UV toolbar (&lt;a href="https://github.com/godotengine/godot/pull/96466">GH-96466&lt;/a>).&lt;/li>
&lt;li>3D: PathFollow3D update transform immediately by default (&lt;a href="https://github.com/godotengine/godot/pull/96140">GH-96140&lt;/a>).&lt;/li>
&lt;li>Animation: Update AnimationPlayer in real-time when bezier curve properties or bezier editor changes (&lt;a href="https://github.com/godotengine/godot/pull/96753">GH-96753&lt;/a>).&lt;/li>
&lt;li>Audio: Fix one frame overflow at the end of WAV files (&lt;a href="https://github.com/godotengine/godot/pull/96768">GH-96768&lt;/a>).&lt;/li>
&lt;li>Audio: Use a LocalVector to store data to optimize AudioStreamMp3 (&lt;a href="https://github.com/godotengine/godot/pull/97026">GH-97026&lt;/a>).&lt;/li>
&lt;li>Buildsystem: CI: Update clang-format pre-commit hook to 19.1.0 (&lt;a href="https://github.com/godotengine/godot/pull/97483">GH-97483&lt;/a>).&lt;/li>
&lt;li>Core: Add callable support for find and rfind Array methods (&lt;a href="https://github.com/godotengine/godot/pull/95449">GH-95449&lt;/a>).&lt;/li>
&lt;li>Core: Fix inability to use ResourceLoader in C# after threaded load in GDScript (&lt;a href="https://github.com/godotengine/godot/pull/92888">GH-92888&lt;/a>).&lt;/li>
&lt;li>Core: Add translation domain (&lt;a href="https://github.com/godotengine/godot/pull/95787">GH-95787&lt;/a>).&lt;/li>
&lt;li>Core: WorkerThreadPool: Revamp interaction with ScriptServer (&lt;a href="https://github.com/godotengine/godot/pull/96959">GH-96959&lt;/a>).&lt;/li>
&lt;li>Core: StringName: Fix empty hash (&lt;a href="https://github.com/godotengine/godot/pull/96586">GH-96586&lt;/a>).&lt;/li>
&lt;li>Dotnet: Generate strongly-typed method to raise signal events and fix event accessibility (&lt;a href="https://github.com/godotengine/godot/pull/68233">GH-68233&lt;/a>).&lt;/li>
&lt;li>Editor: Fix MeshInstance3D gizmo redraw performance for PlaneMesh with larger subdiv value (&lt;a href="https://github.com/godotengine/godot/pull/96934">GH-96934&lt;/a>).&lt;/li>
&lt;li>Editor: Fix error reopening non existing scene on startup (&lt;a href="https://github.com/godotengine/godot/pull/97028">GH-97028&lt;/a>).&lt;/li>
&lt;li>GDExtension: GDExtension: Allow class names to be unicode (&lt;a href="https://github.com/godotengine/godot/pull/96501">GH-96501&lt;/a>).&lt;/li>
&lt;li>GDScript: Fix issue with GDScript binary tokens being non-deterministic (&lt;a href="https://github.com/godotengine/godot/pull/96855">GH-96855&lt;/a>).&lt;/li>
&lt;li>GDScript: Fix Dictionary.merge() type validation (&lt;a href="https://github.com/godotengine/godot/pull/96864">GH-96864&lt;/a>).&lt;/li>
&lt;li>GDScript: Fix operator[] for typed dictionaries (&lt;a href="https://github.com/godotengine/godot/pull/96797">GH-96797&lt;/a>).&lt;/li>
&lt;li>GUI: GraphEdit: Improve dotted pattern grid performance (&lt;a href="https://github.com/godotengine/godot/pull/96910">GH-96910&lt;/a>).&lt;/li>
&lt;li>GUI: Fix TabContainer minimum size (&lt;a href="https://github.com/godotengine/godot/pull/97132">GH-97132&lt;/a>).&lt;/li>
&lt;li>Import: Add BC1 compression support to Betsy (&lt;a href="https://github.com/godotengine/godot/pull/95915">GH-95915&lt;/a>).&lt;/li>
&lt;li>Navigation: Fix AStar2D, AStar3D, AStarGrid2D from not returning a path when the destination is disabled/solid even with allow_partial_path option (&lt;a href="https://github.com/godotengine/godot/pull/94246">GH-94246&lt;/a>).&lt;/li>
&lt;li>Physics: Move Godot Physics 2D into a module; add dummy 2D physics server (&lt;a href="https://github.com/godotengine/godot/pull/95261">GH-95261&lt;/a>).&lt;/li>
&lt;li>Physics: Move Godot Physics 3D into a module; add dummy 3D physics server (&lt;a href="https://github.com/godotengine/godot/pull/95252">GH-95252&lt;/a>).&lt;/li>
&lt;li>Physics: Add forgotten get_space() check in GodotArea3D::remove_soft_body_from_query() (&lt;a href="https://github.com/godotengine/godot/pull/97130">GH-97130&lt;/a>).&lt;/li>
&lt;li>Porting: Fix project manager stealing focus on i3 (&lt;a href="https://github.com/godotengine/godot/pull/96829">GH-96829&lt;/a>).&lt;/li>
&lt;li>Rendering: Use distance to AABB surface to calculate Mesh LOD instead of using supports (&lt;a href="https://github.com/godotengine/godot/pull/92290">GH-92290&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix BaseMaterial3D refracting objects located in front of the material (&lt;a href="https://github.com/godotengine/godot/pull/93449">GH-93449&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix incorrect Reinhard tonemap operator (&lt;a href="https://github.com/godotengine/godot/pull/93324">GH-93324&lt;/a>).&lt;/li>
&lt;li>Rendering: Use temporal accumulation to improve the quality of shadows (&lt;a href="https://github.com/godotengine/godot/pull/97428">GH-97428&lt;/a>).&lt;/li>
&lt;li>Rendering: Fix region_filter_clip_enabled to avoid sprite bleeding for interpolated sprite sheets (&lt;a href="https://github.com/godotengine/godot/pull/97602">GH-97602&lt;/a>).&lt;/li>
&lt;li>Visual Shaders: Add vector operations to Remap node (&lt;a href="https://github.com/godotengine/godot/pull/97314">GH-97314&lt;/a>).&lt;/li>
&lt;li>Thirdparty: mbedTLS: Enable TLS 1.3 support (&lt;a href="https://github.com/godotengine/godot/pull/96394">GH-96394&lt;/a>).&lt;/li>
&lt;li>XR: Fix launching XR apps from the Android editor (&lt;a href="https://github.com/godotengine/godot/pull/96868">GH-96868&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h2 id="changelog">Changelog&lt;/h2>
&lt;p>&lt;strong>136 contributors&lt;/strong> submitted &lt;strong>332 improvements&lt;/strong> for this new snapshot. See our &lt;a href="https://godotengine.github.io/godot-interactive-changelog/#4.4-dev3">&lt;strong>interactive changelog&lt;/strong>&lt;/a> for the complete list of changes since the previous 4.4-dev2 snapshot.&lt;/p>
&lt;p>This release is built from commit &lt;a href="https://github.com/godotengine/godot/commit/f4af8201bac157b9d47e336203d3e8a8ef729de2">&lt;code class="language-plaintext highlighter-rouge">f4af8201b&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.4-dev3">
Download Godot 4.4 dev3
&lt;/a>
&lt;div class="card-download-details">
&lt;img class="lightbox-ignore" src="/storage/blog/covers/dev-snapshot-godot-4-4-dev-3.webp" />
&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://github.com/godotengine/godot-builds/releases/download/4.4-dev3/Godot_v4.4-dev3_linux.x86_64.zip" class="btn btn-download btn-download-primary platform-linux">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev3/Godot_v4.4-dev3_mono_linux_x86_64.zip" 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://github.com/godotengine/godot-builds/releases/download/4.4-dev3/Godot_v4.4-dev3_macos.universal.zip" class="btn btn-download btn-download-primary platform-macos">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev3/Godot_v4.4-dev3_mono_macos.universal.zip" 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://github.com/godotengine/godot-builds/releases/download/4.4-dev3/Godot_v4.4-dev3_win64.exe.zip" class="btn btn-download btn-download-primary platform-windows">
&lt;div class="download-title">
Standard
&lt;/div>
&lt;/a>
&lt;a href="https://github.com/godotengine/godot-builds/releases/download/4.4-dev3/Godot_v4.4-dev3_mono_win64.zip" 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.4-dev3">
Export templates and other downloads
&lt;/a>
&lt;a class="card-download-donate" href="/donate/">
Make a Donation
&lt;/a>
&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;ul>
&lt;li>See also &lt;a href="https://docs.godotengine.org/en/latest/tutorials/scripting/c_sharp/index.html#c-platform-support">C# platform support&lt;/a>.&lt;/li>
&lt;/ul>
&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;ul>
&lt;li>“Attempting to use an uninitialized RID” error is printed when opening the editor (&lt;a href="https://github.com/godotengine/godot/issues/97694">GH-97694&lt;/a>). This is a harmless error, and should have no noticeable impact on your project.&lt;/li>
&lt;/ul>
&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 on 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>Pre-release</category><guid>https://godotengine.org/article/dev-snapshot-godot-4-4-dev-3/</guid><dc:creator>Clay John</dc:creator><pubDate>Thu, 03 Oct 2024 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/dev-snapshot-godot-4-4-dev-3.webp</image></item><item><title>Godot XR update - October 2024</title><link>https://godotengine.org/article/godot-xr-update-oct-2024/</link><description>&lt;p>It has been a very busy year on the XR front and seeing we haven’t given a proper update for well over a year, it’s time to look back at what has happened since our last update post.
We touched on some of these in the Godot 4.3 release blog but we’re doing a bit of a deep dive here.&lt;/p>
&lt;p>We’re planning on publishing more articles about XR in the near future. We recently &lt;a href="https://godotengine.org/article/godot-editor-horizon-store-early-access-release/">announced the XR editor&lt;/a> but we have more news on the way!&lt;/p>
&lt;h2 id="improvements-in-godots-xr-architecture">Improvements in Godot’s XR architecture&lt;/h2>
&lt;p>A lot of work has gone into improving the XR implementation in Godot.&lt;/p>
&lt;h3 id="improved-frame-timing-logic">Improved frame timing logic&lt;/h3>
&lt;p>When OpenXR was originally implemented in Godot 3 there were limitations on the order in which certain actions took place. Most of the communication with OpenXR was tied into the rendering engine resulting in Godot relying more on predictive algorithms to position tracked entities such as controllers. Originally Godot 4 inherited this approach.&lt;/p>
&lt;p>As part of the Godot 4.3 release much of this logic was redone to interface with OpenXR correctly. Godot now correctly informs OpenXR when it starts processing a new frame and obtains pose data for tracked entities with predicted positioning for the current frame.&lt;/p>
&lt;h3 id="preparing-to-support-rendering-on-a-separate-thread">Preparing to support rendering on a separate thread&lt;/h3>
&lt;p>As part of implementing the improved frame timing logic, we did a large cleanup of the XR code to make sure it runs properly when rendering happens on a separate thread. Especially for XR applications this brings us closer to ensuring a steady framerate, even on stand alone devices.&lt;/p>
&lt;p>There is more work that needs to be done in Godot 4.4 to make this fully viable but the foundations are in place.&lt;/p>
&lt;h3 id="standardisation-for-ar-and-passthrough">Standardisation for AR and passthrough&lt;/h3>
&lt;p>Passthrough is a mechanism where video cameras on a VR headset record the real world and present this real world view as the background inside of our HMD turning the headset into an AR device. Different headsets implement this feature in different ways and this caused difficulties for developers who were targeting multiple devices.&lt;/p>
&lt;p>While passthrough allows some neat things not possible with optical AR devices, for most AR focussed application developers should not be tasked with writing different code to support all these devices.&lt;/p>
&lt;p>We have thus standardized this approach through utilising OpenXRs environment blend modes and moving platforms specific code into the OpenXR vendors plugin.&lt;/p>
&lt;h3 id="standardisation-of-hand-face-and-body-tracking">Standardisation of hand, face and body tracking&lt;/h3>
&lt;p>Hand tracking has been supported in Godot for a long while now, however improvements have been made to ensure better cross platform support, including standardisation between OpenXR and WebXR. The &lt;code class="language-plaintext highlighter-rouge">OpenXRHand&lt;/code> node has been deprecated, in favour of the new &lt;code class="language-plaintext highlighter-rouge">XRHandModifier3D&lt;/code> node which is designed to work with any XR system - not just OpenXR.&lt;/p>
&lt;p>Face tracking support has been added with face tracking data being sourced from several devices. Godot now supports the Unified Expressions standard for handling face tracking data.&lt;/p>
&lt;p>Body tracking support has been added using Godots Humanoid Skeleton as a base which allows various body tracking devices to leverage Godots retargeting logic.&lt;/p>
&lt;p>While these 3 systems have been implemented under the XR name, their use cases are not limited to XR. Already several plugins have been created using this system to bring in body tracking data from various body tracking solutions ranging from optical Mocap to full body tracking suits.&lt;/p>
&lt;h3 id="improved-webxr-support">Improved WebXR support&lt;/h3>
&lt;p>WebXR support in Godot is seeing continuous improvement, most notably the addition of hand tracking support, but also support for MSAA and a number of smaller bug fixes and improvements.
Our WebXR implementation now also supports AR applications.&lt;/p>
&lt;h3 id="improved-opengl-support">Improved OpenGL support&lt;/h3>
&lt;p>While technically not specific to XR, several improvements to the compatibility renderer directly impact the ability to create XR experiences using Godot.&lt;/p>
&lt;p>The new MSAA implementation in the compatibility renderer has support for OpenGL extensions specifically targeting TBDR GPUs found on modern standalone headsets.
When available enabling MSAA 2x or 4x has a very low cost while providing worth while improvement in the visuals.&lt;/p>
&lt;p>The new lightmapping capabilities of the compatibility renderer, where the Vulkan implementation is leveraged to bake the lightmaps, provides a viable solution for improved lighting on standalone XR hardware.&lt;/p>
&lt;h3 id="improved-foveated-rendering-support-in-the-vulkan-engine">Improved foveated rendering support in the Vulkan engine&lt;/h3>
&lt;p>The compatibility renderer uses OpenXRs foveated rendering support directly but this comes with various limitations and is not applicable outside of OpenXR.&lt;/p>
&lt;p>In the Vulkan renderer we have had Variable Rate Shading support for a while which allows foveated rendering to be applied in Godot without the same drawbacks.&lt;/p>
&lt;p>In the latest release various improvements have been applied that provide more control over the density map used and allow for eye tracking to impact the density map and ensure quality rendering at the users focal point.&lt;/p>
&lt;h2 id="collaboration-between-w4-games--meta">Collaboration between W4 Games &amp;amp; Meta&lt;/h2>
&lt;p>The past year saw W4 Games and Meta join forces to improve Godot’s support for the Quest line of devices.&lt;/p>
&lt;h3 id="core-functionality-improvements">Core functionality improvements&lt;/h3>
&lt;p>The team at W4 has worked closely together with several core Godot XR contributors to improve the core functionality in Godot, improving the experience not just for Meta Quest users, but also for other XR systems. Several of the items mentioned in the previous sections benefited greatly from the help provided here.&lt;/p>
&lt;p>These improvements also include various rendering optimisations and fixes.&lt;/p>
&lt;h3 id="enhanced-passthrough-and-hand-tracking-support">Enhanced passthrough and hand-tracking support&lt;/h3>
&lt;p>On top of the standardisation of passthrough and hand-tracking in Godot, support for many extra features Meta provides was implemented in the &lt;a href="https://github.com/GodotVR/godot_openxr_vendors">Godot OpenXR Vendors plugin&lt;/a>.&lt;/p>
&lt;p>For passthrough, this includes applying various filters to the passthrough imagery, like adjusting the brightness, contrast and saturation, mapping the colors to other values, or even projecting passthrough onto custom geometry, in order to bring only specific objects from the user’s physical environment into an otherwise VR experience. See the &lt;a href="https://godotvr.github.io/godot_openxr_vendors/manual/meta/passthrough.html">Meta Passthrough tutorial&lt;/a> for more information.&lt;/p>
&lt;p>For hand-tracking, developers can now access hand meshes, collision shapes for the hands, and do some simple gesture tracking, like detecting pinches between the user’s thumb and any of the other fingers. See the &lt;a href="https://godotvr.github.io/godot_openxr_vendors/manual/meta/hand_tracking.html">Meta Hand Tracking tutorial&lt;/a> for the full details about these features.&lt;/p>
&lt;h3 id="composition-layer-support">Composition layer support&lt;/h3>
&lt;p>Composition layers are a standard feature in OpenXR, that allow developers to add floating “panels” (either flat or curved) that have 2D content rendered onto them from a Godot SubViewport.&lt;/p>
&lt;p>The result of this approach is far sharper detail of the 2D content compared to applying this same content as a texture on a 3D mesh.&lt;/p>
&lt;p>This is ideal for in game menus, media viewing, or heads up displays. Small text is especially more readable when using this technique.&lt;/p>
&lt;p>W4 Games added both the &lt;a href="https://docs.godotengine.org/en/latest/tutorials/xr/openxr_composition_layers.html">core implementation&lt;/a> and Meta-specific extensions, which allow applying further sharpening or supersampling, advanced alpha blending or marking particular composition layers as containing “secure content”. See the &lt;a href="https://godotvr.github.io/godot_openxr_vendors/manual/meta/composition_layers.html">Meta Composition Layers tutorial&lt;/a> for more information about these Meta-specific features.&lt;/p>
&lt;h3 id="scene-discovery-and-spatial-anchors">Scene discovery and spatial anchors&lt;/h3>
&lt;p>These two closely related features are possibly the most exciting part of the work done so far. Meta’s Scene Discovery allows the Quest to scan your environment and provide your game with information about the real world.&lt;/p>
&lt;p>This can allow you to place objects on your walls, on furniture, or have NPCs interact with the real environment.&lt;/p>
&lt;p>Spatial anchors allow you to make this persistent. Create a spatial anchor that references a place on your wall, and you can show a virtual screen there anytime your user comes back to your application.&lt;/p>
&lt;p>See the &lt;a href="https://godotvr.github.io/godot_openxr_vendors/manual/meta/scene_manager.html">Meta Scene Manager&lt;/a> and &lt;a href="https://godotvr.github.io/godot_openxr_vendors/manual/meta/spatial_anchors.html">Meta Spatial Anchors&lt;/a> tutorials for more information.&lt;/p>
&lt;h2 id="newimproved-platform-support">New/Improved platform support&lt;/h2>
&lt;h3 id="pico-4">PICO 4&lt;/h3>
&lt;p>Godot has had support for PICO headsets for while but in the past year improvements were made to this. PICO has fully adopted the official Khronos Android Loader for OpenXR and deprecated their custom loader. Godot fully supports the new approach.&lt;/p>
&lt;h3 id="htc-focus-3-and-xr-elite">HTC Focus 3 and XR Elite&lt;/h3>
&lt;p>HTC provided the team with HTC Vive XR Elite units allowing us to ensure Godot runs on HTC standalone devices. We’re also working together with HTC to improve the experience on these devices.&lt;/p>
&lt;h3 id="magic-leap-2">Magic Leap 2&lt;/h3>
&lt;p>Support for the Magic Leap ecosystem was recently added to the vendor plugin as well. Magic Leap stands apart from other standalone Android devices being an optical AR device and running AMD hardware. On these devices you need to use the Vulkan mobile renderer.&lt;/p>
&lt;h3 id="qualcomm-spaces">Qualcomm spaces&lt;/h3>
&lt;p>This is still under development, we’re supporting Qualcomm’s OpenXR runtime on the Lynx R1 but we’re looking into supporting more devices in this eco system. Watch this space.&lt;/p>
&lt;h3 id="logitech-mx-ink">Logitech MX Ink&lt;/h3>
&lt;p>Not a new headset, but a pheripheral, the MX ink is a positionally tracked stylus that can be used with a Meta Quest.
Support was merged into master recently and this device will be supported in the upcoming Godot 4.4 release.
We’re looking into supporting this in a future 4.3 patch release.&lt;/p>
&lt;h2 id="whats-next">What’s next&lt;/h2>
&lt;p>Stay tuned for further blog posts focusing on XR as we start looking ahead and as new features become available.&lt;/p></description><category>Progress Report</category><guid>https://godotengine.org/article/godot-xr-update-oct-2024/</guid><dc:creator>Bastiaan Olij</dc:creator><pubDate>Wed, 02 Oct 2024 12:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/october-2024-xr-progress-update.webp</image></item><item><title>Godot SDK Integrations</title><link>https://godotengine.org/article/godot-sdk-integrations/</link><description>&lt;h3 id="third-party-services-sdks-and-their-circumstances">Third party services SDKs and their circumstances&lt;/h3>
&lt;p>Developing and publishing games often involves relying on third-party services, middleware, or platforms. Numerous vendors offer commercial products like advertising networks, backend services, sound engines, user authentication, and more. These tools simplify the process of monetization, expanding player reach, storing data on servers, and performing other functions beyond what a game engine typically provides.&lt;/p>
&lt;p>To facilitate integration, these vendors often supply SDKs tailored for specific game engines, allowing developers to easily install them and interact with their products.&lt;/p>
&lt;p>Godot, while rapidly growing in popularity, is still relatively a newcomer. As such, while some vendors are beginning to support the engine, many others have not yet invested on it, given the necessary development and maintenance costs.&lt;/p>
&lt;p>For some, this is due to the significant resources required (finding the right developers to hire to make the SDKs), while for others, it’s simply a matter of being unaware of Godot’s growing market or dealing with internal bureaucracy that slows down the process of supporting the engine.&lt;/p>
&lt;p>As the Godot Foundation is committed to using donations solely for creating &lt;abbr title="Free and Open Source Software">FOSS&lt;/abbr> and prioritizing open standards, it does not allocate resources from the general pool of donations to integrate proprietary SDKs into the engine.&lt;/p>
&lt;p>While officially incorporating monetization SDKs into Godot might not align with the project’s goals, for example, there is still a widely recognized need within the community for such support to help developers make a living. As there is a need for many other SDKs.&lt;/p>
&lt;h3 id="community-to-the-rescue">Community to the rescue&lt;/h3>
&lt;p>To tackle this challenge, many in the Godot community have taken matters into their own hands, developing proper integrations for third-party services. Talented developers have done an incredible job to bring the most popular services into Godot, enabling the community to publish games on their desired platforms using the necessary third-party tools.&lt;/p>
&lt;p>However, this approach still presents several issues for the community:&lt;/p>
&lt;ul>
&lt;li>Not everyone is committed to creating and maintaining a full SDK integration. Often, developers only implement the features they need for their specific game.&lt;/li>
&lt;li>Developers may not have the time or inclination to support other users’ issues as long as their integration works for their project. Likewise, they may not continue developing the integration after their project has been published.&lt;/li>
&lt;li>As a result this means that, over time, multiple forks of the same integration can be found on GitHub, maintained by different individuals who needed it at different times, leading to fragmentation.&lt;/li>
&lt;/ul>
&lt;p>Adding to this, some vendors who provide SDKs for other game engines have expressed interested in supporting Godot but are not ready to allocate internal resources to develop an integration due to costs or other constraints. They might be willing to donate their integration (or donate the money to do an integration) to the Godot Foundation and collaborate with the community.&lt;/p>
&lt;p>While this is amazing, the Foundation doesn’t want to become responsible for maintaining such integrations using general funds once the specific donation runs out.&lt;/p>
&lt;h3 id="the-godot-engine-community-sdk-integrations-github-organization">The Godot Engine Community SDK Integrations GitHub organization&lt;/h3>
&lt;p>After extensive discussions with the community and various vendors, the Godot Foundation has decided to maintain its stance on not directly developing SDKs. However, recognizing the need for a more organized approach, the Foundation has established an official centralized GitHub organization for hosting SDK integrations, thereby encouraging community contributions.&lt;/p>
&lt;p>This organization eases the burden on developers who create their own SDK bindings, as they will now be able to accept contributions without bearing the sole responsibility for maintaining the integration. It also provides a clear and official platform for companies that wish to donate their SDK integrations, offering a centralized location for these contributions.&lt;/p>
&lt;p>The new &lt;a href="https://github.com/godot-sdk-integrations">&lt;strong>Godot SDK Integrations&lt;/strong>&lt;/a> organization has its own GitHub page already. Developers who have been working on SDK integrations are invited to move their work here, if they desire so. You can join the new &lt;a href="https://chat.godotengine.org/channel/sdk-integrations">&lt;code class="language-plaintext highlighter-rouge">sdk-integrations&lt;/code> channel&lt;/a> to discuss this transfer.&lt;/p>
&lt;p>Likewise, vendors interested in donating integrations for their first-party SDKs are also welcome to move them to this new organization, if they deem it preferable to hosting SDKs themselves. Please contact the &lt;a href="https://godot.foundation/">Godot Foundation&lt;/a> in order to make arrangements. Likewise, if you would like to finance the development of Godot integrations for your SDKs, the Godot Foundation can help facilitate contacts with trusted community maintainers or companies who can take on such work.&lt;/p>
&lt;p>Please note that this organization is a public space for centralizing SDK integration efforts and collecting repositories. The Foundation will not manage or update the integrations, so ongoing development will depend on the community and vendor contributions. This initiative is intended to be a collective effort.&lt;/p>
&lt;h3 id="contributing-to-the-godot-sdk-integrations-organization">Contributing to the Godot SDK Integrations organization&lt;/h3>
&lt;p>As we mentioned, the Godot Foundation is hosting this new space, but doesn’t intend to spend its resources on maintaining it.&lt;/p>
&lt;p>We are therefore calling for motivated community members to get in touch and help organize the structure of this new organization, and help support developers and vendors who want to provide new SDK integrations for Godot.&lt;/p>
&lt;p>Aside from the actual work of developing and maintaining SDK integrations, we foresee the need for contributors with a production profile who can help write common contribution guidelines, instructions on how to “recruit” new maintainers, or generally ensure some quality and fitness for purpose of the various SDKs offered by and to the community.&lt;/p>
&lt;p>For the time being, we are going to discuss and organize the work of this community organization on the &lt;a href="https://chat.godotengine.org/channel/sdk-integrations">&lt;code class="language-plaintext highlighter-rouge">#sdk-integrations&lt;/code> channel&lt;/a> of the &lt;a href="https://chat.godotengine.org/">Godot Contributors Chat&lt;/a>. See you there!&lt;/p></description><category>News</category><guid>https://godotengine.org/article/godot-sdk-integrations/</guid><dc:creator>Godot Foundation</dc:creator><pubDate>Tue, 24 Sep 2024 14:30:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/godot-sdk-integrations.webp</image></item><item><title>Godot Rendering Priorities: September 2024</title><link>https://godotengine.org/article/rendering-priorities-september-2024/</link><description>&lt;p>It’s time again to update everyone on the activities of the rendering team. We have been hard at work fixing countless bugs and improving the renderer. Now that 4.3 is out, we have taken the chance to re-assess our priorities.&lt;/p>
&lt;h2 id="get-involved">Get Involved&lt;/h2>
&lt;p>As a reminder, we are always in need of more help. The rendering team is very small and none of us are working on the renderer full-time. If you are interested in helping out, please consider joining the #rendering channel on &lt;a href="https://chat.godotengine.org">chat.godotengine.org&lt;/a>, joining the weekly meetings that place, or just opening a pull request!&lt;/p>
&lt;p>In addition to the priorities listed here, you can get started contributing by fixing bugs. We have been categorizing bugs by complexity and priority in the new &lt;a href="https://github.com/orgs/godotengine/projects/78">Rendering Issue triage project&lt;/a> to make it easier for new contributors to discover bugs that need attention.&lt;/p>
&lt;p>For a less organized overview on rendering priorities, you can also check out the &lt;a href="https://github.com/orgs/godotengine/projects/33">4.x Rendering Roadmap Github project&lt;/a>. This project lists a lot of the long term tasks we would like to do that don’t fit nicely in bug reports or in the blog post format. If you are performance-minded, there are also plenty of potential performance optimizations described in that project.&lt;/p>
&lt;h2 id="update-on-previous-priorities-and-43">Update on Previous Priorities and 4.3&lt;/h2>
&lt;p>The below are the priorities we identified in the last rendering priorities blog post. Some of these come from earlier blog posts as well. We are happy to report that almost all priorities from the previous posts are either finished, or ready to merge.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Background pipeline compilation + Proper multi-threading in the RenderingDevice (&lt;a href="https://github.com/godotengine/godot/pull/90400">GH-90400&lt;/a>) (Ready to merge)&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>This work was finished during the 4.3 dev cycle, but we deferred merging it to 4.4 because of its size and complexity. As a reminder, this PR implements the concept of an “ubershader” which is basically a version of the shader that contains all features and is compiled at load time. We pair the ubershader with the ability to compile specialized shader pipelines in the background. This way when we draw a new object, instead of freezing and waiting for the pipeline to compile, we fallback on the ubershader and compile the specialized shader in the background.&lt;/p>
&lt;p>The early results are very promising. We are seeing reduced load times for large games as well as a reduction in shader pipeline compilation stutter when objects are seen for the first time. In fact, so far we are seeing no shader pipeline compilation stutters at run-time.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>BUGS (in progress, always)&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>We fixed over &lt;a href="https://github.com/godotengine/godot/pulls?q=is%3Apr+is%3Aclosed+label%3Atopic%3Arendering%2Ctopic%3Ashaders%2Ctopic%3Aparticles+label%3Abug+milestone%3A4.3">300&lt;/a> rendering related bugs in 4.3! We expect to fix a few hundred more in 4.4 :)&lt;/p>
&lt;ul>
&lt;li>&lt;strong>GL Compatibility renderer - 3D (Done)&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>We merged support for MSAA, LightmapGI (including baking), resolution scaling, glow, ReflectionProbes, post process adjustments and color correction in time for 4.3. At this point we consider the Compatibility renderer feature complete which means it now has all the features we planned for it when we first designed the renderer. We will continue adding some new features to achieve closer parity with the Mobile renderer, but new features will have less of a priority now.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>D3D12 rendering driver (&lt;a href="https://github.com/godotengine/godot/pull/70315">GH-70315&lt;/a>) (Done)&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>This was merged early in the 4.3 release cycle, but was improved steadily throughout the release cycle. The D3D12 rendering driver is now available for widespread use. This is especially important for ARM64 Windows devices which don’t support OpenGL or Vulkan.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>RenderingDeviceDriver refactor (&lt;a href="https://github.com/godotengine/godot/pull/83452">GH-83452&lt;/a>) (Done)&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>This was very important foundational work that has allowed us to simplify our rendering code and ease the future maintenance burden as we port to more rendering backends.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Acyclic render graph optimization (&lt;a href="https://github.com/godotengine/godot/pull/84976">GH-84976&lt;/a>) (Done)&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>As expected we merged the new Acyclic Render graph in 4.3. It significantly improved stability of the engine and resolved many hard to fix errors as well as moderately improved performance. To read more see the &lt;a href="https://godotengine.org/article/rendering-acyclic-graph/">blog post&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Compositor Effects (Rendering Hooks) (&lt;a href="https://github.com/godotengine/godot/pull/80214">GH-80214&lt;/a>) (Done)&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>The new CompositorEffects API allows you to register callbacks that will be called in the middle of the rendering process. This lets you insert custom RenderingDevice commands in the middle of the render frame to customize rendering.&lt;/p>
&lt;p>Right now the API is functional and exposes almost all internal render state so you can access all the intermediate information.&lt;/p>
&lt;p>There is already an &lt;a href="https://github.com/godotengine/godot-demo-projects/tree/master/compute/post_shader">official demo&lt;/a> so you can see how it works!&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Metal rendering driver &lt;a href="https://github.com/godotengine/godot/pull/88199">GH-88199&lt;/a> (Merged for 4.4)&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>This was a work in progress for much of the 4.3 release cycle and was finished slightly too late to include in 4.3. We merged it immediately for 4.4 so we can get widespread testing before release. It’s ready to try in &lt;a href="https://godotengine.org/article/dev-snapshot-godot-4-4-dev-1/">4.4-dev1&lt;/a> or later releases.&lt;/p>
&lt;p>Metal enhances both performance and stability on Apple silicon devices. Please test it out and let us know if you run into any issues!&lt;/p>
&lt;ul>
&lt;li>&lt;strong>SDFGI refactor / HDDAGI (&lt;a href="https://github.com/godotengine/godot/pull/86267">GH-86267&lt;/a>) (In progress)&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>This is still a work in progress, but results are already quite good. Both performance and quality are better than SDFGI. Juan still has many ideas he wants to apply, so this work may continue for some time before it is ready.&lt;/p>
&lt;h2 id="new-priorities">New Priorities&lt;/h2>
&lt;p>We have completed almost all of our previous priorities, so now we get to set out new goals for the next few release cycles. Right now rendering contributors are most excited about two things:&lt;/p>
&lt;ul>
&lt;li>Unblocking advanced users (especially for advanced VFX).&lt;/li>
&lt;li>Improving performance.&lt;/li>
&lt;/ul>
&lt;p>These are rising to the top of the priority list as Godot becomes increasingly stable and the core user-experience feels quite good.&lt;/p>
&lt;p>In particular the following are areas where you can expect to see changes in the next couple of releases. Bear in mind that we don’t have dedicated people working on any of these priorities. If you are interested in contributing, please consider contributing in one of these areas.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Performance&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Performance is our number one priority. Now that Godot 4 has been out for over a year we are seeing more games releasing with Godot and users are starting to create bigger and higher-fidelity games. A natural consequence is that Godot’s renderer is starting to become a limiting factor for some users. Accordingly, it’s time for us to prioritize speed and to start implementing all the optimizations we have been putting off for later. You can find a list of a number of them listed in our &lt;a href="https://github.com/orgs/godotengine/projects/33">4.x Rendering Roadmap Github project&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Lightmapping improvements&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>We have had a lot of recurring requests to improve the quality and ease-of-use of LightmapGI. So far in 4.4 we have had a few major improvements (including &lt;a href="https://godotengine.org/article/dev-snapshot-godot-4-4-dev-1/#lightmap-bicubic-sampling">bicubic sampling&lt;/a> and a &lt;a href="https://godotengine.org/article/dev-snapshot-godot-4-4-dev-1/#betsy-texture-compressor">GPU-based texture compressor&lt;/a>), but there is a lot of work still to do to ensure that baking and using LightmapGI is as seamless as possible.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Improving VFX workflow&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Godot 4 has brought many quality of life features to particles like &lt;a href="https://godotengine.org/article/progress-report-state-of-particles/">animated velocities&lt;/a> and &lt;a href="https://github.com/godotengine/godot/pull/55387">turbulence&lt;/a>. However, particles still fall short in term of the broader workflow. VFX artists have to come up with their own structure for VFX (often script + animation player), figure out ways to check timings of their effects outside the engine (using screen capture software, for example), modify billboarding logic manually when moving to custom particle shaders, and so on. Despite improvements to the flexibility of the engine, artists still need advanced technical knowledge to do many things (like writing post-processing effects with the new CompositorEffect API).&lt;/p>
&lt;p>We still have a lot of work to make Godot more accessible for people that are less interested in learning shaders or programming but still want juicy effects and immersive environments in their games.&lt;/p>
&lt;p>If you want to help, there are plenty of things to do. From helping by gathering knowledge and evaluating solutions from multiple perspectives, to implementing agreed &lt;a href="https://github.com/orgs/godotengine/projects/54/views/6">new features and bug fixes&lt;/a>, finally, by joining us in the &lt;a href="https://discord.gg/HX4xAGaGjm">VFX Discord server&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Customized rendering&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>As Godot adoption increases, it is being used for more niche and specialized projects. However, we can’t provide everything that every user needs out of the box without becoming bloated, slow, and hard to use. So we need to provide more tools to customize rendering for projects that need more specialized effects. We started that process in 4.3 with the &lt;a href="https://docs.godotengine.org/en/latest/classes/class_compositoreffect.html">CompositorEffects API&lt;/a>. We want to continue that effort by implementing more things in the Compositor API to allow users to &lt;a href="https://github.com/godotengine/godot-proposals/issues/7916">control the order of rendering&lt;/a>, override &lt;a href="https://github.com/godotengine/godot-proposals/issues/8366">shader templates&lt;/a>, etc.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Significantly improve screen-space effects (SSAO, SSIL, SSR, SSS)&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>All of the screen-space effects in Godot 4 were designed to run without using temporal reprojection for 2 reasons: 1) we didn’t want to force anyone to enable TAA in order to have a good looking game and 2) we didn’t properly calculate motion vectors for moving objects until Godot 4.2. Temporal reprojection allows us to make our effects much higher quality for a lower base performance cost.&lt;/p>
&lt;p>Now that we have proper motion vectors, we want to provide versions of all the screen-space effects that take advantage of motion vectors to increase their quality and reduce performance cost.&lt;/p>
&lt;p>We still won’t require TAA for any of the built-in effects as we want users to be able to choose whether to enable TAA or not, but we will likely use temporal reprojection by default for most of these effects.&lt;/p>
&lt;p>This is an area that is really easy to contribute to if you are already familiar with rendering but want to get more familiar with Godot!&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 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/rendering-priorities-september-2024/</guid><dc:creator>Clay John</dc:creator><pubDate>Mon, 23 Sep 2024 15:45:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/rendering-priorities-september-2024.webp</image></item><item><title>Godot Editor on the Meta Horizon Store</title><link>https://godotengine.org/article/godot-editor-horizon-store-early-access-release/</link><description>&lt;p>A year ago, I &lt;a href="https://godotengine.org/article/android_godot_editor_play_store_beta_release/">introduced the Android port of the Godot Editor&lt;/a>. To date, it has had over &lt;a href="https://play.google.com/store/apps/details?id=org.godotengine.editor.v4">500K+ downloads on the Google Play store&lt;/a>, and has enabled developers to create and develop Godot apps and games using Android tablets, foldables and phones. Since then we have been hard at work refining the experience, improving the development workflow via picture-in-picture (PiP) support, providing the ability to build and export Godot binaries, and improving the Editor performance and reliability.&lt;/p>
&lt;p>Building on that foundation, and thanks to the &lt;a href="https://godotengine.org/article/godot-engine-receiving-new-grant-meta-reality-labs/">Meta grants&lt;/a> in support of that work and with help from &lt;a href="https://www.w4games.com/">W4 Games&lt;/a>, I was able to complete the proof of concept started by &lt;a href="https://github.com/BastiaanOlij">Bastiaan Olij&lt;/a> a couple years ago, to add support for using the Android editor in an XR context using Godot’s first class &lt;a href="https://www.khronos.org/openxr/">OpenXR&lt;/a> integration!&lt;/p>
&lt;p>Today, I am proud to release the &lt;strong>first mobile XR port&lt;/strong> of the Godot Editor on Meta Quest devices!&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.meta.com/experiences/godot-game-engine/7713660705416473/">https://www.meta.com/experiences/godot-game-engine/7713660705416473/&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Godot Editor is &lt;a href="https://www.meta.com/experiences/godot-game-engine/7713660705416473/">now available on the Horizon Store&lt;/a> for &lt;strong>Meta Quest 3&lt;/strong> &amp;amp; &lt;strong>Meta Quest Pro&lt;/strong> devices running &lt;a href="https://www.meta.com/blog/quest/meta-horizon-os-open-hardware-ecosystem-asus-republic-gamers-lenovo-xbox/">Horizon OS&lt;/a> &lt;strong>version 69 or higher&lt;/strong>.&lt;/p>
&lt;p>This is an early access version of the Godot Editor running natively on Meta Quest devices, enabling the creation and development of 2D, 3D and &lt;strong>immersive XR&lt;/strong> apps and games directly on device without the need for an external computer.&lt;/p>
&lt;p>As usual, this work is entirely &lt;strong>free and open source&lt;/strong>, and already merged in Godot 4.4’s development branch (&lt;a href="https://github.com/godotengine/godot/pull/96624">GH-96624&lt;/a>). The version we publish on the Horizon Store can also be downloaded as an APK directly &lt;a href="/download/preview/">from the Godot website&lt;/a>.&lt;/p>
&lt;h2 id="features--highlights">Features &amp;amp; Highlights&lt;/h2>
&lt;p>This version of the Godot Editor is a &lt;strong>Hybrid App&lt;/strong> with the ability to open and transition back and forth between multiple &lt;strong>panel&lt;/strong> (2D) and &lt;strong>immersive&lt;/strong> (XR) windows. This is used to support the Editor features as described below.&lt;/p>
&lt;h3 id="access-to-all-godot-engine-capabilities">Access to all Godot Engine capabilities&lt;/h3>
&lt;p>&lt;img src="/storage/blog/godot-editor-horizon-store-early-access-release/project_manager_panel.webp" alt="Project Manager panel in Horizon OS" />&lt;/p>
&lt;p>&lt;img src="/storage/blog/godot-editor-horizon-store-early-access-release/main_editor_panel.webp" alt="Main Editor panel in Horizon OS" />&lt;/p>
&lt;p>The &lt;a href="https://docs.godotengine.org/en/stable/getting_started/introduction/first_look_at_the_editor.html#the-project-manager">Project Manager&lt;/a> and the main &lt;a href="https://docs.godotengine.org/en/stable/getting_started/introduction/first_look_at_the_editor.html#id1">Editor&lt;/a> are rendered into panel windows as done on desktop and Android platforms. This makes the Editor readily available and usable either in the Home environment or overlaid onto a XR experience.&lt;/p>
&lt;p>This approach allows us to deliver on a core tenet of this port which is to provide developers with a familiar development interface and access to the full set of capabilities and features that the Godot Editor provides on desktop and Android platforms. This includes access to the &lt;a href="https://godotengine.org/asset-library/asset">asset library&lt;/a>, &lt;a href="https://docs.godotengine.org/en/stable/tutorials/editor/default_key_mapping.html">keyboard &amp;amp; mouse shortcuts&lt;/a>, &lt;a href="https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html">GDScript&lt;/a> code editing / highlighting / completion support, access to the &lt;a href="https://docs.godotengine.org/en/stable/classes/index.html">documentation&lt;/a>, live scene editing, live script reloading support, &lt;a href="https://docs.godotengine.org/en/stable/tutorials/scripting/debug/overview_of_debugging_tools.html">live debugging&lt;/a>, &lt;a href="https://docs.godotengine.org/en/stable/tutorials/scripting/debug/the_profiler.html">live profiling&lt;/a> and &lt;a href="https://godotengine.org/features/">many more&lt;/a>!&lt;/p>
&lt;h3 id="developing-xr-apps-and-games">Developing XR apps and games!&lt;/h3>
&lt;video autoplay="" loop="" muted="" playsinline="" title="Showcasing support for developing XR projects">
&lt;source src="/storage/blog/godot-editor-horizon-store-early-access-release/developing_xr_game.mp4?1" type="video/mp4" />
&lt;/video>
&lt;p>When developing a XR project, the immersive (XR) window is used for playtesting the project directly in the device as if it was a released app already. In that mode, the Editor panel can be summoned as an interactive overlay, which allows the developer to iterate, debug or profile the XR project while it’s running.&lt;/p>
&lt;p>Support for exporting XR project binaries will be made available via a plugin.&lt;/p>
&lt;h3 id="developing-2d-and-3d-apps-and-games">Developing 2D and 3D apps and games!&lt;/h3>
&lt;video autoplay="" loop="" muted="" playsinline="" title="Showcasing support for developing 2D and 3D projects">
&lt;source src="/storage/blog/godot-editor-horizon-store-early-access-release/developing_3d_game_2.mp4?1" type="video/mp4" />
&lt;/video>
&lt;p>Support for creating and developing 2D and 3D apps and games is available out of the box.&lt;/p>
&lt;p>The experience is improved by leveraging the Android editor’s multi-panel capability which on Horizon OS allows to playtest the project in a new panel next to the Editor panel. This allows the Editor to remain accessible for iterating, debugging or profiling the project in real-time.&lt;/p>
&lt;p>As with the Android editor, this version provides the ability to export 2D &amp;amp; 3D project binaries for all supported platforms.&lt;/p>
&lt;h3 id="leveraging-horizon-os-platform-capabilities">Leveraging Horizon OS platform capabilities&lt;/h3>
&lt;h4 id="support-for-keyboard-and-mouse">Support for keyboard and mouse&lt;/h4>
&lt;p>&lt;a href="https://www.meta.com/help/quest/articles/headsets-and-accessories/meta-quest-accessories/tracked-keyboards-meta-quest/">External keyboard and mouse support&lt;/a> allows developers to achieve the same levels of productivity as they do on desktop and laptop computers.&lt;/p>
&lt;p>Virtual keyboard, touch controllers and &lt;a href="https://www.meta.com/help/quest/articles/getting-started/getting-started-with-quest-3/direct-touch-meta-quest/">direct touch&lt;/a> are also supported for quick interactions, or when physical keyboard and mouse devices are not readily available.&lt;/p>
&lt;h4 id="seamless-multitasking">Seamless multitasking&lt;/h4>
&lt;video autoplay="" loop="" muted="" playsinline="" title="Using Meta Quest seamless multitasking to modify XR game in real-time">
&lt;source src="/storage/blog/godot-editor-horizon-store-early-access-release/xr_game_live_modifications.mp4?1" type="video/mp4" />
&lt;/video>
&lt;p>&lt;a href="https://www.uploadvr.com/seamless-multitasking-experimental-quest/">Introduced in Horizon OS v69&lt;/a>, seamless multitasking enables the Editor panel to be visible and interactable while playtesting a XR project in virtual space.&lt;/p>
&lt;p>This gives developers the ability to do live editing, debugging or profiling of XR projects in real-time, with the benefit of the depth cues and sense of scale unique to XR.&lt;/p>
&lt;h4 id="panel-resizing--theater-view-support">Panel Resizing &amp;amp; Theater View support&lt;/h4>
&lt;p>The Editor panel can be resized at will via drag and drop to fit the developer’s needs.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="Resizing the Editor panel">
&lt;source src="/storage/blog/godot-editor-horizon-store-early-access-release/resizing_editor_panel.mp4?1" type="video/mp4" />
&lt;/video>
&lt;p>Using the &lt;a href="https://www.meta.com/blog/quest/meta-quest-v67-update-new-window-layout-creator-content-horizon-feed/">Theater View button&lt;/a>, developers can maximize the Editor panel and bring it front-and-center.&lt;/p>
&lt;video autoplay="" loop="" muted="" playsinline="" title="Maximizing the Editor panel into the Theater View">
&lt;source src="/storage/blog/godot-editor-horizon-store-early-access-release/maximize_editor_in_theater_view.mp4?1" type="video/mp4" />
&lt;/video>
&lt;h2 id="an-important-step-for-the-xr--game-communities">An important step for the XR &amp;amp; Game communities&lt;/h2>
&lt;p>Besides the technical achievements required to make this port feasible, we believe this is a significant milestone as it impacts the XR &amp;amp; Game community in a few but critical ways:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Turns the Meta Quest into a true Spatial Computer&lt;/strong>
&lt;ul>
&lt;li>The Meta Quest gains the ability to create (and distribute) its own native apps without the need for a PC or laptop computer!&lt;/li>
&lt;li>Being able to run a full game engine on a mobile XR device should serve as inspiration for the type of apps that can be brought to the mobile XR ecosystem.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Grows the OpenXR ecosystem by providing a seed for building feature rich apps&lt;/strong>
&lt;ul>
&lt;li>Godot Engine is a free and open-source software (&lt;a href="https://en.m.wikipedia.org/wiki/Free_and_open-source_software">FOSS&lt;/a>) project which means that, in partnership with the &lt;a href="https://godot.foundation/">Godot Foundation&lt;/a>, OpenXR vendors can bring similar capabilities to their devices to grow the OpenXR ecosystem.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Reduces XR development friction&lt;/strong>
&lt;ul>
&lt;li>XR development on PC and laptop devices has significant friction due to the need to switch back and forth between the development device and the target XR device (i.e. taking the headset off for development, putting back on for playtesting).&lt;/li>
&lt;li>This is not an issue when using the Godot Editor natively on XR devices since the development and target device are now the same device!&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Lowers the barrier of entry for XR and Game development&lt;/strong>
&lt;ul>
&lt;li>This version of the Godot Editor turns devices like the Meta Quest into an easily accessible development device with the ability to natively create, develop and export 2D, 3D or XR apps and games for all Godot-supported platforms.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Provides a more flexible development experience&lt;/strong>
&lt;ul>
&lt;li>Developers can leverage the virtual space to gain more screen estate than a laptop could provide.&lt;/li>
&lt;li>The &lt;a href="https://www.meta.com/blog/quest/meta-quest-v67-update-new-window-layout-creator-content-horizon-feed/">virtual floating panels&lt;/a> provide a more flexible layout than a traditional desktop + multi-monitors setup.&lt;/li>
&lt;li>The ability to playtest and modify XR projects in-headset in real-time is a capability that can’t be replicated on PC and laptop computers.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="next-steps-feedback--contributions">Next Steps, Feedback &amp;amp; Contributions&lt;/h2>
&lt;p>This is only the beginning!&lt;/p>
&lt;p>As mentioned in the previous section, we believe this is an important milestone for the XR, GameDev, and Open Source communities and we aim to build on this foundation to make Godot Engine a powerful, flexible and cross-platform tool for XR and Game development.&lt;/p>
&lt;p>To that end, we welcome feedback and contributions from partners, members of the community and interested parties.&lt;/p></description><category>Pre-release</category><guid>https://godotengine.org/article/godot-editor-horizon-store-early-access-release/</guid><dc:creator>Fredia Huya-Kouadio</dc:creator><pubDate>Fri, 20 Sep 2024 16:00:00 +0000</pubDate><image>https://godotengine.org/storage/blog/covers/godot-editor-horizon-store-early-access-release.webp</image></item></channel></rss>