In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in 3.3 no longer works in 3.3.1 RC 2).
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, and a handful of part or full-time developers, hired thanks to donations from the Godot community . A big thankyou to everyone who has contributed their time or financial support to the project!
If you’d like to support the project financially and help us secure our future hires, you can do so on Patreon or PayPal .
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).
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 . A big thank you to everyone who has contributed their time or their financial support to the project!
As usual, this blog post only details the most recent changes since the last build, 4.0 RC 5. If you’re interested in what major features ship with Godot 4.0, check out our blog post for beta 1 .
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 list of known bugs in the 4.0 milestone .
As in any major release, there are going to be compatibility-breaking changes. However, we still try to provide a migration path for your projects. If you experience a regression without a known migration path or workaround, do not hesitate to report it.
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, and a handful of part or full-time developers hired thanks to donations from the Godot community . A big thank you to everyone who has contributed their time or financial support to the project!
If you’d like to support the project financially and help us secure our future hires, you can do so on Patreon or PayPal .
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 .
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.1.x releases, but no longer works in 4.1.3 RC 1).
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 . A big thank you to everyone who has contributed their time or their financial support to the project!
There are currently no known issues introduced by these releases.
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 .
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 no longer works).
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 . A big thank you to everyone who has contributed their time or their financial support to the project!
There are currently no known issues introduced by these releases.
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 .
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 no longer works).
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 . A big thank you to everyone who has contributed their time or their financial support to the project!
There are currently no known issues introduced by these releases.
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 .
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 no longer works).
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 . A big thank you to everyone who has contributed their time or their financial support to the project!
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 .
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 no longer works in this release).
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 . A big thank you to everyone who has contributed their time or their financial support to the project!
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 .
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 release).
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 . A big thank you to everyone who has contributed their time or their financial support to the project!
We are aware of some regressions which still affect this release candidate, but which we may not be able to solve in time for the stable release. They’re still tracked as high priority and should be fixed soon in 4.2.x maintenance releases.
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 .
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 release).
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 . A big thank you to everyone who has contributed their time or their financial support to the project!
If you want to test the new Windows ARM64 builds, they’re not integrated in our download page yet, so here are direct links:
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 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 .
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).
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 . A big thank you to everyone who has contributed their time or their financial support to the project!
If you want to test the new Windows ARM64 builds, they’re not integrated in our download page yet, so here are direct links:
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 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 .
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).
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 . A big thank you to everyone who has contributed their time or their financial support to the project!
If you want to test the new Windows ARM64 builds, you will now find them listed in the usual download page.
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 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 .
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).
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 . A big thank you to everyone who has contributed their time or their financial support to the project!
To alleviate pressure on contributors and to avoid delays, starting with version 4.1, we aim to have quicker release cycles for feature updates (4.1, 4.2, etc., i.e. “4.x” releases). The plan is to start with a fixed period of merging new features, then transition to a short period where we only merge bug fixes, then release and return to merging features again.
Some features may miss the window for merging, and will be postponed until the next version. But due to quicker iteration times the wait would be much shorter for users, and for contributors — their work won’t go stale. We believe this will help us maintain momentum and ensure that the engine stabilizes quickly (a special thank you to Miguel de Icaza for your insight and encouragement that led us to this decision). At this point we are unsure exactly how long the release cycle will be, you can expect we will experiment a bit to see what works best for contributors.
Early in the 4.0 development cycle, we caught ourselves saying “X feature won’t make it into 4.0, but it will be in 4.1”. Please read such statements as saying “will be in 4.x”. Our decision to focus on quick iteration and stability means we can’t promise new features in any particular release. Features will be included in the next release after they are finished. This also means we will not be delaying releases in order to add “just one more feature”.
We are still in the beta phase, and development is more focused than ever on stabilizing Godot 4.0 for release. We are now releasing weekly betas to get faster feedback on our bug fixes.
At the time of the Godot 4.0 release, version 3.5 will remain the much more stable and battle-tested option. We advise users who desire a more stable, bug-free experience to continue using 3.5 until Godot 4 has been more widely tested and the team has had a chance to fix the highest priority bugs that will inevitably arise. Users with ambitious projects that depend on the new features in 4.0 can of course start using it as soon as it releases, while keeping in mind that there might be some roadblocks which will be lifted in the early 4.x releases.
We will release 4.0 when we believe it is ready to be used in production, not when it is perfect. It will not be perfect, and it doesn’t have to be. But it will lay down the foundation for all our future work, and with your help it might get a little bit closer to what we envision as the Godot 4.
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, and a handful of part or full-time developers, hired thanks to donations from the Godot community . A big thankyou to everyone who has contributed their time or financial support to the project!
If you’d like to support the project financially and help us secure our future hires, you can do so on Patreon or PayPal .
As the project started growing, Godot Conferences started being organized, this way most of the core contributors could meet face to face. This greatly improved discussions and decision-making in key areas.
Afterwards, the plan was to “split” teams, as I would work on the Vulkan branch (which will become the master branch soon, and is expected to release as Godot 4.0 by mid 2020) and Rémi would manage with the rest of the contributors the release of Godot 3.2 (for the first time, entirely on his own, and he is doing an amazing job so far).
And then a decade has gone by. The almost six years since Godot was open-sourced were a roller-coaster. It’s hard to believe so much happened in such a short amount of time.
Today, Godot has over a thousand contributors and an amazing user community. The new 3.2 version will hopefully be released this month (January 2020), with even better and improved usability and stability, and putting an end to our best release cycle yet.
Afterwards, the Vulkan branch will become master (it will be pretty unstable for a while, so definitely not advised for production). The plan is to not add a lot of new general features in 4.0 and focus exclusively on bringing rendering quality and performance on par with mainstream game engines.
Of course, as always, keep in mind that all this is done with ease of use as our first priority, as Godot is designed so that small and medium sized teams, as well as individual developers, have the best possible tool for the games they want to make.
The new rendering architecture will also allow companies working on console ports to more efficiently port the engine and offer our users the possibility of running their games on the most popular game consoles (something we will, unfortunately, never be able to offer officially due to legal reasons, thus forcing us to cooperate with companies porting it on their own).
On Thursday evening, we hosted our own off-site Godot mixer, and attendance was great! Sitting on the outside patio of the Haxenhaus, an old GDC Europe staple location as we were told, we got to enjoy plenty of food and drink - courtesy of our longtime sponsor W4 Games .
It is always a pleasure to meet our community face to face, and we are flattered that many of you seem to agree. Thank you to all attendees for sharing your personal Godot Engine stories with us, we learn a lot from these conversations every time. For the next events, we might need more sponsors to be able to accommodate more than “just” 50 of you.
To meet a few more community members, we also assembled Friday afternoon at the aforementioned Indie Arena Booth. Despite having to yell-talk and running out of goodies to distribute, we had a lot of fun helping fellow developers network and mingling ourselves. Considering the amount of people that showed up, we were almost concerned the Germans would come after us for “unlawful assembly” or “blocking the exit paths” - luckily for us, nothing of that sort happened and instead we got to take a big happy group picture:
What event would you like to see us attend next? Tell us on our official forum! Bonus points if you know a local user group or creators who would help us staff a booth, and a sponsor to help with the related expenses.
Here’s some info about our GodotCon speakers. Note that we’re still accepting late proposals of activities, so you could be one of those too :)
My next goals are to make the tile atlas management and most of the TileMap edition feature complete. I want to make the workflow for setting up tiles (only considering their rendering) as simple and intuitive as possible. This is the base work needed before implementing again all other features, like collisions, occlusion, etc…
The framework has built-in support for hand tracking, enabling interaction with the VR app without the need for controllers.
The framework leverages the Oculus Keyboard for input.
We have more features in the pipeline for upcoming releases! Please take a look at the Godot XRApp framework roadmap to learn more.
But better late than never, now that Godot 3.0 is well established (with the maintenance version 3.0.3 likely coming in time for the jam) it’s time for a new Godot-focused game jam to see what the community is up to!
This was nice to give everyone a chance to participate, be it with an entry worked on during the whole month or only during one free week-end. But at the same time many jammers prefer the shorter variant, focusing on a game for one week-end and moving on to something else, so we’ll give this formula a try this time. We’ll gather your feedback and see if you liked it this way or if we should adapt the format again for the next one.
As the community has grown a lot since 2016, we’d also like to propose jams more regularly - how often is yet to be determined based on your feedback, but every 3 months sounds like a good pace a priori.
The rules will be quite simple and similar to that of our previous jams, especially the requirement for all submissions to be free and open source. More details on this in the coming days as we flesh out the itch.io jam page and write the theme voting announcement.
It’s not related to the upcoming jam, but while you wait for the theme to be revealed, don’t miss the livestreams organized by Ben Tristem of GameDev.TV with our very own Juan Linietsky (today at 20:00 UTC on YouTube ) and many others (see the full line up, dates and stream links ).
The interface that was used during the Monado demonstration is based on the OpenHMD drivers. You can follow its development here: https://gitlab.freedesktop.org/monado/godot_openxr
The addition of the OpenGL ES 2.0 render pipeline is one that is very interesting to VR. Stereoscopic rendering at high resolutions and frame rates puts a large tax on your GPU. For the new HP Reverb headset the output may be 2160x2160 pixels per eye, this means that we’re rendering at a resolution of 4320x4320 twice per frame at 90fps. That requires some serious grunt if you’ve turned up all the new features of the GLES3 renderer. The move to Vulkan will mitigate some of that but still, being able to fall back on a render pipeline that is simpler and therefore faster means that you can use a high resolution headset even if you’re running on the mid-end hardware that many gamers will actually own.
Future The plan is to finish, in February, the features that are missing to be ported from Godot 3.x. This includes subsurface scattering (will include a more correct human skin mode), and screen space reflections. Afterwards, all the new planned features and optimizations will finally be implemented!
As always, please keep in mind Godot is developed with love for all of you, so you have a completely free and open tool to make your games, and make them entirely yours. This could never happen without generous donations from our patrons, so if you are not yet, please consider becoming one .
-
+
\ No newline at end of file
diff --git a/article/vulkan-progress-report-7/index.html b/article/vulkan-progress-report-7/index.html
index 318152eb06..1f429b4a68 100644
--- a/article/vulkan-progress-report-7/index.html
+++ b/article/vulkan-progress-report-7/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 1 May 2020 This article is from May 2020 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
It’s been three months since a Vulkan progress report! I know you guys missed them, so I made sure to work extra hard to have something nice to make up. It feels great to be back to doing graphics programming after two months refactoring the core engine.
So, here are the things that were worked on during April 2020!
See other articles in this Godot 4.0 Vulkan series:
Vulkan progress report #1 Vulkan progress report #2 Vulkan progress report #3 Vulkan progress report #4 Vulkan progress report #5 Vulkan progress report #6 (you are here) Vulkan progress report #7 Node renames While not entirely rendering specific, a lot of nodes are being renamed. Users often complain that it’s confusing that 2D nodes have the “2D” suffix, while 3D ones do not. This will change in Godot 4.0. A lot of nodes will also be renamed to have clearer naming. A compatibility option will be added on load so older scenes still open properly.
New screen-space reflection Screen space reflection in Godot 3.x was rather limited. It supported roughness, but it did so in a way where the texture reads appeared rough, but not the reflected image (the edges of the reflected objects remained intact). This is changing in 4.0, using a special screen-space filter to correctly simulate roughness.
New Subsurface Scattering This effect worked to some extent in Godot 3.x, but the quality was limited by several factors. In Godot 4.0, Subsurface Scattering has been redone with a completely new state-of-the-art scattering model. In the example below, you can see that transitions from light to shadow now use the right skin sub-surface colors (red in this case), and that the ear is semi-translucent thanks to scattering.
Additionally to being able to simulate skin more correctly, it also supports transmittance, so light that comes from behind will spread towards the front by scattering below the surface.
Besides using the pre-existing tuned skin model, you can customize scattering so it works in a wider amount of material types.
Reworked shadow bias settings A very common complaint when using shadowmaps in Godot is that tweaking shadow bias is extremely difficult compared to other game engines. Godot uses many different shadow techniques, which require different bias settings. Additionally, some situations like screen aspect ratio, draw distance or objects behind the camera frustum may also affect the biasing effect in ways it escapes user control.
In Godot 4.0, biasing has been entirely redone. Instead of reflecting the actual offset in shadow coordinates, bias is now a a reference value that adjusts itself to different shadow settings and types. It all happens automagically so, once set, the setting is adjusted to all possible internal conditions and light types.
This way, when you add a new light, a default value that works out of the box (or almost does) is always present and, even if you need to adjust the bias for some reason, the effort is minimal.
Additionally, slope-scale was replaced by normal-bias, allowing a very significant increase in shadowmap quality. Shadows look so good now that the old “contact” approximator no longer makes sense and it was removed. For directional shadows, pancaking was added (and is enabled by default). This makes shadows extremely stable, but has the downside that triangles too large may break the shadow a bit. If this happens, you need to adjust the pancake size, or subdivide the geometry.
As you can see in the image below, shadows “just work”, with no visible gaps or peter panning.
Soft Shadows Godot 4.0 will support soft shadows in all its light types. For Omni and Spot shadows, a “size” parameter was added to the settings.
Soft shadows can become expensive quickly, so make sure to use them with relatively small softness values, or in controlled environments. For Directional lights, an “angular distance” parameter was added instead (0.5 is the Sun’s size). Setting this value results in more realistic shadows from the Sun.
Accurate frame render time In Godot 3.2, you can only see the frames per second that takes rendering the whole editor. This is very misleading and not representative of rendering performance.
For 4.0, you can see the exact time it takes to render each 3D viewport, for both the CPU and GPU, and a correct estimation of what the “frames per second” will be when running your actual game.
MSAA and Screen-Space antialiasing MSAA is back in master branch. Additionally, you can choose screen space antialiasing method such as FXAA.
Together with specular aliasing improvements for Godot 4.0, image quality is starting to be extremely high for this upcoming version, without having to resort to techniques such as TAA.
Decals A very long-since requested feature has finally made it to Godot. Decals are now supported in the engine. They are very easy to use, just select the right texture channels and blending options and they work without much hassle.
Godot uses clustered decals, so the cost is very low (the pixel is shaded only once and there are no extra draw calls for each decal). Still, it is possible to set a maximum (including fadeout) distance for the decals. Make sure to abuse them as much as you want!
Light projectors Both the Omni and Spot lights are now able to project textures. For Omni lights, in order to throw light in all directions, a panorama is required so make sure to look for a proper tool to generate them.
Low level access to RenderingDevice Godot 4.0 will allow you to have low level access to the rendering APIs, allowing you to do all the same things Godot does during rendering, or calling your custom code in the middle of render passes.
Additionally, GLSL shaders (not Godot shaders, real GLSL 4.50+Vulkan extensions) can now be imported. It can’t be edited in-engine, but it supports shader variants using a custom syntax. They will be automatically imported and converted to SPIR-V when found, giving you proper reports on import errors.
It is also possible to create local rendering devices, which run in the game thread (or any other thread). This is very useful for games that may want their logic accelerated by the GPU (such as sandbox or simulation games).
Future As you can see, a lot of cool new features were added this month! A 4.0 Alpha is still some months away, but it’s getting closer every day! So, stay tuned for next month’s progress report, which will include a lot of great new features including the new GPU accelerated lightmapper.
As always, please remember that Godot is made out of love for you and everybody else making games. We want to create the ultimate game engine and give it to you and the rest of the world for free, so you can own your games down to the last line of code. If you are not yet, please consider becoming our patron , and help us make this dream become reality.
-
+
\ No newline at end of file
diff --git a/article/warning-head-going-unstable/index.html b/article/warning-head-going-unstable/index.html
index 6345bd79c6..0721b989a7 100644
--- a/article/warning-head-going-unstable/index.html
+++ b/article/warning-head-going-unstable/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 2 January 2017 This article is from January 2017 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
We know Godot has been known for many years to have a relatively stable master/HEAD at Github, so users can try the new features in their projects with very little risk of breaking them.
Starting now, and only for the upcoming 3.0 release, HEAD will break compatibility completely. Projects from Godot 1.x and 2.x will not work and this is expected.
Godot 3.0 is expected to be a compatibility breaking release. We will take the chance to do deep changes in Godot internals, which (while for the better) will render it incompatible with previous versions.
Moreover, starting new projects in the HEAD branch, using the new features and expecting them to work with the upcoming 3.0 release is discouraged - unless you want to help find and fix bugs in the development code of course.
Please wait at least until we can release an Alpha!
Some time before the 3.0 release, we will create a tool for project migration, which should make it easy to move to Godot 3.0 with as little work as possible. In the meantime, keep using Godot 2.1.x :)
Thanks for your patience and understanding!
-
+
\ No newline at end of file
diff --git a/article/we-hired-gdquest-work-manual/index.html b/article/we-hired-gdquest-work-manual/index.html
index 195a4eda46..fcd72d06ea 100644
--- a/article/we-hired-gdquest-work-manual/index.html
+++ b/article/we-hired-gdquest-work-manual/index.html
@@ -5,7 +5,7 @@
Nathan GDQuest 10 September 2020 This article is from September 2020 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Hi! Nathan here.
I got hired by the Godot team to work part-time mission to help improve the official documentation. The job involves the following tasks:
Auditing the documentation to find missing, low-quality, and outdated content.Improving the content’s organization . Triaging issues. Solidifying the workflow for core contributors and writing content guidelines.Removing outdated content. Improving the getting started guide. Note that I will be working on the godot-docs repository and specifically on the reference manual; not on the class reference (although I took some extra time to review pending pull requests for the code reference).
All my work is public and open to feedback , entirely done on GitHub. This contract already stems from a public proposal to improve the manual by the time Godot 4.0 comes out. We had a long discussion with users and core contributors there, leading to this project.
Any changes to the content will only affect the latest
version of the online manual, that is to say, the future Godot 4.0 docs. So you won’t see the changes in the stable
version of the documentation until the Godot 4.0 release.
You can learn more in a video presentation of this project.
I’ve already gotten to work, starting with the audit and reviewing pull requests. To get progress report on this project periodically, you can follow me on Twitter . Alternatively, you can watch the godot-docs repository to get notified of all new issues and pull requests.
This project was funded by a generous donor who asked for work to be done specifically on the documentation.
-
+
\ No newline at end of file
diff --git a/article/we-need-your-help-improve-our-documentation-system/index.html b/article/we-need-your-help-improve-our-documentation-system/index.html
index 17e1b1053d..5f5284958a 100644
--- a/article/we-need-your-help-improve-our-documentation-system/index.html
+++ b/article/we-need-your-help-improve-our-documentation-system/index.html
@@ -8,7 +8,7 @@
How to contribute The best way to contact us for this work is joining the #godotengine-atelier IRC channel on Freenode, which is dedicated mostly to website development.
Thanks!
-
+
\ No newline at end of file
diff --git a/article/we-should-all-use-gltf-20-export-3d-assets-game-engines/index.html b/article/we-should-all-use-gltf-20-export-3d-assets-game-engines/index.html
index e79cd51f6e..a1ee2d5e2a 100644
--- a/article/we-should-all-use-gltf-20-export-3d-assets-game-engines/index.html
+++ b/article/we-should-all-use-gltf-20-export-3d-assets-game-engines/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 3 August 2017 This article is from August 2017 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Introducing glTF 2.0 glTF 2.0 was introduced two months ago by Khronos , the body behind Vulkan and OpenGL.
Today, this format was added to Godot, which now supports the full specification. The reasoning behind this late feature addition is that, now that we released 3.0 alpha1, users need more content to test with the new 3D engine.
Sites like Sketchfab provide plenty of PBR-ready assets for downloading, and plugins that export scenes from other popular game engines to this format.
The surprise, though, is how good this format is for video game asset exchange. Nothing as good existed before, and it solves a problem that we, as an industry, have been struggling with for a long time.
Khronos, with glTF 2.0, has given us a fantastic chance to standardize a smooth workflow between 3D modelling software and game engines. To better understand why, a list of previous attempts will be explained and why they failed.
OBJ / 3DS The first formats used for asset exchange were Wavefrom .OBJ and Autodesk .3DS. Both are formats from the early days of 3D computer graphics (late 80s, early 90s). Despite their popularity, they only support basic geometry, and .OBJ does not even support object transforms.
Collada Collada (also from Khronos) was the first serious attempt to create an open exchange format, but it was not really intended to be used by the game industry (until later, at least). It was more of a tool to exchange assets between 3D modelling applications.
Despite supporting almost everything a modern game engine needs, the format fell into disuse. There are many reasons for this:
The specification was not that complex, but parsing an XML based format can be a hassle as all datatypes need to be converted from text. Implementers preferred libraries to do this work, but no good libraries existed. FCollada was discontinued, and OpenCollada turned out to be bigger than most game engines. The specification was very ambiguous in many aspects, such as how data, skeletons, blend shapes, etc. had to be exported. It also gave exporters a lot of freedom in units used, as well as world transform specifications (e.g., which axis was up). All this resulted in a tremendous work for anyone wanting to parse the format. Most exporters are, to this day, broken. IDs are not unique in some, the order of sections dictated by the spec is not respected, and information is often missing. Collada is a text format, so loading large files is slow. Autodesk (willingly or unwillingly) worked against the format adoption by including an incomplete and buggy exporter in their products. To this day, a large amount of developers believe Collada is not capable of a lot of functions that it actually is. Blender (willingly or unwillingly) worked against the format by adopting an incomplete exporter. While many factors worked against it, the truth is that Collada was never good enough.
FBX One would assume (given its popularity) that FBX is pretty much the industry standard… except there isn’t any standard published by Autodesk about it.
FBX is used via the FBX SDK, which has a very restrictive license. This license makes it very hard to use in open source projects (an EULA must be accepted by the user unless a special license is purchased from Autodesk).
Besides the legal issues, implementing the library is rather difficult and suffers many of the same format ambiguity issues Collada does. One could argue, though, that the main technical advantage about it (besides working with the most popular 3D modelling applications) is that the file format is binary, so parsing it is fast.
That said, as an industry, we should look for true standards to work with. As useful as FBX may be, Autodesk alone controls its future.
OpenGEX OpenGEX was born from one of the most brilliant minds the game industry has ever produced: Eric Lengyel, who single-handedly created the C4 engine. It has a well defined specification and comes with exporter plugins for the most common 3D modelling software, as well as documentation and support libraries. It also has the very innovative approach of encoding floating point data as hexadecimal for quick and efficient parsing (despite being text based).
Unfortunately, OpenGEX did not catch up. The main reasons I can think of are:
There are no open tools where you can test and visualize your exported files, save for Eric’s own commercial engine. It’s not really standard, as it’s not registered in any relevant body. Development is not peer-based, only Eric decides the future of the format. In short, for a format not so open, it does not offer many advantages over FBX.
glTF 1.0 The first version of glTF had many good ideas, but it was clearly intended as a storage format for WebGL. In fact, materials could only be created by writing GLSL shader code. This made format unusable for anything else, as modern game engines only allow the user to create materials by customizing a small part of the rendering pipeline.
glTF 2.0: What makes it great? By just reading the spec, the advantages should become clear. Still, I will detail the key points below:
JSON based GLTF is a JSON based format. It’s very easy to parse and the data already comes typed. This significantly reduces the need to rely on complex third party libraries to read it. Many languages (e.g., Javascript, Python) even support this format natively.
Comparing the size (in lines of code) of both Godot’s glTF 2.0 and Collada importers, the result is as follows:
Collada: ~5000 loc glTF 2.0: ~2000 loc Godot does not even use third party libraries to parse these files. This makes it more evident how simple the format is in comparison.
Theoretically, glTF2 should be less efficient to parse than Collada, as it requires parsing the whole JSON into memory. Collada can be streamed in by using a SAX XML parser but, in practice, glTF beats Collada hands down. This is because (besides many Collada exporters not obeying the specification, so they can’t be parsed as SAX anyway) glTF has yet another killer feature:
Separate binary blob for arrays glTF allows specifying an external file for the big data, in binary format. It even supports many common GPU data types, so in practice this file can be moved in chunks directly to the GPU memory. Yes, glTF is the first of these formats that can even be used efficiently as in-engine data .
Even if engines would prefer to import to their own format, like Godot does, glTF is extremely fast to export and import. This makes it ideal for making changes to a complex file in the 3D software and updating them to the 3D engine almost instantly.
No ambiguity glTF’s file structure is crystal clear. No extra or redundant data exists. There is only one way the scene definition can be understood, which gives no room for exporters to take shortcuts. It also makes life for importers simpler, warranting that all existing scenes will work on the first implementation attempt.
Collections of objects of the same type are stored in JSON arrays and referenced by indices. No more confusing IDs.
There is also no support for different coordinate systems or units, and this is great. Quoting one of the first paragraphs of the specification:
glTF uses a right-handed coordinate system, that is, the cross product of X and Y yields Z. glTF defines the y axis as up. The units for all linear distances are meters. All angles are in radians. Positive rotation is counterclockwise. Just one simple use case to care about. No extra conversions. All work is left to the exporter. As there are usually way more importers than exporters, this is an excellent design decision.
Modern features glTF 2.0 fully supports skeletons and morph targets, which can be parsed easily and unambiguously.
It also supports PBR based materials using the Disney/Unreal format, which is what most engines and 3D modelling applications use nowadays, with albedo, metallic, roughness, normal, emission and ambient occlusion. It also handles two-sidedness and transparent materials, including alpha to coverage.
Extensions for handling shader material graphs are in the work.
Great animation support Animation support is also well done. glTF 2.0 supports multiple animations per file, which is ideal for exporting character actions (though be careful with some official examples, they are old and incomplete). It also supports many key interpolation types, such as Catmull Rom and Cubic Spline.
Animations are also stored in the binary file, so they can be loaded quickly.
Clean documentation The specification is very complete, I personally found it well worded and not lacking in any area. There are many sample files to test all functions.
Flexible extension support glTF uses the same extension system as other Khronos specifications, which is proven to be centralized and well organized.
Strong backing glTF is developed by individuals from many companies, such as Microsoft, Unity, Google, Adobe, NVidia, Oculus, etc. in collaboration with Khronos.
Best of all, it’s completely open and everyone can contribute! glTF is an open standard and the development process is also transparent .
Support glTF! For glTF to succeed, it needs strong developer adoption. Ask your favorite 3D modelling software or engine developer to support it!
Currently, the Blender exporter is in the works and not complete, and there is no support at all for Autodesk products (export plug-ins need to be written).
This is the best chance we’ll ever have in a long time for a proper, open standard. Let’s work together to make it happen!
-
+
\ No newline at end of file
diff --git a/article/webassembly-godot-web/index.html b/article/webassembly-godot-web/index.html
index 275760e33a..75bfe85502 100644
--- a/article/webassembly-godot-web/index.html
+++ b/article/webassembly-godot-web/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 25 June 2015 This article is from June 2015 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Running native on the web Godot has a long story on attempts trying to make it run on the web. We always wanted this to happen, we tried many approaches, it may finally happen. This article will be a small recap of our experiences with this matter.
Atmosphir A long time ago Ariel and I wrote a game named Atmosphir as contractors. It was one of the first voxel games and a Minecraft precursor. Although far from what Godot is now (almost the entire codebase is different at this point), the game+engine combo were written almost from scratch in seven months and Atmosphir got a warm welcome by the community.
As it did well , investors wanted to expand the game and one of their first ideas was to make it a web based game to run it in Kongregate (which was trendy). They were set on this idea and completely convinced that downloadable games were a thing of the past (a common idea at the time, Steam did not exist yet and Minecraft was a year or two away from proving them wrong).
First attempt, native plugin We did research on how to make the game run on a browser and researched NPAPI and similar technologies and even made prototypes, but reality was that we believed it was a huge security risk to do this, as plugins don’t have any sort of protection against attacks (reason why now they are being removed from Chrome and Edge).
Finally It was decided that the game was to be ported to Unity so it could run on the web. Unity at the time was a very immature engine and Atmosphir was probably one of the biggest projects made with it, if not the largest. Still, it had a great web plugin with a decent userbase. At the time we had other priorities so we ceased involvement with the project.
Second attempt, native client Shortly afterwards, Google announced Native Client. Native Client works by allowing developers to compile “safe” binaries that run on the Browser. You had to compile a binary for each processor by yourself, but that wasn’ t too bad. We believed it was a great idea, as it was a safe way to run native code on the web. Ariel did a very early port of Godot to it and it worked fantastic.
At the time, Google started experimenting with Pepper API (PPAPI), proposing it as an open safe (sandboxed) plugin interface. Mozilla was interested too so so we believed this was the future (Hey, if both Firefox and Chrome had it working, Microsoft would have been forced to implement it, right?). Unfortunately, Mozilla changed course and decided not to go that route (no PPAPI) and, as a Chrome-only plugin would not be very useful, we abandoned it to.
Failure. A shame because PNaCL was not going to get support either, as a great of an idea as it was. Thanks Mozilla.
Third attempt, Flash Fast forward to Farmville. Making games in Flash became all the rage and the most popular way to make games on Facebook. On the peak of it’ s glory, Adobe announced a cool internal project called “FlasCC “, later renamed to “Project Alchemy” and finally settled as “Adobe CrossBridge”. This technology allowed to compile C++ to run on the FlashVM.
At the time, It was still immature and it needed some work, but it showed promise. “This is it!” we thought again, this is how to run Godot on the web. We met with Adobe privately at GDC and worked with them in the closed beta with the hopes to have a nice flash exporter.
Unfortunately, one day Steve Jobs decided that “Flash is dead ” and killed it. It was a simple as that. Can’t complain about it as it was probably a good thing, but efforts to bring Godot to the web failed again as Adobe abandoned both Flash and Cross Bridge. Thanks Apple.
Fourth attempt, ASM.JS When I first heard that someone made a compiler that converted C++ to JavaScript , I laughed a lot and ignored it for about a year. Finally, one day, decided to gave it a try and I was surprised that it worked. It had a lot of limitations but it could run Godot. Firefox ran it flawlessly and perfectly, but not Chrome and much less Internet Explorer. The situation improved the following years, with support somehow improving in all major browsers and Microsoft deciding to adopt it for Edge.
Unfortunately, the process of detecting asm.js and pre-parsing it efficiently seems it’s too much of a hack to implement by browser vendors other than Mozilla. Despite it being adopted by Unity and Unreal too, ASM.JS is still hit or miss. It requires a huge amount of resources to compile the Javascript blob, a large pre-allocated chunk of memory (to serve as process memory), and a relatively fast computer to run it. Forget about mobile web. This back-end is still in the works in Godot, but we were mainly waiting for browser vendors to make it not suck. This may never happen.
Fifth attempt, WebAssembly Some days ago, WebAssembly was announced . It’s a bytecode specification to run code that converts to native on the browser. On paper it’s great and provides every single thing that Godot needs. It’s still in diapers and we might not see support for it until next year, but it’ cool because this time Unity and Unreal are in our same boat and they have more lobby power than us.
In fact, all this is probably because they freaked after Google decided to deprecate NPAPI from Chrome and Microsoft decided to stop supporting plugins on Edge. Will we succeed this time? I hope so, but i we do it will definitely be thanks to Google and Microsoft this time! Thanks for having the balls to deprecate native plugins!
As soon as there is an initial implementation of this technology in all major browsers, we will definitely be giving it a try! Stay tuned!
-
+
\ No newline at end of file
diff --git a/article/website-back/index.html b/article/website-back/index.html
index 33e70afd10..d1fa87ad8e 100644
--- a/article/website-back/index.html
+++ b/article/website-back/index.html
@@ -6,7 +6,7 @@
We are engine developers, not web developers, so securing hosted sites is definitely not our strong point.After being open sourced back in February, Godot development went under. We got a lot of enthusiasm and positive feedback back them, but also a lot of bug and usability reports. The engine was stable for us and the handful other people that was using it at the time but, when exposed to so many new developers, all the flaws, bugs and general usability issues and lack of polish that remained shined in the sunlight. For months, we put priority to this and worked hard to solve most of them without trying to draw much attention. Finally, this work has paid off and we are close to finally announce our first stable release, Godot 1.0!
The source code has been stable for the few weeks, so at this point we are working on the tiny details and issues that remain. Welcome back to the website and let’s hope we can celebrate soon!
-
+
\ No newline at end of file
diff --git a/article/websocket-ssl-testing-html5-export/index.html b/article/websocket-ssl-testing-html5-export/index.html
index 3a9584b3aa..af6aa77fb9 100644
--- a/article/websocket-ssl-testing-html5-export/index.html
+++ b/article/websocket-ssl-testing-html5-export/index.html
@@ -35,7 +35,7 @@
Check out the Crypto
class documentation for more details on RSA key and certificate generation.
Running HTML5 export Godot has a cool feature that allows users to export for some plaftorms in debug mode and run the exported game directly on a connected device with the press of a button, as long as at least one runnable export preset for that plafrom has been created.
HTML5 exports, used to have this feature too, opening the exported HTML in the default browser directly from the file system. Since most browsers now no longer allow making async requests from a page loaded from file://
, we added a minimal HTTP server to the editor to serve the exported HTML5 game.
This is also a very important step towards allowing users to profile HTML5 exported games via websocket connection. Stay tuned for more.
Reference work
-
+
\ No newline at end of file
diff --git a/article/websocket-updates-udp-multicast/index.html b/article/websocket-updates-udp-multicast/index.html
index 1eb6534f03..68ab46d18b 100644
--- a/article/websocket-updates-udp-multicast/index.html
+++ b/article/websocket-updates-udp-multicast/index.html
@@ -5,7 +5,7 @@
Fabio Alessandrelli 22 August 2019 This article is from August 2019 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
In effort to better Godot’s networking, two main changes were worked on in June and are now merged in the current master branch:
The third party library used to implement WebSocket in non web export has been changed. PacketPeerUDP
multicast support has been added.WebSocket update Third-party library change In an effort to make Godot’s WebSocket implementation more portable, maintainable and lightweight we recently swtiched from libwebsocket to wslay .
This new library allows us to use our own networking classes, making it more portable across different platforms, and solving some long lasting problems we had with the previous library, while also decreasing the overall code size.
More details are provided in the merged pull request .
If you are using WebSocket in your project please try out these changes and report any issue you might encounter.
WebSocket tutorial and demos A new WebSocket tutorial and three new WebSocket demos (minimal, chat, multiplayer) have been added to Godot’s documentation and demo projects .
UDP multicast Multicast support is finally coming for PacketPeerUDP
, this is useful for network discovery (e.g. finding LAN peers, servers, etc.). See the documentation for join_multicast_group
and leave_multicast_group
.
Along with this change, it is now also possible to get more information about the network interfaces of the machine on which Godot is running via the new IP.get_local_interfaces()
function.
-
+
\ No newline at end of file
diff --git a/article/welcoming-our-new-gold-sponsor-imagecampus/index.html b/article/welcoming-our-new-gold-sponsor-imagecampus/index.html
index 5f256782bc..621758d0ed 100644
--- a/article/welcoming-our-new-gold-sponsor-imagecampus/index.html
+++ b/article/welcoming-our-new-gold-sponsor-imagecampus/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 21 September 2018 This article is from September 2018 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Godot gets a new Gold sponsor! In this case, we are welcoming Image Campus , an education institution located in Buenos Aires, Argentina, which specializes in animation, digital art and videogames.
They are one of the pioneers in the region regarding videogame related careers and constantly supply a large portion of the Argentine industry (one of the largest in South America) with professionals, allowing it to keep growing at a rapid pace.
It personaly makes me happy to announce them as sponsors, and they always supported the project, helping organize workshops and talks in the city, and having incorporated Godot to their regular classes.
Remember that, you too can also contribute to aid Godot development by becoming our patron !
-
+
\ No newline at end of file
diff --git a/article/whats-missing-in-godot-for-aaa/index.html b/article/whats-missing-in-godot-for-aaa/index.html
index 913eda49bc..ee7795e7d4 100644
--- a/article/whats-missing-in-godot-for-aaa/index.html
+++ b/article/whats-missing-in-godot-for-aaa/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 16 January 2023 This article is from January 2023 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Godot 4.0 is coming out soon. It includes major improvements all across the board in features, performance, and usability. Still, one of the biggest questions the community has is: How does it compare with mainstream commercial offerings?
Godot 4.0 improvements Rendering Godot 4.0 has an entirely new rendering architecture, which is divided into modern and compatibility backends.
The modern one does rendering via RenderingDevice (which is implemented in drivers such as Vulkan, Direct3D 12, and more in the future). Additionally, the modern backend can implement rendering methods , such as forward clustered, mobile, and more in the future (such as deferred clustered, cinematic, etc.).
The compatibility backend is based on OpenGL ES 3.0 / OpenGL 3.3 / WebGL 2.0 and is intended to run on very old PC hardware as well as most older (still working) mobile phones.
Rendering is significantly more efficient in Godot 4.0, using data oriented algorithms to process the culling of objects and both secondary command buffers and automatic batching to efficiently submit the draw primitives.
The features offered are also a lot more reminiscent of AAA games, such as far more material options and advanced visual effects (including circle DOF , volumetric fog, AMD FSR, etc.). Additionally, Godot 4.0 supports advanced global illumination techniques such as lightmapping (including SH lightmapping), Voxel GI (which is fully real-time) and SDFGI (which is a one-click, open world GI solution). SSIL can be used to enhance realism even more.
Physics After an unsatisfactory attempt at using Bullet, Godot 4.0 returns to its own physics engine which, despite not being a high end physics engine like PhysX, aims to offer a lot more flexibility and “just works” capabilities to users.
Several features were added to Godot Physics since 3.x, such as soft bodies and cylinder shape support, as well as several optimizations to make use of multiple threads.
The custom physics engine still has a considerable amount of issues remaining but we are working hard to ensure it is in a decent state for shipping when 4.0 reaches stability. It will continue seeing improvements afterwards, during the following 4.x release cycles.
That said, Godot 4.0 introduces the ability to bind custom physics engines at runtime (without recompiling Godot) via GDExtension, so it’s perfectly possible for the community to integrate other engines such as PhysX, Jolt, or Box2D if needed.
Scripting Godot 4.0 has a new version of GDScript, which is far more powerful and overcomes most shortcomings found in 3.x. Majorly, the addition of lambdas, first class functions/signals and a much reduced reliance on string identifiers (which are prone to errors). It also has more useful built-in data types such as integer vectors.
Core engine The core engine has been significantly optimized, especially in the memory and data-oriented areas. Core and Variant have been massively cleaned up and made more extensible. Besides being faster and more modern, the core codebase is now significantly easier to maintain and extend.
GDExtension It is now possible to extend Godot and add features to it practically in any language and without recompiling the engine, thanks to the new GDExtension system. Aside from Godot C++ (which makes it easy to extend Godot as easy as with modules but allowing pluggable, dynamic add-ons), there are other bindings in the work such as Python, Rust, Go, etc.
A lot more Several other areas got improvements, like the editor (which has been vastly reworked), UI system, multiplayer, navigation, audio, animation, etc. This is a major release with major improvements all across the board.
So, what’s missing? Do not be mistaken: A lot is still missing from Godot in order to be used comfortably for large projects and teams. That said, what remains is now much less work than it was for Godot 3.x.
First of all, most of the new features still have significant bugs and performance problems that will not be solved in time for the upcoming 4.0 release (there is just too much new code that needs to be tested thoroughly).
These problems will be fixed across the 4.x point releases (which we are now intending to do more often, allowing several releases per year). It may be an extra year or even two until everything feels as solid and fast as everyone expects. See this article about our plans for 4.0 and beyond.
But other than that, there are still some fundamental aspects missing in Godot. The following is an incomplete list of the most important ones:
Streaming The traditional way to make games longer since the beginning of times is to divide them in stages. As soon as one stage is completed, it is unloaded while the new one is loaded.
Many games still use this approach nowadays (after all, if it’s not broken, don’t fix it) but, increasingly, game design has been moving from “individual stages” to “open” or “continuous” worlds where the boundaries between levels disappear. Creating games this way is, as a result, more challenging.
This is handled nowadays by a type of technology called “streaming”. It means that assets are pulled from disk on demand (loaded only at the time they are needed), rather than as a part of a larger stage. The most common types of streaming are:
Texture streaming : All textures are loaded in a tiny size by default. As textures get closer to the camera, higher resolution versions (or mip-maps) are streamed from disk. Textures which haven’t been used for some frames are freed instead. At any given time, the textures loaded (and their detail) closely reflect the place the player is in.Mesh streaming : Models are loaded as low detail (few vertices). As they gradually approach the camera, higher resolution versions are streamed from disk. Models that were not used (displayed) for a while are often just freed and will be loaded again when needed.Animation streaming : Modern games have long cinematics, which require a lot of animation data. Loading those animations requires a lot of memory and loading them takes a lot of time. To avoid this, animations are streamed by generally keeping the first second or two in memory and then new sections are loaded on demand as the animation plays. Godot 4.0 supports strong animation compression and animation pages, so most of the work is already done.Audio streaming : Similar to animation streaming, it requires storing the first second or two of audio and then streaming the rest directly from disk.Of the above, most are relatively straightforward to implement. The most complex is mesh streaming , which generally needs to be implemented together with a GPU culling strategy to ensure that very large amounts of models can be drawn at no CPU cost. This is more or less what techniques like Nanite do in Unreal, although Godot does not need to implement something that complex to be of use in most cases.
Streaming is the most important feature missing for managing large scenes or open worlds. Without it, Godot users are subject to long loading times (as every texture, model and animation has to load before anything is shown). There is also a risk of running out of memory if too many assets are loaded in parallel instead of streaming them.
Low level rendering access Despite the new renderer in Godot 4.0, there is no architecture that can be considered a one size fits all solution. Often developers need to implement rendering techniques, post processing effects, etc. that don’t come bundled with the engine.
The Godot philosophy has always been to cater to solving the most common use cases, and leave the door open for users to solve the less common on their own .
As such, this means that low level access to all the rendering server structures needs to be exposed via GDExtension. This will allow creating custom renderers or plugging custom code during the rendering steps, which is very useful for custom rendering techniques or post processes.
Scene job system Most of the work done for Godot 4.0 involved large feature and performance improvements to all the servers (rendering, physics, navigation, etc.). Servers are also now multithreaded and optimized. Even asset loading can now be done multithreaded (using multiple threads to load multiple assets).
Still, the scene system (which uses those servers), despite several usability improvements, has not seen significant optimization.
Scene nodes in Godot are mostly intended to carry complex high level behaviors (such as animation trees, kinematic characters, IK, skeletons, etc.) for limited amounts of objects (in the hundreds at most). Currently, no threading happens at all and only a single CPU core is used. This makes it very inefficient.
This makes it an ideal target for optimizing with multithreading. There is an initial proposal on threaded processing for scene nodes, which should give complex scenes a very significant performance boost.
Swarms Scenes, as mentioned before, are designed for complex high level behaviors in the hundreds of instances. Still, sometimes, some games require larger amounts of instances but less complex behaviors instead.
This is needed for some types of game mechanics such as:
Projectiles (bullet hell for example). Units in some types of strategy games with thousands of entitites roaming across a map. Cars/people in city simulators, where thousands appear all across the city. Sandbox style simulations. Complex custom particles that run on CPU. Flocks, swarms, mobs, debris, etc. More experienced programmers can use the servers directly or even plug C++ code to do the heavy lifting. ECS is often also proposed as a solution for this. Even GPU Compute (which is fully supported in Godot) can be easily used to solve this pattern.
But for the sake of keeping Godot accessible and easy to use, the idea is to create a swarm system that takes care of the rendering and physics in large amounts of those objects and the user only has to fill in the code logic.
Large team VCS support Godot’s text file formats are very friendly to version control. They only write what is needed (no redundant information), keep the ordering of sections and are simple enough to understand changes by just looking at the diff. Few other technologies work as well in this area.
Despite that, this is far from enough to enable large team collaboration. To enable this, Godot VCS support has to improve in several areas:
Better integration with the filesystem dock. Better real-time refresh of assets if they were modified externally (and checked out). Support for permissions and file locking: Git does not support this out of the box, but Git LFS and Perforce do. This feature is essential for large teams to avoid conflicts and keep files protected from unintended modifications (e.g. a team member modifying code or a scene they don’t own by mistake). Unless the support for this is solid, using Godot in large teams will remain difficult.
Commercial asset store While for very large studios this is not an area of interest, medium-sized studios still rely on significant amounts of assets and pre-made functionality. The Asset Library currently existing in Godot only links to open source resources (e.g. hosted on GitHub or GitLab) and is unable to be used for commercial assets.
For the Godot project, a commercial asset store would be a great way to add an extra source of income, but it was not possible given our legal status until recently. With the move to the Godot Foundation , this is a new possibility that opens up.
Is solving these problems enough for Godot to become a top AA / AAA game engine? The answer is “it depends”. Godot, at its core, is and will always be (by design) a very general purpose game engine. This mean that the tools provided, while certainly capable, are still game neutral. The goal for Godot is to provide a great set of building blocks that can be used and combined to create more specialized game functions and tools.
In contrast, other types of game engines already come with a lot of high level and ready to use components and behaviors.
I don’t mean to say that Godot should not support any of that in the future. If it does, though, it will most certainly be as official extensions.
So, what kind of features are we talking about? Well..
Game specific templates and behaviors As an example, Unreal comes with a player controller, environment controller, and a lot of tools to manage the game pacing and flow. These are most likely aimed at TPS/FPS games, which are the most popular game types made with the engine.
Some of these can be found as templates in Godot’s Asset Library but are nowhere close to that functionality. Eventually, official ones should be created that are more powerful and complete.
Visual scripting While Godot had visual scripting in the past, we found that the form we had implemented didn’t really prove adequate for the needs of the community, so it was discontinued .
What we realized is that visual scripting really shines when combined together with the premade behaviors mentioned in the previous section. Without a significant amount of high level behaviors available, visual scripting is cumbersome to use as it requires a lot of work to achieve simple things by itself.
All this means that, if we produce a visual scripting solution again, it needs to go hand in hand with high level behaviors and, as such, it should be part of a set of extensions to the engine.
Specialized artist UIs When doing tasks such as shader editing, VFX (particles) or animation, there is a large difference between Godot and engines such as Unreal.
The difference is not so much in features supported. In fact, the feature set is fairly similar! The main actual difference is in how they are presented to the user.
Godot is a very modular game engine: this means that you achieve results by combining what is there. As an example, editing a particle system in Godot means a lot of subsystems must be understood and used in combination:
GPUParticles node. GPUParticlesMaterial resource (or even an optional dedicated shader). Mesh resource for each pass of the particle. Mesh material resource for each surface of the mesh (or even an optional dedicated shader). As another example, the AnimationTree in Godot requires that AnimationNodes are laid out in a tree fashion. They can export parameters, sections can be reused (because they are resources), etc.
Or even more. Godot’s animation system is often praised because anything can be animated. Any property, other nodes, etc.
This makes Godot an extremely powerful engine that gives developers a lot of flexibility, but…
It also assumes that the user is knowledgable enough about Godot and all its inner workings in order to take advantage of it. To clarify, none of these systems are too technically complex and this is part of what makes Godot appealing and accessible, but it still requires a certain level of technical and engine knowledge.
In contrast, engines like Unreal have entirely dedicated and isolated interfaces for each of these tasks (materials, cinematic timeline, VFX, animation, etc.).
Sure, they are monolithic and hence less flexible, but for a large team with high amounts of specialization, an artist does not need to understand as much in-depth how the engine works in order to produce content with it.
This shows the fundamental difference of target user between engines. If Godot wants to appeal to larger studios, it needs to provide simpler and more monolithic interfaces for artists to be able to do their job without requiring significant time investment in learning the technology.
This could, again, be supplied via official add-ons and, like the sections above, would require a significant amount of research to understand how to build it, since without actual feedback from artists we would only be guessing what is needed. But the question here is, is it worth it?
So, are we not even close? While the goal of this article is to make clear how significant the work remaining is to make Godot an offering closer to the ones in the commercial segment, it is important to not forget one key detail:
Godot is Free and Open Source Software. And as such, it can be modified by anyone to fit any purpose.
Currently, many large studios have the ability to create their own in-house technology. Still, as hardware becomes more and more complex to develop for, they are giving up in favor of spending money on pre-existing commercial technology offerings.
Godot, on the other hand, serves as an excellent platform to build upon, as it solves the vast majority of problems already. As a result, more and more studios are using Godot as a base to derive their own technology from.
This is a win/win situation, as it allows them to keep their freedom to innovate and, at the same time, avoid paying expensive technology licensing costs.
Time will tell how Godot transitions from its current state to something more widely used by larger studios, but it will definitely need significantly more work from our side.
Future I hope that this write up made more evident why Godot is such a key technology for the future of the game industry. We will continue working hard to ensure that more and more individuals and companies find Godot useful! But we need your help to happen, so please consider donating to the project .
-
+
\ No newline at end of file
diff --git a/article/whats-new-in-csharp-for-godot-4-0/index.html b/article/whats-new-in-csharp-for-godot-4-0/index.html
index 65f3016eb1..913d72808c 100644
--- a/article/whats-new-in-csharp-for-godot-4-0/index.html
+++ b/article/whats-new-in-csharp-for-godot-4-0/index.html
@@ -14,7 +14,7 @@
Even though the parameter is optional, the method now has a different signature. Therefore libraries built against the previous version that invoke MyMethod
won’t be able to find it.
Godot implements various systems to preserve compatibility and allow for smooth transition, even when we have to change some fundamental things. You should expect future releases of Godot 4 to work with your Godot 4.0 project, but we still leave the room for the inevitable. In case of completely incompatible changes introduced in minor releases, we promise to provide clear migration instructions and possibly tools for automated conversion. In order to further minimize issues make sure your game project as well as the libraries it uses are all referencing the same GodotSharp version.
IDE support With the move to the .NET Core CLR runtime, Godot gained support to use the official C# debugger. This means IDEs that support C# and official C# extensions support debugging Godot projects out of the box. Although configuring your IDE may require a few more steps at the moment.
Other features of Godot’s IDE extensions for C#, such as our Roslyn completion providers, are planned to be moved out of the extensions and into NuGet packages so that all IDEs can benefit without requiring a dedicated extension.
The Configuring an external editor section of the C# basics documentation page has yet to be updated to explain how to set up your editor for Godot 4.0. Stay tuned for an updated version.
Relevant links Make GodotCompletionProviders work via NuGet (GH-18 ). Future Some features didn’t make it in time for Godot 4.0, but are already on our roadmap for a future release (and some are already in the works).
Global classes Global classes, also known as named scripts, are classes registered in the editor so they can be used more conveniently. These classes appear in the Add Node and Create Resource dialogs. GDScript supports this feature with the class_name
syntax.
We tried, but ultimately failed, to bring this feature to C# in time for 4.0. Luckily, there’s already a PR open, so it’s very likely it is going to be ready for the next minor release, Godot 4.1.
Relevant links Add first-class custom resource support (GH-18 ). Allow exporting custom resources from/to GDScript, VisualScript, C#, and PluginScript (GH-48201 ). Script-class-aware Inspector & related controls (GH-62413 ). Enable QuickOpen to see scripted resources (GH-62417 ). Add C# resource export (GH-72619 ). Mobile and web support We aim to support C# on all the platforms that Godot is available on. Unfortunately, we were unable to implement support for mobile and web platforms for 4.0. These platforms gained support upstream somewhat recently so we didn’t have much time to work on it. The new workloads in .NET 6 should allow us to support the mobile and web platforms really soon, so keep an eye out for that.
Relevant links Full AOT and trimming support Support for these features can greatly reduce binary size and enable further performance optimizations. In order to support them, we need to ensure that our libraries are prepared. Dynamically accessed types can’t be trimmed, so we need to avoid reflection as much as possible.
Some target platforms don’t support JIT, so we are definitely looking into supporting AOT. We’ll be working on this as we add support for more platforms in future 4.x releases.
Relevant links GDExtension support The ability to create GDExtensions using C# will enable new and powerful workflows. This would allow us to avoid the limitations of a scripting language implementation, such as relying on file paths to reference C# classes. Users are going to be able to implement C# types that can be registered in Godot’s internal type database, ClassDB, and that would behave as built-in Nodes and Resources.
GDExtension is still very new to the engine, and is subject to change. It also has some limitations that would result in UX regressions, if C# moved away from the scripting language implementation. But it also has the potential to reduce some pain points that users have had in the past. In Godot 4.0, C# is still implemented as a scripting language, but we are planning to add support for GDExtension creation using C#. We will be keeping the scripting language implementation for your regular game scripting needs.
Consuming APIs provided by a GDExtension is also currently unsupported. We’ll keep working on bridging the gap between GDExtension and C# in future 4.x releases.
Relevant links Improve source generators extensibility As mentioned throughout this article, several areas can benefit from allowing users to create their own third-party source generators that can extend what’s currently available. For example, allowing our source generators to be affected by custom user-defined attributes.
This is tricky to get right, but we’ll be exploring some ideas in future 4.x releases to see how we can provide some extensibility without requiring users to disable and re-implement all of our source generators.
Editor unification Just like Godot 3 before it, Godot 4.0 is going to come with two versions of the editor, one “standard” and one with extra support for C# and .NET. However, the plan for 4.x is to provide one unified editor, that support everything the .NET build currently supports. If you’re a GDScript user, this doesn’t come at any cost for you. But for maintainers and C# developers it greatly simplifies things and allows for more efficient editor development and testing. To keep things slim and flexible, components required to support .NET projects would be downloaded on-demand when the user needs them.
Relevant links From embedding Mono to Godot as a library and the future (GH-2333 ). Godot as a library The concept of Godot as a library and C# being the entry point is something that a lot of users seem to be interested in. We think this could bring many benefits to C# users, it would make it easier to support all the platforms where .NET is available, and stay up-to-date with newer .NET versions.
We started exploring this area in 4.0, but it still requires more investigation and work. It’s unlikely to be finished any time soon but we’ll keep working on it in the future.
Relevant links From embedding Mono to Godot as a library and the future (GH-2333 ). As you can see, a lot of work has been done, and more work is in the pipeline. We are constantly looking into more ways to improve performance and usability of the API, and we keep fixing all the bugs that you can find. We are looking forward to see what you think of the .NET module in Godot 4.0. Don’t hesitate to reach out with your feedback! 🙂
-
+
\ No newline at end of file
diff --git a/article/why-does-godot-use-servers-and-rids/index.html b/article/why-does-godot-use-servers-and-rids/index.html
index 87e9159bcc..7d90aab696 100644
--- a/article/why-does-godot-use-servers-and-rids/index.html
+++ b/article/why-does-godot-use-servers-and-rids/index.html
@@ -6,7 +6,7 @@
How is this achieved? Rendering, while mostly a sequential process (GPUs are sequential), can be parallelized in a few places, like frustum culling and (in modern APIs such as Vulkan, Metal or DirectX12) creation of command lists.For Physics, it’s a bit more difficult. Physics engines divide their work per frame in the following stages:
Force Integration: Compute gravity and external forces and apply them to velocity Broad Phase: Finding pairs of close objects Near Phase: Generating collision information of overlapping objects Solver: Iterative or LCP approximation to collision resolution Velocity Integration: Move the objects Of those, mainly the near phase and the solver steps can be highly parallelized. Physics engines do this via the creation of islands , which are standalone group of objects that don’t interact with other groups. This allows to process them in parallel.
If we put all together, rendering a frame with multiple threads, splitting in jobs, becomes something like this:
A different parallelism Implementing a job system in Godot was too challenging, unfortunately. While for high-end game engines this makes sense, usability would end up severely affected. As Godot aims to be an easy to use engine, users would have too many challenges with a system like this:
It would be too easy for users to step on a piece of code that is currently being modified in a separate thread, resulting in crashes or undefined behaviors. To avoid this, locking would have to be put all over the place. This would make code more complex, and likely still impact performance due to waiting for mutexes or semaphores. Sync points would help, but it offloads more complexity to the user. For custom engines in large games this can be a benefit, but for us it impacts usability. All this led to a question: How can we make Godot multi-threaded but keep it easy to use?
The answer to this puzzle lies in understanding the following facts:
Logic sets information into Physics, but it does not need to retrieve data from it. Both Logic and Physics set information into Rendering. Neither need to retrieve data. Rendering alone has all the information it needs to display a frame and no one needs to wait for it. Physics needs to set back information (bodies that moved and collisions) into the logic layer, but this can be done anytime before the next frame. If we put everything together, it becomes obvious that all 3 tasks can run in parallel:
Physics syncs information from the previous fixed frame to Logic Logic runs the fixed step, syncs back with Physics and then goes on to do the regular step while Physics starts working. Physics pushes data to Rendering. Rendering completes whathever it was doing from the previous frame, syncs (swaps buffers), then takes the info from Logic and starts working on the new frame. This results in multi-threading, in a way that is transparent to the programmer:
Basically, the concept of “frame time” (doing everything in less that 1/60 seconds), no longer exists with this approach. Logic, Physics and Rendering have the whole frame time for themselves, and they don’t run in sync (i.e. Rendering will process the frame “later”, and both Logic and Physics will process their frame at the same time and only spend a bit syncing).
This sounds great in theory, but in implementation it’s chaos. It means both Physics and Rendering must receive commands, and that commands need to be buffered somehow. With traditional OOP and C++ this is a recipe for spaghetti code. Passing around objects that may not execute functions when you call them is weird.
Servers To make this easier, we came up with the concept of Servers . They are called like this because of their requirements:
An entity that contains all the information and state, does the processing and returns the results. It runs in parallel, it could be in the same device or even in a remote device. The user has no direct access to it. All communication is done via commands sent on a single channel. It’s clearly a server pattern!
As this is a command-oriented API, it is exposed via a single class representing the Server. Remote objects are represented with RIDs.
Servers work very well in Godot, and even allow for some extra goodies:
Background loading and information processing on threads works great (e.g. generating terrain), because each thread can create content, then register it via a single channel. It’s easy to tell when something has changed by just checking the command data. This allows Godot behaviours such as not redrawing the editor screen if nothing changed. Switching between single and multi-threaded server is easy, as it just requires an adapter server that provides the command buffering. Future For Godot 3.0 we are working on improving some aspect of servers. The main one is optimizing RIDs, which will now also cache an opaque pointer to the objects used. Before this, objects had to be looked up internally in a hash table.
The advantage of this is higher performance, while the obvious drawback is that the game can crash on release and less information will be provided. To avoid this, always check the errors reported in debug builds!
-
+
\ No newline at end of file
diff --git a/article/why-isnt-godot-ecs-based-game-engine/index.html b/article/why-isnt-godot-ecs-based-game-engine/index.html
index 5f4297dd21..6124834634 100644
--- a/article/why-isnt-godot-ecs-based-game-engine/index.html
+++ b/article/why-isnt-godot-ecs-based-game-engine/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 26 February 2021 This article is from February 2021 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
About The topic of why Godot does not utilize ECS comes up often, so this article will explain the design decisions behind that, as well as shed some light on how Godot works.
Note : In hopes to avoid misunderstandings, I did changes to the article to better stress that this is not an inheritance vs composition or anti-ECS article to spark a flame-war. It only explains the reasoning for which Godot went with its current architecture. I don’t believe there is an universally better way to do things, so if you prefer to use other approaches or architectures that work better for you, then that’s great. Read this if you are interested to understand the reasoning behind Godot’s architecture, not to understand if one approach is better over the other.
What is ECS? ECS is a design pattern commonly used in video games (although not very often used in the rest of the software industry) which consists of having a base Entity (a container object) and Components that can be added upon it. Components provide data and the means to interact with the whole world. Finally, Systems work independently and do actions on every similar component.
This design became common in game engines and libraries in the early 2010s. The main appeal (besides architecture) is the fact that component data can be placed in contiguous memory, improving cache access. This is a common form of data-oriented optimization.
Architecturally wise, ECS aims to replace inheritance , by favouring composition, similar to how interfaces or multiple inheritance works in OOP . The key advantage in ECS is that components are dynamic (can be added or removed in run-time).
Why does Godot not use ECS? Godot uses more traditional OOP by providing Nodes , that contain both data and logic . It also makes heavy use of inheritance . It still does composition, but at a higher level (the nodes you compose are generally higher level than components in traditional ECS).
As an example of the difference, in typical ECS, a Button entity can have components like:
Transform Renderer EventHandler Button Behavior To make it simpler and avoid problems, some implementations force some components to exist when others are added.
In Godot, a Button has the full inheritance chain implicit:
Node -> CanvasItem -> Control -> Button -> Behavior Script
A more complex example can be a rigid body with a sprite attached, in typical ECS, this is found as an entity containing:
Transform RigidBody Collider Sprite In Godot, however, this is more complex. You need 3 nodes and hierarchy:
RigidBody (Node -> Node2D -> PhysicsBody2D -> RigidBody2D)
Sprite (Node -> Node2D -> Sprite)
CollisionShape (Node -> Node2D -> CollisionShape)
So, at first it seems that the approach in Godot is more wasteful, but is it really?
Node is lightweight, similar to a component. Node2D contains the 2D transform, similar to Transform component in ECS. Three nodes are required whereas one component suffices in ECS. This seems wasteful, but is it really? In the entity, the collider and the sprite will most likely not be used centred and will still require offset and rotation properties, so in the end not much changes. In Godot adding more of these (multiple sprites and colliders) is kind of free, the transform offset happens automatically. In ECS, special logic needs to exist to take care of this. As can be seen, inheritance and composition can live together and make sense in the context of Godot.
The main difference can be summed up as:
Godot does composition at a higher level than in a traditional ECS.
This has two fundamental differences in both architecture and performance.
Architecture Architecture wise, this leads to significant changes over how ECS works:
Inheritance is more explicit As inheritance is preferred (for what would be implicit relationships between components in ECS), these relationships are now explicit in the inheritance chain.
This makes it very easy to understand (to Godot users) how the scene nodes are organized and what they can do, by just looking at the inheritance tree.
Scenes are more explicit As composition happens at a higher level (nodes), it’s also very easy for Godot users to understand what a scene actually does by just looking at the scene tree:
Re-usability improves Thanks to everything being nodes (and not entities with components) it becomes easier to reuse and combine everything as much as possible. This is why Godot does not have the concept or distinction between prefabs and scenes.
Additionally, by having higher level nodes, Godot does not have the concept of “scene settings”, as these is done with nodes too.
The result is a much greater ability to do composition than in a traditional ECS approach. What typically is:
Components -> Entity -> Prefab -> Scene -> World
Godot just has nodes, and a scene is simply a bunch of nodes forming a tree, which are saved in a file. Scenes can be instantiated and inherited with a higher flexibility than in most other tools.
Optimization Leaving components aside, Godot has no differentiation between Data and System, choosing to bundle everything together in a more traditional OOP fashion. Nodes contain their own logic.
Architectural preference aside, this may seem like a problem on the optimization side. One of the biggest advantages of ECS is the Systems (data-oriented) part, which allows running through a lot of similar component’s data organized in linear memory. This brings huge performance improvements over the way Godot works with nodes.
The key point here is, again, to understand that scenes and nodes in Godot operate at a higher level than in a traditional ECS implementation.
This can be understood by examining the Engine and Game Logic parts separately:
Engine Godot uses plenty of data-oriented optimizations for physics, rendering, audio, etc. They are, however, separate systems and completely isolated.
Most (if not all) technologies that utilize ECS do it at the core engine level, by serving as the base architecture and building everything else (physics, rendering, audio, etc.) over it.
Godot instead, those subsystems are all separate and isolated (and fit inside of Servers ). I find this makes code simpler and easier to maintain and optimize (a testament to this is how tiny Godot’s codebase is compared to other game engines, while providing similar levels of functionality).
The scene system in Godot (nodes) is generally very high level when compared to a traditional ECS system. Most of what goes on happens via signal callbacks (as in, objects collided, something needs to be repainted, button was pressed, etc.). The situations where something needs to be processed every frame in Godot from the user side are very rare, as the engine will manage this internally, taking the complexity away from the user.
To put it simply, nodes are just interfaces to the actual data being processed inside servers, while in ECS the actual entities are what gets processed by the systems.
In other words, Godot as an engine tries to take the burden of processing away from the user, and instead places the focus on deciding what to do in case of an event. This ensures users have to optimize less in order to write a lot of the game code, and is part of the vision that Godot tries to convey on what should constitute an easy to use game engine .
Game logic Still (while, by far, not the majority) some types of games will see a performance benefit when using ECS in the game logic side.
These are generally games that need to process game logic on dozens of thousands of objects, where data-oriented optimizations become a must, as the amount of pages moved into CPU cache increases by several orders of magnitude, severely affecting performance (and battery usage on mobile devices).
Again, I will stress the point that, while this use case is rare (in contrast, most games are generally just in the hundreds of objects at most, for which the memory access frequency is far more than good enough without cache optimizations), games that require cache optimizations are real and do exist.
Examples of these types of games are:
City builders (lots of things going on). Sandboxes (lots of tiny things need processing every frame). Some strategy games (while not the majority, some can use thousands or dozen of thousands of game units at the same time). Other AAA games with lots of content going on. So, does this mean these types of games can’t be made with Godot?
The answer is that, you can still do anything you want, but you need to do it in a different way.
Do clever optimizations Before going head-on into brute performance, many times you can still rely on clever optimizations. Ever wondered how SimCity could run on a Commodore 64? It did so by alternating which tiles were processed every frame, so it never needed to process thousands of them at the same time (which would be impossible on a 6502 CPU).
Optimizations can vary from not processing everything in all frames, to giving more priority to processing whatever is visible (or close to the camera). Often, these optimizations will reduce the amount of objects that need to be processed by orders of magnitude, and still perform better than going full data-oriented.
Godot provides nodes such as VisibilityEnabler
to aid you on this, and upcoming Godot 4.0 has more fine grained control on disabling sections of a scene tree.
Still, this may not be enough for your game, or too much of a hassle. In this case, you may need to simply skip the scene:
Using Servers directly As mentioned before, Godot puts most of the high performance/low level parts of the engine in Servers . The APIs to servers are fully exposed in and allow you to control the whole engine at the very low level.
Most of the time, even using the servers from GDScript, C# or C++ via GDNative (or modules) is more than enough for the type of games mentioned above. While they might require high performance code for the core game loop, the logic is rarely so complex that a full-blown framework is required for it.
This is similar to just writing the game yourself in SDL/OpenGL, except the rest of the engine is still available for everything else that is not specialized game code (like UI, IO, saving, networking, etc. In other words, the remaining 90% of the game).
Using Compute Compute (GPGPU) is nearly universal nowadays (supported on desktop and mobile) and allows for huge flexibility and performance optimizations. Godot 4.0 will include easy to use Compute support for highly parallel tasks.
Using ECS Nothing prevents you to use an ECS solution in Godot. In fact, I strongly suggest to check Andrea Catania’s fantastic work on Godex , which aims to bring a high performance ECS pluggable implementation.
Future For future versions of Godot we are evaluating (optionally for when you actually need it) cache friendly ways to process similar nodes, separating data and logic in a way similar to how ECS does Systems, but adapted to how Godot works. After all, these type of optimizations are not exclusive to ECS.
Summing up While architectures and design patterns that aim to solve several problems at once are very tempting to programmers, Godot is developed with a very pragmatic approach.
While it is true that ECS brings advantages to the table, the cases where it can objectively prove to be a benefit towards Godot’s goals are very limited, so it is very hard (for us at least) to justify an architecture change, given they are the exception and not the common rule (and often optimization can be achieved by other, simpler means).
Godot has chosen the path of being user friendly and scalable above all, and we understand that for most cases, due to how the engine is designed, the cases where extreme game logic performance is needed are much lower (as the engine takes takes care of most of the heavy lifting). Still if this need arises, Godot is designed to give you answers on that front, and more options will keep coming over time.
-
+
\ No newline at end of file
diff --git a/article/why-we-broke-your-pr/index.html b/article/why-we-broke-your-pr/index.html
index ced32719fc..e06bfd475e 100644
--- a/article/why-we-broke-your-pr/index.html
+++ b/article/why-we-broke-your-pr/index.html
@@ -17,7 +17,7 @@
The .write proxy will work for read-only access as well, however a copy may be made. From now on it would be better to have a quick think about whether or not the use of the variable you’re reading is constant or not. Particularly in loops. Look at line 220 of visual_server_canvas.cpp for instance . Using .write in this case would’ve worked but wouldn’t have actually saved a CoW operation.
I’d also like to ask all PR reviewers to please be mindful of the correct use of .write from now on.
-
+
\ No newline at end of file
diff --git a/article/will-your-contribution-be-merged-heres-how-tell/index.html b/article/will-your-contribution-be-merged-heres-how-tell/index.html
index 7d3453f1f6..2fbeea27d1 100644
--- a/article/will-your-contribution-be-merged-heres-how-tell/index.html
+++ b/article/will-your-contribution-be-merged-heres-how-tell/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 19 November 2018 This article is from November 2018 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
The pull request workflow is great, because it allows proposing changes to the codebase in a way where they can be evaluated, reviewed (with feedback) and eventually merged or rejected. Despite this, a large amount of pull requests (PRs) get rejected for reasons that are often unclear to new contributors.
To avoid unnecesary work, this short article has some suggestions on what is desired and what is not, and the general rules for accepting or rejecting pull requests.
Ask first Ask about what you want to do, by either opening an issue , or asking in the Godot contributors chat platform . This will defintely save you time and effort, as other contributors will better guide you on whether your proposal is desired or not (or what needs to be changed so it would be).
We refuse by default Contributions are considered rejected until proven useful. There are no hypotheticals here and we never accept something because it might be useful . Functionality is merged only when there is a valid and proven real-life use case for it. This means that someone (and especially more than one user) needs this new functionality for their actual projects, in order to save considerable amounts of time or just because it’s otherwise impossible to advance development without it.
Again, hypothetical use cases are ignored most of the time, whereas real projects being worked on (and their needs) take the priority.
This also means that it’s your resonsibility (or that of fellow interested users) to demonstrate the use cases and need for a specific feature. Discuss it beforehand as mentioned, and add some details in your pull request (or the affiliated issue) about what this proposal aims to solve. A never-discussed, no-comment PR with a terse “Add feature X” 500 LOC commit will likely produce a deep sigh among PR reviewers, more than anticipation for a potential great feature.
Bloat accumulates quickly Please understand that we need to keep the engine size as small as possible. This ensures download on Steam, Mobile stores or HTML5 are as smooth as possible. Adding features that will not be used (or seldom used when then can be easily worked around) just adds more weight to the engine.
Even if a feature is small (say, a few kilobytes), we get several requests of them per week. If we were to accept/merge all of them as a general rule, Godot would grow several megabytes bigger over time.
And even if size was not a problem, more code means more difficulty for potential contributors and users to understand how the engine works, as well as more surface area for potential bugs.
We really do our best effort to keep it simple and small, help us with this!
General logic The following diagram shows the logic steps used to evaluate pull requests. If you can ask yourself the same questions, everyone’s time will be saved.
This can seem a bit confusing at first, so let’s go over it question by question:
Do you need it? Just adding a feature because it seems like it would be a cool addition does not cut it (feel free to ask first, of course). As mentioned before, we are only interested in real-life use cases . This needs to be for a project being worked on (or for types of projects that are not possible without this feature).
Does this feature cover a common use case? Is this something you need to use often for your project? Will other users also find it often useful? If a feature covers a common use case and it’s needed very often, then it may be worth considering for addition.
Even if it’s not needed often but implementing it from the user’s side is difficult, then it may also be worth considering for addition.
This is why the following question is also important..
Can it be worked around with a few lines of code? If you don’t need a feature that often (say, just a couple of times) and working it around can be easily done by writing a small amount of scripting code, then there is no merit in integrating this as a new feature. It’s better that this complexity goes on your side rather than ours.
Can you program C++? It should be obvious from this article, but remember that, in a community-driven FOSS project like Godot, no one is obliged to do anything for anyone. If you can work on something yourself, feel free to do it and propose it. We will lend you a hand if you need!
-
+
\ No newline at end of file
diff --git a/article/winter-holiday-godot-game-jam/index.html b/article/winter-holiday-godot-game-jam/index.html
index 010a4869fb..be96547617 100644
--- a/article/winter-holiday-godot-game-jam/index.html
+++ b/article/winter-holiday-godot-game-jam/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 9 December 2014 This article is from December 2014 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
GamingPenguin from the forum is organizing a Winter Holidays Godot Game Jam! (Summer Holidays Game Jam for us in the southern hemisphere).
The rules seem to be (copied from the forum):
The game must be made with Godot The game should have a Winter Holiday theme You must enter using the entry thread here: (Coming Soon) You must open source the full project, code and assets, Binaries for Windows, Mac and Linux are not required but would be very welcome No Pornographic or offensive games Games can be worked on by multiple people One person can submit more than one game This can be a nice chance to use or learn Godot for a little project and get to know the community better, as well as learning from the other projects.
The forum url is: http://www.godotengine.org/forum/viewtopic.php?f=7&t=1172
Please spread!
-
+
\ No newline at end of file
diff --git a/article/x11-display-server-progress-report/index.html b/article/x11-display-server-progress-report/index.html
index 926010700c..131b81ea34 100644
--- a/article/x11-display-server-progress-report/index.html
+++ b/article/x11-display-server-progress-report/index.html
@@ -68,7 +68,7 @@
Because this protocol requires asynchronous communication to receive each chunk of data and send notifications for the next one, I’ve implemented it in a similar way as for SAVE_TARGETS
, with a blocking call that handles all events or aborts in the case of timeout.
More details about INCR
protocol in the X11 documentation here .
Pull Request: GH-42676
What next? After completing this work package, most regressions related to X11 should be fixed now for Godot 4, even if there will still be some maintenance to do on all platforms before the release.
Xlib or XCB: While working on the X11 Display Server, I’ve chosen to focus on fixing specific issues in the current system with minimal refactoring, but using XCB to modernize the implementation is currently in discussion among contributors.
Wayland: Support for Wayland will be added to Godot in the future. It will be done as a separate Display Server implementation.
I hope this post put some light on the way Godot works under the hood in this specific area, for current and future contributors. See you around!
Credits illustration: Tux logo by rafael3334 (modified from source )
-
+
\ No newline at end of file
diff --git a/assets/css/priorities/base.css b/assets/css/priorities/base.css
index 7af324e235..4fe8863788 100644
--- a/assets/css/priorities/base.css
+++ b/assets/css/priorities/base.css
@@ -1 +1 @@
-@import "./details.css";ul{line-height:unset;padding-left:unset}:root{scroll-behavior:smooth;scroll-padding-top:1.25rem}@media(prefers-reduced-motion){:root{scroll-behavior:auto}}.priorities-container{font-family:montserrat,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,sans-serif;background-color:var(--card-background-color);overflow:visible;position:relative}.priorities-container>.priorities-intro{background:linear-gradient(to right,rgba(255,255,255,.866667),rgba(255,255,255,.866667)),linear-gradient(to bottom,transparent 25%,#fff 100%),url(/storage/priorities/images/page/map2-2048.webp);background-color:#000;background-size:cover,cover,cover;background-repeat:repeat,repeat,repeat}@media screen and (min-resolution:2x){.priorities-container>.priorities-intro{background:linear-gradient(to right,rgba(255,255,255,.866667),rgba(255,255,255,.866667)),linear-gradient(to bottom,transparent 25%,#fff 100%),url(/storage/priorities/images/page/map2-4096.webp);background-color:#000;background-size:cover,cover,cover;background-repeat:repeat,repeat,repeat}}@media screen and (prefers-color-scheme:dark){.priorities-container>.priorities-intro{background:linear-gradient(to right,rgba(51,54,57,.866667),rgba(51,54,57,.866667)),linear-gradient(to bottom,transparent 25%,#333639 100%),url(/storage/priorities/images/page/map2-2048.webp);background-color:#000;background-size:cover,cover,cover;background-repeat:repeat,repeat,repeat}}@media screen and (prefers-color-scheme:dark) and (min-resolution:2x){.priorities-container>.priorities-intro{background:linear-gradient(to right,rgba(51,54,57,.866667),rgba(51,54,57,.866667)),linear-gradient(to bottom,transparent 25%,#333639 100%),url(/storage/priorities/images/page/map2-4096.webp);background-color:#000;background-size:cover,cover,cover;background-repeat:repeat,repeat,repeat}}.priorities-container>.priorities-intro>.banner .container{padding-top:7rem;padding-bottom:7rem}.priorities-container>.priorities-intro>.banner .container .banner-last-updated .label .last-updated{display:inline}.priorities-container>.priorities-intro>.banner .container .banner-last-updated .label .recently-updated{display:none;font-weight:600;color:#f35774}.priorities-container>.priorities-intro>.banner .container .banner-last-updated.recent .label .last-updated{display:none}.priorities-container>.priorities-intro>.banner .container .banner-last-updated.recent .label .recently-updated{display:inline}.priorities-container>.priorities-intro>.intro .wishlist-btns{display:grid;grid-template-columns:repeat(3,1fr);grid-template-areas:"donate howto contact";gap:1.25rem;margin:3.75rem 0;font-weight:600}@media screen and (max-width:700px){.priorities-container>.priorities-intro>.intro .wishlist-btns{grid-template-columns:repeat(2,1fr);grid-template-areas:"donate donate" "howto contact"}}@media screen and (max-width:450px){.priorities-container>.priorities-intro>.intro .wishlist-btns{grid-template-columns:repeat(1,1fr);grid-template-areas:"donate" "howto" "contact"}}.priorities-container>.priorities-intro>.intro .wishlist-btns .donate{grid-area:donate}.priorities-container>.priorities-intro>.intro .wishlist-btns .howto{grid-area:howto}.priorities-container>.priorities-intro>.intro .wishlist-btns .contact{grid-area:contact}.priorities-container>.priorities-intro>.intro .wishlist-btns .wishlist-btn-anchor{color:#f35774;text-decoration:none}.priorities-container>.priorities-intro>.intro .wishlist-btns .wishlist-btn-anchor:hover{text-decoration:underline}.priorities-container>.priorities-intro>.intro .wishlist-btns .wishlist-btn-text{display:flex;justify-content:center;align-items:center}.priorities-container>.navigation{top:0;z-index:1000;background-color:#fff;margin:1.25rem 0;user-select:none}@media screen and (prefers-color-scheme:dark){.priorities-container>.navigation{background-color:#333639}}.priorities-container>.navigation li{list-style:none;margin-bottom:0}.priorities-container>.navigation .navigation-list-container{position:relative}.priorities-container>.navigation .navigation-list-container .navigation-list{margin:0;display:flex;flex-direction:row;justify-content:space-between;gap:1.25rem}@media screen and (max-width:700px){.priorities-container>.navigation .navigation-list-container .navigation-list{display:grid;grid-template-columns:1fr 1fr}}@media screen and (max-width:450px){.priorities-container>.navigation .navigation-list-container .navigation-list{grid-template-columns:1fr}}.priorities-container>.navigation .navigation-list-container .navigation-list>li{list-style:none;flex-grow:1;width:100%;margin:0}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary{display:flex;flex-direction:row;background-color:var(--background-color);border-radius:15px;width:calc(100% - 2.5rem);height:100%;padding:1.25rem;cursor:pointer}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary:hover{filter:brightness(117.5%)}@media screen and (prefers-color-scheme:light){.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary:hover{filter:brightness(105%)}}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary::-webkit-details-marker{display:none}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary .label{width:100%;flex-grow:1}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary .toggle{flex-grow:0}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary .toggle .more{display:block}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary .toggle .less{display:none}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation][open]>summary .toggle .more{display:none}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation][open]>summary .toggle .less{display:block}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation] .navigation-sublist{display:flex;flex-direction:column;gap:.3125rem;margin-top:.625rem;margin-left:1.25rem}.priorities-container>.priorities{display:flex;flex-direction:column;gap:2.5rem}.priorities-container>.priorities .category>.container>.category-details>.category-summary{display:grid;grid-template-areas:"title anchor . icon";grid-template-columns:auto min-content 1fr min-content;gap:1.25rem;align-items:baseline;border-radius:15px;padding:1rem 2rem;letter-spacing:-2px;font-weight:600;color:#fff;cursor:pointer;line-height:3rem;list-style:none}.priorities-container>.priorities .category>.container>.category-details>.category-summary::-webkit-details-marker{display:none}.priorities-container>.priorities .category.level-1>.container>.category-details>.category-summary{font-size:3rem;background-color:var(--primary-color)}.priorities-container>.priorities .category.level-2>.container>.category-details>.category-summary{font-size:2.125rem;background-color:var(--background-color)}@media screen and (prefers-color-scheme:light){.priorities-container>.priorities .category.level-2>.container>.category-details>.category-summary:hover{filter:brightness(105%)}}.priorities-container>.priorities .category>.container>.category-details>.category-summary:hover{filter:brightness(117.5%)}.priorities-container>.priorities .category>.container>.category-details>.category-summary>.category-anchor-container{grid-area:anchor;display:flex;flex-direction:column;align-items:center;justify-content:center}.priorities-container>.priorities .category>.container>.category-details>.category-summary>.category-anchor-container>.category-anchor{display:block;position:relative;text-decoration:none;color:#fff;opacity:0}.priorities-container>.priorities .category>.container>.category-details>.category-summary:hover>.category-anchor-container>.category-anchor,.priorities-container>.priorities .category>.container>.category-details>.category-summary>.category-anchor-container>.category-anchor:focus{opacity:1}.priorities-container>.priorities .category>.container>.category-details>.category-summary>.category-anchor-container>.category-anchor .anchor-icon{display:inline-block;mask-image:url(/assets/icons/link.svg);mask-size:100% 100%;mask-repeat:no-repeat;height:.8rem;width:.8rem;min-height:24px;min-width:24px;background-color:#fff}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-title{grid-area:title;position:relative;margin-bottom:0}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-title .category-title-text{flex-grow:1;width:100%;color:#fff}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-title .category-title-text>p{margin:0}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-title .recent-icon{display:block;position:absolute;width:.75rem;height:.75rem;border-radius:.75rem;top:.1875rem;left:-.5625rem;background-color:#f35774}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-accordion-toggle{grid-area:icon}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-accordion-toggle .more{display:block}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-accordion-toggle .less{display:none}.priorities-container>.priorities .category>.container>.category-details[open]>.category-summary .category-accordion-toggle .more{display:none}.priorities-container>.priorities .category>.container>.category-details[open]>.category-summary .category-accordion-toggle .less{display:block}.priorities-container>.priorities .category>.container .category-content .element-list{display:grid;grid-template-columns:1fr;padding-left:0;margin-bottom:0}@media screen and (min-width:1200px){.priorities-container>.priorities .category>.container .category-content .element-list{grid-template-columns:1fr 1fr;gap:1.25rem}}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item{list-style:none;margin-bottom:0;border-top:2px solid var(--primary-color)}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item:nth-of-type(1){border-top:0}@media screen and (min-width:1200px){.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item:nth-of-type(2){border-top:0}}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element{display:grid;grid-template-areas:"main";grid-template-columns:auto;grid-template-rows:auto;gap:1.25rem;padding:1.25rem 0}@media screen and (max-width:700px){.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element{grid-template-areas:"main";grid-template-columns:auto;grid-template-rows:auto}}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main{grid-area:main;height:100%}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title{display:grid;grid-template-areas:"text . toggle";grid-template-columns:auto 1fr min-content;align-items:stretch;gap:1.25rem;cursor:pointer;border-radius:15px;color:var(--base-color-text);margin-top:-1.25rem;padding:1.25rem;list-style:none}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title:hover{background-color:var(--background-color);filter:brightness(117.5%)}@media screen and (prefers-color-scheme:light){.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title:hover{filter:brightness(105%)}}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title::-webkit-details-marker{display:none}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .text{grid-area:text;display:flex;flex-direction:row;align-items:center;gap:.5rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-title-container{display:inline-block;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-title-container .element-title-anchor{flex-grow:0;display:flex;flex-direction:row;align-items:center;text-decoration:none;opacity:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title:hover .element-title-container .element-title-anchor,.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-title-container .element-title-anchor:focus{opacity:1}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-title-container .element-title-anchor .anchor-icon{display:inline-block;mask-image:url(/assets/icons/link.svg);mask-size:100% 100%;mask-repeat:no-repeat;height:.8rem;width:.8rem;min-height:24px;min-width:24px;background-color:var(--base-color-text)}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-title-container .element-title-text{flex-grow:1;width:100%;display:flex;flex-direction:row;align-items:center;font-weight:700}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-title-container .element-title-text>p{margin:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-accordion-toggle{grid-area:toggle;flex-grow:0;display:flex;flex-direction:row;align-items:center}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-accordion-toggle .less{display:none}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-accordion-toggle .more{display:block}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main[open] .element-title .element-accordion-toggle .less{display:block}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main[open] .element-title .element-accordion-toggle .more{display:none}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content{padding:0 1.25rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-description{font-size:1rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details{display:flex;flex-direction:column;gap:1.25rem;font-size:.9rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block{padding:1rem 0 1rem 2rem;border-left:2px solid}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block p:first-child{margin-top:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block p:last-child{margin-bottom:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block ul{padding-left:1.5rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block ul li{margin-bottom:.45rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block ul:last-child li:last-child{margin-bottom:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block>ul{list-style-type:disc}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block>ol{counter-reset:element-details-list-counter}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block .detail-block-header{display:flex;flex-direction:row;align-items:center;gap:.625rem;margin-bottom:.625rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block.prs .detail-block-header .icon{display:inline-block;width:24px;height:24px;mask-size:24px;mask-position:center;mask-image:url(/assets/icons/octicons/git-pull-request-24.svg);background-color:currentColor}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block.issues .detail-block-header .icon{display:inline-block;width:24px;height:24px;mask-size:24px;mask-position:center;mask-image:url(/assets/icons/octicons/bug-24.svg);background-color:currentColor}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block.proposals .detail-block-header .icon{display:inline-block;width:24px;height:24px;mask-size:24px;mask-position:center;mask-image:url(/assets/icons/octicons/zap-24.svg);background-color:currentColor}#scroll-to-top{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1;pointer-events:none;--card-padding:$gap}@media screen and (max-width:700px){#scroll-to-top{--card-padding:$gap / 2}}#scroll-to-top .link{pointer-events:all;position:fixed;bottom:1.25rem;right:1.25rem;width:50px;height:50px;margin:var(--card-padding);text-decoration:none;background-color:#fff;border-radius:15px;display:flex;align-items:center;justify-content:center;box-shadow:#000 1px 1px 5px;color:#000;font-size:1.5em}#scroll-to-top .link:hover span{font-size:35px}#scroll-to-top .link span{transition:font-size .2s ease-in-out;transform:translateY(-3px)}
\ No newline at end of file
+@import "./details.css";ul{line-height:unset;padding-left:unset}:root{scroll-behavior:smooth;scroll-padding-top:1.25rem}@media(prefers-reduced-motion){:root{scroll-behavior:auto}}.priorities-container{font-family:montserrat,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,sans-serif;background-color:var(--card-background-color);overflow:visible;position:relative}.priorities-container>.priorities-intro{background:linear-gradient(to right,rgba(255,255,255,.866667),rgba(255,255,255,.866667)),linear-gradient(to bottom,transparent 25%,#fff 100%),url(/storage/priorities/images/page/map2-2048.webp);background-color:#000;background-size:cover,cover,cover;background-repeat:repeat,repeat,repeat}@media screen and (min-resolution:2x){.priorities-container>.priorities-intro{background:linear-gradient(to right,rgba(255,255,255,.866667),rgba(255,255,255,.866667)),linear-gradient(to bottom,transparent 25%,#fff 100%),url(/storage/priorities/images/page/map2-4096.webp);background-color:#000;background-size:cover,cover,cover;background-repeat:repeat,repeat,repeat}}@media screen and (prefers-color-scheme:dark){.priorities-container>.priorities-intro{background:linear-gradient(to right,rgba(51,54,57,.866667),rgba(51,54,57,.866667)),linear-gradient(to bottom,transparent 25%,#333639 100%),url(/storage/priorities/images/page/map2-2048.webp);background-color:#000;background-size:cover,cover,cover;background-repeat:repeat,repeat,repeat}}@media screen and (prefers-color-scheme:dark) and (min-resolution:2x){.priorities-container>.priorities-intro{background:linear-gradient(to right,rgba(51,54,57,.866667),rgba(51,54,57,.866667)),linear-gradient(to bottom,transparent 25%,#333639 100%),url(/storage/priorities/images/page/map2-4096.webp);background-color:#000;background-size:cover,cover,cover;background-repeat:repeat,repeat,repeat}}.priorities-container>.priorities-intro>.banner .container{padding-top:7rem;padding-bottom:7rem}.priorities-container>.priorities-intro>.banner .container .banner-last-updated .label .last-updated{display:inline}.priorities-container>.priorities-intro>.banner .container .banner-last-updated .label .recently-updated{display:none;font-weight:600;color:#f35774}.priorities-container>.priorities-intro>.banner .container .banner-last-updated.recent .label .last-updated{display:none}.priorities-container>.priorities-intro>.banner .container .banner-last-updated.recent .label .recently-updated{display:inline}.priorities-container>.priorities-intro>.intro .wishlist-btns{display:grid;grid-template-columns:repeat(3,1fr);grid-template-areas:"donate howto contact";gap:1.25rem;margin:3.75rem 0;font-weight:600}@media screen and (max-width:700px){.priorities-container>.priorities-intro>.intro .wishlist-btns{grid-template-columns:repeat(2,1fr);grid-template-areas:"donate donate" "howto contact"}}@media screen and (max-width:450px){.priorities-container>.priorities-intro>.intro .wishlist-btns{grid-template-columns:repeat(1,1fr);grid-template-areas:"donate" "howto" "contact"}}.priorities-container>.priorities-intro>.intro .wishlist-btns .donate{grid-area:donate}.priorities-container>.priorities-intro>.intro .wishlist-btns .howto{grid-area:howto}.priorities-container>.priorities-intro>.intro .wishlist-btns .contact{grid-area:contact}.priorities-container>.priorities-intro>.intro .wishlist-btns .wishlist-btn-anchor{color:#f35774;text-decoration:none}.priorities-container>.priorities-intro>.intro .wishlist-btns .wishlist-btn-anchor:hover{text-decoration:underline}.priorities-container>.priorities-intro>.intro .wishlist-btns .wishlist-btn-text{display:flex;justify-content:center;align-items:center}.priorities-container>.navigation{top:0;z-index:1000;background-color:#fff;margin:1.25rem 0;user-select:none}@media screen and (prefers-color-scheme:dark){.priorities-container>.navigation{background-color:#333639}}.priorities-container>.navigation li{list-style:none;margin-bottom:0}.priorities-container>.navigation .navigation-list-container{position:relative}.priorities-container>.navigation .navigation-list-container .navigation-list{margin:0;display:flex;flex-direction:row;justify-content:space-between;gap:1.25rem}@media screen and (max-width:700px){.priorities-container>.navigation .navigation-list-container .navigation-list{display:grid;grid-template-columns:1fr 1fr}}@media screen and (max-width:450px){.priorities-container>.navigation .navigation-list-container .navigation-list{grid-template-columns:1fr}}.priorities-container>.navigation .navigation-list-container .navigation-list>li{list-style:none;flex-grow:1;width:100%;margin:0}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary{display:flex;flex-direction:row;background-color:var(--background-color);border-radius:15px;width:calc(100% - 2.5rem);height:100%;padding:1.25rem;cursor:pointer}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary:hover{filter:brightness(117.5%)}@media screen and (prefers-color-scheme:light){.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary:hover{filter:brightness(105%)}}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary::-webkit-details-marker{display:none}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary .label{width:100%;flex-grow:1}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary .toggle{flex-grow:0}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary .toggle .more{display:block}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation]>summary .toggle .less{display:none}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation][open]>summary .toggle .more{display:none}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation][open]>summary .toggle .less{display:block}.priorities-container>.navigation .navigation-list-container .navigation-list>li>details[name=priorities-navigation] .navigation-sublist{display:flex;flex-direction:column;gap:.3125rem;margin-top:.625rem;margin-left:1.25rem}.priorities-container>.priorities{display:flex;flex-direction:column;gap:2.5rem}.priorities-container>.priorities .category>.container>.category-details>.category-summary{display:grid;grid-template-areas:"title anchor . icon";grid-template-columns:auto min-content 1fr min-content;gap:1.25rem;align-items:baseline;border-radius:15px;padding:1rem 2rem;letter-spacing:-2px;font-weight:600;color:#fff;cursor:pointer;line-height:3rem;list-style:none}.priorities-container>.priorities .category>.container>.category-details>.category-summary::-webkit-details-marker{display:none}.priorities-container>.priorities .category.level-1>.container>.category-details>.category-summary{font-size:3rem;background-color:#3e8ecc}.priorities-container>.priorities .category.level-2>.container>.category-details>.category-summary{font-size:2.125rem;background-color:#d5daea}@media screen and (prefers-color-scheme:dark){.priorities-container>.priorities .category.level-2>.container>.category-details>.category-summary{background-color:#202325}}@media screen and (prefers-color-scheme:light){.priorities-container>.priorities .category.level-2>.container>.category-details>.category-summary:hover{filter:brightness(105%)}}.priorities-container>.priorities .category>.container>.category-details>.category-summary:hover{filter:brightness(117.5%)}.priorities-container>.priorities .category>.container>.category-details>.category-summary>.category-anchor-container{grid-area:anchor;display:flex;flex-direction:column;align-items:center;justify-content:center}.priorities-container>.priorities .category>.container>.category-details>.category-summary>.category-anchor-container>.category-anchor{display:block;position:relative;text-decoration:none;color:#fff;opacity:0}.priorities-container>.priorities .category>.container>.category-details>.category-summary:hover>.category-anchor-container>.category-anchor,.priorities-container>.priorities .category>.container>.category-details>.category-summary>.category-anchor-container>.category-anchor:focus{opacity:1}.priorities-container>.priorities .category>.container>.category-details>.category-summary>.category-anchor-container>.category-anchor .anchor-icon{display:inline-block;mask-image:url(/assets/icons/link.svg);mask-size:100% 100%;mask-repeat:no-repeat;height:.8rem;width:.8rem;min-height:24px;min-width:24px;background-color:#fff}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-title{grid-area:title;position:relative;margin-bottom:0}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-title .category-title-text{flex-grow:1;width:100%;color:#fff}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-title .category-title-text>p{margin:0}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-title .recent-icon{display:block;position:absolute;width:.75rem;height:.75rem;border-radius:.75rem;top:.1875rem;left:-.5625rem;background-color:#f35774}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-accordion-toggle{grid-area:icon}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-accordion-toggle .more{display:block}.priorities-container>.priorities .category>.container>.category-details>.category-summary .category-accordion-toggle .less{display:none}.priorities-container>.priorities .category>.container>.category-details[open]>.category-summary .category-accordion-toggle .more{display:none}.priorities-container>.priorities .category>.container>.category-details[open]>.category-summary .category-accordion-toggle .less{display:block}.priorities-container>.priorities .category>.container .category-content .element-list{display:grid;grid-template-columns:1fr;gap:1.25rem;padding-left:0;margin-bottom:0}@media screen and (min-width:1200px){.priorities-container>.priorities .category>.container .category-content .element-list{grid-template-columns:1fr 1fr}}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item{list-style:none;margin-bottom:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element{display:grid;grid-template-areas:"main";grid-template-columns:auto;grid-template-rows:auto;gap:1.25rem;border-radius:15px;background-color:#eff0f7;padding:1.25rem 0}@media screen and (prefers-color-scheme:dark){.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element{background-color:#26292c}}@media screen and (max-width:700px){.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element{grid-template-areas:"main";grid-template-columns:auto;grid-template-rows:auto}}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main{grid-area:main}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title{display:grid;grid-template-areas:"text . toggle";grid-template-columns:auto 1fr min-content;align-items:stretch;gap:1.25rem;cursor:pointer;border-radius:15px;color:var(--base-color-text);margin-top:-1.25rem;margin-bottom:-1.25rem;padding:1.25rem;list-style:none}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title:hover{background-color:var(--background-color);filter:brightness(117.5%)}@media screen and (prefers-color-scheme:light){.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title:hover{filter:brightness(105%)}}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title::-webkit-details-marker{display:none}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .text{grid-area:text;display:flex;flex-direction:row;align-items:center;gap:.5rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-title-container{display:inline-block;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-title-container .element-title-anchor{flex-grow:0;display:flex;flex-direction:row;align-items:center;text-decoration:none;opacity:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title:hover .element-title-container .element-title-anchor,.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-title-container .element-title-anchor:focus{opacity:1}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-title-container .element-title-anchor .anchor-icon{display:inline-block;mask-image:url(/assets/icons/link.svg);mask-size:100% 100%;mask-repeat:no-repeat;height:.8rem;width:.8rem;min-height:24px;min-width:24px;background-color:var(--base-color-text)}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-title-container .element-title-text{flex-grow:1;width:100%;display:flex;flex-direction:row;align-items:center;font-weight:700}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-title-container .element-title-text>p{margin:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-accordion-toggle{grid-area:toggle;flex-grow:0;display:flex;flex-direction:row;align-items:center}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-accordion-toggle .less{display:none}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-title .element-accordion-toggle .more{display:block}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main[open] .element-title .element-accordion-toggle .less{display:block}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main[open] .element-title .element-accordion-toggle .more{display:none}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content{padding:0 1.25rem;padding-top:1.25rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-description{font-size:1rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-description>p:first-child{margin-top:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-description:has(+.element-details:empty)>p{margin-bottom:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details{display:flex;flex-direction:column;gap:1.25rem;font-size:.9rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details:empty{display:none}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block{padding:1rem 0 1rem 2rem;border-left:2px solid}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block p:first-child{margin-top:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block p:last-child{margin-bottom:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block ul{padding-left:1.5rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block ul li{margin-bottom:.45rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block ul:last-child li:last-child{margin-bottom:0}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block>ul{list-style-type:disc}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block>ol{counter-reset:element-details-list-counter}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block .detail-block-header{display:flex;flex-direction:row;align-items:center;gap:.625rem;margin-bottom:.625rem}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block.prs .detail-block-header .icon{display:inline-block;width:24px;height:24px;mask-size:24px;mask-position:center;mask-image:url(/assets/icons/octicons/git-pull-request-24.svg);background-color:currentColor}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block.issues .detail-block-header .icon{display:inline-block;width:24px;height:24px;mask-size:24px;mask-position:center;mask-image:url(/assets/icons/octicons/bug-24.svg);background-color:currentColor}.priorities-container>.priorities .category>.container .category-content .element-list>.element-list-item>.element .element-main .element-content .element-details .detail-block.proposals .detail-block-header .icon{display:inline-block;width:24px;height:24px;mask-size:24px;mask-position:center;mask-image:url(/assets/icons/octicons/zap-24.svg);background-color:currentColor}#scroll-to-top{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1;pointer-events:none;--card-padding:$gap}@media screen and (max-width:700px){#scroll-to-top{--card-padding:$gap / 2}}#scroll-to-top .link{pointer-events:all;position:fixed;bottom:1.25rem;right:1.25rem;width:50px;height:50px;margin:var(--card-padding);text-decoration:none;background-color:#fff;border-radius:15px;display:flex;align-items:center;justify-content:center;box-shadow:#000 1px 1px 5px;color:#000;font-size:1.5em}#scroll-to-top .link:hover span{font-size:35px}#scroll-to-top .link span{transition:font-size .2s ease-in-out;transform:translateY(-3px)}
\ No newline at end of file
diff --git a/assets/css/priorities/base.css.map b/assets/css/priorities/base.css.map
index ddb6371019..d2fc4ee6f4 100644
--- a/assets/css/priorities/base.css.map
+++ b/assets/css/priorities/base.css.map
@@ -5,8 +5,8 @@
"base.scss"
],
"sourcesContent": [
- "// Fixes the parsing of the unusual front matter / SCSS file.\n*{};\n\n//\n// Reset\n//\nul {\n\tline-height: unset;\n\tpadding-left: unset;\n}\n\n//\n// Imports\n//\n@import \"./details.css\";\n\n//\n// Variables\n//\n$large-min-width: 1200px;\n$mobile-max-width: 700px;\n$mobile-sm-max-width: 450px;\n$gap: 1.25rem;\n$border-radius: 15px;\n\n$element-meta-planning-bar-width: 15%;\n$element-meta-ongoing-bar-width: 50%;\n\n$color-background-light: #FFFFFF;\n$color-background-dark: rgb(51, 54, 57);\n$color-red: #f35774;\n\n$outline: .125rem solid #4080ff;\n\n//\n// Functions\n//\n\n\n//\n// Mixins\n//\n@mixin is-dark() {\n\t@media screen and (prefers-color-scheme: dark) {\n\t\t@content;\n\t}\n}\n\n@mixin is-light() {\n\t@media screen and (prefers-color-scheme: light) {\n\t\t@content;\n\t}\n}\n\n@mixin is-large() {\n\t@media screen and (min-width: #{$large-min-width}) {\n\t\t@content;\n\t}\n}\n\n@mixin is-mobile() {\n\t@media screen and (max-width: #{$mobile-max-width}) {\n\t\t@content;\n\t}\n}\n\n@mixin is-mobile-sm() {\n\t@media screen and (max-width: #{$mobile-sm-max-width}) {\n\t\t@content;\n\t}\n}\n\n@mixin is-retina() {\n\t@media screen and (min-resolution: 2x) {\n\t\t@content;\n\t}\n}\n\n// ---\n\n@mixin anchor-icon($icon-color) {\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\n\t\t$size: 0.8rem;\n\t\t$min-size: 24px;\n\t\tmask-image: url(/assets/icons/link.svg);\n\t\tmask-size: 100% 100%;\n\t\tmask-repeat: no-repeat;\n\t\theight: $size;\n\t\twidth: $size;\n\t\tmin-height: $min-size;\n\t\tmin-width: $min-size;\n\n\t\tbackground-color: $icon-color;\n\t}\n}\n\n//\n// General\n//\n:root {\n\tscroll-behavior: smooth;\n\t@media (prefers-reduced-motion) {\n\t\tscroll-behavior: auto;\n\t}\n\tscroll-padding-top: $gap;\n}\n\n//\n// Main content.\n//\n.priorities-container {\n\tfont-family: \"Montserrat\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n\tbackground-color: var(--card-background-color);\n\toverflow: visible;\n\tposition: relative;\n\n\t> .priorities-intro {\n\t\t@mixin set-background($color, $url) {\n\t\t\t$color-with-alpha: change-color($color, $alpha: 0.866667);\n\t\t\tbackground:\n\t\t\t\tlinear-gradient(to right, $color-with-alpha, $color-with-alpha),\n\t\t\t\tlinear-gradient(to bottom, rgba(0,0,0,0) 25%, $color 100%),\n\t\t\t\turl($url);\n\t\t\tbackground-color: black;\n\t\t\tbackground-size: cover, cover, cover;\n\t\t\tbackground-repeat: repeat, repeat, repeat;\n\t\t}\n\n\t\t@mixin setup-background($color) {\n\t\t\t@include set-background($color, \"/storage/priorities/images/page/map2-2048.webp\");\n\t\t\t@include is-retina() {\n\t\t\t\t@include set-background($color, \"/storage/priorities/images/page/map2-4096.webp\");\n\t\t\t}\n\t\t}\n\n\t\t@include setup-background($color-background-light);\n\t\t@include is-dark() {\n\t\t\t@include setup-background($color-background-dark);\n\t\t}\n\n\n\t\t> .banner {\n\t\t\t.container {\n\t\t\t\tpadding-top: 7rem;\n\t\t\t\tpadding-bottom: 7rem;\n\n\t\t\t\t.banner-last-updated {\n\t\t\t\t\t.label {\n\t\t\t\t\t\t.last-updated {\n\t\t\t\t\t\t\tdisplay: inline;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t.recently-updated {\n\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\t\tcolor: $color-red;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@at-root #{selector-replace(&, \".banner-last-updated\", \".banner-last-updated.recent\")} {\n\t\t\t\t\t\t\t.last-updated {\n\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t.recently-updated {\n\t\t\t\t\t\t\t\tdisplay: inline;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t> .intro {\n\t\t\t.wishlist-btns {\n\t\t\t\tdisplay: grid;\n\t\t\t\tgrid-template-columns: repeat(3, 1fr);\n\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\"donate howto contact\";\n\t\t\t\tgap: $gap;\n\n\t\t\t\tmargin: (3 * $gap) 0;\n\t\t\t\tfont-weight: 600;\n\n\t\t\t\t@include is-mobile() {\n\t\t\t\t\tgrid-template-columns: repeat(2, 1fr);\n\t\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\t\"donate donate\"\n\t\t\t\t\t\t\"howto contact\";\n\t\t\t\t}\n\n\t\t\t\t@include is-mobile-sm() {\n\t\t\t\t\tgrid-template-columns: repeat(1, 1fr);\n\t\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\t\"donate\"\n\t\t\t\t\t\t\"howto\"\n\t\t\t\t\t\t\"contact\";\n\t\t\t\t}\n\n\t\t\t\t.donate {\n\t\t\t\t\tgrid-area: donate;\n\t\t\t\t}\n\n\t\t\t\t.howto {\n\t\t\t\t\tgrid-area: howto;\n\t\t\t\t}\n\n\t\t\t\t.contact {\n\t\t\t\t\tgrid-area: contact;\n\t\t\t\t}\n\n\t\t\t\t.wishlist-btn-anchor {\n\t\t\t\t\tcolor: $color-red;\n\n\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\ttext-decoration: underline;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.wishlist-btn-text {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\talign-items: center;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t> .navigation {\n\t\ttop: 0px;\n\t\tz-index: 1000;\n\t\tbackground-color: $color-background-light;\n\t\t@include is-dark() {\n\t\t\tbackground-color: $color-background-dark;\n\t\t}\n\n\t\tmargin: $gap 0;\n\t\tuser-select: none;\n\n\t\tli {\n\t\t\tlist-style: none;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\t.navigation-list-container {\n\t\t\tposition: relative;\n\n\t\t\t.navigation-list {\n\t\t\t\tmargin: 0;\n\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: row;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\tgap: $gap;\n\n\t\t\t\t@include is-mobile() {\n\t\t\t\t\tdisplay: grid;\n\t\t\t\t\tgrid-template-columns: 1fr 1fr;\n\t\t\t\t}\n\n\t\t\t\t@include is-mobile-sm() {\n\t\t\t\t\tgrid-template-columns: 1fr;\n\t\t\t\t}\n\n\t\t\t\t> li {\n\t\t\t\t\tlist-style: none;\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tmargin: 0;\n\n\t\t\t\t\t> details[name=priorities-navigation] {\n\t\t\t\t\t\t> summary {\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\tflex-direction: row;\n\n\t\t\t\t\t\t\tbackground-color: var(--background-color);\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\tfilter: brightness(117.5%);\n\t\t\t\t\t\t\t\t@include is-light() {\n\t\t\t\t\t\t\t\t\tfilter: brightness(105%);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tborder-radius: $border-radius;\n\t\t\t\t\t\t\twidth: calc(100% - #{$gap * 2});\n\t\t\t\t\t\t\theight: 100%;\n\t\t\t\t\t\t\tpadding: $gap $gap;\n\t\t\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t\t\t&::-webkit-details-marker {\n\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.label {\n\t\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.toggle {\n\t\t\t\t\t\t\t\tflex-grow: 0;\n\n\t\t\t\t\t\t\t\t.more {\n\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.less {\n\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@at-root #{selector-replace(&, \"details[name='priorities-navigation']\", \"details[name='priorities-navigation'][open]\")} {\n\t\t\t\t\t\t\t\t\t.more {\n\t\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t.less {\n\t\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t.navigation-sublist {\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\t\tgap: $gap / 4;\n\n\t\t\t\t\t\t\tmargin-top: $gap / 2;\n\t\t\t\t\t\t\tmargin-left: $gap;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// i.e. \"core\", \"rendering\", or \"physics\"\n\t> .priorities {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: $gap * 2;\n\n\t\t.category {\n\t\t\t> .container {\n\t\t\t\t> .category-details {\n\t\t\t\t\t> .category-summary {\n\t\t\t\t\t\tdisplay: grid;\n\t\t\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\t\t\"title anchor . icon\";\n\t\t\t\t\t\tgrid-template-columns:\n\t\t\t\t\t\t\tauto min-content 1fr min-content;\n\t\t\t\t\t\tgap: $gap;\n\t\t\t\t\t\talign-items: baseline;\n\n\t\t\t\t\t\tborder-radius: $border-radius;\n\t\t\t\t\t\tpadding: 1rem 2rem;\n\t\t\t\t\t\tletter-spacing: -2px;\n\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\tcolor: white;\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\tline-height: 3rem;\n\n\t\t\t\t\t\tlist-style: none;\n\t\t\t\t\t\t&::-webkit-details-marker {\n\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// .category.level-1\n\t\t\t\t\t\t@at-root #{selector-replace(&, \".category\", \".category.level-1\")} {\n\t\t\t\t\t\t\tfont-size: 3rem;\n\t\t\t\t\t\t\tbackground-color: var(--primary-color);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// .category.level-2\n\t\t\t\t\t\t@at-root #{selector-replace(&, \".category\", \".category.level-2\")} {\n\t\t\t\t\t\t\tfont-size: 2.125rem;\n\t\t\t\t\t\t\tbackground-color: var(--background-color);\n\t\t\t\t\t\t\t@include is-light() {\n\t\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\t\tfilter: brightness(105%);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tfilter: brightness(117.5%);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t> .category-anchor-container {\n\t\t\t\t\t\t\tgrid-area: anchor;\n\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t\tjustify-content: center;\n\n\t\t\t\t\t\t\t> .category-anchor {\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\t\t\tcolor: white;\n\n\t\t\t\t\t\t\t\topacity: 0;\n\t\t\t\t\t\t\t\t@at-root #{selector-replace(&, \".category-summary\", \".category-summary:hover\")},\n\t\t\t\t\t\t\t\t&:focus {\n\t\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t$anchor-icon-color: white;\n\t\t\t\t\t\t\t\t@include anchor-icon($icon-color: white);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t.category-title {\n\t\t\t\t\t\t\tgrid-area: title;\n\n\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\tmargin-bottom: 0;\n\n\t\t\t\t\t\t\t.category-title-text {\n\t\t\t\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t\t\tcolor: white;\n\n\t\t\t\t\t\t\t\t> p {\n\t\t\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.recent-icon {\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\t\t$size: 0.75rem;\n\t\t\t\t\t\t\t\twidth: $size;\n\t\t\t\t\t\t\t\theight: $size;\n\t\t\t\t\t\t\t\tborder-radius: $size;\n\t\t\t\t\t\t\t\ttop: ($size / 4);\n\t\t\t\t\t\t\t\tleft: -(($size / 4) * 3);\n\t\t\t\t\t\t\t\tbackground-color: $color-red;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t.category-accordion-toggle {\n\t\t\t\t\t\t\tgrid-area: icon;\n\n\t\t\t\t\t\t\t.more {\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t.less {\n\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@at-root #{selector-replace(&, \".category-details\", \".category-details[open]\")} {\n\t\t\t\t\t\t\t\t.more {\n\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.less {\n\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.category-content {\n\t\t\t\t\t.element-list {\n\t\t\t\t\t\tdisplay: grid;\n\t\t\t\t\t\tgrid-template-columns: 1fr;\n\t\t\t\t\t\t@include is-large() {\n\t\t\t\t\t\t\tgrid-template-columns: 1fr 1fr;\n\t\t\t\t\t\t\tgap: $gap;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpadding-left: 0;\n\t\t\t\t\t\tmargin-bottom: 0;\n\n\t\t\t\t\t\t> .element-list-item {\n\t\t\t\t\t\t\tlist-style: none;\n\t\t\t\t\t\t\tmargin-bottom: 0;\n\n\t\t\t\t\t\t\tborder-top: 2px solid var(--primary-color);\n\t\t\t\t\t\t\t&:nth-of-type(1) {\n\t\t\t\t\t\t\t\tborder-top: 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@include is-large() {\n\t\t\t\t\t\t\t\t// Remove top border from the second column.\n\t\t\t\t\t\t\t\t&:nth-of-type(2) {\n\t\t\t\t\t\t\t\t\tborder-top: 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t> .element {\n\t\t\t\t\t\t\t\tdisplay: grid;\n\t\t\t\t\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\t\t\t\t\"main\";\n\t\t\t\t\t\t\t\tgrid-template-columns: auto;\n\t\t\t\t\t\t\t\tgrid-template-rows: auto;\n\t\t\t\t\t\t\t\tgap: $gap;\n\n\t\t\t\t\t\t\t\tpadding: 1.25rem 0;\n\n\t\t\t\t\t\t\t\t@include is-mobile() {\n\t\t\t\t\t\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\t\t\t\t\t\"main\";\n\t\t\t\t\t\t\t\t\tgrid-template-columns: auto;\n\t\t\t\t\t\t\t\t\tgrid-template-rows: auto;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.element-main {\n\t\t\t\t\t\t\t\t\tgrid-area: main;\n\n\t\t\t\t\t\t\t\t\theight: 100%;\n\n\t\t\t\t\t\t\t\t\t.element-title {\n\t\t\t\t\t\t\t\t\t\tdisplay: grid;\n\t\t\t\t\t\t\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\t\t\t\t\t\t\"text . toggle\";\n\t\t\t\t\t\t\t\t\t\tgrid-template-columns:\n\t\t\t\t\t\t\t\t\t\t\tauto 1fr min-content;\n\t\t\t\t\t\t\t\t\t\talign-items: stretch;\n\t\t\t\t\t\t\t\t\t\tgap: $gap;\n\n\t\t\t\t\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\t\t\t\t\tborder-radius: $border-radius;\n\t\t\t\t\t\t\t\t\t\tcolor: var(--base-color-text);\n\n\t\t\t\t\t\t\t\t\t\tmargin-top: -$gap;\n\t\t\t\t\t\t\t\t\t\tpadding: $gap;\n\n\t\t\t\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\t\t\t\tbackground-color: var(--background-color);\n\t\t\t\t\t\t\t\t\t\t\tfilter: brightness(117.5%);\n\t\t\t\t\t\t\t\t\t\t\t@include is-light() {\n\t\t\t\t\t\t\t\t\t\t\t\tfilter: brightness(105%);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tlist-style: none;\n\t\t\t\t\t\t\t\t\t\t&::-webkit-details-marker {\n\t\t\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t.text {\n\t\t\t\t\t\t\t\t\t\t\tgrid-area: text;\n\n\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\tflex-direction: row;\n\t\t\t\t\t\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t\t\t\t\t\tgap: 0.5rem;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t.element-title-container {\n\t\t\t\t\t\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\t\t\t\t\t\theight: 100%;\n\n\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t\t\t\t\t\tjustify-content: center;\n\n\t\t\t\t\t\t\t\t\t\t\t.element-title-anchor {\n\t\t\t\t\t\t\t\t\t\t\t\tflex-grow: 0;\n\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\t\tflex-direction: row;\n\t\t\t\t\t\t\t\t\t\t\t\talign-items: center;\n\n\t\t\t\t\t\t\t\t\t\t\t\ttext-decoration: none;\n\n\t\t\t\t\t\t\t\t\t\t\t\topacity: 0;\n\t\t\t\t\t\t\t\t\t\t\t\t@at-root #{selector-replace(&, \".element-title\", \".element-title:hover\")},\n\t\t\t\t\t\t\t\t\t\t\t\t&:focus {\n\t\t\t\t\t\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t@include anchor-icon($icon-color: var(--base-color-text));\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t.element-title-text {\n\t\t\t\t\t\t\t\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\t\t\t\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\t\tflex-direction: row;\n\t\t\t\t\t\t\t\t\t\t\t\talign-items: center;\n\n\t\t\t\t\t\t\t\t\t\t\t\tfont-weight: 700;\n\n\t\t\t\t\t\t\t\t\t\t\t\t> p {\n\t\t\t\t\t\t\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t.element-accordion-toggle {\n\t\t\t\t\t\t\t\t\t\t\tgrid-area: toggle;\n\n\t\t\t\t\t\t\t\t\t\t\tflex-grow: 0;\n\n\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\tflex-direction: row;\n\t\t\t\t\t\t\t\t\t\t\talign-items: center;\n\n\t\t\t\t\t\t\t\t\t\t\t.less {\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t.more {\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t@at-root #{selector-replace(&, \".element-main\", \".element-main[open]\")} {\n\t\t\t\t\t\t\t\t\t\t\t\t.less {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t.more {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.element-content {\n\t\t\t\t\t\t\t\t\t\tpadding: 0 $gap;\n\n\t\t\t\t\t\t\t\t\t\t.element-description {\n\t\t\t\t\t\t\t\t\t\t\tfont-size: 1rem;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t.element-details {\n\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\t\t\t\t\t\tgap: $gap;\n\n\t\t\t\t\t\t\t\t\t\t\tfont-size: 0.9rem;\n\n\t\t\t\t\t\t\t\t\t\t\t.detail-block {\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: 1rem 0 1rem 2rem;\n\t\t\t\t\t\t\t\t\t\t\t\tborder-left: 2px solid;\n\n\t\t\t\t\t\t\t\t\t\t\t\tp {\n\t\t\t\t\t\t\t\t\t\t\t\t\t&:first-child {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t&:last-child {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmargin-bottom: 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tul {\n\t\t\t\t\t\t\t\t\t\t\t\t\tpadding-left: 1.5rem;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tli {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmargin-bottom: 0.45rem;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t&:last-child {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tli:last-child {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmargin-bottom: 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t> ul {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Force reset the style for the first list.\n\t\t\t\t\t\t\t\t\t\t\t\t\tlist-style-type: disc;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t> ol {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Force reset the style for the first list.\n\t\t\t\t\t\t\t\t\t\t\t\t\tcounter-reset: element-details-list-counter;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t.detail-block-header {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\t\t\tflex-direction: row;\n\t\t\t\t\t\t\t\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t\t\t\t\t\t\t\tgap: $gap / 2;\n\t\t\t\t\t\t\t\t\t\t\t\t\tmargin-bottom: $gap / 2;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t.icon {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@mixin parent-is($type) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@at-root #{selector-replace(&, \".detail-block\", \".detail-block.#{$type}\")} {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@content;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@mixin octicon($icon-url) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: 24px;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: 24px;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmask-size: 24px;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmask-position: center;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmask-image: url($icon-url);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackground-color: currentColor;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include parent-is(\"note\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Google icon \"info\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include parent-is(\"warning\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Google icon \"warning\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include parent-is(\"prs\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include octicon(\"/assets/icons/octicons/git-pull-request-24.svg\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include parent-is(\"issues\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include octicon(\"/assets/icons/octicons/bug-24.svg\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include parent-is(\"proposals\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include octicon(\"/assets/icons/octicons/zap-24.svg\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n#scroll-to-top {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 1;\n\tpointer-events: none;\n\n\t--card-padding: $gap;\n\t@include is-mobile() {\n\t\t--card-padding: $gap / 2;\n\t}\n\n\t.link {\n\t\tpointer-events: all;\n\t\tposition: fixed;\n\t\tbottom: $gap;\n\t\tright: $gap;\n\t\twidth: 50px;\n\t\theight: 50px;\n\t\tmargin: var(--card-padding);\n\t\ttext-decoration: none;\n\t\tbackground-color: white;\n\t\tborder-radius: $border-radius;\n\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tbox-shadow: rgba(0,0,0,25%) 1px 1px 5px;\n\n\t\tcolor: black;\n\t\tfont-size: 1.5em;\n\n\t\t&:hover {\n\t\t\tspan {\n\t\t\t\tfont-size: 35px;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\ttransition: font-size 0.2s ease-in-out;\n\t\t\ttransform:\n\t\t\t\ttranslateY(-3px);\n\t\t}\n\t}\n}\n"
+ "// Fixes the parsing of the unusual front matter / SCSS file.\n*{};\n\n//\n// Reset\n//\nul {\n\tline-height: unset;\n\tpadding-left: unset;\n}\n\n//\n// Imports\n//\n@import \"./details.css\";\n\n//\n// Variables\n//\n$large-min-width: 1200px;\n$mobile-max-width: 700px;\n$mobile-sm-max-width: 450px;\n$gap: 1.25rem;\n$border-radius: 15px;\n\n$element-meta-planning-bar-width: 15%;\n$element-meta-ongoing-bar-width: 50%;\n\n$color-background-light: #FFFFFF;\n$color-background-dark: rgb(51, 54, 57);\n$color-red: #f35774;\n\n$color-category-level-1: hsl(206, 58%, 52%);\n$color-category-level-2-light: #d5daea;\n$color-category-level-2-dark: #202325;\n\n$color-element-background-light: adjust-color($color-category-level-2-light, $lightness: +7.5%);\n$color-element-background-dark: adjust-color($color-category-level-2-dark, $lightness: +2.5%);\n\n$outline: .125rem solid #4080ff;\n\n//\n// Functions\n//\n\n\n//\n// Mixins\n//\n@mixin is-dark() {\n\t@media screen and (prefers-color-scheme: dark) {\n\t\t@content;\n\t}\n}\n\n@mixin is-light() {\n\t@media screen and (prefers-color-scheme: light) {\n\t\t@content;\n\t}\n}\n\n@mixin is-large() {\n\t@media screen and (min-width: #{$large-min-width}) {\n\t\t@content;\n\t}\n}\n\n@mixin is-mobile() {\n\t@media screen and (max-width: #{$mobile-max-width}) {\n\t\t@content;\n\t}\n}\n\n@mixin is-mobile-sm() {\n\t@media screen and (max-width: #{$mobile-sm-max-width}) {\n\t\t@content;\n\t}\n}\n\n@mixin is-retina() {\n\t@media screen and (min-resolution: 2x) {\n\t\t@content;\n\t}\n}\n\n// ---\n\n@mixin anchor-icon($icon-color) {\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\n\t\t$size: 0.8rem;\n\t\t$min-size: 24px;\n\t\tmask-image: url(/assets/icons/link.svg);\n\t\tmask-size: 100% 100%;\n\t\tmask-repeat: no-repeat;\n\t\theight: $size;\n\t\twidth: $size;\n\t\tmin-height: $min-size;\n\t\tmin-width: $min-size;\n\n\t\tbackground-color: $icon-color;\n\t}\n}\n\n//\n// General\n//\n:root {\n\tscroll-behavior: smooth;\n\t@media (prefers-reduced-motion) {\n\t\tscroll-behavior: auto;\n\t}\n\tscroll-padding-top: $gap;\n}\n\n//\n// Main content.\n//\n.priorities-container {\n\tfont-family: \"Montserrat\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n\tbackground-color: var(--card-background-color);\n\toverflow: visible;\n\tposition: relative;\n\n\t> .priorities-intro {\n\t\t@mixin set-background($color, $url) {\n\t\t\t$color-with-alpha: change-color($color, $alpha: 0.866667);\n\t\t\tbackground:\n\t\t\t\tlinear-gradient(to right, $color-with-alpha, $color-with-alpha),\n\t\t\t\tlinear-gradient(to bottom, rgba(0,0,0,0) 25%, $color 100%),\n\t\t\t\turl($url);\n\t\t\tbackground-color: black;\n\t\t\tbackground-size: cover, cover, cover;\n\t\t\tbackground-repeat: repeat, repeat, repeat;\n\t\t}\n\n\t\t@mixin setup-background($color) {\n\t\t\t@include set-background($color, \"/storage/priorities/images/page/map2-2048.webp\");\n\t\t\t@include is-retina() {\n\t\t\t\t@include set-background($color, \"/storage/priorities/images/page/map2-4096.webp\");\n\t\t\t}\n\t\t}\n\n\t\t@include setup-background($color-background-light);\n\t\t@include is-dark() {\n\t\t\t@include setup-background($color-background-dark);\n\t\t}\n\n\n\t\t> .banner {\n\t\t\t.container {\n\t\t\t\tpadding-top: 7rem;\n\t\t\t\tpadding-bottom: 7rem;\n\n\t\t\t\t.banner-last-updated {\n\t\t\t\t\t.label {\n\t\t\t\t\t\t.last-updated {\n\t\t\t\t\t\t\tdisplay: inline;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t.recently-updated {\n\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\t\tcolor: $color-red;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@at-root #{selector-replace(&, \".banner-last-updated\", \".banner-last-updated.recent\")} {\n\t\t\t\t\t\t\t.last-updated {\n\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t.recently-updated {\n\t\t\t\t\t\t\t\tdisplay: inline;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t> .intro {\n\t\t\t.wishlist-btns {\n\t\t\t\tdisplay: grid;\n\t\t\t\tgrid-template-columns: repeat(3, 1fr);\n\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\"donate howto contact\";\n\t\t\t\tgap: $gap;\n\n\t\t\t\tmargin: (3 * $gap) 0;\n\t\t\t\tfont-weight: 600;\n\n\t\t\t\t@include is-mobile() {\n\t\t\t\t\tgrid-template-columns: repeat(2, 1fr);\n\t\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\t\"donate donate\"\n\t\t\t\t\t\t\"howto contact\";\n\t\t\t\t}\n\n\t\t\t\t@include is-mobile-sm() {\n\t\t\t\t\tgrid-template-columns: repeat(1, 1fr);\n\t\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\t\"donate\"\n\t\t\t\t\t\t\"howto\"\n\t\t\t\t\t\t\"contact\";\n\t\t\t\t}\n\n\t\t\t\t.donate {\n\t\t\t\t\tgrid-area: donate;\n\t\t\t\t}\n\n\t\t\t\t.howto {\n\t\t\t\t\tgrid-area: howto;\n\t\t\t\t}\n\n\t\t\t\t.contact {\n\t\t\t\t\tgrid-area: contact;\n\t\t\t\t}\n\n\t\t\t\t.wishlist-btn-anchor {\n\t\t\t\t\tcolor: $color-red;\n\n\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\ttext-decoration: underline;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.wishlist-btn-text {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\talign-items: center;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t> .navigation {\n\t\ttop: 0px;\n\t\tz-index: 1000;\n\t\tbackground-color: $color-background-light;\n\t\t@include is-dark() {\n\t\t\tbackground-color: $color-background-dark;\n\t\t}\n\n\t\tmargin: $gap 0;\n\t\tuser-select: none;\n\n\t\tli {\n\t\t\tlist-style: none;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\t.navigation-list-container {\n\t\t\tposition: relative;\n\n\t\t\t.navigation-list {\n\t\t\t\tmargin: 0;\n\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: row;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\tgap: $gap;\n\n\t\t\t\t@include is-mobile() {\n\t\t\t\t\tdisplay: grid;\n\t\t\t\t\tgrid-template-columns: 1fr 1fr;\n\t\t\t\t}\n\n\t\t\t\t@include is-mobile-sm() {\n\t\t\t\t\tgrid-template-columns: 1fr;\n\t\t\t\t}\n\n\t\t\t\t> li {\n\t\t\t\t\tlist-style: none;\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tmargin: 0;\n\n\t\t\t\t\t> details[name=priorities-navigation] {\n\t\t\t\t\t\t> summary {\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\tflex-direction: row;\n\n\t\t\t\t\t\t\tbackground-color: var(--background-color);\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\tfilter: brightness(117.5%);\n\t\t\t\t\t\t\t\t@include is-light() {\n\t\t\t\t\t\t\t\t\tfilter: brightness(105%);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tborder-radius: $border-radius;\n\t\t\t\t\t\t\twidth: calc(100% - #{$gap * 2});\n\t\t\t\t\t\t\theight: 100%;\n\t\t\t\t\t\t\tpadding: $gap $gap;\n\t\t\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t\t\t&::-webkit-details-marker {\n\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.label {\n\t\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.toggle {\n\t\t\t\t\t\t\t\tflex-grow: 0;\n\n\t\t\t\t\t\t\t\t.more {\n\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.less {\n\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@at-root #{selector-replace(&, \"details[name='priorities-navigation']\", \"details[name='priorities-navigation'][open]\")} {\n\t\t\t\t\t\t\t\t\t.more {\n\t\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t.less {\n\t\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t.navigation-sublist {\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\t\tgap: $gap / 4;\n\n\t\t\t\t\t\t\tmargin-top: $gap / 2;\n\t\t\t\t\t\t\tmargin-left: $gap;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// i.e. \"core\", \"rendering\", or \"physics\"\n\t> .priorities {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: $gap * 2;\n\n\t\t.category {\n\t\t\t> .container {\n\t\t\t\t> .category-details {\n\t\t\t\t\t> .category-summary {\n\t\t\t\t\t\tdisplay: grid;\n\t\t\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\t\t\"title anchor . icon\";\n\t\t\t\t\t\tgrid-template-columns:\n\t\t\t\t\t\t\tauto min-content 1fr min-content;\n\t\t\t\t\t\tgap: $gap;\n\t\t\t\t\t\talign-items: baseline;\n\n\t\t\t\t\t\tborder-radius: $border-radius;\n\t\t\t\t\t\tpadding: 1rem 2rem;\n\t\t\t\t\t\tletter-spacing: -2px;\n\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\tcolor: white;\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\tline-height: 3rem;\n\n\t\t\t\t\t\tlist-style: none;\n\t\t\t\t\t\t&::-webkit-details-marker {\n\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// .category.level-1\n\t\t\t\t\t\t@at-root #{selector-replace(&, \".category\", \".category.level-1\")} {\n\t\t\t\t\t\t\tfont-size: 3rem;\n\t\t\t\t\t\t\tbackground-color: $color-category-level-1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// .category.level-2\n\t\t\t\t\t\t@at-root #{selector-replace(&, \".category\", \".category.level-2\")} {\n\t\t\t\t\t\t\tfont-size: 2.125rem;\n\t\t\t\t\t\t\tbackground-color: $color-category-level-2-light;\n\t\t\t\t\t\t\t@include is-dark() {\n\t\t\t\t\t\t\t\tbackground-color: $color-category-level-2-dark;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@include is-light() {\n\t\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\t\tfilter: brightness(105%);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tfilter: brightness(117.5%);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t> .category-anchor-container {\n\t\t\t\t\t\t\tgrid-area: anchor;\n\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t\tjustify-content: center;\n\n\t\t\t\t\t\t\t> .category-anchor {\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\t\t\tcolor: white;\n\n\t\t\t\t\t\t\t\topacity: 0;\n\t\t\t\t\t\t\t\t@at-root #{selector-replace(&, \".category-summary\", \".category-summary:hover\")},\n\t\t\t\t\t\t\t\t&:focus {\n\t\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t$anchor-icon-color: white;\n\t\t\t\t\t\t\t\t@include anchor-icon($icon-color: white);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t.category-title {\n\t\t\t\t\t\t\tgrid-area: title;\n\n\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\tmargin-bottom: 0;\n\n\t\t\t\t\t\t\t.category-title-text {\n\t\t\t\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t\t\tcolor: white;\n\n\t\t\t\t\t\t\t\t> p {\n\t\t\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.recent-icon {\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\t\t$size: 0.75rem;\n\t\t\t\t\t\t\t\twidth: $size;\n\t\t\t\t\t\t\t\theight: $size;\n\t\t\t\t\t\t\t\tborder-radius: $size;\n\t\t\t\t\t\t\t\ttop: ($size / 4);\n\t\t\t\t\t\t\t\tleft: -(($size / 4) * 3);\n\t\t\t\t\t\t\t\tbackground-color: $color-red;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t.category-accordion-toggle {\n\t\t\t\t\t\t\tgrid-area: icon;\n\n\t\t\t\t\t\t\t.more {\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t.less {\n\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@at-root #{selector-replace(&, \".category-details\", \".category-details[open]\")} {\n\t\t\t\t\t\t\t\t.more {\n\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.less {\n\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.category-content {\n\t\t\t\t\t.element-list {\n\t\t\t\t\t\tdisplay: grid;\n\t\t\t\t\t\tgrid-template-columns: 1fr;\n\t\t\t\t\t\tgap: $gap;\n\t\t\t\t\t\t@include is-large() {\n\t\t\t\t\t\t\tgrid-template-columns: 1fr 1fr;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpadding-left: 0;\n\t\t\t\t\t\tmargin-bottom: 0;\n\n\t\t\t\t\t\t> .element-list-item {\n\t\t\t\t\t\t\tlist-style: none;\n\t\t\t\t\t\t\tmargin-bottom: 0;\n\n\t\t\t\t\t\t\t> .element {\n\t\t\t\t\t\t\t\tdisplay: grid;\n\t\t\t\t\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\t\t\t\t\"main\";\n\t\t\t\t\t\t\t\tgrid-template-columns: auto;\n\t\t\t\t\t\t\t\tgrid-template-rows: auto;\n\t\t\t\t\t\t\t\tgap: $gap;\n\n\t\t\t\t\t\t\t\tborder-radius: $border-radius;\n\t\t\t\t\t\t\t\tbackground-color: $color-element-background-light;\n\t\t\t\t\t\t\t\t@include is-dark() {\n\t\t\t\t\t\t\t\t\tbackground-color: $color-element-background-dark;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpadding: 1.25rem 0;\n\n\t\t\t\t\t\t\t\t@include is-mobile() {\n\t\t\t\t\t\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\t\t\t\t\t\"main\";\n\t\t\t\t\t\t\t\t\tgrid-template-columns: auto;\n\t\t\t\t\t\t\t\t\tgrid-template-rows: auto;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.element-main {\n\t\t\t\t\t\t\t\t\tgrid-area: main;\n\n\t\t\t\t\t\t\t\t\t.element-title {\n\t\t\t\t\t\t\t\t\t\tdisplay: grid;\n\t\t\t\t\t\t\t\t\t\tgrid-template-areas:\n\t\t\t\t\t\t\t\t\t\t\t\"text . toggle\";\n\t\t\t\t\t\t\t\t\t\tgrid-template-columns:\n\t\t\t\t\t\t\t\t\t\t\tauto 1fr min-content;\n\t\t\t\t\t\t\t\t\t\talign-items: stretch;\n\t\t\t\t\t\t\t\t\t\tgap: $gap;\n\n\t\t\t\t\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\t\t\t\t\tborder-radius: $border-radius;\n\t\t\t\t\t\t\t\t\t\tcolor: var(--base-color-text);\n\n\t\t\t\t\t\t\t\t\t\tmargin-top: -$gap;\n\t\t\t\t\t\t\t\t\t\tmargin-bottom: -$gap;\n\t\t\t\t\t\t\t\t\t\tpadding: $gap;\n\n\t\t\t\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\t\t\t\tbackground-color: var(--background-color);\n\t\t\t\t\t\t\t\t\t\t\tfilter: brightness(117.5%);\n\t\t\t\t\t\t\t\t\t\t\t@include is-light() {\n\t\t\t\t\t\t\t\t\t\t\t\tfilter: brightness(105%);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tlist-style: none;\n\t\t\t\t\t\t\t\t\t\t&::-webkit-details-marker {\n\t\t\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t.text {\n\t\t\t\t\t\t\t\t\t\t\tgrid-area: text;\n\n\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\tflex-direction: row;\n\t\t\t\t\t\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t\t\t\t\t\tgap: 0.5rem;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t.element-title-container {\n\t\t\t\t\t\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\t\t\t\t\t\theight: 100%;\n\n\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t\t\t\t\t\tjustify-content: center;\n\n\t\t\t\t\t\t\t\t\t\t\t.element-title-anchor {\n\t\t\t\t\t\t\t\t\t\t\t\tflex-grow: 0;\n\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\t\tflex-direction: row;\n\t\t\t\t\t\t\t\t\t\t\t\talign-items: center;\n\n\t\t\t\t\t\t\t\t\t\t\t\ttext-decoration: none;\n\n\t\t\t\t\t\t\t\t\t\t\t\topacity: 0;\n\t\t\t\t\t\t\t\t\t\t\t\t@at-root #{selector-replace(&, \".element-title\", \".element-title:hover\")},\n\t\t\t\t\t\t\t\t\t\t\t\t&:focus {\n\t\t\t\t\t\t\t\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t@include anchor-icon($icon-color: var(--base-color-text));\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t.element-title-text {\n\t\t\t\t\t\t\t\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\t\t\t\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\t\tflex-direction: row;\n\t\t\t\t\t\t\t\t\t\t\t\talign-items: center;\n\n\t\t\t\t\t\t\t\t\t\t\t\tfont-weight: 700;\n\n\t\t\t\t\t\t\t\t\t\t\t\t> p {\n\t\t\t\t\t\t\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t.element-accordion-toggle {\n\t\t\t\t\t\t\t\t\t\t\tgrid-area: toggle;\n\n\t\t\t\t\t\t\t\t\t\t\tflex-grow: 0;\n\n\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\tflex-direction: row;\n\t\t\t\t\t\t\t\t\t\t\talign-items: center;\n\n\t\t\t\t\t\t\t\t\t\t\t.less {\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t.more {\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t@at-root #{selector-replace(&, \".element-main\", \".element-main[open]\")} {\n\t\t\t\t\t\t\t\t\t\t\t\t.less {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t.more {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.element-content {\n\t\t\t\t\t\t\t\t\t\tpadding: 0 $gap;\n\t\t\t\t\t\t\t\t\t\tpadding-top: $gap;\n\n\t\t\t\t\t\t\t\t\t\t.element-description {\n\t\t\t\t\t\t\t\t\t\t\tfont-size: 1rem;\n\n\t\t\t\t\t\t\t\t\t\t\t> p {\n\t\t\t\t\t\t\t\t\t\t\t\t&:first-child {\n\t\t\t\t\t\t\t\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t@at-root #{selector-replace(&, \".element-description\", \".element-description:has(+.element-details:empty)\")} {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Selects this if the parent .element-description has an empty .element-details immediate sibling.\n\t\t\t\t\t\t\t\t\t\t\t\t\tmargin-bottom: 0;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t.element-details {\n\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\t\t\t\t\t\tgap: $gap;\n\n\t\t\t\t\t\t\t\t\t\t\t&:empty {\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tfont-size: 0.9rem;\n\n\t\t\t\t\t\t\t\t\t\t\t.detail-block {\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: 1rem 0 1rem 2rem;\n\t\t\t\t\t\t\t\t\t\t\t\tborder-left: 2px solid;\n\n\t\t\t\t\t\t\t\t\t\t\t\tp {\n\t\t\t\t\t\t\t\t\t\t\t\t\t&:first-child {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t&:last-child {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmargin-bottom: 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tul {\n\t\t\t\t\t\t\t\t\t\t\t\t\tpadding-left: 1.5rem;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tli {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmargin-bottom: 0.45rem;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t&:last-child {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tli:last-child {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmargin-bottom: 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t> ul {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Force reset the style for the first list.\n\t\t\t\t\t\t\t\t\t\t\t\t\tlist-style-type: disc;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t> ol {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Force reset the style for the first list.\n\t\t\t\t\t\t\t\t\t\t\t\t\tcounter-reset: element-details-list-counter;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t.detail-block-header {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\t\t\t\tflex-direction: row;\n\t\t\t\t\t\t\t\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t\t\t\t\t\t\t\tgap: $gap / 2;\n\t\t\t\t\t\t\t\t\t\t\t\t\tmargin-bottom: $gap / 2;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t.icon {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@mixin parent-is($type) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@at-root #{selector-replace(&, \".detail-block\", \".detail-block.#{$type}\")} {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@content;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@mixin octicon($icon-url) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: 24px;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: 24px;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmask-size: 24px;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmask-position: center;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmask-image: url($icon-url);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackground-color: currentColor;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include parent-is(\"note\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Google icon \"info\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include parent-is(\"warning\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Google icon \"warning\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include parent-is(\"prs\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include octicon(\"/assets/icons/octicons/git-pull-request-24.svg\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include parent-is(\"issues\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include octicon(\"/assets/icons/octicons/bug-24.svg\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include parent-is(\"proposals\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@include octicon(\"/assets/icons/octicons/zap-24.svg\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n#scroll-to-top {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 1;\n\tpointer-events: none;\n\n\t--card-padding: $gap;\n\t@include is-mobile() {\n\t\t--card-padding: $gap / 2;\n\t}\n\n\t.link {\n\t\tpointer-events: all;\n\t\tposition: fixed;\n\t\tbottom: $gap;\n\t\tright: $gap;\n\t\twidth: 50px;\n\t\theight: 50px;\n\t\tmargin: var(--card-padding);\n\t\ttext-decoration: none;\n\t\tbackground-color: white;\n\t\tborder-radius: $border-radius;\n\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tbox-shadow: rgba(0,0,0,25%) 1px 1px 5px;\n\n\t\tcolor: black;\n\t\tfont-size: 1.5em;\n\n\t\t&:hover {\n\t\t\tspan {\n\t\t\t\tfont-size: 35px;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\ttransition: font-size 0.2s ease-in-out;\n\t\t\ttransform:\n\t\t\t\ttranslateY(-3px);\n\t\t}\n\t}\n}\n"
],
"names": [],
- "mappings": "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"
+ "mappings": "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"
}
\ No newline at end of file
diff --git a/assets/css/priorities/details.css b/assets/css/priorities/details.css
index 091fdb2c93..b91fa39c9d 100644
--- a/assets/css/priorities/details.css
+++ b/assets/css/priorities/details.css
@@ -1,4 +1,4 @@
-@keyframes opening{from{transform:translateY(-50px);opacity:0}to{transform:translateY(0);opacity:1}}@supports selector(details::details-content) and (interpolate-size:allow-keywords) and (content-visibility:visible){.priorities-container{interpolate-size:allow-keywords}.priorities-container details{padding:4px}.priorities-container details::details-content{height:0;transition:height .3s ease,content-visibility .3s allow-discrete ease;content-visibility:hidden;overflow:hidden}.priorities-container details[open]::details-content{height:auto;content-visibility:visible}@starting-style{.priorities-container details::details-content {
+@keyframes opening{from{transform:translateY(-50px);opacity:0}to{transform:translateY(0);opacity:1}}@supports selector(details::details-content) and (interpolate-size:allow-keywords) and (content-visibility:visible){.priorities-container{interpolate-size:allow-keywords}.priorities-container details{padding:2px}.priorities-container details::details-content{height:0;transition:height .3s ease,content-visibility .3s allow-discrete ease;content-visibility:hidden;overflow:hidden}.priorities-container details[open]::details-content{height:auto;content-visibility:visible}@starting-style{.priorities-container details::details-content {
height: 0;
}
}}@supports not (selector(details::details-content) and (interpolate-size:allow-keywords) and (content-visibility:visible)){details>summary{z-index:100}details.opening>*:not(summary){animation:opening .3s ease}}
\ No newline at end of file
diff --git a/atom.xml b/atom.xml
index 9529904a5c..9722aea3fd 100644
--- a/atom.xml
+++ b/atom.xml
@@ -1 +1 @@
-Godot Engine Official 2024-11-26T01:58:49+00:00 https://godotengine.org/ Dev snapshot: Godot 4.4 dev 5 2024-11-21T18:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-5/ With GodotCon behind us and our developers recuperated, we're thrilled to return to a more frequent release-cycle. Thaddeus Crews GodotCon 24: Berlin Edition 2024-11-13T18:30:00+00:00 https://godotengine.org/article/review-godotcon24/ Our biggest conference yet! Nat Dev snapshot: Godot 4.4 dev 4 2024-11-08T12:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-4/ After a short delay due to GodotCon, we are back with another exciting update. Clay John Dev snapshot: Godot 4.4 dev 3 2024-10-03T12:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-3/ We haven't slowed down and are bringing you another feature-packed update! Clay John Godot XR update - October 2024 2024-10-02T12:00:00+00:00 https://godotengine.org/article/godot-xr-update-oct-2024/ Looking back at a year of XR development. Bastiaan Olij Godot SDK Integrations 2024-09-24T14:30:00+00:00 https://godotengine.org/article/godot-sdk-integrations/ A new GitHub organization to centralize the community efforts to provide support for third-party SDKs for Godot. Godot Foundation Godot Rendering Priorities: September 2024 2024-09-23T15:45:00+00:00 https://godotengine.org/article/rendering-priorities-september-2024/ 4.3 is out. It's time for an update! Clay John Godot Editor on the Meta Horizon Store 2024-09-20T16:00:00+00:00 https://godotengine.org/article/godot-editor-horizon-store-early-access-release/ Introducing the Godot Editor for Meta Quest (Horizon OS) devices Fredia Huya-Kouadio Dev snapshot: Godot 4.4 dev 2 2024-09-10T16:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-2/ The PR harvest keeps going strongly for Godot 4.4, with massive new features such as typed dictionaries and error-less project import! Rémi Verschelde Godot 3.6 finally released! 2024-09-09T11:00:00+00:00 https://godotengine.org/article/godot-3-6-finally-released/ After 2 years of development, Godot 3.6 is finally out and it comes fully packed with features and quality of life improvements! This includes 2D physics interpolation and hierarchical culling, and 3D mesh merging, level of detail, tighter shadow culling, ORM materials, and more. lawnjelly Submissions open for Godot 2024 showreel! 2024-09-05T15:00:00+00:00 https://godotengine.org/article/submissions-open-godot-2024-showreel/ Showcase your Godot creations in 2024! We're inviting submissions of short videos featuring your published or in-progress Godot games or tools. Don't miss this chance to be a part of it! Emi About Official Console Ports 2024-09-03T18:30:00+00:00 https://godotengine.org/article/about-official-console-ports/ With this post we aim to address the community’s questions about the lack of official console ports through the Godot Foundation. Emi Meeting the community at gamescom 2024 2024-09-02T18:30:00+00:00 https://godotengine.org/article/review-gamescom-2024/ Back from gamescom, ready to report. Nat Dev snapshot: Godot 4.4 dev 1 2024-08-26T13:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-1/ The first snapshot after releasing 4.3, already packed with new features! Clay John Godot 4.3, a shared effort 2024-08-15T11:00:00+00:00 https://godotengine.org/article/godot-4-3-a-shared-effort/ With over 3,500 commits authored by over 500 contributors, the latest Godot Engine release comes packed full of new features and improvements. Godot contributors Design of the Skeleton Modifier 3D 2024-08-12T10:00:00+00:00 https://godotengine.org/article/design-of-the-skeleton-modifier-3d/ We have reworked the skeleton bone update process to add SkeletonModifier3D for modifying the Skeleton. Silc Renew Release candidate: Godot 4.3 RC 3 2024-08-08T14:00:00+00:00 https://godotengine.org/article/release-candidate-godot-4-3-rc-3/ With all known major regressions fixed, we are now publishing a third release candidate to confirm that 4.3 is ready to go stable. Rémi Verschelde Gamescom here we come! 2024-08-06T17:00:00+00:00 https://godotengine.org/article/gamescom-2024/ We are once again attending gamescom, and organizing two meet-up opportunities this time. Nat Introducing the improved ufbx importer in Godot 4.3 2024-08-02T20:36:00+00:00 https://godotengine.org/article/introducing-the-improved-ufbx-importer-in-godot-4-3/ Godot 4.3 now includes native .fbx support Lyuma Release candidate: Godot 4.3 RC 2 2024-08-01T16:00:00+00:00 https://godotengine.org/article/release-candidate-godot-4-3-rc-2/ After a week in the Release Candidate stage, we have squashed most bugs we were still tracking for 4.3, and are ready for a second candidate. Rémi Verschelde Release candidate: Godot 4.3 RC 1 2024-07-25T18:00:00+00:00 https://godotengine.org/article/release-candidate-godot-4-3-rc-1/ We are cautiously optimistic that Godot 4.3 is ready for release, please test it and let us know if we are right! Rémi Verschelde Dev snapshot: Godot 4.3 beta 3 2024-07-10T17:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-3-beta-3/ 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. Rémi Verschelde New Dev Fund Perks: Discord Role and Forum Badge 2024-07-10T12:00:00+00:00 https://godotengine.org/article/development-fund-perks/ Proudly display your support on our community platforms. Winston Yallow Release candidate: Godot 3.6 RC 1 2024-07-09T08:00:00+00:00 https://godotengine.org/article/release-candidate-godot-3-6-rc-1/ We are now at the Release Candidate stage, finalizing everything so that we can release 3.6-stable for all users. lawnjelly
\ No newline at end of file
+Godot Engine Official 2024-11-26T17:29:55+00:00 https://godotengine.org/ Dev snapshot: Godot 4.4 dev 5 2024-11-21T18:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-5/ With GodotCon behind us and our developers recuperated, we're thrilled to return to a more frequent release-cycle. Thaddeus Crews GodotCon 24: Berlin Edition 2024-11-13T18:30:00+00:00 https://godotengine.org/article/review-godotcon24/ Our biggest conference yet! Nat Dev snapshot: Godot 4.4 dev 4 2024-11-08T12:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-4/ After a short delay due to GodotCon, we are back with another exciting update. Clay John Dev snapshot: Godot 4.4 dev 3 2024-10-03T12:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-3/ We haven't slowed down and are bringing you another feature-packed update! Clay John Godot XR update - October 2024 2024-10-02T12:00:00+00:00 https://godotengine.org/article/godot-xr-update-oct-2024/ Looking back at a year of XR development. Bastiaan Olij Godot SDK Integrations 2024-09-24T14:30:00+00:00 https://godotengine.org/article/godot-sdk-integrations/ A new GitHub organization to centralize the community efforts to provide support for third-party SDKs for Godot. Godot Foundation Godot Rendering Priorities: September 2024 2024-09-23T15:45:00+00:00 https://godotengine.org/article/rendering-priorities-september-2024/ 4.3 is out. It's time for an update! Clay John Godot Editor on the Meta Horizon Store 2024-09-20T16:00:00+00:00 https://godotengine.org/article/godot-editor-horizon-store-early-access-release/ Introducing the Godot Editor for Meta Quest (Horizon OS) devices Fredia Huya-Kouadio Dev snapshot: Godot 4.4 dev 2 2024-09-10T16:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-2/ The PR harvest keeps going strongly for Godot 4.4, with massive new features such as typed dictionaries and error-less project import! Rémi Verschelde Godot 3.6 finally released! 2024-09-09T11:00:00+00:00 https://godotengine.org/article/godot-3-6-finally-released/ After 2 years of development, Godot 3.6 is finally out and it comes fully packed with features and quality of life improvements! This includes 2D physics interpolation and hierarchical culling, and 3D mesh merging, level of detail, tighter shadow culling, ORM materials, and more. lawnjelly Submissions open for Godot 2024 showreel! 2024-09-05T15:00:00+00:00 https://godotengine.org/article/submissions-open-godot-2024-showreel/ Showcase your Godot creations in 2024! We're inviting submissions of short videos featuring your published or in-progress Godot games or tools. Don't miss this chance to be a part of it! Emi About Official Console Ports 2024-09-03T18:30:00+00:00 https://godotengine.org/article/about-official-console-ports/ With this post we aim to address the community’s questions about the lack of official console ports through the Godot Foundation. Emi Meeting the community at gamescom 2024 2024-09-02T18:30:00+00:00 https://godotengine.org/article/review-gamescom-2024/ Back from gamescom, ready to report. Nat Dev snapshot: Godot 4.4 dev 1 2024-08-26T13:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-1/ The first snapshot after releasing 4.3, already packed with new features! Clay John Godot 4.3, a shared effort 2024-08-15T11:00:00+00:00 https://godotengine.org/article/godot-4-3-a-shared-effort/ With over 3,500 commits authored by over 500 contributors, the latest Godot Engine release comes packed full of new features and improvements. Godot contributors Design of the Skeleton Modifier 3D 2024-08-12T10:00:00+00:00 https://godotengine.org/article/design-of-the-skeleton-modifier-3d/ We have reworked the skeleton bone update process to add SkeletonModifier3D for modifying the Skeleton. Silc Renew Release candidate: Godot 4.3 RC 3 2024-08-08T14:00:00+00:00 https://godotengine.org/article/release-candidate-godot-4-3-rc-3/ With all known major regressions fixed, we are now publishing a third release candidate to confirm that 4.3 is ready to go stable. Rémi Verschelde Gamescom here we come! 2024-08-06T17:00:00+00:00 https://godotengine.org/article/gamescom-2024/ We are once again attending gamescom, and organizing two meet-up opportunities this time. Nat Introducing the improved ufbx importer in Godot 4.3 2024-08-02T20:36:00+00:00 https://godotengine.org/article/introducing-the-improved-ufbx-importer-in-godot-4-3/ Godot 4.3 now includes native .fbx support Lyuma Release candidate: Godot 4.3 RC 2 2024-08-01T16:00:00+00:00 https://godotengine.org/article/release-candidate-godot-4-3-rc-2/ After a week in the Release Candidate stage, we have squashed most bugs we were still tracking for 4.3, and are ready for a second candidate. Rémi Verschelde Release candidate: Godot 4.3 RC 1 2024-07-25T18:00:00+00:00 https://godotengine.org/article/release-candidate-godot-4-3-rc-1/ We are cautiously optimistic that Godot 4.3 is ready for release, please test it and let us know if we are right! Rémi Verschelde Dev snapshot: Godot 4.3 beta 3 2024-07-10T17:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-3-beta-3/ 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. Rémi Verschelde New Dev Fund Perks: Discord Role and Forum Badge 2024-07-10T12:00:00+00:00 https://godotengine.org/article/development-fund-perks/ Proudly display your support on our community platforms. Winston Yallow Release candidate: Godot 3.6 RC 1 2024-07-09T08:00:00+00:00 https://godotengine.org/article/release-candidate-godot-3-6-rc-1/ We are now at the Release Candidate stage, finalizing everything so that we can release 3.6-stable for all users. lawnjelly
\ No newline at end of file
diff --git a/blog/10/index.html b/blog/10/index.html
index b034a819fb..5d2f5b0b5c 100644
--- a/blog/10/index.html
+++ b/blog/10/index.html
@@ -63,7 +63,7 @@
10
11
12
-
+
\ No newline at end of file
diff --git a/blog/11/index.html b/blog/11/index.html
index bbd8775381..fd11b9e793 100644
--- a/blog/11/index.html
+++ b/blog/11/index.html
@@ -63,7 +63,7 @@
11
12
13
-
+
\ No newline at end of file
diff --git a/blog/12/index.html b/blog/12/index.html
index fc4ffa4022..7103d9c56f 100644
--- a/blog/12/index.html
+++ b/blog/12/index.html
@@ -63,7 +63,7 @@
12
13
14
-
+
\ No newline at end of file
diff --git a/blog/13/index.html b/blog/13/index.html
index 1297c90bc2..2ae2654b76 100644
--- a/blog/13/index.html
+++ b/blog/13/index.html
@@ -63,7 +63,7 @@
13
14
15
-
+
\ No newline at end of file
diff --git a/blog/14/index.html b/blog/14/index.html
index a3652641f2..cdcd7a24d4 100644
--- a/blog/14/index.html
+++ b/blog/14/index.html
@@ -63,7 +63,7 @@
14
15
16
-
+
\ No newline at end of file
diff --git a/blog/15/index.html b/blog/15/index.html
index cbae53f247..25dadf26c6 100644
--- a/blog/15/index.html
+++ b/blog/15/index.html
@@ -64,7 +64,7 @@
15
16
17
-
+
\ No newline at end of file
diff --git a/blog/16/index.html b/blog/16/index.html
index f577d86d6f..8456b23112 100644
--- a/blog/16/index.html
+++ b/blog/16/index.html
@@ -63,7 +63,7 @@
16
17
18
-
+
\ No newline at end of file
diff --git a/blog/17/index.html b/blog/17/index.html
index 47f9c8dd40..e851fc36b2 100644
--- a/blog/17/index.html
+++ b/blog/17/index.html
@@ -63,7 +63,7 @@
17
18
19
-
+
\ No newline at end of file
diff --git a/blog/18/index.html b/blog/18/index.html
index f080ac6ab7..3bd841f2c6 100644
--- a/blog/18/index.html
+++ b/blog/18/index.html
@@ -63,7 +63,7 @@
18
19
20
-
+
\ No newline at end of file
diff --git a/blog/19/index.html b/blog/19/index.html
index 32a0655258..90f73f9629 100644
--- a/blog/19/index.html
+++ b/blog/19/index.html
@@ -63,7 +63,7 @@
19
20
21
-
+
\ No newline at end of file
diff --git a/blog/2/index.html b/blog/2/index.html
index 86d30b549f..f0946cc239 100644
--- a/blog/2/index.html
+++ b/blog/2/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/20/index.html b/blog/20/index.html
index 6c17d297a6..6433368133 100644
--- a/blog/20/index.html
+++ b/blog/20/index.html
@@ -63,7 +63,7 @@
20
21
22
-
+
\ No newline at end of file
diff --git a/blog/21/index.html b/blog/21/index.html
index 997f98a70a..05c8129a60 100644
--- a/blog/21/index.html
+++ b/blog/21/index.html
@@ -63,7 +63,7 @@
21
22
23
-
+
\ No newline at end of file
diff --git a/blog/22/index.html b/blog/22/index.html
index 866a058e9d..6b1c0c2397 100644
--- a/blog/22/index.html
+++ b/blog/22/index.html
@@ -64,7 +64,7 @@
22
23
24
-
+
\ No newline at end of file
diff --git a/blog/23/index.html b/blog/23/index.html
index e9bbbb49f8..fc720cabc1 100644
--- a/blog/23/index.html
+++ b/blog/23/index.html
@@ -67,7 +67,7 @@
23
24
25
-
+
\ No newline at end of file
diff --git a/blog/24/index.html b/blog/24/index.html
index af50215695..49f5ba8b38 100644
--- a/blog/24/index.html
+++ b/blog/24/index.html
@@ -67,7 +67,7 @@
24
25
26
-
+
\ No newline at end of file
diff --git a/blog/25/index.html b/blog/25/index.html
index 2deadeeb70..8a847ba5d0 100644
--- a/blog/25/index.html
+++ b/blog/25/index.html
@@ -63,7 +63,7 @@
25
26
27
-
+
\ No newline at end of file
diff --git a/blog/26/index.html b/blog/26/index.html
index 110f613662..34a8f99cad 100644
--- a/blog/26/index.html
+++ b/blog/26/index.html
@@ -64,7 +64,7 @@
26
27
28
-
+
\ No newline at end of file
diff --git a/blog/27/index.html b/blog/27/index.html
index 740e349379..725446303d 100644
--- a/blog/27/index.html
+++ b/blog/27/index.html
@@ -63,7 +63,7 @@
26
27
28
-
+
\ No newline at end of file
diff --git a/blog/28/index.html b/blog/28/index.html
index b527c9e162..cf14f9cece 100644
--- a/blog/28/index.html
+++ b/blog/28/index.html
@@ -56,7 +56,7 @@
25
26
27
-28
+28
\ No newline at end of file
diff --git a/blog/3/index.html b/blog/3/index.html
index d37b0a515c..d5c67a4571 100644
--- a/blog/3/index.html
+++ b/blog/3/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/4/index.html b/blog/4/index.html
index 0ce3be8a7c..3c98ed4cd3 100644
--- a/blog/4/index.html
+++ b/blog/4/index.html
@@ -63,7 +63,7 @@
4
5
6
-
+
\ No newline at end of file
diff --git a/blog/5/index.html b/blog/5/index.html
index e8240216d0..34080ed54f 100644
--- a/blog/5/index.html
+++ b/blog/5/index.html
@@ -63,7 +63,7 @@
5
6
7
-
+
\ No newline at end of file
diff --git a/blog/6/index.html b/blog/6/index.html
index 3b31c37ca1..c1dd96a9f2 100644
--- a/blog/6/index.html
+++ b/blog/6/index.html
@@ -63,7 +63,7 @@
6
7
8
-
+
\ No newline at end of file
diff --git a/blog/7/index.html b/blog/7/index.html
index 4cfe3b54d2..30f5d45510 100644
--- a/blog/7/index.html
+++ b/blog/7/index.html
@@ -63,7 +63,7 @@
7
8
9
-
+
\ No newline at end of file
diff --git a/blog/8/index.html b/blog/8/index.html
index 5fe5e43ec8..48c57ed33f 100644
--- a/blog/8/index.html
+++ b/blog/8/index.html
@@ -63,7 +63,7 @@
8
9
10
-
+
\ No newline at end of file
diff --git a/blog/9/index.html b/blog/9/index.html
index a35f0d952b..d6961b05b1 100644
--- a/blog/9/index.html
+++ b/blog/9/index.html
@@ -63,7 +63,7 @@
9
10
11
-
+
\ No newline at end of file
diff --git a/blog/events/2/index.html b/blog/events/2/index.html
index 0d78f698d1..c4de9fe442 100644
--- a/blog/events/2/index.html
+++ b/blog/events/2/index.html
@@ -60,7 +60,7 @@
1
2
3
-
+
\ No newline at end of file
diff --git a/blog/events/3/index.html b/blog/events/3/index.html
index 8a31eb5045..8e0bd29de9 100644
--- a/blog/events/3/index.html
+++ b/blog/events/3/index.html
@@ -52,7 +52,7 @@
- 9 December 2014
Winter holiday Godot game jam! GamingPenguin from the forum is organizing a Winter Holidays Godot Game Jam! (Summer Holidays Game Jam for us in the southern hemisphere).
+3
\ No newline at end of file
diff --git a/blog/events/index.html b/blog/events/index.html
index 623f3f7c0a..d3cff67c14 100644
--- a/blog/events/index.html
+++ b/blog/events/index.html
@@ -57,7 +57,7 @@
- 21 January 2021 Online GodotCon 2021: Schedule Online GodotCon 2021 is right around the corner, streaming on Saturday, January 23rd from 8:45 am UTC! Join us on the YouTube Premiere to watch the conference at the same time as all other Godot users in the world, and use our new open source chat platform to discuss about talks or Godot in general with attendees and speakers.
+
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index 038bf8ed94..533c8a087e 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -61,7 +61,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/news/2/index.html b/blog/news/2/index.html
index 9e9eda2279..f24c270b9b 100644
--- a/blog/news/2/index.html
+++ b/blog/news/2/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/news/3/index.html b/blog/news/3/index.html
index ae396d81fb..a720dde06c 100644
--- a/blog/news/3/index.html
+++ b/blog/news/3/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/news/4/index.html b/blog/news/4/index.html
index cf966423cc..3e8de4e623 100644
--- a/blog/news/4/index.html
+++ b/blog/news/4/index.html
@@ -67,7 +67,7 @@
4
5
6
-
+
\ No newline at end of file
diff --git a/blog/news/5/index.html b/blog/news/5/index.html
index 61d001d5db..0f94a7c79f 100644
--- a/blog/news/5/index.html
+++ b/blog/news/5/index.html
@@ -63,7 +63,7 @@
4
5
6
-
+
\ No newline at end of file
diff --git a/blog/news/6/index.html b/blog/news/6/index.html
index 88b6c26cc8..a6b933c064 100644
--- a/blog/news/6/index.html
+++ b/blog/news/6/index.html
@@ -25,7 +25,7 @@
3
4
5
-6
+6
\ No newline at end of file
diff --git a/blog/news/index.html b/blog/news/index.html
index 0de3553849..8100af08b1 100644
--- a/blog/news/index.html
+++ b/blog/news/index.html
@@ -61,7 +61,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/pre-release/10/index.html b/blog/pre-release/10/index.html
index 986f850e6d..53a7c7415f 100644
--- a/blog/pre-release/10/index.html
+++ b/blog/pre-release/10/index.html
@@ -49,7 +49,7 @@
7
8
9
-10
+10
\ No newline at end of file
diff --git a/blog/pre-release/2/index.html b/blog/pre-release/2/index.html
index cd5dcdf288..811e696f0f 100644
--- a/blog/pre-release/2/index.html
+++ b/blog/pre-release/2/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/pre-release/3/index.html b/blog/pre-release/3/index.html
index 658cb0b10f..3137f281ec 100644
--- a/blog/pre-release/3/index.html
+++ b/blog/pre-release/3/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/pre-release/4/index.html b/blog/pre-release/4/index.html
index 6591c9b7ab..479ec18213 100644
--- a/blog/pre-release/4/index.html
+++ b/blog/pre-release/4/index.html
@@ -63,7 +63,7 @@
4
5
6
-
+
\ No newline at end of file
diff --git a/blog/pre-release/5/index.html b/blog/pre-release/5/index.html
index e767066e3c..8a1d874574 100644
--- a/blog/pre-release/5/index.html
+++ b/blog/pre-release/5/index.html
@@ -63,7 +63,7 @@
5
6
7
-
+
\ No newline at end of file
diff --git a/blog/pre-release/6/index.html b/blog/pre-release/6/index.html
index 7cc5699075..aa7280a0f5 100644
--- a/blog/pre-release/6/index.html
+++ b/blog/pre-release/6/index.html
@@ -63,7 +63,7 @@
6
7
8
-
+
\ No newline at end of file
diff --git a/blog/pre-release/7/index.html b/blog/pre-release/7/index.html
index 035fd1c00b..218cbebb38 100644
--- a/blog/pre-release/7/index.html
+++ b/blog/pre-release/7/index.html
@@ -64,7 +64,7 @@
7
8
9
-
+
\ No newline at end of file
diff --git a/blog/pre-release/8/index.html b/blog/pre-release/8/index.html
index 4024267d05..89eacaadb9 100644
--- a/blog/pre-release/8/index.html
+++ b/blog/pre-release/8/index.html
@@ -63,7 +63,7 @@
8
9
10
-
+
\ No newline at end of file
diff --git a/blog/pre-release/9/index.html b/blog/pre-release/9/index.html
index 256299127c..eab165734f 100644
--- a/blog/pre-release/9/index.html
+++ b/blog/pre-release/9/index.html
@@ -63,7 +63,7 @@
8
9
10
-
+
\ No newline at end of file
diff --git a/blog/pre-release/index.html b/blog/pre-release/index.html
index 184ebeb413..afc5e11e26 100644
--- a/blog/pre-release/index.html
+++ b/blog/pre-release/index.html
@@ -61,7 +61,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/progress-report/2/index.html b/blog/progress-report/2/index.html
index 9c0f26ccd0..4bc60f727c 100644
--- a/blog/progress-report/2/index.html
+++ b/blog/progress-report/2/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/progress-report/3/index.html b/blog/progress-report/3/index.html
index daaf19f1ce..acfd695157 100644
--- a/blog/progress-report/3/index.html
+++ b/blog/progress-report/3/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/progress-report/4/index.html b/blog/progress-report/4/index.html
index caf1846f87..46723398a3 100644
--- a/blog/progress-report/4/index.html
+++ b/blog/progress-report/4/index.html
@@ -63,7 +63,7 @@
4
5
6
-
+
\ No newline at end of file
diff --git a/blog/progress-report/5/index.html b/blog/progress-report/5/index.html
index fd4a118aeb..4bc8a4c132 100644
--- a/blog/progress-report/5/index.html
+++ b/blog/progress-report/5/index.html
@@ -63,7 +63,7 @@
5
6
7
-
+
\ No newline at end of file
diff --git a/blog/progress-report/6/index.html b/blog/progress-report/6/index.html
index e449115c8d..4f8b36b6bd 100644
--- a/blog/progress-report/6/index.html
+++ b/blog/progress-report/6/index.html
@@ -65,7 +65,7 @@
5
6
7
-
+
\ No newline at end of file
diff --git a/blog/progress-report/7/index.html b/blog/progress-report/7/index.html
index 9416a7ec8f..1ccf0fbfeb 100644
--- a/blog/progress-report/7/index.html
+++ b/blog/progress-report/7/index.html
@@ -58,7 +58,7 @@
4
5
6
-7
+7
\ No newline at end of file
diff --git a/blog/progress-report/index.html b/blog/progress-report/index.html
index d6dffd5e75..d9ee5ba80e 100644
--- a/blog/progress-report/index.html
+++ b/blog/progress-report/index.html
@@ -61,7 +61,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/release/2/index.html b/blog/release/2/index.html
index e844b13f67..251ab7fea0 100644
--- a/blog/release/2/index.html
+++ b/blog/release/2/index.html
@@ -60,7 +60,7 @@
1
2
3
-
+
\ No newline at end of file
diff --git a/blog/release/3/index.html b/blog/release/3/index.html
index 511e997585..9870127fc3 100644
--- a/blog/release/3/index.html
+++ b/blog/release/3/index.html
@@ -32,7 +32,7 @@
Because of this we are opening the engine to the community so anyone can develop games using Godot and benefit from it’s amazing workflow design. We are also opening the source code with the most generous license, MIT with the hope that other developers will contribute to it and publish their games without any restriction.
+3
\ No newline at end of file
diff --git a/blog/release/index.html b/blog/release/index.html
index 067a84d7fb..1145bf8430 100644
--- a/blog/release/index.html
+++ b/blog/release/index.html
@@ -57,7 +57,7 @@
- 17 December 2021 Maintenance release: Godot 3.4.1 Godot 3.4.1 is the first maintenance release in the 3.4 stable branch, fixing a number of issues (including some 3.4 regressions) while preserving compatibility with 3.4-stable. Alongside general bugfixing, it improves Godot's compatibility with Windows 11's new Windows Terminal, which prevented starting the Godot editor from the project manager.
+
\ No newline at end of file
diff --git a/blog/showcase/index.html b/blog/showcase/index.html
index f050d26dd8..a273180afc 100644
--- a/blog/showcase/index.html
+++ b/blog/showcase/index.html
@@ -37,7 +37,7 @@
Juan Linietsky
- 16 April 2019 Announcing the Godot 2019 showreel Another year, another showreel. As every year, the amount of quality games being created by Godot has increased significantly (as did the amount of submissions).
Juan Linietsky
-
- 22 February 2019 Submissions open for Godot 2019 showreel Are you proud of your game and would you like us to showcase it in Godot's 2019 showreel? Please send us a short video (10-15 secs) for us to include it!
+ - 22 February 2019 Submissions open for Godot 2019 showreel Are you proud of your game and would you like us to showcase it in Godot's 2019 showreel? Please send us a short video (10-15 secs) for us to include it!
\ No newline at end of file
diff --git a/code-of-conduct/index.html b/code-of-conduct/index.html
index 9fdf7b5665..9d388e8a86 100644
--- a/code-of-conduct/index.html
+++ b/code-of-conduct/index.html
@@ -35,7 +35,7 @@
acceptable.Reporting a breach If you witness or are involved in an interaction with another community member that you think may violate this Code
of Conduct, please contact Godot's Code of Conduct team .
The Godot team recognizes that it can be difficult to come forward in cases of a violation of the Code of Conduct.
To make it easier to report violations, we provide a single point of contact via email at: conduct@godotengine.org . If you are more comfortable reaching out to a
-single person, you are also welcome to contact one or more members of the team using their personal emails listed below , or via direct messaging on community platforms where they are present.
Code of Conduct team George Marques, george@godotengine.org (he/him)GitHub / Contributors Chat / Discord / Reddit / Twitter: vnen Languages: English, Portuguese HP van Braam, hp@godotengine.org (they/them)GitHub: hpvb – Contributors Chat: hp – Discord / Reddit: TMM Languages: English, Dutch Julian Murgia, julian@godotengine.org (he/him)GitHub / Contributors Chat / Discord/ Reddit: StraToN – Twitter: TheStraToN Languages: English, French Lara, lara@godotengine.org (she/her)Languages: English, German Rémi Verschelde, remi@godotengine.org (he/him)GitHub / Reddit: akien-mga – Contributors Chat / Discord / Twitter: Akien Languages: English, French, German
+single person, you are also welcome to contact one or more members of the team using their personal emails listed below , or via direct messaging on community platforms where they are present.Code of Conduct team George Marques, george@godotengine.org (he/him)GitHub / Contributors Chat / Discord / Reddit / Twitter: vnen Languages: English, Portuguese HP van Braam, hp@godotengine.org (they/them)GitHub: hpvb – Contributors Chat: hp – Discord / Reddit: TMM Languages: English, Dutch Julian Murgia, julian@godotengine.org (he/him)GitHub / Contributors Chat / Discord/ Reddit: StraToN – Twitter: TheStraToN Languages: English, French Lara, lara@godotengine.org (she/her)Languages: English, German Rémi Verschelde, remi@godotengine.org (he/him)GitHub / Reddit: akien-mga – Contributors Chat / Discord / Twitter: Akien Languages: English, French, German
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index fe4cba814d..8f511458af 100644
--- a/community/index.html
+++ b/community/index.html
@@ -1,6 +1,6 @@
Community – Godot Engine Community Godot has a very active community across multiple channels. By joining Godot communities, you agree to follow Godot's Code of Conduct .
+Community Godot has a very active community across multiple channels. By joining Godot communities, you agree to follow Godot's Code of Conduct .
\ No newline at end of file
diff --git a/community/user-groups/index.html b/community/user-groups/index.html
index b7b26a7296..5b608ccece 100644
--- a/community/user-groups/index.html
+++ b/community/user-groups/index.html
@@ -73,7 +73,7 @@
(Discord )Godot Wisconsin
(Meetup ) Chickensoft
(Discord )If you run a local community and would like to have it listed here,
-please send an email to webmaster at godotengine · org .
+please send an email to webmaster at godotengine · org .
\ No newline at end of file
diff --git a/contact/index.html b/contact/index.html
index fdb6996a4c..0defbc273a 100644
--- a/contact/index.html
+++ b/contact/index.html
@@ -23,7 +23,7 @@
must be directed to its administrators, not to us:
Godot Community Forum Contact
General inquiries For other inquiries such as business, education, non-profit, promotion, etc.
Contact contact@godotengine.org .
Godot Engine team The Godot Engine team is made of hundreds of developers around the world,
-with both regular and occasional contributors.
Project Founders: Juan Linietsky (reduz) Ariel Manzur (punto-) Lead Developer: Project Manager: Rémi Verschelde (akien-mga) Developers: Aaron Franke (aaronfranke) Aaron Record (LightningAA) Adam Scott (adamscott) Alexander Holland (AlexHolly) Alex Drozd (brno32) Alexey Khoroshavin (allkhor) Alfred Reinold Baudisch (alfredbaudisch) Alistair Leslie-Hughes (alesliehughes) Alket Rexhepi (alketii) Andrea Catania (AndreaCatania) Andreia Gaita (shana) Andrii Doroshenko (Xrayez) Andy Maloney (asmaloney) Andy Moss (MillionOstrich) Angad Kambli (angad-k) Anilforextra (AnilBK) Anish Bhobe (KidRigger) Anton Yabchinskiy (a12n) Anutrix Aren Villanueva (kurikaesu) Ariel Manzur (punto-) Arman Elgudzhyan (puchik) AThousandShips aXu-AP Bartłomiej T. Listwon (Listwon) Bastiaan Olij (BastiaanOlij) Ben Brookshire (sheepandshepherd) Benjamin Larsson (Nallebeorn) Bernhard Liebl (poke1024) Bhuvan Vemula (Bhu1-V) bitsawer BlueCube3310 Błażej Szczygieł (zaps166) Bojidar Marinov (bojidar-bg) Brian Semrau (briansemrau) Bruno Lourenço (MadEqua) Cameron Reikes (creikey) Camille Mohr-Daurat (pouleyKetchoupp) Caner Demirer (cdemirer) Carl Olsson (not-surt) Carter Anderson (cart) ChibiDenDen Chris Bradfield (cbscribe) Clay John (clayjohn) ConteZero Dana Olson (adolson) Daniel J. Ramirez (djrm) Daniel Rakos (aqnuep) Daniel Zilberleyb (dzil123) Danil Alexeev (dalexeev) dankan1890 Darío Banini (DarioSamo) David Cambré (Gallilus) David Sichma (DavidSichma) David Snopek (dsnopek) Dharkael (lupoDharkael) Dmitry Koteroff (Krakean) Dmitry Maganov (vonagam) Dominik Jasiński (dreamsComeTrue) Douglas Leão (DeeJayLSP) DualMatrix Ellen Poe (ellenhp) Emmanuel Barroga (codecustard) Emmanuel Leblond (touilleMan) Eoin O'Neill (Eoin-ONeill-Yokai) Eric Lasota (elasota) Eric M (EricEzaM) Eric Rybicki (ericrybick) Erik Selecký (rxlecky) est31 Eveline Jarosz (Marqin) Fabian Mathews (supagu) Fabio Alessandrelli (Faless) Fabrice Cipolla (fabriceci) Ferenc Arn (tagcup) FireForge (fire-forge) Florian Kothmeier (Dragoncraft89) follower foxydevloper François Belair (Razoric480) Franklin Sobrinho (TheHX) Fredia Huya-Kouadio (m4gr3d) Geequlim George Marques (vnen) Gerrit Großkopf (Grosskopf) Gilles Roudiere (groud) Gordon MacPherson (RevoluPowered) Guilherme Felipe de C. G. da Silva (guilhermefelipecgs) Hakim Rouatbi (hakro) Hanif Bin Ariffin (hbina) Haoyu Qiu (timothyqiu) HP van Braam (hpvb) Hendrik Brucker (Geometror) hilfazer Hiroshi Ogawa (hi-ogawa) HolonProduction homer666 hoontee Hugo Locurcio (Calinou) Ian Bishop (ianb96) Ibrahn Sahir (ibrahn) Ignacio Etcheverry (neikeq) Igor Kordiukiewicz (IgorKordiukiewicz) Ilaria Cislaghi (QbieShay) Indah Sylvia (ISylvox) J08nY Jake Young (Duroxxigar) Jakub Grzesik (kubecz3k) Jakub Marcowski (Chubercik) James Buck (jbuck3) Jan Haller (Bromeon) Jason Knight (jasonwinterpixel) Jean-Michel Bernard (jmb462) Jérôme Gully (Nutriz) Jia Jun Chai (SkyLucilfer) jitspoe Joan Fons Sanchez (JFonS) Johan Manuel (29jm) Johannes Witt (HaSa1002) Jonathan Nicholl (jtnicholl) Jordan Schidlowsky (winterpixelgames) Josh Jones (DarkKilauea) Joshua Grams (JoshuaGrams) Juan Linietsky (reduz) Julian Murgia (StraToN) Julien Nguyen (Blackiris) Jummit Justo Delgado (mrcdk) karroffel Kelly Thomas (KellyThomas) kleonc Kongfa Waroros (gongpha) Kostadin Damyanov (Max-Might) K. S. Ernest (iFire) Lee (fire) lawnjelly Leon Krause (leonkrause) Liz Haas (27thLiz) Lucien Menassol (Kanabenki) Lyuma Maganty Rushyendra (mrushyendra) Malcolm Nixon (Malcolmnixon) Manuele Finocchiaro (m4nu3lf) Marcel Admiraal (madmiraal) Marcelo Fernandez (marcelofg55) Marc Gilleron (Zylann) Marcin Zawiejski (dragmz) Marcus Brummer (mbrlabs) Marcus Elg (MCrafterzz) Mariano Javier Suligoy (MarianoGnu) Mario Schlack (hurikhan) Marios Staikopoulos (marstaik) Marius Hanl (Maran23) Mark Riedesel (klowner) Markus Sauermann (Sauermann) Martin Capitanio (capnm) Martin Liška (marxin) Martin Sjursen (binbitten) marynate Masoud BH (masoudbh3) Mateo Kuruk Miccino (kuruk-mm) Matias N. Goldberg (darksylinc) Matthew (skyace65) Matthias Hölzl (hoelzl) Max Hilbrunner (mhilbrunner) merumelu Meru Patel (Janglee123) MewPurPur Michael Alexsander (YeldhamDev) Michał Iwańczuk (iwek7) MichiRecRoom (LikeLakers2) Micky (Mickeon) Mikael Hermansson (mihe) MinusKube MJacred Morris "Tabor" Arroad (mortarroad) mrezai Muhammad Huri (CakHuri) muiroc myaaaaaaaaa Nathan Franke (nathanfranke) Nathan Lovato (NathanLovato) Nathan Warden (NathanWarden) Nicholas Huelin (SirQuartz) Nikita Lita (nikitalita) Nils André-Chang (NilsIrl) Noah Beard (TwistedTwigleg) Nông Văn Tình (nongvantinh) Nuno Donato (nunodonato) ocean (they/them) (anvilfolk) Omar El Sheikh (The-O-King) Ovnuniarchos Pascal Richter (ShyRed) passivestar Patrick Dawson (pkdawson) Patrick Exner (FlameLizard) Patrick (firefly2442) Paul Batty (Paulb23) Paul Joannon (paulloz) Paul Trojahn (ptrojahn) Pāvels Nadtočajevs (bruvzg) Paweł Fertyk (pfertyk) Pawel Kowal (pkowal1982) Pawel Lampe (Scony) Pedro J. Estébanez (RandomShaper) Pieter-Jan Briers (PJB3005) Poommetee Ketson (Noshyaar) Przemysław Gołąb (n-pigeon) Rafael M. G. (rafallus) Raffaele Picca (RPicster) Rafał Mikrut (qarmin) Ralf Hölzemer (rollenrolm) Ramesh Ravone (RameshRavone) Raphael2048 Raul Santos (raulsntos) Ray Koopa (RayKoopa) RedMser RedworkDE Rémi Verschelde (akien-mga) Rhody Lugo (rraallvv) Ricardo Buring (rburing) Ricardo Subtil (Ev1lbl0w) Riteo Siuga (Riteo) Roberto F. Arroyo (robfram) Robert Yevdokimov (ryevdokimov) Robin Hübner (profan) romulox-x Rune Smith (rune-scape) Ruslan Mustakov (endragor) Ryan Roden-Corrent (rrcore) Saniko (sanikoyes) santouits SaracenOne Septian Ganendra S. K. (sepTN) Sergey Minakov (naithar) sersoong Shiqing (kawa-yoiko) Silc 'Tokage' Renew (TokageItLab) Simon Wenner (swenner) smix8 snailrhymer Sofox (TheSofox) Stanislav Labzyuk (DarkMessiah) Stijn Hinlopen (hinlopen) stmSi Swarnim Arun (minraws) TC (floppyhammer) TechnoPorg Thaddeus Crews (Repiteo) Thakee Nathees (ThakeeNathees) thebestnom Theo Hallenius (TheoXD) Timo Schwarzer (timoschwarzer) Timothé Bonhoure (ajreckof) Timo (toger5) Tomasz Chabora (KoBeWi) trollodel Twarit Waikar (IronicallySerious) Umang Kalra (theoway) Vinzenz Feenstra (vinzenz) Vitika Soni (Vitika9) 박한얼 (volzhs) V. Vamsi Krishna (vkbsb) Wilhem Barbier (nounoursheureux) William Deurwaarder (williamd67) Will Nations (willnationsdev) Wilson E. Alvarez (Rubonnek) Xavier Cho (mysticfall) Yaohua Xiong (xiongyaohua) yg2f (SuperUserNameMan) Yordan Dolchinkov (Jordyfel) Yuri Rubinsky (Chaosus) Yuri Sizov (YuriSizov) Zae Chao (zaevi) Zak Stam (zaksnet) Zher Huei Lee (leezh) Zi Ye (MajorMcDoom) ZuBsPaCe 谢天 (jsjtxietian) 风青山 (Rindbee)
+with both regular and occasional contributors.Project Founders: Juan Linietsky (reduz) Ariel Manzur (punto-) Lead Developer: Project Manager: Rémi Verschelde (akien-mga) Developers: Aaron Franke (aaronfranke) Aaron Record (LightningAA) Adam Scott (adamscott) Alexander Holland (AlexHolly) Alex Drozd (brno32) Alexey Khoroshavin (allkhor) Alfred Reinold Baudisch (alfredbaudisch) Alistair Leslie-Hughes (alesliehughes) Alket Rexhepi (alketii) Andrea Catania (AndreaCatania) Andreia Gaita (shana) Andrii Doroshenko (Xrayez) Andy Maloney (asmaloney) Andy Moss (MillionOstrich) Angad Kambli (angad-k) Anilforextra (AnilBK) Anish Bhobe (KidRigger) Anton Yabchinskiy (a12n) Anutrix Aren Villanueva (kurikaesu) Ariel Manzur (punto-) Arman Elgudzhyan (puchik) AThousandShips aXu-AP Bartłomiej T. Listwon (Listwon) Bastiaan Olij (BastiaanOlij) Ben Brookshire (sheepandshepherd) Benjamin Larsson (Nallebeorn) Bernhard Liebl (poke1024) Bhuvan Vemula (Bhu1-V) bitsawer BlueCube3310 Błażej Szczygieł (zaps166) Bojidar Marinov (bojidar-bg) Brian Semrau (briansemrau) Bruno Lourenço (MadEqua) Cameron Reikes (creikey) Camille Mohr-Daurat (pouleyKetchoupp) Caner Demirer (cdemirer) Carl Olsson (not-surt) Carter Anderson (cart) ChibiDenDen Chris Bradfield (cbscribe) Clay John (clayjohn) ConteZero Dana Olson (adolson) Daniel J. Ramirez (djrm) Daniel Rakos (aqnuep) Daniel Zilberleyb (dzil123) Danil Alexeev (dalexeev) dankan1890 Darío Banini (DarioSamo) David Cambré (Gallilus) David Sichma (DavidSichma) David Snopek (dsnopek) Dharkael (lupoDharkael) Dmitry Koteroff (Krakean) Dmitry Maganov (vonagam) Dominik Jasiński (dreamsComeTrue) Douglas Leão (DeeJayLSP) DualMatrix Ellen Poe (ellenhp) Emmanuel Barroga (codecustard) Emmanuel Leblond (touilleMan) Eoin O'Neill (Eoin-ONeill-Yokai) Eric Lasota (elasota) Eric M (EricEzaM) Eric Rybicki (ericrybick) Erik Selecký (rxlecky) est31 Eveline Jarosz (Marqin) Fabian Mathews (supagu) Fabio Alessandrelli (Faless) Fabrice Cipolla (fabriceci) Ferenc Arn (tagcup) FireForge (fire-forge) Florian Kothmeier (Dragoncraft89) follower foxydevloper François Belair (Razoric480) Franklin Sobrinho (TheHX) Fredia Huya-Kouadio (m4gr3d) Geequlim George Marques (vnen) Gerrit Großkopf (Grosskopf) Gilles Roudiere (groud) Gordon MacPherson (RevoluPowered) Guilherme Felipe de C. G. da Silva (guilhermefelipecgs) Hakim Rouatbi (hakro) Hanif Bin Ariffin (hbina) Haoyu Qiu (timothyqiu) HP van Braam (hpvb) Hendrik Brucker (Geometror) hilfazer Hiroshi Ogawa (hi-ogawa) HolonProduction homer666 hoontee Hugo Locurcio (Calinou) Ian Bishop (ianb96) Ibrahn Sahir (ibrahn) Ignacio Etcheverry (neikeq) Igor Kordiukiewicz (IgorKordiukiewicz) Ilaria Cislaghi (QbieShay) Indah Sylvia (ISylvox) J08nY Jake Young (Duroxxigar) Jakub Grzesik (kubecz3k) Jakub Marcowski (Chubercik) James Buck (jbuck3) Jan Haller (Bromeon) Jason Knight (jasonwinterpixel) Jean-Michel Bernard (jmb462) Jérôme Gully (Nutriz) Jia Jun Chai (SkyLucilfer) jitspoe Joan Fons Sanchez (JFonS) Johan Manuel (29jm) Johannes Witt (HaSa1002) Jonathan Nicholl (jtnicholl) Jordan Schidlowsky (winterpixelgames) Josh Jones (DarkKilauea) Joshua Grams (JoshuaGrams) Juan Linietsky (reduz) Julian Murgia (StraToN) Julien Nguyen (Blackiris) Jummit Justo Delgado (mrcdk) karroffel Kelly Thomas (KellyThomas) kleonc Kongfa Waroros (gongpha) Kostadin Damyanov (Max-Might) K. S. Ernest (iFire) Lee (fire) lawnjelly Leon Krause (leonkrause) Liz Haas (27thLiz) Lucien Menassol (Kanabenki) Lyuma Maganty Rushyendra (mrushyendra) Malcolm Nixon (Malcolmnixon) Manuele Finocchiaro (m4nu3lf) Marcel Admiraal (madmiraal) Marcelo Fernandez (marcelofg55) Marc Gilleron (Zylann) Marcin Zawiejski (dragmz) Marcus Brummer (mbrlabs) Marcus Elg (MCrafterzz) Mariano Javier Suligoy (MarianoGnu) Mario Schlack (hurikhan) Marios Staikopoulos (marstaik) Marius Hanl (Maran23) Mark Riedesel (klowner) Markus Sauermann (Sauermann) Martin Capitanio (capnm) Martin Liška (marxin) Martin Sjursen (binbitten) marynate Masoud BH (masoudbh3) Mateo Kuruk Miccino (kuruk-mm) Matias N. Goldberg (darksylinc) Matthew (skyace65) Matthias Hölzl (hoelzl) Max Hilbrunner (mhilbrunner) merumelu Meru Patel (Janglee123) MewPurPur Michael Alexsander (YeldhamDev) Michał Iwańczuk (iwek7) MichiRecRoom (LikeLakers2) Micky (Mickeon) Mikael Hermansson (mihe) MinusKube MJacred Morris "Tabor" Arroad (mortarroad) mrezai Muhammad Huri (CakHuri) muiroc myaaaaaaaaa Nathan Franke (nathanfranke) Nathan Lovato (NathanLovato) Nathan Warden (NathanWarden) Nicholas Huelin (SirQuartz) Nikita Lita (nikitalita) Nils André-Chang (NilsIrl) Noah Beard (TwistedTwigleg) Nông Văn Tình (nongvantinh) Nuno Donato (nunodonato) ocean (they/them) (anvilfolk) Omar El Sheikh (The-O-King) Ovnuniarchos Pascal Richter (ShyRed) passivestar Patrick Dawson (pkdawson) Patrick Exner (FlameLizard) Patrick (firefly2442) Paul Batty (Paulb23) Paul Joannon (paulloz) Paul Trojahn (ptrojahn) Pāvels Nadtočajevs (bruvzg) Paweł Fertyk (pfertyk) Pawel Kowal (pkowal1982) Pawel Lampe (Scony) Pedro J. Estébanez (RandomShaper) Pieter-Jan Briers (PJB3005) Poommetee Ketson (Noshyaar) Przemysław Gołąb (n-pigeon) Rafael M. G. (rafallus) Raffaele Picca (RPicster) Rafał Mikrut (qarmin) Ralf Hölzemer (rollenrolm) Ramesh Ravone (RameshRavone) Raphael2048 Raul Santos (raulsntos) Ray Koopa (RayKoopa) RedMser RedworkDE Rémi Verschelde (akien-mga) Rhody Lugo (rraallvv) Ricardo Buring (rburing) Ricardo Subtil (Ev1lbl0w) Riteo Siuga (Riteo) Roberto F. Arroyo (robfram) Robert Yevdokimov (ryevdokimov) Robin Hübner (profan) romulox-x Rune Smith (rune-scape) Ruslan Mustakov (endragor) Ryan Roden-Corrent (rrcore) Saniko (sanikoyes) santouits SaracenOne Septian Ganendra S. K. (sepTN) Sergey Minakov (naithar) sersoong Shiqing (kawa-yoiko) Silc 'Tokage' Renew (TokageItLab) Simon Wenner (swenner) smix8 snailrhymer Sofox (TheSofox) Stanislav Labzyuk (DarkMessiah) Stijn Hinlopen (hinlopen) stmSi Swarnim Arun (minraws) TC (floppyhammer) TechnoPorg Thaddeus Crews (Repiteo) Thakee Nathees (ThakeeNathees) thebestnom Theo Hallenius (TheoXD) Timo Schwarzer (timoschwarzer) Timothé Bonhoure (ajreckof) Timo (toger5) Tomasz Chabora (KoBeWi) trollodel Twarit Waikar (IronicallySerious) Umang Kalra (theoway) Vinzenz Feenstra (vinzenz) Vitika Soni (Vitika9) 박한얼 (volzhs) V. Vamsi Krishna (vkbsb) Wilhem Barbier (nounoursheureux) William Deurwaarder (williamd67) Will Nations (willnationsdev) Wilson E. Alvarez (Rubonnek) Xavier Cho (mysticfall) Yaohua Xiong (xiongyaohua) yg2f (SuperUserNameMan) Yordan Dolchinkov (Jordyfel) Yuri Rubinsky (Chaosus) Yuri Sizov (YuriSizov) Zae Chao (zaevi) Zak Stam (zaksnet) Zher Huei Lee (leezh) Zi Ye (MajorMcDoom) ZuBsPaCe 谢天 (jsjtxietian) 风青山 (Rindbee)
\ No newline at end of file
diff --git a/donate/index.html b/donate/index.html
index 0f8bfee234..b0e8789ff1 100644
--- a/donate/index.html
+++ b/donate/index.html
@@ -15,7 +15,7 @@
-If you want to sponsor the project, please write to contact@godot.foundation .
+
If you want to sponsor the project, please write to contact@godot.foundation .
\ No newline at end of file
diff --git a/download/3.x/android/index.html b/download/3.x/android/index.html
index ae3148b477..3d80c4cdc5 100644
--- a/download/3.x/android/index.html
+++ b/download/3.x/android/index.html
@@ -30,7 +30,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/3.x/linux/index.html b/download/3.x/linux/index.html
index b2c65ec4fc..d08b7da415 100644
--- a/download/3.x/linux/index.html
+++ b/download/3.x/linux/index.html
@@ -39,7 +39,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/3.x/macos/index.html b/download/3.x/macos/index.html
index 92c6f00aad..64b7205d11 100644
--- a/download/3.x/macos/index.html
+++ b/download/3.x/macos/index.html
@@ -34,7 +34,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/3.x/server/index.html b/download/3.x/server/index.html
index 899d88001b..1dba4d0abf 100644
--- a/download/3.x/server/index.html
+++ b/download/3.x/server/index.html
@@ -39,7 +39,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/3.x/windows/index.html b/download/3.x/windows/index.html
index 7bf5f57d4d..9e809c6a34 100644
--- a/download/3.x/windows/index.html
+++ b/download/3.x/windows/index.html
@@ -40,7 +40,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/android/index.html b/download/android/index.html
index dc54ca0d1c..979acb179c 100644
--- a/download/android/index.html
+++ b/download/android/index.html
@@ -28,7 +28,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/archive/1.0-stable/index.html b/download/archive/1.0-stable/index.html
index 05e75b2f8a..db4293bee6 100644
--- a/download/archive/1.0-stable/index.html
+++ b/download/archive/1.0-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/1.1-stable/index.html b/download/archive/1.1-stable/index.html
index ba887749dc..74096858fd 100644
--- a/download/archive/1.1-stable/index.html
+++ b/download/archive/1.1-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.0-stable/index.html b/download/archive/2.0-stable/index.html
index 618a8f6662..ed29632de6 100644
--- a/download/archive/2.0-stable/index.html
+++ b/download/archive/2.0-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.0.1-stable/index.html b/download/archive/2.0.1-stable/index.html
index 50246a4ec3..78024bf905 100644
--- a/download/archive/2.0.1-stable/index.html
+++ b/download/archive/2.0.1-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.0.2-stable/index.html b/download/archive/2.0.2-stable/index.html
index a226e1cd41..6bf2bdd191 100644
--- a/download/archive/2.0.2-stable/index.html
+++ b/download/archive/2.0.2-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.0.3-stable/index.html b/download/archive/2.0.3-stable/index.html
index 9e652dd39a..3691922359 100644
--- a/download/archive/2.0.3-stable/index.html
+++ b/download/archive/2.0.3-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.0.4-stable/index.html b/download/archive/2.0.4-stable/index.html
index 04113f2044..6b8eee4172 100644
--- a/download/archive/2.0.4-stable/index.html
+++ b/download/archive/2.0.4-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.0.4.1-stable/index.html b/download/archive/2.0.4.1-stable/index.html
index 980e8cb78f..b7014fa233 100644
--- a/download/archive/2.0.4.1-stable/index.html
+++ b/download/archive/2.0.4.1-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1-stable/index.html b/download/archive/2.1-stable/index.html
index 32b8ca3c0a..da0e75d790 100644
--- a/download/archive/2.1-stable/index.html
+++ b/download/archive/2.1-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.1-stable/index.html b/download/archive/2.1.1-stable/index.html
index 0c9b2a418c..ae9bd0adcf 100644
--- a/download/archive/2.1.1-stable/index.html
+++ b/download/archive/2.1.1-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.2-stable/index.html b/download/archive/2.1.2-stable/index.html
index 157de2ca52..cbad02b910 100644
--- a/download/archive/2.1.2-stable/index.html
+++ b/download/archive/2.1.2-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.3-stable/index.html b/download/archive/2.1.3-stable/index.html
index ada5081498..36cfd2285e 100644
--- a/download/archive/2.1.3-stable/index.html
+++ b/download/archive/2.1.3-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.4-stable/index.html b/download/archive/2.1.4-stable/index.html
index 9238ebe1a4..d873890af3 100644
--- a/download/archive/2.1.4-stable/index.html
+++ b/download/archive/2.1.4-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.5-stable/index.html b/download/archive/2.1.5-stable/index.html
index 2be9cca7a0..0c4afa68df 100644
--- a/download/archive/2.1.5-stable/index.html
+++ b/download/archive/2.1.5-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.6-rc1/index.html b/download/archive/2.1.6-rc1/index.html
index 1f131c8d78..b14afebd9b 100644
--- a/download/archive/2.1.6-rc1/index.html
+++ b/download/archive/2.1.6-rc1/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.6-stable/index.html b/download/archive/2.1.6-stable/index.html
index fdbb3642d4..4f96b17869 100644
--- a/download/archive/2.1.6-stable/index.html
+++ b/download/archive/2.1.6-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/3.0-alpha1/index.html b/download/archive/3.0-alpha1/index.html
index 0e7303c3f6..ebcde1726e 100644
--- a/download/archive/3.0-alpha1/index.html
+++ b/download/archive/3.0-alpha1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-alpha2/index.html b/download/archive/3.0-alpha2/index.html
index b864fe1a2e..357151cc17 100644
--- a/download/archive/3.0-alpha2/index.html
+++ b/download/archive/3.0-alpha2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-beta1/index.html b/download/archive/3.0-beta1/index.html
index 50e802337d..3b9debad34 100644
--- a/download/archive/3.0-beta1/index.html
+++ b/download/archive/3.0-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-beta2/index.html b/download/archive/3.0-beta2/index.html
index ad49152ca9..f3ffcba254 100644
--- a/download/archive/3.0-beta2/index.html
+++ b/download/archive/3.0-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-rc1/index.html b/download/archive/3.0-rc1/index.html
index 1de642a534..3cbc15caba 100644
--- a/download/archive/3.0-rc1/index.html
+++ b/download/archive/3.0-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-rc2/index.html b/download/archive/3.0-rc2/index.html
index 8f87ac29c4..977d4465f7 100644
--- a/download/archive/3.0-rc2/index.html
+++ b/download/archive/3.0-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-rc3/index.html b/download/archive/3.0-rc3/index.html
index 7f88caa307..de55683224 100644
--- a/download/archive/3.0-rc3/index.html
+++ b/download/archive/3.0-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-stable/index.html b/download/archive/3.0-stable/index.html
index 4ace3ec8e7..26042d7160 100644
--- a/download/archive/3.0-stable/index.html
+++ b/download/archive/3.0-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.1-rc1/index.html b/download/archive/3.0.1-rc1/index.html
index 99f39a326f..36652149f9 100644
--- a/download/archive/3.0.1-rc1/index.html
+++ b/download/archive/3.0.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.1-stable/index.html b/download/archive/3.0.1-stable/index.html
index 8ee5014eb3..b4fb0d3395 100644
--- a/download/archive/3.0.1-stable/index.html
+++ b/download/archive/3.0.1-stable/index.html
@@ -44,7 +44,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.2-stable/index.html b/download/archive/3.0.2-stable/index.html
index 2a54dbf7ef..49e8c66aac 100644
--- a/download/archive/3.0.2-stable/index.html
+++ b/download/archive/3.0.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.3-rc1/index.html b/download/archive/3.0.3-rc1/index.html
index ed83b354b6..fee070135f 100644
--- a/download/archive/3.0.3-rc1/index.html
+++ b/download/archive/3.0.3-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.3-rc2/index.html b/download/archive/3.0.3-rc2/index.html
index 01af6d6605..7d3265fadf 100644
--- a/download/archive/3.0.3-rc2/index.html
+++ b/download/archive/3.0.3-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.3-rc3/index.html b/download/archive/3.0.3-rc3/index.html
index 6ed63bb07e..4220132256 100644
--- a/download/archive/3.0.3-rc3/index.html
+++ b/download/archive/3.0.3-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.3-stable/index.html b/download/archive/3.0.3-stable/index.html
index 372101d6c6..33981248d4 100644
--- a/download/archive/3.0.3-stable/index.html
+++ b/download/archive/3.0.3-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.4-stable/index.html b/download/archive/3.0.4-stable/index.html
index be052eb0fc..298b6ede5a 100644
--- a/download/archive/3.0.4-stable/index.html
+++ b/download/archive/3.0.4-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.5-stable/index.html b/download/archive/3.0.5-stable/index.html
index 3afadf6cca..9e6a210f7b 100644
--- a/download/archive/3.0.5-stable/index.html
+++ b/download/archive/3.0.5-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.6-stable/index.html b/download/archive/3.0.6-stable/index.html
index 4196305057..a764bdcbd4 100644
--- a/download/archive/3.0.6-stable/index.html
+++ b/download/archive/3.0.6-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-alpha1/index.html b/download/archive/3.1-alpha1/index.html
index 8d93879779..b769714091 100644
--- a/download/archive/3.1-alpha1/index.html
+++ b/download/archive/3.1-alpha1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-alpha2/index.html b/download/archive/3.1-alpha2/index.html
index 620ab7057a..043e30d860 100644
--- a/download/archive/3.1-alpha2/index.html
+++ b/download/archive/3.1-alpha2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-alpha3/index.html b/download/archive/3.1-alpha3/index.html
index 92924b4011..647dd39bbb 100644
--- a/download/archive/3.1-alpha3/index.html
+++ b/download/archive/3.1-alpha3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-alpha4/index.html b/download/archive/3.1-alpha4/index.html
index f3c69bd292..c3eaf3040c 100644
--- a/download/archive/3.1-alpha4/index.html
+++ b/download/archive/3.1-alpha4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-alpha5/index.html b/download/archive/3.1-alpha5/index.html
index 0d10344f69..1d6ec08082 100644
--- a/download/archive/3.1-alpha5/index.html
+++ b/download/archive/3.1-alpha5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta1/index.html b/download/archive/3.1-beta1/index.html
index 5b3a22e8a0..859160165b 100644
--- a/download/archive/3.1-beta1/index.html
+++ b/download/archive/3.1-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta10/index.html b/download/archive/3.1-beta10/index.html
index 4df0d224ee..dfacaccfcf 100644
--- a/download/archive/3.1-beta10/index.html
+++ b/download/archive/3.1-beta10/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta11/index.html b/download/archive/3.1-beta11/index.html
index 5734b65382..5ce32f85a8 100644
--- a/download/archive/3.1-beta11/index.html
+++ b/download/archive/3.1-beta11/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta2/index.html b/download/archive/3.1-beta2/index.html
index b9926a49b2..7a24a04353 100644
--- a/download/archive/3.1-beta2/index.html
+++ b/download/archive/3.1-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta3/index.html b/download/archive/3.1-beta3/index.html
index 21c495abcf..ab94c7ed80 100644
--- a/download/archive/3.1-beta3/index.html
+++ b/download/archive/3.1-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta4/index.html b/download/archive/3.1-beta4/index.html
index 18688bbf8f..624d46ae85 100644
--- a/download/archive/3.1-beta4/index.html
+++ b/download/archive/3.1-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta5/index.html b/download/archive/3.1-beta5/index.html
index a9f3b44bb8..8924adfc69 100644
--- a/download/archive/3.1-beta5/index.html
+++ b/download/archive/3.1-beta5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta6/index.html b/download/archive/3.1-beta6/index.html
index b4e1349308..6710dc9081 100644
--- a/download/archive/3.1-beta6/index.html
+++ b/download/archive/3.1-beta6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta7/index.html b/download/archive/3.1-beta7/index.html
index f65a8f0706..b689a5cecc 100644
--- a/download/archive/3.1-beta7/index.html
+++ b/download/archive/3.1-beta7/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta8/index.html b/download/archive/3.1-beta8/index.html
index 53d4c525b9..1fddaf4b4e 100644
--- a/download/archive/3.1-beta8/index.html
+++ b/download/archive/3.1-beta8/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta9/index.html b/download/archive/3.1-beta9/index.html
index 0aa4a59f78..36c9015aa7 100644
--- a/download/archive/3.1-beta9/index.html
+++ b/download/archive/3.1-beta9/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-rc1/index.html b/download/archive/3.1-rc1/index.html
index a99ba2baf5..9f9ca11280 100644
--- a/download/archive/3.1-rc1/index.html
+++ b/download/archive/3.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-rc2/index.html b/download/archive/3.1-rc2/index.html
index 9c58b13d9d..e55ca26d6e 100644
--- a/download/archive/3.1-rc2/index.html
+++ b/download/archive/3.1-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-rc3/index.html b/download/archive/3.1-rc3/index.html
index 76f83413bf..c3383b778e 100644
--- a/download/archive/3.1-rc3/index.html
+++ b/download/archive/3.1-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-stable/index.html b/download/archive/3.1-stable/index.html
index c3c95f542b..777e854981 100644
--- a/download/archive/3.1-stable/index.html
+++ b/download/archive/3.1-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1.1-rc1/index.html b/download/archive/3.1.1-rc1/index.html
index aaacbe41f2..f51f9ecb56 100644
--- a/download/archive/3.1.1-rc1/index.html
+++ b/download/archive/3.1.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1.1-stable/index.html b/download/archive/3.1.1-stable/index.html
index 1c1cb73f15..2b1b2ded7e 100644
--- a/download/archive/3.1.1-stable/index.html
+++ b/download/archive/3.1.1-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1.2-rc1/index.html b/download/archive/3.1.2-rc1/index.html
index d2d2f21b9f..7393a9986d 100644
--- a/download/archive/3.1.2-rc1/index.html
+++ b/download/archive/3.1.2-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1.2-stable/index.html b/download/archive/3.1.2-stable/index.html
index 51e73e3fbb..116e40738c 100644
--- a/download/archive/3.1.2-stable/index.html
+++ b/download/archive/3.1.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-alpha0-unofficial/index.html b/download/archive/3.2-alpha0-unofficial/index.html
index 3b44b1caf6..15255b35d2 100644
--- a/download/archive/3.2-alpha0-unofficial/index.html
+++ b/download/archive/3.2-alpha0-unofficial/index.html
@@ -42,7 +42,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-alpha1/index.html b/download/archive/3.2-alpha1/index.html
index 80d4131de6..02a639d8f7 100644
--- a/download/archive/3.2-alpha1/index.html
+++ b/download/archive/3.2-alpha1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-alpha2/index.html b/download/archive/3.2-alpha2/index.html
index 5ef9f85870..96d8c535de 100644
--- a/download/archive/3.2-alpha2/index.html
+++ b/download/archive/3.2-alpha2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-alpha3/index.html b/download/archive/3.2-alpha3/index.html
index 9e878dd73f..4f675b267f 100644
--- a/download/archive/3.2-alpha3/index.html
+++ b/download/archive/3.2-alpha3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-beta1/index.html b/download/archive/3.2-beta1/index.html
index 0bcfa116bb..f74119b472 100644
--- a/download/archive/3.2-beta1/index.html
+++ b/download/archive/3.2-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-beta2/index.html b/download/archive/3.2-beta2/index.html
index 9a47da8793..e021580dbb 100644
--- a/download/archive/3.2-beta2/index.html
+++ b/download/archive/3.2-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-beta3/index.html b/download/archive/3.2-beta3/index.html
index 70597d369c..2d0fbe5e06 100644
--- a/download/archive/3.2-beta3/index.html
+++ b/download/archive/3.2-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-beta4/index.html b/download/archive/3.2-beta4/index.html
index fd3659f822..2180999301 100644
--- a/download/archive/3.2-beta4/index.html
+++ b/download/archive/3.2-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-beta5/index.html b/download/archive/3.2-beta5/index.html
index c606cb9d71..a78e28c7d3 100644
--- a/download/archive/3.2-beta5/index.html
+++ b/download/archive/3.2-beta5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-beta6/index.html b/download/archive/3.2-beta6/index.html
index e69ce47e64..8dc2ed9a88 100644
--- a/download/archive/3.2-beta6/index.html
+++ b/download/archive/3.2-beta6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-rc1/index.html b/download/archive/3.2-rc1/index.html
index d3a3d0f9e6..8eba3c6e8d 100644
--- a/download/archive/3.2-rc1/index.html
+++ b/download/archive/3.2-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-rc2/index.html b/download/archive/3.2-rc2/index.html
index a11fc06ea2..153611f527 100644
--- a/download/archive/3.2-rc2/index.html
+++ b/download/archive/3.2-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-rc3/index.html b/download/archive/3.2-rc3/index.html
index 215d28e52a..5f1c88e4e5 100644
--- a/download/archive/3.2-rc3/index.html
+++ b/download/archive/3.2-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-rc4/index.html b/download/archive/3.2-rc4/index.html
index 27c142d809..6f1949583f 100644
--- a/download/archive/3.2-rc4/index.html
+++ b/download/archive/3.2-rc4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-stable/index.html b/download/archive/3.2-stable/index.html
index 49e2593b48..f88fc4e593 100644
--- a/download/archive/3.2-stable/index.html
+++ b/download/archive/3.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.1-rc1/index.html b/download/archive/3.2.1-rc1/index.html
index 1b2d7f5083..1e1a8b7ab5 100644
--- a/download/archive/3.2.1-rc1/index.html
+++ b/download/archive/3.2.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.1-rc2/index.html b/download/archive/3.2.1-rc2/index.html
index 2bbc2fc7ee..37eedf1eda 100644
--- a/download/archive/3.2.1-rc2/index.html
+++ b/download/archive/3.2.1-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.1-stable/index.html b/download/archive/3.2.1-stable/index.html
index 13e8df2c4c..1babd7a97d 100644
--- a/download/archive/3.2.1-stable/index.html
+++ b/download/archive/3.2.1-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-beta1/index.html b/download/archive/3.2.2-beta1/index.html
index d643adbbe5..1c86cdb0ec 100644
--- a/download/archive/3.2.2-beta1/index.html
+++ b/download/archive/3.2.2-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-beta2/index.html b/download/archive/3.2.2-beta2/index.html
index 2350a9b6d5..9621eb26c0 100644
--- a/download/archive/3.2.2-beta2/index.html
+++ b/download/archive/3.2.2-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-beta3/index.html b/download/archive/3.2.2-beta3/index.html
index b59885c057..61a4a277a7 100644
--- a/download/archive/3.2.2-beta3/index.html
+++ b/download/archive/3.2.2-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-beta4/index.html b/download/archive/3.2.2-beta4/index.html
index 02dbeb5d41..9706c99e26 100644
--- a/download/archive/3.2.2-beta4/index.html
+++ b/download/archive/3.2.2-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-rc1/index.html b/download/archive/3.2.2-rc1/index.html
index 5ca0ddb023..ca95dcfcd3 100644
--- a/download/archive/3.2.2-rc1/index.html
+++ b/download/archive/3.2.2-rc1/index.html
@@ -44,7 +44,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-rc2/index.html b/download/archive/3.2.2-rc2/index.html
index b2d05fa699..06024e935b 100644
--- a/download/archive/3.2.2-rc2/index.html
+++ b/download/archive/3.2.2-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-rc3/index.html b/download/archive/3.2.2-rc3/index.html
index 53bd10be26..c33aac2e5e 100644
--- a/download/archive/3.2.2-rc3/index.html
+++ b/download/archive/3.2.2-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-rc4/index.html b/download/archive/3.2.2-rc4/index.html
index 7ef01f9ae9..2eddc3bc56 100644
--- a/download/archive/3.2.2-rc4/index.html
+++ b/download/archive/3.2.2-rc4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-stable/index.html b/download/archive/3.2.2-stable/index.html
index 233f9116f6..24f7e661c3 100644
--- a/download/archive/3.2.2-stable/index.html
+++ b/download/archive/3.2.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-beta1/index.html b/download/archive/3.2.3-beta1/index.html
index f197e633eb..0a49b20119 100644
--- a/download/archive/3.2.3-beta1/index.html
+++ b/download/archive/3.2.3-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-rc1/index.html b/download/archive/3.2.3-rc1/index.html
index 9ae68c9421..85b05cf886 100644
--- a/download/archive/3.2.3-rc1/index.html
+++ b/download/archive/3.2.3-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-rc2/index.html b/download/archive/3.2.3-rc2/index.html
index 77975bc0bb..b0413126a7 100644
--- a/download/archive/3.2.3-rc2/index.html
+++ b/download/archive/3.2.3-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-rc3/index.html b/download/archive/3.2.3-rc3/index.html
index cdc4b764c0..c693848ed4 100644
--- a/download/archive/3.2.3-rc3/index.html
+++ b/download/archive/3.2.3-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-rc4/index.html b/download/archive/3.2.3-rc4/index.html
index 9205f81d62..86aaf64aa8 100644
--- a/download/archive/3.2.3-rc4/index.html
+++ b/download/archive/3.2.3-rc4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-rc5/index.html b/download/archive/3.2.3-rc5/index.html
index 282147ab1a..7b1188397c 100644
--- a/download/archive/3.2.3-rc5/index.html
+++ b/download/archive/3.2.3-rc5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-rc6/index.html b/download/archive/3.2.3-rc6/index.html
index e3b16aae58..fbdb36d8e4 100644
--- a/download/archive/3.2.3-rc6/index.html
+++ b/download/archive/3.2.3-rc6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-stable/index.html b/download/archive/3.2.3-stable/index.html
index 29d4389cbb..e9f6c87ae5 100644
--- a/download/archive/3.2.3-stable/index.html
+++ b/download/archive/3.2.3-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-beta1/index.html b/download/archive/3.3-beta1/index.html
index ee36d26c74..268b2712e5 100644
--- a/download/archive/3.3-beta1/index.html
+++ b/download/archive/3.3-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-beta2/index.html b/download/archive/3.3-beta2/index.html
index a62635d763..197f70bc38 100644
--- a/download/archive/3.3-beta2/index.html
+++ b/download/archive/3.3-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-beta3/index.html b/download/archive/3.3-beta3/index.html
index a7ca38d007..0b85782ebf 100644
--- a/download/archive/3.3-beta3/index.html
+++ b/download/archive/3.3-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-beta4/index.html b/download/archive/3.3-beta4/index.html
index 74e7c11c6d..3ca5b847c0 100644
--- a/download/archive/3.3-beta4/index.html
+++ b/download/archive/3.3-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-beta5/index.html b/download/archive/3.3-beta5/index.html
index db221f39f9..e822ff7085 100644
--- a/download/archive/3.3-beta5/index.html
+++ b/download/archive/3.3-beta5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-beta6/index.html b/download/archive/3.3-beta6/index.html
index 2c2daa060d..4536e8f591 100644
--- a/download/archive/3.3-beta6/index.html
+++ b/download/archive/3.3-beta6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc1/index.html b/download/archive/3.3-rc1/index.html
index 1e32a673c4..44c96ab90d 100644
--- a/download/archive/3.3-rc1/index.html
+++ b/download/archive/3.3-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc2/index.html b/download/archive/3.3-rc2/index.html
index cc587c94d0..483120f578 100644
--- a/download/archive/3.3-rc2/index.html
+++ b/download/archive/3.3-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc3/index.html b/download/archive/3.3-rc3/index.html
index 254b6c06f7..f52aa245f5 100644
--- a/download/archive/3.3-rc3/index.html
+++ b/download/archive/3.3-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc4/index.html b/download/archive/3.3-rc4/index.html
index ab9eda4ba5..242e276481 100644
--- a/download/archive/3.3-rc4/index.html
+++ b/download/archive/3.3-rc4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc5/index.html b/download/archive/3.3-rc5/index.html
index 6063e3443d..bf7797859c 100644
--- a/download/archive/3.3-rc5/index.html
+++ b/download/archive/3.3-rc5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc6/index.html b/download/archive/3.3-rc6/index.html
index 9a7644b323..f798d380c6 100644
--- a/download/archive/3.3-rc6/index.html
+++ b/download/archive/3.3-rc6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc7/index.html b/download/archive/3.3-rc7/index.html
index cfc6a63b9c..8148eb8b68 100644
--- a/download/archive/3.3-rc7/index.html
+++ b/download/archive/3.3-rc7/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc8/index.html b/download/archive/3.3-rc8/index.html
index 550e43617b..6ec72564ca 100644
--- a/download/archive/3.3-rc8/index.html
+++ b/download/archive/3.3-rc8/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc9/index.html b/download/archive/3.3-rc9/index.html
index 9ef22b1a40..6e8b49afe7 100644
--- a/download/archive/3.3-rc9/index.html
+++ b/download/archive/3.3-rc9/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-stable/index.html b/download/archive/3.3-stable/index.html
index 0882289005..66a19e199c 100644
--- a/download/archive/3.3-stable/index.html
+++ b/download/archive/3.3-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.1-rc1/index.html b/download/archive/3.3.1-rc1/index.html
index 1afe7638d3..85ad7fae71 100644
--- a/download/archive/3.3.1-rc1/index.html
+++ b/download/archive/3.3.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.1-rc2/index.html b/download/archive/3.3.1-rc2/index.html
index 3106835c64..6a8b796210 100644
--- a/download/archive/3.3.1-rc2/index.html
+++ b/download/archive/3.3.1-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.1-stable/index.html b/download/archive/3.3.1-stable/index.html
index 6c867105d8..86d387a16c 100644
--- a/download/archive/3.3.1-stable/index.html
+++ b/download/archive/3.3.1-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.2-stable/index.html b/download/archive/3.3.2-stable/index.html
index e639c5be0c..808acdbbf7 100644
--- a/download/archive/3.3.2-stable/index.html
+++ b/download/archive/3.3.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.3-rc1/index.html b/download/archive/3.3.3-rc1/index.html
index 9660578b78..35af988305 100644
--- a/download/archive/3.3.3-rc1/index.html
+++ b/download/archive/3.3.3-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.3-rc2/index.html b/download/archive/3.3.3-rc2/index.html
index aec7aaf652..9019233334 100644
--- a/download/archive/3.3.3-rc2/index.html
+++ b/download/archive/3.3.3-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.3-stable/index.html b/download/archive/3.3.3-stable/index.html
index 791f012679..53555dd4c4 100644
--- a/download/archive/3.3.3-stable/index.html
+++ b/download/archive/3.3.3-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.4-rc1/index.html b/download/archive/3.3.4-rc1/index.html
index 7807b6470b..fe03493748 100644
--- a/download/archive/3.3.4-rc1/index.html
+++ b/download/archive/3.3.4-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.4-stable/index.html b/download/archive/3.3.4-stable/index.html
index 1d785ba3dc..6c89138306 100644
--- a/download/archive/3.3.4-stable/index.html
+++ b/download/archive/3.3.4-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-beta1/index.html b/download/archive/3.4-beta1/index.html
index 178b14aa0c..69241863c5 100644
--- a/download/archive/3.4-beta1/index.html
+++ b/download/archive/3.4-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-beta2/index.html b/download/archive/3.4-beta2/index.html
index d39af74647..400385c5aa 100644
--- a/download/archive/3.4-beta2/index.html
+++ b/download/archive/3.4-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-beta3/index.html b/download/archive/3.4-beta3/index.html
index bd5ffd1c2e..afaccc9f25 100644
--- a/download/archive/3.4-beta3/index.html
+++ b/download/archive/3.4-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-beta4/index.html b/download/archive/3.4-beta4/index.html
index 96200d1497..ed6f9ad203 100644
--- a/download/archive/3.4-beta4/index.html
+++ b/download/archive/3.4-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-beta5/index.html b/download/archive/3.4-beta5/index.html
index 88b7f80fea..25ecd2457f 100644
--- a/download/archive/3.4-beta5/index.html
+++ b/download/archive/3.4-beta5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-beta6/index.html b/download/archive/3.4-beta6/index.html
index accfffd22d..27a076bb47 100644
--- a/download/archive/3.4-beta6/index.html
+++ b/download/archive/3.4-beta6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-rc1/index.html b/download/archive/3.4-rc1/index.html
index 923893cc7a..3edd500e23 100644
--- a/download/archive/3.4-rc1/index.html
+++ b/download/archive/3.4-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-rc2/index.html b/download/archive/3.4-rc2/index.html
index 859c3582e1..43ce3d438d 100644
--- a/download/archive/3.4-rc2/index.html
+++ b/download/archive/3.4-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-rc3/index.html b/download/archive/3.4-rc3/index.html
index 735b4fa373..fbb7f5fa41 100644
--- a/download/archive/3.4-rc3/index.html
+++ b/download/archive/3.4-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-stable/index.html b/download/archive/3.4-stable/index.html
index a929f4549f..f6d21b2009 100644
--- a/download/archive/3.4-stable/index.html
+++ b/download/archive/3.4-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.1-rc1/index.html b/download/archive/3.4.1-rc1/index.html
index bfedb35d51..fb322338dd 100644
--- a/download/archive/3.4.1-rc1/index.html
+++ b/download/archive/3.4.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.1-rc2/index.html b/download/archive/3.4.1-rc2/index.html
index 30d75ad822..ea2de90099 100644
--- a/download/archive/3.4.1-rc2/index.html
+++ b/download/archive/3.4.1-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.1-rc3/index.html b/download/archive/3.4.1-rc3/index.html
index 7b4c1d9e48..f9ab2b1c49 100644
--- a/download/archive/3.4.1-rc3/index.html
+++ b/download/archive/3.4.1-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.1-stable/index.html b/download/archive/3.4.1-stable/index.html
index 6134490dc7..92ec32861b 100644
--- a/download/archive/3.4.1-stable/index.html
+++ b/download/archive/3.4.1-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.2-stable/index.html b/download/archive/3.4.2-stable/index.html
index 3cf458779d..a09717eede 100644
--- a/download/archive/3.4.2-stable/index.html
+++ b/download/archive/3.4.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.3-rc1/index.html b/download/archive/3.4.3-rc1/index.html
index 252cbb687d..32470a6fa7 100644
--- a/download/archive/3.4.3-rc1/index.html
+++ b/download/archive/3.4.3-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.3-rc2/index.html b/download/archive/3.4.3-rc2/index.html
index 928aac5411..76fe45aa93 100644
--- a/download/archive/3.4.3-rc2/index.html
+++ b/download/archive/3.4.3-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.3-stable/index.html b/download/archive/3.4.3-stable/index.html
index 49f45c4fbf..3af207a175 100644
--- a/download/archive/3.4.3-stable/index.html
+++ b/download/archive/3.4.3-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.4-rc1/index.html b/download/archive/3.4.4-rc1/index.html
index 35e5af8924..e1efd9ec31 100644
--- a/download/archive/3.4.4-rc1/index.html
+++ b/download/archive/3.4.4-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.4-rc2/index.html b/download/archive/3.4.4-rc2/index.html
index 911bbbd6fe..8560b8aa7c 100644
--- a/download/archive/3.4.4-rc2/index.html
+++ b/download/archive/3.4.4-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.4-stable/index.html b/download/archive/3.4.4-stable/index.html
index ccfb29e700..c538af2a00 100644
--- a/download/archive/3.4.4-stable/index.html
+++ b/download/archive/3.4.4-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.5-rc1/index.html b/download/archive/3.4.5-rc1/index.html
index 2445177b3b..97298badd5 100644
--- a/download/archive/3.4.5-rc1/index.html
+++ b/download/archive/3.4.5-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.5-stable/index.html b/download/archive/3.4.5-stable/index.html
index 25942ae006..98b6822ad3 100644
--- a/download/archive/3.4.5-stable/index.html
+++ b/download/archive/3.4.5-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-beta1/index.html b/download/archive/3.5-beta1/index.html
index 1f7d97f2dd..26775ece5a 100644
--- a/download/archive/3.5-beta1/index.html
+++ b/download/archive/3.5-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-beta2/index.html b/download/archive/3.5-beta2/index.html
index 8f1d916704..6935be361b 100644
--- a/download/archive/3.5-beta2/index.html
+++ b/download/archive/3.5-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-beta3/index.html b/download/archive/3.5-beta3/index.html
index d4242b904d..4b1f3de5ea 100644
--- a/download/archive/3.5-beta3/index.html
+++ b/download/archive/3.5-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-beta4/index.html b/download/archive/3.5-beta4/index.html
index 2ee48e2d5f..3c98192da1 100644
--- a/download/archive/3.5-beta4/index.html
+++ b/download/archive/3.5-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-beta5/index.html b/download/archive/3.5-beta5/index.html
index 4ad9d42721..d9d3035c71 100644
--- a/download/archive/3.5-beta5/index.html
+++ b/download/archive/3.5-beta5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc1/index.html b/download/archive/3.5-rc1/index.html
index a15e90adbe..af221f8a23 100644
--- a/download/archive/3.5-rc1/index.html
+++ b/download/archive/3.5-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc2/index.html b/download/archive/3.5-rc2/index.html
index 07d0abe149..4c764de669 100644
--- a/download/archive/3.5-rc2/index.html
+++ b/download/archive/3.5-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc3/index.html b/download/archive/3.5-rc3/index.html
index 1c1e47282c..502a7cfcdb 100644
--- a/download/archive/3.5-rc3/index.html
+++ b/download/archive/3.5-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc4/index.html b/download/archive/3.5-rc4/index.html
index ba0de14418..7602ccc1cc 100644
--- a/download/archive/3.5-rc4/index.html
+++ b/download/archive/3.5-rc4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc5/index.html b/download/archive/3.5-rc5/index.html
index c28cc938d7..91ecb5fb6a 100644
--- a/download/archive/3.5-rc5/index.html
+++ b/download/archive/3.5-rc5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc6/index.html b/download/archive/3.5-rc6/index.html
index 3bb76882e6..c65cb7df4a 100644
--- a/download/archive/3.5-rc6/index.html
+++ b/download/archive/3.5-rc6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc7/index.html b/download/archive/3.5-rc7/index.html
index 5ce40ef997..984d535282 100644
--- a/download/archive/3.5-rc7/index.html
+++ b/download/archive/3.5-rc7/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc8/index.html b/download/archive/3.5-rc8/index.html
index 36de3f3dba..7638da61f6 100644
--- a/download/archive/3.5-rc8/index.html
+++ b/download/archive/3.5-rc8/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-stable/index.html b/download/archive/3.5-stable/index.html
index 7b7dd1628d..26bb80d960 100644
--- a/download/archive/3.5-stable/index.html
+++ b/download/archive/3.5-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.1-rc1/index.html b/download/archive/3.5.1-rc1/index.html
index 2bcf652f13..5be3d39401 100644
--- a/download/archive/3.5.1-rc1/index.html
+++ b/download/archive/3.5.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.1-rc2/index.html b/download/archive/3.5.1-rc2/index.html
index ed2a2265da..ed7830bc95 100644
--- a/download/archive/3.5.1-rc2/index.html
+++ b/download/archive/3.5.1-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.1-stable/index.html b/download/archive/3.5.1-stable/index.html
index 859fb92d20..dcd8333c41 100644
--- a/download/archive/3.5.1-stable/index.html
+++ b/download/archive/3.5.1-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.2-rc1/index.html b/download/archive/3.5.2-rc1/index.html
index ce9bbeaff5..aa2a3fd1be 100644
--- a/download/archive/3.5.2-rc1/index.html
+++ b/download/archive/3.5.2-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.2-rc2/index.html b/download/archive/3.5.2-rc2/index.html
index be98c8ba68..380afc70f3 100644
--- a/download/archive/3.5.2-rc2/index.html
+++ b/download/archive/3.5.2-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.2-stable/index.html b/download/archive/3.5.2-stable/index.html
index c3d7224eaf..c01c15b057 100644
--- a/download/archive/3.5.2-stable/index.html
+++ b/download/archive/3.5.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.3-rc1/index.html b/download/archive/3.5.3-rc1/index.html
index 68b546eeac..8d7e595331 100644
--- a/download/archive/3.5.3-rc1/index.html
+++ b/download/archive/3.5.3-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.3-stable/index.html b/download/archive/3.5.3-stable/index.html
index bab200463e..bacd253640 100644
--- a/download/archive/3.5.3-stable/index.html
+++ b/download/archive/3.5.3-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-beta1/index.html b/download/archive/3.6-beta1/index.html
index 9603e6879e..62b46ca8c1 100644
--- a/download/archive/3.6-beta1/index.html
+++ b/download/archive/3.6-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-beta2/index.html b/download/archive/3.6-beta2/index.html
index 56c28bf3a9..59acd32e46 100644
--- a/download/archive/3.6-beta2/index.html
+++ b/download/archive/3.6-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-beta3/index.html b/download/archive/3.6-beta3/index.html
index e7c661378f..b1d17d1f69 100644
--- a/download/archive/3.6-beta3/index.html
+++ b/download/archive/3.6-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-beta4/index.html b/download/archive/3.6-beta4/index.html
index 84f38ad819..86732b4b30 100644
--- a/download/archive/3.6-beta4/index.html
+++ b/download/archive/3.6-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-beta5/index.html b/download/archive/3.6-beta5/index.html
index 4471837673..bde2186211 100644
--- a/download/archive/3.6-beta5/index.html
+++ b/download/archive/3.6-beta5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-rc1/index.html b/download/archive/3.6-rc1/index.html
index 4a7a976db7..1ea2ee9c9f 100644
--- a/download/archive/3.6-rc1/index.html
+++ b/download/archive/3.6-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-stable/index.html b/download/archive/3.6-stable/index.html
index 97876d76ba..ff809bca62 100644
--- a/download/archive/3.6-stable/index.html
+++ b/download/archive/3.6-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/4.0-alpha1/index.html b/download/archive/4.0-alpha1/index.html
index 778fdbe786..590bac6446 100644
--- a/download/archive/4.0-alpha1/index.html
+++ b/download/archive/4.0-alpha1/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha10/index.html b/download/archive/4.0-alpha10/index.html
index 2da845ddfe..95ae1566e5 100644
--- a/download/archive/4.0-alpha10/index.html
+++ b/download/archive/4.0-alpha10/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha11/index.html b/download/archive/4.0-alpha11/index.html
index d0f0fdddb3..67651fe47f 100644
--- a/download/archive/4.0-alpha11/index.html
+++ b/download/archive/4.0-alpha11/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha12/index.html b/download/archive/4.0-alpha12/index.html
index 3ac24a580e..acacb88b54 100644
--- a/download/archive/4.0-alpha12/index.html
+++ b/download/archive/4.0-alpha12/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha13/index.html b/download/archive/4.0-alpha13/index.html
index 49f8b3a7fc..7a112f0c59 100644
--- a/download/archive/4.0-alpha13/index.html
+++ b/download/archive/4.0-alpha13/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha14/index.html b/download/archive/4.0-alpha14/index.html
index 68aa08b8b6..2d8a431540 100644
--- a/download/archive/4.0-alpha14/index.html
+++ b/download/archive/4.0-alpha14/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha15/index.html b/download/archive/4.0-alpha15/index.html
index ff1691cc98..1ae560fea7 100644
--- a/download/archive/4.0-alpha15/index.html
+++ b/download/archive/4.0-alpha15/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha16/index.html b/download/archive/4.0-alpha16/index.html
index 3cd0ccbb7f..b47252accd 100644
--- a/download/archive/4.0-alpha16/index.html
+++ b/download/archive/4.0-alpha16/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha17/index.html b/download/archive/4.0-alpha17/index.html
index 614da28d5f..d88c6bafbe 100644
--- a/download/archive/4.0-alpha17/index.html
+++ b/download/archive/4.0-alpha17/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha2/index.html b/download/archive/4.0-alpha2/index.html
index b35b6dc06d..f3c19f8d73 100644
--- a/download/archive/4.0-alpha2/index.html
+++ b/download/archive/4.0-alpha2/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha3/index.html b/download/archive/4.0-alpha3/index.html
index 8d13416ce2..fe65f9ac3b 100644
--- a/download/archive/4.0-alpha3/index.html
+++ b/download/archive/4.0-alpha3/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha4/index.html b/download/archive/4.0-alpha4/index.html
index d68be2c22e..7cba1700e8 100644
--- a/download/archive/4.0-alpha4/index.html
+++ b/download/archive/4.0-alpha4/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha5/index.html b/download/archive/4.0-alpha5/index.html
index 74fb57c8e3..b787ebc2f6 100644
--- a/download/archive/4.0-alpha5/index.html
+++ b/download/archive/4.0-alpha5/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha6/index.html b/download/archive/4.0-alpha6/index.html
index 7932fdef41..a3a1b29681 100644
--- a/download/archive/4.0-alpha6/index.html
+++ b/download/archive/4.0-alpha6/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha7/index.html b/download/archive/4.0-alpha7/index.html
index 131e8ae8bc..f7c61fc71b 100644
--- a/download/archive/4.0-alpha7/index.html
+++ b/download/archive/4.0-alpha7/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha8/index.html b/download/archive/4.0-alpha8/index.html
index 8a715c1cb7..b5a5c83a6c 100644
--- a/download/archive/4.0-alpha8/index.html
+++ b/download/archive/4.0-alpha8/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha9/index.html b/download/archive/4.0-alpha9/index.html
index 2c005b6615..9bdf829ce4 100644
--- a/download/archive/4.0-alpha9/index.html
+++ b/download/archive/4.0-alpha9/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta1/index.html b/download/archive/4.0-beta1/index.html
index 7853d48440..075c8914d0 100644
--- a/download/archive/4.0-beta1/index.html
+++ b/download/archive/4.0-beta1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta10/index.html b/download/archive/4.0-beta10/index.html
index 2f4dfbb822..32e427ab68 100644
--- a/download/archive/4.0-beta10/index.html
+++ b/download/archive/4.0-beta10/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta11/index.html b/download/archive/4.0-beta11/index.html
index 579aa48739..56a67ff845 100644
--- a/download/archive/4.0-beta11/index.html
+++ b/download/archive/4.0-beta11/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta12/index.html b/download/archive/4.0-beta12/index.html
index 6ec7cc8273..ff9331b46d 100644
--- a/download/archive/4.0-beta12/index.html
+++ b/download/archive/4.0-beta12/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta13/index.html b/download/archive/4.0-beta13/index.html
index e562091873..c5b6ea6f07 100644
--- a/download/archive/4.0-beta13/index.html
+++ b/download/archive/4.0-beta13/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta14/index.html b/download/archive/4.0-beta14/index.html
index 5d6036e15c..385a360de6 100644
--- a/download/archive/4.0-beta14/index.html
+++ b/download/archive/4.0-beta14/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta15/index.html b/download/archive/4.0-beta15/index.html
index 6e8b21b4de..387d50af2a 100644
--- a/download/archive/4.0-beta15/index.html
+++ b/download/archive/4.0-beta15/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta16/index.html b/download/archive/4.0-beta16/index.html
index 5473ee2995..2023ef7fc2 100644
--- a/download/archive/4.0-beta16/index.html
+++ b/download/archive/4.0-beta16/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta17/index.html b/download/archive/4.0-beta17/index.html
index 565e21f255..55b2a3841a 100644
--- a/download/archive/4.0-beta17/index.html
+++ b/download/archive/4.0-beta17/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta2/index.html b/download/archive/4.0-beta2/index.html
index a2d8449bfc..5040eba3d1 100644
--- a/download/archive/4.0-beta2/index.html
+++ b/download/archive/4.0-beta2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta3/index.html b/download/archive/4.0-beta3/index.html
index f242cfe690..1a421bccab 100644
--- a/download/archive/4.0-beta3/index.html
+++ b/download/archive/4.0-beta3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta4/index.html b/download/archive/4.0-beta4/index.html
index 369539346d..a0863e5d58 100644
--- a/download/archive/4.0-beta4/index.html
+++ b/download/archive/4.0-beta4/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta5/index.html b/download/archive/4.0-beta5/index.html
index dd152df80d..e6b8a27766 100644
--- a/download/archive/4.0-beta5/index.html
+++ b/download/archive/4.0-beta5/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta6/index.html b/download/archive/4.0-beta6/index.html
index eafabf45d4..fce23b62a2 100644
--- a/download/archive/4.0-beta6/index.html
+++ b/download/archive/4.0-beta6/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta7/index.html b/download/archive/4.0-beta7/index.html
index ebf818df8a..e5de115bd2 100644
--- a/download/archive/4.0-beta7/index.html
+++ b/download/archive/4.0-beta7/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta8/index.html b/download/archive/4.0-beta8/index.html
index 2d7361b801..f71a337689 100644
--- a/download/archive/4.0-beta8/index.html
+++ b/download/archive/4.0-beta8/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta9/index.html b/download/archive/4.0-beta9/index.html
index 4ee775c126..165c24c236 100644
--- a/download/archive/4.0-beta9/index.html
+++ b/download/archive/4.0-beta9/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-rc1/index.html b/download/archive/4.0-rc1/index.html
index fb1240122b..6e320387de 100644
--- a/download/archive/4.0-rc1/index.html
+++ b/download/archive/4.0-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-rc2/index.html b/download/archive/4.0-rc2/index.html
index e836be0ce4..1e28fdc05e 100644
--- a/download/archive/4.0-rc2/index.html
+++ b/download/archive/4.0-rc2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-rc3/index.html b/download/archive/4.0-rc3/index.html
index 7a58a42807..106c2d7f6d 100644
--- a/download/archive/4.0-rc3/index.html
+++ b/download/archive/4.0-rc3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-rc4/index.html b/download/archive/4.0-rc4/index.html
index 785e3796f3..1af9d4122b 100644
--- a/download/archive/4.0-rc4/index.html
+++ b/download/archive/4.0-rc4/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-rc5/index.html b/download/archive/4.0-rc5/index.html
index 1d2933dd45..7ce5e4f542 100644
--- a/download/archive/4.0-rc5/index.html
+++ b/download/archive/4.0-rc5/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-rc6/index.html b/download/archive/4.0-rc6/index.html
index c347404663..6dfdf61777 100644
--- a/download/archive/4.0-rc6/index.html
+++ b/download/archive/4.0-rc6/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-stable/index.html b/download/archive/4.0-stable/index.html
index b36e210906..553450e952 100644
--- a/download/archive/4.0-stable/index.html
+++ b/download/archive/4.0-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.1-rc1/index.html b/download/archive/4.0.1-rc1/index.html
index d051225c60..277e4f50e6 100644
--- a/download/archive/4.0.1-rc1/index.html
+++ b/download/archive/4.0.1-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.1-rc2/index.html b/download/archive/4.0.1-rc2/index.html
index f9419e1f7a..4ee49eebbe 100644
--- a/download/archive/4.0.1-rc2/index.html
+++ b/download/archive/4.0.1-rc2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.1-stable/index.html b/download/archive/4.0.1-stable/index.html
index b39e7d32d5..7850b7c079 100644
--- a/download/archive/4.0.1-stable/index.html
+++ b/download/archive/4.0.1-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.2-rc1/index.html b/download/archive/4.0.2-rc1/index.html
index 558f97796a..4b7e29b0ae 100644
--- a/download/archive/4.0.2-rc1/index.html
+++ b/download/archive/4.0.2-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.2-stable/index.html b/download/archive/4.0.2-stable/index.html
index 09a125ee47..9c117362cf 100644
--- a/download/archive/4.0.2-stable/index.html
+++ b/download/archive/4.0.2-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.3-rc1/index.html b/download/archive/4.0.3-rc1/index.html
index 8dcb248561..d9883e6dcb 100644
--- a/download/archive/4.0.3-rc1/index.html
+++ b/download/archive/4.0.3-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.3-rc2/index.html b/download/archive/4.0.3-rc2/index.html
index 7e7a2d9584..46f7b972f9 100644
--- a/download/archive/4.0.3-rc2/index.html
+++ b/download/archive/4.0.3-rc2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.3-stable/index.html b/download/archive/4.0.3-stable/index.html
index e887b29619..fa98ba3535 100644
--- a/download/archive/4.0.3-stable/index.html
+++ b/download/archive/4.0.3-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.4-rc1/index.html b/download/archive/4.0.4-rc1/index.html
index dbfe063b06..6d180e80e1 100644
--- a/download/archive/4.0.4-rc1/index.html
+++ b/download/archive/4.0.4-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.4-stable/index.html b/download/archive/4.0.4-stable/index.html
index fd61533471..f0be6a51b6 100644
--- a/download/archive/4.0.4-stable/index.html
+++ b/download/archive/4.0.4-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-beta1/index.html b/download/archive/4.1-beta1/index.html
index fab735d04f..163001de09 100644
--- a/download/archive/4.1-beta1/index.html
+++ b/download/archive/4.1-beta1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-beta2/index.html b/download/archive/4.1-beta2/index.html
index 39938748ca..cec3911903 100644
--- a/download/archive/4.1-beta2/index.html
+++ b/download/archive/4.1-beta2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-beta3/index.html b/download/archive/4.1-beta3/index.html
index 9d4524d739..66e7d897b5 100644
--- a/download/archive/4.1-beta3/index.html
+++ b/download/archive/4.1-beta3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-dev1/index.html b/download/archive/4.1-dev1/index.html
index ac994e8f51..9b5f509f56 100644
--- a/download/archive/4.1-dev1/index.html
+++ b/download/archive/4.1-dev1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-dev2/index.html b/download/archive/4.1-dev2/index.html
index 4535c1cbdc..222359d469 100644
--- a/download/archive/4.1-dev2/index.html
+++ b/download/archive/4.1-dev2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-dev3/index.html b/download/archive/4.1-dev3/index.html
index ac0bf06c45..54974b8ab9 100644
--- a/download/archive/4.1-dev3/index.html
+++ b/download/archive/4.1-dev3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-dev4/index.html b/download/archive/4.1-dev4/index.html
index b3fa8802f6..86e4021929 100644
--- a/download/archive/4.1-dev4/index.html
+++ b/download/archive/4.1-dev4/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-rc1/index.html b/download/archive/4.1-rc1/index.html
index 5a559a9f3b..9bf986c953 100644
--- a/download/archive/4.1-rc1/index.html
+++ b/download/archive/4.1-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-rc2/index.html b/download/archive/4.1-rc2/index.html
index d395603402..088b0661cb 100644
--- a/download/archive/4.1-rc2/index.html
+++ b/download/archive/4.1-rc2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-rc3/index.html b/download/archive/4.1-rc3/index.html
index aec2c68001..c0fa4646ba 100644
--- a/download/archive/4.1-rc3/index.html
+++ b/download/archive/4.1-rc3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-stable/index.html b/download/archive/4.1-stable/index.html
index 18d428c2ba..182dfb6100 100644
--- a/download/archive/4.1-stable/index.html
+++ b/download/archive/4.1-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.1-rc1/index.html b/download/archive/4.1.1-rc1/index.html
index 4b5254ab19..8a78741fcb 100644
--- a/download/archive/4.1.1-rc1/index.html
+++ b/download/archive/4.1.1-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.1-stable/index.html b/download/archive/4.1.1-stable/index.html
index 68fb51f5e9..eac279e848 100644
--- a/download/archive/4.1.1-stable/index.html
+++ b/download/archive/4.1.1-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.2-rc1/index.html b/download/archive/4.1.2-rc1/index.html
index 63bb3fb426..2b65f885ee 100644
--- a/download/archive/4.1.2-rc1/index.html
+++ b/download/archive/4.1.2-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.2-stable/index.html b/download/archive/4.1.2-stable/index.html
index 28f27ef77d..ca85fabd91 100644
--- a/download/archive/4.1.2-stable/index.html
+++ b/download/archive/4.1.2-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.3-rc1/index.html b/download/archive/4.1.3-rc1/index.html
index 008613b2a7..e851a64750 100644
--- a/download/archive/4.1.3-rc1/index.html
+++ b/download/archive/4.1.3-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.3-stable/index.html b/download/archive/4.1.3-stable/index.html
index 8642b2a948..d75cf45929 100644
--- a/download/archive/4.1.3-stable/index.html
+++ b/download/archive/4.1.3-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.4-rc1/index.html b/download/archive/4.1.4-rc1/index.html
index dc596c28b5..923c5fe6d5 100644
--- a/download/archive/4.1.4-rc1/index.html
+++ b/download/archive/4.1.4-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.4-rc2/index.html b/download/archive/4.1.4-rc2/index.html
index 6279f9f0a8..bc2ee3d42f 100644
--- a/download/archive/4.1.4-rc2/index.html
+++ b/download/archive/4.1.4-rc2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.4-rc3/index.html b/download/archive/4.1.4-rc3/index.html
index 94cbf43856..f807310dc4 100644
--- a/download/archive/4.1.4-rc3/index.html
+++ b/download/archive/4.1.4-rc3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.4-stable/index.html b/download/archive/4.1.4-stable/index.html
index 02cec25648..4150eb9dba 100644
--- a/download/archive/4.1.4-stable/index.html
+++ b/download/archive/4.1.4-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-beta1/index.html b/download/archive/4.2-beta1/index.html
index 18742912fa..e00f26e33e 100644
--- a/download/archive/4.2-beta1/index.html
+++ b/download/archive/4.2-beta1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-beta2/index.html b/download/archive/4.2-beta2/index.html
index 3d0b02faf7..94aa93b3bf 100644
--- a/download/archive/4.2-beta2/index.html
+++ b/download/archive/4.2-beta2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-beta3/index.html b/download/archive/4.2-beta3/index.html
index 6494c18c55..37a3c68e39 100644
--- a/download/archive/4.2-beta3/index.html
+++ b/download/archive/4.2-beta3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-beta4/index.html b/download/archive/4.2-beta4/index.html
index bbd1cf109d..3d6894ac2d 100644
--- a/download/archive/4.2-beta4/index.html
+++ b/download/archive/4.2-beta4/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-beta5/index.html b/download/archive/4.2-beta5/index.html
index 337d1b53fb..826e6ce585 100644
--- a/download/archive/4.2-beta5/index.html
+++ b/download/archive/4.2-beta5/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-beta6/index.html b/download/archive/4.2-beta6/index.html
index fe1ab063be..521e9de217 100644
--- a/download/archive/4.2-beta6/index.html
+++ b/download/archive/4.2-beta6/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-dev1/index.html b/download/archive/4.2-dev1/index.html
index 808b31c157..c25c398f1f 100644
--- a/download/archive/4.2-dev1/index.html
+++ b/download/archive/4.2-dev1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-dev2/index.html b/download/archive/4.2-dev2/index.html
index 18a5172a1d..012155a7f1 100644
--- a/download/archive/4.2-dev2/index.html
+++ b/download/archive/4.2-dev2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-dev3/index.html b/download/archive/4.2-dev3/index.html
index 6550fb691c..1e247115e4 100644
--- a/download/archive/4.2-dev3/index.html
+++ b/download/archive/4.2-dev3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-dev4/index.html b/download/archive/4.2-dev4/index.html
index 138b3fc6a7..4e307d2ea5 100644
--- a/download/archive/4.2-dev4/index.html
+++ b/download/archive/4.2-dev4/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-dev5/index.html b/download/archive/4.2-dev5/index.html
index 63a8884026..a834d1f357 100644
--- a/download/archive/4.2-dev5/index.html
+++ b/download/archive/4.2-dev5/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-dev6/index.html b/download/archive/4.2-dev6/index.html
index 6420575892..269921be30 100644
--- a/download/archive/4.2-dev6/index.html
+++ b/download/archive/4.2-dev6/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-rc1/index.html b/download/archive/4.2-rc1/index.html
index fc38fdf0bf..2c96e5d295 100644
--- a/download/archive/4.2-rc1/index.html
+++ b/download/archive/4.2-rc1/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-rc2/index.html b/download/archive/4.2-rc2/index.html
index 6a530539e9..8cf2fe1568 100644
--- a/download/archive/4.2-rc2/index.html
+++ b/download/archive/4.2-rc2/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-stable/index.html b/download/archive/4.2-stable/index.html
index 5fcbe9b60e..49cc94ad74 100644
--- a/download/archive/4.2-stable/index.html
+++ b/download/archive/4.2-stable/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2.1-rc1/index.html b/download/archive/4.2.1-rc1/index.html
index ebc8fde548..4293545223 100644
--- a/download/archive/4.2.1-rc1/index.html
+++ b/download/archive/4.2.1-rc1/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2.1-stable/index.html b/download/archive/4.2.1-stable/index.html
index 38326f4975..8b2163ec7c 100644
--- a/download/archive/4.2.1-stable/index.html
+++ b/download/archive/4.2.1-stable/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2.2-rc1/index.html b/download/archive/4.2.2-rc1/index.html
index 051e00ac0c..624f5a21dc 100644
--- a/download/archive/4.2.2-rc1/index.html
+++ b/download/archive/4.2.2-rc1/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2.2-rc2/index.html b/download/archive/4.2.2-rc2/index.html
index ecb4ef0de2..bb1b2f8380 100644
--- a/download/archive/4.2.2-rc2/index.html
+++ b/download/archive/4.2.2-rc2/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2.2-rc3/index.html b/download/archive/4.2.2-rc3/index.html
index d2fb0f11e9..36715295ce 100644
--- a/download/archive/4.2.2-rc3/index.html
+++ b/download/archive/4.2.2-rc3/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2.2-stable/index.html b/download/archive/4.2.2-stable/index.html
index 48f6858a88..5c5e5e5cd0 100644
--- a/download/archive/4.2.2-stable/index.html
+++ b/download/archive/4.2.2-stable/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-beta1/index.html b/download/archive/4.3-beta1/index.html
index 2b888c58cb..ef2bf6c7cc 100644
--- a/download/archive/4.3-beta1/index.html
+++ b/download/archive/4.3-beta1/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-beta2/index.html b/download/archive/4.3-beta2/index.html
index 86f9d79034..967ef0b1c5 100644
--- a/download/archive/4.3-beta2/index.html
+++ b/download/archive/4.3-beta2/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-beta3/index.html b/download/archive/4.3-beta3/index.html
index 195cd62898..94e162a771 100644
--- a/download/archive/4.3-beta3/index.html
+++ b/download/archive/4.3-beta3/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-dev1/index.html b/download/archive/4.3-dev1/index.html
index f56a421874..b5e24d4e5f 100644
--- a/download/archive/4.3-dev1/index.html
+++ b/download/archive/4.3-dev1/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-dev2/index.html b/download/archive/4.3-dev2/index.html
index 62faf81d9d..39aa8b795a 100644
--- a/download/archive/4.3-dev2/index.html
+++ b/download/archive/4.3-dev2/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-dev3/index.html b/download/archive/4.3-dev3/index.html
index faa549d8a9..68f29706a0 100644
--- a/download/archive/4.3-dev3/index.html
+++ b/download/archive/4.3-dev3/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-dev4/index.html b/download/archive/4.3-dev4/index.html
index a99d2aefd2..24e651d49a 100644
--- a/download/archive/4.3-dev4/index.html
+++ b/download/archive/4.3-dev4/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-dev5/index.html b/download/archive/4.3-dev5/index.html
index c35fb99cec..7479b52dfe 100644
--- a/download/archive/4.3-dev5/index.html
+++ b/download/archive/4.3-dev5/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-dev6/index.html b/download/archive/4.3-dev6/index.html
index 334322f8d7..4f5e56d88c 100644
--- a/download/archive/4.3-dev6/index.html
+++ b/download/archive/4.3-dev6/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-rc1/index.html b/download/archive/4.3-rc1/index.html
index 9adb9adb73..f32667031e 100644
--- a/download/archive/4.3-rc1/index.html
+++ b/download/archive/4.3-rc1/index.html
@@ -45,7 +45,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-rc2/index.html b/download/archive/4.3-rc2/index.html
index b72786d18e..be0ad05c1c 100644
--- a/download/archive/4.3-rc2/index.html
+++ b/download/archive/4.3-rc2/index.html
@@ -45,7 +45,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-rc3/index.html b/download/archive/4.3-rc3/index.html
index a0ee08c2ce..18fa872b67 100644
--- a/download/archive/4.3-rc3/index.html
+++ b/download/archive/4.3-rc3/index.html
@@ -45,7 +45,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-stable/index.html b/download/archive/4.3-stable/index.html
index 11c762a1e0..368b807416 100644
--- a/download/archive/4.3-stable/index.html
+++ b/download/archive/4.3-stable/index.html
@@ -45,7 +45,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.4-dev1/index.html b/download/archive/4.4-dev1/index.html
index 24763d64c5..0a57abc5f4 100644
--- a/download/archive/4.4-dev1/index.html
+++ b/download/archive/4.4-dev1/index.html
@@ -45,7 +45,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.4-dev2/index.html b/download/archive/4.4-dev2/index.html
index 67bcc6598c..c4bc504622 100644
--- a/download/archive/4.4-dev2/index.html
+++ b/download/archive/4.4-dev2/index.html
@@ -48,7 +48,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.4-dev3/index.html b/download/archive/4.4-dev3/index.html
index 9c3e8703b9..c8dfeec302 100644
--- a/download/archive/4.4-dev3/index.html
+++ b/download/archive/4.4-dev3/index.html
@@ -48,7 +48,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.4-dev4/index.html b/download/archive/4.4-dev4/index.html
index 21546c9014..428b9c99b0 100644
--- a/download/archive/4.4-dev4/index.html
+++ b/download/archive/4.4-dev4/index.html
@@ -48,7 +48,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.4-dev5/index.html b/download/archive/4.4-dev5/index.html
index 083acb48d0..ee4e128874 100644
--- a/download/archive/4.4-dev5/index.html
+++ b/download/archive/4.4-dev5/index.html
@@ -48,7 +48,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/index.html b/download/archive/index.html
index 6fc365fd94..e06535d14c 100644
--- a/download/archive/index.html
+++ b/download/archive/index.html
@@ -561,7 +561,7 @@
News
Changelog
Godot 1.0 Current state: stable
+Changelog
\ No newline at end of file
diff --git a/download/linux/index.html b/download/linux/index.html
index e83229ccf7..f79e2f19ce 100644
--- a/download/linux/index.html
+++ b/download/linux/index.html
@@ -46,7 +46,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/macos/index.html b/download/macos/index.html
index 32e971c486..750e16597c 100644
--- a/download/macos/index.html
+++ b/download/macos/index.html
@@ -31,7 +31,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/preview/index.html b/download/preview/index.html
index d3d2e2d15c..f1ffd4b8de 100644
--- a/download/preview/index.html
+++ b/download/preview/index.html
@@ -48,7 +48,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/windows/index.html b/download/windows/index.html
index 035d4e6bb3..7fc6e31c82 100644
--- a/download/windows/index.html
+++ b/download/windows/index.html
@@ -41,7 +41,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/education/index.html b/education/index.html
index 784d27d2ad..a0d3cc5ec3 100644
--- a/education/index.html
+++ b/education/index.html
@@ -23,7 +23,7 @@
Tutorials and resources page.We recommend GDQuest's Learn GDScript From Zero, which is a free and open source interactive tutorial for
absolute
beginners to learn to
-program with Godot's GDScript language. It is available as a desktop application or in the browser .
Want to know something else? If there is something else you would like to know, you can get in touch by writing us at contact@godotengine.org .
+program with Godot's GDScript language. It is available as a desktop application or in the browser .Want to know something else? If there is something else you would like to know, you can get in touch by writing us at contact@godotengine.org .
\ No newline at end of file
diff --git a/events/index.html b/events/index.html
index c9dc3ecb1b..c14c88ca41 100644
--- a/events/index.html
+++ b/events/index.html
@@ -171,7 +171,7 @@
few weeks though).Date: Sunday, Feb 5 @ 16:30Location: Room AW1.126 (come early, places are limited)Link: FOSDEM abstract Meeting the community The primary purpose for many of us will be to meet each other in person after having worked for months or
even years together online.
We will have plenty of time to grab some Belgian beers together, and maybe organize a community dinner
-together on Saturday evening.
Event details Date: Feb 4 and 5 2017Location: Université Libre de Bruxelles (ULB), Brussels, Belgium
(Show on map )Entrance fee: Free
Registration: No registration needed, you can just show up at our stand and say hello, but we’d be glad if you would fill this form anyway so that we know who to expect.
+together on Saturday evening.Event details Date: Feb 4 and 5 2017Location: Université Libre de Bruxelles (ULB), Brussels, Belgium
(Show on map )Entrance fee: Free
Registration: No registration needed, you can just show up at our stand and say hello, but we’d be glad if you would fill this form anyway so that we know who to expect.
\ No newline at end of file
diff --git a/fbx-import/index.html b/fbx-import/index.html
index 7cda2ff3e1..7b93881829 100644
--- a/fbx-import/index.html
+++ b/fbx-import/index.html
@@ -26,7 +26,7 @@
case, macOS will automatically use Rosetta when running FBX2glTF. Creating an
universal macOS binary (x86_64 + ARM) for FBX2glTF is planned in the future.There are no plans to support the Android and HTML5 editor with FBX import, as
those platforms don't allow executing arbitrary external programs. For Android and HTML5, you can use FBX2glTF on another device then save the
-converted glTF file.
+converted glTF file.
\ No newline at end of file
diff --git a/features/index.html b/features/index.html
index 4f0f308831..b008ab88d2 100644
--- a/features/index.html
+++ b/features/index.html
@@ -64,7 +64,7 @@
or build your own engine on top of it — it's all in your hands.
Find the logic behind any system in an open source codebase No need to wait for a support team to respond when you can read
the source code. Godot is an open book, and you can figure out everything
that is not yet documented after a single git checkout
.
-If you find and fix an issue, we will appreciate a PR upstream too.
+If you find and fix an issue, we will appreciate a PR upstream too.
\ No newline at end of file
diff --git a/governance/index.html b/governance/index.html
index 9a2f9c9517..4e87a95b1f 100644
--- a/governance/index.html
+++ b/governance/index.html
@@ -11,7 +11,7 @@
for their work to be included. Pull Requests are approved and merged by the respective area maintainers while,
again, always striving to promote agreement before moving forward. All improvements to the engine are made through
the Pull Requests of community members. Open discussion: Before doing any significant amount of work, we encourage maintainers,
-contributors, and community to open and discuss features and proposals in the Godot proposals repository . This allows all contributors to have a much better understanding of how users expect the new feature to be used. Because the primary aim of Godot is to produce a useful tool, we ask those who open proposals to discuss real-world use cases based on problems they are having with their current projects. This allows maintainers and contributors to have a much more "down to earth" understanding of user's requirements. This philosophy is best explained in the engine contributor guidelines .Community-minded: The Godot project is developed by and for the community. No corporate entity exists behind Godot that prioritizes one feature over another. Priorities are set by project leadership and area maintainers based on the feedback of the community in bug reports, proposals, and discussions in the various community channels. Ultimately, it is the community that determines the direction of the project.Every improvement to the engine, whether it is a feature or bug fix, is driven forward by Godot's community of contributors, users, maintainers, and leadership. Godot wouldn't exist in its current form without the countless contributions it receives from community members every day.
+contributors, and community to open and discuss features and proposals in the Godot proposals repository . This allows all contributors to have a much better understanding of how users expect the new feature to be used. Because the primary aim of Godot is to produce a useful tool, we ask those who open proposals to discuss real-world use cases based on problems they are having with their current projects. This allows maintainers and contributors to have a much more "down to earth" understanding of user's requirements. This philosophy is best explained in the engine contributor guidelines .
Community-minded: The Godot project is developed by and for the community. No corporate entity exists behind Godot that prioritizes one feature over another. Priorities are set by project leadership and area maintainers based on the feedback of the community in bug reports, proposals, and discussions in the various community channels. Ultimately, it is the community that determines the direction of the project.Every improvement to the engine, whether it is a feature or bug fix, is driven forward by Godot's community of contributors, users, maintainers, and leadership. Godot wouldn't exist in its current form without the countless contributions it receives from community members every day.
\ No newline at end of file
diff --git a/index.html b/index.html
index 0c4f92942e..a1e6acbfce 100644
--- a/index.html
+++ b/index.html
@@ -23,7 +23,7 @@
-
If you want to sponsor the project, please write to contact@godot.foundation .
+
If you want to sponsor the project, please write to contact@godot.foundation .
\ No newline at end of file
diff --git a/license/index.html b/license/index.html
index 72b9b18aa6..46d705565b 100644
--- a/license/index.html
+++ b/license/index.html
@@ -51,7 +51,7 @@
legal advice.
They reflect the Godot Engine team's understanding of their own license terms and that of their third-party
components;
-in case of doubt, please refer to your lawyer.
+in case of doubt, please refer to your lawyer.
\ No newline at end of file
diff --git a/press/index.html b/press/index.html
index a10fbe73f1..66f3a78a68 100644
--- a/press/index.html
+++ b/press/index.html
@@ -45,7 +45,7 @@
credits or website, but it should not be done in a way that implies
endorsement of your project by the Godot developers.
Do not distort the logo or icon.
In other words, always preserve the aspect ratio when scaling images.More design resources You can find more design resources such as artwork and 4K editor screenshots in the
-godot-design repository on GitHub .
+godot-design repository on GitHub .
\ No newline at end of file
diff --git a/priorities.html b/priorities.html
index c6bd24e427..8bbc26cf8f 100644
--- a/priorities.html
+++ b/priorities.html
@@ -83,7 +83,7 @@
unfold_less
Allow compiling Godot as a library that can be loaded and used by other applications
unfold_more
unfold_less
Currently, the engine’s capabilities are only accessible if the application itself is a Godot application. However, there are many situations where an application might want to use Godot as an intermediary. One case would be an application that uses native OS API for it’s UI, but needs Godot to render a complex 3D scene. Our goal is to make Godot available as a library to expand the possible uses of the engine.
This feature is better known as “LibGodot”.
Allow GDExtensions to communicate with one another
unfold_more
unfold_less
GDExtension was created to allow developers to create extensions as if they were coding a module directly in Godot’s source code. Currently, modules can depend on one another, but this is not yet possible for extensions. We aim to expose the necessary API to be able to. So, for example, an extension built with godot-rust would be able to extend an extension built with godot-cpp .
Add the ability to enable/disable GDExtensions in project settings
unfold_more
-unfold_less
For the time being, there’s no way to disable a GDExtension from a project without deleting the related files themselves. We plan to create a dialog akin to the Plugin tab in the Project settings in order to easily enable and disable GDExtensions.
+unfold_less For the time being, there’s no way to disable a GDExtension from a project without deleting the related files themselves. We plan to create a dialog akin to the Plugin tab in the Project settings in order to easily enable and disable GDExtensions.
\ No newline at end of file
diff --git a/privacy-policy/index.html b/privacy-policy/index.html
index 40768e6c62..66d1725924 100644
--- a/privacy-policy/index.html
+++ b/privacy-policy/index.html
@@ -95,7 +95,7 @@
Statement will be posted on this site. A notice will be posted on our homepage for 30 days whenever this privacy
statement is changed in a material way.This Privacy Statement was last amended on 2021-02-01. You can review the change history at https://github.com/godotengine/godot-website/commits/master/themes/godotengine/pages/privacy-policy.htm .
Attribution and License This Privacy Policy is licensed under Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). It is a derivative
work of:
+4.0). https://www.fsf.org/about/free-software-foundation-privacy-policy WordPress.org's Privacy Policy, used under Attribution-ShareAlike 2.5 Generic (CC BY-SA 2.5). https://wordpress.org/about/privacy
\ No newline at end of file
diff --git a/releases/4.3/index.html b/releases/4.3/index.html
index ea090d6077..e8ea02e30d 100644
--- a/releases/4.3/index.html
+++ b/releases/4.3/index.html
@@ -316,7 +316,7 @@
with special thanks to
GDQuest ,
Kenney ,
-and FR3NKD Texts by Nathalie Galla & Adam Scott
+and FR3NKD
Texts by Nathalie Galla & Adam Scott
\ No newline at end of file
diff --git a/showcase/a-most-extraordinary-gnome/index.html b/showcase/a-most-extraordinary-gnome/index.html
index acaedb8379..2748445542 100644
--- a/showcase/a-most-extraordinary-gnome/index.html
+++ b/showcase/a-most-extraordinary-gnome/index.html
@@ -3,7 +3,7 @@
A Most Extraordinary Gnome
A short adventure awaits! Waking up every day as the forest’s only protector is not an easy job for anyone. There’s not only every animal’s personal problem a gnome has to deal with — as mysteriously dark, unprecedented things start happening in the forest; the source of which no one really understands. Fear, escaping and destruction taint the previously peaceful life of the animals. Seemingly only one can stop this — but what can a single gnome really do to save the world?
A Most Extraordinary Gnome is a short, narrative-driven game, which combines challenging and unique 2D action with complex storytelling. You control a small gnome, who uses his hat to defeat the dangers he encounters in increasingly intense stages.
The features of the game Unlike anything you’ve seen in indie gaming! A colorful and vibrant 2D world, made entirely out of hand crafted paper cut-out elementsGameplay tailored just to you. Whether you’re looking for a laid-back experience or a harder challenge, gameplay settings are there to accommodate your needs!A deep story! There’s more than what just meets the eye. Embark on a short journey which will lead you to unexpected places.Confront the dangers facing the forest! Fight multiple distinctive bosses, each with its own challenge!Meet the dwellers of the forest! Your house is home to a diverse group of animals, each with its own look at the world and you.A memorable score! The game features a unique, Eastern-European inspired soundtrack, which dynamically changes based on the level of threat your character is facing at the moment.A world made out of paper As a rare sight in gaming, the entire adventure comes alive with the help of paper. Anything you see in the game is made by hand, stacking layers of colorful paper on each other to create this flat, but heavily detailed aesthetic the game. Utilizing traditional stop-motion techniques wherever necessary, the movements also get a unique flair specific to this game.
We hope you enjoy this hand-crafted adventure!
-
+
\ No newline at end of file
diff --git a/showcase/action-game-maker/index.html b/showcase/action-game-maker/index.html
index 92bf40fe9d..bbd1a7dc03 100644
--- a/showcase/action-game-maker/index.html
+++ b/showcase/action-game-maker/index.html
@@ -5,7 +5,7 @@
Unchain Your Imagination!
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 Maker’s Event Commands) and see the unique logic for your game come together!
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 it’s 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 it’s easy to import them – and high resolutions are supported!
-Why the developer chose Godot 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!
+Why the developer chose Godot 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!
\ No newline at end of file
diff --git a/showcase/beat-invaders/index.html b/showcase/beat-invaders/index.html
index f3389684f0..9c78f74547 100644
--- a/showcase/beat-invaders/index.html
+++ b/showcase/beat-invaders/index.html
@@ -3,7 +3,7 @@
Beat Invaders is a space-themed action roguelite shoot-em-up! Shoot your path through waves of enemies playing as one of three Pilots, each with their own Ship Class.
Combine upgrades, ship hacks, and specials to unleash an insane devastation on your enemies!
-Protect your freighters, beat the bosses and survive intense events to make your delivery.
Gameplay is speed is dependent on the speed of the current track , your opponents’ movements and firing rates are dictated by each song’s beat and tempo.
Level up during a run and choose from different upgrades to make your space ship more powerful. Combine different upgrades to create powerful builds.
Use your earned upgrade points after a run to further enhance your space ship and unlock different ship classes with unique main weapons and stats to take on enemies on harder difficulties. The upgrades can be reset and redestributed to try out different strategies with different ship classes.
Create devastating combos using events and boosts that wipe out screens full of enemies in seconds!
Event waves and mini events break up the pace and make for fun, rewarding challenges.
Features: Action Roguelite Shoot-em-up, paying tribute to old school games like Space Invaders or Galaga. Upgrade your ship’s and convoy's systems between enemy waves and purchase meta upgrades between runs. Different game modes: Easy, Normal, Hyper Mode, Speedrun, Lone Wolf, Weeklies and Dailies!) - all with online leaderboards Mini-events, Booster pickup items and different event waves make for challenging combos. Permanentely improve your ship’s sub-system, unlock new weapons and convoy gadgets between runs. Beat Bosses and tricky Events and show your worth! High score challenge! Compare your scores to your friends playing Beat Invaders, and try to beat their records! Runs great on the Steam Deck. Full mouse, keyboard and controller support. Atmospheric electronic and vocal soundtrack with 33 tracks that sets the pace of your adversaries, making each round unique to its song.
+Protect your freighters, beat the bosses and survive intense events to make your delivery.Gameplay is speed is dependent on the speed of the current track , your opponents’ movements and firing rates are dictated by each song’s beat and tempo.
Level up during a run and choose from different upgrades to make your space ship more powerful. Combine different upgrades to create powerful builds.
Use your earned upgrade points after a run to further enhance your space ship and unlock different ship classes with unique main weapons and stats to take on enemies on harder difficulties. The upgrades can be reset and redestributed to try out different strategies with different ship classes.
Create devastating combos using events and boosts that wipe out screens full of enemies in seconds!
Event waves and mini events break up the pace and make for fun, rewarding challenges.
Features: Action Roguelite Shoot-em-up, paying tribute to old school games like Space Invaders or Galaga. Upgrade your ship’s and convoy's systems between enemy waves and purchase meta upgrades between runs. Different game modes: Easy, Normal, Hyper Mode, Speedrun, Lone Wolf, Weeklies and Dailies!) - all with online leaderboards Mini-events, Booster pickup items and different event waves make for challenging combos. Permanentely improve your ship’s sub-system, unlock new weapons and convoy gadgets between runs. Beat Bosses and tricky Events and show your worth! High score challenge! Compare your scores to your friends playing Beat Invaders, and try to beat their records! Runs great on the Steam Deck. Full mouse, keyboard and controller support. Atmospheric electronic and vocal soundtrack with 33 tracks that sets the pace of your adversaries, making each round unique to its song.
\ No newline at end of file
diff --git a/showcase/blastronaut/index.html b/showcase/blastronaut/index.html
index e8d36f22a6..79f1e51dfc 100644
--- a/showcase/blastronaut/index.html
+++ b/showcase/blastronaut/index.html
@@ -3,7 +3,7 @@
Mine resources! Upgrade your gear! Make Profit! It is a dangerous but lucrative job. Explore this vast procedurally generated world with your jetpack. Extract the minerals with an explosive gel. Expand your mining platform. But most importantly: stay alive.
The game offers you: Mining and selling resources for profit Exploring an infinite procedurally generated world Upgrading your gear A lot of explosions The depths of the planet hide many unique biomes and treasures, but also dangers. Every biome has its own way to harm you and having the right set of gear will make your life much easier.
On the ground, you can build your base of operation. Different machines allow you to process and trade the resources that you have brought from your last mining operation.
-
+
\ No newline at end of file
diff --git a/showcase/brotato/index.html b/showcase/brotato/index.html
index 86aecb8ced..7176958a16 100644
--- a/showcase/brotato/index.html
+++ b/showcase/brotato/index.html
@@ -3,7 +3,7 @@
A spaceship from Potato World crashes onto an alien planet. The sole survivor: Brotato, the only potato capable of handling 6 weapons at the same time. Waiting to be rescued by his mates, Brotato must survive in this hostile environment.
Features
Auto-firing weapons by default with a manual aiming option Fast runs (under 30 minutes) Dozens of characters available to customize your runs (one-handed, crazy, lucky, mage and many more) Hundreds of items and weapons to choose from (flamethrowers, SMGs, rocket launchers or sticks and stones) Survive waves lasting 20 to 90 seconds each and kill off as many aliens as you can during that time Collect materials to gain experience and get items from the shop between waves of enemies Accessibility options: tweak the health, damage and speed of enemies so the difficulty is right for you
-
+
\ No newline at end of file
diff --git a/showcase/case-of-the-golden-idol/index.html b/showcase/case-of-the-golden-idol/index.html
index a0c1e4f608..46530dc48c 100644
--- a/showcase/case-of-the-golden-idol/index.html
+++ b/showcase/case-of-the-golden-idol/index.html
@@ -4,7 +4,7 @@
| Oct 2022
Investigate Gruesome Crimes Step into the shoes of an 18th century detective and uncover the mystery behind twelve strange deaths spanning 50 years, all somehow connected.
Unmask the true killers in this sprawling narrative and discover their devious motives.
Piece Together the Plot Observe closely and reconstruct each scene of death. Your skills of deduction can identify each suspect, motive and murder weapon.
Uncover the Conspiracy Reveal the true nature of the mysterious Golden Idol and those who covet it. Follow the journey of a cursed aristocratic family as you untangle a web of deceit and villainy in your hunt for the truth behind this dark conspiracy.
-
+
\ No newline at end of file
diff --git a/showcase/cassette-beasts/index.html b/showcase/cassette-beasts/index.html
index e909e35054..cbbfc4e7db 100644
--- a/showcase/cassette-beasts/index.html
+++ b/showcase/cassette-beasts/index.html
@@ -3,7 +3,7 @@
Welcome to New Wirral, a remote island inhabited by strange creatures you’ve only dreamed of, nightmares you hopefully haven’t, and a cast of brave folks who use cassette tapes to transform for battle. To find a way home you’ll need to explore every inch of the island, and record monsters to your trusty cassette tapes to gain their abilities!
Faced with the constant threat of monster attacks, you must protect the residents of Harbourtown. Record a monster to tape, then play it back to take on its form for battle!
Any two monster forms can be fused to produce unique, fully-animated new fusion forms.
Explore a rich open world Certain monster abilities can be used in human form. You’ll need these to help you get around, solve puzzles, and locate dungeons. Glide, fly, swim, climb, dash, or turn magnetic!
Travel alongside a diverse cast of human companions Never fight alone! Form bonds, spend time together, and help your selected partner complete personal goals to become a better team. The strength of your relationship determines how well you’re able to fuse!
Master a deep battle system Take advantage of elemental chemistry to apply extra buffs or debuffs alongside your attack, or even alter your opponent’s elemental type!
-
+
\ No newline at end of file
diff --git a/showcase/city-game-studio/index.html b/showcase/city-game-studio/index.html
index e31ed29e5b..979315a92f 100644
--- a/showcase/city-game-studio/index.html
+++ b/showcase/city-game-studio/index.html
@@ -13,7 +13,7 @@
Furthermore you will be able to publish your own publishing contracts. Then
you will then be ready to dominate the market and buy back your competitors.Feature list Develop or rent game engines Receive/publish game offers Buying or renting several buildings Develop and manage a digital store Cracking competitors' games Unlocking new game genres Spy the competitors Hire staff Organize marketing campaigns Organizing and attending conventions Buy out companies Executing contracts that trains your employees Porting games to several consoles Design your company logo Manage your employees' schedules Get awarded Game of the Year Microtransactions Console exclusive game Lootboxes Have a good time This game doesn’t have:
eSport competitions An R&D department A multiplayer mode City Game Studio is inspired by marvelous games like
Game Dev Story Game Dev Tycoon Software Inc Sim City Mad Games Tycoon
+View on GOG.com
\ No newline at end of file
diff --git a/showcase/cruelty-squad/index.html b/showcase/cruelty-squad/index.html
index 78845af047..3978ca0812 100644
--- a/showcase/cruelty-squad/index.html
+++ b/showcase/cruelty-squad/index.html
@@ -1,7 +1,7 @@
Cruelty Squad – Godot Engine Cruelty Squad is a tactical first person shooter set in the hardcore gig economy of corporate liquidations. You're an emotionally dead combat-substance fueled grunt of Cruelty Squad, a depraved subsidiary company tasked with performing wetworks for its host conglomerate. Will you make the Corporate Arch Demoness proud or succumb to bitter tears of failure?
Highly kinematic tactical gameplay using varied weapons such as the flechette shotgun, silenced 10mm pistol, radiation emitter, dart gun, corrosive gas launcher and more. No handholding! All of the missions have multiple viable approaches and routes. Plan out your equipment loadout to gain a tactical advantage. Choose between non-lethal and lethal options. Throw toilet bowls at enemies. Fight and sneak through offices, suburbs, police stations and secret compounds. Find and unlock hidden equipment and levels. Open objective based gameplay, in each mission your goal is to kill or destroy your targets before heading for the exit. Revisit earlier missions and try to beat your best time. Can you S-rank all of the missions? Enemies including private security, cops, psycho freaks, flower hybrids, swamp cultists and mutant dogs. Talk to NPCs and figure out the mysteries of the world. Advanced death mechanics. Stock and organ market simulation. Punishment mode.
+| June 2021
Cruelty Squad is a tactical first person shooter set in the hardcore gig economy of corporate liquidations. You're an emotionally dead combat-substance fueled grunt of Cruelty Squad, a depraved subsidiary company tasked with performing wetworks for its host conglomerate. Will you make the Corporate Arch Demoness proud or succumb to bitter tears of failure?
Highly kinematic tactical gameplay using varied weapons such as the flechette shotgun, silenced 10mm pistol, radiation emitter, dart gun, corrosive gas launcher and more. No handholding! All of the missions have multiple viable approaches and routes. Plan out your equipment loadout to gain a tactical advantage. Choose between non-lethal and lethal options. Throw toilet bowls at enemies. Fight and sneak through offices, suburbs, police stations and secret compounds. Find and unlock hidden equipment and levels. Open objective based gameplay, in each mission your goal is to kill or destroy your targets before heading for the exit. Revisit earlier missions and try to beat your best time. Can you S-rank all of the missions? Enemies including private security, cops, psycho freaks, flower hybrids, swamp cultists and mutant dogs. Talk to NPCs and figure out the mysteries of the world. Advanced death mechanics. Stock and organ market simulation. Punishment mode.
\ No newline at end of file
diff --git a/showcase/delta-v-rings-of-saturn/index.html b/showcase/delta-v-rings-of-saturn/index.html
index 024ad9070e..5f27ee24c9 100644
--- a/showcase/delta-v-rings-of-saturn/index.html
+++ b/showcase/delta-v-rings-of-saturn/index.html
@@ -12,7 +12,7 @@
gameplay - adapt to survive in the hostile environment of space. Discover the mystery of the Rings, or just try to get rich leading your
excavation company. Plan your strategy back on Enceladus Prime station. Sell your output,
upgrade your ship, hire the crew and manage your company.
+View on itch.io
\ No newline at end of file
diff --git a/showcase/dome-keeper/index.html b/showcase/dome-keeper/index.html
index 40b9be1a3b..e07970c031 100644
--- a/showcase/dome-keeper/index.html
+++ b/showcase/dome-keeper/index.html
@@ -1,7 +1,7 @@
Dome Keeper – Godot Engine Defend your dome from wave after wave of monsters in this innovative roguelike survival miner, Dome Keeper. Use the time between each attack to dig beneath the surface in search of valuable resources and artifacts – use them carefully to choose powerful upgrades and bonuses. Set on beautifully crafted pixel art alien planets, Dome Keeper offers a captivating atmosphere with music tracks fusing melodic and synthetic creations.
Dig Drill tunnels beneath your dome in search of precious materials or to uncover powerful hidden artifacts. Watch the time, you need to get back to the dome and be ready when the next wave of attack comes. How deep will you get this time? How much can you carry back?
Defend Take control of your defenses to fend off the alien attacks. Air and ground, slow and fast; the attackers must be prioritized and dealt with before they tear your dome apart.
Develop Utilize your mineral harvest to unlock powerful upgrades: augment your weapons, enhance the impact of your drill, boost your jetpack’s max speed, and many other upgrade paths -- each of which gives you and your dome the best odds for survival!
+| September 2022
Defend your dome from wave after wave of monsters in this innovative roguelike survival miner, Dome Keeper. Use the time between each attack to dig beneath the surface in search of valuable resources and artifacts – use them carefully to choose powerful upgrades and bonuses. Set on beautifully crafted pixel art alien planets, Dome Keeper offers a captivating atmosphere with music tracks fusing melodic and synthetic creations.
Dig Drill tunnels beneath your dome in search of precious materials or to uncover powerful hidden artifacts. Watch the time, you need to get back to the dome and be ready when the next wave of attack comes. How deep will you get this time? How much can you carry back?
Defend Take control of your defenses to fend off the alien attacks. Air and ground, slow and fast; the attackers must be prioritized and dealt with before they tear your dome apart.
Develop Utilize your mineral harvest to unlock powerful upgrades: augment your weapons, enhance the impact of your drill, boost your jetpack’s max speed, and many other upgrade paths -- each of which gives you and your dome the best odds for survival!
\ No newline at end of file
diff --git a/showcase/dungeondraft/index.html b/showcase/dungeondraft/index.html
index 35718aa3ae..28039bfa25 100644
--- a/showcase/dungeondraft/index.html
+++ b/showcase/dungeondraft/index.html
@@ -2,7 +2,7 @@
Dungeondraft is an easy-to-use and featureful encounter mapping tool for your
-table-top RPG and D&D needs.
Unintimidating UI Clean, appealing art style Fast workflow Smart tiling system Smart object scattering Built-in lighting system Built-in dungeon and cave generator No Internet required to use, DRM-free
+table-top RPG and D&D needs.Unintimidating UI Clean, appealing art style Fast workflow Smart tiling system Smart object scattering Built-in lighting system Built-in dungeon and cave generator No Internet required to use, DRM-free
\ No newline at end of file
diff --git a/showcase/endoparasitic/index.html b/showcase/endoparasitic/index.html
index b48b7326e9..6323b6343a 100644
--- a/showcase/endoparasitic/index.html
+++ b/showcase/endoparasitic/index.html
@@ -2,7 +2,7 @@
Three limbs ripped off, infected with a deadly parasite, you must save your research. Drag yourself through the corridors of a secret research lab on a remote asteroid, fight off horribly mutated monsters, inject countless syringes of vaccines, and survive at all costs.
Endoparasitic is a tactical survival horror game where you must manually do every action from reloading to moving. Juggle movement and firing and plan room entrances to avoid getting swarmed.
Features:
One handed in game, one handed in real life: Everything is mouse-controlled Guns are manually loaded one bullet at a time Your healthbar is a parasite burrowing to your brain Stealth sections Puzzles Story and characters Various mutated monsters to fight Boss fights Four guns
+View on itch.io
\ No newline at end of file
diff --git a/showcase/ex-zodiac/index.html b/showcase/ex-zodiac/index.html
index 959d3402fc..df792dbfea 100644
--- a/showcase/ex-zodiac/index.html
+++ b/showcase/ex-zodiac/index.html
@@ -5,7 +5,7 @@
early 90's 3D games. Join protagonist Kyuu as she fights to free the worlds of
the Sanzaru Star System, overrun by the intergalactic terrorist organization
known as Zodiac.Featuring A retro, colourful, low-poly visual style 12 main levels (plus secret areas and side-paths) Multiple routes to complete the game Major bosses at the end of each level, each piloted by a member of the Zodiac A 16-bit style soundtrack by +TEK combining FM and wavetable synthesis
+View on itch.io
\ No newline at end of file
diff --git a/showcase/fist-of-the-forgotten/index.html b/showcase/fist-of-the-forgotten/index.html
index 7c8af583b9..059dc30a5f 100644
--- a/showcase/fist-of-the-forgotten/index.html
+++ b/showcase/fist-of-the-forgotten/index.html
@@ -1,7 +1,7 @@
Fist of the Forgotten – Godot Engine Fist of the Forgotten is a platformer set in a harsh, dark world, but that doesn't mean you're helpless. Relics passed down from your family allow you to interact with forgotten technology and fight your way forward.
Make your way through a forgotten civilization, facing ancient automatons, and acquire some of their technology.
3D assets and high framerate physics allow for perfectly smooth, fluid animation, even on monitors that display at > 100hz. Mechanics in the game, such as sliding down slopes and grappling allow you to build up and maintain momentum.
Fist of the Forgotten's narrative contains no dialogue, so you are free to pay attention to the details to understand the depth of the story, try to uncover alternate endings, or simply focus on flowing through the levels as quickly as possible and enjoy the gameplay.
The fist provides combat capabilities as well as movement. Use it to reach further platforms and combine it with other momentum gaining abilities, such as sliding down hills, to cover extreme gaps.
+| Release date: TBD
Fist of the Forgotten is a platformer set in a harsh, dark world, but that doesn't mean you're helpless. Relics passed down from your family allow you to interact with forgotten technology and fight your way forward.
Make your way through a forgotten civilization, facing ancient automatons, and acquire some of their technology.
3D assets and high framerate physics allow for perfectly smooth, fluid animation, even on monitors that display at > 100hz. Mechanics in the game, such as sliding down slopes and grappling allow you to build up and maintain momentum.
Fist of the Forgotten's narrative contains no dialogue, so you are free to pay attention to the details to understand the depth of the story, try to uncover alternate endings, or simply focus on flowing through the levels as quickly as possible and enjoy the gameplay.
The fist provides combat capabilities as well as movement. Use it to reach further platforms and combine it with other momentum gaining abilities, such as sliding down hills, to cover extreme gaps.
\ No newline at end of file
diff --git a/showcase/gourdlets/index.html b/showcase/gourdlets/index.html
index 41834c883c..89fc37d558 100644
--- a/showcase/gourdlets/index.html
+++ b/showcase/gourdlets/index.html
@@ -5,7 +5,7 @@
View on itch.io
-
+
\ No newline at end of file
diff --git a/showcase/gravity-ace/index.html b/showcase/gravity-ace/index.html
index ad20b0a247..dd95036531 100644
--- a/showcase/gravity-ace/index.html
+++ b/showcase/gravity-ace/index.html
@@ -6,7 +6,7 @@
Descend into dark caverns, fly and blast your way past enemies, retrieve the
reactor core and make your escape, all while fighting the deadly embrace of
crushing gravity.
Why the developer chose Godot I think without Godot I'd be much farther behind where I am now. Godot just works in a way that meshes with how I like to think and work. I'd be much less productive for sure.
The 2D workflow is pretty great. Just drop some images in and drag them onto the canvas, attach a script, write a few lines of GDScript and you've got the beginning of a game. Modifying assets is seamless. And the node tree is super powerful. Reusing scenes in other scenes allows me to do a lot of stuff quickly and visually that would have been much more cumbersome in other frameworks.
— Godot Showcase - Gravity Ace developer talks about his experience
+View on itch.io
Why the developer chose Godot I think without Godot I'd be much farther behind where I am now. Godot just works in a way that meshes with how I like to think and work. I'd be much less productive for sure.
The 2D workflow is pretty great. Just drop some images in and drag them onto the canvas, attach a script, write a few lines of GDScript and you've got the beginning of a game. Modifying assets is seamless. And the node tree is super powerful. Reusing scenes in other scenes allows me to do a lot of stuff quickly and visually that would have been much more cumbersome in other frameworks.
— Godot Showcase - Gravity Ace developer talks about his experience
\ No newline at end of file
diff --git a/showcase/haiki/index.html b/showcase/haiki/index.html
index 3afd2a34de..be3738db44 100644
--- a/showcase/haiki/index.html
+++ b/showcase/haiki/index.html
@@ -8,7 +8,7 @@
oblivion. You’ll need precision jumps and keen reactions to survive the 80
hand-crafted levels standing between Haiki and victory.Die, die and die again until your reflexes are sharp enough to face the
headless Baron and get your body back.
Or lose your head forever.
Want to get ahead? Get a hat! Collect dapper, dashing and dandy hats on your
-journey up from the gutter. How do the hats help Haiki on his quest?
They don't. AT ALL.
They're just hats.
Features Fast-paced, intuitive, limb-free platforming 80 levels, from EASY to PURE HELL A story that makes Shakespeare look like an idiot Speedrun mode for the truly hardcore Collectible hats for the truly awesome
+journey up from the gutter. How do the hats help Haiki on his quest?They don't. AT ALL.
They're just hats.
Features Fast-paced, intuitive, limb-free platforming 80 levels, from EASY to PURE HELL A story that makes Shakespeare look like an idiot Speedrun mode for the truly hardcore Collectible hats for the truly awesome
\ No newline at end of file
diff --git a/showcase/halls-of-torment/index.html b/showcase/halls-of-torment/index.html
index 549448f076..08c88a8b76 100644
--- a/showcase/halls-of-torment/index.html
+++ b/showcase/halls-of-torment/index.html
@@ -4,7 +4,7 @@
| May 2023
Halls of Torment is a horde survival game in a pre rendered retro look reminiscent of RPGs from the late 90s. Choose one of many hero characters and descend into the deadly Halls of Torment. Fight unholy horrors from beyond and survive wave after wave until you face one of the tormented lords. Advance your hero with character traits, abilities, and items. Create a new powerful build during each run. Explore various underground expanses and find new powerful items that enable you to venture even deeper into the abyss.
Features Quick and casual runs of maximum 30 minutes Old school pre rendered artstyle Quest based meta progression Large selection of diverse abilities, traits, and items, all enabling you to create interesting synergies Diverse bosses featuring unique mechanics and attack patterns Items can be retrieved to the overworld and used to customize future runs Dozens of interesting characters allowing many different playstyles Unlock and explore multiple interesting and challenging underground worlds Interactable environments: Use traps and hazards to your advantage! Early Access Content 3+ stages unique environment 7+ playable characters 11+ different and upgradable abilities 12+ unique bosses 30+ unique monsters 14+ blessings making you stronger for each attempt 50+ different items to unlock and retrieve 500+ traits that upgrade characters and abilities 150+ quests to complete This is the content the early access will start with and will be expanded on until the final release.
-
+
\ No newline at end of file
diff --git a/showcase/hive-time/index.html b/showcase/hive-time/index.html
index 5f75c2e374..068a42d903 100644
--- a/showcase/hive-time/index.html
+++ b/showcase/hive-time/index.html
@@ -8,7 +8,7 @@
find pollen and nectar, have Builders research new cell types, and ensure you
have enough Beesitters to raise the next generation of bees. Make interesting
choices that affect the hive - respond to wasp attacks, deal with outlaw
-slugs, or help a caterpillar realise a lifelong dream.
Why the developer chose Godot I felt like Godot enabled me to pull the core game together very quickly. The most attractive parts of the engine for me come from its nature as a Free/Open Source Software project and the ability that gives me to debug, fix, or modify the engine to suit my personal needs.
I also feel more comfortable using free and Free tools because I can be confident that if others want to follow in my footsteps, financial or philosophical hurdles won't prevent them from doing so.
— Godot Showcase - Hive Time developer Cheeseness talks about his experience
+slugs, or help a caterpillar realise a lifelong dream.
Why the developer chose Godot I felt like Godot enabled me to pull the core game together very quickly. The most attractive parts of the engine for me come from its nature as a Free/Open Source Software project and the ability that gives me to debug, fix, or modify the engine to suit my personal needs.
I also feel more comfortable using free and Free tools because I can be confident that if others want to follow in my footsteps, financial or philosophical hurdles won't prevent them from doing so.
— Godot Showcase - Hive Time developer Cheeseness talks about his experience
\ No newline at end of file
diff --git a/showcase/human-diaspora/index.html b/showcase/human-diaspora/index.html
index f669351960..a15dece639 100644
--- a/showcase/human-diaspora/index.html
+++ b/showcase/human-diaspora/index.html
@@ -9,7 +9,7 @@
the stars and landed on an alien planet. The only way to save humanity is to
fight the enemy invader and secure your place among the strongest. Be it on
land, sea or space territories, shoot your way into victory, never accept
-defeat. Humanity must endure!
Why the developer chose Godot Foremost, Godot is FOSS . It entails freedom to dispose of my game projects as I best see fit without worrying about the intricacies of software licenses. And while learning to use it, I realized it already had the necessary set of tools to pull out my game ideas. The node architecture with the concept of scene within scenes and the straightforward way of scripting with GDScript sealed the deal for me.
— Godot Showcase - Human Diaspora developer interview
+defeat. Humanity must endure!
Why the developer chose Godot Foremost, Godot is FOSS . It entails freedom to dispose of my game projects as I best see fit without worrying about the intricacies of software licenses. And while learning to use it, I realized it already had the necessary set of tools to pull out my game ideas. The node architecture with the concept of scene within scenes and the straightforward way of scripting with GDScript sealed the deal for me.
— Godot Showcase - Human Diaspora developer interview
\ No newline at end of file
diff --git a/showcase/index.html b/showcase/index.html
index 79b49441df..30c913ba76 100644
--- a/showcase/index.html
+++ b/showcase/index.html
@@ -124,7 +124,7 @@
Gotcha Gotcha Games PVKK: Planetenverteidigungskanonenkommandant
Bippinbits
Fist of the Forgotten
Lone Wulf Studio
Kingdoms of the Dump
-Roach Games
Do you want us to showcase your game or project? Read our showcase guidelines and criteria .
+Roach Games
Do you want us to showcase your game or project? Read our showcase guidelines and criteria .
\ No newline at end of file
diff --git a/showcase/kamaeru/index.html b/showcase/kamaeru/index.html
index 93ae07046c..8b01b67faf 100644
--- a/showcase/kamaeru/index.html
+++ b/showcase/kamaeru/index.html
@@ -5,7 +5,7 @@
-
+
\ No newline at end of file
diff --git a/showcase/kingdoms-of-the-dump/index.html b/showcase/kingdoms-of-the-dump/index.html
index 606e702b2b..11068a5874 100644
--- a/showcase/kingdoms-of-the-dump/index.html
+++ b/showcase/kingdoms-of-the-dump/index.html
@@ -3,7 +3,7 @@
Kingdoms of the Dump is a SNES-styled RPG with heavy inspiration from
platformers and zelda-like games. Join Dustin Binsley, the Trash Can Knight,
-on his journey to save the Lands of Fill.
Character Swapping to use on-field abilities Jumping and elevation No Random Encounters Turn based Combat on a grid Timed Hits Made by real-life janitors
+on his journey to save the Lands of Fill.
Character Swapping to use on-field abilities Jumping and elevation No Random Encounters Turn based Combat on a grid Timed Hits Made by real-life janitors
\ No newline at end of file
diff --git a/showcase/luck-be-a-landlord/index.html b/showcase/luck-be-a-landlord/index.html
index a364584672..725ec9656d 100644
--- a/showcase/luck-be-a-landlord/index.html
+++ b/showcase/luck-be-a-landlord/index.html
@@ -7,7 +7,7 @@
-
+
\ No newline at end of file
diff --git a/showcase/lumencraft/index.html b/showcase/lumencraft/index.html
index 93d3336b67..9896f3171c 100644
--- a/showcase/lumencraft/index.html
+++ b/showcase/lumencraft/index.html
@@ -4,7 +4,7 @@
| February 2023
Lumencraft is a unique combination of a top-down shooter and base building game with tower defense elements. Enter procedurally generated levels with a fully destructible environment to build your base, dig some tunnels and find the precious Lumen - humanity’s only chance for survival.
BECOME THE SAVIOR OF MANKIND For two centuries the remnants of humanity struggle to survive without electricity and light. But there is a spark of hope. In 2221 the survivors find Lumen – a crystal of high energy potency that may be the last chance for mankind. Scouts, brave miners, established an underground settlement and voyage into the dark to reach the nearby Lumen deposits. But the darkness consumed them, as the subterranean caves and tunnels hold as much danger as salvation. Now it’s time for you to step into the endless shadows…
DRILL AND SHOOT YOUR WAY TO SALVATION The lightless underground holds swarms of enemies that will raid your base. Illuminate the gloomy tunnels with your weapons and turrets in a struggle for survival. Drill new paths and shafts to reach valuable resources or blast walls and your foes.
EXPLORE A FULLY DESTRUCTIBLE ENVIRONMENT With a lot of effort and a set of original algorithms, 2Dynamic Games have transformed the open-source Godot Engine into a completely new tool. This allows every bit of terrain (pixel, as we used to call them) to be destroyed, and maps to be painted as if in a drawing program.
YOUR WAY TO PLAY Lumencraft offers several game modes to suit your gameplay style. With a 27-mission campaign experience the full narrative of humanity’s struggle for survival. Jump into procedurally generated maps and fight in a true roguelike fashion. Or maybe create your own level in the editor, or try out what the creators and Steam Workshop users have prepared for you. Custom game types (e.g. tower defence, action, survival or mix of them) with user-defined starting technologies/upgrades and goals allow you to test your skills as a scout in any conditions. Invite your friend to play locally or using Steam Remote play and dive into the darkness together.
MAP EDITOR Easily create stunning maps with moldable terrain and a variety of objects to choose from. Invite friends to play in your custom map and define game types, starting technologies, upgrades, and goals.
We hope the community will create many amazing maps for the Steam Workshop.
KEY FEATURES Multiple game modes - a story campaign, custom maps created by the developers and the community or procedurally generated levels. The choice is yours! Defending the underground settlement by direct combat and the use of diversified turrets. Highly efficient and satisfying digging mechanics (just listen to the sweet sound of crushed rocks and Lumen). Explosive weapons. Yes, we have dynamite. Dynamic lights and pixel-perfect interaction with a fully destructible terrain. Dread atmosphere created through an impactful sound design and a unique 2Dynamic lighting system. Realistic simulations. Just look at the lava! Play with your friends in co-op mode either using Steam Remote Play or locally on a shared screen :)
-
+
\ No newline at end of file
diff --git a/showcase/madness-endless/index.html b/showcase/madness-endless/index.html
index fd153a0183..67228b9cdd 100644
--- a/showcase/madness-endless/index.html
+++ b/showcase/madness-endless/index.html
@@ -3,7 +3,7 @@
Darkness, despair, challenge… The world as we know it is run over by eldritch monstrosities. Survivors are few and far between, stuck between living in this new, grim world and scheming to overthrow others. You have been chosen to bear the greatest burden - the Herald’s Blade. Are you going to help your covenant or take over as the new overlord? Do you really have a choice?
Experience a unique ACTION STEALTH game created specifically for mobile. A hand crafted, pixel art world full of horrific creatures and hidden tragedies. Play with ONE hand and defeat enemies by using slick COMBOS and special ITEMS, while dashing through the environment with blinding speed! Discover a clandestine plot in this ruined world, where friends will betray you and foes will aid you…
Master the blade, master your surroundings and CONQUER!
But remember…
YOU ARE ALONE. YOU WILL DIE. YOU WILL DO IT AGAIN.
After two possible endings, see how far you can get in an ENDLESS MODE where you explore and conquer procedurally generated levels.
Fight against over 15 UNIQUE enemy types, Elite enemies and 4 carefully crafted BOSSES that will test your skills to their limit.
Speak to many colorful characters and try to piece together the bigger picture.
Uncover your own origin as your perspective on evil changes with every nightmare and flashback.
ORIGINAL CONTROLS - Built natively for touchscreen and one handed play, movement and combat interact smoothly and seamlessly.
TENSE, UNNERVING AND MYSTERIOUS - Reap through the ruined world with fast and furious dashes off walls, while staying out of sight of monstrosities, away from traps and countless hazards!
HARDCORE DIFFICULTY - Combine speed, skill, wits & reflexes, to solve increasingly complex rooms, use powerful items, and CONQUER gigantic bosses!
HANDCRAFTED & UNIQUE ARTSTYLE - A depressing, unique, visual horror where every nook and cranny was crafted to keep you on your toes and intensify the experience.
A GRIM quest awaits you! Will you answer the Heralds’ call?
-
+
\ No newline at end of file
diff --git a/showcase/material-maker/index.html b/showcase/material-maker/index.html
index f54b8d22a8..7d2ae89f13 100644
--- a/showcase/material-maker/index.html
+++ b/showcase/material-maker/index.html
@@ -6,7 +6,7 @@
textures, and can be exported for the Godot, Unity and Unreal game engines.A base library of ~150 nodes that define shapes, patterns, filters and
transforms on textures, as well as 2D and 3D shapes described as signed
distance functions.
New group nodes and shader nodes can easily be created using the user interface.
+View on GitHub
\ No newline at end of file
diff --git a/showcase/of-life-and-land/index.html b/showcase/of-life-and-land/index.html
index 65bb4bad74..1f1d8191c4 100644
--- a/showcase/of-life-and-land/index.html
+++ b/showcase/of-life-and-land/index.html
@@ -4,7 +4,7 @@
| April 2024
Take the role of a leader delegated to build new settlements in remote, unknown corners of the empire. In those forgotten places, nature is wild and legends are more real and vivid than one may think. Experience the challenges of different seasons and climates in a world, where every animal and every plant tries to find their place in nature, while you lead your villagers. How much will you share with nature? Will you strive for balance or even enforce the extinction of certain animals? Follow the old paths… or find your own.
Build Your Economy Manage the acquisition, refinement, and distribution of resources. Goods must be transported to desired locations by someone who has the time and space to do it.
Care For All Living Things Manage the needs of the citizens. They are “alive” and have a specific home, workplace, and broad range of needs and goals. But animals also look for food, get thirsty, sleepy, form groups, look for social interactions, and try to find their place in nature. Even plants need water and the right temperature in order to survive.
Find Balance (Or Not) Humans share the same space and resources with nature, and they influence each other. While in the beginning the influence of the humans is insignificant, it gets more and more important when the city - and its needs - grow. There is a risk that some animals or groups will become extinct or explosively multiply, depending on your actions.
Observe The Vibrant World Seasons and weather affect the gameplay. Certain plants grow only in certain seasons, need more water on hot days or freeze during cold periods. Humans and animals need more energy to keep warm in winter or more water in summer to keep cool. In extreme cases, they suffer from exhaustion and may even be harmed.
Take Your Time You set the pace. Pause the game, speed it up or slow it down whenever you want. Nature is robust, and your villagers develop more complex needs as you progress.
Build Your Own Scenarios Create your own maps and scenarios in the editor. You can change the landscape, generate plants, and place animals. You can also connect watercourses and create new paths for travellers. Add new maps or link existing ones together to a new world.
Features
Unique deep simulation of the nature in a building strategy game with complex interdependence between humans and nature. Manage simultaneously the acquisition, refining and distribution of resources on multiple maps in different climatic conditions. Manage the needs of the citizens. They are “alive” and have a specific home, workplace, and unique needs. Animals are looking for food, get thirsty, sleepy, and form social groups to find their place in nature. Plants grow and are affected by the actions of the humans, animals, and their environment. Seasons and climate affect the gameplay, as certain plants grow only under certain conditions. Temperature affects humans, animals, plants, and the environment. Interact and trade with other factions that produce goods with the same rules as you do. Create own maps and scenarios in the editor and extend them using mods. Charming and calm low poly art style.
-
+
\ No newline at end of file
diff --git a/showcase/pingo-adventure/index.html b/showcase/pingo-adventure/index.html
index 03b4bbab05..4de8c93963 100644
--- a/showcase/pingo-adventure/index.html
+++ b/showcase/pingo-adventure/index.html
@@ -2,7 +2,7 @@
Pingo Adventure is a cute 3D platformer in a physics simulated world with jiggly plants, bouncy bridge, springy rope etc.
Explore the adorable & interactive 3D world from rainforest, ancient ruins to dungeon filled with hot lava and solving puzzles designed for the physics simulated environment.
But that’s not all, there are mini games in between the platforming level which can be unlocked and played in the “arcade mode”.
And don’t forget to customize your own Pingo with all the costumes that can be unlocked from the adventures.
Features: Physics Simulation - Immerse in the physics simulated cute world with jiggly plants, bouncy bridge, springy rope and more...Puzzles - Solving puzzles designed for the physics simulated environmentMini Games - Collect replayable mini games from adventuresCamera Mode - Capture the cute moments of your adventures from different anglesCharacter Customization - Customize your own Pingo with various costumes that you can unlock from the adventures
+View on itch.io
\ No newline at end of file
diff --git a/showcase/pixelorama/index.html b/showcase/pixelorama/index.html
index 14eb801c0e..eadc2ce9c1 100644
--- a/showcase/pixelorama/index.html
+++ b/showcase/pixelorama/index.html
@@ -6,7 +6,7 @@
View on GitHub
-
+
\ No newline at end of file
diff --git a/showcase/planetenverteidigungskanonenkommandant/index.html b/showcase/planetenverteidigungskanonenkommandant/index.html
index b23e7bd73f..5e0c7d7d64 100644
--- a/showcase/planetenverteidigungskanonenkommandant/index.html
+++ b/showcase/planetenverteidigungskanonenkommandant/index.html
@@ -5,7 +5,7 @@
-
+
\ No newline at end of file
diff --git a/showcase/precipice/index.html b/showcase/precipice/index.html
index 0faf68f251..af0b0b8196 100644
--- a/showcase/precipice/index.html
+++ b/showcase/precipice/index.html
@@ -11,7 +11,7 @@
all pawns in the dangerous game of nuclear chicken. Manage resources from territories under your control to resolve immediate
crises or win over future allies. Recreate history, or forge your own path. Put a bear on the moon. The
possibilities are endless with simple, intuitive gameplay that is
-simultaneously difficult to master.
+simultaneously difficult to master.
\ No newline at end of file
diff --git a/showcase/primal-light/index.html b/showcase/primal-light/index.html
index 4f997f38a7..e9f0757924 100644
--- a/showcase/primal-light/index.html
+++ b/showcase/primal-light/index.html
@@ -8,7 +8,7 @@
victory, leaving a graveyard of grotesque bosses in your wake.Features Explore a bizarre and evocative world filled with ladders, levers, traps, and monsters, arranged linearly across 10 levels. Face 10 challenging bosses in arcade-style combat reminiscent of the 16-bit era. Master new acrobatic abilities as you progress, allowing you to overcome obstacles and enemies. Dive into challenging side paths to uncover hidden collectibles, unlocking upgrades and passive abilities. Experience jaw-dropping pixel art and a hypnotic soundtrack.
-Why the developer chose Godot Godot has a ton of strengths. A few come to mind. First, Godot uses the pixel as the native unit of measurement, which makes it ideal for 2D games. Second, Godot has a much better implementation of coroutines than other engines (and coroutines are a game developer’s best friend). Third, Godot’s signal system provides an out-of-the-box implementation of the observer pattern that is more intuitive that what you have in other engines (for example, using C# events). Finally, Godot has better animation tools than other engines I have worked with.
— Godot Showcase - Primal Light developer interview
+Why the developer chose Godot Godot has a ton of strengths. A few come to mind. First, Godot uses the pixel as the native unit of measurement, which makes it ideal for 2D games. Second, Godot has a much better implementation of coroutines than other engines (and coroutines are a game developer’s best friend). Third, Godot’s signal system provides an out-of-the-box implementation of the observer pattern that is more intuitive that what you have in other engines (for example, using C# events). Finally, Godot has better animation tools than other engines I have worked with.
— Godot Showcase - Primal Light developer interview
\ No newline at end of file
diff --git a/showcase/resolutiion/index.html b/showcase/resolutiion/index.html
index f18894ae19..563cbdb6fb 100644
--- a/showcase/resolutiion/index.html
+++ b/showcase/resolutiion/index.html
@@ -12,7 +12,7 @@
that doesn’t care if it confuses or kills you — oh hey, a kitty!Features 16 hour playtime Explore a grim cyberpunk world where nothing is as it seems Experience a dark story where you might be the hero - or the villain Unlock new abilities to defeat your enemies Survive in brutal fights and crush gruesome bosses Listen to a badassemotional cyberpunk Soundtrack Here kitty-kitty…
-
+
\ No newline at end of file
diff --git a/showcase/rogue-state-revolution/index.html b/showcase/rogue-state-revolution/index.html
index 90ae036bf0..97e3770cf6 100644
--- a/showcase/rogue-state-revolution/index.html
+++ b/showcase/rogue-state-revolution/index.html
@@ -9,7 +9,7 @@
global pandemic... no two playthroughs will ever be the same, and each run can
unlock new content as you stay in power longer. The coup is coming: can you
keep your wits about you and hold onto the presidency? Steer the country in any manner you choose. Hundreds of events and an insane
-number of policies make every experience unique to the player.
Why the developer chose Godot We love how Godot's scene structure emphasizes getting things done quickly and flexibly. Writing editor plugins and custom nodes is very useful, and if there is ever something that we want to tackle that it's in the main branch, there is nothing stopping us from cracking the thing open and building our own solutions to whatever problems we might encounter.
— Godot Showcase - Little Red Dog Games talk about their experience
+number of policies make every experience unique to the player.
Why the developer chose Godot We love how Godot's scene structure emphasizes getting things done quickly and flexibly. Writing editor plugins and custom nodes is very useful, and if there is ever something that we want to tackle that it's in the main branch, there is nothing stopping us from cracking the thing open and building our own solutions to whatever problems we might encounter.
— Godot Showcase - Little Red Dog Games talk about their experience
\ No newline at end of file
diff --git a/showcase/rpg-in-a-box/index.html b/showcase/rpg-in-a-box/index.html
index 2b3458af38..b5b9d8a4c1 100644
--- a/showcase/rpg-in-a-box/index.html
+++ b/showcase/rpg-in-a-box/index.html
@@ -17,7 +17,7 @@
engine's custom scripting language. Basic dialogue and item systems, multiple camera options, UI customization,
sound effect generator, and much more!
Why the developer chose Godot One of the primary aspects that drew me to try Godot was its built-in UI components, since it would allow me to easily build the various editors and interfaces that I needed while also supporting graphical elements like 3D viewports. The fact that it's open source and supports multiple platforms, as well as how lightweight the engine is, are all attractive aspects that made the choice even more straightforward.
— Godot Showcase - RPG in a Box developer talks about his experience
+View on Humble Store
Why the developer chose Godot One of the primary aspects that drew me to try Godot was its built-in UI components, since it would allow me to easily build the various editors and interfaces that I needed while also supporting graphical elements like 3D viewports. The fact that it's open source and supports multiple platforms, as well as how lightweight the engine is, are all attractive aspects that made the choice even more straightforward.
— Godot Showcase - RPG in a Box developer talks about his experience
\ No newline at end of file
diff --git a/showcase/submissions/index.html b/showcase/submissions/index.html
index 05775135b7..bcac143487 100644
--- a/showcase/submissions/index.html
+++ b/showcase/submissions/index.html
@@ -1,6 +1,6 @@
Showcase Submissions – Godot Engine Godot Showcase Guidelines and Criteria To ensure that our showcase page reflects the best of what the Godot Engine and its community has to offer, we have established the following criteria for featuring games. These guidelines help maintain the quality and relevance of the games presented.
Eligibility Criteria 👾 Completed Games or Demos : Only fully released games or those with a publicly available demo will be considered for the showcase. ⏳ No Pending Long-Term Releases : Games expected to be released more than 12 months from the submission date will not be considered. 4️⃣ Godot 4 Preferred : While we welcome all games made with any version of Godot, those developed using the latest ones will be given preference. ✨ Polished Experience : The game must exhibit a high level of polish, including well-designed gameplay, user interface, and/or visuals. 📈 Reviews : The game must have at least 100 positive reviews on platforms such as Steam, itch.io, or equivalent. If this criterion is not applicable, supplementary material such as videos, articles, a high number of wishlists, or strong media presence is welcome. 🏬 Active Store Page : The game must have an active and live store page, such as on Steam, itch.io, or another major platform. If the game is self-hosted, it should have its own website with detailed media describing the game. 🚫 Content Guidelines : Your game should be ideally intended for all audiences. Avoid breaching our Code of Conduct , referencing real life events and personalities, international politics, NSFW content, or excessive gore. 🤝 Exemptions for Collaborations : Games that may not fully meet the criteria but are part of collaborative efforts with the Godot Foundation (e.g., featured in events, blog posts, or other activities) may be included at our discretion. Submission and Review Process Developers wishing to have their game featured must submit it via this form . Please refrain from reaching out to project members directly. Kindly ensure that all eligibility criteria are met before submission. Submissions will be reviewed on a best-effort basis, and selected games will be added to the showcase as per the eligibility criteria. If a game is not selected, we may provide feedback. However, due to the volume of requests, not all submissions will receive a detailed response. Games that have been pending or have not made significant progress towards release within 12 months may be removed from the showcase. These guidelines are subject to change. We will update this page should there be any revisions to the criteria or process.
Submit your game Latest update: August 2024
+Godot Showcase Guidelines and Criteria To ensure that our showcase page reflects the best of what the Godot Engine and its community has to offer, we have established the following criteria for featuring games. These guidelines help maintain the quality and relevance of the games presented.
Eligibility Criteria 👾 Completed Games or Demos : Only fully released games or those with a publicly available demo will be considered for the showcase. ⏳ No Pending Long-Term Releases : Games expected to be released more than 12 months from the submission date will not be considered. 4️⃣ Godot 4 Preferred : While we welcome all games made with any version of Godot, those developed using the latest ones will be given preference. ✨ Polished Experience : The game must exhibit a high level of polish, including well-designed gameplay, user interface, and/or visuals. 📈 Reviews : The game must have at least 100 positive reviews on platforms such as Steam, itch.io, or equivalent. If this criterion is not applicable, supplementary material such as videos, articles, a high number of wishlists, or strong media presence is welcome. 🏬 Active Store Page : The game must have an active and live store page, such as on Steam, itch.io, or another major platform. If the game is self-hosted, it should have its own website with detailed media describing the game. 🚫 Content Guidelines : Your game should be ideally intended for all audiences. Avoid breaching our Code of Conduct , referencing real life events and personalities, international politics, NSFW content, or excessive gore. 🤝 Exemptions for Collaborations : Games that may not fully meet the criteria but are part of collaborative efforts with the Godot Foundation (e.g., featured in events, blog posts, or other activities) may be included at our discretion. Submission and Review Process Developers wishing to have their game featured must submit it via this form . Please refrain from reaching out to project members directly. Kindly ensure that all eligibility criteria are met before submission. Submissions will be reviewed on a best-effort basis, and selected games will be added to the showcase as per the eligibility criteria. If a game is not selected, we may provide feedback. However, due to the volume of requests, not all submissions will receive a detailed response. Games that have been pending or have not made significant progress towards release within 12 months may be removed from the showcase. These guidelines are subject to change. We will update this page should there be any revisions to the criteria or process.
Submit your game Latest update: August 2024
\ No newline at end of file
diff --git a/showcase/swords-and-sandals-immortals/index.html b/showcase/swords-and-sandals-immortals/index.html
index d840032a0c..1cb4adc8e1 100644
--- a/showcase/swords-and-sandals-immortals/index.html
+++ b/showcase/swords-and-sandals-immortals/index.html
@@ -2,7 +2,7 @@
Swords and Sandals Immortals
Gladiator! Grab your sword, equip your sandals and take on the world in multiplayer Swords and Sandals! Brutal turn-based combat where gladiators can lose limbs, wield guitars and yell so loudly enemy heads will fall off.
Fast, brutal turn based gladiator combat! It’s Swords and Sandals as you’ve never seen it. Brutal turn-based combat where gladiators can lose limbs, wield guitars and yell so loudly their foe’s heads will fall off. This is the most fun you’ll ever have in the arena, and it all starts here.
Epic online battles against real players. COMING SOON - Finally, for the first time in over a decade, multiplayer combat will return to the world of Swords and Sandals. Be matched with and test your skills against real humans as you strive to be the greatest gladiator in the whole world. Rise in the leaderboards and prove once and for all who the best player of all time is.
Sever limbs, wield guitars, the choice is yours. Create a gladiator from one of dozens of races, make them a 7 foot undead giant with a battle axe or a tiny jelly blob with a laser cannon. Your gladiator will be unlike any other, with deep skill trees and hundreds of weapons to craft and equip you will not face the horrors of the arena unprepared!
Continue the story of the Starbound Gladiator. For a decade we wondered what happened to the Starbound Gladiator at the end of Swords and Sandals III … now all answers are revealed as the robotic Automatons return to Brandor with new space-age technology! Embark upon a massive new single player campaign in the form of Swords and Sandals VI, where you shall journey across the vast continent in search of fabled Arena Champions to defeat. Do battle in the scorching heat of the T’Kash desert, in the lonely abyssal caverns of the Forbidden Depths and in the great palaces of Phaetor itself.
Swords and Sandals Immortals Core Gameplay Features COMING SOON - Multiplayer mode! At last, battle player controlled gladiators from all over the world in online turn based combat!Swords and Sandals VI : Continue the story from where S&S III left off as the Automatons return to Brandor with new challenges for our gladiators! A single player adventure across Brandor featuring over 40 all new Arena Champions ( and some returning fan favourites ) Limb severing and decapitations! Sever arms and legs and keep on fighting as your gladiator finds the strength to endure Create a gladiator your way. Customize everything from height and weight to facial features and hometown, the choice is yours. Will you be a powerful undead mandolin-wielding barbarian? A Sagan Blob archmage with the power to regenerate lost limbs? Many new classes to choose, skills and talents to learn. Rain molten death from the skies, play guitar solos that shake the ground! Dungeon Crawl through fast paced 3D mini-dungeons on your journey, fighting powerful Champions for great rewards Defeat your enemy using all new combat skills. Throw your weapons, even throw discarded healing potions. Whatever it takes to win! An all new game engine for the first time in years! New special FX, particles, animations and music, created from the ground up with the Godot Engine. This is indeed the greatest Swords and Sandals adventure ever. Grab your sword, equip your sandals. It’s time to take on the world and become an immortal.
-
+
\ No newline at end of file
diff --git a/showcase/tail-quest/index.html b/showcase/tail-quest/index.html
index b3af04a847..142306a052 100644
--- a/showcase/tail-quest/index.html
+++ b/showcase/tail-quest/index.html
@@ -5,7 +5,7 @@
Stop invaders by placing towers at strategic points around colorful landscapes. Collect hidden treasures, use the environment to your advantage and most importantly, save Nell’s fluffy friends!Best game for couch co-op play! Defeat hundreds of enemies and protect your friends! Game for everyone! Casual, core and hardcore gamers Game without violence Colorful and vivid graphics Tower defense mixed with puzzle platformer game Explore a tiny world full of surprises Solve environmental puzzles Use the lever and watch the entire level change! Use special items such as tomato-mines, the bubble gun, and more to stop evil robots!
-
+
\ No newline at end of file
diff --git a/showcase/the-garden-path/index.html b/showcase/the-garden-path/index.html
index b7fa2340c1..30bba224db 100644
--- a/showcase/the-garden-path/index.html
+++ b/showcase/the-garden-path/index.html
@@ -5,7 +5,7 @@
View on itch.io
-Why the developer chose Godot I've been an advocate for open source software since I can remember, so Godot just seemed like the right fit. It's a good feeling knowing that my work isn't under the thumb of any kind of restrictive licensing.
I also liked the idea of being an early adopter at the time. There was buzz around the engine, but it still needs those flagship titles that people can point to. And that's really very important, because if people are asking 'how was this made' and the answer is something open source, that's a big accomplishment.
Something for me to aspire toward, anyway.
— Godot Showcase - The Garden Path developer talks about his experience
+Why the developer chose Godot I've been an advocate for open source software since I can remember, so Godot just seemed like the right fit. It's a good feeling knowing that my work isn't under the thumb of any kind of restrictive licensing.
I also liked the idea of being an early adopter at the time. There was buzz around the engine, but it still needs those flagship titles that people can point to. And that's really very important, because if people are asking 'how was this made' and the answer is something open source, that's a big accomplishment.
Something for me to aspire toward, anyway.
— Godot Showcase - The Garden Path developer talks about his experience
\ No newline at end of file
diff --git a/showcase/until-then/index.html b/showcase/until-then/index.html
index de6e6e9db0..7b36015fb4 100644
--- a/showcase/until-then/index.html
+++ b/showcase/until-then/index.html
@@ -4,7 +4,7 @@
| June 2024
“The world hasn’t ended yet.”
In a world still recovering from catastrophe, Mark Borja and his friends navigate the joys and woes of another year of high school. Wake up in a typical teenage bedroom, practice piano, race to meet homework deadlines, and build (and burn) relationships, as you reminisce about the daily insecurities of high school life.
That is, until 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.
Play Out Your Own Adventure Meet a diverse and achingly familiar cast of characters to converse with in person, over text, and through email. Get to know them, build relationships, flunk group projects, and watch how their individual personal stories unfold alongside yours.
Investigate the Setting through Everyday Technology Explore the depths of social media where your likes and comments may pose consequences. Scroll through social posts, emails, webpages, and more on your in-game smartphone, where you might discover hints and clues about the people and world around you. Chat with your friends, classmates, and even strangers.
Explore Themes of Love, Loss, and Friendship Tackle philosophical issues as the main character. Make mistakes and difficult choices. Will Mark stand up for his friends and be there when they need him or will he let them down? Can he heal his wounds by letting go of the past? Decide for yourself how Mark grows and strives to do better throughout the story.
Play Addictively Mundane Minigames Insert a flash drive—oh wait, wrong way—nope, it was right the first time. Fight your friend for more fishballs at the food stand outside. Get in the groove to pay for the jeepney. Lose yourself in little games you find yourself playing in everyday life.
Immerse Yourself in a Cinematic Visual Experience Witness an intriguing narrative uniquely presented in eye-catching hand-drawn pixel art and immerse yourself in the warm colors and music of a world trying to move on from tragedy. Characters, landscapes, and props blend in 3D. Shadows, reflections, and lighting set the tone in a lovingly crafted experience.
Experience a World Inspired by Philippine Locations and Culture Traverse Philippine-inspired landscapes in search for the truth. From the heart of the bustling capital to long bus rides past grass fields and coast towns, explore the world of Until Then set in a fictional version of the Philippines. Interior spaces are shaped by the mannerisms of the locals, setting the scene for a recent past.
-
+
\ No newline at end of file
diff --git a/showcase/usagi-shima/index.html b/showcase/usagi-shima/index.html
index 23f4c3b5d2..29f6f68411 100644
--- a/showcase/usagi-shima/index.html
+++ b/showcase/usagi-shima/index.html
@@ -5,7 +5,7 @@
View on Google Play
Learn More
-
+
\ No newline at end of file
diff --git a/showcase/windowkill/index.html b/showcase/windowkill/index.html
index f1d3be3448..f792db1062 100644
--- a/showcase/windowkill/index.html
+++ b/showcase/windowkill/index.html
@@ -7,7 +7,7 @@
-
+
\ No newline at end of file
diff --git a/showcase/wrought-flesh/index.html b/showcase/wrought-flesh/index.html
index b88ec05a1e..74fdf3e198 100644
--- a/showcase/wrought-flesh/index.html
+++ b/showcase/wrought-flesh/index.html
@@ -2,7 +2,7 @@
Rip out enemies organs and equip them in your own body. Fight biopunk monsters and drugged-up space bandits. You are a Gajeshian Cultist: A near-mythological being built from the bodies of long-dead saints. You have arrived on the partially terraformed planet of Chrisembourgh on a temple-ordained mission to find and kill someone. Explore the planet and trace your victims steps to the end.
Features:
organ based stat system literal finger gun 10 unique enemies 8 guns 3 boss fights dozens of quests 3 biomes to explore
+View on itch.io
\ No newline at end of file
diff --git a/teams/index.html b/teams/index.html
index 6bf2d3dd85..f080d9be82 100644
--- a/teams/index.html
+++ b/teams/index.html
@@ -125,7 +125,7 @@
coordination, let us know so we can link it here.
+Rémi Verschelde (@akien-mga )
\ No newline at end of file