Files
godot-website/article/godot-xr-update-feb-2025/index.html
2025-03-14 11:43:18 +00:00

15 lines
26 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html><html lang=en><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Godot Engine"><meta name=description content="New plugin releases for Godot XR."><script defer data-domain=godotengine.org src=https://plausible.godot.foundation/js/script.file-downloads.outbound-links.js></script><meta property="og:site_name" content="Godot Engine"><meta property="og:url" content="https://godotengine.org/article/godot-xr-update-feb-2025/"><meta property="og:type" content="website"><meta property="og:description" content="New plugin releases for Godot XR."><meta property="og:image" content="https://godotengine.org/storage/blog/covers/february-2025-update-godot-xr-community.webp"><meta name=twitter:card content="summary_large_image"><meta property="twitter:domain" content="godotengine.org"><meta property="twitter:url" content="https://godotengine.org/article/godot-xr-update-feb-2025/"><meta property="og:title" content="Godot XR update - February 2025 Godot Engine"><title>Godot XR update - February 2025 Godot Engine</title>
<link rel=alternate type=application/rss+xml title="Godot News" href=/rss.xml><link rel=alternate type=application/json title="Godot News" href=/rss.json><link rel=alternate type=application/atom+xml title="Godot News" href=/atom.xml><link rel=icon href=/assets/favicon.png sizes=any><link rel=icon href=/assets/favicon.svg type=image/svg+xml><link rel=stylesheet href=/assets/css/main.css?121><link rel=stylesheet href=/assets/css/header.css?1><link rel=stylesheet href=/assets/css/tobii.min.css><link rel=preload as=font href=/assets/fonts/Montserrat-Italic-VariableFont_wght.woff2 crossorigin><link rel=preload as=font href=/assets/fonts/Montserrat-VariableFont_wght.woff2 crossorigin><link rel=me href=https://mastodon.gamedev.place/@godotengine><input type=checkbox id=nav_toggle_cb><header class="flex column"><div class="container flex align-center"><div id=nav_head><a href=/ id=logo-link><img class=nav-logo src=/assets/logo.svg width=136 height=48 alt="Godot Engine">
<img class="nav-logo dark-logo" src=/assets/logo_dark.svg width=136 height=48 alt="Godot Engine"></a><div class=mobile-links><span class="fund mobile"><a href=https://fund.godotengine.org><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width:13px;fill:#fff;margin-right:4px"><path d="M47.6 300.4 228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6.0 115.2.0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z"/></svg> Donate</a></span>
<label for=nav_toggle_cb id=nav_toggle_btn><img src=/assets/icons/hamburger.svg width=24 height=24 alt="Main menu"></label></div></div><nav id=nav><ul class=left><li><a href=/features/>Features</a><li><a href=/showcase/>Showcase</a><li><a href=/blog/>Blog</a><li><a href=/community/>Community</a><li><a href=https://godotengine.org/asset-library/asset>Assets</a></ul><ul class=right><li><a href=/download/windows/ class=set-os-download-url>Download</a><li><a href=https://docs.godotengine.org>Docs</a><li><a href=https://docs.godotengine.org/en/stable/contributing/how_to_contribute.html>Contribute</a><li class="fund desktop"><a href=https://fund.godotengine.org><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width:13px;fill:#fff;margin-right:4px;top:1px;position:relative"><path d="M47.6 300.4 228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6.0 115.2.0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z"/></svg> Donate</a></ul></nav></div></header><script>document.addEventListener("click",function(e){const t=document.querySelector(".language-selector");if(!t)return;t.contains(e.target)||t.classList.remove("open")});function setLanguagePreference(e,t){e.preventDefault();const s=t.getAttribute("data-lang-path"),o=t.getAttribute("data-lang"),n=new Date;n.setDate(n.getDate()+365),document.cookie=`preferred_language=${o}; expires=${n.toUTCString()}; path=/; SameSite=Lax`,window.location.href=s}</script><main><style>body{background-color:var(--background-color)}h1{margin-bottom:8px;margin-top:32px}:not(pre)>code{background:var(--code-background-color);padding:1px 4px;font-size:.95em;border-radius:3px}pre{background:var(--codeblock-background-color);color:var(--codeblock-color)}pre code{display:block;overflow-x:auto;padding:.5em}.date-big{line-height:2;margin-left:32px}article{background-color:var(--base-color);box-shadow:0 3px 2px rgba(0,0,0,.15)}figure{margin:0}figure img{margin:0}article img,article video{max-width:100%;height:auto;display:block;margin:auto;margin-top:16px;margin-bottom:16px}article h1{margin-top:64px}article h2,article h3,article h4{margin-top:42px}.article-info{display:flex;flex-direction:column;gap:8px}.article-metadata{display:flex;gap:24px;align-items:center;font-family:var(--header-font-family);margin-bottom:12px}@media(max-width:900px){.article-metadata{flex-direction:column;align-items:flex-start;gap:16px}}.article-author{color:var(--base-color-text-subtitle-date);font-weight:700;font-size:18px;flex-grow:1;display:flex;gap:12px;align-items:center}.article-author .avatar{border-radius:100%;margin:0;background:0 0}.article-author .by{color:var(--base-color-text-subtitle)}.article-metadata .date{color:var(--base-color-text-subtitle-date)}.article-metadata .date.post-recent-highlight{color:var(--post-recent-highlight-color);opacity:.8}.article-metadata .date.post-recent-highlight::after{font-size:80%;content:"NEW";border:2px solid var(--post-recent-highlight-color);padding:2px 3px;margin-left:8px}.tag.active{filter:saturate(.75)}@media screen and (min-width:900px){article .content{width:70%;margin:auto}}@media(max-width:900px){body{background-color:var(--base-color)}article{background-color:initial;box-shadow:none}article img:first-child,article video:first-child{max-width:100%}}.blog-navigation{display:grid;grid-template-columns:1fr 1fr;padding-top:30px;padding-bottom:60px}.blog-navigation .next{text-align:right}@media(max-width:900px){.blog-navigation{grid-template-columns:1fr;gap:20px;border-top:1px solid var(--code-background-color)}.blog-navigation .next{text-align:left}}.blog-navigation span{opacity:.6;font-weight:700;margin-bottom:5px;display:block}.blog-navigation a{display:inline-block;text-decoration:none;color:inherit;opacity:.6;transition:opacity .2s}.blog-navigation a:hover{opacity:1}</style><link rel=stylesheet href=/assets/css/highlight.obsidian.min.css><div class=container><article class=padded><div class="content article-container"><figure class=article-cover><figcaption><strong></strong>
<span style=margin-left:.75rem;font-size:90%>Untitled VR multiplayer parkour game by Clancey</span></figcaption><img src=/storage/blog/covers/february-2025-update-godot-xr-community.webp title alt=" Untitled VR multiplayer parkour game by Clancey" class=rounded-lg style=width:100%;height:auto;background-color:initial></figure><div class=article-info><h1>Godot XR update - February 2025</h1><div class=article-metadata><div class=article-author><span>By: </span><img class=avatar width=25 height=25 src=/assets/images/authors/bastiaan.jpg alt="Bastiaan Olij" loading=lazy>
<span class=by>Bastiaan Olij</span></div><span class=date data-post-date="2025-03-06 12:00:00 +0000">6 March 2025</span></div><div class=tags><a href=/blog/progress-report><div class="tag active">Progress Report</div></a></div></div><div class=article-body><h2 id=announcing-the-meta-toolkit-extension>Announcing the Meta Toolkit extension</h2><p>We are pleased to announce the release of the <a href=https://github.com/godot-sdk-integrations/godot-meta-toolkit>Godot Meta Toolkit</a>, a GDExtension plugin that exposes Metas <a href=https://developers.meta.com/horizon/documentation/native/ps-platform-intro>Platform SDK</a> and provides other tools to simplify and accelerate XR development on Metas platform.<p>The project is Open Source (MIT license) and maintained by <a href=https://www.w4games.com/>W4 Games</a> with sponsorship from Meta. Contributions from the community are welcome! 🙂<p>You can download version 1.0.2 <a href=https://github.com/godot-sdk-integrations/godot-meta-toolkit/releases/tag/1.0.2-stable>from GitHub</a> or the <a href=https://godotengine.org/asset-library/asset/3673>Asset Library</a>.<p>Lets take a look at the features available in this release!<h3 id=platform-sdk>Platform SDK</h3><p>The Platform SDK allows developers to access features of Metas store and online services, including:<ul><li>User profiles (including authentication and checking entitlement)<li>In-App Purchases (IAP)<li>Downloadable Content (DLC)<li>Friends, Parties, and Group Presence<li>Achievements<li>Leaderboards<li>… and much more!</ul><p>Support of the Platform SDK in the Godot Meta Toolkit is done using code generation, which automatically generates the Godot classes by processing the <a href=https://developers.meta.com/horizon/downloads/package/oculus-platform-sdk/>Platform SDKs official C headers</a>. This approach simplifies keeping the Godot Meta Toolkit up-to-date with the latest updates to the Platform SDK, and provides Godot APIs that match the Platform SDKs C, Unity, and Unreal APIs.<p>As of version 1.0.2, the Godot Meta Toolkit supports v72 of the Platform SDK.<p>See <a href=https://godot-sdk-integrations.github.io/godot-meta-toolkit/manual/platform_sdk/getting_started.html>the “Getting Started” guide in the documentation</a> for more information!<h3 id=setup-tool-for-xr-simulator>Setup Tool for XR Simulator</h3><p>The <a href=https://developers.meta.com/horizon/documentation/unity/xrsim-intro>Meta XR Simulator</a> is the counterpart of the <a href=https://www.meta.com/experiences/godot-game-engine/7713660705416473/>Godot XR Editor</a> as it allows developers to test XR applications directly on their computer (Windows or macOS), removing the need to constantly put the headset on and off, thus leading to faster iteration.<p>The Godot editor can be configured to launch the Meta XR Simulator when you run your game, and the Godot Meta Toolkit includes a tool to help you with that configuration!<p><img alt="Configure XR simulator" src=/storage/blog/godot-xr/xr_simulator_tool.webp><p>See <a href=https://godot-sdk-integrations.github.io/godot-meta-toolkit/manual/xr_simulator.html>the “XR Simulator” documentation</a> for more information!<h3 id=easily-configure-exports-for-meta-quest-headsets>Easily configure exports for Meta Quest headsets</h3><p>When exporting your game for a Meta Quest headset, in particular, if you want to release on the HorizonOS store, there are a number of specific, required export settings.<p>The Godot Meta Toolkit provides a new export option that, if checked, will automatically configure these settings to their required values.<p><img alt="Enable toolkit" src=/storage/blog/godot-xr/enable_toolkit.webp><h2 id=openxr-vendors-plugin-312-release>OpenXR Vendors plugin 3.1.2 release</h2><p>Here comes another release of the Godot OpenXR Vendors plugin with plenty of features and bug fixes!
This release of the OpenXR vendors plugin is for Godot 4.3 and later only.<p>You can download version 3.1.2 from <a href=https://github.com/GodotVR/godot_openxr_vendors/releases/tag/3.1.2-stable>GitHub</a> or the <a href=https://godotengine.org/asset-library/asset/3076>Asset Library</a>.<p>In addition, the XR sample projects are also available on the <a href=https://github.com/GodotVR/godot_openxr_vendors/releases/tag/3.1.2-stable>GitHub release</a> and the <a href="https://godotengine.org/asset-library/asset?filter=XR+Sample&amp;category=&amp;godot_version=&amp;cost=&amp;sort=updated">Asset Library</a>.<h3 id=features>Features</h3><ul><li>Update OpenXR to Khronos 1.1.41 release<li>Add the option to enable hand tracking on Pico devices<ul><li>Add support for toggling the hand tracking frequency on Pico devices between <em>LOW</em> and <em>HIGH</em></ul><li>Add the <code class="language-plaintext highlighter-rouge">xr/openxr/extensions/automatically_request_runtime_permissions</code> project setting to enable/disable automatic requests for runtime permissions<ul><li>The project setting is enabled by default, which causes all runtime permissions to be requested at app launch<li>Developers can disable that behavior so that application logic can request the permissions in a context-specific manner</ul><li>Add export profile for Magic Leap 2 devices</ul><h3 id=bug-fixes>Bug fixes</h3><ul><li>Update the signal emitted by <code class="language-plaintext highlighter-rouge">OpenXRFbSpatialEntity.erase_from_storage()</code> from <code class="language-plaintext highlighter-rouge">_on_save_to_storage</code> to <code class="language-plaintext highlighter-rouge">_on_erase_from_storage</code><li>Only add the <a href=https://developer.android.com/reference/android/content/Intent#CATEGORY_LAUNCHER>Android LAUNCHER category</a> to the generated XR binary if the <code class="language-plaintext highlighter-rouge">package/show_in_app_library</code> export option is enabled<li>Fix wall, floor, and ceiling collision shapes with Jolt physics<li>Add export option to enable or disable sharing of Metas spatial anchors<ul><li>This adds the <code class="language-plaintext highlighter-rouge">com.oculus.permission.IMPORT_EXPORT_IOT_MAP_DATA</code> permission when enabled</ul><li>Fix a crash that happens when a spatial anchor is created before the OpenXR session has begun<li>Reworked geometric algebra used by Meta body tracking extension to address root and shoulder tracking bugs<li>Remove deprecated “Contextual” boundary mode on Meta Quest<li>Fix <code class="language-plaintext highlighter-rouge">OpenXRFbPassthroughExtensionWrapper</code> from wiping out the next pointer chain for system properties<li>Fix passthrough sample color map display bug<li>Fix the issue preventing vendor options in the export preset from being updated</ul><h2 id=godot-xr-tools-440-release>Godot XR Tools 4.4.0 release</h2><iframe width=560 height=315 src=https://www.youtube.com/embed/xJKQ2ca5zVw frameborder=0 allow="autoplay; encrypted-media" allowfullscreen></iframe><p>This version of XR Tools has been updated to contain <a href=https://godotengine.org/article/godot-4-2-arrives-in-style/#critical-and-breaking-changes>Godot 4.2 mesh formats</a> and thus <strong>requires Godot 4.2+</strong>.<p>You can download version 4.4.0 from <a href=https://github.com/GodotVR/godot-xr-tools/releases>GitHub</a> or the <a href=https://godotengine.org/asset-library/asset/1698>Asset Library</a>.
You can download <a href=https://godot-xr.itch.io/godot-xr-tools-demo>the Godot XR Tools demo on itch.io</a>.<p>The Godot XR Tools repository on GitHub contains a <a href=https://github.com/GodotVR/godot-xr-tools/blob/master/.github/workflows/publish-demo-on-push.yaml>GitHub workflow</a> that prepares and uploads the demo project to the above itch.io page. This workflow can be used as a template for your own project.<h3 id=features-1>Features</h3><ul><li>The StartXR startup script has had a cleanup pass, it now:<ul><li>Properly handles the passthrough system changes in Godot 4.3. Godot 4.3 saw changes in basing passthrough on the environment blend mode and moved logic into the vendor plugin to improve platform support for passthrough. XR Tools now makes use of this new system.<li>Add proper support for the immersive-ar and immersive-vr webXR modes<li>Provides signals to notify when the user enters or exits XR</ul><li><a href=https://godotvr.github.io/godot-xr-tools/docs/pickable/>Pickable objects</a> now include an <code class="language-plaintext highlighter-rouge">action_released</code> signal so additional logic can be written when objects are dropped by the user<li>Allow <a href=https://godotvr.github.io/godot-xr-tools/docs/grab_point/>grab-points</a> and poses to work with different types of hand trackers<li>The <a href=https://godotvr.github.io/godot-xr-tools/docs/vignette/>vignette shader</a> now works properly in Godot 4 including support for reverse-Z depth buffers<li>Add <code class="language-plaintext highlighter-rouge">visibility_changed</code> notifications to <a href=https://godotvr.github.io/godot-xr-tools/docs/pointer/>Viewport2Din3D</a> hosted scenes<li>Add <em>SnapPath</em>, a new snap object that allows you to snap objects along a path and at fixed intervals</ul><h3 id=bug-fixes-1>Bug fixes</h3><ul><li>Fix custom hand poses calling legacy <code class="language-plaintext highlighter-rouge">remove_animation</code><li>Invisible <a href=https://godotvr.github.io/godot-xr-tools/docs/pointer/>Viewport2Din3D</a> now disable physics and viewport updates<li>Improvements to collision hands so collision shapes of picked up objects are added and we no longer have hands collide with dropped objects</ul></div></div></article><div class=blog-navigation><div class=previous><span>Previous</span>
<a rel=prev href=/article/godot-4-4-a-unified-experience/>Godot 4.4, a unified experience</a></div><div class=next><span>Next</span>
<a rel=next href=/article/release-candidate-godot-4-4-1-rc-1/>Release candidate: Godot 4.4.1 RC 1</a></div></div></div><link rel=stylesheet href=/assets/css/anchor-link.css?1><link rel=stylesheet href=/assets/css/article-cards.css?3><script src=/assets/js/anchor-link.js></script><script>document.addEventListener("DOMContentLoaded",()=>{window.applyAnchorLinks(".article-body"),document.querySelectorAll(".article-cover img, .article-body img").forEach(e=>{if(e.classList.contains("lightbox-ignore"))return;const t=document.createElement("a");t.href=e.src,t.classList.add("lightbox"),t.dataset.group="article",e.parentNode.appendChild(t),t.appendChild(e)})})</script></main><footer class=footer-global><div class=wrapper><div class=columns><div class=col><h2>Godot Engine</h2><ul><li><a class=set-os-download-url href=/download>Download</a><li><a href=https://docs.godotengine.org>Documentation</a><li><a href=/features/>Features</a><li><a href=https://editor.godotengine.org/releases/latest/>Web editor</a><li><a href=/download/archive/>Release archive</a><li><a href=https://github.com/godotengine>Source code</a></ul></div><div class=col><h2>Project</h2><ul><li><a href=/blog/>Blog</a><li><a href=/code-of-conduct/>Code of conduct</a><li><a href=/governance/>Governance</a><li><a href=/teams/>Teams</a><li><a href=/priorities/>Priorities</a><li><a href=/community/>Communities</a></ul></div><div class=col><h2>Resources</h2><ul><li><a href=https://godotengine.org/asset-library/asset>Asset library</a><li><a href=/press/>Press kit</a><li><a href=/showcase/>Showcase</a><li><a href=/education/>Education</a></ul></div><div class=col><h2>Foundation</h2><ul><li><a href=https://godot.foundation/>About</a><li><a href=https://fund.godotengine.org>Donate</a><li><a href=/license/>License</a><li><a href=/privacy-policy/>Privacy policy</a><li><a href=/contact/>Contact us</a></ul></div></div><hr><div class=credits-and-socials><p>© 2007-2025 Juan Linietsky, Ariel Manzur and <a href=https://github.com/godotengine/godot/blob/master/AUTHORS.md target=_blank rel=noopener>contributors</a>. Hosted by the <a href=https://godot.foundation/ target=_blank rel=noopener>Godot Foundation</a>. Website <a href=https://github.com/godotengine/godot-website target=_blank rel=noopener>source code on GitHub</a>.<div class=social><a href=https://github.com/godotengine target=_blank rel=noopener title=GitHub><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6.0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6.0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3.0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1.0-6.2-.3-40.4-.3-61.4.0.0-70 15-84.7-29.8.0.0-11.4-29.1-27.8-36.6.0.0-22.9-15.7 1.6-15.4.0.0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5.0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9.0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4.0 33.7-.3 75.4-.3 83.6.0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6.0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9.0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</a><a href=https://bsky.app/profile/godotengine.org target=_blank rel=noopener title=BlueSky><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M407.8 294.7c-3.3-.4-6.7-.8-10-1.3 3.4.4 6.7.9 10 1.3zM288 227.1C261.9 176.4 190.9 81.9 124.9 35.3 61.6-9.4 37.5-1.7 21.6 5.5 3.3 13.8.0 41.9.0 58.4S9.1 194 15 213.9c19.5 65.7 89.1 87.9 153.2 80.7 3.3-.5 6.6-.9 10-1.4-3.3.5-6.6 1-10 1.4-93.9 14-177.3 48.2-67.9 169.9C220.6 589.1 265.1 437.8 288 361.1c22.9 76.7 49.2 222.5 185.6 103.4 102.4-103.4 28.1-156-65.8-169.9-3.3-.4-6.7-.8-10-1.3 3.4.4 6.7.9 10 1.3 64.1 7.1 133.6-15.1 153.2-80.7C566.9 194 576 75 576 58.4s-3.3-44.7-21.6-52.9c-15.8-7.1-40-14.9-103.2 29.8C385.1 81.9 314.1 176.4 288 227.1z"/></svg>
</a><a href=https://mastodon.gamedev.place/@godotengine target=_blank rel=noopener title=Mastodon><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M433 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.6-28.4-290.5.0.0.0-63.7 28.5-63.7 125.7.0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54a102.5 102.5.0 01-.9-13.9c85.6 20.9 158.7 9.1 178.8 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5H201V197c0-58.5-64-56.6-64-6.9v114.2H90.2c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"/></svg>
</a><a href=https://discord.gg/godotengine target=_blank rel=noopener title=Discord><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M524.5 69.8a1.5 1.5.0 00-.8-.7A485.1 485.1.0 00404.1 32a1.8 1.8.0 00-1.9.9 337.5 337.5.0 00-14.9 30.6 447.8 447.8.0 00-134.4.0 309.5 309.5.0 00-15.1-30.6 1.9 1.9.0 00-1.9-.9A483.7 483.7.0 00116.1 69.1a1.7 1.7.0 00-.8.7C39.1 183.7 18.2 294.7 28.4 404.4a2 2 0 00.8 1.4A487.7 487.7.0 00176 479.9a1.9 1.9.0 002.1-.7 348.2 348.2.0 0030-48.8 1.9 1.9.0 00-1-2.6 321.2 321.2.0 01-45.9-21.9 1.9 1.9.0 01-.2-3.1c3.1-2.3 6.2-4.7 9.1-7.1a1.8 1.8.0 011.9-.3c96.2 43.9 200.4 43.9 295.5.0a1.8 1.8.0 011.9.2c2.9 2.4 6 4.9 9.1 7.2a1.9 1.9.0 01-.2 3.1 301.4 301.4.0 01-45.9 21.8 1.9 1.9.0 00-1 2.6 391.1 391.1.0 0030 48.8 1.9 1.9.0 002.1.7 486 486 0 00147.2-74.1 1.9 1.9.0 00.8-1.4c12.2-126.7-20.6-236.8-87-334.5zm-302 267.8c-29 0-52.8-26.6-52.8-59.2s23.4-59.3 52.8-59.3c29.7.0 53.3 26.8 52.8 59.2.0 32.7-23.4 59.3-52.8 59.3zm195.4.0c-29 0-52.8-26.6-52.8-59.2s23.3-59.3 52.8-59.3c29.7.0 53.3 26.8 52.8 59.2.0 32.7-23.2 59.3-52.8 59.3z"/></svg>
</a><a href=https://www.reddit.com/r/godot title=Reddit target=_blank rel=noopener><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 256C0 114.6 114.6.0 256 0S512 114.6 512 256 397.4 512 256 512H37.1c-13.7.0-20.5-16.5-10.9-26.2L75 437C28.7 390.7.0 326.7.0 256zM349.6 153.6c23.6.0 42.7-19.1 42.7-42.7s-19.1-42.7-42.7-42.7c-20.6.0-37.8 14.6-41.8 34-34.5 3.7-61.4 33-61.4 68.4v.2c-37.5 1.6-71.8 12.3-99 29.1-10.1-7.8-22.8-12.5-36.5-12.5-33 0-59.8 26.8-59.8 59.8.0 24 14.1 44.6 34.4 54.1 2 69.4 77.6 125.2 170.6 125.2s168.7-55.9 170.6-125.3c20.2-9.6 34.1-30.2 34.1-54 0-33-26.8-59.8-59.8-59.8-13.7.0-26.3 4.6-36.4 12.4-27.4-17-62.1-27.7-1e2-29.1v-.2c0-25.4 18.9-46.5 43.4-49.9 4.4 18.8 21.3 32.8 41.5 32.8zM177.1 246.9c16.7.0 29.5 17.6 28.5 39.3s-13.5 29.6-30.3 29.6-31.4-8.8-30.4-30.5S160.3 247 177 247zm190.1 38.3c1 21.7-13.7 30.5-30.4 30.5s-29.3-7.9-30.3-29.6c-1-21.7 11.8-39.3 28.5-39.3s31.2 16.6 32.1 38.3zm-48.1 56.7c-10.3 24.6-34.6 41.9-63 41.9s-52.7-17.3-63-41.9c-1.2-2.9.8-6.2 3.9-6.5 18.4-1.9 38.3-2.9 59.1-2.9s40.7 1 59.1 2.9c3.1.3 5.1 3.6 3.9 6.5z"/></svg>
</a><a href=/rss.xml title=RSS target=_blank rel=noopener><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M64 32C28.7 32 0 60.7.0 96V416c0 35.3 28.7 64 64 64h320c35.3.0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24 137 0 248 111 248 248 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-2e2-2e2-2e2-13.3.0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24 83.9.0 152 68.1 152 152 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104-13.3.0-24-10.7-24-24zm0 120a32 32 0 1164 0 32 32 0 11-64 0z"/></svg></a></div></div></div></footer><script defer src=/assets/js/localize.js?3></script><script defer src=/assets/js/tobii.min.js></script><script defer src=/assets/js/highlight.min.js?1></script><script defer src=/assets/js/highlight.gdscript.min.js?1></script><script>document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("pre code").forEach(e=>{hljs.highlightBlock(e)}),document.querySelectorAll("[data-post-date]").forEach(e=>{Date.parse(e.dataset.postDate)>Date.now()-1e3*60*60*48&&e.classList.add("post-recent-highlight")}),new Tobii({zoom:!1});const e=document.querySelectorAll(".set-os-download-url");for(let t=0;t<e.length;t++){const n=e[t];let o="download";"version"in n.dataset&&n.dataset.version==="3"&&(o="download/3.x");let s="windows";navigator.platform.indexOf("Mac")!==-1?s="macos":navigator.platform.indexOf("Linux")!==-1&&(s="linux"),n.href=`/${o}/${s}/`}})</script>