Merge branch 'master' into made-with-godot-section

This commit is contained in:
Emi
2024-08-01 12:26:04 +02:00
178 changed files with 2435 additions and 410 deletions

View File

@@ -31,3 +31,10 @@ jobs:
- name: Build the static website
run: bundle exec jekyll build
# Upload resulting "_site" directory as artifact
- uses: actions/upload-artifact@v4
with:
name: site
path: _site/

View File

@@ -36,10 +36,7 @@ jobs:
- name: Build the static website
run: bundle exec jekyll build
# copy the versions.yml file to the root of the _site folder
- name: Copy versions.yml to _site
run: cp _data/versions.yml _site/versions.yml
# Publish the build results

View File

@@ -55,11 +55,13 @@ GEM
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.5)
rexml (3.2.8)
strscan (>= 3.0.9)
rouge (3.30.0)
safe_yaml (1.0.5)
sassc (2.4.0)
ffi (~> 1.9)
strscan (3.1.0)
terminal-table (2.0.0)
unicode-display_width (~> 1.1, >= 1.1.1)
unicode-display_width (1.8.0)
@@ -67,7 +69,7 @@ GEM
PLATFORMS
arm64-darwin-22
x64-unknown
arm64-darwin-23
x64-unknown
x86_64-linux
@@ -80,4 +82,4 @@ DEPENDENCIES
webrick (~> 1.7)
BUNDLED WITH
2.4.13
2.4.18

View File

@@ -85,10 +85,6 @@ The project is built automatically by GitHub Actions whenever the `master` branc
itself should not be deployed, as it only contains the source files. The built version of the website is available as the
`published` branch instead.
The deployed website has to serve a file for the editor to read and check if there are new versions of the Engine available to
download. This file is `_data/versions.yml`. It gets copied to `_site/versions.yml` when the website is built using the GitHub
Action described in `.github/workflows/build-website.yml`.
Note that this is not relevant for local development. Locally you would build the website in place and then serve the `_site`
folder. See the detailed instructions above.

View File

@@ -1,9 +1,9 @@
- name: Adam Scott
image: /assets/images/authors/adamscott.webp
- name: Andrea Catania
image: /assets/images/authors/default_avatar.svg
- name: Ariel Manzur
image: /assets/images/authors/punto.png
- name: Bartleby Lawnjelly
image: /assets/images/authors/default_avatar.svg
- name: Bastiaan Olij
image: /assets/images/authors/bastiaan.jpg
- name: Camille Mohr-Daurat
@@ -42,8 +42,10 @@
image: /assets/images/authors/julian.webp
- name: karroffel
image: /assets/images/authors/default_avatar.svg
- name: Nathalie Galla
image: /assets/images/authors/nathalie.jpg
- name: lawnjelly
image: /assets/images/authors/lawnjelly.webp
- name: Nat
image: /assets/images/authors/nat.jpg
- name: Nathan GDQuest
image: /assets/images/authors/nathan.webp
- name: Mark DiBarry

View File

@@ -85,12 +85,12 @@ China:
- title: QQ Group
url: https://qm.qq.com/cgi-bin/qm/qr?k=hEscGFbQTiOX0bhsTT2myxM3PifsAmIp&jump_from=webapi
Croatia:
- name: Croatia
- name: Game Developers Croatia
links:
- title: Discord
url: https://discord.gg/6gjwfSG
url: https://discord.gg/CbZKkqR
- title: Facebook
url: https://web.facebook.com/groups/godotenginecroatia/
url: https://www.facebook.com/groups/gamedevcro
Czech Republic and Slovakia:
- name: Godot CZ/SK
links:
@@ -336,6 +336,10 @@ Taiwan:
links:
- title: Facebook
url: https://www.facebook.com/groups/godot.taiwan
- name: Godot Adventurers (Godot 開拓者交流互助公會)
links:
- title: Discord
url: https://discord.gg/kpZ5G9HeYT
Turkey:
- name: Godot Engine Türkiye
links:

View File

@@ -6,9 +6,6 @@ patron:
link: "https://re-logic.com/"
image: "https://fund.godotengine.org/static/logos/re-logic.png"
platinum:
- name: "Heroic Labs"
link: "https://heroiclabs.com/"
image: "https://fund.godotengine.org/static/logos/heroiclabs.png"
- name: "W4 Games"
link: "https://w4games.com/"
image: "https://fund.godotengine.org/static/logos/w4.png"
@@ -47,9 +44,15 @@ silver:
- name: "Chasing Carrots"
link: "https://www.chasing-carrots.com"
image: "https://fund.godotengine.org/static/logos/chasing-carrots.webp"
- name: "Null"
link: "https://null.com/"
image: "https://fund.godotengine.org/static/logos/null.svg"
- name: "Indoor Astronaut"
link: "https://indoorastronaut.ch/"
image: "https://fund.godotengine.org/static/logos/indoor-astronaut.png"
- name: "LoadComplete"
link: "https://loadcomplete.com/"
image: "https://fund.godotengine.org/static/logos/loadcomplete.png"
- name: "Null"
link: "https://null.com/"
image: "https://fund.godotengine.org/static/logos/null.svg"
- name: Copia Wealth Studios
link: "https://copiawealthstudios.com/"
image: "https://fund.godotengine.org/static/logos/copia-wealth-studios.svg"

View File

@@ -1,8 +1,23 @@
- name: "4.3"
flavor: "dev5"
release_date: "15 March 2024"
release_notes: "/article/dev-snapshot-godot-4-3-dev-5/"
flavor: "rc1"
release_date: "25 July 2024"
release_notes: "/article/release-candidate-godot-4-3-rc-1/"
releases:
- name: "beta3"
release_date: "9 July 2024"
release_notes: "/article/dev-snapshot-godot-4-3-beta-3/"
- name: "beta2"
release_date: "20 June 2024"
release_notes: "/article/dev-snapshot-godot-4-3-beta-2/"
- name: "beta1"
release_date: "31 May 2024"
release_notes: "/article/dev-snapshot-godot-4-3-beta-1/"
- name: "dev6"
release_date: "1 May 2024"
release_notes: "/article/dev-snapshot-godot-4-3-dev-6/"
- name: "dev5"
release_date: "15 March 2024"
release_notes: "/article/dev-snapshot-godot-4-3-dev-5/"
- name: "dev4"
release_date: "29 February 2024"
release_notes: "/article/dev-snapshot-godot-4-3-dev-4/"
@@ -336,10 +351,16 @@
release_notes: "/article/dev-snapshot-godot-4-0-alpha-1/"
- name: "3.6"
flavor: "beta4"
release_date: "25 January 2024"
release_notes: "/article/dev-snapshot-godot-3-6-beta-4/"
flavor: "rc1"
release_date: "9 July 2024"
release_notes: "/article/release-candidate-godot-3-6-rc-1/"
releases:
- name: "beta5"
release_date: "13 May 2024"
release_notes: "/article/dev-snapshot-godot-3-6-beta-5/"
- name: "beta4"
release_date: "25 January 2024"
release_notes: "/article/dev-snapshot-godot-3-6-beta-4/"
- name: "beta3"
release_date: "16 August 2023"
release_notes: "/article/dev-snapshot-godot-3-6-beta-3/"

View File

@@ -57,7 +57,7 @@
<a class="card-download-other" href="/download/archive/{{ release_version.name }}-{{ release_version.flavor }}">
Export templates and other downloads
</a>
<a class="card-download-donate" href="/donate">
<a class="card-download-donate" href="/donate/">
Make a Donation
</a>
</div>

View File

@@ -0,0 +1,80 @@
<style>
.section-download {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 16px;
background-color: var(--dark-color);
padding: 24px;
padding-bottom: 60px;
width: auto;
max-width: 100%;
}
@media (max-width: 900px) {
.section-download {
padding: 20px;
}
}
.section-download h2 {
color: var(--dark-color-text-title);
font-weight: 600;
margin: 0;
margin-bottom: 16px;
}
.section-download p {
color: var(--dark-color-text);
margin: 0;
}
.section-download-ready {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 26px;
}
.section-download-ready .btn-download {
min-width: 310px;
}
.section-download .download-3 {
text-align: center;
color: #ffffffd6;
font-weight: 100;
font-size: 15px;
}
.section-download .download-3 a {
color: inherit;
text-decoration-color: inherit;
text-decoration-thickness: 1px;
}
.section-download .download-3 a:hover {
color: white;
}
</style>
<div id="call-to-action" class="container card section-download">
{% if include.title %}
<h2>{{ include.title }}</h2>
{% else %}
<h2>Ready to start?</h2>
{% endif %}
<div class="section-download-ready">
{% assign stable_version_3 = site.data.versions | find: "featured", "3" %}
{% assign stable_version_4 = site.data.versions | find: "featured", "4" %}
<p>Download the <strong>latest version of Godot 4</strong> right now and begin your creative journey!</p>
<a href="/download/windows/" class="btn btn-download set-os-download-url" data-version="4"
title="Download the latest version of Godot 4">
<div class="download-title">Download Latest</div>
<div class="download-hint">{{ stable_version_4.name }}</div>
</a>
<span class="download-3">Looking for <a href="/download/windows/" class="set-os-download-url" data-version="3" title="Download the long-term support version of Godot 3">Godot 3</a> or a <a href="/download/archive">previous version</a>?</span>
</div>
</div>

View File

@@ -14,37 +14,38 @@
<div id="sitemap">
<ul class="sitemap-group">
<li><strong>Get Godot</strong></li>
<li><a href="/download/windows" class="set-os-download-url">Download</a></li>
<li><a href="/download/windows/" class="set-os-download-url">Download</a></li>
<li><a href="/download/archive/">Release Archive</a></li>
<li><a href="https://editor.godotengine.org/releases/latest/">Web Editor</a></li>
<li>&nbsp;</li>
<li><strong>Public Relations</strong></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/community">Communities and Events</a></li>
<li><a href="/press">Press Kit</a></li>
<li><a href="/blog/">Blog</a></li>
<li><a href="/community/">Communities and Events</a></li>
<li><a href="/press/">Press Kit</a></li>
</ul>
<ul class="sitemap-group">
<li><strong>About Godot</strong></li>
<li><a href="/features">Features</a></li>
<li><a href="/showcase">Showcase</a></li>
<li><a href="/education">Education</a></li>
<li><a href="/license">License</a></li>
<li><a href="/code-of-conduct">Code of Conduct</a></li>
<li><a href="/privacy-policy">Privacy Policy</a></li>
<li><a href="/features/">Features</a></li>
<li><a href="/showcase/">Showcase</a></li>
<li><a href="/education/">Education</a></li>
<li><a href="/license/">License</a></li>
<li><a href="/code-of-conduct/">Code of Conduct</a></li>
<li><a href="/privacy-policy/">Privacy Policy</a></li>
<li><a href="https://fund.godotengine.org">Donate</a></li>
</ul>
<ul class="sitemap-group">
<li><strong>Project Team</strong></li>
<li><a href="/governance">Governance</a></li>
<li><a href="/teams">Teams</a></li>
<li><a href="/governance/">Governance</a></li>
<li><a href="/teams/">Teams</a></li>
<li>&nbsp;</li>
<li><strong>Extra Resources</strong></li>
<li><a href="/asset-library/asset">Asset Library</a></li>
<li><a href="https://godotengine.org/asset-library/asset">Asset Library</a></li>
<li><a href="https://docs.godotengine.org">Documentation</a></li>
<li><a href="https://github.com/godotengine">Code Repository</a></li>
</ul>
</div>
<div id="social" class="dark-desaturate">
<h4 class="text-right"><a href="/contact">Contact us</a></h4>
<h4 class="text-right"><a href="/contact/">Contact us</a></h4>
<div class="flex justify-space-between" style="gap: 3px;">
<a href="https://github.com/godotengine" target="_blank" rel="noopener">
<img src="/assets/footer/github_logo.svg" width="32" height="32" alt="GitHub">
@@ -110,7 +111,7 @@
link_platform = 'linux';
}
link.href = `/${link_slug}/${link_platform}`;
link.href = `/${link_slug}/${link_platform}/`;
}
});
</script>

View File

@@ -13,18 +13,18 @@
<nav id="nav">
<ul class="left">
<li><a href="/features">Features</a></li>
<li class="only-on-mobile"><a href="/showcase">Showcase</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/community">Community</a></li>
<li><a href="/contact">About</a></li>
<li><a href="/features/">Features</a></li>
<li class="only-on-mobile"><a href="/showcase/">Showcase</a></li>
<li><a href="/blog/">Blog</a></li>
<li><a href="/community/">Community</a></li>
<li><a href="/contact/">About</a></li>
<li><a href="https://godotengine.org/asset-library/asset">Assets</a></li>
</ul>
<ul class="right">
<li><a href="/download/windows" class="set-os-download-url">Download</a></li>
<li><a href="https://docs.godotengine.org">Learn</a></li>
<li><a href="https://docs.godotengine.org/en/stable/community/contributing/index.html">Contribute</a></li>
<li><a href="/download/windows/" class="set-os-download-url">Download</a></li>
<li><a href="https://docs.godotengine.org">Docs</a></li>
<li><a href="https://docs.godotengine.org/en/stable/contributing/how_to_contribute.html">Contribute</a></li>
{% comment %}
We add the control character at the end to force the heart to render as text and not as an emoji.
{% endcomment %}

View File

@@ -33,7 +33,7 @@ collection: article
gap: 30px;
padding: 20px 0 39px;
}
.head .main > :last-child,
.head .main > :last-child,
.head .main > :first-child {
margin: 0;
}
@@ -82,13 +82,13 @@ collection: article
<div class="container">
<!-- Search -->
<!-- Categories -->
<div class="tags">
<h3>Categories </h3>
<a href="/blog" title="Show all categories">
<a href="/blog/" title="Show all categories">
<div class="tag tag--default {% if page.category == 'all' %}active{% endif %}">All</div>
</a>

View File

@@ -21,7 +21,7 @@
<link rel="alternate" type="application/rss+xml" title="Godot News" href="/rss.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?111">
<link rel="stylesheet" href="/assets/css/main.css?112">
<link rel="stylesheet" href="/assets/css/tobii.min.css">
<link rel="preload" as="font" href="/assets/fonts/Montserrat-Bold.woff2" crossorigin>
<link rel="preload" as="font" href="/assets/fonts/Montserrat-ExtraBold.woff2" crossorigin>

View File

@@ -6,7 +6,7 @@ layout: default
{% include header.html %}
<link rel="stylesheet" href="/assets/css/transparent-nav.css">
<link rel="stylesheet" href="/assets/css/download.css?2">
<link rel="stylesheet" href="/assets/css/download.css?3">
<style>
.digital-stores .digital-store-list {
grid-template-columns: 1fr 1fr;
@@ -54,7 +54,7 @@ layout: default
{% endfor %}
<p class="previous-releases">
<strong class="previous-releases-featured">For the latest version, <a href="/download/windows" class="set-os-download-url" data-version="4">Download Godot 4</a>.</strong>
<strong class="previous-releases-featured">For the latest version, <a href="/download/windows/" class="set-os-download-url" data-version="4">Download Godot 4</a>.</strong>
<br>
You can find previous releases in the <a href="/download/archive">download archive</a>.
</p>
@@ -263,15 +263,6 @@ layout: default
</p>
</div>
<div class="other-download-card">
<h3>Blender ESCN exporter</h3>
<p>
Blender add-on to export scenes to Godot's scene format directly.<br>
Godot 3 also supports glTF 2.0 and OBJ.
</p>
<a href="https://github.com/godotengine/godot-blender-exporter">Godot Blender exporter</a>
</div>
</div>
</div>
@@ -378,6 +369,13 @@ layout: default
<a href="https://godotengine.org/asset-library/asset?category=10&support[official]=1">official demo projects</a>
showcasing some of the engine features.
</li>
<li>
A guide to install Godot on
<a href="https://docs.godotengine.org/en/stable/about/faq.html#linux">Linux</a>,
<a href="https://docs.godotengine.org/en/stable/about/faq.html#windows">Windows</a>,
and
<a href="https://docs.godotengine.org/en/stable/about/faq.html#macos">macOS</a>.
</li>
</ul>
<div class="btn-back-to-downloads">

View File

@@ -6,7 +6,7 @@ layout: default
{% include header.html %}
<link rel="stylesheet" href="/assets/css/transparent-nav.css">
<link rel="stylesheet" href="/assets/css/download.css?2">
<link rel="stylesheet" href="/assets/css/download.css?3">
<style>
.hero {
background-image: url('/assets/download/download-background-4.x.webp');
@@ -49,9 +49,7 @@ layout: default
{% endfor %}
<p class="previous-releases">
<strong class="previous-releases-featured">For the LTS version, <a href="/download/3.x/windows" class="set-os-download-url" data-version="3">Download Godot 3</a>.</strong>
<br>
You can find previous releases in the <a href="/download/archive">download archive</a>.
Looking for <strong class="previous-releases-featured"><a href="/download/3.x/windows" class="set-os-download-url" data-version="3">Godot 3</a></strong> or a <strong><a href="/download/archive">previous version</a>?</strong>.
</p>
</div>
</div>
@@ -202,7 +200,7 @@ layout: default
<img width="24" height="24" src="/assets/images/platforms/macos.svg" title="macOS" alt="macOS" />
<span>macOS</span>
</a>
<a href="/download/windows" class="tab title-font {% if page.platform == 'Windows' %} active {% endif %}">
<a href="/download/windows/" class="tab title-font {% if page.platform == 'Windows' %} active {% endif %}">
<img width="24" height="24" src="/assets/images/platforms/windows.svg" title="Windows" alt="Windows" />
<span>Windows</span>
</a>
@@ -252,15 +250,6 @@ layout: default
</p>
</div>
<div class="other-download-card">
<h3>Blender ESCN exporter</h3>
<p>
Blender add-on to export scenes to Godot's scene format directly.<br>
Godot 3 also supports glTF 2.0 and OBJ.
</p>
<a href="https://github.com/godotengine/godot-blender-exporter">Godot Blender exporter</a>
</div>
</div>
</div>
@@ -345,7 +334,7 @@ layout: default
<p class="thankyou-donate">
Godot exists thanks to people like you! Consider supporting continued development of the engine with a donation.
</p>
<a href="/donate" class="btn btn-donate">
<a href="/donate/" class="btn btn-donate">
Make a Donation
</a>
@@ -367,6 +356,13 @@ layout: default
<a href="https://godotengine.org/asset-library/asset?category=10&support[official]=1">official demo projects</a>
showcasing some of the engine features.
</li>
<li>
A guide to install Godot on
<a href="https://docs.godotengine.org/en/stable/about/faq.html#linux">Linux</a>,
<a href="https://docs.godotengine.org/en/stable/about/faq.html#windows">Windows</a>,
and
<a href="https://docs.godotengine.org/en/stable/about/faq.html#macos">macOS</a>.
</li>
</ul>
<div class="btn-back-to-downloads">

View File

@@ -14,22 +14,22 @@ current_tab: ''
</div>
<div class="tabs">
<a href="/contact" class="title-font {% if page.current_tab == 'contact' %} active {% endif %}">
<a href="/contact/" class="title-font {% if page.current_tab == 'contact' %} active {% endif %}">
Contact
</a>
<a href="/code-of-conduct" class="title-font {% if page.current_tab == 'code-of-conduct' %} active {% endif %}">
<a href="/code-of-conduct/" class="title-font {% if page.current_tab == 'code-of-conduct' %} active {% endif %}">
Code of Conduct
</a>
<a href="/privacy-policy" class="title-font {% if page.current_tab == 'privacy-policy' %} active {% endif %}">
<a href="/privacy-policy/" class="title-font {% if page.current_tab == 'privacy-policy' %} active {% endif %}">
Privacy
</a>
<a href="/governance" class="title-font {% if page.current_tab == 'governance' %} active {% endif %}">
<a href="/governance/" class="title-font {% if page.current_tab == 'governance' %} active {% endif %}">
Governance
</a>
<a href="/teams" class="title-font {% if page.current_tab == 'teams' %} active {% endif %}">
<a href="/teams/" class="title-font {% if page.current_tab == 'teams' %} active {% endif %}">
Teams
</a>
<a href="/license" class="title-font {% if page.current_tab == 'license' %} active {% endif %}">
<a href="/license/" class="title-font {% if page.current_tab == 'license' %} active {% endif %}">
License
</a>
</div>

View File

@@ -45,7 +45,7 @@ layout: default
<div class="main">
<div style="margin: 1.25rem 0">
<a href="/showcase"><strong>&lt;</strong>&nbsp;&nbsp;Back to showcase</a>
<a href="/showcase/"><strong>&lt;</strong>&nbsp;&nbsp;Back to showcase</a>
</div>
<h1 class="intro-title">{{ page.title }}</h1>

View File

@@ -1,5 +1,11 @@
require 'pathname'
# Minify assets after each build
Jekyll::Hooks.register :site, :post_write do
puts "Minifying assets"
`minify -r -o _site/ _site/`
# Project path
Pathname here = Pathname.new(Dir.pwd)
Pathname from = Pathname.new(File.join(Dir.pwd, "_site"))
Pathname to = Pathname.new(Dir.pwd)
`minify -r -o #{to.relative_path_from(here)} #{from.relative_path_from(here)}`
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -155,7 +155,7 @@
}
@media (min-width: 768px) {
.other-download {
grid-template-columns: 1fr 1fr 1fr;
grid-template-columns: 1fr 1fr;
}
}

View File

@@ -1232,7 +1232,6 @@ section.hero .background-image {
section.hero .copy {
position: relative;
z-index: 1;
max-width: 670px;
margin-left: 0;
}
@@ -1247,7 +1246,6 @@ section.hero .copy p {
font-size: 20px;
line-height: 1.5;
margin-bottom: 20px;
max-width: 550px;
text-shadow: 0 0 28px #00000080;
color: white;
}
@@ -1270,7 +1268,7 @@ section.hero .wrapper {
position: relative;
max-width: 1200px;
margin: 0 auto;
padding: 200px 20px 120px;
padding: 180px 20px 100px;
}
@media (max-width: 650px) {
@@ -1376,6 +1374,42 @@ article.article-card .info span {
color: var(--secondary-color-text);
}
/* Article tables */
article table {
width: 100%;
border-collapse: collapse;
}
article table thead tr {
background-color: var(--button-card-background-color);
background-color: color-mix(in hsl longer hue, var(--button-card-background-color), white 20%);
}
article table tbody tr:nth-of-type(even) {
background-color: var(--background-color);
background-color: color-mix(in hsl longer hue, var(--background-color), white 20%);
}
article table tbody tr:nth-of-type(odd) {
background-color: color-mix(in hsl longer hue, var(--base-color), black 1%);
}
article table tbody tr td {
padding: 0.25em;
}
@media (prefers-color-scheme: dark) {
article table thead tr {
background-color: color-mix(in hsl longer hue, var(--button-card-background-color), black 20%);
}
article table tbody tr:nth-of-type(even) {
background-color: color-mix(in hsl longer hue, var(--background-color), black 20%);
}
article table tbody tr:nth-of-type(odd) {
background-color: color-mix(in hsl longer hue, var(--base-color), white 1%);
}
}
figure.article-cover figcaption {
opacity: 0.8;
line-height: 1.5

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 730 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

BIN
assets/showcase/kamaeru.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 707 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

View File

@@ -1,4 +1,7 @@
#!/usr/bin/env bash
SERVER_HOST="${SERVER_HOST:-0.0.0.0}"
SERVER_PORT="${SERVER_PORT:-4000}"
bundle install
bundle exec jekyll serve --config _config.yml,_config.development.yml --host 0.0.0.0
bundle exec jekyll serve --config _config.yml,_config.development.yml --host "$SERVER_HOST" --port "$SERVER_PORT"

View File

@@ -0,0 +1,115 @@
---
title: "Dev snapshot: Godot 3.6 beta 5"
excerpt: "This beta represents feature freeze for 3.6. We will now concentrate on bug fixing until we reach stable."
categories: ["pre-release"]
author: lawnjelly
image: /storage/blog/covers/dev-snapshot-godot-3-6-beta-5.webp
image_caption_title: "Backpack Battles"
image_caption_description: "A game by PlayWithFurcifer"
date: 2024-05-13 14:00:00
---
It has been a while since our last beta, and admittedly 3.6 seems to have been in development *for ever* (beta 1 was over a year ago!).
There are fewer developers now working on 3.x branch, but the main bottleneck to 3.x development has been on the release management side (i.e. reviewing, approving, and merging pull requests and building releases). Rémi usually manages releases, but his time has been largely monopolized by the huge growth in contributors to 4.x, and the consequent increase in his workload. For this reason we have been trying to get other engine maintainers more actively involved in release management, which is allowing enthusiasts to take on more of the work, and get everything running in a more efficient manner.
This is great news for Godot 3, as it means in the future we will more efficiently be able to address bugs, improve performance, and add new features, to keep Godot 4's baby brother as a force to be reckoned with.
This beta represents *feature freeze* for 3.6. We will now concentrate on bug fixing until we reach a stable release. Any new features will be scheduled for 3.7.
[Jump to the **Downloads** section](#downloads), and give it a spin right now, or continue reading to learn more about improvements in this release. You can also [try the **Web editor**](https://editor.godotengine.org/releases/3.6.beta5/) or the **Android editor** for this release. If you are interested in the latter, please request to join [our testing group](https://groups.google.com/g/godot-testers) to get access to pre-release builds.
---
*The cover illustration is from* [**Backpack Battles**](https://store.steampowered.com/app/2427700/Backpack_Battles/), *a massively popular PvP inventory management auto battler, developed by [PlayWithFurcifer](https://www.youtube.com/@playwithfurcifer) in Godot 3.5. The game was released in early access in March, and is gearing up towards a great full release later this year. You can buy or wishlist it on [Steam](https://store.steampowered.com/app/2427700/Backpack_Battles/), and follow the developers on [Twitter](https://twitter.com/TweetFurcifer) and [YouTube](https://www.youtube.com/@playwithfurcifer).*
## Highlights
It's been a while since the previous beta snapshot, so we wouldn't be surprised if you're not fully up-to-date on what are the most exciting changes going from Godot 3.5 to the current 3.6 beta. This beta 5 blog post focuses on changes since beta 4, so have a look at previous beta blog posts for a more complete overview of what's new ([beta 1](/article/dev-snapshot-godot-3-6-beta-1/), [beta 2](/article/dev-snapshot-godot-3-6-beta-2/), [beta 3](/article/dev-snapshot-godot-3-6-beta-3/), [beta 4](/article/dev-snapshot-godot-3-6-beta-4/)).
For a complete overview of the changes, see our [**interactive changelog**](https://godotengine.github.io/godot-interactive-changelog/#3.6).
Previous snapshots contained many 2D features, and this beta 5 adds a number of 3D features so now there should be something for everyone:
### Tighter Shadow Culling ([GH-84745](https://github.com/godotengine/godot/pull/84745))
Godot shadow mapping involves taking a simplified camera shot from the point of view of each shadow casting light, when objects move within this light volume. This happens every frame when objects are moving, and this can add up to a lot of draw calls for each light.
Tighter shadow culling reduces this workload considerably by eliminating draw calls for shadow casters that cannot cast a shadow that is visible from the main camera view. This involves some clever geometry, but the upshot is you should often see significantly better frame rates when using shadows.
This happens automatically.
### Discrete Level of Detail (LOD) ([GH-85437](https://github.com/godotengine/godot/pull/85437))
![LOD node example](/storage/blog/godot-3.6/lod_node_scene.webp)
The new LOD node provides simple but powerful LOD capabilities, allowing the engine to automatically change visual representation of objects based on the distance from the camera. An example would be simplifying trees in the distance in open world games.
This implementation of LOD differs dramatically from how LOD is implemented in Godot 4 as we chose to use a different implementation that better fits the architecture of Godot 3. In particular, we have removed the LOD settings from GeometryInstances and instead provide an LOD node which controls the LOD behavior of its children.
### Mesh Merging ([GH-61568](https://github.com/godotengine/godot/pull/61568))
![MergeGroup example](/storage/blog/godot-3.6/merge_group_house.webp)
Godot 3.6 now offers a comprehensive system for mesh merging, both at design time and at runtime. OpenGL can be severely bottlenecked by draw calls and state changes when drawing lots of objects. Now you can blast through these barriers and potentially render any number of similar objects in a single draw call.
As well as allowing you to optimize existing maps and moving objects, this also makes new procedural game types possible, as thousands of procedurally placed objects can be merged at runtime so as to render efficiently (think vegetation, rocks, furniture, houses, etc.).
Please test this out and give us lots of feedback. This is a new feature in 3.6 that hasn't been implemented for 4.x. We would like to use the feedback we get on this implementation to potentially add a mesh merging feature to Godot 4.x.
See the [MergeGroups documentation](https://docs.godotengine.org/en/3.6/tutorials/3d/merge_groups.html) for details.
### ORM Materials ([GH-76023](https://github.com/godotengine/godot/pull/76023))
Ansraer added support for ORM materials, which is a standard format where occlusion, roughness, and metallic are combined into a single texture. This means these standard PBR textures can be used without modification, and rendering performance will likely be increased where they are used (compared to the old workflow).
### Vertex cache optimization ([GH-86339](https://github.com/godotengine/godot/pull/86339))
In the mesh import options (e.g. obj, gltf, dae) you will find a new setting for "vertex cache optimization". This may increase rendering performance for high poly models on low-end hardware.
In order to take advantage of vertex cache optimization in an already completed project, simply delete the hidden `.godot` folder (which contains imported data), and this imported data (including optimized meshes) will be recreated next time you open the editor.
### 2D fixes
Fixes to physics interpolation, and hierarchical culling, as well as performance increases.
### View Selected Mesh Stats ([GH-88207](https://github.com/godotengine/godot/pull/88207))
![View mesh stats example](/storage/blog/godot-3.6/view_mesh_stats.webp)
The 3D view menu now offers a new (long overdue) option, "View Selected Mesh Stats". This will display total triangle, vertex, and index counts for the selected meshes (and multimeshes).
This is incredibly useful information for diagnosing performance and checking imported meshes, and for use in conjunction with mesh merging and LOD.
### SceneTree dock's filter improvements ([GH-67347](https://github.com/godotengine/godot/pull/67347))
Now supports multiple terms, filter by type or group.
## Changes
**40 contributors** submitted exactly **100 improvements** for this release. See our [**interactive changelog**](https://godotengine.github.io/godot-interactive-changelog/#3.6-beta5) for the complete list of changes since the previous 3.6-beta4 snapshot. You can also review [all changes included in 3.6](https://godotengine.github.io/godot-interactive-changelog/#3.6) compared to the previous 3.5 feature release.
This release is built from commit [2a347ab86](https://github.com/godotengine/godot/commit/2a347ab8671e51ee02299d333a9d37f7784c3e28).
## Downloads
{% include articles/download_card.html version="3.6" release="beta5" article=page %}
**Standard build** includes support for GDScript, GDNative, and VisualScript.
**.NET build** includes support for C#, as well as GDScript, GDNative, and VisualScript.
- You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono **6.12.0.198** are included in this build.
{% include articles/prerelease_notice.html %}
## Bug reports
As a tester, we encourage you to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check the [existing issues on GitHub](https://github.com/godotengine/godot/issues) first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.
In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 3.x releases no longer works in this release).
## Support
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, as well as a handful of part or full-time developers hired thanks to [generous donations from the Godot community](https://fund.godotengine.org/). A big thank you to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [their financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
If you'd like to support the project financially and help us secure our future hires, you can do so using the [Godot Development Fund](https://fund.godotengine.org/) platform managed by [Godot Foundation](https://godot.foundation/). There are also several [alternative ways to donate](/donate) which you may find more suitable.

View File

@@ -0,0 +1,299 @@
---
title: "Dev snapshot: Godot 4.3 beta 1"
excerpt: "Godot 4.3 is ready for broad testing as we finalize the release."
categories: ["pre-release"]
author: "Godot contributors"
image: /storage/blog/covers/dev-snapshot-godot-4-3-beta-1.webp
image_caption_title: "Road to Vostok"
image_caption_description: "A game by Antti"
date: 2024-05-31 11:00:00
---
We have reached the first beta release for the 4.3 release cycle. This officially marks the start of feature freeze for 4.3. This means contributors are encouraged to focus their efforts on fixing [regressions](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+label%3Aregression+milestone%3A4.3) and other outstanding bugs. We won't risk merging any new features or risky bug fixes until after we release 4.3 and begin preparing for 4.4.
We will aim to release 4.3 in around a month, but as usual, this timeline will depend on how quickly we are able to fix the outstanding bugs and what new bugs are identified in the beta process. We ask that users test these beta releases and report bugs as soon as you spot them to help us ensure a quick beta period and a timely release of 4.3.
Please, consider [supporting the project financially](#support), if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.
[Jump to the **Downloads** section](#downloads), and give it a spin right now, or continue reading to learn more about improvements in this release. You can also [try the **Web editor**](https://editor.godotengine.org/releases/4.3.beta1/) or the **Android editor** for this release. If you are interested in the latter, please request to join [our testing group](https://groups.google.com/g/godot-testers) to get access to pre-release builds.
---
*The cover illustration is from* [**Road to Vostok**](https://roadtovostok.com/), *a hardcore single-player survival FPS set in a post-apocalyptic Finland border zone, developed using Godot 4. The main developer Antti ported the previous version of the game from Unity to Godot 4, writing a lot of insightful [progress reports](https://www.patreon.com/posts/godot-port-1-90611929) in the process. They recently released their [Public Demo 2](https://www.roadtovostok.com/news/public-demo-2) using Godot with the main gameplay loop. You can try the demo and wishlist the game [on Steam](https://store.steampowered.com/app/1963610/Road_to_Vostok/), and follow the development on [Twitter](https://x.com/roadtovostok) and [Patreon](https://www.patreon.com/roadtovostok).*
## Highlights
Godot 4.3 is coming with a number of significant improvements and new features. To give you a taste, we have reproduced some of the spotlighted changes from the development blog posts here. If you have kept up to date with the dev release blog posts, there won't be many surprises here.
- [Breaking changes](#breaking-changes)
- [2D](#2D)
- [Editor](#editor)
- [Audio](#audio)
- [Display](#display)
- [Platforms](#platforms)
- [Rendering and shaders](#rendering-and-shaders)
- [Animation](#animation)
- [C\#](#c)
- [GDScript](#gdscript)
- [XR](#xr)
- [Documentation](#documentation)
- [Import](#import)
- [Core](#core)
### Breaking changes
We try to minimize breaking changes, but sometimes they are necessary in order to fix high priority issues. Where we do break compatibility we do our best to make sure that the changes are minimal and require few changes in user projects.
You can find a list of such issues by filtering the merged PRs in the 4.3 milestone with the [`breaks compat` label](https://github.com/godotengine/godot/pulls?q=is%3Apr+label%3A%22breaks+compat%22+milestone%3A4.3+is%3Amerged+). Here's a selection of some which are worth being aware of:
* Save PackedByteArrays as base64 encoded ([GH-89186](https://github.com/godotengine/godot/pull/89186)).
* Core: Add typed array support for binary serialization ([GH-78219](https://github.com/godotengine/godot/pull/78219)).
* Use black for font outlines by default instead of white ([GH-54641](https://github.com/godotengine/godot/pull/54641)).
* Remove `bone_pose_updated` signal and replace it with the `skeleton_updated` signal ([GH-90575](https://github.com/godotengine/godot/pull/90575)).
* Implement a base class SkeletonModifier3D as refactoring for nodes that may modify Skeleton3D ([GH-87888](https://github.com/godotengine/godot/pull/87888)).
* Rework AnimationNode process for retrieving the semantic time info ([GH-87171](https://github.com/godotengine/godot/pull/87171)).
* Add `AnimationMixer::capture()` and `AnimationPlayer::play_with_capture()` as substitute of update mode capture ([GH-86715](https://github.com/godotengine/godot/pull/86715)).
* Fix TrackCache conflict when tracks have same name but different type ([GH-86687](https://github.com/godotengine/godot/pull/86687)).
* Reverse Z: Some shaders will need to change to accommodate the new depth buffer format. More details [here](/article/introducing-reverse-z/).
* Rework the auto translation system ([GH-87530](https://github.com/godotengine/godot/pull/87530)).
* C#: Implement InvariantCulture on Variant strings ([GH-89547](https://github.com/godotengine/godot/pull/89547)).
* Freed objects are now different than null in comparison operators, and evaluate as falsy ([GH-73896](https://github.com/godotengine/godot/pull/73896)).
* Fix some AcceptDialog argument types. Previous erroneous calls will now error instead of do nothing ([GH-89419](https://github.com/godotengine/godot/pull/89419)).
### 2D
#### Huge improvement to pixel stability for pixel art games
After much community discussion and the hard work of several contributors, we have merged a <abbr title="Pull Request">PR</abbr> ([GH-87297](https://github.com/godotengine/godot/pull/87297)) that we think resolves many of the outstanding issues with pixel stability when making pixel art games. As before, it relies on using the `rendering/2d/snap/snap_2d_transforms_to_pixel` project setting. If you are making a pixel art game, please test this new release carefully and let us know how it goes.
#### 2D physics interpolation
Fixed timestep a.k.a. physics interpolation is now implemented for 2D ([GH-88424](https://github.com/godotengine/godot/pull/88424)), forward-ported from the version merged for Godot 3.6 last year ([GH-76252](https://github.com/godotengine/godot/pull/76252)).
This will help address cases of position/camera jitter in 2D games, and should complement some of the pixel-art focused changes made in the 4.3 dev 4 snapshot.
3D physics interpolation is also in the works for a future Godot release ([GH-92391](https://github.com/godotengine/godot/pull/92391)), possibly 4.4.
#### Parallax2D
Godot 4.3 introduces a new Parallax2D node ([GH-87391](https://github.com/godotengine/godot/pull/87391)). This supersedes the current ParallaxLayer/ParallaxBackground nodes and removes many limitations that we had with them. You can even convert ParallaxLayers and ParallaxBackgrounds into Parallax2D nodes conveniently in the editor. Going forward we recommend always using Parallax2D for your parallax needs. We think that the Parallax2D does everything that ParallaxLayer/ParallaxBackground could do and more! If you find something that ParallaxLayer/ParallaxBackground can do that Parallax2D cant, please let us know as soon as possible. If you want to know more about the new Parallax2D node, please see the [Parallax2D blog post](/article/parallax-progress-report/).
#### TileMap layers as nodes
TileMap layers are now exposed as individual TileMapLayer nodes ([GH-89179](https://github.com/godotengine/godot/pull/89179)), which means less clutter in the inspector, a simpler API, and is also more in line with common Godot design patterns.
To avoid the small drawbacks that would come with that change, we added new editor features, for example the ability to select all layers in the currently edited scene. The TileMap node itself is marked as deprecated but will stay for a while (it will not get any new features though).
To help with the transition, you can automatically transform a TileMap node to a set of TileMapLayer nodes via a dropdown menu entry in the editor. Youll have to update your scripts, but dont worry, the API is very similar.
### Editor
#### Fixes for invalid/corrupt scenes
A common complaint among users is that they get locked out of editing a scene because it contained an instance of a different scene that no longer exists (due to being renamed or deleted). Users learned to dread the well-known “Scene invalid/corrupt” error that resulted from this ([GH-86781](https://github.com/godotengine/godot/pull/86781)) aims to improve the situation by allowing you to open, edit, and fix scenes that have been corrupted due to a missing dependency. This should make the process of refactoring your projects within Godot feel quite a bit safer.
Another bugfix on the GDScript side may also help solve situations where using preload() with cyclic dependencies leads to scenes being flagged as invalid ([GH-85501](https://github.com/godotengine/godot/pull/85501)).
Loading of scenes with corrupted or missing dependencies will no longer be aborted ([GH-85159](https://github.com/godotengine/godot/pull/85159)), allowing you to use and fix such scenes without external tools.
#### Add ufbx for importing .fbx files without FBX2glTF
This monumental effort by Samuli Raivio and Ernest Lee incorporates the popular ufbx library into Godot to allow for seamlessly importing .fbx files ([GH-81746](https://github.com/godotengine/godot/pull/81746)). Previously users would have to download the FBX2glTF tool separately and Godot would invoke it to convert .fbx files to glTF files in order to import them. ufbx allows us to avoid this process and import .fbx files directly. Although the ufbx library has gone through extensive rigorous testing, this is a huge change and the .fbx file format is notoriously difficult to work with, so please test this carefully and report any bugs you find.
After upgrading to Godot 4.3, existing files in your projects will continue to import using [FBX2glTF](https://github.com/godotengine/FBX2glTF). By default, only newly added files will import with ufbx. This default may be changed by using the "Preset" button near the top of the Import dock.
#### Editor theme and UX improvements
A number of highly requested theme and UX improvements have been merged for 4.3 among them are:
- The FileSystem dock can now be moved to the bottom section of the editor ([GH-86765](https://github.com/godotengine/godot/pull/86765)), giving access to a wide panel instead of a tall one. Drag and drop of resources is now also supported across bottom panels by hovering the relevant label, as may be familiar from browser tabs.
- The project manager also got a visual and usability overhaul, with a better layout and a look unified with UI conventions of the editor ([GH-87443](https://github.com/godotengine/godot/pull/87443)). This also introduces initial work on making any kind of network-related feature opt-in in the editor, to give users full control over if and when Godot should communicate with the Internet (e.g. querying the Asset Library for assets, or the Godot website for export templates, etc.).
#### Automatic checking for engine updates
We finally implemented a long-requested feature in the project manager to check for new Godot versions ([GH-75916](https://github.com/godotengine/godot/pull/75916)). This is convenient both when testing pre-release versions, to be notified when the next dev or beta snapshots are published, but also for new maintenance or feature releases in stable branches.
Out of concern for users privacy, this feature is not enabled by default, but can be toggled easily by enabling the “Online” network mode in the project managers settings.
*Edit:* Turns out that the new update checker has a minor parsing bug, so don't mind if 4.3 beta 1 reports that there's a new "4.3-4.3" version... We'll get that fixed for the next beta :)
#### PackedByteArrays saved with Base64 encoding
One common annoyance with Godots text-based scene/resource format (tscn/tres) is that the serialization of PackedByteArray properties takes a lot of space, leading to inflated file sizes, and noisy diffs. To help with that, we changed the serialization of PackedByteArrays to use Base64 encoding, which is more compact, especially for bigger arrays ([GH-89186](https://github.com/godotengine/godot/pull/89186)).
This change however means that the scene format changed in a way that cant be parsed by earlier Godot releases. To ease this transition, we made it so that Godot 4.3 only saves scenes and resources using this new format if they contain a PackedByteArray ([GH-90889](https://github.com/godotengine/godot/pull/90889)). Additionally, we are backporting support for parsing the new format to the upcoming Godot 4.2.3 and 4.1.5 releases ([GH-91250](https://github.com/godotengine/godot/pull/91250)), so that it would still be possible for users to roll back to these versions if they need to.
Finally, we also changed the name of the Editor Settings config file to make it specific to each Godot minor version ([GH-90875](https://github.com/godotengine/godot/pull/90875)). This avoids losing configuration when going back and forth between slightly incompatible Godot branches. The first time you use a new Godot minor branch (e.g. 4.3), it will port settings from the previous version (e.g. 4.2), but from there on the two config files stay separate.
### Audio
#### Interactive music support
At last, Godot 4.3 ships with interactive music support thanks to [GH-64488](https://github.com/godotengine/godot/pull/64488). The new stream types (`AudioStreamInteractive`, `AudioStreamPlaylist`, and `AudioStreamSynchronized`) can be combined to create complex, layered interactive music and transitions between them, similar to software such as WWise, FMOD or Elias.
With this feature, you will be able to create nice audio atmospheres that change dynamically based on what's happening in your game. We'd love to "hear" what you'll be doing with this new addition.
### Display
#### Wayland support for Linux
It took us just under 10 years to implement, after it was requested back in 2014 and further formalized in 2020: Wayland support is now included in Godot 4.3!
The implementation we merged was a massive undertaking led by Riteo ([GH-86180](https://github.com/godotengine/godot/pull/86180)), spanning 2 years of development with extensive testing and contributions by many others. This built upon previous attempts ([GH-23426](https://github.com/godotengine/godot/pull/23426), [GH-27463](https://github.com/godotengine/godot/pull/27463)) which came at a time where Godots architecture wasnt ready for it yet, notably before the 4.0 split between OS (platform) and DisplayServer responsibilities.
Included in this effort was the introduction of OpenGL ES driver support for desktop devices ([GH-91466](https://github.com/godotengine/godot/pull/91466)). This is currently limited to Linux devices (although note that Windows drivers generally do not support OpenGL ES *natively*).
For more information on the new Wayland support (uncluding testing instructions), please see the [4.3 dev 3 blog post](/article/dev-snapshot-godot-4-3-dev-3/#wayland-support-for-linux).
#### D3D12
Thanks to the tireless work of RandomShaper, Godot now supports the Direct3D 12 rendering API as an optional backend on Windows devices ([GH-70315](https://github.com/godotengine/godot/pull/70315)).
Official builds have support for D3D12, but in order to use it, you still need to [download the DirectX Shader Compiler from Microsoft](https://github.com/microsoft/DirectXShaderCompiler/releases/latest) and copy over the `dxil.dll` file to the folder the Godot executable is located in.
We are still evaluating options for being able to provide a D3D12 support that works out of the box, without a proprietary component. But for now, to test things, you will have to do this manual step (or compile from source, which does it for you).
### Platforms
#### Single-threaded web exports
For Godot 4.0, we modernized the engine to make heavier use of multi-threading. The web was the last platform where multi-threading wasnt a given, but support for the required SharedArrayBuffer feature finally seemed widespread (reaching Safari at last), so we decided to go all in and also make Godots Web export multi-threaded by default, solving a number of audio issues we had in Godot 3.
Experience has proven that even though SharedArrayBuffer is supported by all browsers nowadays, the conditions it imposes on the web server that host the games are too difficult to uphold. For people who self-host, its easy enough, but for people who distribute their games on publishing platforms like itch.io or CrazyGames, its often outside their control. The requirements for SharedArrayBuffer (for security reasons) are also at odds with web game monetization options, such as advertisement or payment processing.
So weve had to change course and do the work to re-add a single-threaded mode to Godot ([GH-85939](https://github.com/godotengine/godot/pull/85939)). The engine can now be compiled with the `threads=no` SCons option, which disables all threading use and runs all logic on the main thread.
No-threads export templates are provided for the Web platform, and their use can be toggled in the export preset (“Thread Support” boolean option). This brings back audio issues on some OS or hardware combinations, which will be solved by ([GH-91382](https://github.com/godotengine/godot/pull/91382)) which may be merged for 4.3. Ultimately, the tradeoff is similar to Godot 3: good audio with threads enabled, or bad audio with single-threaded mode. The web isnt an easy platform to target :)
To learn more, please see the [Web Export in 4.3 blog post](/article/progress-report-web-export-in-4-3/)
### Rendering and shaders
- The acyclic command graph for Rendering Device is finally merged ([GH-84976](https://github.com/godotengine/godot/pull/84976))! This is an optimization and a feature which automatically records and re-orders rendering commands in the RenderingDevice backend, enabling optimizations which wouldnt be possible otherwise, and greatly simplifying the API. This builds on top of the RenderingDeviceDriver refactoring ([GH-83452](https://github.com/godotengine/godot/pull/83452)) which was merged earlier in the release cycle.
- A new CompositorEffects API has been added which lets you register callback functions that will be run in between rendering passes allowing you to insert rendering commands in the middle of Godots built in rendering pipeline ([GH-80214](https://github.com/godotengine/godot/pull/80214)). This is the first step in allowing users more control over the rendering pipeline.
- We have refactored the RenderingDevice context management to further resolve stability issues in the Vulkan backend ([GH-87340](https://github.com/godotengine/godot/pull/87340)). A side-effect of this refactoring is that RenderingDevice contexts can be created anytime, even when the main window is not using a RenderingDevice context.
- We have finished adding the remaining features to the Compatibility rendering backend that we wanted in order to call it feature complete including MSAA and resolution scaling ([GH-83976](https://github.com/godotengine/godot/pull/83976)), Glow ([GH-87360](https://github.com/godotengine/godot/pull/87360)), ReflectionProbes ([GH-88056](https://github.com/godotengine/godot/pull/88056)), LightMapGI ([GH-85120](https://github.com/godotengine/godot/pull/85120)), Adjustments and Color Correction ([GH-91176](https://github.com/godotengine/godot/pull/91176)).
- An option to use depth-based fog instead of the current exponential fog has been added ([GH-84792](https://github.com/godotengine/godot/pull/84792)). This closely aligns with the fog API from Godot 3.x.
- Add option to use premultiplied alpha blending in 3D shaders ([GH-85609](https://github.com/godotengine/godot/pull/85609)).
- Add reroute node and improve port drawing for VisualShaders ([GH-90534](https://github.com/godotengine/godot/pull/90534)).
### Animation
#### SkeletonModifier
Godot 4.3 includes a new node class, SkeletonModifer3D which will serve as the foundation for IK, constraints, XR body tracking and skeletal physics. This changes the processing priority of some Skeleton3D related processes, but basically keeps compatibility.
A few existing nodes have implemented SkeletonModifier3D: SkeletonIK3D now extends SkeletonModifier3D but should function as before. Higher level XR hand and body tracking is also implemented as SkeletonModifier3D, and a new class, PhysicalBoneSimulator, takes the role of simulating PhysicalBone3D that used to be part of the Skeleton3D class itself.
While no new official modifier implementations are planned until Godot 4.4, addon authors have already begun to transition IK, physics and other features to build on the modifier system. We hope having the modifier base class available in Godot 4.3 will help build out this key new foundational component of Godot's skeletal animation system for years to come.
#### AnimationMixer
AnimationMixer continues to receive several fixes and enhancements after being introduced in 4.2 to bring it up to parity with AnimationPlayer.
[GH-86629](https://github.com/godotengine/godot/pull/86629) adds a CallbackModeDiscrete option to AnimationMixer to significantly improve the behavior when blending continuous and discrete tracks.
[GH-86661](https://github.com/godotengine/godot/pull/86661) introduces several fixes to how audio is handled by AnimationPlayers.
[GH-86715](https://github.com/godotengine/godot/pull/86715) expands the AnimationMixer and AnimationPlayer APIs with `AnimationMixer::capture()` and `AnimationPlayer::play_with_capture()` which can substitute the old capture update mode. The capture update mode has been difficult to use and prone to issues for a while now. The introduction of AnimationMixer highlighted many of those issues. The new `capture()` and `play_with_capture()` functions allow you to do the same things as before in a way that is much more aligned with Godots API and should work much better in general.
Additionally, [GH-87250](https://github.com/godotengine/godot/pull/87250) adds support for selecting, copying, pasting, and duplicating keyframes within the AnimationPlayer.
#### Skeletal animation import options
Several new features have been added to assist in retargeting animation sets, in particular shipped in .fbx format.
* Import rest pose as RESET animation ([GH-89629](https://github.com/godotengine/godot/pull/89629)). This enables creating a RESET track to restore the skeleton to its imported pose, or as a reference.
* Retargeting option to use a template for silhouette ([GH-88824](https://github.com/godotengine/godot/pull/88824)). This feature can be used to reference the RESET animation of a known good (T-pose) reference.
* Allow preserving the initial bone pose in rest fixer ([GH-88821](https://github.com/godotengine/godot/pull/88821)).
* Add new scene import option to import as Skeleton ([GH-88819](https://github.com/godotengine/godot/pull/88819)). This solves cases especially common in .fbx files without any meshes.
* Several other bugfixes to skeletal aniamtion import ([GH-90050](https://github.com/godotengine/godot/pull/90050), [GH-90019](https://github.com/godotengine/godot/pull/90019), [GH-90064](https://github.com/godotengine/godot/pull/90064), [GH-90065](https://github.com/godotengine/godot/pull/90065), [GH-91641](https://github.com/godotengine/godot/pull/91641), [GH-92012](https://github.com/godotengine/godot/pull/92012))
### C#
C# received several fixes and usability improvements in this development release. Among them are [GH-88371](https://github.com/godotengine/godot/pull/88371) and [GH-87890](https://github.com/godotengine/godot/pull/87890) which improve the handling of C# generic types. These changes will allow you to more comfortably use generic C# classes in your code (no more duplicate key exceptions when reloading the assembly). Overall, assembly reloading is more robust now ([GH-83217](https://github.com/godotengine/godot/pull/83217), [GH-87838](https://github.com/godotengine/godot/pull/87838), and [GH-90837](https://github.com/godotengine/godot/pull/90837)) and the inspector will let you know if you may need to rebuild the C# assembly ([GH-85869](https://github.com/godotengine/godot/pull/85869) and [GH-88076](https://github.com/godotengine/godot/pull/88076)).
For C# projects that haven't been built yet, the editor now remembers the values of exported Node properties instead of discarding them in order to prevent data loss ([GH-89175](https://github.com/godotengine/godot/pull/89175)).
As a temporary workaround, we have disabled the ability to generate a signal callback in C# from the editor ([GH-87952](https://github.com/godotengine/godot/pull/87952)). This feature has long been broken for C# and has led to a lot of confusion. We will re-enable this once we have it working reliably.
The Variant types (like `Vector2`, `Vector3`, `Rect2`, `Transform3D`, etc) now use the `InvariantCulture` by default which means you get uniform formatting regardless of the language of the platform that the game is running on ([GH-89547](https://github.com/godotengine/godot/pull/89547)). This is a breaking change but we thought it was worth it, since these types are not meant to be localized so using the `CurrentCulture` makes little sense.
### GDScript
In terms of new GDScript features, Godot 4.3 may be less stacked than 4.2, but rest assured that the team worked very hard for this release.
Binary tokenization on export has been reintroduced ([GH-87634](https://github.com/godotengine/godot/pull/87634)). This brings back the 3.x functionality to export GDScript files in a binary form, which hides the source code and reduces (a bit) the export size. You can also negatively compare types more naturally with the `is not` operator ([GH-87939](https://github.com/godotengine/godot/pull/87939)).
We also made built-in type methods and utility functions usable as `Callable` ([GH-82264](https://github.com/godotengine/godot/pull/82264), [GH-86823](https://github.com/godotengine/godot/pull/86823)). This makes it possible to call variadic functions such as `print` with `Callable.callv()` easily, without the need of boilerplate. We also worked on export annotations, such as allowing exported arrays to set property hints for their elements ([GH-82952](https://github.com/godotengine/godot/pull/82952)), we added `@export_storage` to hide the property from the Inspector while still exporting the value ([GH-82122](https://github.com/godotengine/godot/pull/82122)), and we created `@export_custom` for more complex hints or potential future hints ([GH-72912](https://github.com/godotengine/godot/pull/72912)).
In terms of bug fixes, the GDScript team fixed lambda hot-reloading ([GH-86569](https://github.com/godotengine/godot/pull/86569)) and fixed out of date errors in depended scripts ([GH-90601](https://github.com/godotengine/godot/pull/90601)). Now GDScript cache will be your friend without restarting the editor!
A lot of efforts have been made to fix GDScript autocompletion ([GH-86667](https://github.com/godotengine/godot/pull/86667), [GH-86554](https://github.com/godotengine/godot/pull/86554), [GH-86111](https://github.com/godotengine/godot/pull/86111), and more). For this, we introduced a testing system to test for autocompletion regressions ([GH-86973](https://github.com/godotengine/godot/pull/86973)).
Finally, to name a few more, we fixed `@warning_ignore` annotation issues ([GH-83037](https://github.com/godotengine/godot/pull/83037)) and adjusted some warnings ([GH-92027](https://github.com/godotengine/godot/pull/92027), [GH-90794](https://github.com/godotengine/godot/pull/90794), [GH-90756](https://github.com/godotengine/godot/pull/90756), and [GH-90442](https://github.com/godotengine/godot/pull/90442)).
We are aware of some regressions with circular dependencies between scenes and scripts using `preload`, for which a fix is being reviewed ([GH-92326](https://github.com/godotengine/godot/pull/92326)) and should be included in 4.3 beta 2.
### XR
- Godot 4.3 requires a new version of the vendor's plugin to unlock all platform specific functionality.
- Fixed tracking issues in the native mobile interface ([GH-91305](https://github.com/godotengine/godot/pull/91305)).
- Improvements in the core OpenXR loop ([GH-89734](https://github.com/godotengine/godot/pull/89734)), this improves tracking stability and prepares XR for running render processes on a separate thread.
- Added support for composition layers ([GH-89880](https://github.com/godotengine/godot/pull/89880)), this allows 2D viewports to be displayed at much higher quality within an XR environment.
- Improvements to foveated rendering/VRS, passthrough, and various other supporting systems.
- Standardized and enhanced support for Hand/finger tracking, body tracking and face tracking.
- Support for various Meta extensions such as hand models, render models and scene discovery.
### Documentation
- Add self links to methods, properties, etc. in the online class reference. For example, this allows you to link directly to a method while reading the description instead of having to scroll up and link the method from the table of methods ([GH-91537](https://github.com/godotengine/godot/pull/91537)).
- Add syntax highlighting and a copy button for code blocks in the built-in documentation viewer ([GH-89263](https://github.com/godotengine/godot/pull/89263), [GH-87363](https://github.com/godotengine/godot/pull/87363)).
- Add support for deprecated/experimental messages. C# also uses the deprecation message when generating bindings ([GH-81458](https://github.com/godotengine/godot/pull/81458), [GH-88730](https://github.com/godotengine/godot/pull/88730)).
- Add option to generate GDExtension docs with `--doctool` ([GH-91518](https://github.com/godotengine/godot/pull/91518)).
### Import
We have added support for the Quite OK Audio (QOA) format as an optional compression option for WAV files in [GH-91014](https://github.com/godotengine/godot/pull/91014). QOA offers a nice tradeoff between performance, file size, and quality compared to the existing options. It is higher quality than the current WAV compression option (IMA-ADPCM) and slightly smaller while being slightly more CPU intensive to use. Compared to OGG Vorbis and MP3, it is similar in quality, but slightly larger in size and much less CPU intensive to use.
For more information about the QOA format, please see this [handy blog post](https://phoboslab.org/log/2023/02/qoa-time-domain-audio-compression).
### Core
- Add PackedVector4Array Variant type ([GH-85474](https://github.com/godotengine/godot/pull/85474)).
- Use WorkerThreadPool for server threads ([GH-90268](https://github.com/godotengine/godot/pull/90268)). This is an important step in fixing and optimizing the multithreaded rendering option. There is still more work to be done, but this brings us closer to being able to enable multithreaded rendering by default (and getting the resulting performance benefit that comes with that). Getting this far was supported by numerous challenging bug fixes to both WorkerThreadPool ([GH-90809](https://github.com/godotengine/godot/pull/90809), [GH-90865](https://github.com/godotengine/godot/pull/90865)) and CommandQueueMT ([GH-90470](https://github.com/godotengine/godot/pull/90470). [GH-90760](https://github.com/godotengine/godot/pull/90760)), both of which are classes that few dare to touch.
- Multiple fixes to improve thread safety during resource loading. These make the multithreaded resource loader safer to use with fewer edge cases that could result in deadlocks ([GH-88561](https://github.com/godotengine/godot/pull/88561), [GH-91630](https://github.com/godotengine/godot/pull/91630)).
## Changelog
**136 contributors** submitted **466 improvements** for this release. See our [**interactive changelog**](https://godotengine.github.io/godot-interactive-changelog/#4.3-beta1) for the complete list of changes since the 4.3-dev6 snapshot. You can also review [all changes included in 4.3](https://godotengine.github.io/godot-interactive-changelog/#4.3) compared to the previous 4.2 feature release.
This release is built from commit [`a4f2ea91a`](https://github.com/godotengine/godot/commit/a4f2ea91a1bd18f70a43ff4c1377db49b56bc3f0).
## Downloads
{% include articles/download_card.html version="4.3" release="beta1" article=page %}
**Standard build** includes support for GDScript and GDExtension.
**.NET build** (marked as `mono`) includes support for C#, as well as GDScript and GDExtension.
- .NET build requires .NET SDK 6.0 or later ([.NET 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) recommended) installed in a standard location.
- To export to Android, .NET 7.0 or later is required. To export to iOS, .NET 8.0 is required.
{% include articles/prerelease_notice.html %}
## Known issues
During the beta stage, we focus on solving both regressions (i.e. something that worked in a previous release is now broken) and significant new bugs introduced by new features. You can have a look at our current [list of regressions and significant issues](https://github.com/orgs/godotengine/projects/61) which we aim to address before releasing 4.3. This list is dynamic and will be updated if we discover new showstopping issues after more users start testing the beta snapshots.
With every release, we accept that there are going to be various issues which have already been reported but haven't been fixed yet. See the GitHub issue tracker for a complete list of [known bugs](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug+).
## Bug reports
As a tester, we encourage you to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check the [existing issues on GitHub](https://github.com/godotengine/godot/issues) first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.
In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).
## Support
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, as well as a handful of part or full-time developers hired thanks to [generous donations from the Godot community](https://fund.godotengine.org/). A big thank you to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [their financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
If you'd like to support the project financially and help us secure our future hires, you can do so using the [Godot Development Fund](https://fund.godotengine.org/) platform managed by [Godot Foundation](https://godot.foundation/). There are also several [alternative ways to donate](/donate) which you may find more suitable.
*Edit (2024-05-31):* we added the missing interactive music support section.

View File

@@ -0,0 +1,157 @@
---
title: "Dev snapshot: Godot 4.3 beta 2"
excerpt: "Godot 4.3 is in beta, and progressing well towards stable. This beta 2 fixes many critical issues reported by testers of the previous snapshots."
categories: ["pre-release"]
author: "Rémi Verschelde"
image: /storage/blog/covers/dev-snapshot-godot-4-3-beta-2.webp
image_caption_title: "Stunt Xpress"
image_caption_description: "A game by Rafael Gonçalves and Pineapple Works"
date: 2024-06-20 11:30:00
---
We have been busy during the first three weeks of June to fix many of the bugs reported by our community after the [4.3 beta 1](/article/dev-snapshot-godot-4-3-beta-1/) release!
Many of the known regressions have been solved, and the [remaining ones](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+label%3Aregression+milestone%3A4.3) are tracked and being worked on.
This makes this 4.3 beta 2 snapshot a much stabler experience to test the many new features we presented with beta 1, so please give it a try!
Godot is a big piece of software and it's hard for contributors and even unit tests to validate all areas of the engine when developing new features or bug fixes. So we rely on extensive testing from the community to find engine issues while testing dev, beta, and RC snapshots in your projects, and reporting them so that we can fix them prior to tagging the 4.3-stable release.
Please, consider [supporting the project financially](https://fund.godotengine.org), if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.
[Jump to the **Downloads** section](#downloads), and give it a spin right now, or continue reading to learn more about improvements in this release. You can also [try the **Web editor**](https://editor.godotengine.org/releases/4.3.beta2/) or the **Android editor** for this release. If you are interested in the latter, please request to join [our testing group](https://groups.google.com/g/godot-testers) to get access to pre-release builds.
---
*The cover illustration is from* [**Stunt Xpress**](https://store.steampowered.com/app/2645830/Stunt_Xpress/), *a delivery van stunt action game by Rafael Gonçalves and Pineapple Works, made with Godot 4.2. The game is scheduled for a 2024 release, and you can play the latest demo on [Steam](https://store.steampowered.com/app/2645830/Stunt_Xpress/). You can follow [Rafael](https://x.com/gonzelvis/) and [Pineapple Works](https://x.com/pineapple_works) on Twitter for development updates.*
## Highlights
We covered the most important highlights from Godot 4.3 in the previous [4.3 beta 1 blog post](/article/dev-snapshot-godot-4-3-beta-1/), so if you haven't read that one, have a look to be introduced to the main new features added in the 4.3 release.
This section covers changes made since the beta 1 snapshot, which are mostly regression fixes.
There are a few major changes though that weren't ready yet for beta 1 but were merged now for this second beta:
- Audio: Add sample playback support for Web exports ([GH-91382](https://github.com/godotengine/godot/pull/91382)).
* This goes together with the single-threaded Web export introduced in 4.3. As we pointed out in the [beta 1 post](/article/dev-snapshot-godot-4-3-beta-1/#single-threaded-web-exports), single-threaded exports solve a number of publishing difficulties for users, but introduce audio crackling issues. This new audio sample feature solves this, making Web exports much more compatible with different browsers and publishing platforms.
- Porting: Update the Android splash screen logic ([GH-92965](https://github.com/godotengine/godot/pull/92965)).
- Porting: Wayland: Implement IME support ([GH-93021](https://github.com/godotengine/godot/pull/93021)).
- Rendering: Add support for enhanced barriers in D3D12 ([GH-91769](https://github.com/godotengine/godot/pull/91769)).
Aside from those, here are some of the most relevant changes:
- 2D: Fix incorrect cull boundary for scaled and repeated Parallax2D children ([GH-92763](https://github.com/godotengine/godot/pull/92763)).
- Animation: Fix unstable AnimationTrackEditor snapping value ([GH-92670](https://github.com/godotengine/godot/pull/92670)).
- Animation: Fix seeking Animation immediately after playback for Discrete track ([GH-92861](https://github.com/godotengine/godot/pull/92861)).
- Buildsystem: SCons: Process platform-specific flags earlier ([GH-91791](https://github.com/godotengine/godot/pull/91791)).
- Buildsystem: Web: Fix thread+dlink builds with emscripten 3.1.61+git ([GH-93143](https://github.com/godotengine/godot/pull/93143)).
- C#: Fix freeze after building C# project with a lot of files ([GH-92893](https://github.com/godotengine/godot/pull/92893)).
- Core: Improve GDExtension Tools Integration with Editor Debug Tooling ([GH-86721](https://github.com/godotengine/godot/pull/86721)).
- Core: Duplicate properties first before remapping resources ([GH-92678](https://github.com/godotengine/godot/pull/92678)).
- Core: Revert "Fix method name for custom callable", which broke remote debugging ([GH-93019](https://github.com/godotengine/godot/pull/93019)).
- Core: ResourceLoader: Avoid deadlock when awaiting a loader thread that failed early ([GH-93082](https://github.com/godotengine/godot/pull/93082)).
- Core: ResourceLoader: Let the caller thread use its own message queue override ([GH-93124](https://github.com/godotengine/godot/pull/93124)).
- Core: Crypto: Expose `OS.get_entropy` ([GH-93177](https://github.com/godotengine/godot/pull/93177)).
- Core: Improve PO plural translation rules handling ([GH-93262](https://github.com/godotengine/godot/pull/93262)).
- Editor: Enable optional minimal SteamAPI integration for usage time tracking (editor only) ([GH-79126](https://github.com/godotengine/godot/pull/79126)).
- Editor: Fix default NodePaths saved in scene ([GH-92095](https://github.com/godotengine/godot/pull/92095)).
- Editor: Avoid editor error reporting using resource loader thread's call queues ([GH-92426](https://github.com/godotengine/godot/pull/92426)).
- Editor: Make signal connections dialog method picker respect bind/unbind ([GH-92465](https://github.com/godotengine/godot/pull/92465)).
- Editor: Rework and simplify update checking logic ([GH-92597](https://github.com/godotengine/godot/pull/92597)).
- Editor: Fix project settings reloading ([GH-92633](https://github.com/godotengine/godot/pull/92633)).
- Editor: Add Globals tab to reorganize Project Settings dialog ([GH-92770](https://github.com/godotengine/godot/pull/92770)).
- Editor: Allow theming renderer colors ([GH-93229](https://github.com/godotengine/godot/pull/93229)).
- Editor: Unload addons before quitting to allow cleanup ([GH-93238](https://github.com/godotengine/godot/pull/93238)).
- Export: Default to non-threaded export setting for the web ([GH-91623](https://github.com/godotengine/godot/pull/91623)).
- Export: Fix iOS exports never embedding framework bundles ([GH-92692](https://github.com/godotengine/godot/pull/92692)).
- Export: Fix issues related to code-signing for macOS exports ([GH-93101](https://github.com/godotengine/godot/pull/93101)).
- GDExtension: Use GDExtension `to_string` in Node ([GH-92827](https://github.com/godotengine/godot/pull/92827)).
- GDExtension: Object: Use const correct `GDExtensionConstStringNamePtr` ([GH-93288](https://github.com/godotengine/godot/pull/93288)).
- GDScript: Move "Expected indented block" error message's line number back to where the error is ([GH-85488](https://github.com/godotengine/godot/pull/85488)).
- GDScript: Register the export info correctly when a script is used as the variable type for Node ([GH-90487](https://github.com/godotengine/godot/pull/90487)).
- GDScript: Fix broken built-in script reloading ([GH-92177](https://github.com/godotengine/godot/pull/92177)).
- GDScript: Fix goto definition for `new` method ([GH-92885](https://github.com/godotengine/godot/pull/92885)).
- GDScript: Fix mismatched external parser with binary exports ([GH-93166](https://github.com/godotengine/godot/pull/93166)).
- GUI: Add pre-4.3 Editor theme color names for compatibility ([GH-89302](https://github.com/godotengine/godot/pull/89302)).
- GUI: Fix `NOTIFICATION_SORT_CHILDREN` is called twice on startup ([GH-92645](https://github.com/godotengine/godot/pull/92645)).
- GUI: Fix popup windows content margins ([GH-92647](https://github.com/godotengine/godot/pull/92647)).
- GUI: Add visibilty mode to `as_sortable_control()` ([GH-92664](https://github.com/godotengine/godot/pull/92664)).
- GUI: Button: Adds theme option to align button text and icon to either largest or current stylebox ([GH-92701](https://github.com/godotengine/godot/pull/92701)).
- GUI: Force canvas item update on oversampling change ([GH-92731](https://github.com/godotengine/godot/pull/92731)).
- GUI: Fix IME activation in subviewports ([GH-92740](https://github.com/godotengine/godot/pull/92740)).
- GUI: Fix excessive canvas items updates ([GH-92808](https://github.com/godotengine/godot/pull/92808)).
- GUI: Stop color picker tooltip from stealing input events ([GH-92843](https://github.com/godotengine/godot/pull/92843)).
- Import: Fix same importer will be added multiple times in `get_importers_for_extension` ([GH-92718](https://github.com/godotengine/godot/pull/92718)).
- Import: Fix Keep/Skip File import selection crash ([GH-92815](https://github.com/godotengine/godot/pull/92815)).
- Import: Fix incorrect camera transform of animation view in the import window ([GH-92974](https://github.com/godotengine/godot/pull/92974)).
- Import: Unset the owner of `ImporterMeshInstance3D` before adding it to skeleton's child ([GH-93117](https://github.com/godotengine/godot/pull/93117)).
- Import: Fix ProgressDialog crash when importing TTF font ([GH-93161](https://github.com/godotengine/godot/pull/93161)).
- Input: Windows: Use current keyboard state instead of saved values for modifier keys ([GH-92415](https://github.com/godotengine/godot/pull/92415)).
- Input: Use current mouse button state instead of saved values ([GH-92424](https://github.com/godotengine/godot/pull/92424)).
- Input: Fix Windows Activate Process leading to stuck input ([GH-92742](https://github.com/godotengine/godot/pull/92742)).
- Input: Window: Ignore duplicate mouse enter events ([GH-93100](https://github.com/godotengine/godot/pull/93100)).
- Navigation: Fix `NavigationServer3D.get_closest_point_to_segment()` with `use_collision` ([GH-92850](https://github.com/godotengine/godot/pull/92850)).
- Navigation: TileSet: Transform rotated navigation (sub)-polygons individually ([GH-92955](https://github.com/godotengine/godot/pull/92955)).
- Navigation: Fix closest edge and face check in `NavigationServer3D.map_get_closest_point_to_segment` ([GH-93227](https://github.com/godotengine/godot/pull/93227)).
- Network: Crypto: Expose `get_system_ca_certificates` ([GH-93176](https://github.com/godotengine/godot/pull/93176)).
- Network: Crypto: Expose TLSOptions getters ([GH-93178](https://github.com/godotengine/godot/pull/93178)).
- Particles: Fix collided 3D GPU particles sometimes jittering ([GH-92474](https://github.com/godotengine/godot/pull/92474)).
- Porting: Make displayed Web errors more meaningful ([GH-92553](https://github.com/godotengine/godot/pull/92553)).
- Porting: EGL: Use `EGL_EXT_platform_base` whenever possible ([GH-92663](https://github.com/godotengine/godot/pull/92663)).
- Porting: Android: Fix invalid return value when multiple permission requests are dispatched ([GH-92709](https://github.com/godotengine/godot/pull/92709)).
- Porting: macOS: Improve native menu open/close callbacks ([GH-92781](https://github.com/godotengine/godot/pull/92781)).
- Porting: X11: Detect XWayland and disable screen capture support ([GH-93072](https://github.com/godotengine/godot/pull/93072)).
- Porting: Windows: Add Windows version and Wine checks for Windows 10+ dark mode API ([GH-93126](https://github.com/godotengine/godot/pull/93126)).
- Rendering: Vulkan: Update all components to Vulkan SDK 1.3.283.0 ([GH-92010](https://github.com/godotengine/godot/pull/92010)).
- Rendering: Fix albedo value wraparound in Compatibility render mode ([GH-92388](https://github.com/godotengine/godot/pull/92388)).
- Rendering: Separate linear and sRGB uniform buffers in RD rendering backends ([GH-92444](https://github.com/godotengine/godot/pull/92444)).
- Rendering: Add more validation to UBO size and alignment in Compatibility renderer ([GH-92568](https://github.com/godotengine/godot/pull/92568)).
- Rendering: Fix Adreno 3xx compatibility for devices with newer driver versions ([GH-92741](https://github.com/godotengine/godot/pull/92741)).
- Rendering: Make query for `GL_MAX_VIEWPORT_DIMS` compatible with web exports ([GH-92851](https://github.com/godotengine/godot/pull/92851)).
- Rendering: Fix depth clear value for uv2 baking in compatibility renderer ([GH-92887](https://github.com/godotengine/godot/pull/92887)).
- Rendering: Ensure Motion Vectors are enabled by particles and skeletons when using the Motion Vector debug draw option ([GH-93055](https://github.com/godotengine/godot/pull/93055)).
- Rendering: Ensure post processing happens when adjustments are enabled in the Compatibility renderer ([GH-93060](https://github.com/godotengine/godot/pull/93060)).
- Rendering: Track compositor effects that use motion vectors ([GH-93068](https://github.com/godotengine/godot/pull/93068)).
- Rendering: Ensure sky reflection is updated when ambient mode is set to background ([GH-93107](https://github.com/godotengine/godot/pull/93107)).
- Rendering: Add Parallax2D repeats in ysort child collection ([GH-93182](https://github.com/godotengine/godot/pull/93182)).
- Rendering: Fix `TileMapLayer` not respecting physics interpolation mode ([GH-93279](https://github.com/godotengine/godot/pull/93279)).
- Shaders: Add extra warning messages to `VisualShaderNodeTextureParameter` ([GH-83729](https://github.com/godotengine/godot/pull/83729)).
- Shaders: Fix bugs in visual shader varyings ([GH-93219](https://github.com/godotengine/godot/pull/93219)).
- Shaders: Prevent changing some built-ins in spatial shaders ([GH-93269](https://github.com/godotengine/godot/pull/93269)).
- Thirdparty: ThorVG: Update to 0.13.7 ([GH-92915](https://github.com/godotengine/godot/pull/92915)).
- XR: OpenXR: Add HTC/MSFT hand interaction profiles ([GH-93075](https://github.com/godotengine/godot/pull/93075)).
## Changelog
**78 contributors** submitted **223 improvements** for this release. See our [**interactive changelog**](https://godotengine.github.io/godot-interactive-changelog/#4.3-beta2) for the complete list of changes since the 4.3-beta1 snapshot. You can also review [all changes included in 4.3](https://godotengine.github.io/godot-interactive-changelog/#4.3) compared to the previous 4.2 feature release.
This release is built from commit [`b75f0485b`](https://github.com/godotengine/godot/commit/b75f0485ba15951b87f1d9a2d8dd0fcd55e178e4).
## Downloads
{% include articles/download_card.html version="4.3" release="beta2" article=page %}
**Standard build** includes support for GDScript and GDExtension.
**.NET build** (marked as `mono`) includes support for C#, as well as GDScript and GDExtension.
- .NET build requires .NET SDK 6.0 or later ([.NET 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) recommended) installed in a standard location.
- To export to Android, .NET 7.0 or later is required. To export to iOS, .NET 8.0 is required.
{% include articles/prerelease_notice.html %}
## Known issues
During the beta stage, we focus on solving both regressions (i.e. something that worked in a previous release is now broken) and significant new bugs introduced by new features. You can have a look at our current [list of regressions and significant issues](https://github.com/orgs/godotengine/projects/61) which we aim to address before releasing 4.3. This list is dynamic and will be updated if we discover new showstopping issues after more users start testing the beta snapshots.
With every release, we accept that there are going to be various issues which have already been reported but haven't been fixed yet. See the GitHub issue tracker for a complete list of [known bugs](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug+).
## Bug reports
As a tester, we encourage you to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check the [existing issues on GitHub](https://github.com/godotengine/godot/issues) first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.
In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).
## Support
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, as well as a handful of part or full-time developers hired thanks to [generous donations from the Godot community](https://fund.godotengine.org/). A big thank you to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [their financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
If you'd like to support the project financially and help us secure our future hires, you can do so using the [Godot Development Fund](https://fund.godotengine.org/) platform managed by [Godot Foundation](https://godot.foundation/). There are also several [alternative ways to donate](/donate) which you may find more suitable.

View File

@@ -0,0 +1,133 @@
---
title: "Dev snapshot: Godot 4.3 beta 3"
excerpt: "We are nearing the end of the beta phase for Godot 4.3, which is shaping up to be a very solid release, solving a lot of pain points."
categories: ["pre-release"]
author: "Rémi Verschelde"
image: /storage/blog/covers/dev-snapshot-godot-4-3-beta-3.webp
image_caption_title: "The End of You"
image_caption_description: "A game by Memory of God"
date: 2024-07-10 17:00:00
---
We are nearing the end of the beta phase for Godot 4.3, which received many fixes during the past 6 weeks thanks to the testing and bug reports of the community. It's shaping up to be a very solid release, solving a lot of pain points expressed by the userbase.
We've now solved most of the issues we considered blocking for the 4.3 release. [A few remain](https://github.com/orgs/godotengine/projects/61/views/1) but not all are actually critical, just regressions we'd like to solve before the stable release if possible. As such, we're pretty close to the Release Candidate stage, which will probably start next week.
Godot is a big piece of software and it's hard for contributors and even unit tests to validate all areas of the engine when developing new features or bug fixes. So we rely on extensive testing from the community to find engine issues while testing dev, beta, and RC snapshots in your projects, and reporting them so that we can fix them prior to tagging the 4.3-stable release.
Please, consider [supporting the project financially](https://fund.godotengine.org), if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.
[Jump to the **Downloads** section](#downloads), and give it a spin right now, or continue reading to learn more about improvements in this release. You can also [try the **Web editor**](https://editor.godotengine.org/releases/4.3.beta3/) or the **Android editor** for this release. If you are interested in the latter, please request to join [our testing group](https://groups.google.com/g/godot-testers) to get access to pre-release builds.
---
*The cover illustration is from* [**The End of You**](https://store.steampowered.com/app/2962000/The_End_of_You/), *a short, emotional narrative game made with Godot 4 by Memory of God, known for* Stillness of the Wind. *The game was released in June on [Steam](https://store.steampowered.com/app/2962000/The_End_of_You/). You can follow the developer on [Twitter](https://x.com/memoryofgod).*
## Highlights
We covered the most important highlights from Godot 4.3 in the previous [4.3 beta 1 blog post](/article/dev-snapshot-godot-4-3-beta-1/), so if you haven't read that one, have a look to be introduced to the main new features added in the 4.3 release.
This section covers changes made since the beta 2 snapshot, which are mostly regression fixes. Here are some highlights:
- 2D: Allow selecting TileMapLayers by clicking them ([GH-92016](https://github.com/godotengine/godot/pull/92016)).
- 3D: Improve viewport rotation gizmo drawing ([GH-93639](https://github.com/godotengine/godot/pull/93639)).
- Animation: Rework migration of `animate_physical_bones` for compatibility ([GH-93504](https://github.com/godotengine/godot/pull/93504)).
- Animation: Fix `AnimatedSprite2D/3D::play` using wrong `end_frame` when playing backwards ([GH-93548](https://github.com/godotengine/godot/pull/93548)).
- Animation: Revert the default InterpolationType with angle property to Linear ([GH-93696](https://github.com/godotengine/godot/pull/93696)).
- Audio: Move MIDI parsing up from ALSA driver to platform independent driver ([GH-90485](https://github.com/godotengine/godot/pull/90485)).
- Audio: Fix pausing issues when using Web Audio samples ([GH-93362](https://github.com/godotengine/godot/pull/93362)).
- Audio: Fix Web samples finished missing signal ([GH-94044](https://github.com/godotengine/godot/pull/94044)).
- Buildsystem: Windows/ARM64: Fix raycast/embree ARM64 build with LLVM/MinGW ([GH-93364](https://github.com/godotengine/godot/pull/93364)).
- Buildsystem: SCons: Default `optimize` to `auto`, fixing `target`/`dev_build` inference for Web ([GH-94107](https://github.com/godotengine/godot/pull/94107)).
- C#: Escape generated members ([GH-93198](https://github.com/godotengine/godot/pull/93198)).
- Core: Fix sharing of typed arrays from constructor ([GH-89197](https://github.com/godotengine/godot/pull/89197)).
- Core: Fix storing of Node Array properties ([GH-93430](https://github.com/godotengine/godot/pull/93430)).
- Core: Lookup method also in base scripts of a PlaceHolderScriptInstance ([GH-93452](https://github.com/godotengine/godot/pull/93452)).
- Core: ResourceLoader: Fix handling of uncached loads ([GH-93540](https://github.com/godotengine/godot/pull/93540)).
- Core: Fix duplicating nodes with Array properties ([GH-93672](https://github.com/godotengine/godot/pull/93672)).
- Core: ResourceLoader: Support polling and get-before-complete on the main thread ([GH-93695](https://github.com/godotengine/godot/pull/93695)).
- Core: Revert "Make freed object different than null in comparison operators" ([GH-93809](https://github.com/godotengine/godot/pull/93809)).
- Core: ResourceLoader: Fixup management of thread-specific status ([GH-93928](https://github.com/godotengine/godot/pull/93928)).
- Core: Fix UTF-8 misintepreted as Latin-1 when logging to file ([GH-94006](https://github.com/godotengine/godot/pull/94006)).
- Core: ResourceLoader: Fix error message due to already-awaited tasks being re-awaited ([GH-94070](https://github.com/godotengine/godot/pull/94070)).
- Editor: Properly change GridMap floors while selecting ([GH-87131](https://github.com/godotengine/godot/pull/87131)).
- Editor: Make project naming setting available in project manager ([GH-89788](https://github.com/godotengine/godot/pull/89788)).
- Editor: Rework global class hiding in addons ([GH-91337](https://github.com/godotengine/godot/pull/91337)).
- Editor: Enable custom separators to treat different characters as words ([GH-92514](https://github.com/godotengine/godot/pull/92514)).
- Editor: Fix noticeable freeze after saving a scene ([GH-93147](https://github.com/godotengine/godot/pull/93147)).
- Editor: Fix determining the availability of a new version ([GH-93391](https://github.com/godotengine/godot/pull/93391)) (for real this time?).
- Editor: Make inspector spacing more themable ([GH-93435](https://github.com/godotengine/godot/pull/93435)).
- Editor: Add brief description tooltips to EditorResourcePicker ([GH-93523](https://github.com/godotengine/godot/pull/93523)).
- Editor: Speed up scene group scanning for text scenes ([GH-93723](https://github.com/godotengine/godot/pull/93723)).
- Editor: Fix `EditorHelpBitTooltip` for Signals dock ([GH-93967](https://github.com/godotengine/godot/pull/93967)).
- Export: iOS: Automatically generate ARM64 simulator library from device library if it's missing ([GH-92750](https://github.com/godotengine/godot/pull/92750)).
- Export: Web: Add "threads"/"nothreads" feature tags to export presets ([GH-93556](https://github.com/godotengine/godot/pull/93556)).
- Export: EditorExportPlugin: Call `_export_file` for all resource types ([GH-93878](https://github.com/godotengine/godot/pull/93878)).
- GDExtension: Fix setting base class properties on a runtime class ([GH-94089](https://github.com/godotengine/godot/pull/94089)).
- GDScript: Fix synchronization of global class name ([GH-92303](https://github.com/godotengine/godot/pull/92303)).
- GDScript: Partially allow member lookup on invalid scripts ([GH-92609](https://github.com/godotengine/godot/pull/92609)).
- GDScript: Invalidate cached parser chain when reloading ([GH-92616](https://github.com/godotengine/godot/pull/92616)).
- GDScript: Avoid deadlock possibility in multi-threaded load ([GH-93032](https://github.com/godotengine/godot/pull/93032)).
- GDScript: Enhance handling of cyclic dependencies ([GH-93346](https://github.com/godotengine/godot/pull/93346)).
- GUI: Button: Use `align_to_largest_stylebox` for min. size calculation ([GH-93708](https://github.com/godotengine/godot/pull/93708)).
- GUI: Fix `Control` nodes emitting unnecessary `resized` signals ([GH-93908](https://github.com/godotengine/godot/pull/93908)).
- Import: Reimport file when .import changes ([GH-84974](https://github.com/godotengine/godot/pull/84974)).
- Import: Fix reimporting assets with csv in the project ([GH-92320](https://github.com/godotengine/godot/pull/92320)).
- Import: Fix default collision shape on imported rigidbody ([GH-93506](https://github.com/godotengine/godot/pull/93506)).
- Import: Fix reimport by scan parsing dependency paths incorrectly ([GH-93765](https://github.com/godotengine/godot/pull/93765)).
- Import: Fix adding a translation CSV results in errors on initial import for many types of resources ([GH-93919](https://github.com/godotengine/godot/pull/93919)).
- Import: Update vertex color import to handle Blender 4.2 upwards ([GH-93998](https://github.com/godotengine/godot/pull/93998)).
- Import: Fix re-import glb model doesn't change the old glb model ([GH-94020](https://github.com/godotengine/godot/pull/94020)).
- Input: Add input event callback to `DisplayServerHeadless` ([GH-92806](https://github.com/godotengine/godot/pull/92806)).
- Input: Fix undoredo handling in some dialogs ([GH-93898](https://github.com/godotengine/godot/pull/93898)).
- Input: Wayland: Scale relative pointer motion ([GH-94021](https://github.com/godotengine/godot/pull/94021)).
- Navigation: Fix thread-use causing navigation mesh, source geometry, or polygon data corruption ([GH-93392](https://github.com/godotengine/godot/pull/93392), [GH-93407](https://github.com/godotengine/godot/pull/93407), [GH-93426](https://github.com/godotengine/godot/pull/93426)).
- Particles: Fix USERDATA not copied when trails started ([GH-93595](https://github.com/godotengine/godot/pull/93595)).
- Physics: Fix physics tick counter ([GH-94039](https://github.com/godotengine/godot/pull/94039)).
- Porting: Web: Add `bigint` support on JS value conversion ([GH-93750](https://github.com/godotengine/godot/pull/93750)).
- Porting: Android: Fix crashes and ANRs reported by the Google Play Console ([GH-93933](https://github.com/godotengine/godot/pull/93933)).
- Porting: Web: Fix IME blocking controls ([GH-94024](https://github.com/godotengine/godot/pull/94024)).
- Rendering: Physics interpolation: Fix 2D skinning ([GH-93368](https://github.com/godotengine/godot/pull/93368)).
- Rendering: Make RenderSceneData take projection correction into account ([GH-93630](https://github.com/godotengine/godot/pull/93630)).
- Rendering: D3D12: Use the right state for resources in certain heap types ([GH-93707](https://github.com/godotengine/godot/pull/93707)).
- Rendering: Replace pixel rounding with `floor(x + 0.5)` ([GH-93740](https://github.com/godotengine/godot/pull/93740)).
- Rendering: Android: Fix the issue causing the logo to not show when using the `compatibility` renderer ([GH-93891](https://github.com/godotengine/godot/pull/93891)).
- Rendering: Fix AABB computation for position compression to not depend on vertex order ([GH-93916](https://github.com/godotengine/godot/pull/93916)).
- Rendering: MoltenVK: Fix downscaled hiDPI window pixelation ([GH-93950](https://github.com/godotengine/godot/pull/93950)).
- Thirdparty: thorvg: Update to 0.14.1 ([GH-94103](https://github.com/godotengine/godot/pull/94103)).
## Changelog
**93 contributors** submitted **267 improvements** for this release. See our [**interactive changelog**](https://godotengine.github.io/godot-interactive-changelog/#4.3-beta3) for the complete list of changes since the 4.3-beta2 snapshot. You can also review [all changes included in 4.3](https://godotengine.github.io/godot-interactive-changelog/#4.3) compared to the previous 4.2 feature release.
This release is built from commit [`82cedc83c`](https://github.com/godotengine/godot/commit/82cedc83c9069125207c128f9a07ce3d82c317cc).
## Downloads
{% include articles/download_card.html version="4.3" release="beta3" article=page %}
**Standard build** includes support for GDScript and GDExtension.
**.NET build** (marked as `mono`) includes support for C#, as well as GDScript and GDExtension.
- .NET build requires .NET SDK 6.0 or later ([.NET 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) recommended) installed in a standard location.
- To export to Android, .NET 7.0 or later is required. To export to iOS, .NET 8.0 is required.
{% include articles/prerelease_notice.html %}
## Known issues
During the beta stage, we focus on solving both regressions (i.e. something that worked in a previous release is now broken) and significant new bugs introduced by new features. You can have a look at our current [list of regressions and significant issues](https://github.com/orgs/godotengine/projects/61) which we aim to address before releasing 4.3. This list is dynamic and will be updated if we discover new showstopping issues after more users start testing the beta snapshots.
With every release, we accept that there are going to be various issues which have already been reported but haven't been fixed yet. See the GitHub issue tracker for a complete list of [known bugs](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug+).
## Bug reports
As a tester, we encourage you to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check the [existing issues on GitHub](https://github.com/godotengine/godot/issues) first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.
In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).
## Support
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, as well as a handful of part or full-time developers hired thanks to [generous donations from the Godot community](https://fund.godotengine.org/). A big thank you to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [their financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
If you'd like to support the project financially and help us secure our future hires, you can do so using the [Godot Development Fund](https://fund.godotengine.org/) platform managed by [Godot Foundation](https://godot.foundation/). There are also several [alternative ways to donate](/donate) which you may find more suitable.

View File

@@ -0,0 +1,138 @@
---
title: "Dev snapshot: Godot 4.3 dev 6"
excerpt: "The last dev snapshot for 4.3 before feature freeze is a big one after 6 weeks of work!"
categories: ["pre-release"]
author: Rémi Verschelde
image: /storage/blog/covers/dev-snapshot-godot-4-3-dev-6.webp
image_caption_title: "Tristram"
image_caption_description: "A game by Bippinbits"
date: 2024-05-01 13:00:00
---
This is the last dev snapshot before entering the beta phase for Godot 4.3, which means that we now consider 4.3 feature complete!
This one is particularly feature-packed with 650 commits (twice as big as previous snapshots), because we took the time to address some regressions and compatibility breakages caused by some of the new changes. So while some contributors focused on fixing these regressions, others had plenty of time to finalize and merge many improvements and bugfixes in all engine areas.
As usual, we expect a big increase in the number of testers once we release 4.3 beta 1 in the near future. So for all the brave users who are already testing our 4.3 dev snapshots, please make sure to report any breaking issue you encounter, so we can aim for having as smooth of a beta launch as possible.
Keep in mind that while we try to make sure each dev snapshot is stable enough for general testing, this is by definition a pre-release piece of software. Be sure to make frequent backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.
[Jump to the **Downloads** section](#downloads), and give it a spin right now, or continue reading to learn more about improvements in this release. You can also [try the **Web editor**](https://editor.godotengine.org/releases/4.3.dev6/) or the **Android editor** for this release. If you are interested in the latter, please request to join [our testing group](https://groups.google.com/g/godot-testers) to get access to pre-release builds.
-----
*The cover illustration is from* [**Tristram**](https://bippinbits.itch.io/tristram), *a Ludum Dare 55 submission by [Bippinbits](https://bippinbits.com/), made with Godot 4.3 dev 5. The game has you take on the role of the mayor of Diablo 1's Tristram, managing the city and its steady supply of heroes seeking riches.*
## Highlights
This snapshot comes loaded with new features and important fixes, after more than six weeks of further development.
As a reminder, this section only covers changes made since the previous [4.3 dev 5 snapshot](/article/dev-snapshot-godot-4-3-dev-5/). For a more comprehensive overview of what's new in Godot 4.3 compared to 4.2, you'll have to wait for the first beta release, or refer to our [interactive changelog](https://godotengine.github.io/godot-interactive-changelog/#4.3).
### 2D physics interpolation
Fixed timestep a.k.a. physics interpolation is now implemented for 2D ([GH-88424](https://github.com/godotengine/godot/pull/88424)), forward-ported from the version merged for Godot 3.6 last year ([GH-76252](https://github.com/godotengine/godot/pull/76252)).
This will help address cases of position/camera jitter in 2D games, and should complement some of the pixel-art focused changes made in the [4.3 dev 4 snapshot](/article/dev-snapshot-godot-4-3-dev-4/#huge-improvement-to-pixel-stability-for-pixel-art-games).
### TileMap layers as nodes
TileMap layers are now exposed as individual TileMapLayer nodes ([GH-89179](https://github.com/godotengine/godot/pull/89179)) , which means less clutter in the inspector, a simpler API, and is also more in line with common Godot design patterns.
To avoid the small drawbacks that would come with that change, we added new editor features, for example the ability to select all layers in the currently edited scene. The TileMap node itself is marked as deprecated but will stay for a while (it will not get any new features though).
To help with the transition, you can automatically transform a TileMap node to a set of TileMapLayer nodes via a dropdown menu entry in the editor. You'll have to update your scripts, but don't worry, the API is very similar.
### PackedByteArrays saved with base64 encoding
One common annoyance with Godot's text-based scene/resource format (`tscn`/`tres`) is that the serialization of PackedByteArray properties takes a lot of space, leading to inflated file sizes, and noisy diffs. To help with that, we changed the serialization of PackedByteArrays to use base64 encoding, which is more compact, especially for bigger arrays ([GH-89186](https://github.com/godotengine/godot/pull/89186)).
This change however means that the scene format changed in a way that can't be parsed by earlier Godot releases. To ease this transition, we made it so that Godot 4.3 only saves scenes and resources using this new format if they contain a PackedByteArray ([GH-90889](https://github.com/godotengine/godot/pull/90889)). Additionally, we are backporting support for parsing the new format to the upcoming Godot 4.2.3 and 4.1.5 releases ([GH-91250](https://github.com/godotengine/godot/pull/91250)), so that it would still be possible for users to roll back to these versions if they need to.
Finally, we also changed the name of the Editor Settings config file to make it specific to each Godot minor version ([GH-90875](https://github.com/godotengine/godot/pull/90875)). This avoids losing configuration when going back and forth between slightly incompatible Godot branches. The first time you use a new Godot minor branch (e.g. 4.3), it will port settings from the previous version (e.g. 4.2), but from there on the two config files stay separate.
### Automatic checking for engine updates
We finally implemented a long-requested feature in the project manager to check for new Godot versions ([GH-75916](https://github.com/godotengine/godot/pull/75916)). This is convenient both when testing pre-release versions like this one, to be notified when beta 1 or future releases are published, but also for new maintenance or feature releases in stable branches.
Out of concern for users' privacy, this feature is not enabled by default, but can be toggled easily by enabling the "Online" network mode in the project manager's settings.
### Reverse Z for the depth buffer
After extensive discussion, the rendering team decided to implement the common Reverse Z depth buffer technique in Godot. This couldn't be done in time for 4.0, and doing it now implies a compatibility breakage for shaders, though the team has taken measures to really limit the impact of the change. Most shaders and 3D scenes should be unaffected, but some specific scenarios will need some tweaks.
See [this blog post](/article/introducing-reverse-z/) for details on the change, and how to handle the compatibility breakage in affected shaders.
### And more!
- Animation: Implement a base class `SkeletonModifier3D` as refactoring for nodes that may modify `Skeleton3D` ([GH-87888](https://github.com/godotengine/godot/pull/87888))
- Audio: Add AudioEffectHardLimiter as a rework of audio limiter effect ([GH-89088](https://github.com/godotengine/godot/pull/89088)).
- Core: Add typed array support for binary serialization ([GH-78219](https://github.com/godotengine/godot/pull/78219)).
- Core: Refactor OS exit code to be `EXIT_SUCCESS` by default ([GH-89229](https://github.com/godotengine/godot/pull/89229)).
- Core: Use WorkerThreadPool for Server threads ([GH-90268](https://github.com/godotengine/godot/pull/90268)).
- C#: Fix serialization of delegates capturing variables ([GH-83217](https://github.com/godotengine/godot/pull/83217)).
- C#: Throw exception when solution file is missing during exporting ([GH-87829](https://github.com/godotengine/godot/pull/87829)).
- C#: Implement InvariantCulture on Variant strings ([GH-89547](https://github.com/godotengine/godot/pull/89547)).
- C#: Add DebugView for Array and Dictionary ([GH-90060](https://github.com/godotengine/godot/pull/90060)).
- C#: Change order of operation for C# types reloading ([GH-90837](https://github.com/godotengine/godot/pull/90837)).
- Editor: Allow docks to be closed and opened ([GH-89017](https://github.com/godotengine/godot/pull/89017)).
- GDExtension: Add renaming of PDB files to avoid blocking them ([GH-87117](https://github.com/godotengine/godot/pull/87117)).
- GDScript: Fix errors when renaming/moving/deleting global scripts ([GH-90186](https://github.com/godotengine/godot/pull/90186)).
- GUI: Implement GraphFrame and integrate it in VisualShader ([GH-88014](https://github.com/godotengine/godot/pull/88014)).
- GUI: Add text tooltip for TabBar & TabContainer ([GH-89247](https://github.com/godotengine/godot/pull/89247)).
- Import: Tweak environment in the Advanced Import Settings dialog ([GH-75787](https://github.com/godotengine/godot/pull/75787)).
- Import: Add secondary light to 3D Advanced Import Settings ([GH-76140](https://github.com/godotengine/godot/pull/76140)).
- Navigation: Make 2D navigation mesh baking parse all TileMapLayers ([GH-85856](https://github.com/godotengine/godot/pull/85856)).
- Navigation: Add a partial path return option for AStar ([GH-88047](https://github.com/godotengine/godot/pull/88047)).
- Navigation: Change 2D navigation mesh baking to use floating point coordinates ([GH-89929](https://github.com/godotengine/godot/pull/89929)).
- Navigation: Add navigation path simplification ([GH-90434](https://github.com/godotengine/godot/pull/90434)).
- Navigation: Add navigation mesh source geometry parsers and callbacks ([GH-90876](https://github.com/godotengine/godot/pull/90876)).
- Particles: Fix CPU/GPUParticles2D bugs on Compatibility Rendering (GLES3) on Adreno 3XX devices ([GH-88816](https://github.com/godotengine/godot/pull/88816)).
- Physics: Add HeightMapShape3D update with Image data ([GH-87889](https://github.com/godotengine/godot/pull/87889)).
- Physics: Fix `move_and_slide` wall slide acceleration (3D) ([GH-90915](https://github.com/godotengine/godot/pull/90915)).
- Porting: Implement pipe API for executed processes IO redirection ([GH-89206](https://github.com/godotengine/godot/pull/89206)).
- Rendering: Add option to bake a mesh from blend shape mix ([GH-76725](https://github.com/godotengine/godot/pull/76725)).
- Rendering: Add reflection probe support to compatibility renderer ([GH-88056](https://github.com/godotengine/godot/pull/88056)).
- Rendering: Shadow fade for omni lights actually stops the shadow from updating while faded out to improve performance ([GH-89729](https://github.com/godotengine/godot/pull/89729)).
- Rendering: Exit light calculation early when pixel outside of light bounding rectangle ([GH-90920](https://github.com/godotengine/godot/pull/90920)).
- Rendering: Add `LIGHT_VERTEX` to fragment shader ([GH-91136](https://github.com/godotengine/godot/pull/91136)).
- Rendering: Add adjustments and color correction to Compatibility renderer ([GH-91176](https://github.com/godotengine/godot/pull/91176)).
- Shaders: Implement documentation comments and tooltips for shader uniform in the inspector ([GH-90161](https://github.com/godotengine/godot/pull/90161)).
- XR: Rework XR Trackers to have a common ancestor ([GH-90645](https://github.com/godotengine/godot/pull/90645)).
- Thirdparty: Embree 4.3.1, HarfBuzz 8.4.0, libktx 4.3.2, MbedTLS 3.6.0, ThorVG 0.12.10, zstd 1.5.6.
## Changelog
**179 contributors** submitted **650 improvements** for this release. See our [**interactive changelog**](https://godotengine.github.io/godot-interactive-changelog/#4.3-dev6) for the complete list of changes since the previous 4.3-dev5 snapshot. You can also review [all changes included in 4.3](https://godotengine.github.io/godot-interactive-changelog/#4.3) compared to the previous 4.2 feature release.
This release is built from commit [`64520fe67`](https://github.com/godotengine/godot/commit/64520fe6741d8ec3c55e0c9618d3fadcda949f63).
## Downloads
{% include articles/download_card.html version="4.3" release="dev6" article=page %}
**Standard build** includes support for GDScript and GDExtension.
**.NET build** (marked as `mono`) includes support for C#, as well as GDScript and GDExtension.
- .NET build requires .NET SDK 6.0 or later ([.NET 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) recommended) installed in a standard location.
- To export to Android, .NET 7.0 or later is required. To export to iOS, .NET 8.0 is required.
{% include articles/prerelease_notice.html %}
## Known issues
There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven't been fixed yet. See the GitHub issue tracker for a complete list of [known bugs](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug+).
## Bug reports
As a tester, we encourage you to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check the [existing issues on GitHub](https://github.com/godotengine/godot/issues) first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.
In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).
## Support
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, as well as a handful of part or full-time developers hired thanks to [generous donations from the Godot community](https://fund.godotengine.org/). A big thank you to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [their financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
If you'd like to support the project financially and help us secure our future hires, you can do so using the [Godot Development Fund](https://fund.godotengine.org/) platform managed by [Godot Foundation](https://godot.foundation/). There are also several [alternative ways to donate](/donate) which you may find more suitable.

View File

@@ -0,0 +1,65 @@
---
title: "New Dev Fund Perks: Discord Role and Forum Badge"
excerpt: "Proudly display your support on our community platforms."
categories: ["news"]
author: Winston Yallow
image: /storage/blog/covers/development-fund-perks.webp
date: 2024-07-10 12:00:00
---
We have added new benefits for members of the Godot Development Fund! On our [official forum](https://forum.godotengine.org/), a special badge is now available as a thank you for your continued support. Likewise, you can get a custom role on our brand new official [Discord server](https://discord.com/invite/7HtykRQ4Rg)! Read the instructions below for connecting your accounts.
Not a fund member yet? [Subscribe now!](https://fund.godotengine.org/#membership)
## Connecting your accounts
### Forum Badge
The forum badges are assigned automatically to your Godot account when you become a Development Fund member. Make sure to use the same Godot account on the forum!
![Badge with a golden Godot logo and the text "Fund Member - Member of the Development Fund", awarded to 47 users](/storage/blog/development-fund-perks/forum-badge.webp)
If you are already a Development Fund member but your badge does not show up, make sure that you have signed in at least once to the [Development Fund](https://fund.godotengine.org/#membership) website. It may take up to 24 hours for the badge to appear on the forum.
### Discord Role
Make sure you are subscribed and logged in to the [Development Fund](https://fund.godotengine.org/#membership), then follow these instructions:
1. Authorize our Discord application by clicking "Connect with Discord":
<div class="preview-image-container">
<img alt='Screenshot of the Fund page showing the "Connect with Discord" option' src='/storage/blog/development-fund-perks/fund-website.webp'/>
<img alt='Screenshot of discord prompt asking for Authorization' src='/storage/blog/development-fund-perks/discord-auth.webp'/>
</div>
2. In the options for our [Discord server](https://discord.com/invite/7HtykRQ4Rg), find and select the "Linked Roles" option
<div class="preview-image-container">
<img alt='Screenshot of discord server menu with "Linked Roles" option' src='/storage/blog/development-fund-perks/discord-menu.webp'/>
</div>
3. Choose the "Fund Member" role
![Screenshot of discord prompt asking for Authorization](/storage/blog/development-fund-perks/discord-select-role.webp)
4. Click "Finish" to complete the process. Without finishing, the role won't show up!
![Screenshot of discord prompt asking for Authorization](/storage/blog/development-fund-perks/discord-finish.webp)
## Not ready to become a member yet?
While this won't give you a fancy badge or role, we have recently added the option for one-time donations. With this update, we also switched to Stripe as our payment provider to offer the option to donate via credit card in addition to PayPal.
For those of you that have been with the project for a long time already, you might remember our [Patreon](https://patreon.com/godotengine). In case you haven't already, we encourage you to move your donation over to this self-hosted solution, as we receive more of your contributions here without the provider fees. Nonetheless, the page will stay up for the time being and also connect to the Discord mentioned above.
Thank you for ensuring that we can keep developing the Godot Engine!
<style>
.preview-image-container {
display: flex;
justify-content: center;
align-items: center;
padding: 16px;
background-color: transparent;
}
.preview-image-container {
background-color: transparent;
}
.preview-image-container img {
max-height: 300px;
background-color: transparent;
}
</stlye>

View File

@@ -0,0 +1,29 @@
---
title: "Godot returns: gamescom latam"
excerpt: "Godot will be present at gamescom latam once again: meet contributors and fellow gamedevs at the booth, or sign up to our very own party!"
categories: ["events"]
author: George Marques
date: 2024-06-21 13:00:00
image: /storage/blog/covers/gamescom-latam-2024.webp
image_caption_title: "gamescom latam 2024 venue"
image_caption_description: "Photo of the São Paulo Expo, where the event will take place."
---
Last year Godot had a [booth at the BIG Festival](https://godotengine.org/article/godot-at-big-festival-2023/) and it was a great success. This year the event has rebranded as [gamescom latam](https://latam.gamescom.global/) and once again we secured ourselves a booth. It will take place between **June 26th and June 30th** - make sure to come by if you are attending! We have stickers and pins waiting for you.
![Photo from the booth last year](/storage/blog/gamescom-latam-2024/booth-2023.webp)
The BIG Festival was already the biggest event for game developers in Latin America and therefore a must to attend; with it now carrying the internationally recognizable name of gamescom one can only imagine how much it will continue to grow.
The event features a good amount of booths, with plenty of games to play and many people to meet. It also includes many talks in all areas of game development, all covered by the standard ticket. Not to mention the business area where one can schedule meetings with other companies to negotiate deals or form lasting connections.
The Godot booth is sponsored by a joint effort of [W4 Games](https://w4games.com/), [anitya](https://www.anitya.space/), and [Vertex Ludi](https://www.vertexludi.com/). It is a great place to meet the community and proof that we are here to stay. Looking at last year, we expect to have a busy booth teeming with interesting conversations, as well as some merchandise to take home with you. A short talk titled ["**Godot and Its Emerging Ecosystem**"](https://b2b.latam.gamescom.global/talks/13/965) is also on the program, which will take place on **June 27** at **10:00** (local time) on the **Quest 2 stage**.
![Render of this years booth](/storage/blog/gamescom-latam-2024/booth-render-2024.webp)
If that is not enough, thanks to our sponsors we will be hosting a Godot community gathering for about 100 people. The idea is to meet on a more casual level and get to know the local community better. Networking with likeminded game developers is key! This party is scheduled for the **June 27th** starting from **19:30** (local time). Make sure to register [here!](https://partiful.com/e/pOorzSXfk63wWfSssG3Z).
While many team members are unfortunately unable to attend due to travel logistics, we made sure to send local correspondents like [myself](https://github.com/vnen) and [Michael (Yeldham)](https://github.com/YeldhamDev) to this important event for the Latin American community regardless, to ensure Godot stays represented where it once started.
Staying in touch with the LATAM community is exciting, so we cannot wait for this event to come around. Will we meet you there?

View File

@@ -2,7 +2,7 @@
title: "Introducing our GDC Line-up"
excerpt: "Like we announced a while ago, the team is preparing to head over to the US for this years GDC. We will have a booth on the expo floor, and would love to welcome you there!"
categories: ["events"]
author: Nathalie Galla
author: Nat
image: /storage/blog/gdc/2024/gdc2.webp
date: 2024-03-01 16:00:00
---
@@ -181,4 +181,4 @@ On the 21st of March, we will be joined by a senior class of students from a loc
}
</style>
<p style="text-align: center; font-size: 2em;">👋 See you there!</p>
<p style="text-align: center; font-size: 2em;">👋 See you there!</p>

View File

@@ -2,7 +2,7 @@
title: "GDC 2024: Retrospective"
excerpt: "We have returned from the Game Developers Conference (GDC) in San Francisco, so let's talk about it!"
categories: ["events"]
author: Nathalie Galla
author: Nat
image: /storage/blog/covers/gdc-2024-retrospective.jpg
date: 2024-04-05 14:00:00
---
@@ -15,7 +15,7 @@ First of all, we want to thank our sponsors at W4 Games again for providing us w
The main difference to last year is rather shocking: barely anyone needed an explanation about what Godot is anymore. Visitors were excited to play the [showcased games](https://godotengine.org/article/gdc-2024-godot-games/), and recognized titles — some really surprised to find out their favorites used the engine! Studios and other companies also came by plenty to talk about how they found out about Godot through an excited colleague or the news, and a handful mentioned they started experimenting or even using it in their projects. We took note of peoples wants & needs during these chats, appreciative of being able to forward these first hand accounts of users directly to our engineers.
Notably, we heard from a significant number of people who recently transitioned to Godot that it is working well for them, they love the current feature set, and the engine is not holding them back. However, they are still encountering a few too many pain points requiring workarounds or waiting for updates. For the team, this was a strong indicator that we need to spend more time identifying and resolving these everyday “papercut” issues that add up and impact users' workflows. Expect to hear more about this soon, as we are back to discuss and adapt our priorities to the feedback we brought with us from the conference.
Notably, we heard from a significant number of people who recently transitioned to Godot that it is working well for them, they love the current feature set, and the engine is not holding them back. However, they are still encountering a few too many pain points requiring workarounds or waiting for updates. For the team, this was a strong indicator that we need to spend more time identifying and resolving these everyday “papercut” issues that add up and impact users' workflows. Expect to hear more about this soon, as we are back to discuss and adapt our priorities to the feedback we brought with us from the conference.
![Exhibitors at the Godot booth](/storage/blog/gdc/2024/booth.png)
@@ -29,7 +29,6 @@ Our gathering at GitHub HQ also proved successful, with many Godot users, conten
As for the team itself, this conference allowed the fully remote team to assemble in person again. Between booth duty, team meetings, and extracurricular activities, we are happy to report we all grew a little closer. Even engine developers need to leave their houses sometimes ;)
At the end of the day, we and everyone we met are passionate about this open source project — interacting with the community in person is a really helpful tool to remind everyone of that common ground, and use it to our advantage: to compare feedback and sentiment to what we hear on the internet, and to forge lasting relationships. Which is one of the key reasons why we are now looking into being present at more conferences across the world in the future, aiming to enable more of these important conversations and super helpful learnings. This will come at the expense of a smaller GDC booth next year however, as we have to split budget and personpower accordingly. San Francisco indeed proved as pricey as everybody keeps saying, and we strongly believe there is more to gain from diversifying opposite to always being in one and the same location.
At the end of the day, we and everyone we met are passionate about this open source project — interacting with the community in person is a really helpful tool to remind everyone of that common ground, and use it to our advantage: to compare feedback and sentiment to what we hear on the internet, and to forge lasting relationships. Which is one of the key reasons why we are now looking into being present at more conferences across the world in the future, aiming to enable more of these important conversations and super helpful learnings. This will come at the expense of a smaller GDC booth next year however, as we have to split budget and personpower accordingly. San Francisco indeed proved as pricey as everybody keeps saying, and we strongly believe there is more to gain from diversifying opposite to always being in one and the same location.
Did you visit the booth? Snapped any pictures you want to share with us? Use the forum post [linked here](https://forum.godotengine.org/t/gdc-2024-retrospective/54687) to tell us about your experience at GDC, we would love to hear back from you :)

View File

@@ -2,7 +2,7 @@
title: "GLES2 renderer optimization - 2D batching"
excerpt: "While Juan's work on the Vulkan rendering backend is ongoing in the master branch, the rest of the rendering team have not been idle. They have been working on many bug fixes and some improvements to the OpenGL rendering in the 3.x branch, and one of the most awaited is the addition of batching of 2D primitives in the GLES2 renderer, which should significantly increase performance in a lot of 2D games."
categories: ["progress-report"]
author: Bartleby Lawnjelly
author: lawnjelly
image: /storage/app/uploads/public/5e8/e58/0c6/5e8e580c63d1e981395802.png
date: 2020-04-09 11:42:21
---

View File

@@ -0,0 +1,24 @@
---
title: "Godot Community Poll 2024"
excerpt: "We want to learn more about the Godot community, understand who the users of the engine are, and find out how we can better support you."
categories: ["news"]
author: Emi
image: /storage/blog/covers/community-poll-2024.webp
image_caption_description: Illustration by André Marí Coppola
date: 2024-06-28 14:00:00
---
**Update:** This poll is now over. [You can view the results here.](https://docs.google.com/forms/d/1eicOppRQG2RFZ8CjIGFf5Kha5yklO854fV8-YFtlWxk/viewanalytics)
___
We want to learn more about the Godot community, understand who the users of the engine are, and find out how we can better support you. We have a short list of questions and hope you will take a few minutes to fill them out.
The poll is anonymous, and we will share the results publicly once submissions are closed. It will remain open for a week and should take only 5-10 minutes to complete.
👉 [Click here to complete the 2024 community poll!](https://forms.gle/tkxaJr72qt2U52SY8)
If you are interested in results from previous years, you can find them at the following links:
[2023](https://docs.google.com/forms/d/e/1FAIpQLSeXRE1nF64PUilO6fA7Pevh2lWukJtpdBvc2_A3fGfuciy-gQ/viewanalytics),
[2022](https://docs.google.com/forms/d/e/1FAIpQLSe-OIpxXqou9cDnPXEAjxzpICbf8_YZB3jUizdECXRydtB8cA/viewanalytics), [2021](https://docs.google.com/forms/d/e/1FAIpQLSfOj9m71X98_z7-UC4iiM6Uxd2HhITRzmF-M2Yx-d7Yq5KNUg/viewanalytics), and [2020](https://docs.google.com/forms/d/e/1FAIpQLSePCblF1p-Sv3AJYWQ8reRhx8c-1WOX9ZI0P-NJ-5TGw79bqA/viewanalytics).

View File

@@ -0,0 +1,33 @@
---
title: "GodotCon 24 - Submit ideas! Get tickets!"
excerpt: "GodotCon 24 will take place on the 12+13th of October in Berlin, Germany. The first batch of tickets as well as the call for speakers and exhibitors just went live. Sponsors welcome."
categories: ["events"]
author: Nat
image: /storage/blog/covers/godotcon-2024.webp
date: 2024-06-14 18:00:00
---
| 📅 Date | 12th+13th of October |
| 📍 Location | Berlin, Germany |
| 🌐 Website | https://conference.godotengine.org/ |
After a very successful conference last year in Munich, we onboarded more lovely volunteers and expanded our offerings: this edition will have talks, workshops, a game/project showcase, and downtime activities around the venue.
The event grounds we chose offer ample space to simply sit and chat, especially if the weather permits using the outdoor spaces. Scattered across the floors you will also have the option to buy food & drink. We will definitely also use the opportunity to sell limited edition Godot merchandise.
To facilitate business meetings, we are currently setting up our own matchmaking software; stay tuned to learn more about it. It will be available for all attendees, no matter the ticket choice.
Have you thought about participating in the program yet? Take a look at our call for speakers and exhibitors below - this event is a collaborative effort between us and the community!
[**➡️ Call for submissions**](https://talks.godotengine.org/godotcon-24/cfp), Deadline: 31st of July
Speaking of collaboration, we are actively looking for sponsors to support GodotCon not just monetarily, but also with content or products. If you or your company would be interested in learning more about the sponsorship ideas we have prepared, simply download this fact-sheet we put together and reach out to [godotcon@godotengine.org](mailto:godotcon@godotengine.org).
[**⬇️ Sponsor factsheet**](https://conference.godotengine.org/downloads/godotcon24-factsheet-sponsoring.pdf)
Last but not least, as we collectively gear up to make this event a blast, people already have been gathering on our community Discord to share their excitement and reminisce about the past years together.
Even if you do not plan to attend this installment, we recommend taking a look for potential business contacts and to be the first to know about any future events.
[**➡️ Join the GodotCon Discord**](https://discord.gg/nAcE7msd5H)
See you in autumnal, pumpkin-spice smelling, hopefully not too cold Berlin! 🍂🥧

View File

@@ -62,8 +62,8 @@ Writing to `DEPTH` comes with the same warnings as writing to `POSITION`. If the
```
// This will continue to work.
vec4 clip_pos = PROJECTION_MATRIX * vec4(VERTEX, 1.0);
clip_space.xyz /= clip_space.w;
DEPTH = clip_space.z;
clip_pos.xyz /= clip_pos.w;
DEPTH = clip_pos.z;
// This will need to change.
DEPTH = 0.0; // Needs to change to 1.0.
@@ -91,7 +91,7 @@ This code will require no modification. Where users will need to make modificati
```
vec4 clip_pos = PROJECTION_MATRIX * vec4(VERTEX, 1.0);
clip_space.xyz /= clip_space.w;
clip_pos.xyz /= clip_pos.w;
float depth = textureLod(depth_texture, SCREEN_UV, 0.0).r;
if (clip_pos > depth) {

View File

@@ -2,7 +2,7 @@
title: "January Jams"
excerpt: "Looking back at a month of game jams, we curated a list of ten events that you might or might not have heard of before."
categories: ["events"]
author: Nathalie Galla
author: Nat
image: /storage/blog/covers/godot-jam.webp
image_caption_description: "Jam base image by <a href='https://www.freepik.com/free-photo/jam-isolated-white_1198739.htm#query=jam&position=39&from_view=search&track=sph&uuid=449f0bd4-ec2a-4a1b-aef3-d0ad383022a7'>luis_molinero</a> on Freepik"
date: 2024-01-31 12:00:00
@@ -22,7 +22,7 @@ Did you hear about Mickey Mouse entering the public domain this year? How is tha
### 2. Finally Finish Something (FFS) 2024
🔗 [https://itch.io/jam/finally-finish-something-2024](https://itch.io/jam/finally-finish-something-2024)
🔗 [https://itch.io/jam/finally-finish-something-2024](https://itch.io/jam/finally-finish-something-2024)
📅 January 1st - February 4th
@@ -30,7 +30,7 @@ Be honest, how high is your stack of unfinished games that you once were sure wo
### 3. Queer Vampire Jam
🔗 [https://itch.io/jam/queer-vampire](https://itch.io/jam/queer-vampire)
🔗 [https://itch.io/jam/queer-vampire](https://itch.io/jam/queer-vampire)
📅 January 10th - February 20th
@@ -38,7 +38,7 @@ While there are a plethora of “niche” game jams at any given time, it seems
### 4. Game Dev Knock Out (GDKO) - Round 1
🔗 [https://itch.io/jam/gdko-2024](https://itch.io/jam/gdko-2024)
🔗 [https://itch.io/jam/gdko-2024](https://itch.io/jam/gdko-2024)
📅 January 1st - January 15th
@@ -46,7 +46,7 @@ The Squid Games of the game dev world. The previous sentence is taken straight f
### 5. New Year, New Skills Game Jam
🔗 [https://itch.io/jam/new-year-new-skills-game-jam](https://itch.io/jam/new-year-new-skills-game-jam)
🔗 [https://itch.io/jam/new-year-new-skills-game-jam](https://itch.io/jam/new-year-new-skills-game-jam)
📅 January 7th - January 14th
@@ -54,7 +54,7 @@ An explicitly beginner-friendly jam organized by [Bitter Sails Games](https://tw
### 6. Godot Wild Jam #65
🔗 [https://itch.io/jam/godot-wild-jam-65](https://itch.io/jam/godot-wild-jam-65)
🔗 [https://itch.io/jam/godot-wild-jam-65](https://itch.io/jam/godot-wild-jam-65)
📅 January 12th - January 21st
@@ -70,7 +70,7 @@ A jam organized by game developer & Twitch streamer [Pirate Software](https://tw
### 8. GlobalGameJam
🔗 [https://globalgamejam.org/](https://globalgamejam.org/)
🔗 [https://globalgamejam.org/](https://globalgamejam.org/)
📅 January 22nd - January 28th
@@ -80,7 +80,7 @@ From the numbers that are accessible to us, we can estimate that about __16% of
### 9. GGJ Next
🔗 [https://ggjnext.org/](https://ggjnext.org/)
🔗 [https://ggjnext.org/](https://ggjnext.org/)
📅 January 22nd - January 28th
@@ -88,7 +88,7 @@ Concurrent to the Global Game Jam this event by the same organizers caters to th
### 10. Trijam #254
🔗 [https://itch.io/jam/trijam-254](https://itch.io/jam/trijam-254)
🔗 [https://itch.io/jam/trijam-254](https://itch.io/jam/trijam-254)
📅 January 26th - January 29th
@@ -97,5 +97,3 @@ Is it possible to make a game in just three hours? The hosts of this fast paced
----
Did you join any game jams this month? Then dont miss out on the opportunity to self-promote your projects under our __#JamJanuary__ posts which you can find here: [linkin.bio/godot](https://linkin.bio/godot).

View File

@@ -0,0 +1,340 @@
---
title: "Migrating Animations from Godot 4.0 to 4.3"
excerpt: "In Godot 4.3, a large number of animation features have been reworked since 4.0, so it's time to migrate your animations."
categories: ["progress-report"]
author: Silc Renew
image: /storage/blog/covers/migrating-animations-from-godot-4-0-to-4-3.webp
date: 2024-06-04 00:00:00
---
<style>article .content img { background-color: initial; }</style>
# TL;DR
Animation features were still quite immature in 4.0 and there were many undefined behaviors. 4.3 has redefined many behaviors along with some options, so we recommend that you review your settings.
- For blending and `RESET` animation
- [Deterministic blending](#deterministic-blending)
- For `Discrete` value (int, resource and etc.) animation
- [CallbackModeDiscrete](#callbackmodediscrete)
- For `Capture` update mode
- [capture()](#capture)
- For `AnimationNodeStateMachine`
- [NodeStateMachine - State Machine Type](#nodestatemachine---state-machine-type)
# Description
I'm glad to write this article because it means that animation in Godot 4 is now reaching a stable phase.
We announced many improvements to Godot's animation systems when we released Godot 4.0. The work hasn't slowed down and there has been a gigantic amount of reworking done internally between Godot 4.0 and Godot 4.3, it has been like driving on a super bumpy road.
![super dirt road](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/drive.webp)
After the launch of Godot 4.0, we have taken care to ensure that each change does not cause a major breakdown in compatibility. However, there are cases where we cannot avoid making changes to old projects. So we always try to provide some options in such cases, but there may be cases where manual configuration by the user is required.
Despite extensive class references and documentation, we've lacked practical migration guidelines. Now, at this ideal time, I will explain how to upgrade your projects using real-world examples
I also recommend that even those who do not need to migrate take a look at these, as you can learn about some interesting new features.
# Timeline
Here is a timeline of the availability of features by version for features that were temporarily affected by the rework.
![timeline](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/timeline-01.webp)
# Introduce New Features
Here are the options and methods that have been changed or added between 3.x and 4.3.
## AnimationMixer
`AnimationMixer` is a new Node implemented in 4.2 that becomes the base class for `AnimationPlayer` and `AnimationTree`.
![animation mixer node](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/node_animation_mixer.webp)
The `AnimationMixer` has the role of managing the `AnimationLibrary` list and applying the blending results. In other words, the `AnimationMixer` does not have the role of processing time progression such as playback, but receives time information processed by child classes such as `AnimationPlayer` and `AnimationTree` and blends those key values.
`AnimationTree` now can manage the `AnimationLibrary` list by itself without the need for `AnimationPlayer` by inheriting `AnimationMixer`. For compatibility, it is also possible to specify an `AnimationPlayer` and use its list as before.
This unification of `AnimationPlayer` and `AnimationTree` will ensure the equivalence of most functions after 4.2. This means that prior to 4.2, `AnimationPlayer` and `AnimationTree` worked with different code although there was some duplication.
The `AnimationMixer` fixed a large number of bugs that came from the inconsistencies between `AnimationPlayer` and `AnimationTree`, but it also raised some potential bugs to the surface. We have been hard at work resolving these new bugs.
![bugbugbug](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/bugbugbug.webp)
Also, several options needed to be added to keep old behaviors. After 4.2, AnimationTree and AnimationPlayer have different default values for the AnimationMixer property, which is based on compatibility with the old behavior.
When implementing those base classes, one of the particular difficulties was the compatibility of the blending algorithms. Blendings could be nested many times, and it was necessary to consider what behavior was desirable for the user in each use case. Also, the blending weights calculation in 3.x was not consistent enough, so we needed to rewrite that algorithm to ensure that the result was calculated correctly.
![balance](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/balance.webp)
### Deterministic blending
This is a new option implemented in Godot 4.2. In fact, AnimationTree always had been applied with this option in Godot 4.0 and 4.1.
![deterministic property](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/prop_deterministic.webp)
This is an option mainly to control cases where the total blending weight is `0`.
**For example:**
When comparing two animations, there are cases where only one has a track and the other does not.
![animations with unmatched track count 1](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/anim1.webp)
![animations with unmatched track count 2](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/anim2.webp)
When `animation1` and `animation2` are blended so that `animation2` is 100%, the scale track will have the total blending weight is `0` in the result.
**We can expect two possible behaviors in here:**
1. Do nothing
2. Apply default value
In 3.x both AnimationTree and Animation player used option 1. In Godot 4.0 and 4.1, AnimationPlayer used option 1 but AnimationTree used option 2.
AnimationTree starting using option 2 in 4.0 because it was necessary to process additive blending correctly.
In additive blending, cases where the total weight of blending is `total_weight < 1` or `total_weight > 1` the value must be interpolated from the default value. This means that if the total blending weight is `0`, the animation will be set to the default value. This means that if one animation has no track in the blending, the default value will be applied, and the result will look like performing a reset.
This reset behavior is also convenient with retargeting which was introduced in 4.0.
Some models may have extra bones between the retargeted bones. In this case, when blending occurs with an animation that does not have extra bones, the appearance will be inconsistent if the extra bones are not reset.
**For example:**
Model A has an animation "look up" with 3 bone tracks.
<video autoplay loop muted playsinline>
<source src="/storage/blog/migrating-animations-from-godot-4-0-to-4-3/retarget1.mp4?1" type="video/mp4">
</video>
Model B has an animation "bow" with 4 bone tracks.
<video autoplay loop muted playsinline>
<source src="/storage/blog/migrating-animations-from-godot-4-0-to-4-3/retarget2.mp4?1" type="video/mp4">
</video>
Then, let's play these animations sequentially without resetting.
<video autoplay loop muted playsinline>
<source src="/storage/blog/migrating-animations-from-godot-4-0-to-4-3/retarget3.mp4?1" type="video/mp4">
</video>
It creates a condition where the appearance of the animations do not match between them. So, as you can see from the results, the 3D model pipeline required that resetting behavior.
However doing this caused issues in some cases. Especially frequently reported were cases using `AnimationNodeStateMachine` with 2D projects.
If there is no crossfade in the `AnimationNodeStateMachine` transition, the animation appears to suddenly switch without blending, but internally it is blending, which causes the resetting. This was confusing because it was appeared to be doing the same thing as AnimationPlayer, but it was behaving differently.
Finally, we added a `Deterministic` option in 4.2 that allows the user to set whether the resetting is enabled or not. Also, now that `Deterministic` blending is available in AnimationPlayer, there are more possibilities for projects that use AnimationPlayer.
**For example, this is useful when animating a GUI:**
#### Non-deterministic behavior
<video autoplay loop muted playsinline>
<source src="/storage/blog/migrating-animations-from-godot-4-0-to-4-3/non_deterministic.mp4?1" type="video/mp4">
</video>
#### Deterministic behavior
<video autoplay loop muted playsinline>
<source src="/storage/blog/migrating-animations-from-godot-4-0-to-4-3/deterministic.mp4?1" type="video/mp4">
</video>
Finally, note that if the `Deterministic` option is disabled, the total weight of blending will be normalized, so additive blending will not work as expected.
### CallbackModeDiscrete
From what I have seen so far, not many people understand the behavior of the update mode `Discrete`.
When keying `Discrete` values such as `int`, `bool` and other non-numerical type, the `UpdateMode` defaults to `Discrete`.
![discrete option](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/option_discrete.webp)
On the other hand, `InterpolateType` has a `Nearest`.
![nearest option](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/option_nearest.webp)
What is the difference between them?
**Here is a diagram of how they work as the animation progresses:**
![discrete vs nearest keyframe](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/discrete_keyframe-01.webp)
As you can see, the frequency with which object values are updated is different.
**Not only the frequency, but also the timing of the value updates is different within a single frame:**
![discrete vs linear process](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/mixer_process-01.webp)
Since `Discrete` assumes that there is no blending, it sets the value of the object during the blending process, but `Continuous` sets the value to the object after the blending process has been completed. This means that when blending `Discrete` and `Continuous` tracks, the result of the `Continuous` track will always take precedence over the `Discrete` track.
That was a problem because the `Deterministic` blend resetting behavior explained above is done as a `Continuous` mode.
When implementing the `AnimationMixer` and `Deterministic` options in 4.2, we tried to solve that problem by implicitly converting `Discrete` mode to `Continuous` mode when blending occurs.
However, this implicit conversion created another problem when the user understood the behavior of the `Discrete` track and the project relied on the infrequent application of `Discrete` values.
In 4.3, now the user can choose whether or not to force conversions, so they can be handled them explicitly.
**Here is how the options behave when `Discrete` and `Continuous` are blended:**
There are two animations, one is `Continuous` and one is `Discrete`.
<video autoplay loop muted playsinline>
<source src="/storage/blog/migrating-animations-from-godot-4-0-to-4-3/continuous_and_discrete.mp4?1" type="video/mp4">
</video>
#### Force Continuous
Discrete track is treated as a `Continuous` track and they are blended together.
<video autoplay loop muted playsinline>
<source src="/storage/blog/migrating-animations-from-godot-4-0-to-4-3/force_continuous.mp4?1" type="video/mp4">
</video>
#### Dominant
Only on frames with `Discrete` track keys, the `Continuous` track results are not reflected as the `Discrete` track values are given priority.
<video autoplay loop muted playsinline>
<source src="/storage/blog/migrating-animations-from-godot-4-0-to-4-3/dominant.mp4?1" type="video/mp4">
</video>
Note that instead of respecting the Discrete value, flicker may occur during blending.
#### Recessive
In frames with `Discrete` track keys, the `Discrete` track values are potentially reflected, but are immediately overwritten by the `Continuous` track results, so the final result appears to only `Continuous` track.
<video autoplay loop muted playsinline>
<source src="/storage/blog/migrating-animations-from-godot-4-0-to-4-3/recessive.mp4?1" type="video/mp4">
</video>
Flickering does not occur and tends to look better. But note that if the `Continuous` track is blended even a little, the `Discrete` track result may be hidden.
By the way, note that `AnimationPlayer` is set to `Recessive` by default but `AnimationTree` is set to `Force Continuous` by default. Since it works well with the `Deterministic` mode which is enabled by default, and on the basis of the many issues that have been posted from many users who reported that "discrete tracks cannot blend".
### capture()
The animation `UpdateMode` has an option `Capture` in addition to `Discrete` and `Continuous`.
For those who are not familiar with the capture function, it is a feature that allows an object's current value at the moment of animation playback to be interpolated with the playback animation to allow smooth transition into the animation in cases where the object's value is changed outside of the animation.
<video autoplay loop muted playsinline>
<source src="/storage/blog/migrating-animations-from-godot-4-0-to-4-3/capture.mp4?1" type="video/mp4">
</video>
This method did not exist between 4.0 and 4.2. Instead, it was supposed to work by having `AnimationPlayer` read the `Capture` flag during playback, but that process was very tightly coupled with `AnimationPlayer`'s internal processing. However, when `AnimationMixer` was implemented in 4.2, the part that handled the capture was removed, so it was not working during 4.2 temporarily.
Now, in 4.3, that tight coupling has been solved and revived in a more generalized and available in the `AnimationTree` as well.
## AnimationPlayer
In 4.2, the root motion which was only available in AnimationTree until 4.1, is now available by the implementation of AnimationMixer.
![root motion property](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/prop_root_motion.webp)
### play_with_capture()
A wrapper function that calls `play()` with `capture()` which was added in 4.3. If the animation has a capture track, capture interpolation is performed. The argument allows for more detailed settings.
### Auto Capture
In short, it is an option that makes play() call `play_with_capture()` instead. The argument of `play_with_capture()` executed by this option refers to these properties.
![auto capture properties](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/prop_auto_capture.webp)
If you want to control the behavior in more detail or specify individual arguments, you can disable `Auto Capture` and use `play_with_capture()` manually.
## AnimationTree
A lot of fundamental reworking has been done to get the time progression right. This provides a way to get semantic time between BlendTrees and should allow users to more strictly control their behavior.
![times](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/times.webp)
Also, the AnimationTree now can work stand-alone without AnimationPlayer to retrieve the animation list.
![libraries property](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/prop_libraries.webp)
### NodeStateMachine - State Machine Type
This option was added by the StateMachine rework in 4.1 to control the behavior of nested StateMachines.
**StateMachines are divided into three types depending on their use cases:**
![state machine type property](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/prop_state_machine_type.webp)
#### Root
The most basic StateMachine.
When this is nested, the parent AnimationNode considers the Root StateMachine to be finished when it is in the End state. If the parent AnimationNode commands the Root StateMachine to play from the beginning, the Start state is set.
#### Nested
This option is for use cases when we want to apply a time processing only to the current State in the StateMachine.
If it is nested, the parent AnimationNode will consider the Nested StateMachine to be finished if it is in the End state, or if the State's transition destination does not exist and it is a dead end. If the parent AnimationNode commands the Nested StateMachine to play from the beginning, the animation in the current State is sequenced to position 0.
This is mainly used in cases where states are not connected by a transition. That is, it can be used to reproduce the behavior of an Any state.
![nested statemachine any state](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/nested_state_machine-01.webp)
#### Grouped
This can be used to visually organize the States to avoid bloat in the StateMachine.
Grouped StateMachines are not allowed to be played directly by the user using the playback object, but must be played from the parent StateMachine. This means that it must always have a Root or Nested StateMachine as an ancestor.
Here is a diagram of the structure and behavior:
![grouped statemachine](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/grouped_state_machine-01.webp)
**For example, if you want to play Attack2 in the above case, the script could be written as follows:**
```gdscript
var state_machine: AnimationNodeStateMachinePlayback = $AnimationTree.get("parameters/playback")
state_machine.play("Attack/Attack2")
```
Also, `Grouped` type never stays in the `Start` state and `End` state. The `Start` state of a `Grouped` type is equal to the next state after the `Start` state of the state machine as seen by the parent state machine. The `End` state of a `Grouped` type is equal to the next state of the state machine in the parent state machine. In other words, those transitions are replaced by the parent state machine transitions.
**In short, a more direct representation of the above diagram is equivalent to the following:**
![omitted grouped statemachine](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/grouped_state_machine_2-01.webp)
Note that currently StateMachine does not have user-controllable indexes for connections and cannot have multiple Start/End states, so Grouped StateMachine is limited to having only one input/output. This limitation may be removed in the future by StateMachine enhancements.
### NodeOneShot / NodeTransiton / StateMachineTransition - Break Loop at End
![break loop property](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/prop_break_loop.webp)
In the 4.1 StateMachine rework, we made the AnimationNode have an infinite-length remain time in a loop and for StateMachines with unpredictable endings as a hack. We did this becauses the old AnimationNode only returned the remaining time after the processing but there was no information there about whether it was looping or not. This change was necessary to prevent unintended animation interruptions for consistency, but it removed the existing behavior of breaking the loop at `AtEnd` and doing a Transition.
In 4.3, the AnimationNode time progression has been reworked significantly to propagate semantic time information. Now a BreakLoopAtEnd option has been added for use cases where the loop is broken by `AtEnd`.
This option makes it easier to implement things like `AtEnd` transitions after several loops.
### NodeAnimation - Custom Timeline
As a byproduct of the time progression reworking, it is now possible to adjust the period and length of the animation in the AnimationNode.
![custom timeline property](/storage/blog/migrating-animations-from-godot-4-0-to-4-3/prop_custom_timeline.webp)
This should help to solve problems with synchronization of foot step animation when blending walking and sideways walking animations, or walking and running animations.
# The future of the animation feature
Compared to the Godot 3 code, you can see that almost all of the code has been rewritten in the animation area.
I have focused mostly on reworking and stabilizing features from Godot 3 that were unstable or not well-defined. I expect that such fundamental rework will be settled in 4.3, allowing us to focus on adding more features from now on.
I already have several proposals that I have written myself, but I am also interested in some proposals that have come from the community, so I hope to pick up on those as well.
## Support
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, as well as a handful of part or full-time developers hired thanks to [generous donations from the Godot community](https://fund.godotengine.org/). A big thank you to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [their financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
If you'd like to support the project financially and help us secure our future hires, you can do so using the [Godot Development Fund](https://fund.godotengine.org/) platform managed by [Godot Foundation](https://godot.foundation/). There are also several [alternative ways to donate](/donate) which you may find more suitable.

View File

@@ -85,9 +85,9 @@ As a summary, the current platform support as of 4.2 is described in the table b
| Platform | Runtimes supported | Minimum required .NET version |
| -: | - | - |
| **Windows** | CoreCLR, Mono, NativeAOT | 6.0 (CoreCLR, Mono), 7.0 (NativeAOT) |
| **macOS** | CoreCLR, Mono, NativeAOT | 6.0 (CoreCLR, Mono), 7.0 (NativeAOT) |
| **Linux** | CoreCLR, Mono, NativeAOT | 6.0 (CoreCLR, Mono), 7.0 (NativeAOT) |
| **Windows** | CoreCLR, Mono, NativeAOT | 6.0 (CoreCLR), 7.0 (Mono, NativeAOT) |
| **macOS** | CoreCLR, Mono, NativeAOT | 6.0 (CoreCLR), 7.0 (Mono, NativeAOT) |
| **Linux** | CoreCLR, Mono, NativeAOT | 6.0 (CoreCLR), 7.0 (Mono, NativeAOT) |
| **Android** | Mono | 7.0 |
| **iOS** | NativeAOT | 8.0 |
| **Web** | - | - |

View File

@@ -0,0 +1,198 @@
---
title: "Web Export in 4.3"
excerpt: "With single-threaded builds and sample playback, it's now easier than ever to export your game to the Web with Godot 4.3. And more!"
categories: ["progress-report"]
author: Adam Scott
image: /storage/blog/covers/progress-report-web-export-in-4-3.webp
image_caption_title: "Catburglar"
image_caption_description: "An open source game by @JohnGabrielUK and his team"
date: 2024-05-15 13:15:00
---
Have you ever begun some type of work, and only after realized how little you actually knew? That happened to me during [the last <abbr title="Game Developers Conference">GDC</abbr>](https://godotengine.org/article/gdc-2024-retrospective/).
A few months ago, I took over [Fabio Alessandrelli's (@faless)](https://github.com/Faless/) responsibilities as [Web Platform Lead](https://godotengine.org/teams/#platforms) for Godot to reduce his task load and accelerate the pace at which our Web platform exports continue to improve.
I'm well used to the Web and its quirks. I began creating websites in <abbr title="Extensible Hypertext Markup Language">XHTML</abbr> and (vanilla) JavaScript, back in the days. Flash games were my jam! Enough so that I even worked for a video game studio as an ActionScript 3 developer in 2010. And I didn't really stop caring about the Web platform ever since.
Since then, Flash may have died, but online games didn't.
# The new situation
But what I realized at the <abbr title="Game Developers Conference">GDC</abbr> is that we're entering into a sort of Golden Age of Web games. Not only websites like [Poki](https://poki.com/) or [Crazy Games](https://www.crazygames.com/) are super popular, but big players are starting to integrate Web games into their services, such as
[Discord Activities](https://support.discord.com/hc/en-us/articles/4422142836759-Activities-on-Discord) or [YouTube Playables](https://www.youtube.com/playables). All these entities want developers to create games for their platform, and they are all asking how Godot can bring a first-class development experience to it.
# Godot 4.3
Making games for the Web using Godot 4.x still isn't as seamless as we would like it to be. Unfortunately serious revisions are needed to improve the experience to the extent that we want.
Godot 4.3 promises to be one of the best recent releases for Web exports. One of the biggest issues relating to this has been properly fixed: single-threaded exports.
## Single-threaded Web export
### Betting on the wrong horse
[`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer)s were supposed to revolutionize the Web. And they did. That API permits to share memory between [Web Workers](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers) (which are the Web native "threads").
Unfortunately, we live in the same timeline that includes the [Spectre and Meltdown exploits](https://meltdownattack.com/).
The result of this is that [browsers greatly reduced where and how you can use that API](https://developer.chrome.com/blog/enabling-shared-array-buffer?hl=en). Namely, browsers nowadays require websites to be [cross-origin isolated](https://web.dev/coop-coep/). When isolated, it does unlock the potential of `SharedArrayBuffer`s, but at what cost?
At the cost of having the capacity to make remote calls to other websites. _Adieu_ game monetization. _Adieu_ interacting with an external API.
The issue is that during the development of Godot 4, we bet on the wrong horse: we went all-in with using threads with `SharedArrayBuffer`s. We thought it was mainly a question of [browser support](https://caniuse.com/sharedarraybuffer) (which took a step back due to the aforementioned security issues), so when all browsers finally shipped stable releases with `SharedArrayBuffer`, we streamlined everything around multi-threading.
But we underestimated the difficulty of configuring cross-origin isolated websites.
We know it has been a hurdle for a lot of users trying to publish their jam games on [itch.io](https://itch.io), which has an experimental `SharedArrayBuffer` option, but relying upon another feature ([`coep:credentialless`](https://caniuse.com/mdn-http_headers_cross-origin-embedder-policy_credentialless)) not supported by Safari or Firefox for Android).
Likewise, most Web games are being published on third-party publishing platforms where the game authors may not even be able to set the required headers for `SharedArrayBuffer` support.
### Backporting the single-threaded feature from Godot 3.x
At the end of the development of Godot 4.2, [the Foundation](https://godot.foundation/) tasked me to find a way to backport the ability to build Godot without using threads in order to export Godot games without the pesky <abbr title="Cross-Origin-Opener-Policy">COOP</abbr>/<abbr title="Cross-Origin-Embedder-Policy">COEP</abbr> headers.
This was not easy because 4.0 was made with threads in mind. It maybe explains why we were so hesitant to go ahead with this change. Fortunately, with the help of our thread guru [Pedro J. Estébanez (@RandomShaper)](https://github.com/RandomShaper), I was able to tame the beast and put back single-threaded builds.
[My <abbr title="Pull Request">PR</abbr>](https://github.com/godotengine/godot/pull/85939) was finally merged at the beginning of the Godot 4.3 development period.
![Web export thread support option](/storage/blog/progress-report-web-export-in-4-3/thread-support-export-option.webp)
It even had some unexpected benefits. Apple devices (macOS and iOS) were long known to have issues when playing Godot Web exports. Well, when you do export your game single-threaded, these issues fortunately disappear.
However, it came with a downside too: it introduced a new, virtually unsolvable bug:
The single-threaded build introduced garbles in the audio of games, making them unplayable on low-end machines such as laptops or phones, or high-end machines with high frame rates.
When I mean unplayable, I mean it. [Try it yourself.](https://adamscott.github.io/2d-platformer-demo-main-thread/){:target="_blank"} (Consider yourself lucky if it doesn't glitch out.)
_Please note: we know that there's some issues running Platformer 2D on Safari, namely the browser reloading the page complaining that "this webpage is using significant memory". We're currently investigating to fix this <abbr title="as soon as possible">ASAP</abbr>._
Yes. Web single-threaded audio stream playback with Godot 4.2 is that bad. It is marginally better on Godot 3.x, but the problem exists there as well.
## Sample playback to the rescue!
[Here comes my <abbr title="Pull Request">PR</abbr>](https://github.com/godotengine/godot/pull/91382) (not yet merged at the time of writing) for the rescue. [Here's the same demo without sound issues.](https://adamscott.github.io/2d-platformer-demo-main-thread-samples/){:target="_blank"}
### What are samples?
Using samples for games is not a novel idea. In fact, for a long time, it was the _de facto_ way to play sound and music on game consoles. As they didn't have the processing power to do the mixing on the CPU, you could send audio clips (hence the term "sample") to a special chip and tell it how and when to play them.
Since the audio chip was operating on its own, the sound would never lag nor glitch out if the game is lagging.
### (Re)introducing samples to Godot
When open sourced, the Godot engine offered two ways to emit audio: streams for music and samples for sounds.
![The long gone SampleLibrary resource and SamplePlayer2D node on Godot 2.1](/storage/blog/progress-report-web-export-in-4-3/sample-library.webp)
But when Godot 3 released, it was decided that samples support was not needed anymore. Game consoles nowadays ask developers to mix themselves the samples using the CPU. And for the Web, we could mix the audio using a dedicated thread, like other platforms since `SharedArrayBuffer`s exist.
This is why there's audio garbles in single-threaded builds (without my "fix"). Audio rendering is tied with the frame rate. And if it drops, there's not enough audio frames to fill out the buffer, hence the glitches.
What [my <abbr title="Pull Request">PR</abbr>](https://github.com/godotengine/godot/pull/85939) does is to reinstate sample playback. At least at the time of writing, for the Web platform only.
### Near seamless integration
From the get-go, it was something that we ruled out: we couldn't simply port how it was done in 2.1, we needed a more intuitive way.
Then, I hacked samples into stream. I more or less hijacked the streams API to insert samples support. Simple as that!
![AudioStreamPlayer playback type property](/storage/blog/progress-report-web-export-in-4-3/playback-type.webp)
`AudioStreamPlayer`, `AudioStreamPlayer2D`, and `AudioStreamPlayer3D` have a new "Playback Type" property which determines how these nodes will behave behind the scenes. You can choose between "Stream", "Sample", and "Default".
![Default playback type project settings](/storage/blog/progress-report-web-export-in-4-3/default-playback-type.webp)
Fortunately, "Default" uses the new default project settings value `audio/general/default_playback_type`, so on the Web, the project will use "Sample" and the rest of the platforms will keep using "Stream".
When an `AudioStreamPlayer` wants to play a sample, it will check if it's registered first. If not, it will register it before playing it. Please note that not all samples can be registered, as only static ones can be (wav, ogg vorbis, mp3).
![A way to register samples: `AudioServer.register_stream_as_sample()`](/storage/blog/progress-report-web-export-in-4-3/register-stream.webp)
On low-end devices, to make sure that they aren't encountering lag spikes when registering samples just before playing them, I recommend to register them manually while loading the level. You just have to call the new API `AudioServer.register_stream_as_sample()`.
Other than these details, your game should pretty much work as is on the Web, without the pesky crackling noise. But under the hood, the audio is handled in a completely different way. Kinda weird, isn't it?
#### Under the hood
If the API stays pretty much the same, we cannot say the same thing about how `AudioStreamPlayer`s, `AudioServer`, and `AudioDriver` work internally.
Usually, everything is set in place to mix streams of audio by small chunks, determined by the audio latency in the project settings. If the audio latency setting is set at 15ms, Godot will make sure to keep filled a memory buffer worth of 15ms of audio.
To do that, each cycle, the `AudioServer` will go through each audio stream. If it's active, it will mix the frames it needs to fill the buffer.
_Inside Godot, [servers are what's underneath most of the nodes](https://docs.godotengine.org/en/4.2/tutorials/performance/using_servers.html), logic-wise. The nodes explain what and how to do to the servers, which image to show, which sound to stop, which 3D model to load and where._
Now, if the audio stream is considered a "sample", the `AudioServer` will ignore it in the mixing phase. But each time, a sample is played or paused, it must call the `AudioDriver` (here, the `AudioDriverWeb`) to tell it what happened.
##### Web audio node chains
If a sample is added, a Web Audio node chain representing a sample will be added. If an audio bus is removed, a Web Audio node chain representing an audio bus will be removed.
Doing this permits some sort of one-to-one connection between the `AudioServer` state and the Web audio API, which makes it possible to recreate somewhat accurately the mixing happening on the Godot side with streams.
![A screenshot of Catburglar Web Audio nodes.](/storage/blog/progress-report-web-export-in-4-3/web-audio-schema.webp)
Here's an image showing the Web audio nodes of the intro scene of [Catburglar](https://johngabrieluk.itch.io/catburglar), the open-source game featured on the cover. It is where all the samples are getting mixed.
From the right to the left of that image, you have the destination node (the audio output), then the master bus (represented by a chain of nodes). Plugged to the master bus are the rest of the audio buses determined by the project. All the buses have multiple `GainNode`s to handle actual gain, solo and mute.
Then, you see a sample chain, with its weird splitter and merger nodes. This is where the magic happens.
Each cycle, for mixing the streams, Godot calculates the volume of each audio channel. As Godot supports up to 7.1 surround (5.1 surround on the Web), it must know how loud to actually play the stream in the left and right speaker, the center one, the <abbr title="Low-frequency effects">LFE</abbr>, and so on. All according to the volume,
position, and orientation of the node.
So, to handle all of that on the Web Audio side, we send those values to each channel, and it just works.
#### It works out-of-the-box
You want proof that it works out-of-the-box? Here's some projects that I just opened with my PR build and I exported them right away (using the single-threaded export option and using the (new) default project values).
| Game title | Single-threaded samples build | Project page |
| ---------- | :---------------------------: | :----------: |
| Truck Town | [Play](https://adamscott.github.io/truck-town-main-thread-samples/){:target="_blank"} | [Link](https://github.com/godotengine/godot-demo-projects/tree/master/3d/truck_town){:target="_blank"} |
| Platformer 2D | [Play](https://adamscott.github.io/2d-platformer-demo-main-thread-samples/){:target="_blank"} | [Link](https://github.com/godotengine/godot-demo-projects/tree/master/2d/platformer){:target="_blank"} |
| Dodge the Creeps 2D | [Play](https://adamscott.github.io/2d-dodge-the-creeps-demo-main-thread-samples){:target="_blank"} | [Link](https://github.com/godotengine/godot-demo-projects/tree/master/2d/dodge_the_creeps){:target="_blank"} |
| Platformer 3D | [Play](https://adamscott.github.io/3d-platformer-demo-main-thread-samples/){:target="_blank"} | [Link](https://github.com/godotengine/godot-demo-projects/tree/master/3d/platformer){:target="_blank"} |
| Catburglar | [Play](https://adamscott.github.io/catburglar-main-thread-samples/){:target="_blank"} | [Link](https://johngabrieluk.itch.io/catburglar){:target="_blank"} |
Many thanks to the awesome [Catburglar](https://johngabrieluk.itch.io/catburglar) team (John Gabriel, Jerico Landry, Kyveri, Sacha Feldman, and Carrie Drovdlic). Without this [open-source project](https://bitbucket.org/JohnGabrielUK/catburglar/), made for the [63rd](https://itch.io/jam/godot-wild-jam-63) [Godot Wild Jam](https://godotwildjam.com/), I wouldn't have solved as many bugs as I did. Please try it out! The audio work, in particular, sounds incredible.
### Here be dragons
Even if the odds are that sample playback will be a part of Godot 4.3 release, it was developed very quickly, and even if it works pretty well, if you ask me, it still is pretty much a prototype. But we can't just release Godot 4.3 without proper audio support for single-threaded releases.
So it has been decided that it should be treated as _experimental_. More work will be done before the release of Godot 4.4 in order to stabilize the API and how it works under the hood.
### Call to action
But even before thinking about Godot 4.4, I must call for your help! We need people to test out [the sample playback <abbr title="Pull Request">PR</abbr>](https://github.com/godotengine/godot/pull/85939) until the release.
If you encounter any issue while testing my PR or while testing out the single-threaded samples builds, please report them [here](https://github.com/godotengine/godot/pull/85939).
Finally, if you still intend to continue using threads on the Web platform, you can! And the next feature should aid you setup your game online.
## Easy <abbr title="Cross-Origin-Opener-Policy">COOP</abbr>-<abbr title="Cross-Origin-Embedder-Policy">COEP</abbr> <abbr title="Progressive Web App">PWA</abbr> for threaded builds
With this new feature, if you still need to export your game with thread support, you'll are able to activate the necessary <abbr title="Cross-Origin-Opener-Policy">COOP</abbr>/<abbr title="Cross-Origin-Embedder-Policy">COEP</abbr> headers without having to modify the server's header responses. You'll need to export your game as a Progressive Web App though.
![Ensure Cross-Origin Isolation Headers export option](/storage/blog/progress-report-web-export-in-4-3/ensure-cross-origin-isolation-headers.webp)
This is because this export option sets up the Service Worker, included with the <abbr title="Progressive Web App">PWA</abbr> build, to intercept the requests from the server and inject those missing <abbr title="Cross-Origin-Opener-Policy">COOP</abbr>-<abbr title="Cross-Origin-Embedder-Policy">COEP</abbr> headers.
## Boot splash screen
Just before the beta feature freeze deadline, [@patwork](https://github.com/patwork), a new [#web](https://chat.godotengine.org/channel/web) contributor,
included [some neat features](https://github.com/godotengine/godot/pull/91128):
He cleaned up the game page code and he updated the progress bar to use the semantic (and very useful) HTML `<progress>` tag.
But, mainly and from now on, he made the boot splash screen set in the project settings to be displayed on the screen while the engine and the assets are getting loaded by the browser.
![New Godot Web loading screen](/storage/blog/progress-report-web-export-in-4-3/loading-screen.gif)
If no boot splash screen has been set, the classic Godot boot splash will be seen, as it is currently displayed on other platforms.
# Next steps
Don't worry, these changes only mark the beginning for the Godot Engine to truly offer game developers a great and reliable way to create Web games.
So work will be done to finalize and stabilize the samples playback for the Web. In the future, the node chain system should be powerful enough to support audio effects on buses, so we intend to work on this too.
Based on the feedback we received at the <abbr title="Game Developers Conference">GDC</abbr> from partners and friends, we know that we need a way to reduce the size of our exports. Currently, the 4.3 release Web build .wasm is around 40 MB uncompressed, and 5 MB compressed with Brotli. We have a few ideas in mind to address this, and it could even help optimize builds for other platforms!
If you know C/C++, you're familiar with the Web APIs and you feel contributing, don't hesitate to join our [#web team](https://chat.godotengine.org/channel/web) on the
[Godot Engine developers chat](https://chat.godotengine.org).
# Support
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, as well as a handful of part or full-time developers hired thanks to [generous donations from the Godot community](https://fund.godotengine.org/).
A big thank you to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [their financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
If you'd like to support the project financially and help us secure our future hires, you can do so using the [Godot Development Fund](https://fund.godotengine.org/) platform managed by the [Godot Foundation](https://godot.foundation/). There are also several [alternative ways to donate](/donate) which you may find more suitable.

View File

@@ -0,0 +1,84 @@
---
title: "Release candidate: Godot 3.6 RC 1"
excerpt: "We are now at the Release Candidate stage, finalizing everything so that we can release 3.6-stable for all users."
categories: ["pre-release"]
author: lawnjelly
image: /storage/blog/covers/release-candidate-godot-3-6-rc-1.webp
image_caption_title: "Kamaeru: A Frog Refuge"
image_caption_description: "A game by Humble Reeds"
date: 2024-07-09 08:00:00
---
The upcoming **Godot 3.6** is now considered feature complete, and has received a lot of bugfixes and improvements over the past weeks thanks to all the testers and developers who reported and fixed issues. We are now at the [**Release Candidate**](https://en.wikipedia.org/wiki/Software_release_life_cycle#Release_candidate) stage, finalizing everything so that we can release 3.6-stable for all users.
At this stage we need people to test this release (and potential follow-up RCs) on as many projects as possible, to make sure that we catch non-obvious regressions that might have gone unnoticed until now. If you run into any issue, please make sure to [report it on GitHub](https://github.com/godotengine/godot/issues) so that we can know about it and fix it!
As a reminder, this is a feature update to the Godot 3.x branch, which means it's only relevant for users currently using Godot 3.5 or 3.6-beta. Projects made with Godot 4.x cannot be downgraded to Godot 3. While most of the engine development focus is on Godot 4.3, some dedicated contributors still allocate some time to finalizing 3.6 for the many users who still have games in production using Godot 3.
This RC 1 has a number of fixes since beta 5, including:
- Fix scene shader regression ([GH-92070](https://github.com/godotengine/godot/pull/92070))
- Fix `merge_meshes()` functionality ([GH-92105](https://github.com/godotengine/godot/pull/92105))
- Fix pausing behaviour with physics interpolation ([GH-93382](https://github.com/godotengine/godot/pull/93382))
- Fix 2D skinning with physics interpolation ([GH-93309](https://github.com/godotengine/godot/pull/93309))
- Fix viewport behaviour with physics interpolation ([GH-92152](https://github.com/godotengine/godot/pull/92152))
- Fix text to speech loaded too early ([GH-92261](https://github.com/godotengine/godot/pull/92261))
- Fix physics tick counter ([GH-92941](https://github.com/godotengine/godot/pull/92941))
- Faster editor grid ([GH-92725](https://github.com/godotengine/godot/pull/92725))
[Jump to the **Downloads** section](#downloads), and give it a spin right now, or continue reading to learn more about improvements in this release. You can also [try the **Web editor**](https://editor.godotengine.org/releases/) or the **Android editor** for this release. If you are interested in the latter, please request to join [our testing group](https://groups.google.com/g/godot-testers) to get access to pre-release builds.
---
*The cover illustration is from* [**Kamaeru: A Frog Refuge**](https://www.kamaeru.com/), *a cozy frog collecting game which has you restore the biodiversity of wetlands, developed in Godot 3 by [Humble Reeds](https://humblereeds.fr/) and published by [Armor Games Studios](https://armorgamesstudios.com/). Kamaeru was released in June on [Steam](https://store.steampowered.com/app/1978150/Kamaeru_A_Frog_Refuge/), [Switch](https://www.nintendo.com/store/products/kamaeru-a-frog-refuge-switch/), and [Xbox](https://www.xbox.com/games/store/kamaeru-a-frog-refuge/9nj0nc3vvjjc).*
## Highlights
For full details of highlights since Godot 3.5, see the beta blog posts for ([beta 1](/article/dev-snapshot-godot-3-6-beta-1/), [beta 2](/article/dev-snapshot-godot-3-6-beta-2/), [beta 3](/article/dev-snapshot-godot-3-6-beta-3/), [beta 4](/article/dev-snapshot-godot-3-6-beta-4/), and [beta 5](/article/dev-snapshot-godot-3-6-beta-5/)).
For a complete overview of the changes, see our [**interactive changelog**](https://godotengine.github.io/godot-interactive-changelog/#3.6).
Brief highlights include:
* 2D physics interpolation ([GH-76252](https://github.com/godotengine/godot/pull/76252))
* 2D hierarchical culling ([GH-68738](https://github.com/godotengine/godot/pull/68738))
* Tighter shadow culling ([GH-84745](https://github.com/godotengine/godot/pull/84745))
* Discrete Level of Detail (LOD) ([GH-85437](https://github.com/godotengine/godot/pull/85437))
* Mesh merging ([GH-61568](https://github.com/godotengine/godot/pull/61568))
* ORM materials ([GH-76023](https://github.com/godotengine/godot/pull/76023))
* Vertex cache optimization ([GH-86339](https://github.com/godotengine/godot/pull/86339))
* View selected mesh stats ([GH-88207](https://github.com/godotengine/godot/pull/88207))
* SceneTree dock's filter improvements ([GH-67347](https://github.com/godotengine/godot/pull/67347))
* Android dependencies update matching API level 34 ([GH-87588](https://github.com/godotengine/godot/pull/87588))
* Lots of bug fixes all around, which should significantly improve stability
These may results in performance increases in existing projects, even with no changes to the project. As such we recommend testing out your existing games, with a view to re-exporting and distributing once we reach stable.
## Changes
**10 contributors** submitted exactly **30 improvements** for this release. See our [**interactive changelog**](https://godotengine.github.io/godot-interactive-changelog/#3.6-rc1) for the complete list of changes since the previous 3.6-beta5 snapshot. You can also review [all changes included in 3.6](https://godotengine.github.io/godot-interactive-changelog/#3.6) compared to the previous 3.5 feature release.
This release is built from commit [cfc4a0eff](https://github.com/godotengine/godot/commit/cfc4a0eff029c3bda6df061465f9a6b6c66b9f01).
## Downloads
{% include articles/download_card.html version="3.6" release="rc1" article=page %}
**Standard build** includes support for GDScript, GDNative, and VisualScript.
**.NET build** includes support for C#, as well as GDScript, GDNative, and VisualScript.
- You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono **6.12.0.198** are included in this build.
{% include articles/prerelease_notice.html %}
## Bug reports
As a tester, we encourage you to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check the [existing issues on GitHub](https://github.com/godotengine/godot/issues) first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.
In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 3.x releases no longer works in this release).
## Support
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, as well as a handful of part or full-time developers hired thanks to [generous donations from the Godot community](https://fund.godotengine.org/). A big thank you to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [their financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
If you'd like to support the project financially and help us secure our future hires, you can do so using the [Godot Development Fund](https://fund.godotengine.org/) platform managed by [Godot Foundation](https://godot.foundation/). There are also several [alternative ways to donate](/donate) which you may find more suitable.

View File

@@ -0,0 +1,125 @@
---
title: "Release candidate: Godot 4.3 RC 1"
excerpt: "We are cautiously optimistic that Godot 4.3 is ready for release, please test it and let us know if we are right!"
categories: ["pre-release"]
author: "Rémi Verschelde"
image: /storage/blog/covers/release-candidate-godot-4-3-rc-1.webp
image_caption_title: "ColdRidge"
image_caption_description: "A game by Frog Collective"
date: 2024-07-25 18:00:00
---
We are entering the final stage of development for Godot 4.3, which is the [Release Candidate](https://en.wikipedia.org/wiki/Software_release_life_cycle#Release_candidate): all features are in-place, the most critical regressions have been tackled, and so we're confident that it's now ready for general use in the vast majority of cases...
... which is usually the cue for more testers to jump aboard the pre-release train, test this release candidate on their projects, and ~~shatter our hopes~~ confirm that everything is ready for prime time!
More seriously, Godot is a big piece of software and it's hard for contributors and even unit tests to validate all areas of the engine when developing new features or bug fixes. So we rely on extensive testing from the community to find engine issues while testing dev, beta, and RC snapshots in your projects, and reporting them so that we can fix them prior to tagging the 4.3-stable release.
Please, consider [supporting the project financially](https://fund.godotengine.org), if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.
[Jump to the **Downloads** section](#downloads), and give it a spin right now, or continue reading to learn more about improvements in this release. You can also [try the **Web editor**](https://editor.godotengine.org/releases/4.3.rc1/) or the **Android editor** for this release. If you are interested in the latter, please request to join [our testing group](https://groups.google.com/g/godot-testers) to get access to pre-release builds.
---
*The cover illustration is from* [**ColdRidge**](https://store.steampowered.com/app/3052500/ColdRidge/), *a turn-based exploration game set in the mystical Wild West, developed by [Frog Collective](http://frog-collective.com/) with Godot 4. The game was revealed in early July and just got a playable demo [on Steam](https://store.steampowered.com/app/3052500/ColdRidge/), where you can also wishlist it.*
## Highlights
We covered the most important highlights from Godot 4.3 in the previous [4.3 beta 1 blog post](/article/dev-snapshot-godot-4-3-beta-1/), so if you haven't read that one, have a look to be introduced to the main new features added in the 4.3 release.
Especially if you're testing 4.3 for the first time, you'll want to get a condensed overview of what new features you might want to make use of.
This section covers changes made since the previous [beta 3 snapshot](/article/dev-snapshot-godot-4-3-beta-3/), which are mostly regression fixes, or "safe" fixes to longstanding issues.
There are two big highlights in this release for the Windows platform though:
- The Direct3D 12 rendering backend now works out of the box on Windows, and no longer requires copying the `DXIL.dll` library ([GH-94203](https://github.com/godotengine/godot/pull/94203))! This is thanks to Microsoft's decision to [open source the DXIL Validator hash](https://devblogs.microsoft.com/directx/open-sourcing-dxil-validator-hash/), which was the only reason for us to require the proprietary `DXIL.dll`. Aside from greatly simplifying the distribution of Windows builds with D3D12, it also makes it possible to export Windows D3D12 projects from other OSes (Linux, macOS, Android), which is an important part of Godot's cross-platform support.
- With the progressive rollout of Windows ARM64 devices on the market, we've finalized our support for that target and now provide Windows ARM64 builds (editor and export templates) for both [Standard](https://github.com/godotengine/godot-builds/releases/download/4.3-rc1/Godot_v4.3-rc1_windows_arm64.exe.zip) and [.NET](https://github.com/godotengine/godot-builds/releases/download/4.3-rc1/Godot_v4.3-rc1_mono_windows_arm64.zip) flavors. Thanks to Qualcomm engineers who did some testing and gave us access to cloud-based devices to confirm that the binaries work.
Now for a selection of the other changes in this snapshot:
- 2D: Add pixel snap for `Parallax2D` ([GH-94014](https://github.com/godotengine/godot/pull/94014)).
- Audio: Prevent crash in interactive playback ([GH-90481](https://github.com/godotengine/godot/pull/90481)).
- Audio: Fix audio samples not being able to be "finished" ([GH-94268](https://github.com/godotengine/godot/pull/94268)).
- Buildsystem: Web: Fix debug symbols in web builds ([GH-91800](https://github.com/godotengine/godot/pull/91800)).
- C#: macOS: Fix codesigning of .NET helper executables when sandboxing is disabled ([GH-94518](https://github.com/godotengine/godot/pull/94518)).
- C#: macOS: Fix regression exporting entitlements for C# projects ([GH-94680](https://github.com/godotengine/godot/pull/94680)).
- Core: Fix TypedArray encoding when full objects is disabled ([GH-94379](https://github.com/godotengine/godot/pull/94379)).
- Core: Batch of fixes for WorkerThreadPool and ResourceLoader (safe set) ([GH-94526](https://github.com/godotengine/godot/pull/94526)).
- Editor: Fix resources being skipped in InstancePlaceholder ([GH-94345](https://github.com/godotengine/godot/pull/94345)).
- Editor: Fix crash when adding scenes with a group to the level scene ([GH-94450](https://github.com/godotengine/godot/pull/94450)).
- Editor: Fix editor crash when editor settings resource is invalid ([GH-94593](https://github.com/godotengine/godot/pull/94593)).
- Porting: Fix the cleanup logic for the Android render thread ([GH-94661](https://github.com/godotengine/godot/pull/94661)).
- GDExtension: Fix to restore `library_path` as absolute path ([GH-94373](https://github.com/godotengine/godot/pull/94373)).
- GDScript: Fix GDScript analyzer error when instantiating EditorPlugins ([GH-93942](https://github.com/godotengine/godot/pull/93942)).
- GDScript: Autocompletion: Register depended parsers with the main parser ([GH-94424](https://github.com/godotengine/godot/pull/94424)).
- GDScript: Speed up `GDScriptLanguage::finish` ([GH-94505](https://github.com/godotengine/godot/pull/94505)).
- GUI: Change GUI controls pixel snap to round halfway towards positive infinity (`floor(x + 0.5)`) ([GH-93749](https://github.com/godotengine/godot/pull/93749)).
- GUI: Fix container minimum size with hidden parent ([GH-94085](https://github.com/godotengine/godot/pull/94085)).
- GUI: Fix game window stops responding when debugger pauses ([GH-94452](https://github.com/godotengine/godot/pull/94452)).
- GUI: RTL: Fix text size rounding with MSDF fonts ([GH-94606](https://github.com/godotengine/godot/pull/94606)).
- Import: Fix missing options in Project Import Defaults ([GH-94058](https://github.com/godotengine/godot/pull/94058)).
- Import: Fix instanced .blend/GLTF scenes lose all children after update until .tscn is reopened ([GH-94093](https://github.com/godotengine/godot/pull/94093)).
- Import: Don't attempt to re-import broken files if they didn't change ([GH-94357](https://github.com/godotengine/godot/pull/94357)).
- Import: Fix LOD generation for meshes with tangents & mirrored UVs ([GH-94682](https://github.com/godotengine/godot/pull/94682)).
- Input: Fix trackpads and graphics tablets being recognized as controllers on Linux/*BSD ([GH-93352](https://github.com/godotengine/godot/pull/93352)).
- Input: Winink: Check pointer button states ([GH-94063](https://github.com/godotengine/godot/pull/94063)).
- Network: WebSocket: Ensure `TCP_NODELAY` is always set ([GH-94618](https://github.com/godotengine/godot/pull/94618)).
- Physics: Fix dynamic-stack-buffer-overflow crash when executing random functions on random physics objects ([GH-94521](https://github.com/godotengine/godot/pull/94521)).
- Porting: Windows: Restore to windowed mode using `SW_NORMAL` ([GH-93733](https://github.com/godotengine/godot/pull/93733)).
- Porting: Windows: Fix reading keyboard layout names ([GH-94120](https://github.com/godotengine/godot/pull/94120)).
- Porting: macOS: Fix drag-and-drop feedback ([GH-94232](https://github.com/godotengine/godot/pull/94232)).
- Porting: Wayland: Commit surface on window creation ([GH-94402](https://github.com/godotengine/godot/pull/94402)).
- Porting: Wayland: Check for suspended flag when unsuspending ([GH-94411](https://github.com/godotengine/godot/pull/94411)).
- Porting: Disable FP contraction, fixing non-standard floating point math on ARM64 ([GH-94655](https://github.com/godotengine/godot/pull/94655)).
- Porting: Android Editor: Make progress dialog visible again ([GH-94662](https://github.com/godotengine/godot/pull/94662)).
- Porting: Android Editor: Disable file reimport when .import changes ([GH-94691](https://github.com/godotengine/godot/pull/94691)).
- Rendering: Fix glsl shader for Android Mali-GXXx GPUs and Vulkan API 1.3.xxx ([GH-92817](https://github.com/godotengine/godot/pull/92817)).
- Rendering: Windows: Disable G-SYNC in windowed mode ([GH-93737](https://github.com/godotengine/godot/pull/93737)).
- Rendering: D3D12: Remove requirement for `DXIL.dll`! ([GH-94203](https://github.com/godotengine/godot/pull/94203)).
- Rendering: Fix black `get_texture()` on viewport in compatibility mode with HDR enabled ([GH-94233](https://github.com/godotengine/godot/pull/94233)).
- Rendering: Various fixes for baking large lightmaps ([GH-94236](https://github.com/godotengine/godot/pull/94236), [GH-94237](https://github.com/godotengine/godot/pull/94237), [GH-94243](https://github.com/godotengine/godot/pull/94243)).
- Rendering: Use a spec constant to control whether the MultiMesh branch is used in the vertex shader ([GH-94289](https://github.com/godotengine/godot/pull/94289)).
- Rendering: GLES3: Fix directional shadow on Metal ANGLE ([GH-94556](https://github.com/godotengine/godot/pull/94556)).
- Shaders: Fix shader crash when using a varying in separate func before it defined ([GH-94671](https://github.com/godotengine/godot/pull/94671)).
- Thirdparty: ThorVG: Update to 0.14.2 ([GH-94258](https://github.com/godotengine/godot/pull/94258)).
- XR: Always render when XR is enabled, even if no OS windows can draw ([GH-94412](https://github.com/godotengine/godot/pull/94412)).
## Changelog
**82 contributors** submitted **196 improvements** for this new snapshot. See our [**interactive changelog**](https://godotengine.github.io/godot-interactive-changelog/#4.3-rc1) for the complete list of changes since the 4.3-beta3 snapshot. You can also review [all changes included in 4.3](https://godotengine.github.io/godot-interactive-changelog/#4.3) compared to the previous 4.2 feature release.
This release is built from commit [`e343dbbcc`](https://github.com/godotengine/godot/commit/e343dbbcc1030f04dc5833f1c19d267a17332ca9).
## Downloads
{% include articles/download_card.html version="4.3" release="rc1" article=page %}
**Standard build** includes support for GDScript and GDExtension.
**.NET build** (marked as `mono`) includes support for C#, as well as GDScript and GDExtension.
- See also [C# platform support](https://docs.godotengine.org/en/latest/tutorials/scripting/c_sharp/index.html#c-platform-support).
If you want to test the new Windows ARM64 builds, they're not integrated in our download page yet, so here are direct links:
- [Editor for Windows ARM64 (Standard)](https://github.com/godotengine/godot-builds/releases/download/4.3-rc1/Godot_v4.3-rc1_windows_arm64.exe.zip)
- [Editor for Windows ARM64 (.NET)](https://github.com/godotengine/godot-builds/releases/download/4.3-rc1/Godot_v4.3-rc1_mono_windows_arm64.zip)
{% include articles/prerelease_notice.html %}
## Known issues
During the Release Candidate stage, we focus exclusively on solving showstopping regressions (i.e. something that worked in a previous release is now broken, without workaround). You can have a look at our current [list of regressions and significant issues](https://github.com/orgs/godotengine/projects/61) which we aim to address before releasing 4.3. This list is dynamic and will be updated if we discover new blocking issues after more users start testing the RC snapshots.
With every release, we are aware that there are going to be various issues which have already been reported but haven't been fixed yet, due to limited resources. See the GitHub issue tracker for a complete list of [known bugs](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug+).
## Bug reports
As a tester, we encourage you to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check the [existing issues on GitHub](https://github.com/godotengine/godot/issues) first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.
In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).
## Support
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, as well as a handful of part or full-time developers hired thanks to [generous donations from the Godot community](https://fund.godotengine.org/). A big thank you to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [their financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
If you'd like to support the project financially and help us secure our future hires, you can do so using the [Godot Development Fund](https://fund.godotengine.org/) platform managed by [Godot Foundation](https://godot.foundation/). There are also several [alternative ways to donate](/donate) which you may find more suitable.

View File

@@ -41,7 +41,7 @@ cover_image: ""
<p>
Want to help us with the stand, designing or ordering goodies and stand material (table cloth, kakemono,
etc.)? Get in touch with us on <a href="/community">one of the community channels</a> (especially IRC ;)).
etc.)? Get in touch with us on <a href="/community/">one of the community channels</a> (especially IRC ;)).
</p>
<h4>Escoria talk in the Open Game Development track</h4>

View File

@@ -0,0 +1,27 @@
---
name: "GodotCon Berlin 2024"
name_short: "GodotCon Berlin"
# Dates in human-readable format.
dates: "12th and 13th of October, 2024"
dates_short: "12-13 October"
# The first date of the event in ISO format, used for sorting.
date: 2024-10-12 00:00:00
# Set to true to mark it as a past event
date_passed: false
location: " [Silent Green](https://www.silent-green.net), Gerichtstraße 35, 13347 Berlin, Germany "
location_short: "Berlin, Germany"
location_map: "https://www.openstreetmap.org/?mlat=52.5456&mlon=13.3665#map=16/52.5456/13.3665"
website: https://conference.godotengine.org
cover_image: "/storage/app/media/events/godotcon-2024/godotcon-2024.jpg"
---
This year GodotCon will happen on the **12th and 13th of October** in Berlin, Germany.
The event aims to give the community a platform to meet in person, exchange knowledge, form business contacts, and introduce newcomers to the engine ecosystem.

View File

@@ -0,0 +1,59 @@
---
description: The latest in the long-running “Maker” series of game development toolkits, “ACTION GAME MAKER” brings 2D action game development to those of all skill levels! Built using Godot Engine, “ACTION GAME MAKER” provides access to professional level functions without any programming required!
date: 2024-07-25 00:00:00 +0000
title: ACTION GAME MAKER
author: Gotcha Gotcha Games
website: https://www.gotchagotcha.jp/en/
release_date: "TBD"
image: "/assets/showcase/action-game-maker.jpg"
gallery: [
"/assets/showcase/screenshots/action-game-maker-1.jpg",
"/assets/showcase/screenshots/action-game-maker-2.jpg",
"/assets/showcase/screenshots/action-game-maker-3.png",
"/assets/showcase/screenshots/action-game-maker-4.png"
]
youtube_id: "8hw2haOfH8Y"
windows: true
steam: https://store.steampowered.com/app/2987180/ACTION_GAME_MAKER/
developer_interview:
title: "Why the developer chose Godot"
text: "There's a lot to like about Godot. The very lightweight editor comes to mind first, but the straightforward UI and the breadth of 2D features combined with the modern selection of build targets are all great. But what really sets Godot apart is the energy and passion from the Godot community itself. Constantly active, you can really feel that everyone is working hard to make good games and Godot better at the same time. We're really going to need to give it our all to ensure that Action Game Maker can proudly be accepted by and call ourselves part of this community!"
# tool: true
featured_in_home: false
---
### What Is "ACTION GAME MAKER"?
The latest in the long-running “Maker” series of game development toolkits, “ACTION GAME MAKER” brings 2D action game development to those of all skill levels!
Built using Godot Engine, ”Action Game Maker” provides access to professional level functions without any programming required!
A collection of samples and assets are included to provide the foundation needed to make your game a reality!
Unchain Your Imagination!
![](/assets/showcase/screenshots/AGM-GIF_Star_low.gif)
![](/assets/showcase/screenshots/AGM-GIF_Bridge_low.gif)
### Fully No Coding Visual Scripting
“ACTION GAME MAKER” builds on the node-based visual scripting system created for “Pixel Game Maker MV” with many improvements.
No knowledge of programming is needed. Simply connect up Actions (similar to RPG Makers Event Commands) and see the unique logic for your game come together!
![](/assets/showcase/screenshots/AGM-GIF_VS_low.gif)
### Sample Assets Included!
Everything you need to build your first game is included, from character art to tiles, music, and sound effects!
Free yourself from worrying about assets and just get started!
The provided samples are intentionally simple and pixel-style so that its easy to open them up and make modifications or extensions to begin creating your own original look!
Of course, if you already have your own assets its easy to import them and high resolutions are supported!

View File

@@ -23,7 +23,7 @@ steam: https://store.steampowered.com/app/1249480/ExZodiac/
itch: https://pixeljam.itch.io/ex-zodiac
featured_in_home: true
featured_in_home: false
---
<p>

View File

@@ -1,41 +1,43 @@
---
description: "Kamaeru is a cozy farming sim where you collect and breed frogs, customize your environment, and restore biodiversity in the wetlands."
date: 2023-01-23 00:00:00 +0000
description: "Foster a sanctuary for frogs and restore the biodiversity of the wetlands in Kamaeru, a cozy frog collecting game, where you take pictures of frogs, play mini-games and decorate your habitat. Hop right to it!"
date: 2024-06-08 00:00:00 +0000
title: Kamaeru
author: Humble Reeds
website: https://www.kamaeru.com/
release_date: TBD
release_date: June 2024
image: "/assets/showcase/kamaeru-header.webp"
image: "/assets/showcase/kamaeru.jpg"
gallery: [
"/assets/showcase/kamaeru-1.webp",
"/assets/showcase/kamaeru-2.webp",
"/assets/showcase/screenshots/kamaeru-1.jpg",
"/assets/showcase/screenshots/kamaeru-2.jpg",
"/assets/showcase/screenshots/kamaeru-3.jpg",
"/assets/showcase/screenshots/kamaeru-4.jpg",
"/assets/showcase/screenshots/kamaeru-5.jpg",
]
youtube_id: "BzMuM8ohdB8"
youtube_id: "3BddpsCOXLk"
windows: true
macos: true
linux: true
xbox: true
switch: true
steam: https://store.steampowered.com/app/1978150/Kamaeru_A_Frog_Refuge/
featured_in_home: false
---
Kamaeru is a cozy farming sim where you collect and breed frogs, customize your environment, and restore biodiversity in the wetlands.
You are helping an old friend to restore the wetlands of your childhood, and build a cozy frog refuge. You will photograph and breed frogs to increase your reputation, decorate your frog refuge, plant crops to restore the wetlands, and meet several characters that will help you along the way
Kamaeru is a cozy frog collecting game about farming and preserving nature. You play as a kind soul helping an old friend restore the wetlands of your childhood by transforming them into a safe haven for friendly little frogs. With the help of the games cast of welcoming NPCs, you will photograph and breed frogs to increase your reputation, decorate your frog refuge, and plant native crops to help your amphibian abode thrive!
### Collect frogs 🐸
The ultimate goal of the game is to collect them all! Take pictures, feed them and breed them to have a chance of meeting every single one of the possible 500 frogs 🐸
Some frogs can only be met under certain conditions though, and rare colors only available through breeding!
Feed, breed, collect, and raise all of the games 500+ frogs! 🐸 Its up to you to figure out the secret to attracting new and adorable frogs. You can complete your collection by unlocking all the rare colors through a special breeding mini-game. When new ones join your refuge, use the in-game camera to take photos of them and collect them for your frogedex!
### Restore the wetlands 🌾
In order to succeed in your quest for frog preservation, you will need to restore the nearby wetlands to their former glory. This will allow you to continually support and cultivate the area through a process known as paludiculture!
### Restore wetlands 🌾
In order to attract the most rare frogs, and have a sustainable refuge, you will need to restore nearby wetlands to their former glory. This will allow you to practice paludiculture, the culture of wetlands!
Dig ponds to let water roam the land again, and plant native wetlands species to harvest precious crops. You will then be able to transform them into manufactured goods, and sell them to improve your refuge.
Dig ponds to let water roam the land again and plant native wetlands species to harvest precious crops. From there, you can transform your pickings into manufactured goods that can be sold to improve your froggy habitat further!
### Customize your frog refuge 🎨
When you place furniture in your refuge, frogs tend to appear. Some furniture will attract certain types of frogs!
The more decorated your refuge, the more popular it will be, allowing you to drive attention and new visitors, that will unlock new recipes, crops and types of furniture. You will even be able to recolor the furniture to your hearts content!
New furniture will bring new frogs with it! As you personalize your habitat, new poses of frogs will be shown into specific kinds of furniture. Plus, itll attract attention to the areaand with it, new visitors! You can even repaint furniture to better fit your own unique style sensibilities.

View File

@@ -15,7 +15,7 @@ gallery: [
]
youtube_id: "LC29HveHImg"
featured_in_home: true
featured_in_home: false
windows: true
linux: true

View File

@@ -1,11 +1,11 @@
---
description: "Pingo Adventure showcase page"
date: 2022-06-01 00:00:00 +0000
date: 2023-11-30 00:00:00 +0000
title: Pingo Adventure
author: Orb Square Studio
website: https://orb-square.com
release_date: TBD
release_date: November 2023
image: "/assets/showcase/pingo-adventure-header.webp"
gallery: [
@@ -20,7 +20,7 @@ linux: true
steam: https://store.steampowered.com/app/2015830/Pingo_Adventure/
itch: https://orb-square.itch.io/pingo-adventure
featured_in_home: true
featured_in_home: false
---
<p>

View File

@@ -1,16 +1,20 @@
---
description: "Pixelorama showcase page"
date: 2019-08-01 00:00:00 +0000
description: "Unleash your creativity with Pixelorama, a powerful and accessible open-source pixel art multitool. Whether you want to create sprites, tiles, animations, or just express yourself in the language of pixel art, this software will realize your pixel-perfect dreams with a vast toolbox of features. "
date: 2024-07-29 00:00:00 +0000
title: Pixelorama
author: Orama Interactive
website: https://twitter.com/OramaInteractiv
release_date: August 2019
release_date: July 2024
image: "/assets/showcase/pixelorama.jpg"
gallery: [
"/assets/showcase/pixelorama.png"
"/assets/showcase/screenshots/pixelorama-1.jpg",
"/assets/showcase/screenshots/pixelorama-2.jpg",
"/assets/showcase/screenshots/pixelorama-3.jpg",
"/assets/showcase/screenshots/pixelorama-4.jpg"
]
youtube_id: "sM1v5uaBSrM"
youtube_id: "--ZcztkvWUQ"
windows: true
linux: true
@@ -20,30 +24,30 @@ html5: true
itch: https://orama-interactive.itch.io/pixelorama/
github: https://github.com/Orama-Interactive/Pixelorama
steam: https://store.steampowered.com/app/2779170/Pixelorama/
tool: true
featured_in_home: false
---
<p>
Pixelorama is a free & open source pixel art sprite editor, with animation
support. It is made entirely with the Godot&nbsp;Engine. Current features as of
version v0.9:
</p>
<ul>
<li>16 different tools to help you draw, which you can map to both of your left and right mouse buttons.</li>
<li>Are you an animator? Pixelorama has its own animation timeline just for you! You can work at an individual cel level, where each cel refers to a unique layer and frame. Supports onion skinning, cel linking, motion drawing and frame grouping with tags.</li>
<li>Different tool options for each of the mouse buttons.</li>
<li>Custom brushes, including random brushes.</li>
<li>Create or import custom palettes.</li>
<li>Pattern filling! Use the bucket tool to fill out an area with a pattern of your choosing.</li>
<li>Import images and edit them inside Pixelorama. If you import multiple files, they will be added as individual animation frames. Importing spritesheets is also supported.</li>
<li>Export your gorgeous art as PNG or GIF files. Exporting your projects as spritesheets is also possible.</li>
<li>Pixel perfect mode for perfect lines, for the pencil, eraser & lighten/darken tools.</li>
<li>Autosave support, with data recovery in case of a software crash.</li>
<li>Horizontal & vertical mirrored drawing.</li>
<li>Tile mode for pattern creation.</li>
<li>Rulers and guides.</li>
<li>Rectangular & isometric grid types.</li>
<li>Scale, crop, rotate, flip, color invert, HSV-adjust, desaturate and generate outlines and gradients in your images.</li>
</ul>
Unleash your creativity with Pixelorama, a powerful and accessible open-source pixel art multitool. Whether you want to create sprites, tiles, animations, or just express yourself in the language of pixel art, this software will realize your pixel-perfect dreams with a vast toolbox of features.
### Features:
- A variety of different tools to help you create, with the ability to dynamically map each one on the left and the right mouse buttons with a single click.
- Animation support with a timeline composed of layers and frames, with onion skinning, frame tags and the ability to draw while the animation is playing.
- Pixel perfect mode for perfect pixel lines.
- Clipping masks.
- Pre-made palettes as well as many palette importing options.
- Multiple image manipulation effects.
- Non-destructive and fully customizable layer effects, such as outline, gradient map, drop shadow and palettize.
- A powerful drawing canvas with guides, a rectangular and an isometric grid, and tile mode for easier seamless pattern creation.
- Autosave support, with data recovery in case of a software crash.
- Comprehensive user interface with many customizability options.
- Export to PNG and other image and video formats, as well as spritesheets, GIFs, animated PNGs etc.
- Import spritesheets, multiple images as separate frames, as well as GIFs and videos.
- Various rotation and scaling algorithms tailored for pixel art, such as cleanEdge, OmniScale and rotxel.
- 3D layers that allow you to bring 3D shapes and models into your 2D canvas.
- A command line interface for automated file exporting.
- Custom user data for projects, layers, frames, frame tags and cels, allowing you to attach metadata for game development.
- Various free community-made extensions, such as tools that automatically convert your 2D pixels into 3D voxels.
- Fully open source with free updates, forever!

View File

@@ -0,0 +1,45 @@
---
description: "Operate your planetary defense cannon to fend off an interplanetary invasion from the comfort of your cozy bunker. Youre here to stay, so obey your superiors, press the right buttons, and sip your daily tea ration - it's good for you."
date: 2024-06-21 00:00:00 +0000
title: "PVKK: Planetenverteidigungskanonenkommandant"
author: "Bippinbits"
image: "/assets/showcase/planetenverteidigungskanonenkommandant.jpg"
gallery: [
"/assets/showcase/screenshots/pvkk-1.jpg",
"/assets/showcase/screenshots/pvkk-2.jpg",
"/assets/showcase/screenshots/pvkk-3.jpg",
"/assets/showcase/screenshots/pvkk-4.jpg",
"/assets/showcase/screenshots/pvkk-5.jpg",
]
website: https://bippinbits.com/
release_date: "TBD"
youtube_id: "DquTRgapsiM"
steam: https://store.steampowered.com/app/2956040/PVKK_Planetenverteidigungskanonenkommandant/
featured_in_home: true
---
In PVKK, you step into the role of a cannon pilot for an autocratic regime, confined to a defense bunker. Your mission: manually control a massive planetary defense cannon to fend off an ongoing interplanetary invasion. Master the various systems to protect your home world.
### Core Gameplay
Interact with a retro-tech cockpit filled with satisfying buttons, levers, dials, and switches. Manage energy generators, scan the skies for enemy vessels, analyze threats, calculate fire trajectories, and execute precise firing procedures. With limited resources and a strict regime, strategic thinking is key to your success.
### Progression and Upgrades
Between missions, maintain and improve your bunker, turning it into a comfortable and efficient retreat. Customize your space with earned resources to prepare for the next assault.
### Moral Dilemmas
Face tough choices that challenge your ethics and loyalty. Will you follow orders blindly, or will you question the regime's motives? How will you respond when someone from the outside shows you their truth? Your decisions shape the story and can lead to multiple endings in a world where everyone believes they are doing the right thing.
### Secrets of the Bunker
Your bunker hides secrets waiting to be discovered. Engage in escape room-style puzzles to uncover hidden items and clues about what is truly happening outside. The regime keeps you in the dark, feeding you half-truths and political euphemisms. Look behind these deceptions to understand the real situation and navigate the demands of the different factions in your own best interest.
### Key Features
- Immersive Cockpit Interaction: Engage with a detailed, tactile control panel filled with retro-tech elements.
- Deep Narrative: Experience a story rich with political intrigue and moral dilemmas.
- Customization and Upgrades: Improve your bunker and cannon to face increasing challenges.
- Atmospheric Setting: Enjoy the unique blend of a cozy yet oppressive bunker environment.
- Multiple Endings: Your decisions have a significant impact on the story's outcome.
- Hidden Secrets: Uncover bit by bit what is going on outside of the bunker through engaging escape room-style puzzles.

View File

@@ -1,20 +1,24 @@
---
description: "The Garden Path showcase page"
date: 2021-06-01 00:00:00 +0000
description: "A slice-of-life sim about the joy of gardening, designed to be picked up and played in short and sweet bites. Whether youre fishing, growing, trading, or making new vegetable friends, a wonderful and wistful adventure awaits when wandering The Garden Path."
date: 2024-07-30 00:00:00 +0000
title: "The Garden Path"
author: "carrotcake.studio"
image: "/assets/showcase/the-garden-path-header.webp"
author: "carrotcake"
image: "/assets/showcase/the-garden-path.jpg"
gallery: [
"/assets/showcase/the-garden-path.webp"
"/assets/showcase/screenshots/tgp-1.jpg",
"/assets/showcase/screenshots/tgp-2.jpg",
"/assets/showcase/screenshots/tgp-3.jpg",
"/assets/showcase/screenshots/tgp-4.jpg"
]
website: https://carrotcakestudio.itch.io/
release_date: "TBD"
youtube_id: "E9SnpPXg8hw"
website: https://carrotcake.games/
release_date: "July 30"
youtube_id: "yha0038eC1o"
windows: true
macos: true
linux: true
switch: true
steam: "https://store.steampowered.com/app/1638500/The_Garden_Path/"
itch: "https://carrotcakestudio.itch.io/thegardenpath"
@@ -37,15 +41,39 @@ developer_interview:
featured_in_home: false
---
The Garden Path is a sandbox gardening game. Players will emerge into a
long-forgotten garden, and unlock tools to help shape the garden into
something they can call their own.
Between forgotten statues and newfound friends, find yourself in a relaxing getaway. Discover a secret garden and your role within it.
Depending on how the player chooses to grow their garden will decide who
chooses to live there from a pool of many possible vegetable-headed
inhabitants.
The Garden Path is a slice-of-life gardening sim that celebrates small moments. No matter how you decide to play, the garden is a tender world of familiar sights and sounds, mysteries, and friendly faces. A space to call your own, to curate, and to reflect.
Time in the The Garden Path is tied to real-time, but with seasons passing
each week, and years passing each month. With each season comes new events,
weather, and collectables that can be brewed into teas, or traded with a cast
of animal travellers.
### Wander in Your Own Time
Designed to be played in short bursts whenever you wish, time in The Garden Path runs in concert with the outside world. Following a mix of real-time and in-game time, the game will show you all four beautiful seasons in 28 real-world days, but each in-game day mirrors a 24-hour clock.
Stop by to wander your garden whenever the mood takes you and find new travelers, events, activities, and distractions waiting for you each day. Take your time, play for a little while, and witness how your Garden will grow and change over time.
### Meet a Charming Cast
You wont be alone in your new home. A charming cast of vegetable-headed visitors are eager to make your acquaintance, and may even make their home alongside your own. Complete tasks for them, grow your bonds, and even compete in a friendly game of Conkers!
Over time, an endearing troupe of travelers will also come and go. Get to know Tabbal the grumpy Berber toad who only appears on a rainy day, Larto the musk ox with a penchant for song-fish, and many more. Traveling merchants will look to make trades with you for various useful items like seeds, decorative items, and tools.
### Enjoy the Look and Sounds of the Garden
With a unique hand-drawn aesthetic, The Garden Paths stunning visual design embraces you from the start. Whether you want to design a cozy escape from reality with lush furniture items or expand your garden to new heights, decorating your Garden is completely up to you.
Let songs and sounds of nature find you, as you build a new haven in your own storybook-style garden. With two original scores, each unique to Night and Day, enjoy the Gardens music whenever you play.
### Play with Friends
Every good Garden begs to be enjoyed with friends and family. Play The Garden Path with a second player in our local co-op mode! Just link up another controller (or share!) and enjoy wandering the Garden together.
Combine efforts by sharing an inventory and collecting harvestables to trade with traveling merchants. Enjoy your time together by using in-game emotes, and maybe even start a dance party in the process!
### Features:
- A humble gardening slice-of-life sim with real-time progression even when youre away.
- Designed with short play sessions in mind; with 10-30 minutes of daily errands, visitors, and more to explore.
- Flexible playstyle including gardening, fishing, home-design, and quests.
- A charming cast of characters, all with their own stories to tell.
- Piece together a whimsical history as you discover the secrets of the Garden.
- Lush illustrated visuals and a twinkling soundtrack invites you to take a break and stay awhile.
- Invite another to join you in local co-op mode and nurture your garden together.

View File

@@ -1,6 +1,6 @@
---
description: "Until Then showcase page"
date: 2021-06-02 00:00:00 +0000
description: "A fateful meeting sets off a chain reaction, upending Mark's life. People disappear and memories prove unreliable. Uncover a hidden truth with Mark and his friends in this narrative adventure and race to unravel the mystery before it's too late."
date: 2024-06-25 00:00:00 +0000
title: "Until Then"
author: "Polychroma Games"
@@ -13,7 +13,7 @@ gallery: [
"/assets/showcase/until-then-4.webp",
]
website: https://untilthengame.com/
release_date: "TBD"
release_date: "June 2024"
youtube_id: "ktd33TPsGlA"
windows: true
linux: true

View File

@@ -87,9 +87,9 @@ description: "The requested resource is not available on the server."
<p>Or visit:</p>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/download">Download</a></li>
<li><a href="/download/windows/" class="set-os-download-url">Download</a></li>
<li><a href="https://docs.godotengine.org/en/stable/">Documentation</a></li>
<li><a href="/community">Community</a></li>
<li><a href="/community/">Community</a></li>
</ul>
</div>
</div>
@@ -98,3 +98,26 @@ description: "The requested resource is not available on the server."
href="https://github.com/godotengine/godot-website/">issue on GitHub</a>.</p>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
// Update any download link to point to identified user's OS.
const links = document.querySelectorAll('.set-os-download-url');
for (let i = 0; i < links.length; i++) {
const link = links[i];
let link_slug = 'download';
if ('version' in link.dataset && link.dataset['version'] === '3') {
link_slug = 'download/3.x';
}
let link_platform = 'windows';
if (navigator.platform.indexOf('Mac') !== -1) {
link_platform = 'macos';
} else if (navigator.platform.indexOf('Linux') !== -1) {
link_platform = 'linux';
}
link.href = `/${link_slug}/${link_platform}/`;
}
});
</script>

View File

@@ -6,6 +6,9 @@ layout: default
{% include header.html %}
<style>
h3.smaller {
font-size: 25px;
}
.card {
height: 100%;
}
@@ -31,6 +34,11 @@ layout: default
display: flex;
flex-direction: column;
}
@media (max-width: 540px) {
.community-list .community-short-block {
grid-column-end: span 1;
}
}
.community-list .community-short-block .card {
height: auto;
@@ -123,7 +131,7 @@ layout: default
<h1 class="intro-title">Community</h1>
<p class="small">
Godot has a very active community across multiple channels.<br>
By joining Godot communities, you agree to follow Godot's <a href="/code-of-conduct">Code of Conduct</a>.
By joining Godot communities, you agree to follow Godot's <a href="/code-of-conduct/">Code of Conduct</a>.
</p>
</div>
</div>
@@ -132,7 +140,7 @@ layout: default
<div class="container community-list">
<div class="community-stack">
<div class="community-block">
<a href="/events" class="card base-padding" id="events">
<a href="/events/" class="card base-padding" id="events">
<div>
<h3>Events</h3>
<p>Upcoming community and past events.</p>
@@ -162,7 +170,7 @@ layout: default
<div class="community-block">
<div class="card">
<a href="https://forum.godotengine.org/">
<img src="/assets/community/icon_forum.png" width="350" height="215" alt=""
<img src="/assets/community/icon_forum.webp" width="350" height="215" alt=""
style="background: linear-gradient(90deg, #fbfbfb 30%, #fdfcfd 46%, #e7ebed 83%, #fefdfe 98%)"
loading="lazy">
</a>
@@ -175,14 +183,14 @@ layout: default
<div class="community-block">
<div class="card">
<a href="https://discord.gg/4JBkykG">
<img src="/assets/community/icon_discord.webp" width="350" height="215" alt=""
<a href="https://discord.gg/bdcfAYM4W9">
<img src="/assets/community/icon_discord.webp?1" width="350" height="215" alt=""
style="background: linear-gradient(90deg, #323541 16%, #42454e 33%, #383b42 82%, #35373e 96%)"
loading="lazy">
</a>
<div class="base-padding">
<h3><a href="https://discord.gg/4JBkykG">Discord</a></h3>
<p>A vibrant community for discussion, user support, showcases... and custom emoji!</p>
<h3><a href="https://discord.gg/bdcfAYM4W9">Discord</a></h3>
<p>A space to socialize with other community members.</p>
</div>
</div>
</div>
@@ -195,7 +203,7 @@ layout: default
</a>
<div class="base-padding">
<h3><a href="https://www.reddit.com/r/godot">Reddit</a></h3>
<p>A community for discussion and support in development with the game engine.</p>
<p>Stay up to date on Godot news, and share your projects and resources with each other.</p>
</div>
</div>
</div>
@@ -257,6 +265,20 @@ layout: default
</div>
</div>
</div>
<div class="community-block">
<div class="card">
<a href="https://www.twitch.tv/godotengine_official">
<img src="/assets/community/icon_twitch.webp" width="350" height="215" alt=""
style="background: linear-gradient(90deg, #cdbcc5 24%, #cdbcc5 57%, #cdbcc5 66%, #cab8c1 92%)"
loading="lazy">
</a>
<div class="base-padding">
<h3><a href="https://www.twitch.tv/godotengine_official">Twitch</a></h3>
<p>Live streams all about Godot and its users.</p>
</div>
</div>
</div>
</div>
<h2>User-supported communities</h2>
@@ -270,18 +292,48 @@ layout: default
loading="lazy">
</a>
<div class="base-padding">
<h3><a href="https://godotforums.org">Forums</a></h3>
<h3 class="smaller"><a href="https://godotforums.org">Forums</a></h3>
<p>Community forum for all Godot developers.</p>
</div>
</div>
</div>
<div class="community-short-block">
<div class="community-block">
<div class="card">
<a href="https://programming.dev/c/godot">
<img src="/assets/community/community-lemmy.webp" width="350" height="215" alt=""
style="background: linear-gradient(90deg, #e3eaf1 2%, #e3eaf1 28%, #e3eaf1 57%, #e3eaf1 90%)"
loading="lazy">
</a>
<div class="base-padding">
<h3 class="smaller"><a href="https://programming.dev/c/godot">Programming.Dev</a></h3>
<p>A community for discussion and support in development with the game engine.</p>
</div>
</div>
</div>
<div class="community-block">
<div class="card">
<a href="https://discord.gg/4JBkykG">
<img src="/assets/community/icon_community_discord.webp" width="350" height="215" alt=""
style="background: linear-gradient(90deg, #323541 16%, #42454e 33%, #383b42 82%, #35373e 96%)"
loading="lazy">
</a>
<div class="base-padding">
<h3><a href="https://discord.gg/4JBkykG">Discord</a></h3>
<p>A vibrant community for discussion, user support, showcases... and custom emoji!</p>
</div>
</div>
</div>
<div class="community-block">
<a href="/community/user-groups" class="card base-padding" id="user-groups">
<h3>User groups</h3>
<p>Find local Godot user groups run by community members.</p>
</a>
</div>
<div class="community-short-block">
<a href="https://docs.godotengine.org/en/stable/community/tutorials.html" class="card base-padding">
<h3>Tutorials</h3>
<p>Find tutorials and guides written by the community.</p>

Some files were not shown because too many files have changed in this diff Show More