mirror of
https://github.com/godotengine/godot-website.git
synced 2026-01-04 06:09:55 +03:00
99 lines
112 KiB
HTML
99 lines
112 KiB
HTML
<!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="Godot Priorities"><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/priorities/index.html"><meta property="og:type" content="website"><meta property="og:description" content="Godot Priorities"><meta property="og:image" content="https://godotengine.org/assets/share-image.webp"><meta name=twitter:card content="summary_large_image"><meta property="twitter:domain" content="godotengine.org"><meta property="twitter:url" content="https://godotengine.org/priorities/index.html"><meta property="og:title" content="Priorities – Godot Engine"><title>Priorities – 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?6><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/ data-dropdown=features-dropdown>Features</a><li class=mobile-only><a href=/consoles/>Console support</a><li class=mobile-only><a href=/priorities/>Priorities</a><li><a href=/showcase/>Showcase</a><li><a href=/blog/>Blog</a><li><a href=/community/ data-dropdown=community-dropdown>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://contributing.godotengine.org/en/latest/organization/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><div class=nav-dropdown-menu id=features-dropdown><a href=/features/ class=touch-only>Features</a>
|
||
<a href=/consoles/>Console support</a>
|
||
<a href=/priorities/>Priorities</a></div><div class=nav-dropdown-menu id=community-dropdown><a href=/community/ class=touch-only>Community</a>
|
||
<a href=https://forum.godotengine.org>Forum</a>
|
||
<a href=/events/>Events</a></div><script>document.addEventListener("DOMContentLoaded",function(){const e=document.querySelectorAll("[data-dropdown]");e.forEach(e=>{const n=e.getAttribute("data-dropdown"),t=document.getElementById(n);if(t){let n=-1;const i=()=>{if(n===-1)return;clearTimeout(n),n=-1},a=()=>t.style.display==="block",r=()=>{if(a())return;if(window.innerWidth<1200)return;i();const n=e.getBoundingClientRect();t.style.top=n.bottom+"px",t.style.left=n.left+"px",t.style.display="block",e.classList.add("dropdown-open")},s=({instant:s=!1}={})=>{if(!a())return;const o=()=>{i(),t.style.display="none",e.classList.remove("dropdown-open")};if(s){o();return}n=setTimeout(o,100)},l=e=>{if(window.innerWidth<1200)return;e.preventDefault(),a()?s({instant:!0}):r()},c=e=>t=>{t.pointerType==="touch"&&e(t)},o=e=>t=>{t.pointerType!=="touch"&&e(t)};e.addEventListener("pointerup",c(e=>l(e))),document.documentElement.addEventListener("pointerup",c(n=>{!e.contains(n.target)&&!t.contains(n.target)&&s({instant:!0})})),e.addEventListener("pointerenter",o(e=>r())),e.addEventListener("pointerleave",o(e=>s())),t.addEventListener("pointerenter",o(e=>i())),t.addEventListener("pointerleave",o(e=>s()))}})})</script><main><link rel=stylesheet href=/assets/css/priorities/base.css><noscript><link rel=stylesheet href=/assets/css/priorities/noscript.css></noscript><script type=module src=/assets/js/priorities.mjs></script><style>@font-face{font-family:material symbols outlined;font-style:normal;font-weight:400;src:url(/storage/priorities/fonts/google-icons.woff2)format('woff')}.material-symbols-outlined{font-family:material symbols outlined;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-moz-font-feature-settings:'liga';-moz-osx-font-smoothing:grayscale}</style><style>.material-symbols-outlined{font-variation-settings:'FILL' 0,'wght' 400,'GRAD' 0,'opsz' 24}</style><style>@font-face{font-family:octicons;src:url(/storage/priorities/fonts/octicons.woff2);font-weight:400;font-style:normal}[class^=godot-icon-]:before,[class*=" godot-icon-"]:before{font-family:octicons;font-style:normal;font-weight:400;speak:never;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.godot-icon-bug:before{content:'\e004'}.godot-icon-git-pull-request:before{content:'\e005'}.godot-icon-zap:before{content:'\e006'}</style><div class=priorities-container><div class=priorities-intro><div class=banner><div class=container><h1>Priorities</h1></div></div><div class=intro><div class=container><div class=intro-text><div><p class=wishlist-par>This page is our <strong>wishlist</strong>:
|
||
it details the improvements that we consider most important to make the Godot Engine a better tool for its users.
|
||
The items were created by talking to the volunteer maintainers for each area about the current state of things,
|
||
their personal goals, and what kind of contributions they are looking for.<p class=wishlist-par>As with any wishlist, these points are an idealized version of what is to come in the project’s future.
|
||
To realize them, we will need the support from you, whether you are a representative for a company looking to sponsor Godot
|
||
or a game developer capable to contribute to the codebase directly. The Godot Engine has always been a <strong>community effort</strong> — there is only so much ground we can cover with Godot Foundation contractors at the moment.</div><div><p class=wishlist-par>We hope that by publishing this list, we can align our communal efforts: by showcasing which areas need to see
|
||
improvements the most and what the next steps would be for anyone taking action. Let this list be an indicator of…<ol class=wishlist-list><li>what kind of contractors we would like to hire if donations increase,<li>what areas are ripe with good first issues for new contributors, and<li>where corporate sponsors could lend a helping hand</ol><div><div class=wishlist-btns><a class="wishlist-btn-anchor donate" href=https://fund.godotengine.org/ target=_blank><div class=wishlist-btn-text><span>Donate to the Fund</span><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 3l5 5-5 5" stroke="currentcolor" stroke-width="1.5"/></svg></div></a><a class="wishlist-btn-anchor howto" href=https://contributing.godotengine.org/en/latest/organization/how_to_contribute.html target=_blank><div class=wishlist-btn-text><span>How to contribute</span><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 3l5 5-5 5" stroke="currentcolor" stroke-width="1.5"/></svg></div></a></div></div></div></div></div></div></div><nav id=priorities-navigation class=navigation><div class=container><div class=navigation-list-container><ul class=navigation-list><li><details class=navigation-list-details open><summary class=navigation-list-summary tabindex=-1><div class=label><a href=#core><span>Core</span></a></div><div class=toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><ul class=navigation-sublist><li><a href=#physics><span>Physics</span></a><li><a href=#rendering><span>Rendering</span></a><li><a href=#animation><span>Animation</span></a></ul></details><li><details class=navigation-list-details open><summary class=navigation-list-summary tabindex=-1><div class=label><a href=#editor><span>Editor</span></a></div><div class=toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><ul class=navigation-sublist><li><a href=#assetio><span>Asset import & export</span></a></ul></details><li><details class=navigation-list-details open><summary class=navigation-list-summary tabindex=-1><div class=label><a href=#platforms><span>Platforms</span></a></div><div class=toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><ul class=navigation-sublist><li><a href=#android><span>Android</span></a><li><a href=#linuxbsd><span>Linux/BSDs</span></a><li><a href=#web><span>Web</span></a><li><a href=#xr><span>XR</span></a></ul></details><li><details class=navigation-list-details open><summary class=navigation-list-summary tabindex=-1><div class=label><a href=#scripting><span>Scripting</span></a></div><div class=toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><ul class=navigation-sublist><li><a href=#gdscript><span>GDScript</span></a><li><a href=#dotnet><span>.NET</span></a><li><a href=#gdextension><span>GDExtension</span></a></ul></details></ul></div></div></nav><div class=priorities><div id=core class="category level-1"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#core><span class=anchor-icon></span></a></div><h2 class=category-title><div class=category-title-text>Core</div></h2><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=overhaul-addon-startup class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Overhaul addon startup</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#overhaul-addon-startup><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>As the community grows and uses more and more add-ons, we found out that the current add-on startup logic is reaching its limits, as sometimes, you need to reload the editor for new add-ons to work. That’s why we intend to overhaul it to make the experience seamless.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>Some research and optimization is needed for the editor file system access. We need to optimize all file access extensions. Ultimately, we need to rethink the current system in order to overhaul it.</div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=reliable-headless-command-line-export class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Reliable headless command line export</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#reliable-headless-command-line-export><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>As bigger projects often rely on CI (continuous integration) to test and deploy their projects, they need to be able to export games from lean environments that don’t implement a graphical interface (headless). For this, we need to make headless command line export more reliable, as there’s currently some issues that prevent it from working flawlessly.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=improve-performance-of-scene-multithreading class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Improve performance of scene multithreading</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#improve-performance-of-scene-multithreading><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>We put a lot of effort lately to add ways to split the work of nodes into multiple threads. This can lead to great leaps in terms of performance. Unfortunately, many nodes are structured in a way that makes it difficult for them to take advantage of multiple threads. We need to audit our current nodes and fix the ones that are relying on being single threaded.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>As part of this work we need to create high quality tests and benchmarks. Both to ensure that we do not break anything, but also to validate the performance improvements.</div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=make-optimizations-throughout-the-core class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Make optimizations throughout the core</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#make-optimizations-throughout-the-core><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Much of the engine would benefit from a careful evaluation of the current performance bottlenecks and improvements to ensure that it is running as fast as possible. Godot 4.0 drastically improved the overall architecture of Godot, but there is still a lot of legacy code that is not benefitting from the architectural improvements. We need to seek out those areas and fix them.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>To aid in this, we want to create more educational materials on profiling performance issues (both for CPU and GPU workloads).</div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=create-more-benchmarks class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Create more benchmarks</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#create-more-benchmarks><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>In order to make the best decisions, we need to rely on measurable data. In order to be able to do this, we need to create more benchmarks. It gives the added benefit over time that we can spot regressions more easily, together with unit tests, as we started lately to track performance of nightly builds.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>We do have a public benchmark page! You can follow Godot’s main branch performance on the following website:<p><a href=https://benchmarks.godotengine.org/>https://benchmarks.godotengine.org/</a></div></div></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=physics class="category level-2"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#physics><span class=anchor-icon></span></a></div><h3 class=category-title><div class=category-title-text>Physics</div></h3><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=integrate-jolt-as-the-default-3d-physics-engine class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Integrate Jolt as the default 3D physics engine</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#integrate-jolt-as-the-default-3d-physics-engine><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p><a href=https://github.com/jrouwe/JoltPhysics>Jolt</a> is an open-source (MIT licensed) modern, multi core friendly rigid body physics and collision detection library, tailor-made for video games. We want to make it available to users by default, the current GodotPhysics 3D engine would still be available as an option.</div><div class=element-details><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/99895>Add Jolt Physics as an alternative 3D physics engine #99895</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=adapt-the-way-godot-exposes-physics-to-mirror-jolt class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Adapt the way Godot exposes physics to mirror Jolt</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#adapt-the-way-godot-exposes-physics-to-mirror-jolt><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>As much as our nodes are made to be compatible with multiple physics engines, the existing integration of Jolt (via the <a href=https://github.com/godot-jolt/godot-jolt>godot-jolt</a> add-on) is not optimal, as there are numerous features that can’t be implemented in Godot due to the current way the system works. In addition to integrating Jolt as the default 3D physics engine, we want to modernize our node bindings in order to fully exploit the new library.</div><div class=element-details><div class="detail-block warning"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined warning">warning</span></div><div class=label><span>Warning</span></div></div><div class=detail-block-content><p>We do expect it will create some compatibility issues.</div></div><div class="detail-block proposals"><div class=detail-block-header><div class=icon><span class=godot-icon-zap></span></div><div class=label><span>Proposals</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot-proposals/issues/7400>Add per-shape collision filtering to the 3D physics system #7400</a><li><a href=https://github.com/godotengine/godot-proposals/issues/7401>Add per-shape physics materials to the 3D physics system #7401</a></ul></div></div></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=rendering class="category level-2"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#rendering><span class=anchor-icon></span></a></div><h3 class=category-title><div class=category-title-text>Rendering</div></h3><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=overhaul-sdfgi class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Overhaul SDFGI to improve performance and quality</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#overhaul-sdfgi><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>We’re really proud of our in-house technology for global illumination, but we think that we can push performance and quality even further. This is a long-term effort, but is something we are very excited about and would like to see finished.</div><div class=element-details><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/86267>Upgrade SDFGI to HDDAGI #86267</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=significantly-improve-post-processing-effects class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Significantly improve post processing effects and add common effects</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#significantly-improve-post-processing-effects><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Post processing effects are a weak spot in Godot’s renderer. The performance and quality are both worse than we would like. We want to overhaul or replace most of our post processing effects in order to achieve both better performance and higher quality.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=add-a-rendering-compositor class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Add a rendering compositor to allow controlling render pass order</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#add-a-rendering-compositor><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>The goal of the rendering compositor is to give users fine control over the order of rendering operations and allow them to implement more custom behavior within the renderer.</div><div class=element-details><div class="detail-block proposals"><div class=detail-block-header><div class=icon><span class=godot-icon-zap></span></div><div class=label><span>Proposals</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot-proposals/issues/7916>Implement a Rendering Compositor #7916</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=enhance-graphics-debugging class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Enhance graphics debugging including VRAM debugging and better information from the current profiler</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#enhance-graphics-debugging><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Debugging and profiling are necessary tools to release high-fidelity games. Right now Godot’s debugging and profiling tools are relatively basic and unpolished. We want to make it easier to diagnose rendering issues and pinpoint performance problems instead of users having to rely on guessing and checking.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=add-shader-templates class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Add shader templates to allow overriding the built-in shaders</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#add-shader-templates><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Shader templates can be used to have full control over the shaders used to render your assets. This allows you to both optimize your shader by removing unnecessary parts and to dramatically change your shader by adding custom behavior.</div><div class=element-details><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/94427>Custom shader templates #94427</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=implement-texture-and-mesh-streaming class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Implement texture and mesh streaming</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#implement-texture-and-mesh-streaming><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>This feature would enable the streaming of assets to progressively load scenes, textures, and models in order to boost performance and loading times.</div><div class=element-details><div class="detail-block proposals"><div class=detail-block-header><div class=icon><span class=godot-icon-zap></span></div><div class=label><span>Proposals</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot-proposals/issues/6109>Implement Mesh streaming #6109</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=expose-a-ray-tracing-api class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Expose a ray tracing API and eventually use it for built in effects</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#expose-a-ray-tracing-api><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Hardware ray tracing is slowly becoming more widespread. Soon it will be common for all desktop computers to support hardware ray tracing and soon after mobile devices will as well. We want to expose an API for hardware ray tracing through our <code class="language-plaintext highlighter-rouge">RenderingDevice</code> so that users can begin to make use of it. Then, eventually, we want to use that API to leverage hardware ray tracing in the <em>Forward+</em> renderer.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=add-a-deferred-renderer class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Add a deferred renderer</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#add-a-deferred-renderer><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Deferred rendering is a technique that can be used to increase performance in certain situations at the cost of flexibility. As Godot users create more complex games, we are seeing more games that would benefit from trading the flexibility that comes with our current renderer for more performance.</div><div class=element-details><div class="detail-block proposals"><div class=detail-block-header><div class=icon><span class=godot-icon-zap></span></div><div class=label><span>Proposals</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot-proposals/issues/8295>Add a project setting to enable deferred rendering #8295</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=overhaul-lightmapgi class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Overhaul <code class="language-plaintext highlighter-rouge">LightmapGI</code> to improve baking workflow, performance, and features</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#overhaul-lightmapgi><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p><code class="language-plaintext highlighter-rouge">LightmapGI</code> needs a lot of polish and improvements for us to meet the goals we have set for it. Baking times are slower than we want and it often takes too much manual effort to get bakes to achieve the quality that users need.</div><div class=element-details><div class="detail-block trackers"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined list_alt_check">list_alt_check</span></div><div class=label><span>Trackers</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/issues/56033>[TRACKER] LightmapGI (GPU lightmapper) issues #56033</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=implement-webgpu-backend-for-web-exports class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Implement WebGPU backend for web exports</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#implement-webgpu-backend-for-web-exports><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>WebGPU is a new and modern API that offers direct access to GPUs, exposing features that are not otherwise available on the web. Once WebGPU is supported, it will be possible to export high-fidelity <em>Forward+</em> and <em>Mobile</em> projects to the Web.</div><div class=element-details><div class="detail-block proposals"><div class=detail-block-header><div class=icon><span class=godot-icon-zap></span></div><div class=label><span>Proposals</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot-proposals/issues/6646>Add WebGPU support #6646</a></ul></div></div></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=animation class="category level-2"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#animation><span class=anchor-icon></span></a></div><h3 class=category-title><div class=category-title-text>Animation</div></h3><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=improve-and-polish-new-skeletonmodifier3d class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Improve and polish new SkeletonModifier3D</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#improve-and-polish-new-skeletonmodifier3d><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>The <code class="language-plaintext highlighter-rouge">SkeletonModifier3D</code> abstract node <a href=https://godotengine.org/releases/4.3/#animation-skeletonmodifier3d-node>introduced in 4.3</a> helps users to modify and add new functionality to bones via script. We want to build upon that new structure to add new features to it.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>We identified at least two features that we wish to add<ul><li>Add a bone constraint (based on the Blender spec)<li>Add spring bones (based on the VRM1 spec)</ul></div></div><div class="detail-block proposals"><div class=detail-block-header><div class=icon><span class=godot-icon-zap></span></div><div class=label><span>Proposals</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot-proposals/issues/3379>Implement Skeleton re-targeting node #3379</a></ul></div></div><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/97824>Add RetargetModifier3D for realtime retarget to keep original rest #97824</a><li><a href=https://github.com/godotengine/godot/pull/98446>Implement LookAtModifier3D #98446</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=overhaul-skeleton2d-animation class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Overhaul <code class="language-plaintext highlighter-rouge">Skeleton2D</code> animation</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#overhaul-skeleton2d-animation><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>While the experience of dealing with 3D skeletons improved greatly upon the years, the same cannot be said of the 2D one. Our wish is to overhaul <code class="language-plaintext highlighter-rouge">Skeleton2D</code> animation in order to make it easier to animate and develop complex 2D figures.</div><div class=element-details></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=editor class="category level-1"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#editor><span class=anchor-icon></span></a></div><h2 class=category-title><div class=category-title-text>Editor</div></h2><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=make-the-editor-resilient-to-file-changes class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Make the editor resilient to files changed/added externally</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#make-the-editor-resilient-to-file-changes><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Godot doesn’t know how to handle project file changes that happen on non-imported files, such as scripts, when it happens outside of the editor. This can be a common occurrence for users that use an external code editor. This can lead to numerous errors and inconveniences, such as scenes refusing to load. We intend to make this a relic of the past.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>We introduced recently UIDs to non-imported files, such as scripts, in Godot 4.4.dev5. We need testing though to fully make sure that it solves our issues.</div></div><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/97352>Universalize UID support in all resource types #97352</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=provide-some-way-to-access-internal-subresources-of-imported-scenes class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Provide some way to access internal subresources of imported scenes</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#provide-some-way-to-access-internal-subresources-of-imported-scenes><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Some file formats are actually containers that hold multiple resources. FBX and GLTF files are one of these, as they not only contain 3D models, but also can contain animations and textures. Currently, the only way to expose these resources is to tell the editor to pull these out on import.<p>We are thinking about providing a way to users to access internal subresources.</div><div class=element-details><div class="detail-block proposals"><div class=detail-block-header><div class=icon><span class=godot-icon-zap></span></div><div class=label><span>Proposals</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot-proposals/issues/8750>Add ability to reference subresources and inspect them in filesystem #8750</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=implement-gdscript-refactoring-tools class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Implement GDScript refactoring tools</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#implement-gdscript-refactoring-tools><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>A lot of modern IDEs offer refactoring tools in order to rename variables and symbols across the codebase. We intend to add this feature to our internal GDScript code editor.</div><div class=element-details><div class="detail-block proposals"><div class=detail-block-header><div class=icon><span class=godot-icon-zap></span></div><div class=label><span>Proposals</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot-proposals/issues/899>Add “refactor” tooling to rename symbols in the script editor #899</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=implement-editor-support-for-creating-updating-source-code-for-gdextensions class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Implement editor support for creating/updating source code for GDExtensions</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#implement-editor-support-for-creating-updating-source-code-for-gdextensions><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Right now the editor is not able to open or edit GDExtension classes. It effectively treats them like binary blobs. We want to make opening and editing GDExtension classes easier to do from within the engine and provide some of the comforts from regular scripting to GDExtension.</div><div class=element-details><div class="detail-block proposals"><div class=detail-block-header><div class=icon><span class=godot-icon-zap></span></div><div class=label><span>Proposals</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/90979>Allow creating GDExtension plugins from inside the Godot editor #90979</a></ul></div></div></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=assetio class="category level-2"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#assetio><span class=anchor-icon></span></a></div><h3 class=category-title><div class=category-title-text>Asset import & export</div></h3><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=improve-compatibility-with-blender class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Improve compatibility with Blender</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#improve-compatibility-with-blender><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>As <a href=https://blender.org/>Blender</a> is both a FOSS and a very popular 3D editor choice by the majority of our users, it makes sense to improve compatibility with it. You can already import <code class="language-plaintext highlighter-rouge">.blend</code> files, but it’s limited to models, textures, lights, and cameras.<p>Godot imports <code class="language-plaintext highlighter-rouge">.blend</code> files by calling into Blender and asking Blender to export a <code class="language-plaintext highlighter-rouge">.gltf</code> file, which Godot then imports. Therefore, everything we want to export from Blender needs to be exported to the glTF data, including glTF extensions, and then Godot needs to import those, all in order for that data to make its way to Godot.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>For materials, <a href=https://www.khronos.org/>Khronos</a> has a <a href=https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos>selection of material extensions</a>. Improving compatibility with Blender materials will require Blender exporting data using these extensions, and then Godot adding support for it.</div></div><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>For constraints, VRM has a series of glTF extensions that add feature to glTF, including <a href=https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_node_constraint-1.0><code class="language-plaintext highlighter-rouge">VRMC_node_constraint</code></a> which adds aim, roll, and rotation constraints. However, note that Khronos and VRM recently announced a collaboration, so some of this functionality may end up being replaced by Khronos extensions. Also, users do not have to wait if they want this feature - <a href=https://github.com/V-Sekai/godot-vrm>a GDScript implementation of VRM</a> is available thanks to <a href=https://github.com/lyuma>@lyuma</a>.</div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=improve-import-dialog class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Improve import dialog to provide more control over imported resources</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#improve-import-dialog><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Godot currently has an advanced import dialogue which allows you to tweak many properties while importing assets. We want to polish and expand this dialogue to be more powerful. At the very least we would like to improve the preview lighting, expose more tools for material editing, and expose many more common properties.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=add-preview-icons-on-imported-scenes class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Add preview icons on imported scenes</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#add-preview-icons-on-imported-scenes><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Currently, imported scenes (such as <code class="language-plaintext highlighter-rouge">.glb</code>, <code class="language-plaintext highlighter-rouge">.fbx</code>, and <code class="language-plaintext highlighter-rouge">.blender</code> files) show the scene icon in the FileSystem tab, making it difficult to filter out these files. Showing a preview icon of the scene would greatly help users in their workflow.</div><div class=element-details><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/96544>Generate thumbnails on imported scenes. #96544</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=improve-importer-performance class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Improve importer performance</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#improve-importer-performance><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>As users create larger games with more assets, we need to continue improving the performance of our importer to ensure that users spend as little time waiting for import as possible.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=make-scene-inheritance-more-robust class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Make scene inheritance more robust</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#make-scene-inheritance-more-robust><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Scene inheritance is the concept of creating a scene based on an existing one. It is a feature that should work well in theory, but can be quite finicky in reality.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>One idea is to give nodes unique IDs. See <a href=https://github.com/KhronosGroup/glTF/issues/2337>KhronosGroup/glTF#2337</a>.</div></div></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=platforms class="category level-1"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#platforms><span class=anchor-icon></span></a></div><h2 class=category-title><div class=category-title-text>Platforms</div></h2><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=add-screen-reader-support-using-accesskit-integration class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Add screen reader support using AccessKit integration</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#add-screen-reader-support-using-accesskit-integration><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p><a href=https://github.com/AccessKit/accesskit>AccessKit</a> offers a cross-platform way to implement accessibility features for UI toolkits, such as Godot. Integrating screen reader support into Godot will offer us and game developers opportunities to make more accessible products, such as the Godot Editor itself or games made with Godot.</div><div class=element-details><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/76829>Implement screen reader support using AccessKit library. #76829</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=investigate-delays-in-window-creation class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Investigate delays in Window creation</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#investigate-delays-in-window-creation><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>It is known that compared to Godot 3.x, there’s some delays while creating new <code class="language-plaintext highlighter-rouge">Window</code>, especially on Windows.</div><div class=element-details><div class="detail-block issues"><div class=detail-block-header><div class=icon><span class=godot-icon-bug></span></div><div class=label><span>Issues</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/issues/71795>Godot 4 editor UI (menus) significantly slower than 3.x #71795</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=distribute-separate-debug-symbols class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Distribute separate debug symbols</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#distribute-separate-debug-symbols><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Debug symbols allow developers to obtain more information when Godot crashes or logs an error. Currently, developers will only have debug symbols if they compile the engine from scratch. By distributing debug symbols for the official builds, developers would be able to easily diagnose crashes without making a custom build of the engine.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>For all platforms that support separated debug symbols.</div></div><div class="detail-block proposals"><div class=detail-block-header><div class=icon><span class=godot-icon-zap></span></div><div class=label><span>Proposals</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot-proposals/issues/1342>Distribute official builds with full debugging symbols #1342</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=improve-gamepad-support class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Improve gamepad support</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#improve-gamepad-support><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>We often receive issue reports about gamepad support, as the numbers of gamepads never cease to increase. As we wish to support as many input devices as possible, we want to work towards better support.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>We need to investigate how we can do this. One way would be to incorporate more code from SDL, or to integrate SDL_input directly in the engine.</div></div><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/87925>Use SDL for joypad input on Linux #87925</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=improve-behavior-of-multiple-monitors-with-different-resolutions-and-dpi-scaling-factors class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Improve behavior of multiple monitors with different resolutions and DPI scaling factors</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#improve-behavior-of-multiple-monitors-with-different-resolutions-and-dpi-scaling-factors><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Godot games should be able to seamlessly work when dragged across multiple monitors even when the monitors have different resolutions and DPI scaling factors.</div><div class=element-details><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/86022>[WIP] Implement native DPI scaling. #86022</a></ul></div></div></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=android class="category level-2"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#android><span class=anchor-icon></span></a></div><h3 class=category-title><div class=category-title-text>Android</div></h3><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=help-developers-bring-games-to-android class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Help developers bring games to Android</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#help-developers-bring-games-to-android><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>From <a href=https://docs.google.com/forms/d/e/1FAIpQLScKWGJoLEeNW1qrsDfZRfk7gHultapacH5ZhQmo9XRZADW1IQ/viewanalytics>the results of the 2025 community poll</a>, Android is the fifth most targeted platform (34.4%) and is the third largest source of revenue.
|
||
Yet Godot developers targeting Android suffer from lack of tools and plugins to allow them to properly integrate with the ecosystem and monetize their efforts.
|
||
Starting with Godot 4.6, we will be working to close this gap.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=improve-debugging-of-reports-from-google-play class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Improve debugging of reports from the Google Play console</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#improve-debugging-of-reports-from-google-play><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>When your game launches on Google Play, you will start to get automated reports from players highlighting issues like freezes, crashes, or poor performance. Right now that information is hard to make sense of due to the lack of debug symbols. We want to make it easier for users to utilize these reports either by providing debug symbols, or streamlining the process for developers to upload debug symbols themselves.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=android-editor-improvements class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Android editor improvements</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#android-editor-improvements><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>In our <a href=/article/godotcon-2025-xr-android-recap/>What’s New in Android & XR</a> article from June 2025, data was shared about the growing user-base of the Android editor, as well as the <a href="https://www.youtube.com/watch?v=qoCWp_oP9Ng">pain points</a> encountered by its users.
|
||
This priority will track the work to address the observed needs and to improve the stability and user experience of the editor.</div><div class=element-details></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=linuxbsd class="category level-2"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#linuxbsd><span class=anchor-icon></span></a></div><h3 class=category-title><div class=category-title-text>Linux/BSDs</div></h3><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=multi-window-support-for-wayland-compositor class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Multi window support for Wayland compositor</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#multi-window-support-for-wayland-compositor><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Right now the Wayland compositor is limited to making use of a single window. In order to achieve parity with other platforms, we need to add support for creating multiple windows.</div><div class=element-details></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=web class="category level-2"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#web><span class=anchor-icon></span></a></div><h3 class=category-title><div class=category-title-text>Web</div></h3><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=improve-web-export-size class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Improve Web export size</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#improve-web-export-size><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>As Godot grows in features, it also grows in size. Web games need to be as small as possible and the size of the engine is becoming a pain point for web games. We need to find ways to reduce the binary size as much as possible and provide tools to developers to easily cut features and reduce the size further.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=improve-loading-time-for-web-builds class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Improve loading time for web builds</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#improve-loading-time-for-web-builds><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Currently, if no specific steps are taken by the game developer, resources for a game on the Web are bundled into one single <code class="language-plaintext highlighter-rouge">.pck</code> file. As users need to download the entire game’s assets at front, we need to find a better way to split the loading throughout the game, only when needed. This would greatly improve the starting time of the game.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>We need to investigate ways to solve the issue. We think a custom asynchronous filesystem could fix the issue, downloading files individually when needed.</div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=customizing-engine-builds-by-detecting-used-features class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Customizing engine builds by detecting used features from a project</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#customizing-engine-builds-by-detecting-used-features><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>For most platforms, the current official Godot builds suffice. Games may not use every feature the build has under the hood, but storage is usually not an issue. But Web platform games require the developer to optimize the load size (as bandwidth can be limited) and the load speed (Internet speed can vary).<p>We are investigating how we can reduce the build size, starting by offering an easy way to the users to customize their builds.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>We’re thinking (out loud) about:<ul><li>investigating the gains possible by customizing the engine builds<li>documenting the “Edit Compilation Configuration Profile” tool offered in the Editor<li>finding a way to offer more official Web exports</ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=continue-to-improve-compatibility-across-devices-and-browsers class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Continue to improve compatibility across devices and browsers</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#continue-to-improve-compatibility-across-devices-and-browsers><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p><a href=https://godotengine.org/article/progress-report-web-export-in-4-3/>Before 4.3’s introduction of single-threaded builds</a>, we had some compatibility issues, especially on macOS and iOS devices. The problem is maybe less important than it once was, but we continue to be alert about compatibility issues that can exist now or at any point in the future.</div><div class=element-details></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=xr class="category level-2"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#xr><span class=anchor-icon></span></a></div><h3 class=category-title><div class=category-title-text>XR</div></h3><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=enhance-openxr-action-map-to-support-binding-modifier class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Enhance OpenXR action map to support binding modifier</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#enhance-openxr-action-map-to-support-binding-modifier><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>OpenXR’s action map is similar to Godot’s input map, in that it allows mapping inputs to in-game actions. We’d like to enhance Godot’s support of OpenXR action maps by allowing the developer to apply modifiers to the actions, such as setting thresholds, enabling haptics, or converting analog inputs (like thumbsticks and trackpads) to D-Pad-like actions.</div><div class=element-details><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/97140>OpenXR: Add support for binding modifiers #97140</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=make-action-map-system-available-to-webxr class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Make action map system available to WebXR</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#make-action-map-system-available-to-webxr><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>OpenXR uses the “OpenXR action map system” for handling input, whereas WebXR (and any other XR SDKs added via GDExtension) will use their own way of handling input. This complicates making a game that will work on both OpenXR and WebXR. We’d like to add a generalized XR action map system, which will use the OpenXR action map system on OpenXR, but provide a fallback implementation that can be used with any XR SDK.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>And eventually other platforms.</div></div><div class="detail-block proposals"><div class=detail-block-header><div class=icon><span class=godot-icon-zap></span></div><div class=label><span>Proposals</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot-proposals/issues/6548>Implement generalized XR action map system for use outside OpenXR #6548</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=add-openxr-support-for-d3d12-and-metal class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Add OpenXR support for DirectX12 and Metal</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#add-openxr-support-for-d3d12-and-metal><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Currently, when using OpenXR, you can use the Compatibility renderer or the <em>Forward+</em> and <em>Mobile</em> renderers, but only when using Vulkan. We want to add support for DirectX12 and Metal so that users on all platforms can benefit from OpenXR.</div><div class=element-details><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/98872>Openxr KHR metal enable #98872</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=move-khronos-loader-from-vendor-to-core class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Move Khronos loader support from our vendor plugin to the core of the Godot</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#move-khronos-loader-from-vendor-to-core><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>The end goal is the ability to deploy Godot XR applications made with the executable downloaded from the website on any Android OpenXR conformant device.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>The Vendor plugin should only be required to use vendor specific features.</div></div><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>As part of this we will add support for Android to use the Khronos loader.</div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=add-support-for-render-models class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Add support for render models (i.e. displaying the correct controllers and other peripherals)</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#add-support-for-render-models><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>This feature is already supported for the Meta vendor solution. Once a core API is becoming available in OpenXR, we intend to adopt this feature quickly.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=continue-development-of-the-godot-xr-tools-library class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Continue development of the Godot XR Tools library</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#continue-development-of-the-godot-xr-tools-library><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>The Godot XR Tools library offers out of the box locomotion and interaction solutions built on top of Godot’s core functionality. We intend to continue developing these tools.</div><div class=element-details></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=scripting class="category level-1"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#scripting><span class=anchor-icon></span></a></div><h2 class=category-title><div class=category-title-text>Scripting</div></h2><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=implement-namespaces-for-scripting-languages class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Implement namespaces for scripting languages</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#implement-namespaces-for-scripting-languages><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>One of the main complaints of the GDScript language is the lack of namespaces. A namespace is a way to group code by a common name. This permits the reuse of classes using the same name, as long as they can be differentiated by their namespace.<p>But the problem can be found with .NET and GDExtension too. The problem occurs at the registration phase of classes in our internal database.<p>With namespaces, plugin developers could use their own class names without worrying about clashing with users’ internal ones.</div><div class=element-details></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=gdscript class="category level-2"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#gdscript><span class=anchor-icon></span></a></div><h3 class=category-title><div class=category-title-text>GDScript</div></h3><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=polish-and-ensure-that-classname-is-robust class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Polish and ensure that <code class="language-plaintext highlighter-rouge">class_name</code> is robust and works in all cases</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#polish-and-ensure-that-classname-is-robust><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p><code class="language-plaintext highlighter-rouge">class_name</code> is an handy feature. It permits the user to name their classes and refer to it directly instead of having to preload the class using its path.<p>Unfortunately, using <code class="language-plaintext highlighter-rouge">class_name</code> comes with a few caveats. We do hope to fix these issues in order to give users a better experience with this feature.</div><div class=element-details><div class="detail-block trackers"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined list_alt_check">list_alt_check</span></div><div class=label><span>Trackers</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/issues/99766>[TRACKER] GDScript <code class="language-plaintext highlighter-rouge">class_name</code> #99766</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=attain-full-coverage-of-static-type-hints class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Attain full coverage of static type hints</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#attain-full-coverage-of-static-type-hints><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Static type hints are a well loved feature in GDScript, as not only does it improve performance, but it lowers the amount of possible typing issues.<p>We intend to implement static typing for areas that currently lack them. We are thinking about typed dictionaries (already merged for 4.4) and enforcing the typing of signals.</div><div class=element-details><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/78656>Implement typed dictionaries #78656</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=improve-performance-via-compilation class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Improve performance via compilation</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#improve-performance-via-compilation><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>While GDScript is fast enough to operate as glue between nodes and program basic logic, its performance is lackluster when it comes to pure data crunching. We would like to improve the processing capabilities of the language and its run-time.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>We’re currently investigating whether to compile GDScript, or to use <a href=https://en.wikipedia.org/wiki/Ahead-of-time_compilation>AOT (ahead-of-time)</a> or <a href=https://en.wikipedia.org/wiki/Just-in-time_compilation>JIT (just-in-time)</a> compilation techniques.</div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=add-traits-to-gdscript class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Add traits to GDScript</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#add-traits-to-gdscript><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>The main way to reuse code when writing code in GDScript is to use inheritance. While it works well for the most part, it leaves developers to rewrite a lot of code when that method cannot be used. So traits is the path we’re going forward to solve that issue.</div><div class=element-details><div class="detail-block proposals"><div class=detail-block-header><div class=icon><span class=godot-icon-zap></span></div><div class=label><span>Proposals</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot-proposals/issues/6416>Add a Trait system for GDScript #6416</a></ul></div></div></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=dotnet class="category level-2"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#dotnet><span class=anchor-icon></span></a></div><h3 class=category-title><div class=category-title-text>.NET</div></h3><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=enable-users-to-export-their-csharp-projects-on-the-web class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Enable users to export their C# projects on the Web</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#enable-users-to-export-their-csharp-projects-on-the-web><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>The technology stars seem to align in order to enable us to export C# projects on the Web. We fully intend to make this a reality as soon as possible.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=deprecate-dotnet-godot-builds-for-a-dotnet-plugin class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Deprecate .NET Godot builds for a .NET plugin</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#deprecate-dotnet-godot-builds-for-a-dotnet-plugin><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>For the time being, users are required to download an entirely separate Godot build in order to use C# features. With our new upcoming .NET module, we intend to support C# with a simple plugin.<p>Everyone wins, as users won’t have to choose a special version to run C#. It reduces the number of builds on our side by half. Also, it will simplify .NET maintenance.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=host-a-dotnet-specific-documentation-website class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Host a .NET-specific documentation website</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#host-a-dotnet-specific-documentation-website><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>While the API documentation is complete, it currently lacks a specific .NET API. Both for newcomers and experienced users, it can be difficult or imprecise to translate the GDScript/C++ API to C#.<p>We intend to host a new website that will host an API documentation oriented for .NET users.</div><div class=element-details></div><div class=element-edit></div></div></details></div></ul></div></details></div></div><div id=gdextension class="category level-2"><div class=container><details class=category-details open><summary class=category-summary><div class=category-anchor-container><a class=category-anchor href=#gdextension><span class=anchor-icon></span></a></div><h3 class=category-title><div class=category-title-text>GDExtension</div></h3><div class=category-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=category-content><ul class=element-list><li class=element-list-item><div id=allow-compiling-godot-as-a-library class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Allow compiling Godot as a library that can be loaded and used by other applications</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#allow-compiling-godot-as-a-library><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>Currently, the engine’s capabilities are only accessible if the application itself is a Godot application. However, there are many situations where an application might want to use Godot as an intermediary. One case would be an application that uses native OS API for it’s UI, but needs Godot to render a complex 3D scene. Our goal is to make Godot available as a library to expand the possible uses of the engine.</div><div class=element-details><div class="detail-block note"><div class=detail-block-header><div class=icon><span class="material-symbols-outlined info">info</span></div><div class=label><span>Note</span></div></div><div class=detail-block-content><p>This feature is better known as “LibGodot”.</div></div><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/90510>Migeran LibGodot Feature #90510</a></ul></div></div></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=allow-gdextensions-to-communicate-with-one-another class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Allow GDExtensions to communicate with one another</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#allow-gdextensions-to-communicate-with-one-another><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>GDExtension was created to allow developers to create extensions as if they were coding a module directly in Godot’s source code. Currently, modules can depend on one another, but this is not yet possible for extensions. We aim to expose the necessary API to be able to. So, for example, an extension built with <a href=https://godot-rust.github.io/>godot-rust</a> would be able to extend an extension built with <a href=https://github.com/godotengine/godot-cpp>godot-cpp</a>.</div><div class=element-details></div><div class=element-edit></div></div></details></div><li class=element-list-item><div id=add-the-ability-to-enable-disable-gdextensions-in-project-settings class=element><details class=element-main><summary class=element-title><div class=text><div class="element-title-container element-title-container-title-text"><div class=element-title-text><p>Add the ability to enable/disable GDExtensions in project settings</div></div><div class="element-title-container element-title-container-anchor"><a class=element-title-anchor href=#add-the-ability-to-enable-disable-gdextensions-in-project-settings><span class=anchor-icon></span></a></div></div><div class=element-accordion-toggle><span class="material-symbols-outlined more">unfold_more</span>
|
||
<span class="material-symbols-outlined less">unfold_less</span></div></summary><div class=element-content><div class=element-description><p>For the time being, there’s no way to disable a GDExtension from a project without deleting the related files themselves. We plan to create a dialog akin to the Plugin tab in the Project settings in order to easily enable and disable GDExtensions.</div><div class=element-details><div class="detail-block prs"><div class=detail-block-header><div class=icon><span class=godot-icon-git-pull-request></span></div><div class=label><span>Pull requests</span></div></div><div class=detail-block-content><ul><li><a href=https://github.com/godotengine/godot/pull/90979>Allow creating GDExtension plugins from inside the Godot editor #90979</a></ul></div></div></div><div class=element-edit></div></div></details></div></ul></div></details></div></div></div><div id=scroll-to-top><a class=link href=#priorities-navigation><span>⬆</span></a></div><div class=foundation><div class=container></div></div><div class=credits><div class=container></div></div></div></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><li><a href=/consoles/>Console support</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-2026 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?7></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:not(.manual) 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 n=0;n<e.length;n++){const s=e[n];let o="download";"version"in s.dataset&&s.dataset.version==="3"&&(o="download/3.x");let t="windows";navigator.platform.indexOf("Mac")!==-1?t="macos":navigator.userAgent.indexOf("Android")!==-1?t="android":navigator.platform.indexOf("Linux")!==-1&&(t="linux"),s.href=`/${o}/${t}/`}})</script> |