diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index 26163e7562..0000000000
--- a/.editorconfig
+++ /dev/null
@@ -1,16 +0,0 @@
-root = true
-
-[*]
-charset = utf-8
-end_of_line = lf
-indent_style = space
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.{htm,css,js,json}]
-charset = utf-8
-end_of_line = lf
-indent_style = space
-indent_size = 2
-insert_final_newline = true
-trim_trailing_whitespace = true
diff --git a/ISSUE_TEMPLATE.md b/.github/ISSUES_TEMPLATE.md
similarity index 100%
rename from ISSUE_TEMPLATE.md
rename to .github/ISSUES_TEMPLATE.md
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index 123014908b..0000000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-version: 2
-updates:
- - package-ecosystem: "github-actions"
- directory: "/"
- schedule:
- interval: "daily"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
deleted file mode 100644
index a73cf19bf1..0000000000
--- a/.github/workflows/ci.yml
+++ /dev/null
@@ -1,70 +0,0 @@
-name: Continuous integration
-on:
- - push
- - pull_request
-
-jobs:
- test:
- name: Validate formatting and setup
- runs-on: ubuntu-20.04
- steps:
- - name: Checkout
- uses: actions/checkout@v3
-
- - name: Lint and format CSS
- run: |
- npm ci
- npm run lint
-
- - name: Install PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: "7.3"
- tools: composer:v2
- extensions: curl, fileinfo, gd, mbstring, openssl, pdo, pdo_mysql, xml, zip
- # Disable Xdebug to improve performance.
- coverage: none
-
- - name: Set up MySQL and install OctoberCMS
- run: |
- sudo systemctl start mysql
- echo -e '[client]\nuser="root"\npassword="root"' > "$HOME/.my.cnf"
-
- mysql -e "CREATE DATABASE IF NOT EXISTS october;"
- # https://stackoverflow.com/questions/52364415/php-with-mysql-8-0-error-the-server-requested-authentication-method-unknown-to
- mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';"
-
- # Explicitly allow all plugins to run scripts during installation.
- composer config -g allow-plugins true
-
- mkdir -p october
- composer create-project october/october ./october "v1.0.474" --no-dev
- pushd october
-
- php artisan key:generate
-
- # Copy project files.
- cp -r ../themes/* themes
- cp -r ../docker/php/config/* config
- # Fix up the config for CI.
- sed -i "s/'host' => 'mariadb'/'host' => 'localhost'/g" config/database.php
- sed -i "s/'username' => 'godot'/'username' => 'root'/g" config/database.php
- sed -i "s/'password' => 'godot'/'password' => 'root'/g" config/database.php
-
- php artisan october:up
- php artisan october:fresh
-
- php artisan plugin:install paulvonzimmerman.patreon
- php artisan plugin:install pikanji.agent
- php artisan plugin:install rainlab.blog
- php artisan plugin:install rainlab.translate
- php artisan plugin:install sobored.rss
-
- cp -r ../plugins/* plugins
- composer update -d ./plugins/godotengine/i18n
- php artisan october:up
-
- - name: Run Lighthouse CI
- run: |
- npm install @lhci/cli@0.6.x
- npx lhci autorun
diff --git a/.github/workflows/reminder.yml b/.github/workflows/reminder.yml
deleted file mode 100644
index a788a9e7cb..0000000000
--- a/.github/workflows/reminder.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-name: Yearly update security.txt
-
-on:
- workflow_dispatch:
- schedule:
- - cron: "0 0 1 11 *"
-
-env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
-jobs:
- create-issue:
- name: Create issue
- runs-on: ubuntu-latest
- permissions: write-all
- steps:
- - name: Create issue
- run: |
- gh issue create --repo '${{ github.repository }}' --title 'Update `security.txt` expiration date' --body 'This is the yearly reminder to update `.well-known/security.txt`'
diff --git a/.gitignore b/.gitignore
index 77375c7bb8..6d280a7269 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,47 +1,6 @@
-# Exclude everything by default (this is a CMS!), and whitelist the safe stuff
-/*
-!/README.md
-!/DEVELOPMENT_SETUP.md
-!/ISSUE_TEMPLATE.md
-!/LICENSE.txt
-!.well-known/
+# Build artifacts and cache
+.jekyll-cache
+_site
-# Vim
-*.swp
-*.swo
-
-# Git stuff
-!.gitattributes
-!.gitmodules
-!.gitignore
-
-# Local development tools
-node_modules
-
-# Winter CMS files
-# Themes
-!/themes
-# Custom plugins
-!/plugins
-
-# Docker
-/docker/mariadb/init/*.sql
-/docker/mariadb/storage
-!/docker
-!/docker/mariadb/init/000-setup.sql
-
-# Continuous integration
-!.github/
-!lighthouserc.js
-
-# Editor config
-!.editorconfig
-
-# Linting/formatting setup
-!.prettierignore
-!package-lock.json
-!package.json
-
-# OS specific
-.DS_Store
-docker/.DS_Store
+# Code editors
+.vscode/
diff --git a/.prettierignore b/.prettierignore
deleted file mode 100644
index 6d12d200d1..0000000000
--- a/.prettierignore
+++ /dev/null
@@ -1,22 +0,0 @@
-# Ignore everything by default.
-/*
-
-# Ignore October templates which Prettier can't format.
-*.htm
-
-# Only format the files specified below.
-!/.github/
-!/docker/
-!/themes/
-!/plugins/
-!/ISSUE_TEMPLATE.md
-!/README.md
-!/lighthouserc.js
-!/package.json
-
-# Ignore third-party CSS and JavaScript.
-/themes/godotengine/assets/css/highlight.obsidian.min.css
-/themes/godotengine/assets/css/normalize.min.css
-/themes/godotengine/assets/css/tobii.min.css
-/themes/godotengine/assets/leaflet/
-/themes/godotengine/assets/js/
diff --git a/DEVELOPMENT_SETUP.md b/DEVELOPMENT_SETUP.md
deleted file mode 100644
index 233b4a01c3..0000000000
--- a/DEVELOPMENT_SETUP.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# Local development setup
-
-The provided Docker setup takes care of installing all the necessary
-dependencies so you don't have to.
-
-## Automatic Docker setup
-
-Clone this repository, and then follow the steps described below:
-
-### 0. Prepare the database dump.
-
-**You don't need a database dump to contribute, just skip to step 1.**
-
-If you have a database dump, put it into the `./docker/mariadb/init` folder.
-
-- Make sure that your script starts with the line `USE october;` and that the
- file extension is `.sql`.
-- Every `.sql` and `.sh` file from the `./docker/mariadb/init` folder will be
- automatically executed when building the container.
-
-### 1. Open the `./docker` folder.
-
-Using a terminal, or another command-line environment, navigate to the `./docker`
-folder.
-
-```sh
-# Assuming you're in the project root.
-cd ./docker
-```
-
-### 2. Run the Docker compose command.
-
-Execute the following command:
-
-```sh
-docker-compose -p "godot-website" up --build -d --force-recreate
-```
-
-- You can replace `"godot-website"` with anything else to help you identify this
- project in your Docker manager.
-- In the future, you can use the `./docker/restart.sh` script to rebuild containers
- (Linux and macOS only).
-
-The script will take **a couple of minutes** to run the first time. After the
-build is done, the containers will automatically start and perform their first
-time setup. Check the logs of the `godotengine-org--php` container, as it takes
-more time to finish. You will see the following line in the logs when it's done:
-
-> Godot Website is READY to use!
-
-### 3. Open the website in a browser!
-
-You can see the website at [http://localhost:8080](http://localhost:8080).
-
-- The control panel is located at [http://localhost:8080/backend](http://localhost:8080/backend).
-- The default admin account is `admin/admin`.
-
-You can now start contributing and changing files in `./themes/godotengine`.
-Changes should be visible in real time, without a need to restart the web server.
-
-## Interfacing with Docker containers
-
-You can use the standard syntax to either execute a shell command or connect
-to the running container:
-
-```sh
-# Execute shell command.
-docker exec -it godotengine-org--[php|mariadb] [command]
-# Connect to a remote shell.
-docker exec -it godotengine-org--[php|mariadb] /bin/bash
-```
-
-There are several shell scripts that come with the project, that may be useful
-when developing (assuming you're running Linux or macOS).
-
-- For the web server:
- - `./docker/php/bash.sh` starts a bash session with the PHP container.
- - `./docker/php/install-plugin.sh` is used to install additional CMS plugins with `artisan`.
- - `./docker/php/log.sh` is used to access logs of the PHP container.
-- For the database server:
- - `./docker/mariadb/bash.sh` starts a bash session with the MariaDB container.
- - `./docker/mariadb/log.sh` is used to access logs of the MariaDB container.
- - `./docker/mariadb/mysql.sh` starts a MySQL shell session in the MariaDB container.
-
-## Manual setup
-
-If you would rather configure your own development environment, you
-can investigate the follow files to replicate the required steps:
-
-- `./docker/docker-compose.yml`
-- `./docker/mariadb/init/000-setup.sql`
-- `./docker/php/Dockerfile`
-- `./docker/php/init/init.sh`
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000000..0e0cd86dc4
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,6 @@
+source 'https://rubygems.org'
+
+gem 'jekyll', '4.2.2'
+gem 'jekyll-paginate-v2'
+gem 'jekyll-multiple-languages-plugin'
+gem 'jekyll-redirect-from'
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000000..67a4be316f
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,80 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ addressable (2.8.1)
+ public_suffix (>= 2.0.2, < 6.0)
+ colorator (1.1.0)
+ concurrent-ruby (1.1.10)
+ em-websocket (0.5.3)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0)
+ eventmachine (1.2.7)
+ ffi (1.15.5)
+ ffi (1.15.5-x64-mingw-ucrt)
+ forwardable-extended (2.6.0)
+ http_parser.rb (0.8.0)
+ i18n (1.12.0)
+ concurrent-ruby (~> 1.0)
+ jekyll (4.2.2)
+ addressable (~> 2.4)
+ colorator (~> 1.0)
+ em-websocket (~> 0.5)
+ i18n (~> 1.0)
+ jekyll-sass-converter (~> 2.0)
+ jekyll-watch (~> 2.0)
+ kramdown (~> 2.3)
+ kramdown-parser-gfm (~> 1.0)
+ liquid (~> 4.0)
+ mercenary (~> 0.4.0)
+ pathutil (~> 0.9)
+ rouge (~> 3.0)
+ safe_yaml (~> 1.0)
+ terminal-table (~> 2.0)
+ jekyll-multiple-languages-plugin (1.8.0)
+ jekyll (>= 2.0, < 5.0)
+ jekyll-paginate-v2 (3.0.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-redirect-from (0.16.0)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-sass-converter (2.2.0)
+ sassc (> 2.0.1, < 3.0)
+ jekyll-watch (2.2.1)
+ listen (~> 3.0)
+ kramdown (2.4.0)
+ rexml
+ kramdown-parser-gfm (1.1.0)
+ kramdown (~> 2.0)
+ liquid (4.0.3)
+ listen (3.7.1)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ mercenary (0.4.0)
+ pathutil (0.16.2)
+ forwardable-extended (~> 2.6)
+ public_suffix (5.0.1)
+ rb-fsevent (0.11.2)
+ rb-inotify (0.10.1)
+ ffi (~> 1.0)
+ rexml (3.2.5)
+ rouge (3.30.0)
+ safe_yaml (1.0.5)
+ sassc (2.4.0)
+ ffi (~> 1.9)
+ terminal-table (2.0.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ unicode-display_width (1.8.0)
+
+PLATFORMS
+ arm64-darwin-22
+ x64-mingw-ucrt
+ x64-unknown
+ x86_64-linux-musl
+
+DEPENDENCIES
+ jekyll (= 4.2.2)
+ jekyll-multiple-languages-plugin
+ jekyll-paginate-v2
+ jekyll-redirect-from
+
+BUNDLED WITH
+ 2.4.2
diff --git a/LICENSE.txt b/LICENSE.txt
index e5963ffd73..f5d81fa9e3 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,5 +1,5 @@
-Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
-Copyright (c) 2014-2022 Godot Engine contributors (cf. https://github.com/godotengine/godot/blob/master/AUTHORS.md).
+Copyright (c) 2014 - present Godot Engine contributors (cf. https://github.com/godotengine/godot/blob/master/AUTHORS.md).
+Copyright (c) 2007 Juan Linietsky, Ariel Manzur.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 35d3dd3a95..1188ae29f7 100644
--- a/README.md
+++ b/README.md
@@ -1,35 +1,21 @@
-# Godot Website
+# Godot Engine Website
-This repository contains the theme used by the Godot Engine's OctoberCMS/WinterCMS
-instance. The theme describes both the styling of the website and the components
-of its layouts, as well as some of its content.
-
-- [OctoberCMS](https://github.com/octobercms/october) is the original CMS platform
- of choice.
-- [WinterCMS](https://github.com/wintercms/winter) is the current CMS platform, a fork
- of October with more active development.
-
-_WinterCMS_ is compatible with _OctoberCMS_, and uses the same plugin system. This is
-at least true for the version of the project that we use.
-
-This repository also contains a Docker setup to be used by contributors. It
-is not used for production.
+Welcome to the source code for the Godot Engine website. This is a static website, generated offline using
+[Jekyll](https://jekyllrb.com/).
## Contributing
Contributions are always welcome! Godot website, just like Godot engine, is open source.
-However, when contributing to the website, it is important to keep in mind that it
-acts as a public face of Godot organization and community. Thus, substantial
-changes must be discussed ahead of time. You don't necessarily need to open a formal
-Godot improvement proposal like you do with engine features, but starting an issue
-on this repository or joining the discussion on the
-[Godot Contributors Chat](https://chat.godotengine.org/channel/website) is a good idea.
+However, when contributing to the website, it is important to keep in mind that it acts as a public face of Godot
+organization and community. Thus, substantial changes must be discussed ahead of time. You don't necessarily need to
+open a formal Godot improvement proposal like you do with engine features, but starting an issue on this repository
+or joining the discussion on the [Godot Contributors Chat](https://chat.godotengine.org/channel/website) is a good
+idea.
-### Browser support
+## Browser support
-When working on new features, keep in mind this website only supports
-_evergreen browsers_:
+When working on new features, keep in mind this website only supports _evergreen browsers_:
- Chrome (latest version and N-1 version)
- Edge (latest version and N-1 version)
@@ -39,37 +25,131 @@ _evergreen browsers_:
**Internet Explorer isn't supported.**
-### Dependencies
+## Development
-This project requires the following stack:
+### Building
-- PHP 7.2+ & Composer 2
-- MySQL/MariaDB
-- OctoberCMS/WinterCMS v1.0.xxx
+To build the website locally, follow these steps:
-There are also some linting tools that can be run locally that require Node.js.
+1. Install [Jekyll](https://jekyllrb.com/docs/installation/); make sure `bundle` is available from the command line.
+2. Clone this repository.
+3. Install the necessary dependencies: `bundle install`.
+4. Build the site: `bundle exec jekyll build`.
-### Local development setup
+For simplicity, these two commands are also available as a `build.sh` script in this repository.
-This project comes with a [Docker](https://docker.com) setup that can be used to quickly
-create a network of compatible ready-to-use containers.
+Alternatively, you can also use the official Docker container for Jekyll. This container is designed to be run once
+to perform the build, so you don't need to compose and permanently store it in your Docker setup. If you're on Linux,
+execute the following command:
-Using this setup, you can have a local copy of the project, without the production database.
-For development purposes, you don't need that database, as the only thing that is specific
-to production is blog posts, which can be easily recreated if required. Everything else
-is located in the `./themes/godotengine` folder, including all static pages and their content.
+```shell
+docker run --rm --volume="$PWD:/srv/jekyll" -it jekyll/jekyll:stable ./build.sh
+```
-To start contributing, please follow this [Local development setup](DEVELOPMENT_SETUP.md) guide.
+On Windows (from `CMD.exe`):
-### Syntax highlighting
+```shell
+docker run --rm --volume="%CD%:/srv/jekyll" -it jekyll/jekyll:stable ./build.sh
+```
-If you use Visual Studio Code, you can install the
-[OctoberCMS Template Language](https://marketplace.visualstudio.com/items?itemName=dqsully.octobercms-template-language)
-extension to benefit from syntax highlighting in `.htm` templates.
+Building may take several minutes to finish.
+
+### Local server
+
+As this is a static website, it can be served locally using any server stack you want.
+
+- It is possible to use Jekyll and `bundle` to immediately serve the pages upon building it. To do this, replace the final build
+step with `bundle exec jekyll serve`. With Docker you can use `build-and-serve.sh`.
+- You can also use Python, which is likely pre-installed on your system. To serve the pages with its local server, run
+`python -m http.server 4000 -d ./_site`.
+
+After following either one of these steps the site will be available at `http://localhost:4000`.
+
+## Project structure
+
+### Content data and metadata
+
+The following folders contain data files, used for generating more dynamic parts of the website, such as the blog,
+the showcase, the downloads page. These pages are written in Markdown and contain a metadata header used by the
+generator. Markdown files form Jekyll collections with the same name as their containing folder. To create a new
+Markdown document, you can start by copying an existing one and then change its content.
+
+- `collections/_article` contains articles for the blog. Each article is written in Markdown with a metadata header located at
+the top of the file. The following metadata fields are required for the article to be correctly displayed throughout
+the website: `title`, `excerpt`, `categories`, `author`, `image`, and `date`. The name of the file acts as a slug in
+the generated URL.
+
+- `collections/_download` contains the download instructions for Godot builds per platform. Each document is written in Markdown
+with a metadata header located at the top of the file. Download links are generated from the `downloads` field in the
+metadata. When adding a new platform, make sure to create a new tab for it in the `/_layouts/download.html` template.
+
+- `collections/_showcase` contains entries for the showcase. Each article is written in Markdown with a metadata header located at
+the top of the file. Showcase entries can be featured on the home page by setting the `featured_in_home` field to
+`true`. The image used is the one from the `image` field.
+
+Some information is also stored in YAML files, acting as a file-based database for several meta properties.
+
+- `_data` contains various metadata files for the website:
+ - `authors.yml` contains a list of authors used for the blog articles;
+ - `categories.yml` contains a list of categories for the blog articles;
+ - `communities.yml` contains a list of user communities for the `/community/user-groups` page.
+
+### Content pages and templates
+
+The following folders contain entry points for almost every website page, as well as shared templates and assets. The
+templating language used in Jekyll is [liquid](https://jekyllrb.com/docs/liquid/).
+
+- `_i18n` contains translations for the website. The default language is English. Only static information is
+translated, with the blog and the showcase being displayed in English. **Currently disabled and a work in progress.**
+
+- `_includes` contains navigation and footer elements used by most pages. If you want to create an element to reuse
+in multiple pages, you can create a new include file here.
+
+- `_layouts` contains the wrapping content for the pages. Each layout inherits from `_layouts/default.html` which
+contains the main structure of the page, including the head and meta tags. Other layouts are used for specific pages,
+like the blog, download, and showcase pages.
+
+- `assets` contains static assets for the website. This includes the CSS, JS, and images used in the theme and layout.
+For media content used in articles and other pages check the `storage` folder. **Some files may be obsolete and
+unused.**
+
+- `pages` contains most of the pages for the website. The final URL for each page is specified in the metadata header
+using the `permalink` field. Generally, it should map to the file's path inside `pages`. Dynamic content pages are
+generated using Markdown collections and layouts.
+
+### File storage
+
+- `storage` contains media and other files uploaded for use in dynamic content pages, such as the blog, the showcase,
+the events. **Some files may be obsolete and unused.**
+
+### Buildsystem and service files
+
+This project is build with Jekyll, with most of the build instructions located in `Gemfile` and `_config.yml`.
+The following folders contain extra files and scripts on top of that.
+
+- `_migration` contains files used when migrating from the previous version of the website. Namely, there is a
+database of posts extracted from the old website. It was used to generate the new Markdown articles. We are keeping
+it for now in case there are some issues with the migration.
+
+## Content update guidelines
+
+### Updating Godot download version
+
+When a new stable build of the engine is released, you need to update the number and date in the `/_config.yml` file.
+This looks like this:
+
+```
+# Godot download version
+stable_version: "3.5.1"
+stable_version_date: "28 September 2022"
+```
+
+After this change is merged and the website is built, everything referencing the engine version should be updated
+automatically, including download links for every platform.
## Resources
-- Join the discussion on Godot Contributors Chat in the
- [#website](https://chat.godotengine.org/channel/website) channel.
-- When working on the theme, please take note of the
- [website stats](https://stats.tuxfamily.org/godotengine.org).
+- Join the discussion on Godot Contributors Chat in the [#website](https://chat.godotengine.org/channel/website)
+ channel.
+- Please, consider the [website usage stats](https://stats.tuxfamily.org/godotengine.org) when relying on modern
+ web technologies (web standards support, file type support, etc).
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000000..f1a74b28d9
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1,96 @@
+# Settings
+exclude: [".github", "Gemfile", "Gemfile.lock", "build.sh", "build-and-serve.sh", "README.md"]
+permalink: pretty
+
+collections_dir: collections
+collections:
+ article:
+ output: true
+ showcase:
+ output: true
+ download:
+ output: true
+
+defaults:
+ - scope:
+ path: ""
+ type: "article"
+ values:
+ layout: "article"
+ og_type: "article"
+ - scope:
+ path: ""
+ type: "download"
+ values:
+ layout: "download"
+
+# Plugins
+plugins:
+ - jekyll-paginate-v2
+ - jekyll-redirect-from
+ # - jekyll-multiple-languages-plugin
+
+# Internationalization
+languages: ["en", "es"]
+exclude_from_localizations: ["assets", "storage"]
+default_lang: "en"
+
+# Godot download version
+stable_version: "3.5.1"
+stable_version_date: "28 September 2022"
+
+# Pagination (used by the blog)
+pagination:
+ # Site-wide kill switch, disabled here it doesn't run at all
+ enabled: true
+
+ # Set to 'true' to enable pagination debugging. This can be enabled in the site config or only for individual pagination pages
+ debug: false
+
+ # The default document collection to paginate if nothing is specified ('posts' is default)
+ collection: "article"
+
+ # How many objects per paginated page, used to be `paginate` (default: 0, means all)
+ per_page: 24
+
+ # The permalink structure for the paginated pages (this can be any level deep)
+ permalink: "/:num/" # Pages are index.html inside this folder (default)
+ #permalink: '/page/:num.html' # Pages are simple html files
+ #permalink: '/page/:num' # Pages are html files, linked jekyll extensionless permalink style.
+
+ # Optional the title format for the paginated pages (supports :title for original page title, :num for pagination page number, :max for total number of pages)
+ title: ":title - Page :num"
+
+ # Limit how many pagenated pages to create (default: 0, means all)
+ limit: 0
+
+ # Optional, defines the field that the posts should be sorted on (omit to default to 'date')
+ sort_field: "date"
+
+ # Optional, sorts the posts in reverse order (omit to default decending or sort_reverse: true)
+ sort_reverse: true
+
+ # Optional, the default category to use, omit or just leave this as 'posts' to get a backwards-compatible behavior (all posts)
+ category: "posts"
+
+ # Optional, the default tag to use, omit to disable
+ tag: ""
+
+ # Optional, the default locale to use, omit to disable (depends on a field 'locale' to be specified in the posts,
+ # in reality this can be any value, suggested are the Microsoft locale-codes (e.g. en_US, en_GB) or simply the ISO-639 language code )
+ locale: ""
+
+ # Optional,omit or set both before and after to zero to disable.
+ # Controls how the pagination trail for the paginated pages look like.
+ trail:
+ before: 2
+ after: 2
+
+ # Optional, the default file extension for generated pages (e.g html, json, xml).
+ # Internally this is set to html by default
+ extension: html
+
+ # Optional, the default name of the index file for generated pages (e.g. 'index.html')
+ # Without file extension
+ indexpage: "index"
+############################################################
diff --git a/_data/authors.yml b/_data/authors.yml
new file mode 100644
index 0000000000..78f60250e8
--- /dev/null
+++ b/_data/authors.yml
@@ -0,0 +1,62 @@
+- name: Andrea Catania
+ image: /assets/images/authors/default_avatar.svg
+- name: Ariel Manzur
+ image: /assets/images/authors/punto.png
+- name: Bartleby Lawnjelly
+ image: /assets/images/authors/default_avatar.svg
+- name: Bastiaan Olij
+ image: /assets/images/authors/bastiaan.jpg
+- name: Camille Mohr-Daurat
+ image: /assets/images/authors/default_avatar.svg
+- name: Clay John
+ image: /assets/images/authors/clayjohn.jpg
+- name: Emi
+ image: /assets/images/authors/emi.png
+- name: Ernest Lee
+ image: /assets/images/authors/default_avatar.svg
+- name: Fabio Alessandrelli
+ image: /assets/images/authors/default_avatar.svg
+- name: Fredia Huya-Kouadio
+ image: /assets/images/authors/default_avatar.svg
+- name: George Marques
+ image: /assets/images/authors/default_avatar.svg
+- name: Gilles Roudiere
+ image: /assets/images/authors/groud.png
+- name: Gordon MacPherson
+ image: /assets/images/authors/default_avatar.svg
+- name: Hein-Pieter van Braam
+ image: /assets/images/authors/default_avatar.svg
+- name: Hugo Locurcio
+ image: /assets/images/authors/calinou.png
+- name: Ignacio Roldán Etcheverry
+ image: /assets/images/authors/ignacio.png
+- name: Ilaria Cislaghi
+ image: /assets/images/authors/ilaria.jpg
+- name: Joan Fons
+ image: /assets/images/authors/joan.png
+- name: Juan Linietsky
+ image: /assets/images/authors/reduzio.jpg
+- name: Julian Murgia
+ image: /assets/images/authors/default_avatar.svg
+- name: karroffel
+ image: /assets/images/authors/default_avatar.svg
+- name: Nathan GDQuest
+ image: /assets/images/authors/nathan.png
+- name: Matias Goldberg
+ image: /assets/images/authors/default_avatar.svg
+- name: Max Hilbrunner
+ image: /assets/images/authors/default_avatar.svg
+- name: Pāvels Nadtočajevs
+ image: /assets/images/authors/default_avatar.svg
+- name: Pedro J. Estébanez
+ image: /assets/images/authors/pedro.png
+- name: Rémi Verschelde
+ image: /assets/images/authors/akien.jpg
+- name: Silc Renew
+ image: /assets/images/authors/tokage.png
+- name: Yuri Roubinsky
+ image: /assets/images/authors/default_avatar.svg
+- name: Yuri Sizov
+ image: /assets/images/authors/yuri.jpeg
+- name: default
+ image: /assets/images/authors/default_avatar.svg
diff --git a/_data/categories.yml b/_data/categories.yml
new file mode 100644
index 0000000000..47e7a01c79
--- /dev/null
+++ b/_data/categories.yml
@@ -0,0 +1,24 @@
+news:
+ - name: News
+ slug: news
+ description: General news that don't fit in other categories.
+progress-report:
+ - name: Progress Report
+ slug: progress-report
+ description: Progress report about a specific engine subsystem in Godot.
+events:
+ - name: Events
+ slug: events
+ description: Physical and online Godot-related event announcements.
+release:
+ - name: Release
+ slug: release
+ description: Godot stable release announcements. See Pre-release category for alphas, betas and release candidates.
+pre-release:
+ - name: Pre-release
+ slug: pre-release
+ description: Godot pre-release announcement (alpha, beta or release candidate).
+showcase:
+ - name: Showcase
+ slug: showcase
+ description: Showreel video postings and showcase interviews. Showreel-related announcements are in the News category.
diff --git a/_data/communities.yml b/_data/communities.yml
new file mode 100644
index 0000000000..580ee829f9
--- /dev/null
+++ b/_data/communities.yml
@@ -0,0 +1,325 @@
+Algeria:
+ - name: Arab Gamedev
+ links:
+ - title: Facebook
+ url: https://facebook.com/groups/arabgamedev
+Argentina:
+ - name: Godot en Español
+ links:
+ - title: Discord
+ url: https://discord.gg/2BtycSPdkk
+Brazil:
+ - name: Godot Brazil
+ links:
+ - title: Discord
+ url: https://discord.gg/gWmQKBv
+ - name: Godot Brasil
+ links:
+ - title: Facebook
+ url: https://www.facebook.com/groups/godotBrasil
+ - name: São Paulo
+ coordinates:
+ - -23.5505
+ - -46.6333
+ links:
+ - title: MeetUp
+ url: https://www.meetup.com/GodotSP/
+ - name: Campinas
+ coordinates:
+ - -22.8136
+ - -47.0641
+ links:
+ - title: Gamux
+ url: https://gamuxunicamp.github.io/website/
+Belgium:
+ - name: Godot Club
+ coordinates:
+ - 50.848916943044415
+ - 4.349575282209013
+ links:
+ - title: Website
+ url: https://polymorph.cool/godot-club/
+Bulgaria:
+ - name: BGodot
+ links:
+ - title: Discord
+ url: https://discord.gg/j3KRdV3b4P
+Canada:
+ - name: Godot Toronto
+ links:
+ - title: MeetUp
+ url: https://www.meetup.com/Godot-Toronto/
+China:
+ - name: Godot China
+ links:
+ - title: Discord
+ url: https://discord.gg/R23VUTXwvz
+ - title: QQ Group
+ url: https://qm.qq.com/cgi-bin/qm/qr?k=EneMKrKt96ttI4ZFmQ8omTtpF0Sd0iL_&jump_from=webapi
+ - name: GodoterCN
+ links:
+ - title: Website
+ url: https://godoter.cn
+ - name: Godoter Planet (Godoter 星球)
+ links:
+ - title: QQ Group
+ url: https://qm.qq.com/cgi-bin/qm/qr?k=jKCCDvS6uTXHLrVBRuGk67iCvA5bshPY&jump_from=webapi
+ - name: Godot Tieba
+ links:
+ - title: Forum
+ url: https://tieba.baidu.com/f?kw=godot
+ - name: GodotCN (Godot中文社区)
+ links:
+ - title: Website
+ url: http://godott.com
+ - title: QQ Group
+ url: https://qm.qq.com/cgi-bin/qm/qr?k=hEscGFbQTiOX0bhsTT2myxM3PifsAmIp&jump_from=webapi
+Croatia:
+ - name: Croatia
+ links:
+ - title: Discord
+ url: https://discord.gg/6gjwfSG
+ - title: Facebook
+ url: https://web.facebook.com/groups/godotenginecroatia/
+Czech Republic and Slovakia:
+ - name: Godot CZ/SK
+ links:
+ - title: Discord
+ url: https://discord.com/invite/g4XVFjXwfu
+ - title: Facebook
+ url: https://www.facebook.com/groups/godotczsk
+Ecuador:
+ - name: Godot Ecuador
+ coordinates:
+ - -1.8312
+ - -78.1834
+ links:
+ - title: Reddit
+ url: https://www.reddit.com/r/GodotEcuador/
+ - title: Discord
+ url: https://discord.gg/nZecyhN
+ - title: Facebook
+ url: https://www.facebook.com/groups/godotengineecuador/
+Egypt:
+ - name: Godot Egypt (Ain Shams University)
+ coordinates:
+ - 30.077605
+ - 31.2858
+ links:
+ - title: Discord
+ url: https://discord.gg/QCxAgAAtYg
+Finland:
+ - name: Godot Suomi
+ coordinates:
+ - 60.16952
+ - 24.93545
+ links:
+ - title: Discord
+ url: https://discord.gg/5QF5du3
+France or French-speaking:
+ - name: Godot Francophone
+ links:
+ - title: Website
+ url: https://www.godot-francophone.org/
+ - title: Discord
+ url: https://discordapp.com/invite/NQVd34V
+ - title: GitHub
+ url: https://github.com/Godot-Engine-Francophone
+ - name: Godot est arrivé!
+ links:
+ - title: Discord
+ url: https://discord.gg/9FJAZaC
+ - name: SoloCode France
+ links:
+ - title: Discord
+ url: https://discord.gg/gZ3QJ5T
+Germany:
+ - name: Godot Germany
+ links:
+ - title: Website
+ url: https://godot-community.de/
+ - title: Discord
+ url: https://discord.gg/Tr7Ma6E
+ - title: Reddit
+ url: https://www.reddit.com/r/GodotCommunityDE/
+ - name: Godot Engine German Developers
+ links:
+ - title: Facebook
+ url: https://www.facebook.com/groups/359812631518879
+India:
+ - name: Godot India
+ links:
+ - title: Discord
+ url: https://discord.gg/cRvFbRg
+ - title: Telegram
+ url: https://t.me/godotindia
+Indonesia:
+ - name: Godot Indonesia
+ links:
+ - title: Website
+ url: https://godot.id
+ - title: Telegram
+ url: https://t.me/godot_indonesia
+Italy:
+ - name: Godot Engine Italia
+ links:
+ - title: Website
+ url: https://godotengineitalia.com/
+ - title: Telegram
+ url: https://t.me/joinchat/Ga4KigwWn53t2RRfoaPSKg
+ - title: Discord
+ url: https://discord.gg/7YuUqJB
+ - title: Facebook
+ url: https://www.facebook.com/groups/1926189904375792/
+Iran:
+ - name: Godot Iran (گودو ایران)
+ links:
+ - title: Website
+ url: https://TahsinRafiey.org/godot-iran
+ - title: Telegram
+ url: https://t.me/GodotIran
+ - title: Matrix
+ url: https://matrix.to/#/#godotiran:matrix.org
+ - name: GDworld
+ links:
+ - title: Discord
+ url: https://discord.gg/n3BX6ujU5f
+ - title: Telegram
+ url: https://t.me/world_of_godot
+Israel:
+ - name: Godot Israel
+ links:
+ - title: Discord
+ url: https://discord.gg/k5HN6SQqnv
+Japan:
+ - name: Godot Japan
+ links:
+ - title: Discord
+ url: https://discord.gg/DyFvSJZ
+Latvia:
+ - name: Godot Engine Latvia
+ coordinates:
+ - 56.9496
+ - 24.1052
+ links:
+ - title: Facebook
+ url: https://www.facebook.com/groups/844651272628474/
+ - title: Discord
+ url: https://discord.gg/r6ewZGv
+ - title: Twitter
+ url: https://twitter.com/GodotLatvia
+Pakistan:
+ - name: Godot Engine Pakistan
+ links:
+ - title: Discord
+ url: https://discord.gg/YYjxgdn47P
+Philippines:
+ - name: Godot Engine Philippines
+ links:
+ - title: Facebook
+ url: https://www.facebook.com/groups/godotph
+Poland:
+ - name: Godocik
+ links:
+ - title: Discord
+ url: https://discord.gg/HBuuuPa
+ - title: YouTube
+ url: https://www.youtube.com/channel/UCLYdPKE5eviBMZV5WLG43rA
+Portugal:
+ - name: Godot Portugal
+ links:
+ - title: Discord
+ url: https://discord.gg/nWMbpsFf
+ - title: Twitter
+ url: https://twitter.com/godot_pt
+Russia:
+ - name: Godot Engine Russia
+ links:
+ - title: Discord
+ url: https://discord.gg/MK9aWFX
+ - name: Godot Russia
+ links:
+ - title: VKontakte
+ url: https://vk.com/godot_engine
+ - title: Telegram
+ url: https://t.me/godot_engine
+ - name: Game Constructors
+ links:
+ - title: VKontakte
+ url: https://vk.com/game_constructors
+ - title: Discord
+ url: https://discord.gg/VjZ2ZZH93c
+ - title: ZEN
+ url: https://zen.me/1WHp7X
+Saudi Arabia:
+ - name: Godot Engine Arabic
+ links:
+ - title: Discord
+ url: https://discord.gg/sGukE2UDJ6
+ - name: Godot Engine Arabic 2
+ links:
+ - title: Discord
+ url: https://discord.gg/fvNyxDQAJy
+South Korea:
+ - name: Godot Engine Korea
+ links:
+ - title: Discord
+ url: https://discord.gg/XK8Emsf
+Spain:
+ - name: Godot Engine in Spanish
+ links:
+ - title: Website
+ url: http://godotengineenespanol.surge.sh
+ - title: Discord
+ url: https://discord.com/invite/fp4Z7QmZGu
+ - title: Facebook
+ url: https://www.facebook.com/GodotEngineEnEspanol
+ - name: Zenvoid (Medialab Prado)
+ coordinates:
+ - 40.4105013
+ - -3.6958529
+ links:
+ - title: Website
+ url: https://www.medialab-prado.es/actividades/zenvoid-studio-desarrollo-de-videojuegos
+Sweden:
+ - name: Godot Sweden
+ links:
+ - title: Discord
+ url: https://discord.gg/6ZsgWmH
+Taiwan:
+ - name: Godot Engine Taiwan
+ links:
+ - title: Discord
+ url: https://discord.gg/fuTtQMaxZ2
+ - name: Godot Taiwan (Godot 台灣使用者小聚)
+ links:
+ - title: Facebook
+ url: https://www.facebook.com/groups/godot.taiwan
+Turkey:
+ - name: Godot Engine Türkiye
+ links:
+ - title: Discord
+ url: https://discord.gg/3zuaj9EsYv
+ - title: Telegram
+ url: https://t.me/joinchat/GsAFJn7i-1fk0YUW
+ - name: Godot in Turkey
+ links:
+ - title: Discord
+ url: https://discord.gg/AtHr842H7b
+ - name: Godot Türk Topluluğu
+ links:
+ - title: Discord
+ url: https://discord.gg/B48HBJM
+United States:
+ - name: Godot Southwest US
+ links:
+ - title: Discord
+ url: https://discord.gg/qx7Ec49yDg
+ - name: Godot Wisconsin
+ links:
+ - title: Meetup
+ url: https://www.meetup.com/wi-godot-game-app-developer-meetup/
+ - name: Chickensoft
+ links:
+ - title: Discord
+ url: https://discord.gg/MjA6HUzzAE
diff --git a/_i18n/en.yml b/_i18n/en.yml
new file mode 100644
index 0000000000..0c871733ae
--- /dev/null
+++ b/_i18n/en.yml
@@ -0,0 +1,3 @@
+home:
+ h1: "The game engine you've been waiting for."
+ subtitle: "A simple, responsive Jekyll theme for your blog or site."
diff --git a/_i18n/es.yml b/_i18n/es.yml
new file mode 100644
index 0000000000..d93bcc7b0e
--- /dev/null
+++ b/_i18n/es.yml
@@ -0,0 +1,3 @@
+home:
+ h1: "Español"
+ subtitle: "Un tema Jekyll simple y adaptable para tu blog o sitio."
diff --git a/_includes/footer.html b/_includes/footer.html
new file mode 100644
index 0000000000..e45ca323cf
--- /dev/null
+++ b/_includes/footer.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/header.html b/_includes/header.html
new file mode 100644
index 0000000000..0fdd11c6af
--- /dev/null
+++ b/_includes/header.html
@@ -0,0 +1,39 @@
+
+
+
+ You can find previous releases on the
+ download repository.
+ Slow download? Try the mirror on GitHub
+ Releases.
+
+ Also available on digital distribution platforms:
+
+ Godot's development is open. This means that you can
+ fix or improve any part of the engine yourself and choose
+ whether to contribute it back or keep it private.
+
+
+ New features are always available to use and test, without the need of
+ having to wait for the next major release. Compiling Godot from source
+ is very easy and the process is well-documented for each platform.
+ To obtain the source code, please visit the
+ GitHub project page.
+
+
+
+
+
+
+{% include footer.html %}
\ No newline at end of file
diff --git a/_layouts/more.html b/_layouts/more.html
new file mode 100644
index 0000000000..091fc4a7ef
--- /dev/null
+++ b/_layouts/more.html
@@ -0,0 +1,43 @@
+---
+layout: default
+header_text: ''
+current_tab: ''
+---
+
+{% include header.html %}
+
+
+
+{% include footer.html %}
\ No newline at end of file
diff --git a/themes/godotengine/assets/community/become_a_patron_button.png b/assets/community/become_a_patron_button.png
similarity index 100%
rename from themes/godotengine/assets/community/become_a_patron_button.png
rename to assets/community/become_a_patron_button.png
diff --git a/themes/godotengine/assets/community/icon_discord.png b/assets/community/icon_discord.png
similarity index 100%
rename from themes/godotengine/assets/community/icon_discord.png
rename to assets/community/icon_discord.png
diff --git a/themes/godotengine/assets/community/icon_facebook.png b/assets/community/icon_facebook.png
similarity index 100%
rename from themes/godotengine/assets/community/icon_facebook.png
rename to assets/community/icon_facebook.png
diff --git a/themes/godotengine/assets/community/icon_forum.png b/assets/community/icon_forum.png
similarity index 100%
rename from themes/godotengine/assets/community/icon_forum.png
rename to assets/community/icon_forum.png
diff --git a/themes/godotengine/assets/community/icon_github.png b/assets/community/icon_github.png
similarity index 100%
rename from themes/godotengine/assets/community/icon_github.png
rename to assets/community/icon_github.png
diff --git a/themes/godotengine/assets/community/icon_godot_contributors_chat.png b/assets/community/icon_godot_contributors_chat.png
similarity index 100%
rename from themes/godotengine/assets/community/icon_godot_contributors_chat.png
rename to assets/community/icon_godot_contributors_chat.png
diff --git a/themes/godotengine/assets/community/icon_mastodon.png b/assets/community/icon_mastodon.png
similarity index 100%
rename from themes/godotengine/assets/community/icon_mastodon.png
rename to assets/community/icon_mastodon.png
diff --git a/themes/godotengine/assets/community/icon_qa.png b/assets/community/icon_qa.png
similarity index 100%
rename from themes/godotengine/assets/community/icon_qa.png
rename to assets/community/icon_qa.png
diff --git a/themes/godotengine/assets/community/icon_reddit.png b/assets/community/icon_reddit.png
similarity index 100%
rename from themes/godotengine/assets/community/icon_reddit.png
rename to assets/community/icon_reddit.png
diff --git a/themes/godotengine/assets/community/icon_steam.png b/assets/community/icon_steam.png
similarity index 100%
rename from themes/godotengine/assets/community/icon_steam.png
rename to assets/community/icon_steam.png
diff --git a/themes/godotengine/assets/community/icon_twitter.png b/assets/community/icon_twitter.png
similarity index 100%
rename from themes/godotengine/assets/community/icon_twitter.png
rename to assets/community/icon_twitter.png
diff --git a/themes/godotengine/assets/community/icon_youtube.png b/assets/community/icon_youtube.png
similarity index 100%
rename from themes/godotengine/assets/community/icon_youtube.png
rename to assets/community/icon_youtube.png
diff --git a/themes/godotengine/assets/css/highlight.obsidian.min.css b/assets/css/highlight.obsidian.min.css
similarity index 100%
rename from themes/godotengine/assets/css/highlight.obsidian.min.css
rename to assets/css/highlight.obsidian.min.css
diff --git a/themes/godotengine/assets/css/main.css b/assets/css/main.css
similarity index 93%
rename from themes/godotengine/assets/css/main.css
rename to assets/css/main.css
index fa85343861..d4267a72c6 100644
--- a/themes/godotengine/assets/css/main.css
+++ b/assets/css/main.css
@@ -1158,11 +1158,8 @@ pre > code {
margin-top: 2rem;
}
-/* The teams page */
-
.teams-team-section {
background-color: var(--teams-odd-color);
- box-shadow: var(--base-shadow);
padding: 20px 16px;
margin: 40px 0;
}
@@ -1175,115 +1172,57 @@ pre > code {
}
.teams-team-section > h4 {
- font-size: 24px;
margin-top: 0;
}
-.teams-team-section em {
- font-size: 94%;
-}
-
-.teams-team-section > p {
- margin-top: 1.5em;
- margin-bottom: 0.25em;
-}
-
-.teams-team-leader:before {
- content: "⭐\00a0"; /* This is a non-breakable space. */
-}
-
-.teams-team-leader {
- color: var(--base-color-text-hl);
- font-weight: 700;
-}
-
.teams-subteams {
background-color: var(--teams-subteams-color);
border-left: 6px solid var(--accent-color);
- border-radius: 2px;
padding: 4px 10px;
margin-top: 30px;
- display: grid;
- grid-template-columns: 25% 75%;
+ width: 100%;
+ table-layout: fixed;
}
-.teams-subteam-name {
- font-family: "Montserrat", sans-serif;
- font-weight: 600;
- font-size: 18px;
- text-align: left;
- padding: 16px 16px 16px 10px;
- vertical-align: top;
+.teams-subteams th {
+ padding: 16px;
+ border-right: 1px dashed var(--table-divider-color);
}
-.teams-subteam-members {
+.teams-subteams td {
padding: 16px 0 16px 12px;
}
-.teams-subteam-name,
-.teams-subteam-members {
- border-bottom: 2px dashed var(--table-divider-color);
+.teams-subteams th,
+.teams-subteams td {
+ border-bottom: 1px dashed var(--table-divider-color);
+ border-collapse: collapse;
}
-.teams-subteam-name:last-of-type,
-.teams-subteam-members:last-of-type {
+
+.teams-subteams tr:last-of-type td,
+.teams-subteams tr:last-of-type th {
border-bottom: 0;
}
-.teams-subteams .teams-team-leader,
+.teams-subteam-name {
+ text-align: left;
+ width: 25%;
+}
+
+.teams-subteam-leader:before {
+ content: "⭐ ";
+}
+
+.teams-subteam-leader {
+ font-weight: 700;
+}
+
+.teams-subteam-leader,
.teams-subteam-members {
font-size: 16px;
line-height: 1.6;
}
-.teams-team-members > span:after,
-.teams-subteam-members > span:after {
- content: ", ";
-}
-
-.teams-team-members > span:last-child:after,
-.teams-subteam-members > span:last-child:after {
- content: "";
-}
-
-@media (max-width: 768px) {
- .teams-team-section {
- margin-left: -18px;
- margin-right: -18px;
- padding-left: 20px;
- padding-right: 20px;
- }
-
- .teams-subteams {
- padding: 4px;
- grid-template-columns: 1fr;
- }
-
- .teams-subteam-name {
- border-bottom: 0;
- }
-
- .teams-team-members,
- .teams-subteam-members {
- display: grid;
- grid-template-columns: 1fr;
- }
-
- .teams-team-members > span:after,
- .teams-subteam-members > span:after {
- content: "";
- }
- .teams-team-members > span:not(.teams-team-leader):before,
- .teams-subteam-members > span:not(.teams-team-leader):before {
- content: "· ";
- font-size: 18px;
- font-weight: 700;
- }
-
- .teams-team-leader {
- margin-left: -6px;
- }
-}
-
.rounded {
border-radius: 0.25rem; /* 4px */
}
diff --git a/themes/godotengine/assets/css/normalize.min.css b/assets/css/normalize.min.css
similarity index 100%
rename from themes/godotengine/assets/css/normalize.min.css
rename to assets/css/normalize.min.css
diff --git a/themes/godotengine/assets/css/tobii.min.css b/assets/css/tobii.min.css
similarity index 100%
rename from themes/godotengine/assets/css/tobii.min.css
rename to assets/css/tobii.min.css
diff --git a/themes/godotengine/assets/download/dl_icon_github.png b/assets/download/dl_icon_github.png
similarity index 100%
rename from themes/godotengine/assets/download/dl_icon_github.png
rename to assets/download/dl_icon_github.png
diff --git a/themes/godotengine/assets/download/godot_logo.svg b/assets/download/godot_logo.svg
similarity index 100%
rename from themes/godotengine/assets/download/godot_logo.svg
rename to assets/download/godot_logo.svg
diff --git a/themes/godotengine/assets/download/itch_logo.svg b/assets/download/itch_logo.svg
similarity index 100%
rename from themes/godotengine/assets/download/itch_logo.svg
rename to assets/download/itch_logo.svg
diff --git a/themes/godotengine/assets/download/steam.png b/assets/download/steam.png
similarity index 100%
rename from themes/godotengine/assets/download/steam.png
rename to assets/download/steam.png
diff --git a/themes/godotengine/assets/download/steam_logo.svg b/assets/download/steam_logo.svg
similarity index 100%
rename from themes/godotengine/assets/download/steam_logo.svg
rename to assets/download/steam_logo.svg
diff --git a/themes/godotengine/assets/error_logo.svg b/assets/error_logo.svg
similarity index 100%
rename from themes/godotengine/assets/error_logo.svg
rename to assets/error_logo.svg
diff --git a/themes/godotengine/assets/favicon.png b/assets/favicon.png
similarity index 100%
rename from themes/godotengine/assets/favicon.png
rename to assets/favicon.png
diff --git a/themes/godotengine/assets/favicon.svg b/assets/favicon.svg
similarity index 100%
rename from themes/godotengine/assets/favicon.svg
rename to assets/favicon.svg
diff --git a/themes/godotengine/assets/features/2dgames.jpg b/assets/features/2dgames.jpg
similarity index 100%
rename from themes/godotengine/assets/features/2dgames.jpg
rename to assets/features/2dgames.jpg
diff --git a/themes/godotengine/assets/features/3dgames.jpg b/assets/features/3dgames.jpg
similarity index 100%
rename from themes/godotengine/assets/features/3dgames.jpg
rename to assets/features/3dgames.jpg
diff --git a/themes/godotengine/assets/features/animate.jpg b/assets/features/animate.jpg
similarity index 100%
rename from themes/godotengine/assets/features/animate.jpg
rename to assets/features/animate.jpg
diff --git a/themes/godotengine/assets/features/design_graphic.svg b/assets/features/design_graphic.svg
similarity index 100%
rename from themes/godotengine/assets/features/design_graphic.svg
rename to assets/features/design_graphic.svg
diff --git a/themes/godotengine/assets/features/games_2d.jpg b/assets/features/games_2d.jpg
similarity index 100%
rename from themes/godotengine/assets/features/games_2d.jpg
rename to assets/features/games_2d.jpg
diff --git a/themes/godotengine/assets/features/games_3d.jpg b/assets/features/games_3d.jpg
similarity index 100%
rename from themes/godotengine/assets/features/games_3d.jpg
rename to assets/features/games_3d.jpg
diff --git a/themes/godotengine/assets/features/script.jpg b/assets/features/script.jpg
similarity index 100%
rename from themes/godotengine/assets/features/script.jpg
rename to assets/features/script.jpg
diff --git a/themes/godotengine/assets/features/xrsupport.jpg b/assets/features/xrsupport.jpg
similarity index 100%
rename from themes/godotengine/assets/features/xrsupport.jpg
rename to assets/features/xrsupport.jpg
diff --git a/themes/godotengine/assets/fonts/Montserrat-Bold.woff b/assets/fonts/Montserrat-Bold.woff
similarity index 100%
rename from themes/godotengine/assets/fonts/Montserrat-Bold.woff
rename to assets/fonts/Montserrat-Bold.woff
diff --git a/themes/godotengine/assets/fonts/Montserrat-Bold.woff2 b/assets/fonts/Montserrat-Bold.woff2
similarity index 100%
rename from themes/godotengine/assets/fonts/Montserrat-Bold.woff2
rename to assets/fonts/Montserrat-Bold.woff2
diff --git a/themes/godotengine/assets/fonts/Montserrat-ExtraBold.woff b/assets/fonts/Montserrat-ExtraBold.woff
similarity index 100%
rename from themes/godotengine/assets/fonts/Montserrat-ExtraBold.woff
rename to assets/fonts/Montserrat-ExtraBold.woff
diff --git a/themes/godotengine/assets/fonts/Montserrat-ExtraBold.woff2 b/assets/fonts/Montserrat-ExtraBold.woff2
similarity index 100%
rename from themes/godotengine/assets/fonts/Montserrat-ExtraBold.woff2
rename to assets/fonts/Montserrat-ExtraBold.woff2
diff --git a/themes/godotengine/assets/footer/facebook_logo.svg b/assets/footer/facebook_logo.svg
similarity index 100%
rename from themes/godotengine/assets/footer/facebook_logo.svg
rename to assets/footer/facebook_logo.svg
diff --git a/themes/godotengine/assets/footer/feed_logo.svg b/assets/footer/feed_logo.svg
similarity index 100%
rename from themes/godotengine/assets/footer/feed_logo.svg
rename to assets/footer/feed_logo.svg
diff --git a/themes/godotengine/assets/footer/github_logo.svg b/assets/footer/github_logo.svg
similarity index 100%
rename from themes/godotengine/assets/footer/github_logo.svg
rename to assets/footer/github_logo.svg
diff --git a/themes/godotengine/assets/footer/reddit_logo.svg b/assets/footer/reddit_logo.svg
similarity index 100%
rename from themes/godotengine/assets/footer/reddit_logo.svg
rename to assets/footer/reddit_logo.svg
diff --git a/themes/godotengine/assets/footer/twitter_logo.svg b/assets/footer/twitter_logo.svg
similarity index 100%
rename from themes/godotengine/assets/footer/twitter_logo.svg
rename to assets/footer/twitter_logo.svg
diff --git a/themes/godotengine/assets/hamburger.svg b/assets/hamburger.svg
similarity index 100%
rename from themes/godotengine/assets/hamburger.svg
rename to assets/hamburger.svg
diff --git a/themes/godotengine/assets/home/code.svg b/assets/home/code.svg
similarity index 100%
rename from themes/godotengine/assets/home/code.svg
rename to assets/home/code.svg
diff --git a/themes/godotengine/assets/home/document.svg b/assets/home/document.svg
similarity index 100%
rename from themes/godotengine/assets/home/document.svg
rename to assets/home/document.svg
diff --git a/themes/godotengine/assets/home/features/2d.webp b/assets/home/features/2d.webp
similarity index 100%
rename from themes/godotengine/assets/home/features/2d.webp
rename to assets/home/features/2d.webp
diff --git a/themes/godotengine/assets/home/features/3d.webp b/assets/home/features/3d.webp
similarity index 100%
rename from themes/godotengine/assets/home/features/3d.webp
rename to assets/home/features/3d.webp
diff --git a/themes/godotengine/assets/home/features/cross-platform.svg b/assets/home/features/cross-platform.svg
similarity index 100%
rename from themes/godotengine/assets/home/features/cross-platform.svg
rename to assets/home/features/cross-platform.svg
diff --git a/themes/godotengine/assets/home/features/innovative.webp b/assets/home/features/innovative.webp
similarity index 100%
rename from themes/godotengine/assets/home/features/innovative.webp
rename to assets/home/features/innovative.webp
diff --git a/themes/godotengine/assets/home/features/language.webp b/assets/home/features/language.webp
similarity index 100%
rename from themes/godotengine/assets/home/features/language.webp
rename to assets/home/features/language.webp
diff --git a/themes/godotengine/assets/home/features/oss.svg b/assets/home/features/oss.svg
similarity index 100%
rename from themes/godotengine/assets/home/features/oss.svg
rename to assets/home/features/oss.svg
diff --git a/themes/godotengine/assets/home/graphic.svg b/assets/home/graphic.svg
similarity index 100%
rename from themes/godotengine/assets/home/graphic.svg
rename to assets/home/graphic.svg
diff --git a/themes/godotengine/assets/home/hero/tail-quest.jpg b/assets/home/hero/tail-quest.jpg
similarity index 100%
rename from themes/godotengine/assets/home/hero/tail-quest.jpg
rename to assets/home/hero/tail-quest.jpg
diff --git a/themes/godotengine/assets/home/report.svg b/assets/home/report.svg
similarity index 100%
rename from themes/godotengine/assets/home/report.svg
rename to assets/home/report.svg
diff --git a/themes/godotengine/assets/home/sfc.svg b/assets/home/sfc.svg
similarity index 100%
rename from themes/godotengine/assets/home/sfc.svg
rename to assets/home/sfc.svg
diff --git a/themes/godotengine/assets/home/sponsors/affray-interactive.png b/assets/home/sponsors/affray-interactive.png
similarity index 100%
rename from themes/godotengine/assets/home/sponsors/affray-interactive.png
rename to assets/home/sponsors/affray-interactive.png
diff --git a/themes/godotengine/assets/home/sponsors/asifa-hollywood.png b/assets/home/sponsors/asifa-hollywood.png
similarity index 100%
rename from themes/godotengine/assets/home/sponsors/asifa-hollywood.png
rename to assets/home/sponsors/asifa-hollywood.png
diff --git a/themes/godotengine/assets/home/sponsors/gamblify.png b/assets/home/sponsors/gamblify.png
similarity index 100%
rename from themes/godotengine/assets/home/sponsors/gamblify.png
rename to assets/home/sponsors/gamblify.png
diff --git a/themes/godotengine/assets/home/sponsors/playful-studios.png b/assets/home/sponsors/playful-studios.png
similarity index 100%
rename from themes/godotengine/assets/home/sponsors/playful-studios.png
rename to assets/home/sponsors/playful-studios.png
diff --git a/themes/godotengine/assets/home/sponsors/robot-gentleman.png b/assets/home/sponsors/robot-gentleman.png
similarity index 100%
rename from themes/godotengine/assets/home/sponsors/robot-gentleman.png
rename to assets/home/sponsors/robot-gentleman.png
diff --git a/themes/godotengine/assets/home/sponsors/spiffcode.png b/assets/home/sponsors/spiffcode.png
similarity index 100%
rename from themes/godotengine/assets/home/sponsors/spiffcode.png
rename to assets/home/sponsors/spiffcode.png
diff --git a/themes/godotengine/assets/home/sponsors/striked.png b/assets/home/sponsors/striked.png
similarity index 100%
rename from themes/godotengine/assets/home/sponsors/striked.png
rename to assets/home/sponsors/striked.png
diff --git a/themes/godotengine/assets/icons/android.svg b/assets/icons/android.svg
similarity index 100%
rename from themes/godotengine/assets/icons/android.svg
rename to assets/icons/android.svg
diff --git a/themes/godotengine/assets/icons/html5.svg b/assets/icons/html5.svg
similarity index 100%
rename from themes/godotengine/assets/icons/html5.svg
rename to assets/icons/html5.svg
diff --git a/themes/godotengine/assets/icons/ios.svg b/assets/icons/ios.svg
similarity index 100%
rename from themes/godotengine/assets/icons/ios.svg
rename to assets/icons/ios.svg
diff --git a/themes/godotengine/assets/icons/linux.svg b/assets/icons/linux.svg
similarity index 100%
rename from themes/godotengine/assets/icons/linux.svg
rename to assets/icons/linux.svg
diff --git a/themes/godotengine/assets/icons/macos.svg b/assets/icons/macos.svg
similarity index 100%
rename from themes/godotengine/assets/icons/macos.svg
rename to assets/icons/macos.svg
diff --git a/themes/godotengine/assets/icons/playstation.svg b/assets/icons/playstation.svg
similarity index 100%
rename from themes/godotengine/assets/icons/playstation.svg
rename to assets/icons/playstation.svg
diff --git a/themes/godotengine/assets/icons/search.svg b/assets/icons/search.svg
similarity index 100%
rename from themes/godotengine/assets/icons/search.svg
rename to assets/icons/search.svg
diff --git a/themes/godotengine/assets/icons/server.svg b/assets/icons/server.svg
similarity index 100%
rename from themes/godotengine/assets/icons/server.svg
rename to assets/icons/server.svg
diff --git a/themes/godotengine/assets/icons/switch.svg b/assets/icons/switch.svg
similarity index 100%
rename from themes/godotengine/assets/icons/switch.svg
rename to assets/icons/switch.svg
diff --git a/themes/godotengine/assets/icons/windows.svg b/assets/icons/windows.svg
similarity index 100%
rename from themes/godotengine/assets/icons/windows.svg
rename to assets/icons/windows.svg
diff --git a/themes/godotengine/assets/icons/xbox.svg b/assets/icons/xbox.svg
similarity index 100%
rename from themes/godotengine/assets/icons/xbox.svg
rename to assets/icons/xbox.svg
diff --git a/assets/images/authors/akien.jpg b/assets/images/authors/akien.jpg
new file mode 100644
index 0000000000..0ed2a47cdc
Binary files /dev/null and b/assets/images/authors/akien.jpg differ
diff --git a/assets/images/authors/bastiaan.jpg b/assets/images/authors/bastiaan.jpg
new file mode 100644
index 0000000000..88a3382532
Binary files /dev/null and b/assets/images/authors/bastiaan.jpg differ
diff --git a/assets/images/authors/calinou.png b/assets/images/authors/calinou.png
new file mode 100644
index 0000000000..e0dfd4ff56
Binary files /dev/null and b/assets/images/authors/calinou.png differ
diff --git a/assets/images/authors/clayjohn.jpg b/assets/images/authors/clayjohn.jpg
new file mode 100644
index 0000000000..68e38effb1
Binary files /dev/null and b/assets/images/authors/clayjohn.jpg differ
diff --git a/themes/godotengine/assets/default_avatar.svg b/assets/images/authors/default_avatar.svg
similarity index 100%
rename from themes/godotengine/assets/default_avatar.svg
rename to assets/images/authors/default_avatar.svg
diff --git a/assets/images/authors/emi.png b/assets/images/authors/emi.png
new file mode 100644
index 0000000000..fd81782c85
Binary files /dev/null and b/assets/images/authors/emi.png differ
diff --git a/assets/images/authors/groud.png b/assets/images/authors/groud.png
new file mode 100644
index 0000000000..df24ec2568
Binary files /dev/null and b/assets/images/authors/groud.png differ
diff --git a/assets/images/authors/ignacio.png b/assets/images/authors/ignacio.png
new file mode 100644
index 0000000000..a3712c69f1
Binary files /dev/null and b/assets/images/authors/ignacio.png differ
diff --git a/assets/images/authors/ilaria.jpg b/assets/images/authors/ilaria.jpg
new file mode 100644
index 0000000000..535c8101d7
Binary files /dev/null and b/assets/images/authors/ilaria.jpg differ
diff --git a/assets/images/authors/joan.png b/assets/images/authors/joan.png
new file mode 100644
index 0000000000..c08d3d0ce9
Binary files /dev/null and b/assets/images/authors/joan.png differ
diff --git a/assets/images/authors/nathan.png b/assets/images/authors/nathan.png
new file mode 100644
index 0000000000..bfa505f296
Binary files /dev/null and b/assets/images/authors/nathan.png differ
diff --git a/assets/images/authors/pedro.png b/assets/images/authors/pedro.png
new file mode 100644
index 0000000000..bb3449afa2
Binary files /dev/null and b/assets/images/authors/pedro.png differ
diff --git a/assets/images/authors/punto.png b/assets/images/authors/punto.png
new file mode 100644
index 0000000000..bb7108bb55
Binary files /dev/null and b/assets/images/authors/punto.png differ
diff --git a/assets/images/authors/reduzio.jpg b/assets/images/authors/reduzio.jpg
new file mode 100644
index 0000000000..b246367940
Binary files /dev/null and b/assets/images/authors/reduzio.jpg differ
diff --git a/assets/images/authors/tokage.png b/assets/images/authors/tokage.png
new file mode 100644
index 0000000000..745bb35d36
Binary files /dev/null and b/assets/images/authors/tokage.png differ
diff --git a/assets/images/authors/yuri.jpeg b/assets/images/authors/yuri.jpeg
new file mode 100644
index 0000000000..6e5a97b9c5
Binary files /dev/null and b/assets/images/authors/yuri.jpeg differ
diff --git a/themes/godotengine/assets/js/barba.min.js b/assets/js/barba.min.js
similarity index 100%
rename from themes/godotengine/assets/js/barba.min.js
rename to assets/js/barba.min.js
diff --git a/themes/godotengine/assets/js/highlight.gdscript.min.js b/assets/js/highlight.gdscript.min.js
similarity index 100%
rename from themes/godotengine/assets/js/highlight.gdscript.min.js
rename to assets/js/highlight.gdscript.min.js
diff --git a/themes/godotengine/assets/js/highlight.min.js b/assets/js/highlight.min.js
similarity index 100%
rename from themes/godotengine/assets/js/highlight.min.js
rename to assets/js/highlight.min.js
diff --git a/themes/godotengine/assets/js/tobii.min.js b/assets/js/tobii.min.js
similarity index 100%
rename from themes/godotengine/assets/js/tobii.min.js
rename to assets/js/tobii.min.js
diff --git a/themes/godotengine/assets/leaflet/images/layers-2x.png b/assets/leaflet/images/layers-2x.png
similarity index 100%
rename from themes/godotengine/assets/leaflet/images/layers-2x.png
rename to assets/leaflet/images/layers-2x.png
diff --git a/themes/godotengine/assets/leaflet/images/layers.png b/assets/leaflet/images/layers.png
similarity index 100%
rename from themes/godotengine/assets/leaflet/images/layers.png
rename to assets/leaflet/images/layers.png
diff --git a/themes/godotengine/assets/leaflet/images/marker-icon-2x.png b/assets/leaflet/images/marker-icon-2x.png
similarity index 100%
rename from themes/godotengine/assets/leaflet/images/marker-icon-2x.png
rename to assets/leaflet/images/marker-icon-2x.png
diff --git a/themes/godotengine/assets/leaflet/images/marker-icon.png b/assets/leaflet/images/marker-icon.png
similarity index 100%
rename from themes/godotengine/assets/leaflet/images/marker-icon.png
rename to assets/leaflet/images/marker-icon.png
diff --git a/themes/godotengine/assets/leaflet/images/marker-shadow.png b/assets/leaflet/images/marker-shadow.png
similarity index 100%
rename from themes/godotengine/assets/leaflet/images/marker-shadow.png
rename to assets/leaflet/images/marker-shadow.png
diff --git a/themes/godotengine/assets/leaflet/images/physical-marker-icon-2x.png b/assets/leaflet/images/physical-marker-icon-2x.png
similarity index 100%
rename from themes/godotengine/assets/leaflet/images/physical-marker-icon-2x.png
rename to assets/leaflet/images/physical-marker-icon-2x.png
diff --git a/themes/godotengine/assets/leaflet/images/physical-marker-icon.png b/assets/leaflet/images/physical-marker-icon.png
similarity index 100%
rename from themes/godotengine/assets/leaflet/images/physical-marker-icon.png
rename to assets/leaflet/images/physical-marker-icon.png
diff --git a/themes/godotengine/assets/leaflet/leaflet.css b/assets/leaflet/leaflet.css
similarity index 100%
rename from themes/godotengine/assets/leaflet/leaflet.css
rename to assets/leaflet/leaflet.css
diff --git a/themes/godotengine/assets/leaflet/leaflet.js b/assets/leaflet/leaflet.js
similarity index 100%
rename from themes/godotengine/assets/leaflet/leaflet.js
rename to assets/leaflet/leaflet.js
diff --git a/themes/godotengine/assets/leaflet/leaflet.js.map b/assets/leaflet/leaflet.js.map
similarity index 100%
rename from themes/godotengine/assets/leaflet/leaflet.js.map
rename to assets/leaflet/leaflet.js.map
diff --git a/themes/godotengine/assets/logo.svg b/assets/logo.svg
similarity index 100%
rename from themes/godotengine/assets/logo.svg
rename to assets/logo.svg
diff --git a/themes/godotengine/assets/logo_dark.svg b/assets/logo_dark.svg
similarity index 100%
rename from themes/godotengine/assets/logo_dark.svg
rename to assets/logo_dark.svg
diff --git a/themes/godotengine/assets/og_image.png b/assets/og_image.png
similarity index 100%
rename from themes/godotengine/assets/og_image.png
rename to assets/og_image.png
diff --git a/themes/godotengine/assets/press/icon_color.png b/assets/press/icon_color.png
similarity index 100%
rename from themes/godotengine/assets/press/icon_color.png
rename to assets/press/icon_color.png
diff --git a/themes/godotengine/assets/press/icon_color.svg b/assets/press/icon_color.svg
similarity index 100%
rename from themes/godotengine/assets/press/icon_color.svg
rename to assets/press/icon_color.svg
diff --git a/themes/godotengine/assets/press/icon_color_outline.png b/assets/press/icon_color_outline.png
similarity index 100%
rename from themes/godotengine/assets/press/icon_color_outline.png
rename to assets/press/icon_color_outline.png
diff --git a/themes/godotengine/assets/press/icon_color_outline.svg b/assets/press/icon_color_outline.svg
similarity index 100%
rename from themes/godotengine/assets/press/icon_color_outline.svg
rename to assets/press/icon_color_outline.svg
diff --git a/themes/godotengine/assets/press/icon_monochrome_dark.png b/assets/press/icon_monochrome_dark.png
similarity index 100%
rename from themes/godotengine/assets/press/icon_monochrome_dark.png
rename to assets/press/icon_monochrome_dark.png
diff --git a/themes/godotengine/assets/press/icon_monochrome_dark.svg b/assets/press/icon_monochrome_dark.svg
similarity index 100%
rename from themes/godotengine/assets/press/icon_monochrome_dark.svg
rename to assets/press/icon_monochrome_dark.svg
diff --git a/themes/godotengine/assets/press/icon_monochrome_light.png b/assets/press/icon_monochrome_light.png
similarity index 100%
rename from themes/godotengine/assets/press/icon_monochrome_light.png
rename to assets/press/icon_monochrome_light.png
diff --git a/themes/godotengine/assets/press/icon_monochrome_light.svg b/assets/press/icon_monochrome_light.svg
similarity index 100%
rename from themes/godotengine/assets/press/icon_monochrome_light.svg
rename to assets/press/icon_monochrome_light.svg
diff --git a/themes/godotengine/assets/press/logo_large_color_dark.png b/assets/press/logo_large_color_dark.png
similarity index 100%
rename from themes/godotengine/assets/press/logo_large_color_dark.png
rename to assets/press/logo_large_color_dark.png
diff --git a/themes/godotengine/assets/press/logo_large_color_dark.svg b/assets/press/logo_large_color_dark.svg
similarity index 100%
rename from themes/godotengine/assets/press/logo_large_color_dark.svg
rename to assets/press/logo_large_color_dark.svg
diff --git a/themes/godotengine/assets/press/logo_large_color_light.png b/assets/press/logo_large_color_light.png
similarity index 100%
rename from themes/godotengine/assets/press/logo_large_color_light.png
rename to assets/press/logo_large_color_light.png
diff --git a/themes/godotengine/assets/press/logo_large_color_light.svg b/assets/press/logo_large_color_light.svg
similarity index 100%
rename from themes/godotengine/assets/press/logo_large_color_light.svg
rename to assets/press/logo_large_color_light.svg
diff --git a/themes/godotengine/assets/press/logo_large_monochrome_dark.png b/assets/press/logo_large_monochrome_dark.png
similarity index 100%
rename from themes/godotengine/assets/press/logo_large_monochrome_dark.png
rename to assets/press/logo_large_monochrome_dark.png
diff --git a/themes/godotengine/assets/press/logo_large_monochrome_dark.svg b/assets/press/logo_large_monochrome_dark.svg
similarity index 100%
rename from themes/godotengine/assets/press/logo_large_monochrome_dark.svg
rename to assets/press/logo_large_monochrome_dark.svg
diff --git a/themes/godotengine/assets/press/logo_large_monochrome_light.png b/assets/press/logo_large_monochrome_light.png
similarity index 100%
rename from themes/godotengine/assets/press/logo_large_monochrome_light.png
rename to assets/press/logo_large_monochrome_light.png
diff --git a/themes/godotengine/assets/press/logo_large_monochrome_light.svg b/assets/press/logo_large_monochrome_light.svg
similarity index 100%
rename from themes/godotengine/assets/press/logo_large_monochrome_light.svg
rename to assets/press/logo_large_monochrome_light.svg
diff --git a/themes/godotengine/assets/press/logo_small_color_dark.png b/assets/press/logo_small_color_dark.png
similarity index 100%
rename from themes/godotengine/assets/press/logo_small_color_dark.png
rename to assets/press/logo_small_color_dark.png
diff --git a/themes/godotengine/assets/press/logo_small_color_dark.svg b/assets/press/logo_small_color_dark.svg
similarity index 100%
rename from themes/godotengine/assets/press/logo_small_color_dark.svg
rename to assets/press/logo_small_color_dark.svg
diff --git a/themes/godotengine/assets/press/logo_small_color_light.png b/assets/press/logo_small_color_light.png
similarity index 100%
rename from themes/godotengine/assets/press/logo_small_color_light.png
rename to assets/press/logo_small_color_light.png
diff --git a/themes/godotengine/assets/press/logo_small_color_light.svg b/assets/press/logo_small_color_light.svg
similarity index 100%
rename from themes/godotengine/assets/press/logo_small_color_light.svg
rename to assets/press/logo_small_color_light.svg
diff --git a/themes/godotengine/assets/press/logo_small_monochrome_dark.png b/assets/press/logo_small_monochrome_dark.png
similarity index 100%
rename from themes/godotengine/assets/press/logo_small_monochrome_dark.png
rename to assets/press/logo_small_monochrome_dark.png
diff --git a/themes/godotengine/assets/press/logo_small_monochrome_dark.svg b/assets/press/logo_small_monochrome_dark.svg
similarity index 100%
rename from themes/godotengine/assets/press/logo_small_monochrome_dark.svg
rename to assets/press/logo_small_monochrome_dark.svg
diff --git a/themes/godotengine/assets/press/logo_small_monochrome_light.png b/assets/press/logo_small_monochrome_light.png
similarity index 100%
rename from themes/godotengine/assets/press/logo_small_monochrome_light.png
rename to assets/press/logo_small_monochrome_light.png
diff --git a/themes/godotengine/assets/press/logo_small_monochrome_light.svg b/assets/press/logo_small_monochrome_light.svg
similarity index 100%
rename from themes/godotengine/assets/press/logo_small_monochrome_light.svg
rename to assets/press/logo_small_monochrome_light.svg
diff --git a/themes/godotengine/assets/press/logo_vertical_color_dark.png b/assets/press/logo_vertical_color_dark.png
similarity index 100%
rename from themes/godotengine/assets/press/logo_vertical_color_dark.png
rename to assets/press/logo_vertical_color_dark.png
diff --git a/themes/godotengine/assets/press/logo_vertical_color_dark.svg b/assets/press/logo_vertical_color_dark.svg
similarity index 100%
rename from themes/godotengine/assets/press/logo_vertical_color_dark.svg
rename to assets/press/logo_vertical_color_dark.svg
diff --git a/themes/godotengine/assets/press/logo_vertical_color_light.png b/assets/press/logo_vertical_color_light.png
similarity index 100%
rename from themes/godotengine/assets/press/logo_vertical_color_light.png
rename to assets/press/logo_vertical_color_light.png
diff --git a/themes/godotengine/assets/press/logo_vertical_color_light.svg b/assets/press/logo_vertical_color_light.svg
similarity index 100%
rename from themes/godotengine/assets/press/logo_vertical_color_light.svg
rename to assets/press/logo_vertical_color_light.svg
diff --git a/themes/godotengine/assets/press/logo_vertical_monochrome_dark.png b/assets/press/logo_vertical_monochrome_dark.png
similarity index 100%
rename from themes/godotengine/assets/press/logo_vertical_monochrome_dark.png
rename to assets/press/logo_vertical_monochrome_dark.png
diff --git a/themes/godotengine/assets/press/logo_vertical_monochrome_dark.svg b/assets/press/logo_vertical_monochrome_dark.svg
similarity index 100%
rename from themes/godotengine/assets/press/logo_vertical_monochrome_dark.svg
rename to assets/press/logo_vertical_monochrome_dark.svg
diff --git a/themes/godotengine/assets/press/logo_vertical_monochrome_light.png b/assets/press/logo_vertical_monochrome_light.png
similarity index 100%
rename from themes/godotengine/assets/press/logo_vertical_monochrome_light.png
rename to assets/press/logo_vertical_monochrome_light.png
diff --git a/themes/godotengine/assets/press/logo_vertical_monochrome_light.svg b/assets/press/logo_vertical_monochrome_light.svg
similarity index 100%
rename from themes/godotengine/assets/press/logo_vertical_monochrome_light.svg
rename to assets/press/logo_vertical_monochrome_light.svg
diff --git a/themes/godotengine/assets/showcase/beat-invaders.jpg b/assets/showcase/beat-invaders.jpg
similarity index 100%
rename from themes/godotengine/assets/showcase/beat-invaders.jpg
rename to assets/showcase/beat-invaders.jpg
diff --git a/themes/godotengine/assets/showcase/city-game-studio.png b/assets/showcase/city-game-studio.png
similarity index 100%
rename from themes/godotengine/assets/showcase/city-game-studio.png
rename to assets/showcase/city-game-studio.png
diff --git a/themes/godotengine/assets/showcase/cruelty-squad.jpg b/assets/showcase/cruelty-squad.jpg
similarity index 100%
rename from themes/godotengine/assets/showcase/cruelty-squad.jpg
rename to assets/showcase/cruelty-squad.jpg
diff --git a/themes/godotengine/assets/showcase/delta-v-rings-of-saturn.jpg b/assets/showcase/delta-v-rings-of-saturn.jpg
similarity index 100%
rename from themes/godotengine/assets/showcase/delta-v-rings-of-saturn.jpg
rename to assets/showcase/delta-v-rings-of-saturn.jpg
diff --git a/themes/godotengine/assets/showcase/dome-keeper.jpg b/assets/showcase/dome-keeper.jpg
similarity index 100%
rename from themes/godotengine/assets/showcase/dome-keeper.jpg
rename to assets/showcase/dome-keeper.jpg
diff --git a/themes/godotengine/assets/showcase/dungeondraft.jpg b/assets/showcase/dungeondraft.jpg
similarity index 100%
rename from themes/godotengine/assets/showcase/dungeondraft.jpg
rename to assets/showcase/dungeondraft.jpg
diff --git a/themes/godotengine/assets/showcase/ex-zodiac.png b/assets/showcase/ex-zodiac.png
similarity index 100%
rename from themes/godotengine/assets/showcase/ex-zodiac.png
rename to assets/showcase/ex-zodiac.png
diff --git a/themes/godotengine/assets/showcase/fist-of-the-forgotten.jpg b/assets/showcase/fist-of-the-forgotten.jpg
similarity index 100%
rename from themes/godotengine/assets/showcase/fist-of-the-forgotten.jpg
rename to assets/showcase/fist-of-the-forgotten.jpg
diff --git a/themes/godotengine/assets/showcase/gravity-ace.png b/assets/showcase/gravity-ace.png
similarity index 100%
rename from themes/godotengine/assets/showcase/gravity-ace.png
rename to assets/showcase/gravity-ace.png
diff --git a/themes/godotengine/assets/showcase/haiki.png b/assets/showcase/haiki.png
similarity index 100%
rename from themes/godotengine/assets/showcase/haiki.png
rename to assets/showcase/haiki.png
diff --git a/themes/godotengine/assets/showcase/hive-time.png b/assets/showcase/hive-time.png
similarity index 100%
rename from themes/godotengine/assets/showcase/hive-time.png
rename to assets/showcase/hive-time.png
diff --git a/themes/godotengine/assets/showcase/human-diaspora.jpg b/assets/showcase/human-diaspora.jpg
similarity index 100%
rename from themes/godotengine/assets/showcase/human-diaspora.jpg
rename to assets/showcase/human-diaspora.jpg
diff --git a/themes/godotengine/assets/showcase/kingdoms-of-the-dump.png b/assets/showcase/kingdoms-of-the-dump.png
similarity index 100%
rename from themes/godotengine/assets/showcase/kingdoms-of-the-dump.png
rename to assets/showcase/kingdoms-of-the-dump.png
diff --git a/themes/godotengine/assets/showcase/material-maker.png b/assets/showcase/material-maker.png
similarity index 100%
rename from themes/godotengine/assets/showcase/material-maker.png
rename to assets/showcase/material-maker.png
diff --git a/assets/showcase/pingo-adventure.jpg b/assets/showcase/pingo-adventure.jpg
new file mode 100644
index 0000000000..df5dfcc612
Binary files /dev/null and b/assets/showcase/pingo-adventure.jpg differ
diff --git a/themes/godotengine/assets/showcase/pixelorama.png b/assets/showcase/pixelorama.png
similarity index 100%
rename from themes/godotengine/assets/showcase/pixelorama.png
rename to assets/showcase/pixelorama.png
diff --git a/themes/godotengine/assets/showcase/precipice.png b/assets/showcase/precipice.png
similarity index 100%
rename from themes/godotengine/assets/showcase/precipice.png
rename to assets/showcase/precipice.png
diff --git a/themes/godotengine/assets/showcase/primal-light.png b/assets/showcase/primal-light-1.png
similarity index 100%
rename from themes/godotengine/assets/showcase/primal-light.png
rename to assets/showcase/primal-light-1.png
diff --git a/themes/godotengine/assets/home/hero/primal-light.jpg b/assets/showcase/primal-light-2.jpg
similarity index 100%
rename from themes/godotengine/assets/home/hero/primal-light.jpg
rename to assets/showcase/primal-light-2.jpg
diff --git a/themes/godotengine/assets/home/hero/resolutiion.jpg b/assets/showcase/resolutiion-1.jpg
similarity index 100%
rename from themes/godotengine/assets/home/hero/resolutiion.jpg
rename to assets/showcase/resolutiion-1.jpg
diff --git a/themes/godotengine/assets/showcase/resolutiion.png b/assets/showcase/resolutiion-2.png
similarity index 100%
rename from themes/godotengine/assets/showcase/resolutiion.png
rename to assets/showcase/resolutiion-2.png
diff --git a/themes/godotengine/assets/showcase/rogue-state-revolution.jpg b/assets/showcase/rogue-state-revolution.jpg
similarity index 100%
rename from themes/godotengine/assets/showcase/rogue-state-revolution.jpg
rename to assets/showcase/rogue-state-revolution.jpg
diff --git a/themes/godotengine/assets/showcase/rpg-in-a-box.png b/assets/showcase/rpg-in-a-box.png
similarity index 100%
rename from themes/godotengine/assets/showcase/rpg-in-a-box.png
rename to assets/showcase/rpg-in-a-box.png
diff --git a/assets/showcase/tail-quest.jpg b/assets/showcase/tail-quest.jpg
new file mode 100644
index 0000000000..7de2b87d08
Binary files /dev/null and b/assets/showcase/tail-quest.jpg differ
diff --git a/themes/godotengine/assets/showcase/the-garden-path.jpg b/assets/showcase/the-garden-path.jpg
similarity index 100%
rename from themes/godotengine/assets/showcase/the-garden-path.jpg
rename to assets/showcase/the-garden-path.jpg
diff --git a/themes/godotengine/assets/showcase/until-then.png b/assets/showcase/until-then.png
similarity index 100%
rename from themes/godotengine/assets/showcase/until-then.png
rename to assets/showcase/until-then.png
diff --git a/build-and-serve.sh b/build-and-serve.sh
new file mode 100644
index 0000000000..084a7f7bc5
--- /dev/null
+++ b/build-and-serve.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+bundle install
+bundle exec jekyll serve
diff --git a/build.sh b/build.sh
new file mode 100644
index 0000000000..e70af5c107
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+bundle install
+bundle exec jekyll build
diff --git a/collections/_article/2022-retrospective.md b/collections/_article/2022-retrospective.md
new file mode 100644
index 0000000000..6f7288b7c6
--- /dev/null
+++ b/collections/_article/2022-retrospective.md
@@ -0,0 +1,74 @@
+---
+title: "2022: A Retrospective"
+excerpt: "The year 2022 was very special for us. We reached a lot of milestones within Godot and also in the community. This blog post will offer a small retrospective of the year."
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/63a/ebf/03e/63aebf03e854b249543216.png
+date: 2022-12-31 23:20:19
+---
+
+The year 2022 was very special for us. We reached a lot of milestones within Godot and also in the community. This blog post will offer a small retrospective of the year.
+
+### Godot 4.0
+
+The work of Godot 4.0 begun in 2019 when I forked it after 3.1 was released with the hopes of rewriting the rendering architecture using Vulkan as a target API. I worked on it alone for a while, while it was just a graphics fork.
+
+But then things happen, in the years in between the community (both users and contributors) grew massively and so did our funding thanks to many generous large donations.
+
+With more users come more demands and, suddendly, the will to use Godot for larger and more serious projects required that large parts of the core were modernized. Godot 3.x core architecture is still that of an engine of the late 2000s, when computers were single core and the difference in speed between CPU and memory was not as significant as it is today.
+
+As a result, and with many contributors interested in improving and modernizing Godot, the goal for 4.0 became much bigger and more ambitious, and a huge amount of the engine core was rewritten, as well as GDScript.
+
+As far as 2021, the status of the 4.0 was a mess. A lot of work was done, but almost nothing worked and so many features were unfinished. As a result, 2022 became a year of focus on stabilizing and finishing all major remaining issues.
+
+Early in the year, we released [Godot 4.0 Alpha](https://godotengine.org/article/dev-snapshot-godot-4-0-alpha-1). After it, 17 alphas followed in total. Things improved a lot, but eventually it was time to do feature freeze and focus on bug fixing. In September, the [first betas](https://godotengine.org/article/dev-snapshot-godot-4-0-beta-1) rolled out and, since then, the stability of the master branch has improved enormously thanks to contributors changing their mindset to fixing bugs.
+
+We will not end the year with a stable release, but we are very close. We are still aiming to release the first stable version of Godot 4.0 during the first months of 2023.
+
+It is important to note, though, that as with any X.0 release, there will still be significant stability, usability and performance related issues. All these will improve significantly in the [upcoming point releases](https://godotengine.org/article/release-management-4-0-and-beyond) (just like it happened after Godot 3.0).
+
+### First Godot Sprint after Covid
+
+In June this year, we held our first [Godot Sprint](https://godotengine.org/article/godot-sprint-and-user-meeting-barcelona-june-2022) since the pandemic started (previous one being in Brussels, January 2020).
+
+It was an excellent way to get back in touch with everyone. As much as Godot is developed very efficiently online, the main developers meeting personally is a great way to move forward with a lot of issues that are difficult to discuss online.
+
+Even if we do online calls often, we are all very tired after an hour or two, but meeting in person is a blast where we can have fun all day discussing Godot topics.
+
+
+
+### Godot Foundation
+
+The success of Godot is largely due to the support provided by the Software Freedom Conservancy. Thanks to them, we could receive donations, and hire contributors who work full or part time to improve the project.
+
+As Godot continued to grow, we realized that we needed the autonomy, control, and flexibility of an organization specifically dedicated to Godot.
+
+Because of this, the [Godot Foundation was launched last month](https://godotengine.org/article/godots-graduation-godot-moves-to-a-new-foundation). It's still not fully operational, as there is still some bureaucracy remaining, but the plan is to do a gradual move from the Conservancy to it during all of next year.
+
+### The 2022 showreels were published
+
+We published our [2022 showreels](https://godotengine.org/article/announcing-godot-2022-showreels), and they looks amazing! The quality and quantity of games published using Godot keep growing significantly every year. This year, we also added the tools category! Thanks to its powerful UI system and architecture, Godot is becoming a go-to platform to create applications and tools that are graphically intensive.
+
+
+
+### Social media explosion
+
+Godot also kept growing strongly on social media, surpassing 100k subscribers on [Reddit](https://www.reddit.com/r/godot/), 50k stars on [GitHub](https://github.com/godotengine/godot) and 60k followers on [Twitter](https://mastodon.gamedev.place/@godotengine). Our Discord has also grown significantly.
+
+### Godot games on Steam keep growing exponentially
+
+This year, there were several hit games published with Godot, such as [Dome Keeper](https://store.steampowered.com/app/1637320/Dome_Keeper/), [Brotato](https://store.steampowered.com/app/1942280/Brotato/) or [The Case of the Golden Idol](https://store.steampowered.com/app/1677770/The_Case_of_the_Golden_Idol/). It makes us very happy that studios are starting to choose Godot more and more for developing their games.
+
+
+
+### Closing and personal note
+
+On a personal level, this year was a turning point for me. As a Godot creator and having pushed countless hours majorly churning code for the project since its inception, this is the year where I finally stopped working on large features and moved on to helping other contributors and a more administrative role.
+
+I worked hard towards this happening, increasingly delegating engine areas to trusted and talented contributors over the years. Nowadays, pretty much all the major areas have dedicated maintainers who understand the code better than I do.
+
+Of course, I still help them out with feedback and code reviews and will still contribute new features from time to time but, as time passes, it is (and always was) my intention that Godot is a project that can stand on its own and thrive.
+
+We create Godot out of love and a belief that game development should be freely accessible to everyone. By using Godot, you can have full ownership and control over the technology powering your game. If you believe in our mission and want to support us, you can [become a Patreon](https://www.patreon.com/bePatron?u=5597979) or [send a donation](https://godotengine.org/donate).
+
+It has been a productive year, and we are grateful to have been able to share it with all of you. We look forward to seeing what the next year brings. Thank you!
\ No newline at end of file
diff --git a/collections/_article/2d-games-godot-kickstarter-live.md b/collections/_article/2d-games-godot-kickstarter-live.md
new file mode 100644
index 0000000000..0a678f93eb
--- /dev/null
+++ b/collections/_article/2d-games-godot-kickstarter-live.md
@@ -0,0 +1,24 @@
+---
+title: "Make Professional 2d Games with Godot: Kickstarter LIVE"
+excerpt: "Do you want to become a better game developer with Godot? GDquest, who makes game creation tutorials with open source tools, is on Kickstarter, with our full support!"
+categories: ["news"]
+author: Nathan GDQuest
+image: /storage/app/uploads/public/592/29d/1fe/59229d1fe233b092175821.jpg
+date: 2017-05-22 10:00:00
+---
+
+## Learn to create your own 2d game inspired by Zelda!
+
+GDquest is on Kickstarter again, and we're doing this in collaboration with the Godot developers. We want to bring you **the first professional course for our favourite Free and Open Source Game Engine!**
+
+**For the next 30 days, get one free tutorial daily on YouTube!**
+
+Update: the Kickstarter was funded in 12 hours! There are [plenty of stretch goals](https://www.kickstarter.com/projects/gdquest/make-professional-2d-games-godot-engine-online-cou/posts/1893587) to unlock, including direct contributions to the Godot 3.0 documentation.
+
+
+
+All the money will go to make the course: the higher the funding, the bigger your reward.
+
+**Back the project now and get at least 50% off the course’s price:**
+
+[](https://www.kickstarter.com/projects/gdquest/make-professional-2d-games-godot-engine-online-cou)
\ No newline at end of file
diff --git a/collections/_article/80-funded-celebrating-patreon-rewards-upgrade.md b/collections/_article/80-funded-celebrating-patreon-rewards-upgrade.md
new file mode 100644
index 0000000000..3611adf1f6
--- /dev/null
+++ b/collections/_article/80-funded-celebrating-patreon-rewards-upgrade.md
@@ -0,0 +1,67 @@
+---
+title: "80% funded! Celebrating with a Patreon rewards upgrade"
+excerpt: "The first two weeks of our new Patreon campaign have been astounding, with more than $2,400/month pledged by the community to enable us to hire Juan full-time to work on Godot's development. We are 80% of the way up to that goal, and with your help to spread the news we might be able to reach our target $3,000 within a few days!
+To celebrate this huge progress, we upgraded our Patreon rewards to make them more accessible. We also took this opportunity to satisfy some legal requirements of being a non-profit charity, ensuring that no reward could be interpreted as a taxable business income."
+categories: ["news"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/59a/1fe/5c5/59a1fe5c53457648503006.jpg
+date: 2017-08-26 23:20:19
+---
+
+## Astounding and invigorating
+
+I have to admit, the financial support that we got over the last two weeks has been astounding and reached far beyond my expectations for the launch of [our Patreon campaign](https://www.patreon.com/godotengine).
+When we started working on the Patreon page with Juan, we expected that it would take a few months and the publication of Godot 3.0 to bring us near to our $3,000 monthly goal which could secure us Juan's full-time dedication to the project.
+
+And here we are, two weeks in and already 80% funded, with barely $600 missing to reach our main goal - and it keeps growing [slowly but steadily](https://graphtreon.com/creator/godotengine), with a daily influx of new donors.
+We want to thank you all for your incredible support! Whether you [contribute to the engine's development](http://docs.godotengine.org/en/latest/community/contributing/ways_to_contribute.html) via code, bug reports, testing, teaching, developing awesome games or donating to the project, you all participate in making Godot!
+
+And this is also very invigorating. We are a non-profit project, dedicated to making the best free and open source game engine not for our own sake, but for anyone wanting to develop games.
+Seeing that we are able to crowdfund the development of our engine proves us the worth of our voluntary work as free software contributors, and that we are creating something really unique with Godot.
+
+Since I started following Godot's development in late 2014, and got involved as a contributor mid 2015, I could observe the growth of our community of users and [contributors](https://github.com/godotengine/godot/graphs/contributors), and I'm happy to say that we are still growing at an overwhelming pace! August 2017 is not finished yet, and still it's already our all time high both for the number of newly opened issues (following the [release of 3.0-alpha1 last month](/article/dev-snapshot-godot-3-0-alpha-1)) and pull requests!
+
+
+*
Growth of monthly contributions since Godot went public. Source: [GitHub](https://github.com/godotengine/godot)
*
+
+The least I can say is that we are living in interesting times! To see so many contributors gravitating around our humble piece of free software makes me very confident that Godot 3.0+ will impose itself as a major game development tool for big studios and indies alike.
+
+Now, now, that's enough self-gratification for a day, let's go back to our other topic: the Patreon rewards.
+
+## Upgrade and clarification of the Patreon rewards
+
+First off, for those who missed it until now: we are [running a Patreon campaign](https://www.patreon.com/godotengine) with a main goal to hire our lead developer, Juan Linietsky, so that he can work full-time on the engine. Patreon is a platform for "creators" to be funded directly by their fans, often in the exchange of rewards related to the creator's expertise. As an incentive for our community members to donate to the project, we thought of various perks that could be proposed for successive tiers, and many of you already pledged at the various levels.
+
+There are several important points to note regarding those rewards:
+
+- The main reward for everyone, whether they donate or not, is Godot Engine's steadier development. Being able to hire Juan full-time means that the engine gets better faster for everyone.
+- As a non-profit project supported by a US-based charity ([Software Freedom Conservancy](https://sfconservancy.org)), there are restrictions on the kind of services or products that we can monetize. As such, in order for all pledges to fully qualify as donations and not as taxable business income, we need to make sure that the rewards we offer have no or little [fair market value](https://en.wikipedia.org/wiki/Fair_market_value).
+- Anything that we grant to patrons should benefit the project as a whole, and eventually be accessible to everyone.
+
+As such, after reviewing the language of all proposed rewards with our Conservancy lawyer Tony, we decided to reword some of them for clarity (and to comply with the law regarding to charities in the US) and make sure that they can't be interpreted as e.g. work-for-hire. We also took this opportunity to **upgrade all rewards above $14 to their upper tier**. In other words, we reduce the minimal pledge amount for each tier.
+
+Which means for example that if you had previously pledged $14 for the "Generous Thank You" level, you will now also be able to vote on the monthly tutorial and demo that we will produce for everyone (which was previously for $18+ patrons).
+Similarly, if you had pledged $18 to vote on tutorials and demos, you will now also be invited to participate in the monthly video Q&A with the developers. And so on and so forth; the $5 and $10 rewards stay the same.
+
+You can check the details for each reward on the [Patreon page](https://www.patreon.com/godotengine). Here's a matrix giving an overview on the rewards they give access to:
+
+
+*
Overview of the rewards for each Patreon pledge tier
*
+
+Apart from the tier level changes, those rewards were rephrased to make their scope more explicit:
+
+- *Vote for tutorials and demos*: Each month, the whole community will be able to propose ideas of tutorials and demos. The developers will make a pre-selection of what is doable and interesting, and will submit it to the vote of the $14+ patrons. The selected tutorial and demo will be produced during the month and shared with the whole community.
+- *Live Q&A video*: Each month, pledgers at this level or upper will be able to ask questions to the devs in written form. Those will be used to prepare a live video Q&A where these questions will be answered. During the live, the patrons will also be able to ask further questions via the video chat. After the live, the video Q&A will be made available to the whole community. Note that this reward used to give three vote points for tutorials and demos, but it was reduced to two to be better balanced.
+- *Vote on the roadmap*: Each month, the whole community will be able to propose features to put on the month's roadmap. Live for tutorials and demos, the developers will make a pre-selection of what fits the interest of the project, and the patrons at the $26 tier or beyond will be able to vote for one of them, which should be implemented in the master branch during the month.
+
+So as you can see, nothing earth-shattering in our rewards - as mentioned above, the main perk that we [offer to everyone](/download) is the free and open source Godot Engine, and the Patreon rewards were designed to be positive additions for the whole community (new tutorials and demos every month, video Q&A, more transparency regarding the roadmap and a way to get suggestions reviewed). If you feel that some of the changes we made are not appropriate, please [get in touch with us](/contact) to discuss it.
+
+## What about direct donations?
+
+Several users asked us if they could continue donating directly to our Conservancy account via PayPal, instead of using Patreon. This is of course possible, and you can do so from the [donate page](/donate) using the PayPal button. The donations that we get via this channel will be used as we did up to now, to cover project-related travel expanses, marketing material for events and specific hardware when necessary.
+
+In the near future, we will add a way for you to donate via PayPal for our "hiring Juan and further devs" campaign, i.e. we will sum the Patreon and PayPal pledges to see how much funds we have each month to hire developers. We will post about it as soon as this is in place.
+
+-----
+
+*The awesome unrelated header of this blog post is a Godot 3.0 render of a scene by [fracteed](https://twitter.com/fracteed/status/901366615555547136), one of our excellent PBR artists!*
\ No newline at end of file
diff --git a/collections/_article/abandoning-gles3-vulkan-and-gles2.md b/collections/_article/abandoning-gles3-vulkan-and-gles2.md
new file mode 100644
index 0000000000..385ae77dfe
--- /dev/null
+++ b/collections/_article/abandoning-gles3-vulkan-and-gles2.md
@@ -0,0 +1,89 @@
+---
+title: "Moving to Vulkan (and ES 2.0) instead of OpenGL ES 3.0"
+excerpt: "The rationale for the OpenGL ES 3 renderer was having a single codebase for targeting all platforms. This sounds really good in theory and we could say it *almost* works, but..."
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5a9/681/3c1/5a96813c154bd636778829.svg
+date: 2018-02-26 00:00:00
+---
+
+*Edit:* Changed post title for clarity (previously *Abandoning OpenGL ES 3.0 for Vulkan (and ES 2.0)*). We are not abandoning the current OpenGL ES 3.0 backend *right now*: as outlined in the post, we will start working on a Vulkan backend, which will eventually coexist with the OpenGL ES 2.0 and 3.0 backends - and eventually we might deprecate the OpenGL ES 3.0 backend if Vulkan cuts it.
+
+*Edit 2:* **This article is now outdated.** See [About Godot 4, Vulkan, GLES3 and GLES2](https://godotengine.org/article/about-godot4-vulkan-gles3-and-gles2) for up-to-date information about the planned rendering backends transition.
+
+-----
+
+## The rationale behind OpenGL ES 3.0
+
+The rationale for the OpenGL ES 3 renderer was having a single codebase for targeting all platforms:
+
+* Desktop Linux, Windows, macOS
+* Android, iOS
+* WebGL 2.0
+
+This sounds really good in theory and we could say it *almost* works. Single codebase for everything is like a dream come true for writing an engine. OpenGL ES 3 provided sufficient functionality to implement most modern rendering features and have something that looks really good (as you can see in all the images and videos we posted).
+
+Yet, in reality, many things did not go as expected.
+
+## Poor mobile support
+
+OpenGL ES 3.0 works, nowadays, in all versions of iOS. On Android, it is supported in [most of the mobile devices](https://developer.android.com/about/dashboards/index.html) in the market. Still, there seems to be a large chunk of them (36% at the time of this writing) that only support OpenGL ES 2.0. This segment is not decreasing fast enough and it seems it will be many years until all devices are fully 3.0 compliant.
+
+Added to that is the terrible driver support for OpenGL ES 3.0 on Android. Most drivers are outright full of bugs, which translates directly to crashes that don't make any sense. Save for Tegra, all other platforms (Adreno, Mali and PowerVR) are buggy and this prevented implementing many potential optimizations for the sake of stability.
+
+This led us to the conclusion that we will need to ship an OpenGL ES 2.0 driver that works in the same way as Godot 2.x (though, including PBR support) in order to achieve maximum compatibility.
+
+This means we have lost a third of the reasons to use OpenGL ES 3.0. Fortunately, Godot 3.1 will come with a new OpenGL ES 2.0 backend that will make Godot work great on mobile again.
+
+## Poor WebGL 2.0 adoption and performance
+
+While WebGL 2 works on Firefox and Chrome (and even runs great on Android mobile), it [still does not](https://caniuse.com/#feat=webgl2) on the other platforms.
+
+Added to that, Godot 3.0 uses quite complex shaders which, while they work fine on WebGL 2, take a long time to compile on Windows due to the Angle GLSL validation and compilation to HLSL.
+
+It seems that for nicer performance and compatibility, we will be forced to use WebGL 1.0 for the time being (based on the upcoming OpenGL ES 2.0 backend).
+
+## Corner cases on NVidia and AMD
+
+While the Godot 3.0 renderer works great for the most part on NVidia and AMD, there are some corner cases (which are pretty difficult to come by) where the OpenGL 3.3 drivers are not optimized as we would like.
+
+These cases are easy to workaround if they ever happen, as they have been the same sort of limitations OpenGL always had (state validation before drawing can take some time).
+
+Still many new users may not be aware of this and do things in less efficient ways, yet expect them to work.. as they do in engines that use Direct3D 12. Again, this is easy to workaround using batching or instancing and does not happen often, but it's one more step.
+
+## Performance on Intel GPUs
+
+Intel GPUs on Windows and macOS have pretty unoptimized OpenGL drivers. The same hardware running Linux has considerably better performance. While the performance hit is not really that bad (you can't expect much from this type of hardware), it's enough that compared to other engines (which may use Direct3D and Metal) Godot may seem a bit slower (e.g. 45 FPS where you would expect 60 if you have an Intel HD 5000).
+
+## Vulkan as an alternative
+
+While none of the problems on the desktop side are serious (users have so far mostly reported performance problems on old Intel IGPs, or extreme corner cases), Vulkan was always a tempting alternative to solve them and to ensure we are much safer from driver bugs (after all, this is what the API was intended for). Still, the lack of support on macOS made it unappealing. Having to write a Metal backend to support this OS is a lot of effort for a platform not used very much.
+
+Khronos announced many months ago the [Vulkan Portability Initiative](https://www.khronos.org/vulkan/portability-initiative), which we found really interesting but was far from being functional. As we mentioned many times in online discussions, moving to it eventually would be ideal.
+
+## MoltenVK goes open source
+
+However, today, in a completely unexpected turn of events, it seems Valve has found an arrangement with the developers of MoltenVK (the commercial and proprietary Vulkan over Metal wrapper), ported Dota 2 to it, and [got it open sourced](https://www.anandtech.com/show/12465/khronos-group-extends-vulkan-portability-with-opensource).
+
+It seems to be a mostly complete Vulkan implementation that runs on macOS and iOS. This pretty much lifts the only barrier we had for moving Godot to it.
+
+## Roadmap changes
+
+As it seems clear that we will be moving to Vulkan on desktop and OpenGL ES 2.0 on mobile and web, further work on the current OpenGL ES 3.0 rendering backend is pointless as it will be rewritten.
+
+For now, we will keep focus on releasing Godot 3.1 with the following main features:
+
+* OpenGL ES 2.0 support
+* Proper Mono export support
+* Support for 2D meshes, 2D skeletons, and deformable polygons
+* New animation tree, with state machine and root motion support
+* Blender to Godot exporter that keeps Cycles/Eevee materials (tentatively)
+* Features voted in Patreon that do not involve changing 3D rendering
+
+Then afterwards, the rewrite of the rendering backend to use Vulkan will begin. It should not take too long (estimating a couple of months, since there's nothing really new to design), and a new version will be released with this backend (among other features that contributors will keep working on).
+
+For a while, we will then offer three backends to choose from: OpenGL ES 2.0, OpenGL ES 3.0, and Vulkan (the default, when ready). Once the Vulkan backend is well tested and proven to fulfill everything we need it to, the OpenGL ES 3.0 backend might be deprecated and replaced.
+
+This will delay a bit the implementation of new features on the 3D side, but we believe it will be very worth it on the long term. Thanks for the patience!
+
+It is important to note that for games being currently developed with Godot 3.0, **there will not be any compatibility breakage** when moving to Vulkan. This is an internal renderer change, and the exposed APIs and formats will remain the same.
\ No newline at end of file
diff --git a/collections/_article/about-godot4-vulkan-gles3-and-gles2.md b/collections/_article/about-godot4-vulkan-gles3-and-gles2.md
new file mode 100644
index 0000000000..326a0046c4
--- /dev/null
+++ b/collections/_article/about-godot4-vulkan-gles3-and-gles2.md
@@ -0,0 +1,74 @@
+---
+title: "About Godot 4, Vulkan, GLES3 and GLES2"
+excerpt: "As the alpha of Godot 4.0 comes closer and closer, we wanted to spend some words to clarify the direction that Godot 4 has taken in regard of rendering back-ends."
+categories: ["news"]
+author: Ilaria Cislaghi
+image: /storage/app/uploads/public/60f/438/4ca/60f4384ca5805220006247.png
+date: 2021-07-18 00:00:00
+---
+
+Hello fellow developers!
+
+As the alpha of Godot 4.0 comes closer and closer, we wanted to spend some words to clarify the direction that Godot 4 has taken in regard of rendering back-ends.
+
+# Will Godot 4.0 support OpenGL/OpenGL ES?
+
+OpenGL will most likely not be supported at the time Godot 4.0 is out. The renderer design and all resulting code had to be re-implemented entirely from scratch in order to support Vulkan and modern rendering techniques. This took an enormous amount of work (more than two years, close to three at the time of release).
+
+**OpenGL support will definitely be implemented by the time 4.1 is out**, hopefully some months later. One of our main goals for the 4.x releases it to provide them in a timely manner, so you will not have to wait a whole year for it. That said, given 4.0 has so much new code (the engine was rewritten significantly), it will also require a large amount of time dedicated to bug-fixing and stabilization even after stable.
+
+# What version of OpenGL will Godot support?
+
+In the beginning, we wanted to support [Vulkan alongside GLES2](https://godotengine.org/article/abandoning-gles3-vulkan-and-gles2), which is why in the project manager you can see a disabled option for GLES2.
+
+
+
+As more work was poured into the Vulkan back-end, it became clearer and clearer that supporting GLES2 is not an option anymore. There are several reasons for this:
+
+* On *Desktop*, hardware that does not support GLES3 (or GLES3 via Angle, which is what Chrome uses to display WebGL) is extremely old. Mid 2000s. This hardware does not posses enough video memory to run a modern game engine, anyway.
+* On *Mobile*, the story is different but, as mobile phones keep coming out and old ones no longer work due to dead batteries/slowness/etc, GLES2-only devices are becoming [very scarce](https://developer.android.com/about/dashboards#OpenGL) (Only 10% at the time of this writing and less by the time Godot 4.0 launches).
+* On *Web*, GLES3 (WebGL2) suport is not present on Safari at this time (and support for it was uncertain for a long time), but it's now finally in Technology Preview stage, which means it will be out and supported soon.
+
+In other words, when work begun on Vulkan for Godot, GLES3 support was not widespread or certain, but that is no longer the case.
+
+**Because of this, Godot 4.x will focus on both Vulkan and OpenGL ES 3.0.**
+
+# Wait, but isn't GLES3 too demanding? GLES2 is faster in Godot 3.x
+
+OpenGL ES 3.0 is a superset of 2.0. This means that the same things are supported and more features are added in. Many of these added features allow for better optimization so, in practice, performance in itself should be better.
+
+The reason this is not the case in Godot 3.x is because *performance* per se is not a linear metric. On the surface it should be obvious that, the more features and toggles you add, this has a performance cost. This is not the only factor, though.
+
+Reality is that performance is better measured in *base cost* and *ability to scale*. The GLES2 renderer in Godot 3.x has a much lower base cost than the GLES3 one. If you use only a few lights and reflection probes, it will be much faster. It's also designed to run efficiently on old hardware. If you start adding lights, reflection probes, etc. at some point it will become slower than the GLES3 back-end. It also lacks support for the more advanced features such as Global Illumination.
+
+To put it simply: In Godot 3.x the GLES2 renderer is designed for older hardware and it will perform better than the GLES3 renderer for relatively simple scenes, but it just does not scale for more complex/high end scenes.
+
+The GLES3 implementation in Godot 4.1 will be a hybrid. It will have a design more similar to the GLES2 renderer in Godot 3.x (so it will achieve better performance in old devices), but it will still take advantage of the added features to scale better for more complex scenes. Some more advanced features such as decals or Real-Time GI, present on the Vulkan renderer, will not be supported, though.
+
+Still, if you are making a high-end mobile game, keep in mind that we will support a mobile optimized version of the Vulkan renderer. Vulkan runs on all high end phones that were shipped in the past several years.
+
+# What if I can't run GLES3 or Vulkan?
+
+Technically, for the editor, all hardware from the past decade supports either GLES3 and Vulkan. The main problem is that some of it (older Intel IGP) does not support OpenGL 3.x on Windows (though it does on Linux). Because of this, we are considering shipping the Windows version of Godot editor running on top of ANGLE (the same wrapper Google uses to run WebGL on Chrome). So, if you can run WebGL2 in your browser, you will be able to run Godot.
+
+On MacOS, as OpenGL is being deprecated, we will also supply builds based on ANGLE (over Metal this time) so the editor and exported games using GLES3 continues to run.
+
+# So, GLES2 support is effectively dead in Godot?
+
+Not necessarily. It will be kept alive in two ways:
+
+* Godot 3.x will be maintained for a long time so, if you require GLES2 you can use this version.
+* Godot 4.x may support GLES2, but not necessarily out of the box. Some contributors want to work on it, so we may still add limited support for those who need it (may be switched off by default, though to save binary space). Keep in mind this will most likely be focused on 2D and may only support rather simple 3D.
+
+# Being a part of Godot 4
+
+Once again, Godot could not be where it is without all the wonderful people that participate to the development of Godot by financially supporting the engine, by dedicating time to fixing bugs and implementing features, by creating awesome demos, by opening issues, by contributing to the documentation and by participating in the Godot communities.
+
+To all of you, thank you from the bottom of our hearts. You are the fuel of this project and there aren't words to express how much that means to Godot.
+
+If you want to help Godot 4 shine, you can join the [contributor chat platform](https://chat.godotengine.org/channel/demo-content), where a number of people are working to make visually impressive demos for Godot 4.
+
+Another important way to support Godot 4, other than [donating](https://godotengine.org/donate), is to try out the alpha builds as soon as they are out and report all the issues that you encounter.
+The more bugs are found during the alpha and beta stage, the better the release will be.
+
+Thank you for being here, and happy development!
\ No newline at end of file
diff --git a/collections/_article/agile-input-processing-is-here-for-smoother-gameplay.md b/collections/_article/agile-input-processing-is-here-for-smoother-gameplay.md
new file mode 100644
index 0000000000..a1d5b6276b
--- /dev/null
+++ b/collections/_article/agile-input-processing-is-here-for-smoother-gameplay.md
@@ -0,0 +1,39 @@
+---
+title: "Agile input processing is here for smoother, more responsive gameplay"
+excerpt: ""
+categories: ["progress-report"]
+author: Pedro J. Estébanez
+image: /storage/app/uploads/public/612/136/3cc/6121363ccb95e735957693.png
+date: 2021-08-21 17:00:00
+---
+
+Since it's not very usual I post here, let me remind you who I am. I'm Pedro, a.k.a. [RandomShaper](https://twitter.com/RandomPedroJ) in the Godot community. I've been contributing to the engine since 2016, when I discovered it –version 2.1 was the newest– and decided to use it to create my game [Hellrule](http://pedrocorp.net/#hellrule). Precisely while testing this project on different models of Android phones, I found the need to make the improvements I'm explaining in this post.
+
+### Old behavior in Godot 3.3.x and before
+
+In a game engine, the *engine loop* is the sequence of steps that is happening again and again to let the game run. This includes rendering, physics, input processing, and more. Optimizing this loop to run with as little CPU time as possible is important to have smooth gameplay on high-end and low-end hardware alike.
+
+Godot's engine loop used to look like this (this is heavily simplified to just show what we are talking about here):
+
+
+
+The key element of this is the possibility of multiple physics steps being processed per cycle of the engine loop. Consider a game that wants its gameplay logic and physics to run at 60 FPS. To achieve this, the engine needs to poll for the player's inputs from various sources, such as a mouse, keyboard, gamepad or touchscreen. Ideally, the engine would read the player's inputs once per each of those gameplay-physics steps so it reacts as quickly as possible to player actions. Also, rendering would happen at that very same pace, so everything stays in sync.
+
+However, depending on the demands of the game and the hardware it's running on at a given time, that may not be possible. If the device running the game is not powerful enough to keep everything at 60 FPS, the engine will run at a lower effective FPS rate. Rendering and idle processing will then occur less than 60 times per second, but the engine will do its best to have the gameplay-physics running at the target rate, by executing more than one of those physics steps per visible frame.
+
+If you look again at the game loop above, you'll understand that a consequence of the engine looping at a lower frequency is that, user input is also pumped and handled less frequently, which leads to having a **lower responsiveness** in addition to a less smooth update of the display.
+
+#### New behavior in Godot 3.4 beta and later
+
+In order to avoid that, Godot needed to somehow **uncouple input from render** so the engine main loop looked more like this:
+
+
+
+To make that happen, I've added the concept of **input buffering**, which allows that one thread –usually the one consuming events from the OS– stores the input events from the player in a buffer as they are received while the main thread of the engine **flushes them at key points of the cycle**. This new approach improves the responsiveness of the game in situations of lower-than-ideal FPS.
+
+### Remarks
+
+- This enhancement is implemented in two pieces. One belongs to the core of the engine, whereas the other must be implemented on each platform. At this point, only Android has the platform-specific part implemented. (To be honest, that's most likely the platform where agile input flushing is needed the most, due to the huge range of hardware capabilities found across devices.)
+- However, the doors are open wide for it to be implemented for other platform given the base is already done.
+- **Both Godot 3.4 and 4.0** will enjoy agile input, exposed as the `input_devices/buffering/agile_event_flushing` project setting.
+- The project setting mentioned above is **disabled by default**. The rationale is that not every project may want to have batches of input events coming multiple times per frame. Also, until this feature is implemented universally, enabling it causes differences of behavior across platforms. Nonetheless, elaborating on the latter, my game has been in the wild for months with agile input flushing on Android and without it on iOS with no issues. As long as you make your game physics-centric, whether agile input is enabled or not won't have any side effects. The game will just be more responsive when it's enabled and available, but it will keep working without agile input.
\ No newline at end of file
diff --git a/collections/_article/animation-data-redesign-40.md b/collections/_article/animation-data-redesign-40.md
new file mode 100644
index 0000000000..737dc07ec7
--- /dev/null
+++ b/collections/_article/animation-data-redesign-40.md
@@ -0,0 +1,85 @@
+---
+title: "Animation data rework for 4.0"
+excerpt: "One of the last areas pending for redesign in upcoming Godot 4.0 has now been completed, resulting in much improved usability when dealing animation data."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/618/06c/42a/61806c42af0f7814469862.png
+date: 2021-11-01 00:00:00
+---
+
+One of the last areas pending for redesign in upcoming Godot 4.0 has now been completed, resulting in much improved usability when dealing animation data.
+
+## Animation data
+
+While there are upcoming improvements on the general animation system, one key aspect that required a strong redesign and subsequent rework in Godot is the way that animation data is stored.
+
+Animation data is the information that comes from scenes that have been exported from Blender, Maya, 3DS Max, etc. In those applications, animation is edited as Bezier curves and many times happens naturally as a result of modifiers such as IK (Inverse Kinematics).
+
+In game engines (or even when exported from the 3D modelling application), animation data is *baked* to a simpler representation because, for games, processing beziers and IKs is way too expensive for real-time. Games need to process dozens or hundreds of models in real-time, so data must be available in a format that can be more efficiently decoded.
+
+Just decoding the animation, however, is not enough. Games will often have several requirements that must be satisfied regarding the imported animations, such as:
+
+* Ability to **attach and remove different meshes** to be deformed by the same skeleton. This is key to having character customization or equippable items.
+* Ability to **reuse the same animation across different character models**, even if the models are slightly different (taller, shorter, etc).
+* Ability to **play very long animations**, which is common in cut-scenes. Animations can be so long that they may need to be streamed from disk.
+* Ability to **play back individual channels** (position, rotation, scale) to allow controlling the others procedurally (common for IK, character customization, etc).
+* Work with **as many files as you can find** on the internet. Not everybody can create their own animators or has the budget to hire 3D animators.
+
+Many of those items were not working correctly in Godot for several years. Workarounds were designed but they were all ultimately hacks. After the latest meetings with animation contributors, it was clear that the animation data subsystem had to be redone almost from scratch.
+
+As a result, several steps and improvements were made:
+
+## Removed the *transform* tracks
+
+Godot would originally import animation tracks by combining Position/Rotation/Scale into a single *transform* keyframe. Because animations were just matrices relative to the skeleton rest, this allowed limited sharing between different models but failed in more complex cases. Additionally, it proved to be a problem when animations contained non-uniform scaling in tracks because the animations (relative to the bone rests) would create skewing, which could not be represented properly in keyframes.
+
+To fix this, the *transform* tracks were [entirely removed](https://github.com/godotengine/godot/pull/53689). In their place, individual *Position*, *Rotation* and *Scale* tracks are now created and imported. This allows for importing only what animations require.
+
+
+
+
+
+
+Additionally, a special *Blend Shape track* [was added](https://github.com/godotengine/godot/pull/53865), which allows processing blend shape animations more efficiently.
+
+## Removed the animation dependency on *bone rests*
+
+Thanks to the previous step (individual tracks), it was now possible to change how animations fundamentally work in Godot. By entirely removing the dependency on bone rests for animation, skeletons now contain a final pose for each bone and that's it. Likewise, bone poses are now Pos/Rot/Scale and can be animated manually. A transform matrix is no longer used.
+
+Removing this has the following immediate effects:
+
+* Massive **improvement in compatibility with 3D applications** and models. As Maya and 3DS Max don't have the concept of "rests" (unlike Blender which does), many models exported from those softwares would just not work in Godot. They now do.
+* Improvement in **compatibility with non-uniform scaling**. By removing the rest dependency, all animations using non-uniform scaling will now work.
+* Improvement in **ease of animation reuse**. By simply importing a rotation track, animations can be re-used across different models with similar skeletons. Even with different bone sizes.
+* Generating p**rocedural animation is now much easier**, as every track can be generated independently.
+
+## Implemented animation compression
+
+A common problem of dealing with animations in Godot is that **animations are stored uncompressed**. This means that animation data can take a large amount of memory and disk, specially animation that comes from mocap or animation used for cinematics.
+
+Several approaches were investigated including curve-fitting techniques but, in the end, **a bitwidth and page based approach was implemented**. This creates animations 5 to 10 times smaller and stores them in a format that is very friendly for streaming (a feature that may be implemented in future versions of the engine).
+
+## Improved how rotations are exposed to the user for animation
+
+For animators, creating animations directly in Godot was always relatively limiting. While the animation system is powerful, the 3D part of it lacked several basic features that standard animation packages offer.
+
+The more important one is the ability to choose the rotation order for Euler rotations. Godot uses YXZ Euler rotation order, but changing this was never possible.
+
+
+
+
+
+With [this change](https://github.com/godotengine/godot/pull/54084), it will now be possible to specify rotation order, as well as doing quaternion rotation interpolation to avoid *Gimbal Lock*.
+
+## Expression based transitions for Animation State Machines
+
+For AnimationTree the only way to advance states in the AnimationStateMachine was by setting a boolean property. Users have asked for a long time for the possibility to use some more advanced form of conditions for this, to control the states.
+
+To allow this, *expressions* [were introduced](https://github.com/godotengine/godot/pull/54327) as an optional way to trigger the transitions. They require a base node to work with and a valid logic that uses the properties exposed by that node.
+
+
+
+
+## Future
+
+This was a last minute unexpected change because it required large compatibility breaking, and I want to hugely thank the animation contributors: Fire, Tokage, Lyuma and Saracen. Godot 4.0 alpha is around the corner now (we have been pushing pre-alpha builds recently), so looking forward to a release soon! There will be many new and exciting changes in animation after 4.0 is out, but for now the priority is to stabilize the engine.
\ No newline at end of file
diff --git a/collections/_article/animation-retargeting-in-godot-4-0.md b/collections/_article/animation-retargeting-in-godot-4-0.md
new file mode 100644
index 0000000000..6acdfc1545
--- /dev/null
+++ b/collections/_article/animation-retargeting-in-godot-4-0.md
@@ -0,0 +1,82 @@
+---
+title: "Animation Retargeting in Godot 4.0"
+excerpt: "Godot 4.0 comes with an animation retargeting system to allow for easy sharing of animations between similar models."
+categories: ["progress-report"]
+author: Silc Renew
+image: /storage/app/uploads/public/636/2a3/36e/6362a336e23be482773873.png
+date: 2022-11-07 17:52:41
+---
+
+This post will talk about animation retargeting, a new feature coming in Godot 4.0. It has already been merged, so anything you read in this post can be done in the current beta version (beta 3).
+
+Recently, a lot of attention has been paid to the 3D features of Godot 4 that have been improved such as rendering, physics, etc. To make those improvements widely known, we should make it easier to create 3D games with Godot so that more people will be able to use them.
+
+## My background
+
+Hi, my name is Silc 'Tokage' Renew ([TokageItLab](https://github.com/TokageItLab)). I am so honored to write this blog post as a member of Godot's animation team.
+
+
+
+I have been using Godot since Godot 3, and I really wanted to make a 3D game with my body, but as soon as I started using Godot 3, I encountered blockers in the core specification and unfortunately, I had to stop the development of my project.
+
+However, I believe that most of those blockers have already been removed in Godot 4 by the growth I've seen in Godot recently.
+
+## What is "Animation Retargeting"?
+
+If you have tried to use character models and animations downloaded from the asset store with Godot 3, I assume that you found sharing animation among those models challenging.
+
+Godot has a simple animation system. If you know a little about that, you might expect that if you match node and bone names, the animation will be applied correctly, but the reality is cruel. In most cases, your bones will be terribly fractured by the animation.
+
+
+
+Bones have a Transform that indicates their position and orientation in 3D space. A Bone's Transform with no pose applied exists in Godot as "Bone Rest", and in Blender as "Edit Bone Orientation" determined from Head and Tail coordinates and Roll value.
+
+[Godot 3 and Godot 4 have different bone animation systems](https://godotengine.org/article/animation-data-redesign-40), but in any case, animations cannot be easily shared between models with different bone rests, even if the silhouettes are the same.
+
+Simply said, "Retargeting" is the workflow to apply animations between different models, but it is composed of many processes internally.
+
+The retargeting system added in Godot 4.0 includes a preset for humanoid models called SkeletonProfileHumanoid that allows for shared animation of common T and A-pose models with lesser effort.
+
+Let me show you how to use it briefly.
+
+## Try animation retargeting
+
+### 1. Setup target model
+
+First, you import the model you actually want to place in the scene with the import option "As Scene", then open the scene importer and assign a BoneMap and a SkeletonProfileHumanoid. If the bones include an English common name (e.g. hips, shoulder, arm, leg, foot…), auto-mapping will be performed.
+
+
+
+### 2. Setup source animation model
+
+Next, you import the model having the animation you want to use with the import option "As AnimationLibrary", then in the same way you open the scene importer and set the BoneMap and SkeletonProfileHumanoid.
+
+
+
+### 3. Setup scene
+
+After that, you can add an AnimationPlayer to the scene and load and playback animations from the AnimationLibrary.
+
+
+
+In some cases, you may need additional configuration. [Godot docs describes each retargeting option in more detail](https://docs.godotengine.org/en/latest/tutorials/assets_pipeline/retargeting_3d_skeletons.html), so I hope that will be helpful.
+
+## Time to make some 3D games with Godot 4!
+
+Godot 4's animation features have been improved as well as retargeting. Skeleton bones can now be manipulated directly in the viewport ([GH-45699](https://github.com/godotengine/godot/pull/45699)), and broken blend animations have been fixed ([GH-57675](https://github.com/godotengine/godot/pull/57675)).
+
+To be honest, the retargeting feature is not a blocker for creating 3D games. Anyone familiar with 3D character animation workflow can do it outside of Godot. However, the implementation of retargeting makes it easier and keeps more of your workflow contained inside Godot.
+
+There is still a lot to improve, and with more people diving into 3D development, there will be more demand to improve this aspect of the engine. I hope to see games taking advantage of this and all the other new features that Godot 4 brings.
+
+Thank you for reading <3
\ No newline at end of file
diff --git a/collections/_article/announcing-2020-showreel.md b/collections/_article/announcing-2020-showreel.md
new file mode 100644
index 0000000000..cb8ab03a49
--- /dev/null
+++ b/collections/_article/announcing-2020-showreel.md
@@ -0,0 +1,23 @@
+---
+title: "Announcing the 2020 showreel!"
+excerpt: "The showreel for 2020 is up! As every year, more and more quality submissions fall in our hands, making the selection job very difficult. This year was not the exception, and it was even more difficult as wehad had record submission amount (over 200) so, this time, several core contributors took the work of ranking and voting them to decide which would make up the final reel."
+categories: ["showcase"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5ea/435/3b5/5ea4353b508ad758750279.png
+date: 2020-04-25 00:00:00
+---
+
+The showreel for 2020 is up! As every year, more and more quality submissions fall in our hands, making the selection job very difficult. This year was not the exception, as we had had a record submission amount (over 200) so, this time, several core contributors had to take the work of ranking and voting them to decide which would make up the final reel.
+
+
+## Desktop / Console showreel
+
+
+
+## Mobile showreel
+
+
+
+## Thanks
+
+Thanks to everyone for submitting videos, Hugo Locurcio for editing, and thanks to Christian Perucchi and Hubert Lamontagne for providing their music!
\ No newline at end of file
diff --git a/collections/_article/announcing-2021-godot-games-showreel.md b/collections/_article/announcing-2021-godot-games-showreel.md
new file mode 100644
index 0000000000..1ab2a3f1ab
--- /dev/null
+++ b/collections/_article/announcing-2021-godot-games-showreel.md
@@ -0,0 +1,26 @@
+---
+title: "Announcing the 2021 Godot games showreel!"
+excerpt: "The Godot games showreel videos for 2021 are up (desktop and mobile)!"
+categories: ["showcase"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/618/fef/05a/618fef05ae03d489116981.png
+image_caption_title: The Circle of Kerzoven
+image_caption_description: Desktop game by Marco Burri
+date: 2021-11-13 16:30:00
+---
+
+The Godot games showreel for 2021 is up! As every year, more and more quality submissions fall in our hands, making the selection job very difficult. This year was not an exception, as we had had a record submission amount (over 300). This time, several core contributors had to take the work of ranking them to decide which would make up the final reel.
+
+### Desktop / Console showreel
+
+
+
+### Mobile showreel
+
+
+
+### Thanks
+
+Thanks to everyone for submitting videos, Hugo Locurcio for editing, and thanks to Christian Perucchi for providing his music!
+
+Stay tuned for an upcoming showreel video featuring applications made with Godot :)
\ No newline at end of file
diff --git a/collections/_article/announcing-godot-2022-showreels.md b/collections/_article/announcing-godot-2022-showreels.md
new file mode 100644
index 0000000000..26c48305c6
--- /dev/null
+++ b/collections/_article/announcing-godot-2022-showreels.md
@@ -0,0 +1,34 @@
+---
+title: "Announcing the Godot 2022 showreels!"
+excerpt: "We bring you three brand-new videos showcasing what the Godot Engine can do: desktop/console games, mobile games, and tools!"
+categories: ["showcase"]
+author: Emi
+image: /storage/app/uploads/public/633/d85/6c0/633d856c08477650100797.png
+date: 2022-10-06 15:17:15
+---
+
+We bring you three brand-new videos showcasing what the Godot Engine can do. As always we have separate videos for games targeting desktop/console and games targeting mobile devices. This year we are proud to introduce a new category called "Apps & Tools" to highlight non-game creations made with Godot. This is a field that has been growing a lot, so we wanted to shine a light on the great projects released or under development.
+
+Many of our core contributors and maintainers voted to make the final list in each category, and this year was particularly hard. There were way too many good projects, and we couldn't include them all to keep the videos at a reasonable length and pace – but don't be discouraged if your entry didn't make it, we’ll have more opportunities to showcase great projects, including next year’s showreels.
+
+## [Desktop/Console showreel](https://www.youtube.com/watch?v=UAS_pUTFA7o)
+
+
+
+Edited by Emi. Music track: [Race The Sun - Scott Buckley](https://www.scottbuckley.com.au/library/race-the-sun/) (CC-BY 4.0).
+
+## [Mobile showreel](https://www.youtube.com/watch?v=xF3QiQfQxeQ)
+
+
+
+Edited by Brandon. Music track: [Melt - Broke For Free](https://brokeforfree.bandcamp.com/track/melt) (CC-BY 3.0).
+
+## [Apps & Tools showreel](https://www.youtube.com/watch?v=9kKp0oguzr8)
+
+
+
+Edited by Emi. Music track: [Tango - Octomuse](https://www.octomuseproduction.com/) (Used with permission).
+
+Check the description of the YouTube videos for details on all the showcased projects and links to their relevant pages.
+
+## Thank you!!
\ No newline at end of file
diff --git a/collections/_article/announcing-gogodotjam-2.md b/collections/_article/announcing-gogodotjam-2.md
new file mode 100644
index 0000000000..44552d1bf1
--- /dev/null
+++ b/collections/_article/announcing-gogodotjam-2.md
@@ -0,0 +1,26 @@
+---
+title: "Announcing GoGodotJam 2!"
+excerpt: "GoGodotJam is live again!"
+categories: ["events"]
+author: Ilaria Cislaghi
+image: /storage/app/uploads/public/618/3cb/37c/6183cb37cfc00462223157.png
+date: 2021-11-04 11:00:00
+---
+
+After five months from the [first GoGodotJam](https://godotengine.org/article/announcing-gogodotjam), the event is back!
+
+[**GoGodotJam**](https://gogodotjam.com/) is a month-long festival ending with a game jam. During the event, you can expect tutorials and interviews with Godot creators on a daily basis.
+This time, the event is also organizing a [fundraiser](https://gogodotjam.com/fundraiser/), in which 50% of the proceeds should be donated to Godot!
+
+The GoGodotJam started on the first of November and will continue through the month until December 5.
+In detail, these are the relevant dates:
+
+- 1st Nov – 5th Dec: Festival
+- 19th Nov – 30th Nov: Game Jam
+- 1st Dec – 4th Dec: Voting & Streaming
+- 5th Dec: Wrap-up
+
+You can also check out the [full schedule](https://gogodotjam.com/events/).
+
+We're always happy to see so many community initiatives around Godot and we can't wait to see all the fun games you'll make.
+Happy developing!
\ No newline at end of file
diff --git a/collections/_article/announcing-gogodotjam-3.md b/collections/_article/announcing-gogodotjam-3.md
new file mode 100644
index 0000000000..011e711368
--- /dev/null
+++ b/collections/_article/announcing-gogodotjam-3.md
@@ -0,0 +1,25 @@
+---
+title: "Announcing GoGodotJam 3!"
+excerpt: "Discover more about the upcoming event GoGodotJam!"
+categories: ["events"]
+author: Ilaria Cislaghi
+image: /storage/app/uploads/public/628/25d/c3d/62825dc3d87ab973806134.png
+date: 2022-05-16 14:00:00
+---
+
+It's time for 2022's first [GoGodotJam](https://gogodotjam.com/)!
+
+GoGodotJam is a Festival that celebrates Godot's Awesome Community. Join them in live events with tutorials, workshops, interviews and more - all culminating with a Game Jam.
+
+In this edition there will be not one, but two Game Jams:
+- [GoGodotJam CLASSIC](https://itch.io/jam/go-godot-jam-3) - for people that want to participate casually, with a timespan of 2 weekends and one week using the same recipe as the last 2 editions
+- [GoGodotJam ULTRA](https://gotm.io/jam/gogodotjam-ultra/1) - for people that want a challenge, like high-risk high-reward situations and, of course, big prizes: $240+ and counting
+
+Here is the full schedule:
+* Full event: 10th of May - 18th of June
+* Game Jam Classic: 27th of May - 6th of June
+* Game Jam ULTRA: 27th of May - 31th of May
+* Results ULTRA: 7th of Jun
+* Results Classic: 18th of Jun
+
+More information on GoGodotJam's [official website](https://gogodotjam.com/).
\ No newline at end of file
diff --git a/collections/_article/announcing-gogodotjam.md b/collections/_article/announcing-gogodotjam.md
new file mode 100644
index 0000000000..563aac5d37
--- /dev/null
+++ b/collections/_article/announcing-gogodotjam.md
@@ -0,0 +1,108 @@
+---
+title: "Announcing Go Godot Jam"
+excerpt: ""
+categories: ["events"]
+author: Ilaria Cislaghi
+image: /storage/app/uploads/public/609/ab0/e5d/609ab0e5d9b60364021896.png
+date: 2021-05-11 17:25:00
+---
+
+Meet Adrian, a game developer from Stockholm, Sweden. He co-organises [**Go Godot Jam**](https://gogodotjam.com/), a one-month long community festival with a game jam included. Adrian answered a few questions.
+
+### Who are you, Adrian?
+
+I am a game developer based in Stockholm, Sweden. While I am passionate about creating games, I also want to help the gamedev community grow. I have created a few gamedev teams, a club, and more recently, the [Redefine Gamedev](https://www.youtube.com/channel/UCtJgMUhrD8EgCILPeIWBHCA) YouTube channel. Here I want to grow together with other game developers by sharing quality content.
+
+### How did you find out about Godot?
+
+At work, I have developed games and other software by using proprietary engines only. But in my free time, I have always sought a breath of fresh air. That led me to experiment with free game engines: from Irrlicht to Esenthel to Godot.
+
+Upon closer inspection, I have found out that Godot is the perfect place for me to grow. So I began exploring it further, creating content for it, and helping others discover it as well.
+
+### What do you see in Godot?
+
+Godot is a great game engine that unlocks possibilities for game developers. It is a free, open-source 2D and 3D engine that provides many features so that you can focus on your game.
+
+Yet most people start developing games with proprietary engines such as Unity or Unreal. They are solid engines with a proven track record and a vibrant ecosystem. One advantage having experience with more than one engine can enable people to create better games. In the end, it's up to each individual to pick the one that they’ll be most comfortable with to fulfil their creative vision.
+
+I know that Godot has a lot to offer to new developers, with a distinctive approach to game development which enables more people to express their creativity. It's open, focused on user-friendliness, easy to learn, yet feature-packed and a great fit for many types of games. As such, I want to increase awareness of the engine so that more users decide to try it out and add it to their toolset.
+
+### How can we supercharge Godot?
+
+We, the community, are the fuel that can supercharge Godot. We can spread awareness, clarify misunderstandings, and in the end, show it to the world. At the same time, we can also carve a path for new people to get started on their gamedev journeys.
+
+One way to achieve this is to organise a Godot event that will ripple in the gamedev community, offering a lot of content for both existing Godot developer and new people that want to approach the engine but just don't know how to.
+
+### What is Go Godot Jam?
+
+With Go Godot Jam, we want to try a new format which complements existing Godot events.
+Go Godot Jam is a gamedev festival with a game jam included. It is the work of several content creators in the Godot community.
+
+Beginning May 6, Go Godot Jam has been hosting [online streams](https://gogodotjam.com/program/) that will be continuing until the start of the Jam!
+They include:
+
+- Showcases of the use-cases, workflows, and features of Godot
+- Comparisons of Godot with other game engines to debunk myths
+- Tutorials to help beginners get started with gamedev on Godot
+
+
+Then Go Godot Jam will have the game jam while the events continue. The game jam is open to everyone.
+
+**We will announce the themes of the Jam before the start.**
+
+The Jam leaves time to design, develop, and test a game with plenty of time to learn Godot too. But why wait until then? Head over to the Learning Resources on [gogodotjam.com/learn](https://gogodotjam.com/learn/) and start learning today!
+
+The Go Godot Jam timeline in a nutshell is:
+
+- May 6 - June 9 (the entire period):
+ - High-Quality Streaming
+- May 24 - June 2 (10 days):
+ - The Game Jam
+- June 3 - June 8 (6 days):
+ - Voting Period
+- June 9:
+ - Online Award Ceremony
+
+
+### How do I join?
+
+We prepared everything at [gogodotjam.com](https://gogodotjam.com). Here you will find:
+
+- The complete Go Godot Jam timeline with links to all content
+- Jam-specific information: rules, themes, submission, etc.
+- Learning resources from our partners and many more
+
+We only ask you to uphold the [rules](https://gogodotjam.com/contest/) of the Jam and the Godot's [code of conduct](https://godotengine.org/code-of-conduct).
+
+### Wait, is this for me?
+
+Yes. Go Godot Jam is open for anyone who wants to make games. You don't have to be a Godot Developer to enter the Jam! Whether you are starting or have developed games in other engines, we got you covered.
+
+### Who are the people behind the festival?
+
+Several active members of the community have partnered up to bring Go Godot Jam to life. The organisers are:
+
+- [bitbrain](https://bit.ly/3eabbDD)
+- [PlayWithFurcifer](https://bit.ly/3ud1A4t)
+- [Chevifier](https://bit.ly/3eMn4yH)
+- [CodingKaiju](https://bit.ly/2Rj49mR)
+- [Jade the Kobold](https://bit.ly/338cD2V)
+- [Canopy Games](https://bit.ly/2QDQJSP)
+- [PlugWorld](https://bit.ly/3eamFao)
+- [Tauheed Game Dev](https://bit.ly/3gUxDT6)
+- [Kekdot](https://bit.ly/3xGMh6c)
+- [ACB_Gamez](https://bit.ly/3u9tYVi)
+- [IRIS: A Colorful Dream](https://bit.ly/3vHXVMf)
+- [Redefine Gamedev](https://bit.ly/3u9m0eE)
+- [jmbiv](https://bit.ly/3tepsTV)
+- [John Ivess](https://bit.ly/3vXS2Lj)
+
+### Thank you for the interview, Adrian! Any words at the end?
+
+Thank you too!
+
+Go Godot Jam will be so much fun!
+
+I am really glad to take part of what has been a growing community of content creators and events organisers aroung Godot and I can't wait to see more of it!
+
+Join now at [gogodotjam.com](https://gogodotjam.com/learn/)
\ No newline at end of file
diff --git a/collections/_article/announcing-monthly-live-q.md b/collections/_article/announcing-monthly-live-q.md
new file mode 100644
index 0000000000..8daab60e33
--- /dev/null
+++ b/collections/_article/announcing-monthly-live-q.md
@@ -0,0 +1,24 @@
+---
+title: "Announcing the monthly Live Q&A!"
+excerpt: "What has been an idea (and something many community members suggested for a long time) is now a reality. We will be hosting a Live Q&A session with Godot core contributors the last week of each month."
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5f1/85c/9f2/5f185c9f27c96795702459.png
+date: 2020-07-22 00:00:00
+---
+
+What has been an idea (and something many community members suggested for a long time) is now a reality. We will be hosting a Live Q&A session with Godot core contributors the last week of each month.
+
+## Live Q&A
+
+The idea is to stream a Jitsi a call between core contributors to our [Youtube channel](https://www.youtube.com/channel/UCKIDvfZD1ZhY4_hhbotf7wA). A moderator will pick questions from the chat and we will try to answer them as best as possible. There will be some quirks to this format though:
+
+* Every month, besides core contributors who are hired by the project, we will also rotate other guest contributors to answer questions about the areas they contribute to.
+* Patrons over the $26 tier will be able to submit questions in advance (depending on the volume we may change this to lower tiers, or change the benefits, we'll see over time), which will be preselected and answered at the beginning of the Live Q&A session.
+
+
+## Save the date!
+
+The next live Q&A will take place on **Thursday 30 of July** at **18hs (6pm) UTC** on our [Youtube channel](https://www.youtube.com/channel/UCKIDvfZD1ZhY4_hhbotf7wA).
+
+**EDIT:** The Youtube stream [is now up](https://www.youtube.com/watch?v=k5DKlhMy5wQ), you can subscribe and set a reminder on it!
\ No newline at end of file
diff --git a/collections/_article/announcing-new-community-map-user-groups.md b/collections/_article/announcing-new-community-map-user-groups.md
new file mode 100644
index 0000000000..16b59b6947
--- /dev/null
+++ b/collections/_article/announcing-new-community-map-user-groups.md
@@ -0,0 +1,24 @@
+---
+title: "Announcing the new community map for user groups"
+excerpt: "Starting from today, there is a new User groups page on the Godot Engine website! This page replaces the old User groups page by featuring a community map that can be freely navigated and contributed to."
+categories: ["news"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/600/86b/4bc/60086b4bc8790999054229.png
+date: 2021-01-20 17:45:00
+---
+
+Starting from today, there is a new User groups page on the Godot Engine website! This page replaces the old User groups page by featuring a community map that can be freely navigated and contributed to.
+
+## What is the community map?
+
+The community map on the User groups page allows you to see where physical and online communities are located around the world.
+In addition, the list of communities below the map is now automatically generated and will always be in sync with the community map.
+
+
+
+
+
+If you host a physical or online community, feel free to add it to the list by editing the top of [`user-groups.html` in the godot-website repository](https://github.com/godotengine/godot-website/blob/master/themes/godotengine/pages/user-groups.htm) and opening a pull request. Make sure to group it with other communities in the same country (if any).
+Alternatively, you can also send an e-mail to *webmaster at godotengine · org* to request your community to be added to the list.
+
+For the curious, the map is powered by the open source [Leaflet.js](https://leafletjs.com/) library and uses the [Mapbox Static Tiles API](https://docs.mapbox.com/api/maps/#static-tiles). You can view the implementation in [this pull request](https://github.com/godotengine/godot-website/pull/201).
\ No newline at end of file
diff --git a/collections/_article/announcing-new-hire-gilles-roudiere.md b/collections/_article/announcing-new-hire-gilles-roudiere.md
new file mode 100644
index 0000000000..4233472372
--- /dev/null
+++ b/collections/_article/announcing-new-hire-gilles-roudiere.md
@@ -0,0 +1,22 @@
+---
+title: "Announcing a new hire! (Gilles Roudière)"
+excerpt: "In the past month, the excess donations accumulated so we are finally able to offer enough security to do an extra hire. Beginning November, Gilles Roudière (Groud) will be working full-time for the project, dedicated to 2D and general editor usability!"
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5f4/66c/b1b/5f466cb1b23ec647588316.png
+date: 2020-08-26 00:00:00
+---
+
+In the past month, the excess donations accumulated so we are finally able to offer enough financial security to do an extra hire. Beginning November, [Gilles Roudière (Groud)](https://github.com/groud) will be working full-time for the project, dedicated to 2D and general editor usability!
+
+## Background
+
+Gilles is responsible for the 2D editor in Godot, as well as some other areas such as the current filesystem dock and several improvements to Godot UI nodes. He has done an outstanding job, producing top quality contributions.
+
+His main responsibility from now on will be to become the general editor maintainer. He will work on improving usability, adding features, and making sure that the experience with the built-in tools is the best as it can be.
+
+Immediate priorities include improvements to the tilemap editor, animation editor, skeleton animation editors, and general 2D editor experience. Further ahead, more general improvements for the editor overall, based on your [proposals](https://github.com/godotengine/godot-proposals/).
+
+## Future
+
+We have more hires planned, but we need to increase our donations level for this. If you are not, please [consider becoming our patron](https://www.patreon.com/godotengine) and help make this happen!
\ No newline at end of file
diff --git a/collections/_article/as-oss-godot-is-more-than-a-game-engine.md b/collections/_article/as-oss-godot-is-more-than-a-game-engine.md
new file mode 100644
index 0000000000..f55be20b68
--- /dev/null
+++ b/collections/_article/as-oss-godot-is-more-than-a-game-engine.md
@@ -0,0 +1,110 @@
+---
+title: "As an Open Source project, Godot is more than a game engine"
+excerpt: "Godot is a community developed game engine. The development process is becoming tighter and more efficient every day. As the amount of contributors keep growing exponentially, it's a big challenge for us to keep this process efficient and yet improve it."
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/59e/119/c08/59e119c088aec337308530.png
+date: 2017-10-13 00:00:00
+---
+
+# Introduction
+
+Godot is a community developed game engine. The development process is becoming tighter and more efficient every day. As the amount of contributors keep growing exponentially, it's a big challenge for us to keep this process efficient and yet improve it.
+
+In fact, our development process and code quality are, already, arguably in many senses better than commercial game engine counterparts. Proof of this is the large amount of features added on each release, and the ever high stability of the codebase, even on alpha state.
+
+Before explaining this further, It's important to understand what is, according to the point of view in this article, considered to be a game engine, and where Godot stands.
+
+What is, then, a game engine? Let's try to agree on a common point of view.
+
+### A renderer + OS obstraction functions
+
+For a lot of developers, just a renderer plus abstraction on some OS functions (such as input handling, filesystem, etc), is enough to label something a "game engine".
+
+Truth is, I don't think this is fair. In Godot, the renderer is only, at much, 1% of the codebase, and OS abstraction does not even amount to that.
+
+If Rendering and OS abstraction is only, at much, 2%. What is the rest needed for?
+
+### Adding tools to the mix
+
+At some point, a lot of functions are needed for a more modern workflow. Asset importing, exporting, level editors, serialization, etc.
+
+One could then argue, that a game engine is an OS abstraction, a renderer, and tools that help to make a game.
+
+It would be easy to agree that this definition fit the bill a decade ago, but engines from back then definitely are not the same as the more modern ones from today.
+
+Back then, tools were generally separate applications or processes to deal with different aspects of a game. Nowadays, game engines don't look like this (save for maybe in-house engines that large companies still use).
+
+### A Coherent experience
+
+During this past decade, game engines morphed into all-in one tools with an unified interface. The focus was put mainly on usability and a coherent experience.
+
+This made engines migrate from being specialized tools for experts to accessible applications than anyone can use.
+
+Nowadays, it would be difficult to argue that a modern game engine does not include this aspects in it's definition.
+
+There is also something else, though..
+
+### Extensibility and Community
+
+Game engines are meant to be tools that save work on the most common tasks of developing a game but, as game development is a creative process, it's not uncommon to find situations where new features need to be added in order to achieve game design goals.
+
+Due to this, extensibility is a very important aspect of modern game engines.
+
+Building a community around this model is vital for developers to save time on their respective projects. This way, common extensions and features can be shared without having to be reimplemented.
+
+As such, we can agree that extensibility and a user community also fit the definition of a modern game engine.
+
+For some engines, this is even part of their business model. This way, if something is missing, the community can create and sell the missing functionality.
+
+## But then comes Godot
+
+Godot adds something entirely different to the mix. Something both new and old. It's a fully open source and community driven game engine.
+
+It may not make sense what's special about this at first, but once you start using it and taking part of the community, it becomes obvious.
+
+### The Open Source Difference
+
+The open source development process is something beautiful. Once you get it, it becomes clear why. Once a project is set in motion and starts getting traction, it becomes unstoppable.
+
+It may not make sense to most developers how a bunch of guys working in their free time and without getting paid can create quality software that, very often, matches or surpasses it's commercial counterparts.
+
+Projects such as Linux, gcc, LLVM, Python, Videolan, Blender, git, etc. are proof of this.
+
+### The Open Source development model
+
+Many confuse *Open Source* with *Shared Source*, or making the source available.
+
+When you read about *Open Source* somewhere, it's always about the [OSI definition](https://opensource.org/) of it.
+
+It means that a special license is used so everyone collaborating will benefit equally, making the development truly open.
+
+When companies make the source available, they will often do it together with a license where they clearly state that they benefit more from it than anyone that contributes. Alternative, some companies make part of their code open while keeping the rest as closed or under a more restrictive license.
+
+This is what makes Godot different to engines such as Unreal, Xenko, Cocos2D, Lumberyard, etc. Anyone who contributes to Godot, benefits equally from other's contributions.
+
+### Godot is a true Developer Community
+
+This key difference is what makes us stronger in the end. Godot is not just a game engine, it's a true developer community. It encourages everyone to contribute and benefit on equal terms.
+
+We have dozens of core developers and more than 400 contributors working on Godot, and this number keeps growing exponentially month by month.
+
+But this is not all, Godot development is a true meritocracy. Code is only merged when deemed worthy by the other developers. Every change is discussed for pros and cons.
+
+This process is led by our large user community, who usually sets our priorities via issues (or just random rants on our community sites :P). This same community helps with the testing and works directly with developers implementing each feature to ensure it works as best as possible. Our process is truly community-driven from begining to end.
+
+This development process, which involves several thousands individuals, is extremely efficient and ensured that, in a bit less than 3 years, Godot went from being completely unknown to appear on the map on the most important developer communities. No other game related technology has grown so quickly!
+
+To add to that, Godot gives you the safety that we are just individuals working towards making the best game engine possible.
+
+Godot does not need to survive by selling you new features constantly that you probably don't need and just bloat the engine because they are implemented in a hurry. The small 20mb download size is a testament to this.
+
+Godot does not need to sell you assets or extra services to keep the development going, and does not ask you for a % of your income.
+
+Godot does not need to pay high salary to talented developers in order to exist, talent forms around it due to the oppenness of our process.
+
+Godot does not need to convince companies or users that it has a solid cashflow and it won't go away anytime soon. Like every successful open source project, we are a talent pool that constantly self replenishes.
+
+Because of all this, Godot is a lot more than a game engine. It's a lot of talented individuals and the best community we could ever wish for, working together with the hopes of creating the best game development tool that ever exists.
+
+Following this process is very exciting, so stay with us and help us keep making Godot better and better!
\ No newline at end of file
diff --git a/collections/_article/asset-library-web-frontend-reaches-beta.md b/collections/_article/asset-library-web-frontend-reaches-beta.md
new file mode 100644
index 0000000000..507a5f0a41
--- /dev/null
+++ b/collections/_article/asset-library-web-frontend-reaches-beta.md
@@ -0,0 +1,70 @@
+---
+title: "The Asset Library web frontend reaches beta"
+excerpt: "After several months of development, the web frontend to Godot's Asset Library finally reached the beta status!"
+categories: ["news"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/581/7c8/856/5817c8856eccf877486140.png
+date: 2016-10-31 22:44:33
+---
+
+After several months of waiting ([obligatory joke](https://en.wikipedia.org/wiki/Waiting_for_Godot)) and more importantly of development, the web frontend to Godot's [*Asset Library*](/asset-library/) finally reached the [beta status](https://github.com/godotengine/asset-library/milestone/2?closed=1)!
+
+What does it mean? That the Asset Lib frontend is now [officially public](/asset-library/) and that the community can start using it extensively. It is still [in development](https://github.com/godotengine/asset-library), but we have a pretty solid base that should allow you to create your account, submit and update your assets - as well of course as seeing the existing assets in the library.
+
+Many thanks to [Bojidar Marinov](https://github.com/bojidar-bg) for the huge work he did on the Asset Lib so far! [Others](https://github.com/godotengine/asset-library/graphs/contributors) have started to contribute too, don't hesitate to join in if you like (or at least know) PHP :)
+
+If you missed the inline links, here they are in clear:
+
+* [Asset Library](/asset-library) - browse anonymously or register and login to submit new assets
+* [Source repository](https://github.com/godotengine/asset-library) - to partake in the development
+* [Issue tracker](https://github.com/godotengine/asset-library/issues) - to report any issues you may encounter (also usability wise, it's still a work in progress)
+
+## How does it work?
+
+The Asset Library is composed of three parts:
+
+* The engine frontend in Godot itself (since 2.1 stable), that you can access via the project manager (to install templates and demos) or via the *AssetLib* tab in your opened project (for all other types of assets).
+* The web backend, which is queried by the engine frontend to retrieve the list of assets and related metadata.
+* The web frontend, which allows you to see the contents of the library in your browser ([see this asset](/asset-library/asset/4) for example), and most importantly to submit new assets and edit existing ones registered to your account.
+
+## What assets can be submitted?
+
+The exact policy for the Asset Lib still needs to be formally written down, but here are the general rules that apply so far:
+
+* All assets should be licensed under a *free and [open source](https://opensource.org/osd) license* (e.g. MIT, BSD, GPL, CC0, etc.). When picking a license for your assets, you should of course ensure that you have the appropriate rights (i.e. you can't relicense assets from someone else to submit them to the Asset Lib).
+* All assets should be hosted in a [Git](https://git-scm.com/) repository, and accessible through a web frontend. The supported frontends so far are GitHub, GitLab (both gitlab.com and self hosted), Bitbucket, gogs and cgit (those two are also typically self hosted).
+* Each asset should be hosted in its own Git repository, i.e. one asset = one repo.
+
+Why do we request this? We are not a company, and we want to give the priority to open source contributions that will benefit all users without having to care for the legal burden of running a commercial asset store. It does *not* mean that Godot's engine frontend will not support paid assets in the future, but it is not our focus right now for the godotengine.org platform. People who want to run commercial stores are free to extend on our (obviously open source) [web frontend and backend code](https://github.com/godotengine/asset-library) and to host their own platform that can talk to Godot.
+
+We also enforce the usage of Git and code hosting platforms such as GitHub or GitLab for security reasons: it allows moderators to review the code included in each asset before accepting them. The specific commit or git tag provided as the version to download in the Asset Lib can be used to generate an archive with a unique cryptographic hash – moderators have to enter this hash when they accept new assets or edits, and Godot users will only be able to download files with a valid hash from within the engine – this ensures that what users download is what moderators approved.
+
+## How to submit/edit assets
+
+Once logged in, click "Submit Asset" in the navigation bar. You will then see a form asking for various details about your git repository and the asset you want to package:
+
+* Asset name
+* Category: 2D Tools, 3D Tools, Shaders, Materials, Tools, Scripts, Misc, Templates, Projects, Demos (subject to change as we gather community feedback)
+* Frontend type: GitHub, GitLab, Bitbucket, gogs or cgit
+* Repository URL
+* Download commit or tag: this identifies the version you want to submit to the Asset Lib. It will not be automatically updated for the security reasons mentioned above, so please edit your asset to update this hash or tag when needed.
+* Icon URL
+* License
+* Description
+* Optionally image and video previews
+
+Once you submit your asset, you will have to wait for an Asset Lib maintainer to review it and accept it (it can take several hours, though we're usually quite fast).
+
+## How to setup assets in your git repositories
+
+We will provide more information about this in the docs in the coming weeks, but in the meantime, please check existing assets and their git repositories to see how it was done.
+
+Keep in mind that assets are unzipped directly at the root of your project's folder. Therefore, for plugins, you should use a `addons/yourassetname/` folder in your git repository.
+
+If you are in doubt, don't hesitate to ask for guidance on one of the many [community channels](/community)!
+
+## Future developments
+
+As you will probably notice, the frontend is not finished yet. For example, rating assets is not implemented in the beta. You can check the existing [list of issues](https://github.com/godotengine/asset-library/issues) as well as the [milestone to the 1.0 release](https://github.com/godotengine/asset-library/milestone/3) to see what is in the works. If you have issues to report or suggestions to make, please use the issue tracker.
+
+For now, enjoy the existing assets and the web frontend, and give us your feedback!
\ No newline at end of file
diff --git a/collections/_article/atlas-support-returns-godot-3-2.md b/collections/_article/atlas-support-returns-godot-3-2.md
new file mode 100644
index 0000000000..29ddbb2fc4
--- /dev/null
+++ b/collections/_article/atlas-support-returns-godot-3-2.md
@@ -0,0 +1,70 @@
+---
+title: "Atlas support returns to Godot 3.2"
+excerpt: "With the import system rewrite in Godot 3.0, the ability to import atlases was lost. Using atlases is not as common nowadays, given the processing power of desktop and devices has increased a lot, but there are many use cases where this may be worth it. Godot 3.2 will bring back support for it."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5cb/a27/5de/5cba275deeea9159968354.png
+date: 2019-04-19 00:00:00
+---
+
+With the import system rewrite in Godot 3.0, the ability to import atlases was lost. Using atlases is not as common nowadays, given the processing power of desktop and devices has increased a lot, but there are many use cases where this may be worth it. Godot 3.2 will bring back support for it.
+
+
+## What is an Atlas?
+
+Importing images into an atlas is a process that will take all of the images, and pack them into a single larger image (called an "Atlas"). Then, when the original image needs to be drawn, it actually draws the piece of the larger atlas.
+
+
+
+Character is (c) Square Enix.
+
+This is also only useful for 2D (Godot does not support 3D atlases).
+
+So, why would one use an atlas instead of individual images? In most cases, it doesn't make sense, but for some situations it may provide some improvement in memory usage or performance. Here are such cases:
+
+#### Batching
+
+In cases where a lot of objects need to be drawn, having them all share the same texture (or material) may reduce draw calls or state changes. When working on tile-sets, it's normal to have everything already drawn to a single texture but if the level uses a lot of separate images, then using an atlas may make sense to improve performance.
+
+#### Optimizing Memory
+
+When doing character animations, specially characters with hundreds of thousands of animation frames (like [Cuphead](https://youtu.be/LnIXQqldC7o?t=832)), using an atlas will not give any increase in performance (as only one frame is drawn at the same time).
+
+However, to ensure animation remains fluid and easy to integrate, animators will use a relatively large image size that remains constant, then animate a smaller character inside. This produces a lot of wasted memory, as these empty places in the animation frames take up a lot of video memory and make loading slow.
+
+
+
+
+
+
+Using atlases ensures that, before placing all the animation frames in a single image, the frames are cropped (and the offset to the crop remembered). The packer will then, ensure everything is fit in the atlas image as compactly as possible. This makes it easy to optimize for memory, as only the places in the images that contain information are saved.
+
+## How to use atlases in Godot
+
+Using atlases in Godot is _extremely_ easy. Just select all the files that you want to _pack together_ in the _Filesystem Dock_, then change the import type to "Texture Atlas".
+
+When the new file type is selected, change the "atlas file" setting to the image you will want to create, then push the "Re-Import" button. All your assets will be re-imported and added to an atlas. (The editor will restart afterwards, as the images may be in use, to ensure everything is re-opened in a clean state).
+
+Here is a visual explanation:
+
+
+
+Packing is also deterministic, which means that the same image should always be generated (this ensures it works for generating normal map atlases separatedly, as an example).
+
+## Import modes
+
+As you may have noticed, atlas files have an Import Mode, settings. There are two possible ones:
+
+#### Region
+
+This packs the used part of the image in a square region in the atlas, then this is referenced in an *AtlasTexture*.
+_Region_ takes up more space, but allows drawing only parts of the image, clipping it, etc. It also means that it can be batches. This mode is ideal for optimizing performance, as mentioned above.
+
+#### Mesh2D
+
+This cuts a polygon around the used part and packs it, resulting in considerably more efficient packing. The downside is that drawing it is less flexible (some operations such as showing a region of it are not possible). It is not possible to batch meshes either. This mode is ideal for optimizing memory in the mode mentioned before.
+
+## Future
+
+I hope this is the last feature I will personally add to Godot 3.2, so I can soon move to work on Vulkan.
+As always, if you are not yet, please consider [becoming our patron](https://www.patreon.com/godotengine), help us hire an extra developer and ensure that Godot development remains free.
\ No newline at end of file
diff --git a/collections/_article/basic-cryptography-ssl-improvements.md b/collections/_article/basic-cryptography-ssl-improvements.md
new file mode 100644
index 0000000000..b107276845
--- /dev/null
+++ b/collections/_article/basic-cryptography-ssl-improvements.md
@@ -0,0 +1,153 @@
+---
+title: "Basic cryptography, SSL improvements"
+excerpt: "As part of the MOSS project sponsored by Mozilla, during July I worked on some new features regarding cryptography and SSL to improve the quality and security of Godot networking."
+categories: ["progress-report"]
+author: Fabio Alessandrelli
+image: /storage/app/uploads/public/5d8/f4b/b0a/5d8f4bb0a3174096196968.png
+date: 2019-09-28 12:15:00
+---
+
+As part of the MOSS project sponsored by Mozilla, during July I worked on some new features regarding cryptography and SSL to improve the quality and security of Godot networking.
+
+Certificates and keys as resources
+----------------------------------
+
+SSL certificates (in the form of `*.crt` files) and private keys (in the form of `*.key` files) are now treated as resources in Godot. This means they will be exported automatically and they can be loaded via the GDScript `load()` function.
+
+Crypto class
+------------
+
+A new [`Crypto`](http://docs.godotengine.org/en/latest/classes/class_crypto.html) class was introduced that allows to access some basic cryptographic functions.
+
+- You can generate cryptographically secure random bytes via the `generate_random_bytes()` function. The bytes are returned in a `PoolByteArray`.
+- You can generate RSA keys that can be used by `StreamPeerSSL` to act as a server.
+- You can generate SSL self-signed certificates that again, can be used by `StreamPeerSSL` to act as a server.
+
+Hashing Context
+---------------
+
+A new [`HashingContext`](http://docs.godotengine.org/en/latest/classes/class_hashingcontext.html) class now provides an interface for computing cryptographic hashes (MD5, SHA-1, SHA-256) over multiple iterations.
+
+This is useful for example when computing hashes of big files (so you don't have to load them all in memory), network streams, and data streams in general (so you don't have to hold buffers). Here is an example of how it works:
+
+```
+const CHUNK_SIZE = 1024
+
+func hash_file(path):
+ var ctx = HashingContext.new()
+ var file = File.new()
+ # Start a SHA-256 context.
+ ctx.start(HashingContext.HASH_SHA256)
+ # Check that file exists.
+ if not file.file_exists(path):
+ return
+ # Open the file to hash.
+ file.open(path, File.READ)
+ # Update the context after reading each chunk.
+ while not file.eof_reached():
+ ctx.update(file.get_buffer(CHUNK_SIZE))
+ # Get the computed hash.
+ var res = ctx.finish()
+ # Print the result as hex string and array.
+ printt(res.hex_encode(), Array(res))
+```
+
+SSL improvements
+----------------
+
+[`StreamPeerSSL`](http://docs.godotengine.org/en/latest/classes/class_streampeerssl.html) can now use a per-object SSL certificate (i.e. you no longer have to set the trusted certificates om project settings), you can specify the valid certificate by passing an `X509Certificate ` as last parameter in `connect_to_stream()`.
+
+`StreamPeerSSL` can now act as a server. The new `accept_stream()` function, which accepts a private key, a certificate, and an optional CA chain, will try to establish a connection with the given stream acting as a server. This will soon also allow us to support acting as a WebSocket server over TLS.
+
+Here is an example of a test HTTPS server made in GDScript... not meant to be used in production ;-)
+
+```
+extends Node
+
+# A class that represents a client accepted by our server.
+class Client extends Reference:
+ # The SSL stream of this client.
+ var ssl = StreamPeerSSL.new()
+ # Received request.
+ var recv = ""
+
+ # Set the stream for this client.
+ func set_stream(stream, key, cert):
+ ssl.blocking_handshake = false
+ ssl.accept_stream(stream, key, cert)
+
+ # Process network operations for this client.
+ func process():
+ if ssl.get_status() == StreamPeerSSL.STATUS_HANDSHAKING:
+ # Still performing handshake.
+ ssl.poll()
+ return
+ if ssl.get_status() != StreamPeerSSL.STATUS_CONNECTED:
+ # Disconnected.
+ return
+ ssl.poll()
+ # Read available bytes.
+ if ssl.get_available_bytes() > 0:
+ recv += ssl.get_data(ssl.get_available_bytes())[1].get_string_from_utf8()
+ # Send response if request is complete.
+ if recv.ends_with("\r\n\r\n"):
+ ssl.put_data(("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n" + \
+ "
Godot TLS Test Server
\r\n" + \
+ "
Successful connection using SSL
\r\n").to_utf8())
+ ssl.disconnect_from_stream()
+
+ func is_disconnected():
+ return ssl.get_status() != StreamPeerSSL.STATUS_HANDSHAKING and \
+ ssl.get_status() != StreamPeerSSL.STATUS_CONNECTED
+
+# Our TCP server.
+var _server = TCP_Server.new()
+# A list of connected clients.
+var _clients = []
+
+# Our private key and certificate.
+var _key = null
+var _cert = null
+
+func _ready():
+ var crypto = Crypto.new()
+ # Generate an RSA key (this should be done in a thread to avoid blocking).
+ _key = crypto.generate_rsa(4096)
+ # Generate a self signed certificate to use with our server.
+ _cert = crypto.generate_self_signed_certificate(_key, "CN=example.com,O=A Game Company,C=IT")
+ # Start listening on "*:4343".
+ _server.listen(4343)
+
+func _process(delta):
+ # Take new connections.
+ if _server.is_connection_available():
+ var c = Client.new()
+ c.set_stream(_server.take_connection(), _key, _cert)
+ _clients.append(c)
+
+ # Take note of disconnected clients.
+ var to_rem = []
+ # Process clients and send response when done.
+ for c in _clients:
+ c.process()
+ if c.is_disconnected():
+ to_rem.append(c)
+
+ # Remove disconnected clients.
+ for c in to_rem:
+ _clients.erase(c)
+```
+
+Future work
+-----------
+
+This has been quite a long work, and included some refactoring of the `core` code to use a single library for cryptography (mbedTLS) instead of multiple specific libraries for hashing algorithms and AES. This work will allow us to introduce support for AES encryption and more at scripting level in future versions.
+
+Additionally, the SSL overhaul helped a lot in developing the upcoming DTLS implementation.
+
+References
+----------
+
+- [PR refactoring the `core` crypto code](https://github.com/godotengine/godot/pull/30239)
+- [PR adding Crypto class, Hashing contexts, SSL server](https://github.com/godotengine/godot/pull/29871)
+- [PR adding documentation for above-mentioned additions](https://github.com/godotengine/godot/pull/32285)
\ No newline at end of file
diff --git a/collections/_article/become-godot-contributor-hacktoberfest-2018.md b/collections/_article/become-godot-contributor-hacktoberfest-2018.md
new file mode 100644
index 0000000000..1a27aada32
--- /dev/null
+++ b/collections/_article/become-godot-contributor-hacktoberfest-2018.md
@@ -0,0 +1,50 @@
+---
+title: "Become a Godot contributor for Hacktoberfest 2018"
+excerpt: "Hacktoberfest 2018 has started, and you can contribute to Godot to earn a T-shirt (and experience!). Digital Ocean and GitHub sponsor this event that encourages everyone to contribute to any free and open source project on GitHub, including Godot's repositories. All pull requests count, so you can work either on the engine source code or on the documentation - there are things to do for everyone!"
+categories: ["news"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5bb/27f/fe8/5bb27ffe8696a709684472.png
+date: 2018-10-01 20:43:47
+---
+
+October arrived, and with it one of the great community events of the FOSS year, the [Hacktoberfest](https://blog.digitalocean.com/hacktoberfest-is-back-for-year-5/)!
+
+This event co-organized by Digital Ocean and GitHub has simple rules: contribute 5 pull requests to open source projects on GitHub, and you will get a cool T-shirt (plus eternal recognition from project maintainers and internal fame in many communities, or something close to that ;)).
+
+And of course, Godot being one of the GitHub-hosted projects, you can work on your Hacktoberfest milestones by contributing directly to [Godot's source code](https://github.com/godotengine/godot) or [documentation](https://github.com/godotengine/godot-docs).
+
+## Getting started
+
+First of all head to the [**Hacktoberfest 2018 website**](https://hacktoberfest.digitalocean.com/) and register with your GitHub account (if you haven't one, you'll have to [register](https://github.com/) there too). The Hacktoberfest website has plenty of resources to get you started, and tips on how to find projects that you could be interested in, so make sure to check it in depth.
+
+For Godot specifically, here are relevant links and tips:
+
+### Engine contributions
+
+If you want to contribute to the game engine itself by fixing bugs or implementing enhancements (note that new features would be put on hold as we are in *feature freeze* - you can still make them but you wouldn't get much feedback for now), head to the [godotengine/godot](https://github.com/godotengine/godot/) repository. Most of the code is C++, with some bits in Objective-C (iOS/macOS), Java (Android) and JavaScript (HTML5).
+
+This is also the place to work on the *class reference*, the documentation of all nodes available in Godot and their properties and methods.
+
+Here's how to get started:
+
+- The [*Hacktoberfest*](https://github.com/godotengine/godot/labels/Hacktoberfest) label on the [source code repository](https://github.com/godotengine/godot) lists some "newcomer-friendly" issues that you can have a look at. Note that you are not limited to those issues, you can work on anything you want - this selection is just a shortlist.
+- Similarly, the [*Hero wanted!*](https://github.com/godotengine/godot/labels/hero%20wanted%21) label also has a selection of issues ready to be worked on, where project maintainers or users have done enough initial debugging to point you in the right direction (see our [recent blog post](/article/hero-wanted-31-version) about the "Hero wanted!" campaign).
+- You can also browse all other issues of the code repository which are in the [*3.1 milestone*](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1) (our main focus currently), and especially the ones [labelled as *bug*](https://github.com/godotengine/godot/issues?q=is%3Aopen+label%3Abug+milestone%3A3.1).
+- Have a look at the [contributor's documentation](http://docs.godotengine.org/en/latest/community/contributing/index.html), especially the [CONTRIBUTING.md](https://github.com/godotengine/godot/blob/master/CONTRIBUTING.md), the [Pull Request workflow](http://docs.godotengine.org/en/latest/community/contributing/pr_workflow.html) and the [Code style guidelines](http://docs.godotengine.org/en/latest/community/contributing/code_style_guidelines.html).
+- Join the [`#godotengine-devel`](http://webchat.freenode.net/?channels=#godotengine-devel) IRC channel on Freenode (also bridged on [Matrix](https://matrix.to/#/#freenode_#godotengine-devel:matrix.org)) to discuss with fellow engine contributors.
+
+If you want to work on the class reference, have a look at the [dedicated page](http://docs.godotengine.org/en/latest/community/contributing/updating_the_class_reference.html).
+
+### Documentation contributions
+
+To contribute to the [online documentation and tutorials](http://docs.godotengine.org/), the main repository is [godotengine/godot-docs](https://github.com/godotengine/godot-docs/). Note that as mentioned above, contributions to the [class reference](http://docs.godotengine.org/en/latest/classes/index.html) should instead be done directly in the engine repository (as the class reference is also included offline in the editor).
+
+Here's how to get started:
+
+- Check the [list of issues](https://github.com/godotengine/godot-docs/issues) and see if there's anything you'd like to work on.
+- Review the documentation on [how to write documentation](http://docs.godotengine.org/en/latest/community/contributing/documentation_guidelines.html) (yes, that has to be documented too!).
+- Join the `#documentation` channel on [Godot's Discord](https://discord.gg/zH7NUgz) server (most active place to discuss with fellow documentation contributors), or if you prefer the [`#godotengine-doc`](http://webchat.freenode.net/?channels=#godotengine-doc) IRC channel on Freenode (but it's less active).
+
+That's it! It's a lot of links and documentation, but you of course don't need to review everything in depth, look in priority at the [contributor's documentation](http://docs.godotengine.org/en/latest/community/contributing/index.html) and then pick something you'd like to work on.
+
+Enjoy your Hacktoberfest and have fun contributing to your very own engine!
\ No newline at end of file
diff --git a/collections/_article/ben-tristem-gamedevtv-are-kickstarting-godot-course.md b/collections/_article/ben-tristem-gamedevtv-are-kickstarting-godot-course.md
new file mode 100644
index 0000000000..b2cf5daedb
--- /dev/null
+++ b/collections/_article/ben-tristem-gamedevtv-are-kickstarting-godot-course.md
@@ -0,0 +1,48 @@
+---
+title: "Ben Tristem & GameDev.tv are kickstarting a Godot course"
+excerpt: "Ben Tristem and his GameDev.tv team, authors of many best-selling game development courses on the online platform Udemy, are now kickstarting a Godot Engine course!
+They strongly believe in Godot and want to make top quality content for all kinds of users. Ben tells us in a video what they like in Godot and why they are so enthusiastic about it."
+categories: ["news"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5b0/329/342/5b032934283e8029566244.jpg
+date: 2018-05-21 20:38:35
+---
+
+If you are into game development, chances are that you've heard of [Ben Tristem](https://en.wikipedia.org/wiki/Ben_Tristem) and his [GameDev.tv](https://www.gamedev.tv/) team, as they are making some of the best-rated [online courses on Udemy](https://www.gamedev.tv/) for game engines like Unity3D and Unreal Engine 4, as well as art making tools like Blender and The GIMP.
+
+## New professional Godot course on Kickstarter
+
+Last week, Ben and his team started a new Kickstarter campaign for a [**Godot Engine course**](https://www.kickstarter.com/projects/bentristem/discovering-godot-learn-to-code-by-making-games?ref=7dkj1f)!
+
+In the Godot team, we are delighted to see them giving Godot the spotlight it deserves by making a top-quality professional course for the hundreds of thousands of Udemy users that learn with their material.
+
+Their formula was tested and proven on other game engines, and we can't wait to see how they will approach Godot – we are confident that they will make a great course, as they plan to involve the backers and the greater Godot community to help them shape the final curriculum.
+
+**Link:** [Discovering Godot – Learn to Code by Making Games](https://www.kickstarter.com/projects/bentristem/discovering-godot-learn-to-code-by-making-games?ref=7dkj1f) by Ben Tristem and Yann Burrett.
+
+Make sure to check it out and to support the campaign if you can, as this course should be a great learning resource as well as a visibility boost for your favourite no-marketing-budget game engine :)
+You'll see all the details about the course's purpose and contents [on the Kickstarter page](https://www.kickstarter.com/projects/bentristem/discovering-godot-learn-to-code-by-making-games?ref=7dkj1f).
+
+
+
+## Ben tells us why they support Godot
+
+GameDev.tv had already been showing its interest in Godot by sponsoring us financially [on Patreon](https://www.patreon.com/godotengine) over the last few months, and now they show their commitment and trust by actual making their own teaching product based on Godot.
+
+> *We believe in the future of Godot, and that's the reason we've been sponsoring the project for a while. It's also the fundamental reason we're creating courses for the engine – to help support it and spread the word.*
+
+I've asked Ben to give us some details about what they see in Godot, and why they are so enthusiastic about it and willing to give it a top-tier position among their game development courses:
+
+
+
+> *We're big fans of Godot's:*
+>
+> - *Language flexibility*
+> - *Separate 2D and 3D pipelines*
+> - *Open source(ness), allowing users to modify and even contribute*
+>
+> *And it's fun! It's fun to use, it's simple when you open it, it's powerful if you need it, it unfolds the complexity as and when you require it. We find that so inviting!*
+
+These points really echo what we hear on all [Godot community channels](https://godotengine.org/community), where users really enjoy the flexibility offered by Godot's design and license, and simply have a lot of fun experimenting and working on long term projects alike.
+
+If you want to communicate directly with Ben, Yann and other users waiting for this course, you can join GameDev.tv's [Facebook group dedicated to the Godot course](https://www.facebook.com/groups/godotcourse/).
\ No newline at end of file
diff --git a/collections/_article/beta-release-python-support.md b/collections/_article/beta-release-python-support.md
new file mode 100644
index 0000000000..601b06a300
--- /dev/null
+++ b/collections/_article/beta-release-python-support.md
@@ -0,0 +1,37 @@
+---
+title: "Beta release for Python support"
+excerpt: "Emmanuel Leblond (touilleMan) just released the first beta of his Python for Godot interface, which will allow developers to use Python 3 and its complete ecosystem as a scripting language in Godot 3.0."
+categories: ["news"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/596/62b/1c4/59662b1c4ffa8859295653.png
+date: 2017-07-12 08:59:44
+---
+
+*This is a guest post by Emmanuel Leblond (touilleMan), a Godot contributor and Python lover who develops a GDNative interface to use Python 3 as alternative scripting language in Godot. To answer the obligatory question: yes, the plan is still to ship Godot 3.0 with GDScript, VisualScript and C# support. Python support should also be ready by then and usable plug 'n play thanks to GDNative; its main advantage compared to the Python-like GDScript will be the access to the whole Python ecosystem.*
+
+------
+
+Who said Godot's only about waiting? Today we are releasing the [first beta version of Python for Godot](https://github.com/touilleMan/godot-python), the GDNative interface that enables you to use the full-blown Python 3 as a scripting language for Godot games. Now we need you to try it and give your feedback, so that it can be made as good as possible for the upcoming 3.0 release!
+
+- [Release 0.9.0 page](https://github.com/touilleMan/godot-python/releases/tag/v0.9.0)
+- [Direct link to 0.9.0 linux binary release](https://github.com/touilleMan/godot-python/releases/download/v0.9.0/godot-python-0.9.0.tar.bz2)
+- [Repository for Godot Python](https://github.com/touilleMan/godot-python)
+
+All core features of Godot are expected to work fine:
+
+- Builtins (e.g. `Vector2`)
+- Object classes (e.g. `Node`)
+- Signals
+- Variable export
+- RPC synchronization
+
+On top of that, mixing GDScript and Python code inside a project should work fine, have a look at the [Pong example](https://github.com/touilleMan/godot-python/tree/master/examples/pong) to see how you can convert one by one your existing GDScript code to Python fairly easily.
+
+This release ships a recent build of Godot 3.0-alpha (yes, it's a beta based on an alpha...) and CPython 3.6.1 with the standard library and pip, ready to work with the Python ecosystem in its full glory (can't wait to see people experimenting game AI with [Pytorch](http://pytorch.org/)!).
+
+The project is Linux-only so far, however you should be able to compile it from the sources if you are on macOS (let us know if you do so).
+Binaries for all platforms will eventually be provided when Godot 3.0 gets stable.
+
+As always, keep in mind this is a beta and you are expected to encounter issues and maybe crashes. If so, make sure to report them on the [project's bug tracker](https://github.com/touilleMan/godot-python/issues) ;-)
+
+**PS:** A talk about Godot & Python was given last Monday at [EuroPython 2017](https://ep2017.europython.eu/conference/talks/bringing-python-to-godot-game-engine). You can watch the (for now unedited) recording [on YouTube](https://www.youtube.com/watch?v=h6MsqsJqnao&feature=youtu.be&t=2h35m09s); the edited version should be available later on [EuroPython's YouTube channel](https://www.youtube.com/c/EuroPythonConference).
\ No newline at end of file
diff --git a/collections/_article/betsy-gpu-texture-compressor.md b/collections/_article/betsy-gpu-texture-compressor.md
new file mode 100644
index 0000000000..9c2e2e13c0
--- /dev/null
+++ b/collections/_article/betsy-gpu-texture-compressor.md
@@ -0,0 +1,328 @@
+---
+title: "Introducing the Betsy GPU texture compressor"
+excerpt: "My name is Matias N. Goldberg, I normally maintain the 2.x branch of Ogre, and I wrote Betsy, a GPU texture compressor that runs on GPUs."
+categories: ["progress-report"]
+author: Matias Goldberg
+image: /storage/app/uploads/public/5fb/e92/016/5fbe920160a53834592537.jpg
+date: 2020-11-25 00:00:00
+---
+
+My name is [Matias N. Goldberg](https://twitter.com/matiasgoldberg), I normally maintain the [2.x branch of Ogre](https://www.ogre3d.org/download/sdk/sdk-ogre-next) aka [ogre-next](https://github.com/OGRECave/ogre-next) and I wrote Betsy, a GPU texture compressor that runs on GPUs.
+
+This work was commissioned by Godot Engine through the Software Freedom Conservancy to solve a major complaint: importing textures is excruciantly slow and takes many minutes.
+
+Certain compression algorithms such as BC1-5 are quite simple and there are already fast high quality compression algorithms.
+
+However algorithms such as BC6, ETC1, ETC2 and EAC are currently taking the majority of time and thus considerably attention were given to these.
+
+Nonetheless Betsy implemented compute-shader versions for BC1,3,4,5,6, ETC1,2 and EAC algorithms.
+
+Betsy works as a standard Command Line tool which means it can be used like any other exe tool outside of Godot.
+
+More importantly, Betsy was developed with integration to Godot in mind, which is why its code has been isolated and abstracted from API details, written in GLSL shaders since Godot uses Vulkan.
+
+Godot can make further performance improvements a standard CLI tool can't, because Godot doesn't have to initialize the graphics API every time it is invoked to compress a texture; and Godot can upload a texture just once and then encode into multiple formats (e.g. compress into BC1 and ETC1, or EAC and BC4 at the same time); rather than re-upload the texture again for every format we need to compress into.
+
+Theoretically the CLI tool could accept to encode many textures in a single invocation (e.g. encode A.png into A.etc1.ktx A.etc2.ktx A.bc1.ktx and B.etc1.ktx B.etc2.ktx B.bc1.ktx) but we were worried that could complicate the code and make its integration with Godot harder. Additionally it's hard to write a generic tool interface that would take advantage of such command line syntax.
+
+# What is texture compression and why you care
+
+GPUs have precious limited available RAM. Too many big textures and you can see yourself running out of RAM.
+
+When that happens, the GPU driver may fallback to streaming from regular system RAM over the PCI-E bus.
+
+When this works, a significant performance degradation can happen.
+When this doesn't, the game will just crash.
+
+On phones, lower RAM consumption isn't the only reason. Smaller textures mean less bandwidth. And less bandwidth means better battery life (and sometimes less bandwidth can also mean higher performance on both desktop and mobile).
+
+There are three major types of texture compression categories, but only one is useful for GPUs:
+
+## Lossless (e.g. PNG)
+
+This compression family lower the size of the texture using algorithms such as [gzip](https://en.wikipedia.org/wiki/Gzip), [bzip](https://en.wikipedia.org/wiki/Bzip2) or [LZMA](https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Markov_chain_algorithm), among others. The main advantage is that the bits of the original texture are preserved. That's why it's **loss**-**less** i.e. no quality is lost.
+
+The disadvantage is that they take a variable time to decompress i.e. it can take anywhere as 1 nanosecond to 30 seconds, or who knows, maybe more.
+
+Unfortunately, due to this variable-time in decompression, these family of texture compression algorithms are of no use for a GPU.
+
+Another disadvantage is that the compression ratio is unknown. A 1024x1024 may compress to 10kb, while another 1024x1024 texture may compress to 0.7MB.
+
+This large unknown disparity in size also makes them inviable for GPUs.
+
+This means that a 1024x1024 RGBA PNG texture that is only 10kb on disk **must** be decompressed before uploading to the GPU, thus always occupying 4MB of video RAM.
+
+## Lossy (e.g. JPEG)
+
+This compression family uses algorithms like [Discrete Cosine Transform](https://en.wikipedia.org/wiki/Discrete_cosine_transform) (aka DCT) to discard some details of the original image in order to hugely reduce their size.
+
+That is: they do lose quality, but it is often hard to notice and achieve huge size reductions.
+
+Unfortunately, they're still a no-go for GPUs due to how expensive it is to decode DCT, and because decompressing often requires 'postprocessing' passes that looks on the whole texture to hide artifacts and improve quality.
+
+Therefore, just like in the PNG case, a 1024x1024 RGB JPEG texture that is only 120kb on disk **must** be decompressed before uploading to the GPU, thus always occupying 4MB of video RAM.
+
+## GPU lossy (e.g. BC1-7, ETC1-2, EAC, PVRTC, ASTC)
+
+We finally arrive at the family this article is about!
+
+This family of compression algorithms meet two criterias that are *key* for GPUs:
+
+ 1. Decompression is fast and easy, and can be done in constant O(1) time. i.e. it always takes the same amount of time. e.g. if it takes 20 nanoseconds on a given GPU, it *always* takes 20 nanoseconds, no matter which pixel you need to fetch.
+ 2. Compression ratio is constant. For example BC1 has a 1:8 compression ratio. That means that a 1024x1024 RGB texture which on RAM would occupy 4MB uncompressed, using BC1 it will *always* occupy 0.5MB
+
+**To be clear:** except rare occassions, these formats cannot compete in quality against the other family of lossy formats (like JPEG), and they do not intend to.
+
+Fast decompression and reasonable quality are the goals here. If you don't like it and have infinite money, you can always buy a 24GB RAM GPU.
+
+But for the rest of us, this compression family is a good deal.
+
+**Why are there so many formats (BC1, BC4, ETC1, etc, etc) you ask?**
+
+Well, one reason is patents. For example ETC1, ETC2 and EAC appeared because phone vendors didn't want to pay the patent for the BC1-5 family of compression algorithms. This patent [expired on March 16, 2018](https://en.wikipedia.org/wiki/S3_Texture_Compression#Patent). However plenty of phones came before 2018.
+
+Another reason is that some algorithms are better suited for different content. For example BC5 & EAC are very good at compressing *normal maps*, while BC1 & ETC1 are reasonably good for compressing RGB *photo-like* textures, and BC3 and ETC2 are reasonably good for RGBA photo-like textures.
+
+Then some formats simply are improvements over time: BC7 came *much* later and is BC1 on steroids. Although it is double the size of BC1, it preserves quality much better than BC1 ever did. If your card supports DirectX10, then it supports BC7. But if it's older than that, it won't.
+
+Then there is the relatively-new ASTC which is a very good and flexible patent-free compression format, but desktop vendors resist it because it is very expensive in terms of HW manufacturing costs and die area size. Also not all phones support it, either because they're too old, or due to costs.
+
+# GPU compression can take (a lot of) time
+
+OK, so we just have to use those formats I mentioned above right? We use BC1, BC3, ETC1, etc.
+
+Hold on! Not so fast:
+
+Some GPUs support some textures but not others. While there are assumptions that can be made (e.g. all desktop DX10-class GPUs and newer support BC1-7), if you aim at different platforms (Windows, iOS, Android) the answer to the question '*which format should we use?*' then the answer will be: **All of them**.
+
+Games usually have to bundle the same textures in all suitable formats and pick the best supported variation based on the HW it is running.
+
+This isn't good for package sizes on disk, but we ensure compatibility. Some mobile games decide to download the texture pack after installation once it knows which device it is running on.
+
+Other solutions like [Basis Universal](https://github.com/BinomialLLC/basis_universal) use the term 'transcoding' to generate an ETC1 or BC1 texture based on a single binary package. By trading off some quality and saving shared information, an ETC1 or BC1 texture can be generated on the fly.
+
+The main problem is that some formats like BC1 are easy to encode. **But other formats like ETC2 or BC7 can take a lot of time**. Encoding a bunch of small textures can take literal minutes!
+
+If an artist needs to wait 30 seconds to deploy to his phone every time he changes a few textures to see how it looks like, then we've got a big iteration problem!
+
+That's where betsy comes in.
+
+# Not all encoders are born equal
+
+Performance isn't the only metric! Another issue is that not all compressors produce the same quality!
+
+There are many ways to encode a texture, and arriving to each solution will achieve slightly different results. Some compressors are better at preserving quality than others.
+
+Betsy aims at encoding in high quality. Even if we may not end up being *the* best encoder, we can't sacrifice quality for speed (unless it's configurable and the user wants to)
+
+# Betsy is a GPU encoder
+
+Regular code is written to be run on a CPU. Betsy runs on a GPU.
+GPUs are massively parallel machines. And GPU compression happens to parallelize quite well (some formats better than others)
+
+What is faster depends on what CPU do you own vs what GPU do you own, and which compression format is selected.
+A 64-core Ryzen Threadripper paired with a GeForce 1030 or Radeon HD 7350, the CPU will obviously beat the GPU.
+
+However if you own the latest GeForce 3080 or Radeon 6800 XT, chances are a GPU encoder will win in encoding time.
+
+It is important to mention that my work was mostly porting existing codecs written in C or C++ for the CPU, and convert them into GPU-friendly compute shaders. A notable exception is ETC2's P-mode which has been extended with our own efforts to significantly improve encoding quality of this mode.
+
+You can find more information in the [LICENSE](https://github.com/darksylinc/betsy/blob/master/LICENSE.md) and [README](https://github.com/darksylinc/betsy/blob/master/README.md) pages.
+
+# Benchmark Performance
+
+OK enough boring explanation! Let's see how Betsy fares against other encoders:
+
+Notes:
+
+ 1. CPU is Intel i7 7700 3.6Ghz (4.2Ghz turbo). 2x16GB RAM 3000Mhz. 4 core, 8 threads.
+ 1. GPU is AMD Radeon HD 560 2GB VRAM
+ 1. Benchmark was done on Linux Ubuntu 18.04 LTS (HWE), Mesa 20.1.3
+ 1. [etc2comp](https://github.com/google/etc2comp) is what Godot currently uses
+ 1. [ConvectionKernels](https://github.com/elasota/ConvectionKernels) aka CVTT, which uses SIMD/SSE to run compress multiple blocks at once, similarly to what Betsy does.
+ 1. Multithreaded tests were done spawning one process for each texture. This is suboptimal as it results in oversubscription for CVTT, and excessive contention of access to GPU for Betsy. The exception is etc2comp which supports native per-texture multithreading out of the box.
+ 1. Single threaded numbers for CVTT are included because multithreading is not supported out of the box by CVTT
+ 1. Single threaded numbers for etc2comp are not included because it supports multithreading out of the box, and single threaded version is simply way too slow.
+ 1. The original Kodim set's resolution was too small to fully saturate the GPU in Betsy (according to radentop, around 60% GPU usage), which is why there is a strong difference between the 'multithreaded' and 'singlethreaded' versions. This difference gets much smaller for the 2048 upscaled set (keeping aspect ratio).
+ 1. Betsy was run for every texture independently, which includes a small overhead for initializing OpenGL every time. This could be further improved to support encoding multiple textures with one single invocation.
+ 1. Betsy's first run in a system may take considerably larger time as compute shaders must be compiled and will later be cached by the driver in subsequent runs. This will happen again if the driver is updated.
+ 1. All values are time in seconds.
+ 1. Betsy's Quality = 1 (medium quality) was included because it only affects ETC1 modes (not the extended T, H and P ETC2 modes), the quality difference is very low, but the performance gains are gigantic.
+ 1. The scripts used to run this benchmark can be found on [Github/betsy_benchmark](https://github.com/darksylinc/betsy_benchmark)
+
+## ETC1
+
+| Set | **Betsy MT (q = 1)** | **Betsy ST (q = 2)** | **Betsy MT (q = 2)** | **CVTT ST** | **CVTT MT** | **etc2comp MT** |
+| ---------------------------- | -------------------- | -------------------- | -------------------- | ----------- | ----------- | --------------- |
+| Kodim (25 textures) | 1,36 | 11,45 | 9,01 | 34,88 | 6,85 | 18,35 |
+| Upscaled to 2048xN Kodim | 3,6 | 56,95 | 52,72 | 244,14 | 48,29 | 138,5 |
+
+## ETC2 RGB
+
+| Set | **Betsy MT (q = 1)** | **Betsy ST (q = 2)** | **Betsy MT (q = 2)** | **CVTT ST** | **CVTT MT** | **etc2comp MT** |
+| ---------------------------- | -------------------- | -------------------- | -------------------- | ----------- | ----------- | --------------- |
+| Kodim (25 textures) | 3,16 | 13,21 | 10,85 | 45,44 | 8,16 | 39,29 |
+| Upscaled to 2048xN Kodim | 14,68 | 69,55 | 65,41 | 322,26 | 57,81 | 253,48 |
+
+## BC1
+
+| Set | **Betsy ST** | **Betsy MT** | **nvcompress ST (CPU)** | **nvcompress MT (CPU)** |
+| ---------------------------- | ------------ | ------------ | ----------------------- | ----------------------- |
+| Kodim (25 textures) | 3,12 | 0,6 | 12,6 | 2,4 |
+| Upscaled to 2048xN Kodim | 4,87 | 1,34 | 85,07 | 16,17 |
+
+*Notes:*
+
+ 1. *This needs more research, but it appears BC1 is bottleneck by GPU initialization, GPU uploads and data download, rather than encoding time*
+ 1. *CVTT supports BC1, however its CLI tool doesn't come with BC1 support out of the box and I had no time to add support for it to do the benchmark*
+
+## BC5
+
+| | **Betsy ST** | **Betsy MT** | **nvcompress ST (CPU)** | **nvcompress MT (CPU)** |
+| ---------------------------- | ------------ | ------------ | ----------------------- | ----------------------- |
+| Kodim set (25 textures) | 2,94 | 0,73 | 1,97 | 0,42 |
+| Upscaled to 2048xN Kodim set | 5,84 | 1,70 | 13,18 | 0,86 |
+
+*Notes:*
+
+ 1. *This needs more research, but it appears BC5 is bottleneck by GPU initialization, GPU uploads and data download, rather than encoding time*
+ 1. *CVTT supports BC5, however its CLI tool doesn't come with BC5 support out of the box and I had no time to add support for it to do the benchmark*
+
+# Benchmark quality
+
+Notes:
+
+ 1. RSMLE: **Lower is better**. It means Root Mean Squared Logarithmic Error.
+ 1. Betsy q = 1 is medium quality
+ 1. Betsy q = 2 is maximum quality
+ 1. It is unknown why ConvectionKernels some RSMLE increased in ETC2 over ETC1. It could be a CVTT bug, or a difference in how CVTT measures error vs how I measured it.
+
+## ETC1 RGB
+
+| | Betsy (q = 1) | Betsy (q = 2) | ConvectionKernels | etc2comp |
+| ----------- | ------------- | ------------- | ----------------- | -------- |
+| **Average** | **0.0244532** | **0.02389376**| **0.02383864** | **0.02502284** |
+| kodim01.png | 0.027957 | 0.027166 | 0.026895 | 0.028578 |
+| kodim02.png | 0.021755 | 0.021433 | 0.021336 | 0.021954 |
+| kodim03.png | 0.019651 | 0.019205 | 0.01924 | 0.019886 |
+| kodim04.png | 0.021453 | 0.021123 | 0.020989 | 0.021704 |
+| kodim05.png | 0.033579 | 0.032763 | 0.032588 | 0.034686 |
+| kodim06.png | 0.024893 | 0.024265 | 0.024038 | 0.02545 |
+| kodim07.png | 0.021911 | 0.021344 | 0.021057 | 0.022076 |
+| kodim08.png | 0.032968 | 0.032022 | 0.031604 | 0.034042 |
+| kodim09.png | 0.02002 | 0.019602 | 0.01945 | 0.020201 |
+| kodim10.png | 0.01986 | 0.019409 | 0.019306 | 0.020063 |
+| kodim11.png | 0.023587 | 0.023122 | 0.022928 | 0.024056 |
+| kodim12.png | 0.018662 | 0.018255 | 0.018087 | 0.018833 |
+| kodim13.png | 0.035328 | 0.034559 | 0.034416 | 0.036992 |
+| kodim14.png | 0.030336 | 0.029845 | 0.029985 | 0.030972 |
+| kodim15.png | 0.02186 | 0.021373 | 0.021296 | 0.02207 |
+| kodim16.png | 0.019238 | 0.018806 | 0.018663 | 0.019542 |
+| kodim17.png | 0.020262 | 0.019792 | 0.019767 | 0.020738 |
+| kodim18.png | 0.027783 | 0.02724 | 0.02728 | 0.028719 |
+| kodim19.png | 0.023358 | 0.022718 | 0.022477 | 0.023831 |
+| kodim20.png | 0.019751 | 0.019281 | 0.019395 | 0.020377 |
+| kodim21.png | 0.025063 | 0.024488 | 0.024325 | 0.025592 |
+| kodim22.png | 0.02337 | 0.022873 | 0.023036 | 0.023909 |
+| kodim23.png | 0.020536 | 0.020071 | 0.020435 | 0.021016 |
+| kodim24.png | 0.028179 | 0.027181 | 0.028165 | 0.029515 |
+| kodim25.png | 0.02997 | 0.029408 | 0.029208 | 0.030769 |
+
+## ETC2 RGB
+
+| | Betsy (q = 1) | Betsy (q = 2) | ConvectionKernels | etc2comp |
+| ----------- | ------------- | ------------- | ----------------- | -------- |
+| **Average** | **0.02432348**| **0.02378536**| **0.02400548** | **0.02412212** |
+| kodim01.png | 0.027986 | 0.027183 | 0.027318 | 0.027943 |
+| kodim02.png | 0.021448 | 0.021169 | 0.020991 | 0.020887 |
+| kodim03.png | 0.019842 | 0.019471 | 0.018829 | 0.018195 |
+| kodim04.png | 0.021408 | 0.021105 | 0.020959 | 0.020991 |
+| kodim05.png | 0.03355 | 0.032722 | 0.033068 | 0.033774 |
+| kodim06.png | 0.02492 | 0.024283 | 0.024317 | 0.024731 |
+| kodim07.png | 0.02115 | 0.020651 | 0.020834 | 0.020812 |
+| kodim08.png | 0.033198 | 0.032233 | 0.03278 | 0.033356 |
+| kodim09.png | 0.019712 | 0.019335 | 0.019633 | 0.01955 |
+| kodim10.png | 0.019716 | 0.019285 | 0.019424 | 0.019459 |
+| kodim11.png | 0.023473 | 0.022995 | 0.023223 | 0.023395 |
+| kodim12.png | 0.018597 | 0.018215 | 0.018109 | 0.017998 |
+| kodim13.png | 0.03541 | 0.034635 | 0.035375 | 0.036008 |
+| kodim14.png | 0.030282 | 0.029791 | 0.029887 | 0.029976 |
+| kodim15.png | 0.021945 | 0.021515 | 0.021449 | 0.021243 |
+| kodim16.png | 0.01877 | 0.018382 | 0.01866 | 0.018717 |
+| kodim17.png | 0.020175 | 0.019729 | 0.019988 | 0.019844 |
+| kodim18.png | 0.028034 | 0.027471 | 0.027707 | 0.02808 |
+| kodim19.png | 0.023166 | 0.022545 | 0.022932 | 0.023125 |
+| kodim20.png | 0.019773 | 0.019299 | 0.019545 | 0.019642 |
+| kodim21.png | 0.02487 | 0.024313 | 0.024721 | 0.024833 |
+| kodim22.png | 0.02336 | 0.022859 | 0.023109 | 0.02323 |
+| kodim23.png | 0.019306 | 0.018971 | 0.019284 | 0.018592 |
+| kodim24.png | 0.028032 | 0.027072 | 0.02846 | 0.028448 |
+| kodim25.png | 0.029964 | 0.029405 | 0.029535 | 0.030224 |
+
+## BC1
+
+| | **Betsy** | **nvcompress** |
+| ----------- | ------------ | -------------- |
+| **Average** | **0.028589** | **0.026943** |
+| kodim01.png | 0.034792 | 0.032564 |
+| kodim02.png | 0.02562 | 0.024146 |
+| kodim03.png | 0.020277 | 0.018898 |
+| kodim04.png | 0.023814 | 0.022424 |
+| kodim05.png | 0.040001 | 0.037991 |
+| kodim06.png | 0.0298 | 0.028163 |
+| kodim07.png | 0.024172 | 0.022762 |
+| kodim08.png | 0.042638 | 0.040288 |
+| kodim09.png | 0.022284 | 0.020803 |
+| kodim10.png | 0.022031 | 0.020619 |
+| kodim11.png | 0.028216 | 0.026493 |
+| kodim12.png | 0.020243 | 0.01892 |
+| kodim13.png | 0.045498 | 0.042873 |
+| kodim14.png | 0.034357 | 0.032726 |
+| kodim15.png | 0.024274 | 0.023026 |
+| kodim16.png | 0.021505 | 0.019977 |
+| kodim17.png | 0.023141 | 0.021715 |
+| kodim18.png | 0.033236 | 0.031521 |
+| kodim19.png | 0.027642 | 0.025856 |
+| kodim20.png | 0.02268 | 0.021438 |
+| kodim21.png | 0.029862 | 0.028107 |
+| kodim22.png | 0.026809 | 0.02531 |
+| kodim23.png | 0.020595 | 0.019312 |
+| kodim24.png | 0.034883 | 0.033199 |
+| kodim25.png | 0.036355 | 0.034444 |
+
+## BC5
+
+| | **Betsy** | **nvcompress** |
+| ----------- | -------------- | -------------- |
+| **Average** | **0,40713988** | **0,4071152** |
+| kodim01.png | 0,380992 | 0,380943 |
+| kodim02.png | 0,147688 | 0,147673 |
+| kodim03.png | 0,341727 | 0,341719 |
+| kodim04.png | 0,35518 | 0,355176 |
+| kodim05.png | 0,317971 | 0,317893 |
+| kodim06.png | 0,467379 | 0,467362 |
+| kodim07.png | 0,368736 | 0,368721 |
+| kodim08.png | 0,507863 | 0,507801 |
+| kodim09.png | 0,511146 | 0,511134 |
+| kodim10.png | 0,482672 | 0,482662 |
+| kodim11.png | 0,364467 | 0,364442 |
+| kodim12.png | 0,570088 | 0,570084 |
+| kodim13.png | 0,388023 | 0,387951 |
+| kodim14.png | 0,313848 | 0,313811 |
+| kodim15.png | 0,495639 | 0,49563 |
+| kodim16.png | 0,404634 | 0,404633 |
+| kodim17.png | 0,329696 | 0,329685 |
+| kodim18.png | 0,229002 | 0,228954 |
+| kodim19.png | 0,424489 | 0,424464 |
+| kodim20.png | 0,70348 | 0,703468 |
+| kodim21.png | 0,487161 | 0,487138 |
+| kodim22.png | 0,393033 | 0,393022 |
+| kodim23.png | 0,364163 | 0,364154 |
+| kodim24.png | 0,424539 | 0,424513 |
+| kodim25.png | 0,404881 | 0,404847 |
+
+# Get Technical
+
+If you're a GPU nerd, we have an [in-depth analysis](https://github.com/darksylinc/betsy/blob/master/Docs/technical_doc_advanced.md) of how betsy's compute shaders are implemented.
+
+Keep in mind it is quite advanced and assumes you're somewhat familiar with GPU shader coding.
\ No newline at end of file
diff --git a/collections/_article/bugs-lets-catch-em-all-saturday.md b/collections/_article/bugs-lets-catch-em-all-saturday.md
new file mode 100644
index 0000000000..de5aad5a49
--- /dev/null
+++ b/collections/_article/bugs-lets-catch-em-all-saturday.md
@@ -0,0 +1,35 @@
+---
+title: "Bugs: Let's catch 'em all this Saturday 9 December"
+excerpt: "Both testers and developers are doing a great job, but we need to go ever faster to get Godot 3.0 out as soon as possible - especially now that the master branch is in feature freeze, meaning that new features will have to wait for Godot 3.1 to be merged.
+
+We propose to have a special bug hunting day on Saturday, 9 December, to focus on fixing the bugs reported for the 3.0 milestone. Testers are also encouraged to use this opportunity to file new bug reports, after checking existing issues for potential duplicates."
+categories: ["events"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5a2/add/15e/5a2add15ea3c5631753661.png
+date: 2017-12-08 19:02:08
+---
+
+Since our [Godot 3.0 beta 1](/article/dev-snapshot-godot-3-0-beta-1) release last week, there have been [more than 70 bugs fixed](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aclosed+closed%3A2017-11-29..2017-12-08+-label%3Aarchived) and over 100 bug reports created!
+
+Both testers and developers are doing a great job, but we need to go ever faster to get Godot 3.0 out as soon as possible - especially now that the *master* branch is in feature freeze, meaning that new features will have to wait for Godot 3.1 to be merged.
+
+## Bug hunting day on Saturday 9 December
+
+We propose to have a special bug hunting day tomorrow (Saturday 9 December), to focus on fixing the bugs reported for the 3.0 milestone. Testers are also encouraged to use this opportunity to file new bug reports, after checking existing issues for potential duplicates.
+
+### How does it work?
+
+Join us on the developers' IRC channel ([#godotengine-devel](http://webchat.freenode.net/?channels=#godotengine-devel) on Freenode, also accessible from Matrix) to discuss issues and potential fixes live, and pick any bug in the [3.0 milestone](https://github.com/godotengine/godot/milestone/4) to try to fix it. To avoid potential conflicts/duplicated work, add a comment in the relevant issue to state that you are working on it.
+
+If you don't know which issue to start with, check the [Hero Wanted!](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+label%3A%22hero+wanted%21%22) selection which lists bugs with useful debugging information and/or some hints about how to fix them.
+
+The event will start as soon as someone is awake in the channel on Saturday (our contributors from Asia and Australia will get to start :)), and will continue for the whole day over the globe's timezones.
+
+You're free to join for one hour or for the whole day, the important is that we fix issues and get to know each other at the same time. There should always be plenty of experienced devs around to help you get started if you are not very familiar with Godot's source code.
+
+### Links
+
+- [List of issues in the 3.0 milestone](https://github.com/godotengine/godot/milestone/4) (meant to be fixed before 3.0 is released, or eventually moved to the next milestone if non critical).
+- [List of "Hero Wanted!" issues](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+label%3A%22hero+wanted%21%22).
+- [Contributing docs](http://docs.godotengine.org/en/latest/community/contributing/ways_to_contribute.html), especially the parts of the [PR workflow](http://docs.godotengine.org/en/latest/community/contributing/pr_workflow.html) and the [code style guidelines](http://docs.godotengine.org/en/latest/community/contributing/code_style_guidelines.html).
+- [#godotengine-devel on Freenode](http://webchat.freenode.net/?channels=#godotengine-devel)
\ No newline at end of file
diff --git a/collections/_article/call-for-participation-online-godotcon-2021.md b/collections/_article/call-for-participation-online-godotcon-2021.md
new file mode 100644
index 0000000000..11dda70a8b
--- /dev/null
+++ b/collections/_article/call-for-participation-online-godotcon-2021.md
@@ -0,0 +1,53 @@
+---
+title: "Call for participation to Online GodotCon 2021"
+excerpt: "Given the international situation, we are going online for our next Godot conference in 2021! Online GodotCon 2021 will happen on the 23rd of January 2021, with pre-recorded talks and then live Q&As with the speakers, as well as a dedicated chat platform for attendees to socialize together. We're now asking all interested users to send us proposals for talks, demos, etc. for the event."
+categories: ["events"]
+author: Julian Murgia
+image: /storage/app/uploads/public/5fc/8f2/85e/5fc8f285e75a5623838507.png
+date: 2020-12-03 14:25:37
+---
+
+2021 is quickly approaching and in the Godot community we are starting to prepare for next year's GodotCon!
+
+As you might know, each year we attend FOSDEM, the major Free and Open Source event in Europe, and we use the opportunity to organise our own small conference as a fringe event: GodotCon! A meetup for contributors, users and interested people to socialize, collaborate and share knowledge.
+
+Sadly, given the uncertainty regarding international travel and the possibility to host big gatherings, FOSDEM has decided to go online-only for next year's edition and we are taking the same decision for our own GodotCon.
+
+It's not all bad news because as much as we'll miss meeting each other in person, we must see it as an opportunity for everyone to participate, no matter where they are located.
+
+# So, what's the plan?
+
+**Online GodotCon 2021** will happen on the **23rd of January** (the weekend before the Global Game Jam ;)) and will consist of a video stream with pre-recorded talks and a community platform to host chat and Q&A.
+
+We decided to go for pre-recorded event as this will be our first fully online event and we would like to simplify its technical complexity so everyone has the best experience. This will also make it more comfortable for users to present if GodotCon is happening at an impractical time for their timezone.
+
+We are preparing a way for users to submit questions for the presenter to answer, we will share more info on this topic closer to the event.
+
+As usual for Godot events, Online GodotCon 2021 will be **free of charge**, and the video streams will be available to replay after the event. More precise details on the streaming and chat platforms, as well as start and end time, will be announced in coming weeks.
+
+# Call for participation
+
+Over the coming weeks, we encourage anyone interested to send us proposals for talks, workshops or any other idea you would like to host. GodotCon is an event made by Godot users, so we need you to propose content that will make it a great event for all attendees.
+
+We are interested in any Godot-related topic. It can be a talk about your own Godot project, the tricks you're using in your workflow, a specific feature or plugin that you developed in the engine, etc. We'd like to have diverse speakers and topics, so if you're using Godot for non-gaming topics (education, research, non-game apps, etc.), you're also very welcome to share this with the community. Basically, feel free to propose anything that you think could be worth sharing with fellow Godot users and/or contributors.
+
+As an indication, we propose a duration of 20 minutes (+ 5-10 min Q&A) for talks, though you can tell us if you'd prefer a different format. A 5 min presentation of your game would be welcome, and a 40 min talk is fine too if the topic is worth it :)
+
+Please send your proposals to godotcon *at* godotengine *·* org with the following information:
+
+* Type (talk, tutorial, live demo… anything you think would be fun to see)
+* Title
+* Abstract (short description of what it will be about)
+* Preferred communication method (for us to contact you)
+
+Don't overthink the above too much, we'd prefer to know ASAP who may give a talk, and we can fill in more details later on.
+
+For inspiration, feel free to review the schedules of past events for a glimpse at the kind of activities that we usually have ([Brussels 2019](/article/schedule-godotcon-2019-brussels), [Poznań 2019](/article/schedule-godotcon-2019-poznan), [Brussels 2020](/article/schedule-godotcon-2020-brussels)).
+
+We will schedule the event as soon as possible and get back to you if we accept your presentation so you can start working on it. Please, try to send your proposals **before the 31st of December** so there is plenty of time to schedule and prepare it.
+
+# More questions?
+
+For any other questions, please, don't hesitate to write to that same mail (godotcon *at* godotengine *·* org) and the GodotCon team (Aina, Ilaria, Julian, and Wojciech) will try to solve your doubts.
+
+Thanks everyone and we hope to see you at our first Online GodotCon 2021!
\ No newline at end of file
diff --git a/collections/_article/call-participation-godotcon-2019.md b/collections/_article/call-participation-godotcon-2019.md
new file mode 100644
index 0000000000..5a72b9ccae
--- /dev/null
+++ b/collections/_article/call-participation-godotcon-2019.md
@@ -0,0 +1,40 @@
+---
+title: "Call for participation for GodotCon 2019"
+excerpt: "We have a full week of Godot-related events upcoming in Brussels, Belgium, with the Godot Sprint (31 Jan & 1 Feb 2019), FOSDEM (2-3 Feb 2019) and GodotCon (4-5 Feb 2019)! The venue for the Sprint and GodotCon has now been found, it will be the Ludus Académie in Brussels. We're now asking for proposals of talks, workshops, etc. from GodotCon attendees. The speakers lineup will be announced on this blog in January."
+categories: ["events"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c1/8f7/f3c/5c18f7f3cc9b6563814474.png
+date: 2018-12-18 13:34:46
+---
+
+Last month [we announced the **GodotCon 2019**](/article/meet-community-fosdem-and-godotcon-2019) in Brussels (4-5 Feb 2019), as well as a contributors-focused **Godot Sprint** (31 Jan & 1 Feb 2019) and our stand at the [**FOSDEM 2019**](https://fosdem.org) (2-3 Feb 2019).
+
+We have a few updates since then:
+
+- We found a venue for GodotCon and the Godot Sprint: it will be at the [**Ludus Académie**](http://www.ludus-academie.com), like last year (Quai du Commerce, 48, 1000 Brussels). Thanks a ton to the Ludus staff and students for generously hosting us another year :)
+- Our stand at FOSDEM was confirmed! We're still waiting on an answer to Juan's talk proposal.
+- *Update:* Juan's main track at FOSDEM was just confirmed! Stay tuned for details.
+
+If you haven't done so yet, we encourage you to book accommodation in the vicinity of the Ludus Académie ([OpenStreetMap](https://www.openstreetmap.org/?mlat=50.85717&mlon=4.34818#map=19/50.85717/4.34818)). Note that Brussels public transportation network works quite well, so it's fine if you're staying a bit further away.
+
+[**You can still register!**](https://framaforms.org/registration-for-godotcon-godot-sprint-brussels-2019-1541594499)
+We currently have more than 50 persons registered for GodotCon, and expect more to register until the event, as well as 25 contributors signed up for the Godot Sprint. Both events are going to be a lot of fun :)
+
+-----
+
+The next step is to define our line-up of speakers for GodotCon, who will be giving talks, workshops or other activities. That's where we need *you* to step up!
+
+We're interested in any Godot-related topic. It can be a technical presentation of upcoming engine features, a talk about your own Godot project, the tricks you're using in your workflow, a workshop about a lesser known feature of the engine, etc. Basically, feel free to propose anything that you think could be worth sharing with fellow Godot users.
+
+As an indication, we propose a duration of **20 minutes** (+ 5-10 min Q&A) for talks, though you can tell us if you'd prefer less or more time. A 5 min presentation of your game would be welcome, and a 30 min talk or workshop is fine too if the topic is worth it :) Even longer workshops could be imagined (e.g. 1h or 1h30) – we'll have several rooms so we could run a long workshop in one room while shorter talks happen in another one.
+
+**Please send your proposals** to *remi at godotengine · org*, with the following information:
+
+- Type (talk, workshop, round table, live demo, live tutorial... feel free to think outside the box)
+- Title
+- Abstract (short description of what it will be about)
+- Expected duration
+
+Don't overthink the above too much, I'd prefer to know *ASAP* who may give a talk, and we can fill in more details later on.
+
+Note for Godot Sprint attendees: don't hesitate to also propose talks, workshops, dev discussions, etc. for the Sprint. We'll have two days to focus on contribution work (engine, documentation, tutorials), and it's up to all of us to make it a great knowledge-sharing event.
\ No newline at end of file
diff --git a/collections/_article/call-volunteers-organizing-regional-communities.md b/collections/_article/call-volunteers-organizing-regional-communities.md
new file mode 100644
index 0000000000..f3e7cc26f3
--- /dev/null
+++ b/collections/_article/call-volunteers-organizing-regional-communities.md
@@ -0,0 +1,62 @@
+---
+title: "Call for volunteers for organizing regional communities"
+excerpt: "Godot communities keep growing steadily around the world. As a result, in the past years, many local groups related to Godot usage and development have started to appear in different continents, countries and cities.
+We now start a Regional Communities team to connect those groups together and give them better visibility on official Godot platforms."
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5e1/0a0/456/5e10a04563669518301236.png
+date: 2020-02-26 15:08:03
+---
+
+Godot communities keep growing steadily around the world. As a result, in the past years, many local groups related to Godot usage and development have started to appear in different continents, countries and cities.
+
+Each of them usually has their own model and activities, but often suffer of visibility problems, as it is difficult for Godot users in those regions to know such groups exist and what they do.
+
+## Connecting the communities
+
+After much discussion, we decided it could be useful for them if we could keep track of what they do and publicize their existence and activities in our official channels. This way, nearby users can find about those groups and engage in their activities, or use other groups as models to create their own if none exists.
+
+Additionally, having a better idea of where Godot communities are can make sure the project can help them in a more "official" way, from encouraging and helping them to participate in local gamedev events, to creating materials they can use for workshops and talks.
+
+## Regional Communities team
+
+Unfortunately, Godot as a project does not currently have enough experience or resources to be able to do this task, and the project management is too busy coordinating the engine development itself. Because of this, we came up with the idea to do a call for volunteers, hoping some experienced organizers may be willing to take on this task.
+
+The plan is to form a **Regional Communities** team that can work together on these tasks. There are no rules on how this team will assign responsibilities to its members. As most things in Godot development, it will be up to the volunteers to discuss, agree and organize.
+
+The Regional Communities team would be composed of organizers of regional communities, and any other contributor interested in helping with the meta-organization of all Godot communities.
+
+To clarify, we'd like all existing regional communities organizers to join the Regional Communities team, if only to share information about your own community. And then we'd want some of the team members to help with any infrastructure, web development and communication work needed to make regional communities visible and efficient.
+
+## Tasks
+
+Our initial idea for tasks in the Regional Communities team would be:
+
+* Reach out to all Godot communities around the world.
+* Work with the admins to create a more centralized flow of information of what is going on. If activities happen in those communities, use our social networks to promote them.
+* Work on a local map of communities and representatives, similar [to this one](https://www.gamedevmap.com/), that we can put in our [community page](https://godotengine.org/community).
+* Make the [user groups](https://godotengine.org/community/user-groups/) page a more fancy portal, and help fill missing content.
+* Investigate video game development events around the world, large or small. Some may require asking people from different regions. Contact the event organizers to propose them Godot talks, then see who from our community would be willing to speak at each event.
+* Help local communities organize Godot events, game jams, workshops, etc.
+* Help communities share materials they created for use by other communities.
+
+## Volunteer profile
+
+The project expects to find volunteers matching the following profile as best as possible:
+
+* Always being nice, able to listen and able to express your views politely.
+* Significant experience communicating with others, good social interaction skills and being a polite person.
+* Having a significant understanding of the game development communities in general.
+* Having some experience assisting game development events.
+
+## Joining the team
+
+To get the team started, we created a `#godotengine-regional` IRC channel on Freenode, where we invite everyone interested in this new Regional Communities team.
+
+For those not already familiar with IRC, we suggest using the open source [Matrix](https://matrix.org/) communication platform (and its [Riot.im](https://riot.im) cross-platform client app) which is bridged with Freenode IRC, and lets you have persistent logs even when you're offline. Once connected on Matrix, you can join the bridged channel which is named `#freenode_#godotengine-regional:matrix.org`.
+
+Eventually some motivated members of the Regional Communities team could look into ways to also bridge this channel with the official Discord server, to lower the entry barrier for all community managers.
+
+From there, we can brainstorm together on additional tools that might be relevant to efficiently handle the team's tasks.
+
+See you around in the Regional Communities channel!
\ No newline at end of file
diff --git a/collections/_article/camille-mohr-daurat-hired-work-physics.md b/collections/_article/camille-mohr-daurat-hired-work-physics.md
new file mode 100644
index 0000000000..9ef5b670e0
--- /dev/null
+++ b/collections/_article/camille-mohr-daurat-hired-work-physics.md
@@ -0,0 +1,82 @@
+---
+title: "Camille Mohr-Daurat was hired to work on physics"
+excerpt: "We hired Camille Mohr-Daurat to work on the 2D and 3D physics engines for Godot 4."
+categories: ["news"]
+author: Camille Mohr-Daurat
+image: /storage/app/uploads/public/5fd/d4a/1da/5fdd4a1dadfac213080744.png
+date: 2020-12-19 10:30:00
+---
+
+Hi!
+
+Camille here, aka [PouleyKetchoupp](https://github.com/pouleyKetchoupp).
+
+Thanks to a generous donation, I was brought onto the team to work part-time on improving the 2D and 3D physics engines for the next 6 months.
+
+The main goal is to modernize Godot Physics 2D and Godot Physics 3D, the custom physics backends Godot uses internally for physics simulation.
+
+**For 3D physics:** Bullet is currently the default physics engine, but this will change. Godot Physics will become the new default after improvements and no loss in functionality is verified. The reason being Godot Physics is lighter, simpler and easier to maintain. That will make 3D physics easier to use and more reliable for most use-cases out of the box.
+
+**Will it be still possible to use Bullet Physics in Godot?**
+
+Yes, Bullet will still be available as an official plugin for the cases where you need specific features.
+
+And not just that, but Godot 4 improvements around GDNative will allow different physics engines to be easily integrated as plugins. This opens the possibility for Nvidia PhysX to be supported in the future.
+
+**For 2D physics:** Godot already uses a custom engine so there will be no major change, although it will also be improved and optimized.
+
+
+## Plan in details
+
+Though most changes will be done for Godot 4, some fixes and improvements that can easily be backported will be included in 3.2 updates.
+
+Here is my general roadmap:
+
+#### 1. Add physics test framework
+
+The first step is to add a series of physics tests for Godot that will help with physics engine maintenance.
+
+**Functional tests** will be added to check for regressions and compare behavior between physics engines.
+
+**Performance tests** will be added to evaluate and compare performance between physics engines.
+
+These tests will be part of the official Godot demos. You can already check the progress for [3D](https://github.com/godotengine/godot-demo-projects/tree/master/3d/physics_tests) and [2D](https://github.com/godotengine/godot-demo-projects/tree/master/2d/physics_tests).
+
+#### 2. Review and fix physics issues
+
+With the help of other physics contributors, I will audit existing issues with Godot Physics 2D and 3D, review existing pull requests, and implement fixes in order to make the custom physics backends as stable as possible.
+
+New cases will be added to the physics test framework based on these issues to keep it up-to-date.
+
+#### 3. Implement features for Godot Physics 2D/3D
+
+The next step is to implement all needed features for the custom physics engines in order to match Bullet Physics (for 3D) and consider them feature complete for Godot 4.0.
+
+The current list of features is:
+- Soft bodies (3D only)
+- Cylinder shapes (3D only)
+- Heightmap shapes (3D only)
+- Buoyancy (new feature for 2D/3D to allow objects to float in Areas)
+
+#### 4. Optimize Godot Physics
+
+Godot Physics 2D and 3D will be improved in order to have good enough performance in the most common scenarios.
+
+Optimizations include:
+- Broadphase improvements (using dynamic BVH tree)
+- Solver improvements (using jacobians)
+- SAT collision improvements
+- Adding multithreading whenever possible
+
+The optimization task list might change depending on performance investigations on the physics engines.
+
+#### 5. Review of extra physics topics
+
+Finally, depending on the remaining time I have, I will help move along extra features and improvements for Godot 4, based on some [Godot Proposals](https://github.com/godotengine/godot-proposals/issues?q=is%3Aopen+is%3Aissue+label%3Atopic%3Aphysics).
+
+You will be able to get development progress updates on this blog or by following me on [Twitter](https://twitter.com/PouleyKetchoup).
+
+---
+
+*Credits illustration: Robot Head model by James Redmond (fracteed) 2018*
+*http://www.fracteed.com/godot.html*
\ No newline at end of file
diff --git a/collections/_article/cfp-game-development-room-fosdem-2020.md b/collections/_article/cfp-game-development-room-fosdem-2020.md
new file mode 100644
index 0000000000..57fe0fadea
--- /dev/null
+++ b/collections/_article/cfp-game-development-room-fosdem-2020.md
@@ -0,0 +1,46 @@
+---
+title: "CFP: Game Development room at FOSDEM 2020"
+excerpt: "We organize a devroom focused on free and open source Game Development at the FOSDEM 2020 in Brussels, on February 1-2, 2020.
+We ask any interested developer or user of FOSS game development tools or games to send us their talk proposals until December 1, 2019."
+categories: ["events"]
+author: George Marques
+image: /storage/app/uploads/public/5d9/dea/c0b/5d9deac0ba681055155639.png
+date: 2019-10-09 14:10:40
+---
+
+We are happy to announce that we will be organizing a **Game Development devroom** at [FOSDEM 2020](https://fosdem.org/2020/)! The event will take place on 1st and 2nd of February at the usual venue in Brussels, Belgium. The devroom will last for a full day (most likely Saturday, but not set in stone yet).
+
+**Note:** While this CFP is published on Godot's blog, we want to outline that this FOSDEM devroom will be about **Free and Open Source Game Development** at large, and not focused on Godot Engine. We will assess all proposals independently of the engine or framework used, as long as it is free and open source.
+
+## About the Game Development devroom
+
+Open source is often neglected in the game industry—and the reverse is also true: game development is often neglected in open source. We want to present that it is possible to combine the two. In particular, Godot being an open source game engine is a proof of that.
+
+We want to present open source tools to make games. That not only include engines but also asset-making tools. There are many industry-grade open source tools which are growing in use in the gamedev world. Software as Blender, Krita, GIMP, Ardour, LMMS, etc. can be applied to any kind of game.
+
+More importantly, we want to present games made with those tools. We want to hear the benefits, the insights, the hurdles, the challenges, the sleepless nights and everything. Real examples are always a great inspiration for other game developers, even (or maybe especially) when things don't go perfectly. Talking about changing tools is welcome too (either from proprietary to open source, or between FOSS solutions), as we can hear a perspective about the differences between them.
+
+Also, we want to hear about open source games. What are the issues with those and the benefits, and whether it can be a viable business model.
+
+## Call for participation
+
+This is the point where we ask you to participate. Even though we from Godot are organizing the room, we want to hear from people using other engines and tools as well. There's no discrimination, we want to hear experiences from everybody (even if are you moving out of Godot for some reason).
+
+We ask you to submit the proposals through FOSDEM's pentabarf system at https://penta.fosdem.org/submission/FOSDEM20. If you already have an account, please use the same as they show speakers' participation across the editions. We'll be using that system to organize the schedule. Please take your time to fill up the fields, especially the descriptions, as that will be shown on FOSDEM website and booklets.
+
+The topic can be anything related to open source together with game development, be it tools or games.
+
+The time slot for presentations is 25 min including questions (if you think your topic would fit better in a longer time slot, feel free to contact us to discuss it – see email below).
+We also plan a 1-hour session in the middle of the day to have several *lightning talks* of 10 min each, so you can apply for this too if you prefer this format.
+
+Please submit the proposal at the latest on December 1st. FOSDEM has a hard limit on December 14th, but we want some leeway to properly arrange the schedule. We can't guarantee participation after our deadline.
+
+If you have any doubts or want to volunteer to help us organizing (manning the camera, helping speaker transitions, moderating audience questions, etc.) you can let us know by sending a message to `contact at godotengine dot org`.
+
+## Audience
+
+We naturally want people to watch the presentations. Entrance to FOSDEM is free and doesn't require registration. If you want to meet fellow game developers in the open source world, this is the opportunity.
+
+Note that barring any technical difficulties, the talks should be recorded and made available under a Creative Commons license on the FOSDEM website shortly after the event.
+
+See you all in Brussels!
\ No newline at end of file
diff --git a/collections/_article/change-image.md b/collections/_article/change-image.md
new file mode 100644
index 0000000000..e4860eaefe
--- /dev/null
+++ b/collections/_article/change-image.md
@@ -0,0 +1,62 @@
+---
+title: "A change of Image"
+excerpt: "Godot has many built-in types. Built-in types are used for non-pointer API arguments, where you need to pass around information fast and you don't really care much about keeping a reference. One of the early built-in types in Godot is Image, which is like a Vector, but with a little more information related to image data (such as width, height, format and whether or not it has mipmaps)."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/57e/5b7/9a6/57e5b79a6b638283853884.png
+date: 2016-09-22 00:00:00
+---
+
+# Image
+
+Godot has many built-in types. Built-in types are used for non-pointer API arguments, where you need to pass around information fast and you don't really care much about keeping a reference.
+
+One of the early built-in types in Godot is Image, which is like a Vector, but with a little more information related to image data (such as width, height, format and whether or not it has mipmaps).
+
+### Origins
+
+I tried to track down an early version of Image class and could find this from 2006.
+
+
+
+
+You can see an old Macro from when we used Tolua++ to interface! Back then Godot (or what little was of it) ran on the Nintendo DS and Sony PSP, so indexed texture compression was the most common! Other than that, and save for many helpers for dealing with image processing, this class has not changed much in years.
+
+### Present
+
+With the excuse of compatibility, new formats piled up over a decade to end in their current state.
+
+
+
+Some stuff we added was:
+
+* YUV textures, so we could send them to a video buffer and do conversion in GPU. This was, however, pretty hacky to do in the end and did not improve performance that much over an SSE conversor.
+* BC texture compression, which is the most common on PC and consoles.
+* PVRTC texture compression, which is common on Apple devices.
+* ETC texture compression, used by Android devices.
+* Also ATC, used by Qualcomm, which is kind of the same as S3TC with different ramp values to work around patents.
+* Ability to send custom data to a texture. We used this when working in PSP and PS3 games, so we could load texture data swizzled (old GPUs expected you to load texture data in a special format friendlier to cache, nowadays GPUs can rewire memory to work around this limitation or use texture formats which are already swizzled).
+
+Two decades ago, everyone wanted to make their own graphics API and protect it with patents, so texture compression algorithms were all patented and barely no one wanted to bet on open APIs. To say the truth, only NVidia kept OpenGL kicking, as Intel and AMD support for it were a mess. As a result, there are plenty of competing texture compression formats (out of which only PVRTC is truly innovative IMO, but also patented). PC and consoles generally supported S3TC, but on mobile no GPU manufacturer wanted to lose money to S3 patents so each used their own compression format (or no compression at all, like ARM MALI).
+
+For Apple devices PVRTC is somehow standard, but on Android this is a mess. Google tried to improve the situation by making ETC the standard in all Android devices, but this compression only covers opaque textures.
+
+### Future
+
+As Godot 3.0 will remove a lot of compatibility in exchange for many improvements, and given we already started work on a new renderer, this became a great opportunity to clean up this class.
+
+Many formats and naming conventions are now obsolete, and new formats became common. As such, Image is going through a clean-up:
+
+
+
+The following changes happened:
+
+* Renamed all formats to a more standard convention including formant, components and bit depth.
+* Dropped YUV (may come back, but we are slowly moving to use native APIs for video playback, or built-in libraries for playing into a texture).
+* Added floating point types (float and half float).
+* Renamed BC to have a less-Microsoft naming (I know DXT is also a Microsoft name, but it's the one used by the OpenGL extension).
+* Added ETC2 format, which is now standard in OpenGL 4.3, OpenGL ES 3.0 and Vulkan.
+* Removed custom format, as its use case is no longer relevant.
+
+
+When OpenGL ES 2.0 and non-Vulkan based devices and GPUs become obsolete enough, we'll probably have to rewrite this API again to remove all the extra unnecessary formats, but this won't happen for some years. Feedback welcome!
\ No newline at end of file
diff --git a/collections/_article/code-of-conduct-godot-community.md b/collections/_article/code-of-conduct-godot-community.md
new file mode 100644
index 0000000000..cfe1668777
--- /dev/null
+++ b/collections/_article/code-of-conduct-godot-community.md
@@ -0,0 +1,29 @@
+---
+title: "Code of Conduct for the Godot community"
+excerpt: "The Godot community now has a Code of Conduct, which applies to all users and contributors on all Godot community platforms, both online and at Godot-related events.
+It defines common sense guidelines to ensure that our community platforms are a safe and welcoming environment for all Godot users. By interacting with other participants in the Godot community, you agree to respect the terms of the Code of Conduct."
+categories: ["news"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5dc/019/1f9/5dc0191f92385004371530.svg
+date: 2019-11-04 12:27:14
+---
+
+The Godot community now has a **[Code of Conduct](/code-of-conduct)**, which applies to all users and contributors on all Godot [community platforms](/community), both online and at Godot-related events.
+
+It defines common sense guidelines to ensure that our community platforms are a safe and welcoming environment for all Godot users. By interacting with other participants in the Godot community, you agree to respect the terms of the Code of Conduct.
+
+---
+
+During the past five years of free and open source, collaborative development, we've been blessed with one of the best-behaved online communities that I have been in contact with. The vast majority of users on all our community platforms dearly care both for the Godot project itself, but also for all their fellow participants.
+
+Yet there are occasional outliers, and to properly moderate an ever growing community (more than doubling in size each year) we need a written statement for the *de facto* guidelines that our moderation teams have applied until now. This will give users a clear overview of our expectations for positive and respectful behavior. Community moderators, who are also participants donating their free time to ensure a safe environment for all users, will therefore be able to back their decisions with common guidelines.
+
+While we agreed many months ago with core contributors to introduce a Code of Conduct to that effect, it took us a while to finally write it down and ensure that it fully describes our values and expectations. As existing documents used by other projects did not fully satisfy our requirements, we finally decided to write our own.
+
+Visit the **[Code of Conduct](/code-of-conduct)** page of this website to read the full guidelines.
+
+The page also includes the contact details for the [Code of Conduct team](/code-of-conduct#coc-team) and its members, who are in charge of reviewing and acting upon any reports of participants breaching the Code of Conduct.
+
+The document was written by the Godot [Project Leadership Committee](/contact#plc) with help and reviews from various other core contributors and platform moderators.
+
+All [community platforms](/community) will be updated to refer to the [Code of Conduct](/code-of-conduct) page in their usage guidelines.
\ No newline at end of file
diff --git a/collections/_article/community-forum-back.md b/collections/_article/community-forum-back.md
new file mode 100644
index 0000000000..4514577dcb
--- /dev/null
+++ b/collections/_article/community-forum-back.md
@@ -0,0 +1,29 @@
+---
+title: "The community forum is back!"
+excerpt: "Some members of the community have set up a new Godot Developers forum, with the contents from the old forum as well as many new features to showcase games and share content.
+We also set up an official YouTube channel for Godot and uploaded a showcase video of some very nice games developed with Godot!"
+categories: ["news"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/570/208/830/570208830cf55249521112.jpg
+date: 2016-04-04 00:00:00
+---
+
+## Godot Developers forum
+
+The community asked for it, and the community made it! The new [Godot Developers forum](http://godotdevelopers.org) is live and ready for you to use it!
+
+[](http://forum.godotdevelopers.org)
+
+Godot used to have an official forum alongside the [other community channels](/community), but when designing [our new website](/article/home-sweet-home), it was decided to publish it even though we did not have the time and infrastructure to setup a new forum (and most importantly to migrate the old posts into the new database).
+
+Still, many members of the community [expressed their wish](/qa/560/anybody-interested-in-an-unofficial-godot-forum) for a traditional forum to use for general discussion about Godot, advanced support requests and to showcase projects. Some community members thus decided to setup a forum themselves, on their own hosting and using [SMF](http://www.simplemachines.org). With the blessing of the core Godot developers, they did an impressive work to migrate the old database and design cool features and branding for their forum.
+
+A heartfelt thank to Timo (toger5) and Kiori for their dedication, and we hope that you will all have a good experience on this new community forum. Make sure to [read the various announcements](http://godotdevelopers.org/index.php?board=2.0) about the forum rules and how to use its specific features!
+
+## YouTube channel and games showcase
+
+To celebrate this new forum and the recent 2.0 release, we also published a [video showcase](https://www.youtube.com/watch?v=6sJFMyI3eZ0) of some of the nice games being developed with Godot. Thanks a lot to Andrew Conrad and Freeman for [editing the video](https://github.com/godotengine/godot/issues/3877) and composing the soundtrack respectively.
+
+
+
+We also have an [official YouTube channel](https://www.youtube.com/channel/UCKIDvfZD1ZhY4_hhbotf7wA) to post such videos; we hope to do some more of these showcase videos in the future, and also trailers to show the features of new Godot releases.
\ No newline at end of file
diff --git a/collections/_article/complex-text-layouts-progress-report-1.md b/collections/_article/complex-text-layouts-progress-report-1.md
new file mode 100644
index 0000000000..017d157d90
--- /dev/null
+++ b/collections/_article/complex-text-layouts-progress-report-1.md
@@ -0,0 +1,109 @@
+---
+title: "Complex text layouts progress report #1"
+excerpt: "Report on the complex text layouts support implementation progress, part one: TextServer interface implementation details."
+categories: ["progress-report"]
+author: Pāvels Nadtočajevs
+image: /storage/app/uploads/public/5f8/6ec/9d7/5f86ec9d7d0fd694122636.png
+date: 2020-10-14 14:20:00
+---
+
+# Introduction
+
+Hello! [bruvzg](https://github.com/bruvzg) here, I got hired by the Godot team to work on the complex text layouts and BiDi aware UI implementation. This is the first part that focuses on TextServer API implementation.
+
+See [GH-1180](https://github.com/godotengine/godot-proposals/issues/1180), [GH-1181](https://github.com/godotengine/godot-proposals/issues/1181), [GH-1182](https://github.com/godotengine/godot-proposals/issues/1182), [GH-1183](https://github.com/godotengine/godot-proposals/issues/1183) on GitHub for detailed information on CTL proposals and feedback.
+
+Currently, text display in Godot Engine is extremely limited, text is drawn character-by-character, left-to-right without kerning and support for any other font features.
+
+Godot is incapable of correctly displaying text in the languages that are written right-to-left (e.g. Arabic, Hebrew), have context-sensitive characters (e.g. Arabic positional shape-forms) and ligatures or character reordering (e.g. Devanagari consonant placement).
+
+# How does this work?
+
+Since Godot is game engine and CTL support is slower than simple text display and can (depending on the set of supported features) substantially increase the size of the exported project, and is not required for every game, CTL support is implemented as standalone `TextServer` module, that can be disabled, or easily moved to the GDNative library in the future.
+
+Here's `TextServer` API in the current state (API is not final and is subject to minor changes during further development): https://bruvzg.github.io/textserver-api-overview.html
+
+# Preparation work
+
+`wchar_t` type that was previously used by Godot to store Unicode string, is inconsistent and have different size on different platforms. Due to lack of UTF-16 surrogate pair support Godot was incapable to store and display character outside the basic multilingual plane (characters with the codes above `0xFFFF`, e.g. emojis) on Windows, where `wchar_t` is 16-bit.
+
+For the ease of `TextServer` and GDNative interface development, Godot strings were changed to always use C++11 `char32_t` type and store string in UTF-32 encoding.
+Additionally, fully functional (with surrogate pairs support) conversion to and from UTF-16 is implemented for use with Windows APIs.
+All ASCII/Latin-1, UTF-8, UTF-16, and UTF-32 functions are exposed to GDNative and covered with unit tests.
+
+# TextServer structure
+
+
+
+The new implementation introduces `TextServer` singleton, for low level handling of:
+
+* Fonts (loading font files, font substitution, and rendering text).
+* Text processing for display:
+ * Bi-directional reordering, using ICU library, with the optional override for highly structured texts (e.g. File path, URIs, and source code).
+ * Breaking text into uniform (with the same language, writing system, font and direction along whole text) runs (custom implementation, backed with ICU Unicode database API).
+ * Context-sensitive shaping (translation a string of character into a properly arranged sequence of glyphs, OpenType features), using HarfBuzz and SIL Graphite libraries.
+* Line breaking (custom implementation, optionally backed with ICU Break Iterator API).
+* Text justification (fitting text to the desired width), using spaces and kashidas, (custom implementation, optionally backed with ICU Break Iterator API to break words in the languages without spaces between the words).
+* Aligning text to the tab stops.
+* Helper functions for the input controls:
+ * Detection of selection/highlight rectangles in the bi-directional text.
+ * Split caret drawing (caret on the border of different direction runs).
+ * Caret movement over composite graphemes (composed of multiple combining characters).
+ * Hit testing for caret placement.
+
+# Current TextServer implementations
+
+All text server implementations are fully interchangeable, project development with one text server can be easily switched to the different one without any changes to the code or resources. Changing text server in runtime is also possible but require reloading all themes and fonts, and refreshing all controls, therefore it's not recommended.
+
+## TextServerAdvanced
+
+ICU, HarfBuzz, and SIL Graphite backed text server.
+
+Default text server with full CTL support, vertical text support (vertical text can be shaped and displayed by text server, but currently there're no plans to support it in controls).
+
+`TextServerAdvanced` is capable of loading and using ICU break iterator database (4 MB). Break iterator database is included in the editor binary by default, and can be added to the exported project on demand, without rebuilding export templates.
+
+Supports TrueType/OpenType (FreeType backed) and BMFont format fonts.
+
+
+*`TextServerAdvanced` - with BiDi and shaping support.*
+
+## TextServerFallback
+
+Simple, fallback text server without BiDi, shaping, OpenType font features and kashida justification support.
+
+`TextServerFallback` supports basic font features, like kerning, line breaking (using spaces to detect words), basic justification and have limited vertical text support.
+Fallback text server is intended for use in the projects that do not need CTL support to avoid CTL overhead. Fallback text server can be used with Godot editor as well, in this case unsupported locales are automatically disabled.
+
+Supports same font types as the `TextServerAdvanced`.
+
+
+*`TextServerFallback` - No BiDi and contextual shaping.*
+
+## TextServerGDNative
+
+Wrapper class for the GDNative text server implementations.
+
+## Reference work
+
+* TextServer implementation proposal - https://github.com/godotengine/godot-proposals/issues/1180
+* UTF-32 transition - https://github.com/godotengine/godot/pull/40999 (merged to the master branch).
+* Text server implementations - https://github.com/godotengine/godot/pull/41100 (first 4 commits, PR is regularly rebased to keep up with upstream changes, exact commit hashes may vary).
+* BiDi and shaping process overview diagram - https://bruvzg.github.io/media/files/gdtl_operation_notes_1_shaping_draft.pdf
+* Line breaking process overview diagram - https://bruvzg.github.io/media/files/gdtl_operation_notes_2_line_breaking_draft.pdf
+* Line justification process overview diagram - https://bruvzg.github.io/media/files/gdtl_operation_notes_3_justification_draft.pdf
+* GDNative library template - https://github.com/bruvzg/gdnative_text_server_template (dummy GDNative library implementation, intended as a base for future CoreText, DirectWrite based text servers or/and moving ICU/HarfBuzz based text server out of the core engine distribution).
+
+## Additional resources
+
+* UAX #9: Unicode Bidirectional Algorithm - http://www.unicode.org/reports/tr9/
+* Bidirectional text FAQ - http://www.unicode.org/faq/bidi.html
+* ICU homepage - http://site.icu-project.org/
+* HarfBuzz homepage - https://harfbuzz.github.io/
+* SIL Graphite homepage - https://scripts.sil.org/cms/scripts/page.php?site_id=projects&item_id=graphite_home
+* Approaches to full justification - https://www.w3.org/International/articles/typography/justification
+* Kashida expansion priorities - https://web.archive.org/web/20160304113846/http://www.microsoft.com/middleeast/msdn/JustifyingText-CSS.aspx
+
+## Future
+
+Stay tuned for the next progress report. Next part will focus on UI mirroring and related changes.
\ No newline at end of file
diff --git a/collections/_article/complex-text-layouts-progress-report-2.md b/collections/_article/complex-text-layouts-progress-report-2.md
new file mode 100644
index 0000000000..fb7fc67115
--- /dev/null
+++ b/collections/_article/complex-text-layouts-progress-report-2.md
@@ -0,0 +1,136 @@
+---
+title: "Complex text layouts progress report #2"
+excerpt: "Report on the complex text layouts support implementation progress, including changes to Godot's Font resources, and UI mirroring and BiDi implementation details."
+categories: ["progress-report"]
+author: Pāvels Nadtočajevs
+image: /storage/app/uploads/public/5f9/ab1/122/5f9ab11220775871830624.png
+date: 2020-11-10 08:00:00
+---
+
+# Introduction
+
+This is the second part of my work on Complex Text Layouts for Godot 4.0, focusing on Fonts and UI mirroring.
+
+See [godot-proposals#1180](https://github.com/godotengine/godot-proposals/issues/1180), [godot-proposals#1181](https://github.com/godotengine/godot-proposals/issues/1181), [godot-proposals#1182](https://github.com/godotengine/godot-proposals/issues/1182), and [godot-proposals#1183](https://github.com/godotengine/godot-proposals/issues/1183) on GitHub for detailed information on CTL proposals and feedback.
+
+See also the [previous progress report](https://godotengine.org/article/complex-text-layouts-progress-report-1) for the `TextServer` API implementation details.
+
+# Changes to the Godot Fonts
+
+Since font handling was moved to `TextServer`, some substantial changes were made to the Godot `Font` and related classes:
+
+`BitmapFont`, `DynamicFont` and `DynamicFontData` were removed and replaced with universal `Font` and `FontData` resources which are backed by `TextServer`. This provides cleaner font fallback/substitution and possibility for custom text servers to expose different types of fonts without interface changes, for example direct access to the system fonts.
+
+The new `Font` class provides new functions to draw and measure multiline text, and apply alignment.
+
+Font and outline size, that were properties of the `Font` instance, are moved to the arguments of the draw functions and theme constants. This allows changing font size for individual draw calls, controls, or spans of text in the `RichTextLabel` control without creating new `Font` instances.
+
+Functions for loading font data from the memory buffer are exposed to GDScript and GDNative.
+
+## Font substitution system for scripts and languages
+
+A new, smarter font substitution system is added:
+
+* Each `FontData` has an associated list of supported scripts (writing systems) and languages. For a TrueType/OpenType fonts, a script list is populated automatically from the OS2 table, but it's not always precise.
+* Script and language support can be overridden by the user.
+* For each run of text with a specific script and language, `TextServer` will try to use fonts in the following order:
+ * Fonts with both script and language supported.
+ * Fonts with script supported.
+ * Rest of the fonts.
+
+Here're a few cases of manual override:
+
+1. Many Latin fonts have a limited set of Greek characters for use in scientific texts (and such fonts usually have Greek script support flag set in the OS2 table), but it's not always enough to display Greek text. Adding a separate font with full Greek support, and disabling Greek support in the main font will prevent `TextServer` from mixing characters form different fonts.
+2. TrueType/OpenType font tables do not have flags for rare/ancient scripts (e.g. Egyptian hieroglyphs), enabling script support manually will speed up font substitution.
+3. Some languages use the same script, but different font styles (e.g. Kufic, Naskh and Nastaʼlīq writing styles preferred for writing different Arabic languages; or the use of traditional Chinese characters in different regions and CJK variants - Traditional Chinese, Simplified Chinese, Japanese, and Korean). Setting language overrides allows to seamlessly use the same font stack for the text in different languages and get the desired style.
+
+*Incorrect font used for "μ":* 
+*Correct font used for "μ":* 
+*`Label`s with `language` property set, using the same `Font` instance:* 
+*CJK variants, `Label`s using same font instance:*
+
+## Variable fonts
+
+Additionally, the new `Font` and `TextServer`'s BiDi and shaping features can work with variable fonts (see [godot#43030](https://github.com/godotengine/godot/pull/43030) for the variable font support PR):
+
+
+
+Functions to control the font size were added to the `Theme`, `Control`, and `Window` classes:
+
+- `Control` and `Window` functions: `add_theme_font_size_override`, `get_theme_font_size`, `has_theme_font_size`, `has_theme_font_size_override`.
+- `Theme` functions: `clear_font_size`, `get_font_size`, `get_font_size_list`, `has_font_size`, `set_font_size` to control the font size in a similar manner to existing functions for `Font`. The special value `-1` can be used as unset/default (have the same effect as `null` for the font).
+
+# UI mirroring
+
+To ensure that the content is easy to understand, user interfaces for the right-to-left written languages should flow from right-to-left. UI "mirroring" provides a convenient way to achieve this without designing separate interfaces for the RTL and LTR languages.
+
+*Right-to-left UI:* 
+*Left-to-right UI:* 
+
+In most cases, UI mirroring should happen automatically, and do not require any actions from the user or knowledge of the RTL writing systems.
+
+Each `Control` has a `layout_direction` property to control mirroring. It can be set to `inherited` (use the same direction as the parent control, same as `auto` for the root control), `auto` (direction is determined based on the current locale), or forced to RTL or LTR.
+
+On the above screenshots, the green and blue "compass" controls are forced to LTR and RTL layout respectively, the red container is set to `auto` and the rest of the UI uses `inherited` (default setting) direction.
+
+For RTL languages, Godot will automatically do the following changes to the UI:
+
+* Mirror left/right anchors and margins.
+* Swap left and right text alignment.
+* Mirror horizontal order of the child controls in the containers, and items in `Tree`/`ItemList` controls.
+* Use mirrored order of the internal control elements (e.g. `OptionButton` dropdown button, checkbox alignment, `List` column order, `Tree` item icons and connecting line alignment, etc.), in some cases mirrored controls use separate theme styles.
+* The coordinate system is not mirrored, and non-UI nodes (sprites, etc.) are not affected.
+
+# BiDi override for structured text
+
+The Unicode BiDi algorithm is designed to work with natural text and it's incapable of handling text with a higher level order, like file names, URIs, email addresses, regular expressions or source code.
+
+The `structured_text_bidi_override` property and the `_structured_text_parser` callback are added to the all text controls to handle this.
+
+*File path display:* 
+
+For example, the path for the directory structure in the above screenshot will be displayed incorrectly (top `LineEdit` control). The `File` type structured text override splits text into segments, then the BiDi algorithm is applied to each of them individually to correctly display directory names in any language and preserve correct order of the folders (bottom `LineEdit` control).
+
+Custom callbacks provide a way to override BiDi for the other types of structured text. For example, the following code splits a text using `:` as separator, applies BiDi to each part, and displays them in reversed order. The BiDi override can be used with any control, including input fields (`LineEdit`, `TextEdit`).
+
+```gdscript
+func _structured_text_parser(args, text):
+ var ranges = []
+ var offset = 0
+ for t in text.split(":"):
+ var text_offset = offset + t.length()
+ ranges.push_front(Vector2i(offset, text_offset) # Add text
+ ranges.push_front(Vector2i(text_offset, text_offset + 1)) # Add ":"
+ offset = text_offset + 1
+ return ranges
+```
+
+# Other changes to the Godot controls
+
+To control BiDi and font related features, all controls have the following properties added:
+
+- `language` property (only for controls with text):
+Overrides the locale for that node: controls language specific line breaking rules, OpenType localized form, shaping, and font substitution.
+
+*English and Romanian rendering of the same string:* 
+
+- `opentype_features` property (only for controls with text):
+Controls OpenType font features for the node e.g. ligature types to use, number styles, small caps, etc. ([Full list of standard tags](https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags), fonts can have custom features as well).
+
+*OpenType features:* 
+
+# Reference work
+
+- UI improvements for implementing BiDi aware apps proposal: [godot-proposals#1183](https://github.com/godotengine/godot-proposals/issues/1183).
+- UI mirroring, Font, Theme, and control changes: [godot#41100](https://github.com/godotengine/godot/pull/41100) (commits 5 to 8, the PR is regularly rebased to keep up with upstream changes, exact commit hashes may vary).
+- Variable font support PR: [godot#43030](https://github.com/godotengine/godot/pull/43030).
+- Mirroring, BiDi layout and override demo projects: [godot-demo-projects#538](https://github.com/godotengine/godot-demo-projects/pull/538).
+
+# Additional resources
+
+- [Windows guidelines to design apps for bidirectional text](https://docs.microsoft.com/en-us/windows/uwp/design/globalizing/design-for-bidi-text).
+- [Mozilla RTL guidelines](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/RTL_Guidelines).
+
+# Future
+
+The next part will focus on the changes to the specific controls and `RichTextLabel` BBCode.
\ No newline at end of file
diff --git a/collections/_article/complex-text-layouts-progress-report-3.md b/collections/_article/complex-text-layouts-progress-report-3.md
new file mode 100644
index 0000000000..6f26bb47e5
--- /dev/null
+++ b/collections/_article/complex-text-layouts-progress-report-3.md
@@ -0,0 +1,211 @@
+---
+title: "Complex text layouts progress report #3"
+excerpt: "Report on the complex text layouts support implementation progress, including changes to RichTextEdit class, compatibility and custom control implementation details."
+categories: ["progress-report"]
+author: Pāvels Nadtočajevs
+image: /storage/app/uploads/public/5fe/1a5/089/5fe1a50899fe1978638754.png
+date: 2020-12-29 09:00:00
+---
+
+# Introduction
+
+This is the third part of my work on Complex Text Layouts for Godot 4.0.
+
+See [godot-proposals#1180](https://github.com/godotengine/godot-proposals/issues/1180), [godot-proposals#1181](https://github.com/godotengine/godot-proposals/issues/1181), [godot-proposals#1182](https://github.com/godotengine/godot-proposals/issues/1182), and [godot-proposals#1183](https://github.com/godotengine/godot-proposals/issues/1183) on GitHub for detailed information on CTL proposals and feedback.
+
+See also the [previous progress report](https://godotengine.org/article/complex-text-layouts-progress-report-2) for UI mirroring details and the [first part](https://godotengine.org/article/complex-text-layouts-progress-report-1) for the `TextServer` API implementation details.
+
+# Changes to the RichTextLabel control
+
+#### Paragraph
+
+Existing alignment tags (`[left]`, `[center]`, `[right]`, `[fill]`), as well as new base direction, structured text override and language paragraph options are combined to the single `[p]` tag. Standalone alignment tags are still available for compatibility.
+
+```
+[p align=x dir=rtl]
+```
+
+| Option | Values | Description |
+| ---------------- | --------------------------------------------- | ------------------------------------------------ |
+| align | left, center, right, fill | Text alignment. |
+| dir or direction | ltr, rtl or auto | Base text writing direction. |
+| lang or language | ISO language code | Text language. |
+| bidi_override | default, url, file, email, list, none, custom | Structured text BiDi override for the paragraph. |
+
+#### Tables
+
+Support for setting cell background and border colors, including alternating odd/even row background has been added to the table. Table horizontal layout is mirrored for RTL paragraphs.
+
+```
+[cell bg=odd_color,even_color border=color]AAA[/cell]
+```
+
+Additionally, tables can be directly included into the text flow. Table opening and closing tags won't start a new line anymore.
+
+
+
+#### Lists
+
+Support for numbered and unnumbered lists (list tags existed before but were non-functional) has been added.
+
+```
+[ol type=1]Item 1
+Item 2
+Item 3[/ol]
+```
+
+The following list types are supported:
+
+- Unnumbered lists ( `[ul]` ).
+- Numbered lists ( `[ol]` ) using numbers: `1` type (supports localized numbering systems, e.g. east Arabic numerals, based on paragraph language).
+- Numbered lists ( `[ol]` ) using Roman numerals: `i` and `I` type.
+- Numbered lists ( `[ol]` ) using Latin letters: `a` and `A` type.
+
+
+
+#### Images
+
+Added support for image inline vertical alignment:
+
+```
+[image align=top]
+```
+
+
+
+#### Font and outline
+
+Added tags to control font size, OpenType features and font outline parameters:
+
+```
+[font_size=36]
+[opentype_features=scap]
+[outline_color=red][outline_size=2]
+```
+
+or combined in the single tag:
+
+```
+[font name=res://font.tres size=36 features=scap]
+```
+
+
+
+#### Control characters
+
+Unicode control characters can be inserted to the text by inputting them directly (e.g. copy-pasting or using Godot input control context menu), or by using special tags (e.g. `[rlm]`, `[lrm]`, `[zwnj]`).
+
+#### Dropcaps
+
+Additionally, dropped capitals support is added to the `RichTextLabel`. Dropcaps support the same formatting options as the main text, and margins for precise placement control.
+
+
+
+
+# Designing custom controls
+
+In addition to the text server interface and draw function in the `Font` class, `TextLine` and `TextParagraph` helper classes, which serve as the base for most Godot controls, are available for more convenient single and multiline text rendering and designing custom controls.
+
+`TextLine` and `TextParagraph` classes support the following features:
+
+- Multiple fonts and font options, and multiple languages in the single line or paragraph. Spans of text with designated font and properties can be sequentially pushed to the text buffer.
+```python
+add_string(text, font, font_size, opentype_features, language)
+```
+- Text buffers can embed user defined custom objects (e.g. images and tables, like `RichTextLabel` does) into the text flow. In the text, such objects are represented as `length` object replacement characters, and follow all BiDi reordering rules. Text buffers handle object size, alignment and placement in the text, drawing and interaction should be implemented separately.
+```python
+add_object(key, size, inline_align, length)
+```
+The final object position in the text layout can be retrieved by using `get_object_rect(key)` function.
+
+Both `TextLine` and `TextParagraph` provide direct access to the text server buffer `RID`s to mix their usage with direct text server API calls (e.g. accessing individual glyphs).
+
+Text server buffers, `TextLine` and `TextParagraph` use a lazy calculation model. No BiDi reordering, shaping, line breaking or any other kind of text processing is done until it's necessary to do it for the `get_*` function call or buffer rendering. While layout text is immutable and can't be changed without redoing BiDi reordering and reshaping, layout size and alignment as well as embedded object sizes can be changed dynamically. Doing so is much faster than new buffer creation.
+
+# Limited vertical text support
+
+While Godot controls are designed to work with horizontal text only, text server and `TextLine`/`TextParagraph` classes have limited vertical text support as well. Vertical layouts can be enabled by setting the `orientation` property of the text buffer or helper class.
+
+
+
+# Input
+
+Godot's BiDi caret movement follows the logical order of characters (right arrow key always acts as movement forward). If the caret is located on the edge of RTL and LTR text segments, two carets are displayed. Each one indicating a position where newly inputted RTL and LTR characters will be displayed. The primary caret, which controls scrolling, is determined based on the direction of the last inputted character (or can be switched manually, by using `Ctrl/Cmd + ~`).
+
+
+
+By default, all input keys except Backspace, which always deletes a single character, move the caret over the whole grapheme (i.e. base character and combining diacritics):
+
+
+
+This behavior can be changed by setting `mid_grapheme_caret` control property:
+
+
+
+*Note: depending on the OS and language and keyboard layout, some characters can be entered both as combining characters and single characters. In case of single character input, both backspace and movement will affect the whole character.*
+
+Input controls have various BiDi options available for the user via the context menu:
+
+- Base direction.
+- Inserting control characters.
+- Enabling and disabling display of control characters.
+
+
+
+For the custom controls, the text server provides functions to determine caret positions, selection bounding rectangles and hit testing:
+
+```cpp
+shaped_text_get_carets(RID p_text_buffer, int p_position)
+shaped_text_get_selection(RID p_text_buffer, int p_start, int p_end)
+shaped_text_hit_test_position(RID p_text_buffer, float p_coord)
+```
+
+All input controls fully support structured text BiDi overrides, which do not interfere with caret movement, do not affect contents of the underlying raw string and unlike Unicode control characters can't be accidentally modified by the user.
+
+# Compatibility
+
+While there are breaking changes in the `Font` and `Theme`, existing 3.2 scenes can be loaded directly, some of the conversions will be done automatically:
+
+`DynamicFont` and `BitmapFont` resources are converted to the new unified `Font` resources, but font size will be lost, and should be re-added in the theme properties of the controls.
+
+Font loading and text drawing GDScript code should be changed manually:
+
+- Font loading: Change `DynamicFont` to `Font`, `DynamicFontData` and `BitmapFont` to `FontData`, use single list of data sources.
+- Text / character drawing and size measurement functions: new arguments for font size, outline and text alignment were added, as well as new function for drawing multiline text.
+
+# ICU data, build options and export templates
+
+Full-blown CTL support is slower and results in a bigger binary size. Since some game project do not need CTL at all, or text usage is very limited, multiple compile options are available to control text server building.
+
+The following build options are available:
+
+`builtin_graphite`, `builtin_harfbuzz` and `builtin_icu` (default value: `True`) - If true, uses built-in version of the libraries instead of system copies (can be disabled for Linux distribution packages).
+
+There are two text server implementations available by default:
+
+ICU, HarfBuzz and SIL Graphite 2 based text server with the full complex text layout support (`adv`).
+Fallback text server without CTL support, it uses same text server API and provides roughly the same text rendering capabilities as in Godot 3.2 (`fb`).
+
+Text servers can be enabled/disabled by using following build options: `module_text_server_adv_enabled`, `module_text_server_fb_enabled`.
+
+If an editor or export template is built with the multiple text servers enabled, the default one can be selected in Project Settings or by using the `--text-driver Name` command line argument.
+
+At runtime, the text server can be changed by using the `TextServerManager` class, but doing so will cause all existing fonts and text buffers to become invalid. It's the user's responsibility to free all such resources before switching text server.
+
+Additional text servers can be implemented as C++ modules or GDNative libraries, and loaded / used in the same way default servers are.
+
+Some languages do not use spaces between words, and dictionaries (or other type of rule-based word breaking data) are required for better line breaking. ICU provides such data, but its size can be substantial for smaller projects. To reduce export size, ICU data is not included by default, but it can be added at export and stored in the PCK archive. ICU data is always embedded in the editor binaries. Also, you can avoid the necessity for ICU data at all by manually adding valid breaking points (by adding zero-width breaking spaces, which can be inserted from Godot input controls' context menu).
+
+# Demos and docs
+
+- CTL documentation and tutorials PR - https://github.com/godotengine/godot-docs/pull/4319
+- CTL demos PR - https://github.com/godotengine/godot-demo-projects/pull/538
+
+# Reference work
+
+- UI improvements for implementing BiDi aware apps proposal - https://github.com/godotengine/godot-proposals/issues/1183
+- CTL implementation main PR (merged) - https://github.com/godotengine/godot/pull/41100
+- RichTextLabel control refactoring PR (merged) - https://github.com/godotengine/godot/pull/42595
+- Variable font support PR (merged) - https://github.com/godotengine/godot/pull/43030
+- Compatibility support for the legacy Font resources PR (merged) - https://github.com/godotengine/godot/pull/43931
+- Drop cap support PR (merged) - https://github.com/godotengine/godot/pull/43691
\ No newline at end of file
diff --git a/collections/_article/core-refactoring-progress-report-1.md b/collections/_article/core-refactoring-progress-report-1.md
new file mode 100644
index 0000000000..4222491fba
--- /dev/null
+++ b/collections/_article/core-refactoring-progress-report-1.md
@@ -0,0 +1,91 @@
+---
+title: "Core refactoring progress report #1"
+excerpt: "Expecting a Vulkan progress report? Not this month! As Godot 3.2 was released by the end of January, February was purely dedicated to do large core refactoring in preparation for Godot 4.0. This is required to unblock other contributors and their areas."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5e5/a98/38e/5e5a9838e6a8b964298813.png
+date: 2020-02-29 00:00:00
+---
+
+Expecting a Vulkan progress report? Not this month! As Godot 3.2 was released by the end of January, February was purely dedicated to do large core refactoring in preparation for Godot 4.0. This is required to unblock other contributors and their areas.
+
+### Core refactoring?
+
+Godot 3.0 was released more than two years ago. With it, the amount of Godot users kept growing quickly and steadily. While a lot of core changes happened in 3.0, we were far from doing everything we wanted because it would have taken forever. With the upcoming Godot 4.0, opportunity has arisen yet again to do improvements and refactoring to Godot core.
+
+Following is the list of changes made so far during February:
+
+#### Refactored ObjectID and Variant
+
+This is mostly an internal change that most users won't see outright but, besides improving performance considerably, it allows to fix a design flaw in Godot 3.0, where it was not always possible tell if an object instance was freed or not, resulting in bugs that could not be fixed. This is no longer a problem in the 4.x branch. After it gets some testing, it may get cherry-picked for 3.x branch.
+
+
+#### Removed PoolArrays (PoolVector in C++), replaced by PackedArrays
+
+Godot offered PoolArray as a type of variable, which was useful for storing large arrays in a compact way. They were designed for 32 bits CPUs with small address space, to allow packing memory and avoiding memory fragmentation.
+
+Given pretty much all mainstream platforms are now 64 bits, this optimization is no longer required (64 bits operating systems have efficient memory allocation for large objects, putting them on opposite ends of the address space, which reduces memory fragmentation to the point of making it not a problem).
+
+Having tightly packed arrays available to the user still makes sense, because regular script array ([]) elements are 24 bytes (containing a Variant). Having packed versions (including bytes) is desired, so they are renamed to "PackedArrays".
+
+This change also improves performance in all operations related to large memory allocations, as locking/unlocking is no longer required. As a side effect, put_pixel/get_pixel in images no longer requires locking either.
+
+#### Reworked signal system to use Callables
+
+Godot now has a Callable type. This allows having a generic interface for calling things from an object. Within GDScript (and C#, as well as other languages) this means more efficiently connecting signals to methods via first class function support (which was not available before) and eventually Lambda expression support on the API for all languages. Signals are also provided as a type, so this type of syntax became valid:
+
+
+
+Besides this, this change allows to improve the internal C++ binding system, taking advantage of C++17 variadic argument templates to do all internal signal connections, without having to register them via ClassDB. It will also help improve usability and performance of C++ via GDNative.
+
+#### Support for named binds in Skin.
+
+Skin system was added in Godot 3.2, but it lacked named binds. This avoided you from merging objects with similar skeletons together (as an example, clothing exported as a separate scene to use for customizing a character).
+
+Named binds ensure that, as long as the bone name exists, the mesh will be able to bind to it. This improvement may eventually be cherry picked to Godot 3.x branch too.
+
+This is not strictly a core change, but was requested by users due to the limitations of the new system.
+
+#### Support for StringNames in binding system.
+
+A lot of APIs in Godot use StringNames instead of Strings. StringNames are special types that contain a unique pointer to a string. When assigned a String, the pointer is always assumed to be the same for that string (no matter when it was assigned), ensuring comparisons are much faster than actual string comparisons (because it's just a pointer comparison).
+
+There are plenty of APIs in Godot that do this for efficiency, like names, method names, property names, class names, animation names, shader parameter names, skeleton bone names, translations keys, etc (the list is very long actually).
+
+Unfortunately GDScript and the binder (for C# and other languages) did not support this type, and all these functions received regular strings, which where very inefficiently converted to StringNames on each call.
+
+With this change, users can pass StringNames directly to the Godot API and improve performance in critical areas.
+
+#### Support for integer vector types
+
+This was a widely requested feature by our users, specially for GDScript. It's useful for games which require cell based integer vector logic in 2D and 3D. Using floats for vector types in these types of games was wasteful and prone to error.
+
+The following new types were added:
+
+
+
+#### Packed arrays are now references in GDScript
+
+Users often complained that PoolArrays were immutable types, so accessing them inside sub-arrays, dictionaries, etc. or passing them to/from functions would always create copies.
+
+In the 4.x branch, besides no longer being pool based, they became references.
+
+#### Packed float and int arrays support 64 bit versions
+
+GDScript uses 64 bits for scalar float and integer, but packed arrays are only 32 bits. Many users requested 64 bits to store more data, so these versions were optionally added.
+
+#### Refactored threaded resource loading
+
+Godot had the old "ResourceInteractiveLoader" class for background loading. This was a vestige from an era where Godot ran mainly on single core devices. While the engine supported loading resources on threads for a long time, the actual loading process (including dependencies) was single threaded.
+
+This is no longer the case in the 4.x branch. The [new API](https://github.com/godotengine/godot/pull/36640) is much simpler to use and can take advantage of as many cores as available by your CPU to do resource loading. This results in 4x to 6x performance increases, and in considerably improves the usability for background loading.
+
+## Future
+
+March will probably be another for core refactoring, and my Vulkan work will resume in April. The main goal for this month is to perform the separation of OS class into OS and DisplayServer. This will allow several things to happen:
+
+* Support for multiple windows (Editor support may or may not happen for 4.0, depending on time).
+* Implementation of Wayland and Linux+EGL (needed for official Raspberry PI support) back-ends.
+* General clean up of the API, which is messy.
+
+As always, all this work is is done out of love for everybody making games, and because we believe the world needs quality free and open source game technology. If you are not yet, please help us by [becoming our patron](https://www.patreon.com/godotengine).
\ No newline at end of file
diff --git a/collections/_article/core-refactoring-progress-report-2.md b/collections/_article/core-refactoring-progress-report-2.md
new file mode 100644
index 0000000000..4f9c0b1047
--- /dev/null
+++ b/collections/_article/core-refactoring-progress-report-2.md
@@ -0,0 +1,96 @@
+---
+title: "Core refactoring progress report #2"
+excerpt: "As promised in my previous post, the core refactoring work I am undertaking took two months to complete. This means rewriting large parts of the core engine for consistency and features."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5e7/f74/307/5e7f74307ce34896455561.jpeg
+date: 2020-03-28 00:00:00
+---
+
+As promised in my previous post, the core refactoring work I am undertaking took two months to complete. This means rewriting large parts of the core engine for consistency and features.
+
+### Core refactoring
+
+Core refactoring is mostly work on the most low level, critical and shared parts of the engine. This work is done only on major versions because it implies breaking compatibility and introducing instability and bugs (because of all the new added code), which is actually the case right now. The major refactoring undertaken for Godot 3.x, two years ago, changed a large part of the internals, but we were unable to do everything we wanted to do.
+
+The migration to Vulkan already implied breaking compatibility and, together with all the user feedback we got since 3.x was released, we have a very good idea of what needed to change in this time.
+
+So following is the list of what changed during March:
+
+#### OS / DisplayServer split
+
+One of the largest singletons in Godot is the [OS](https://docs.godotengine.org/en/3.1/classes/class_os.html) class. It allows access to low-level OS functions as well as window management.
+
+This was cumbersome for many reasons and also imposed limitations, such as:
+
+* Having a large, bloated OS class on every platform.
+* Inability to support different display APIs in a single binary. This is specially visible in Desktop Unixes, where you can use X11, Wayland or even EGL directly on Raspberry PI.
+* Proper support for multiple windows. This not only allows the editor to make some docks float so you can move them to another monitor (a very requested feature by users). This is also useful for games developed for certain types of dedicated hardware, or just for tools created with Godot as the base platform (which is something several users do).
+* Impossible to run the engine as headless (with a dummy display driver) in all platforms. The "server" platform had to be used as a workaround (and will now be deprecated).
+* Difficult to abstract window management functions to users, which had to access the OS class directly (and which is not as user friendly as working with nodes).
+
+The new implementation moves all low level window management to a new singleton, **DisplayServer**, which handles everything regarding display. To make implementation simpler and more portable, Godot will always assume you have one _main window_ and, if platform supports, allow you to create _sub windows_.
+
+#### Window node
+
+The new **DisplayServer** allows managing multiple windows, but using it directly is still too low level and unfriendly for most users. To compensate, a new **Window** node has been introduced. This node inherits **Viewport** and gives it the ability to appear as a floating window. Working with it is easy: just place your nodes as children of Window! You can create UIs (with controls), or display the 3D world on it (just adding a **Camera** node). It' s basically the same as a Viewport, so Using this new node is extremely easy and straightforward.
+
+
+
+
+
+
+Additionally, the root node in Godot (```get_tree().get_root()```), which used to be of type **Viewport**, has now changed to be of **Window** type. If you want to manage the game window, simple access this node directly.
+
+All input events, which were previously sent to the *MainLoop* class, are now sent directly from **DisplayServer** to *Window* (so MainLoop and hence, *SceneTree* have been stripped of this functionality).
+
+#### Multiple Window Support in Editor
+
+Likewise, the Godot Editor now supports making the docks float. For now, only docks and existing windows are supported but we will extend support for other parts of the editor.
+
+It is important to note that by default **docks will remain *docked* ** and nothing will change. Some users expressed concerns that we would now force them to always use floating windows. This **is not the case**, you can make windows separate from the main one **only if you want** (like as an example, you have a second monitor and you want to make use of more screen-space), but by default **nothing will change**.
+
+#### Embedded mode
+
+But, what if you are working on a full-screen game and need to use windows? Or what about platforms which don't support floating windows such as iOS, Android, HTML5 or even consoles?
+
+One of the new features of this system is that the **Viewport** class can now be instructed to embed all children **Window** nodes and provide internal windows for them, so it will emulate a window manager within it, including decorations, resizing, title bar, close button, etc. This can be done manually by toggling the "embed subwindows" property.
+
+At the same time the new **DisplayServer** can be queried for features and one of them is *subwindow* support, so the new root **Window** will check whether this is supported on each platform and toggle the property automatically. This is completely transparent to the user, so games (or the editor) don't need to be change to run on platforms that don't support subwindows.
+
+
+
+
+
+If, for debug purposes, you want to run the editor (or your game) using subwindows instead of hardware windows, use the ```--single-window``` command line flag.
+
+### Node renames
+
+The Godot scene system is known for its ease of use and its ability to represent your mental map as a data and file structure. That said, many node names were not clear or confusing. This is mainly evidenced when comparing their 2D and 3D counterparts.
+
+Contrary to what many believe, Godot started as a 3D engine, but soon migrated to be a 2D one. This is why the 3D nodes don't have any suffix (like Area) while the 2D ones do (Area2D). This made it very misleading for users, where its not always obvious whether you are using the 2D or 3D versions.
+
+To solve this, Godot 4.0 will rename all 3D nodes and give them proper suffixes. Nodes like "Area","RigidBody" or "Light" will become "Area3D", "RigidBody3D" and "Light3D" respectively.
+
+Additionally, due to popular demand, the "Spatial" node will be renamed to "Node3D", to further enhance consistency with the 2D engine.
+
+
+
+
+
+
+A compatibility system has been added so older scenes will convert the node types to the new ones on load.
+
+### Server renames
+
+Most servers in Godot are very old, and their naming conventions were by now obsolete. Because of this, most are being renamed:
+
+* **VisualServer** (a name that became even more ambiguous thanks to the introduction of DisplayServer) has been renamed to **RenderingServer**.
+* **NavigationServer** and **PhysicsServer** have been renamed to **NavigationServer3D** and **PhysicsServer3D** respectively.
+* Likewise, to add more consistency, **Physics2DServer** and **Navigation2DServer** are now **PhysicsServer2D** and **NavigationServer2D**.
+
+### Future
+
+My work on core refactoring is mostly done, so next month (April) I will go back to working on Vulkan as promised. Hope to have new and exciting stuff to show by the end of next month!
+
+And as always, please remember than our work on Godot is done out of love for you and the game development community, we want to provide you with a top notch free and open source game engine, so you can own your work down to the last line of engine code. If you are not yet, please consider becoming [our patron](https://www.patreon.com/godotengine) and help us realize this dream sooner.
\ No newline at end of file
diff --git a/collections/_article/csharp-android-support.md b/collections/_article/csharp-android-support.md
new file mode 100644
index 0000000000..e79c4c4eff
--- /dev/null
+++ b/collections/_article/csharp-android-support.md
@@ -0,0 +1,59 @@
+---
+title: "C# support on Android"
+excerpt: "Godot 3.2 will bring Android support to C# users, which can already be tried in the master branch and will soon be available in Godot 3.2 alpha 1. Moreover, the editor code for the Mono module was converted from C++ to C#, making it easier to extend."
+categories: ["progress-report"]
+author: Ignacio Roldán Etcheverry
+image: /storage/app/uploads/public/5d2/775/7d1/5d27757d198a8779988083.png
+date: 2019-07-12 10:16:37
+---
+
+In this devlog I will be talk about what I have been working on for the last two months. There are some nice new goodies coming for C# users with Godot 3.2.
+
+Before starting, I would like to announce that this work is possible thanks to a generous donation of $24,000 by Microsoft. This grant will be used to fund my work on C# in Godot for a year. This is the second time I receive a grant from Microsoft to work in Godot and I'm extremely grateful.
+
+## C# on Android
+
+
+_C# interactive shell from the game [SkyOfSteel](https://github.com/ForLoveOfCats/SkyOfSteel) by ForLoveOfCats running on an Android emulator. **Edit (2021-06-07)**: This game development has halted and the domain expired, so the link was changed to point to archived GitHub repository._
+
+Up until now Godot supported scripting with C# only on desktop platforms. Our plan has been to add support for other platforms over time and Android has been by far the most requested one. Even when it comes to overall feedback, not only about platforms, Android tends to be at the top of the list.
+
+Today I'm glad to announce we've finally made it happen. Godot 3.2 will ship with support for exporting C# games to the Android platform.
+
+The process of exporting a game for Android with C# is the same as it would be if you were using GDScript. Godot will make sure to add all the assemblies and dependencies to the exported APK. No extra steps are required from you.
+
+It supports all target ABIs Godot does (`armeabi-v7a`, `arm64-v8a`, `x86` and `x86_64`). Currently, we only use JITed code, with AOT support coming in the future.
+
+If you can't wait for a 3.2 release and you feel brave enough, you may be interested in building Godot from source to try it out. In order to do that you will also need to build the Mono runtime from source. We're considering the possibility of providing prebuilt Mono packages, but that's still uncertain.
+
+If you're interested in building Godot from source with C# support, we have [a page](https://docs.godotengine.org/en/latest/development/compiling/compiling_with_mono.html) documenting this process, as well as [a section](https://docs.godotengine.org/en/latest/development/compiling/compiling_with_mono.html#targeting-android) specific for Android.
+
+I've created a repository with scripts to help in the process of building the Mono runtime for Android. You can find it [here](https://github.com/godotengine/godot-mono-builds). You may need to apply [some patches](https://github.com/godotengine/godot/blob/master/modules/mono/build_scripts/patches/fix-mono-android-tkill.diff) to the Mono repository in order to be able to build it for `armeabi-v7a` and `x86` on newer NDK releases.
+
+## Rewriting the module's editor code in C#* *
+
+
+
+Excluding the C# bindings, most of the C# module's code is written in C++. This includes the editor code in charge of building the project, opening scripts with external editors/IDEs, and exporting the C# game. This is an obstacle for the future as not only is C++ a lower level language, but the API available is also a more limited one (adding thirdparty libraries cannot be done lightly).
+
+We've gotten away with this until now by moving some small parts of the code to C#. This allowed us to benefit from .NET where we needed it. However, this requires a lot of boilerplate code in order to invoke C# from C++, quickly turning into bloat.
+
+All of this together makes adding new features to the editor a much slower and painful process than it should be. As such I decided that, before embarking on such tasks, I had to do something about this.
+
+Last month I worked on moving most of the editor code to C# to make it easier to maintain and extend. The new code only has one method that gets invoked from C++, which is called during editor initialization. All the other C++ to C# calls are instead handled by the existing scripting implementation (signals, object calls, etc.).
+
+The interesting part is that the new code is pretty much a Godot addon. It uses the same C# API Godot projects and addons use. There are only two differences with real addons:
+1. Unlike other addons, this one is not part of your project and is not listed in _`Project Settings > Plugins`_. Instead, it's enabled by the module when the editor is loaded.
+2. If you [peek into the code](https://github.com/godotengine/godot/tree/master/modules/mono/editor/GodotTools) you may notice that classes derived from `Godot.Object` are not marked with `ToolsAttribute`. This is intentional as everything there is meant to run in the editor. Using this attribute would be redundant so we decided to add a special case for it.
+
+There were several bugs that needed to be fixed to get things working properly; especially related to hot-reloading. Since this is pretty much a glorified Godot addon with some extra privileges, those fixes also benefit other Godot addons and editor plugins written in C#.
+
+There were also some great build system improvements. The most important: SCons will now take care of building the C# API to be bundled with the Godot editor, a step that had to be done manually before.
+
+## What's to come next
+
+The next step in the roadmap is integration with the MonoDevelop IDE. More details will come in the next devblog, in a bit less than a month. You can expect much awaited features like debugging as well as better experience for opening files with this IDE (currently we use the command line with bad results). Thanks to the editor re-write, this will be a much easier task.
+
+If you're wondering about support for WebAssembly and iOS or integration with Visual Studio and VS Code, don't fear. Those are all on the roadmap. You can expect to hear more about them in the future.
+
+Until next month!
\ No newline at end of file
diff --git a/collections/_article/csharp-ios-signals-events.md b/collections/_article/csharp-ios-signals-events.md
new file mode 100644
index 0000000000..f2b0a5aa99
--- /dev/null
+++ b/collections/_article/csharp-ios-signals-events.md
@@ -0,0 +1,91 @@
+---
+title: "C# progress report: iOS and signals as events"
+excerpt: "Godot is getting iOS support for C# games. There is also a new system for using Godot signals as C# events."
+categories: ["progress-report"]
+author: Ignacio Roldán Etcheverry
+image: /storage/app/uploads/public/5e8/92c/7b8/5e892c7b82886061410800.png
+date: 2020-04-06 10:55:26
+---
+
+Initially and for quite some time C# was only supported in Godot on desktop platforms. In the last year we made good progress extending support to Android and WebAssembly, and now it's time to add iOS to that list as well.
+
+In this progress report I'm also introducing a new way of working with Godot signals in C#.
+
+This work is kindly sponsored by Microsoft.
+
+# iOS support
+
+
+_The [Dodge The Creeps C#](https://github.com/godotengine/godot-demo-projects/tree/master/mono/dodge_the_creeps) demo running on the iOS Simulator_
+
+Godot 4.0 will be getting C# support for iOS. We also plan to include it in a 3.2.x release, which could be 3.2.2 if everything goes well.
+
+Similarly to WebAssembly, the Mono JIT compiler is not available on iOS devices. Instead, Godot will perform Ahead-of-Time (AOT) compilation when exporting a game and the resulting libraries will be added to the generated Xcode project.
+
+Other than the additional time that is spent doing AOT compilation of assemblies, the export process should be the same as it is with games that don't use C#.
+
+For those interested in building Godot from source, the code is available in the [3.2-mono-ios](https://github.com/godotengine/godot/tree/3.2-mono-ios) branch (soon to be merged in the `3.2` branch). Currently the `master` branch doesn't support a lot of platforms (including iOS) due to the ongoing work with the renderer.
+The [Compiling with Mono](https://docs.godotengine.org/en/latest/development/compiling/compiling_with_mono.html) page includes information about building the Mono runtime, the Base Class Library and the AOT cross-compiler.
+
+# Signals as events
+
+[Signals](https://docs.godotengine.org/en/latest/getting_started/step_by_step/signals.html) are the Godot version of the _observer_ pattern. Engine classes use signals to notify listeners when an event occurs. User scripts can also create their own signals.
+
+This is what a signal declaration looks like in GDScript:
+
+```gd
+signal text_changed(text)
+```
+
+Code can interact with signals via the `connect` (listen), `disconnect` (stop listening) and `emit_signal` (notify/raise) methods. Signals are also accessible from the Godot editor where new connections can be created.
+
+The equivalent of a signal declaration in C# is a delegate declaration with a `Signal` attribute. They can be interacted with them using the aforementioned methods. While this did the job well and it's pretty much the same as GDScript, I was never fully satisfied with it.
+
+In .NET, the common way to implement the observer pattern is using [events](https://docs.microsoft.com/en-us/dotnet/standard/events/). Compared to events, C# code that uses Godot signals looks foreign.
+
+Last month, motivated by the new [Callable](https://godotengine.org/article/core-refactoring-progress-report-1) type, I decided to re-think the implementation of signals in C#. The goal this time is to expose them as events. It's not finished, but the initial results are looking great.
+
+
+_Code-completion of signals events for the `Godot.CheckBox` class_
+
+In the following code example we can see how it compares to the old style:
+
+```cs
+// Old style
+class TextField : Node {
+ [Signal] delegate void TextChanged(string text);
+
+ void Foo() {
+ Connect(nameof(TextChanged), this, nameof(TextChangedCallback));
+ EmitSignal(nameof(TextChanged), "bar");
+ }
+
+ void TextChangedCallback(string text) { /* ... */ }
+}
+
+// New style
+class TextField : Node {
+ delegate void TextChangedHandler(string text);
+ [Signal] event TextChangedHandler TextChanged;
+
+ void Foo() {
+ TextChanged += TextChangedCallback;
+ // TextChanged?.Invoke("bar"); // Nope, not yet :(
+ EmitSignal(nameof(TextChanged), "bar");
+ }
+
+ void TextChangedCallback(string text) { /* ... */ }
+}
+```
+
+As seen in the example, the most important part that's missing is support for raising the event. This right now would only invoke the event delegates, but it won't emit the signal, which is important to notify engine and GDScript listeners. As such, we still need to use the classic `EmitSignal` call, which will emit the signal as well as raise the event. More work will be needed in order to support event raising.
+
+# What comes next
+
+This progress report came really delayed. You can expect a new one in the next weeks, in which I'll be announcing Godot extensions for both Visual Studio and VS Code!
+
+After that there are two more tasks in my current roadmap. One of them is separating the Godot API into namespaces (right now we have everything in the same bloated namespace).
+
+The other task is writing a C# API to wrap the Godot file system. This new API is meant to replace the auto-generated `Directory` and `File` classes (which will still be available for compatibility). The new API is meant to be very similar to what developers are used to in .NET.
+
+C# is now working on almost every platform Godot supports, with the exception of the Universal Windows Platform (UWP). While UWP is not part of my current roadmap, support for it is likely to happen before 4.0 is released. Also WebAssembly, while already working, is still lacking AOT compilation from Godot which is of high priority.
\ No newline at end of file
diff --git a/collections/_article/csharp-vs-and-vscode.md b/collections/_article/csharp-vs-and-vscode.md
new file mode 100644
index 0000000000..0c0db20fc0
--- /dev/null
+++ b/collections/_article/csharp-vs-and-vscode.md
@@ -0,0 +1,123 @@
+---
+title: "C# progress report: Visual Studio and VSCode"
+excerpt: "Godot is getting extensions for Visual Studio and Visual Studio Code, including debugging support and code completion of Godot strings."
+categories: ["progress-report"]
+author: Ignacio Roldán Etcheverry
+image: /storage/app/uploads/public/5ef/e2d/10d/5efe2d10d53f8199324952.png
+date: 2020-07-03 15:10:04
+---
+
+In a past progress report I announced a Godot extension for
+Visual Studio Mac and MonoDevelop. This was the first step
+towards Godot support in C# IDEs.
+
+Today I'm announcing two new extensions for other editors: Visual Studio
+and Visual Studio Code.
+In this progress report I'm going to do a brief introduction to the
+features included in the current version of the extensions.
+
+This work was kindly sponsored by Microsoft.
+
+# Debugging
+
+The two extensions support debugging of Godot games. They make it easy to launch
+and debug games from the IDE without the need to tweak any Godot setting.
+
+
+
+As of this writing, the two extensions provide 3 debug targets:
+**Launch**, **Attach** and **Play in Editor**.
+
+**Play in Editor** is likely going to be the one that's used the most during
+development as it launches the game from a running Godot editor instance.
+It's similar to pressing the play button in the Godot editor, except it's
+done from the IDE and debugger options are configured automatically.
+
+
+
+You can find more details in the extension descriptions.
+
+### Notes
+
+The Visual Studio extension uses debugging components from the
+"Mobile development with .NET" workload of Visual Studio. This
+workload is installed automatically when installing the extension.
+This is a big dependency, but I couldn't find a better alternative
+that didn't involve write and maintain a huge amount of code ourselves.
+
+
+
+The debugger adapter used by the VSCode extension is a fork the
+[vscode-mono-debug](https://github.com/microsoft/vscode-mono-debug) extension.
+
+# Code completion
+
+When coding in Godot, developers very commonly find themselves having to write the
+path of nodes, scenes and resources, as well as the name of signals and input actions.
+Most GDScript developers are used to getting code completion for such values from the
+Godot built-in code editor (or from another editor that supports the GDScript LSP).
+This wasn't the case when coding in C# so one had to go through the burden of
+typing all those strings manually... up until now.
+
+The new IDE extensions add code completion for these values to the C# editor. This
+feature requires there to be a running Godot editor which can provide the completion items.
+
+
+
+The Visual Studio version is implemented as a Roslyn completion provider.
+In the case of node paths, the code completion is triggered wherever the expected
+type can be inferred to be `NodePath`. This means it won't just trigger only when
+invoking `GetNode`, but also when assigning a value to a `NodePath` field/property
+and similar contexts.
+
+The VSCode extension is more limited when it comes to code completion. Currently
+it does not use Roslyn. Instead it uses regex patterns to determine whether code
+completion should be triggered. This is subject to change in the future, but for
+the most part the results are still good.
+
+**NOTE:** The current version of the extensions require a running Godot editor
+instance to provide the completion items. I'm considering to make future version
+support a subset of the code completion in "offline" mode (when no Godot editor
+is there to provide them).
+
+### Visual Studio for Mac
+
+As a bonus, the extension for VS Mac and MonoDevelop was also updated to support code
+completion of Godot strings. It uses the same Roslyn completion providers as the Visual Studio extension.
+
+# Download
+
+### Visual Studio
+
+The Visual Studio extension can be downloaded
+[here](https://github.com/godotengine/godot-csharp-visualstudio/releases).
+
+The **minimum required** Godot version is **3.2.3**, which is not yet released at the time of this writing.
+While the extension may work to some extent with Godot 3.2.2, there might be issues.
+Also Godot 3.2.2 can't launch Visual Studio when selecting a script.
+
+The extension will be published to the marketplace once Godot 3.2.3 stable is released.
+
+### Visual Studio Code
+
+The VSCode extension can be downloaded from the marketplace
+[page](https://marketplace.visualstudio.com/items?itemName=neikeq.godot-csharp-vscode).
+
+It works with Godot versions **3.2.2** or newer. Older versions of Godot won't work.
+
+### Visual Studio for Mac
+
+The VS Mac can be installed from the Extension Manager gallery or
+[manually](https://github.com/godotengine/godot-monodevelop-addin/releases).
+
+It works with Godot versions **3.2.2** or newer. Older versions of Godot won't work.
+
+# What comes next
+
+The following two are the last tasks of my current roadmap:
+
+- Separate and organize the C# Godot API into different namespaces.
+- Provide a .NET friendly IO API for the Godot virtual file system.
+
+After this I want to dedicate a month entirely to bug fixing and to plan the
+roadmap for Godot 4.0 before starting any new work.
\ No newline at end of file
diff --git a/collections/_article/csharp-wasm-aot.md b/collections/_article/csharp-wasm-aot.md
new file mode 100644
index 0000000000..147a487d52
--- /dev/null
+++ b/collections/_article/csharp-wasm-aot.md
@@ -0,0 +1,67 @@
+---
+title: "C# progress report: WebAssembly, MonoDevelop and AOT"
+excerpt: "Godot 3.2 brings WebAssembly support for C# games. There is also a new extension for Visual Studio for Mac and MonoDevelop and preliminary support for AOT compilation."
+categories: ["progress-report"]
+author: Ignacio Roldán Etcheverry
+image: /storage/app/uploads/public/5dc/e01/229/5dce01229c795712716182.png
+date: 2019-11-15 21:18:23
+---
+
+There's been some interesting progress going on with C# over the last few months since the first progress report as part of my work sponsored by Microsoft.
+In this progress report I'll briefly introduce the most important improvements and additions that were made, which are support for exporting C# games to WebAssembly, an IDE extension for Visual Studio for Mac and MonoDevelop, and preliminary support for AOT compilation.
+
+_Please note that both WebAssembly and AOT depend on [changes](https://github.com/godotengine/godot/pull/33603) that may still be unmerged as of this writing._
+
+## WebAssembly support
+
+The main announcement from the first blog report was support for exporting Godot C# games to Android. This time, it's the turn for WebAssembly.
+
+
+_The [Dodge The Creeps C#](https://github.com/godotengine/godot-demo-projects/tree/master/mono/DodgeTheCreepsCS) demo running on a web browser_
+
+WebAssembly is a quite unusual platform so there are a few things to keep in mind. Most importantly, the JIT compiler is not available. There are two ways to run code: the Mono's IL interpreter and AOT compilation.
+Right now, Godot uses the former. The interpreter is good for development as it allows for fast iteration, but it runs much slower compared to AOT compiled assemblies. Unfortunately, Godot doesn't support AOT on WebAssembly just yet, but it should be happening soon.
+
+As for the export process, just like with Android, there shouldn't be any differences compared to what we're used to when exporting non-C# games. Godot takes care of everything and the resulting files are the same.
+
+When it comes to compiling Godot from source, you will need to build both the Mono runtime and the Base Class Library for WebAssembly. I've created some [scripts](https://github.com/godotengine/godot-mono-builds) to help with this process. I will be updating the [Compiling with Mono](https://docs.godotengine.org/en/latest/development/compiling/compiling_with_mono.html) docs next week to reflect all this.
+
+## Add-in for Visual Studio for Mac and MonoDevelop
+
+In the last progress report I talked about the upcoming extensions for editors/IDEs. Today the first extension is available as an add-in for Visual Studio for Mac and the MonoDevelop IDE.
+
+With using this add-in you can expect a better experience when opening/jumping to C# files from the Godot editor. Prior to this, Godot was using the MonoDevelop command line, which didn't work well when it comes to re-using running MonoDevelop instances. With this new add-in, Godot directly connects to the IDE to send such requests, eliminating those issues.
+
+More importantly, this add-in aims to provide seamless debugging integration with the Godot editor. Launching from the MonoDevelop editor notifies the Godot editor to run the game and connect the debugger. From there everything should work as expected, from breakpoints, unhandled exceptions, etc.
+
+There are three launch options:
+
+
+
+- _"Play in Editor"_ launches the game from the Godot editor. This is probably the one you will be using the most during development.
+- _"Launch"_ executes the Godot executable from a path that must be previously configured in the settings (or a path automatically obtained from a connected Godot editor).
+- _"Attach"_ attaches to a running instance.
+
+Please note that in order to be able to run the game with the _"Play in Editor"_ option, you will have to set the active _Configuration_ to _"Tools"_, which is what the Godot editor and player use.
+
+The add-in source code is available at: https://github.com/godotengine/godot-monodevelop-addin
+
+There is a "mpack" package available as well in the [releases](https://github.com/godotengine/godot-monodevelop-addin/releases) page and hopefully we can soon upload it to the official add-ins repository so it can be installed from the "Extension Manager".
+
+I would like to thank David Karlaš from Microsoft for taking the time to write [this extension](https://github.com/DavidKarlas/GodotExtension) which I used as a base for this one. It was of great help and saved me a lot of time.
+
+## Ahead Of Time compilation
+
+Godot is starting to support Ahead Of Time (AOT) compilation for exported games. There's still a lot of work to do here, and some things may not be fully working. It's not possible to enable LLVM yet, although you could experiment with that using the setting `Mono -> Export -> Extra Aot Options`.
+
+
+
+Something worth mentioning: currently, due to a limitation with the API exposed by the Godot editor, all of the C# export settings are located in `Project Settings` under `Mono -> Export`, including the AOT settings. In the future, they will be moved to the export presets panel, where they belong.
+
+Godot expects AOT compilers to be placed in the editor directory under `GodotSharp/Tools/aot-compilers`. If you want to build them from source, these [scripts](https://github.com/godotengine/godot-mono-builds) can also be of some help with that.
+Being so close to a release, it's unlikely 3.2 will ship with AOT support, but it will likely be included in the next point release so we don't have to wait for 4.0.
+
+## What comes next
+
+Right now, I'm going to put some time into fixing bugs to make sure 3.2 is a stable release. The very next thing after that is going to be iOS support; you can expect to hear an announcement on this in about a month. What comes later, among other things, is more IDE extensions, starting with Visual Studio and later Visual Studio Code.
+Also more progress will be made on AOT compilation over time and it will be a priority to have it working on WebAssembly as soon as possible.
\ No newline at end of file
diff --git a/collections/_article/custom-sky-shaders-godot-4-0.md b/collections/_article/custom-sky-shaders-godot-4-0.md
new file mode 100644
index 0000000000..33f9699647
--- /dev/null
+++ b/collections/_article/custom-sky-shaders-godot-4-0.md
@@ -0,0 +1,131 @@
+---
+title: "Custom sky shaders in Godot 4.0"
+excerpt: ""
+categories: ["progress-report"]
+author: Clay John
+image: /storage/app/uploads/public/5e7/7f2/a75/5e77f2a75cf79778591830.png
+date: 2020-03-23 02:00:00
+---
+
+___
+
+***Update (2020-03-24):** The API has updated a little bit to reflect a problem explained in this [pull request](https://github.com/godotengine/godot/pull/37268).*
+
+***Update (2021-10-28):** You can find a documentation page about Sky shaders in the [Godot documentation](https://docs.godotengine.org/en/latest/tutorials/shaders/shader_reference/sky_shader.html).*
+
+___
+
+A common problem facing users in Godot 3.x was the inability to create dynamic skies that update in real time. We aim to change that by introducing sky shaders.
+
+If you are interested in the implementation, you can find the code [on GitHub](https://github.com/godotengine/godot/pull/37179).
+
+# Sky resources
+
+In Godot 3.x there were two [`Sky`](https://docs.godotengine.org/en/3.2/classes/class_sky.html) types, [`ProceduralSky`](https://docs.godotengine.org/en/3.2/classes/class_proceduralsky.html) and [`PanoramaSky`](https://docs.godotengine.org/en/3.2/classes/class_panoramasky.html). The common elements between the two came from the parent `Sky` class. In Godot 4.0, you will use the [`Sky`](https://docs.godotengine.org/en/latest/classes/class_sky.html) class directly. The `Sky` class contains 3 properties:
+1. A [`Material`](https://docs.godotengine.org/en/latest/classes/class_material.html) (can be [`ShaderMaterial`](https://docs.godotengine.org/en/latest/classes/class_shadermaterial.html), [`PanoramaSkyMaterial`](https://docs.godotengine.org/en/latest/classes/class_panoramaskymaterial.html), [`ProceduralSkyMaterial`](https://docs.godotengine.org/en/latest/classes/class_proceduralskymaterial.html), or [`PhysicalSkyMaterial`](https://docs.godotengine.org/en/latest/classes/class_physicalskymaterial.html)).
+2. The radiance size.
+3. The update mode.
+
+Instead of subclasses, the behaviour of the `Sky` is contained in its `Material`. For all three \*SkyMaterial types, users can select "Convert to ShaderMaterial" and edit the code directly.
+
+### `PanoramaSkyMaterial`
+
+The `PanoramaSkyMaterial` behaves exactly the same as the previous `PanoramaSky`. Assign a panorama texture to the material and you are all done!
+
+### `ProceduralSkyMaterial`
+
+The `ProceduralSkyMaterial` behaves very similarly to the old `ProceduralSky` with a few important differences:
+1. Supports up to 4 suns.
+2. Now updates instantly as calculations are done on the GPU.
+3. Sun properties (direction, energy, and color) are pulled from the [`DirectionalLight`s](https://docs.godotengine.org/en/latest/classes/class_directionallight.html) in the scene.
+
+These changes make the `ProceduralSkyMaterial` a great option for quickly putting together a sky when realism isn't needed. It is easy to tweak and update and uses a lightweight shader to avoid consuming GPU resources.
+
+### `PhysicalSkyMaterial`
+
+The banner image you see above is from a scene using the new `PhysicalSkyMaterial`. The `PhysicalSkyMaterial` is a new resource that draws the sky based on various physical properties, notable Rayleigh and Mie scattering. The `PhysicalSkyMaterial` is based on the Preetham daylight model (with a few hacks to make it more user friendly at the cost of physical accuracy).
+
+The `PhysicalSkyMaterial` can only have one sun and it requires the presence of a `DirectionalLight` in the scene to illuminate the sky.
+
+The main benefit of the `PhysicalSkyMaterial` is that you define properties of the sky and then plausible looking changes happen in the sky based on time of day (e.g. sunset and sunrise are automatic).
+
+The `PhysicalSkyMaterial` is made to be fast and easy to tweak. There are more realistic models of daylight out there, if users need something more realistic they can use [`ShaderMaterial`s](https://docs.godotengine.org/en/latest/classes/class_shadermaterial.html) to implement their own sky models.
+
+# Sky Shaders
+
+We anticipate that most users will be fine using one of the above three sky materials. But if you need more flexibility, or want to do something more complex (e.g. clouds or nebula) the Sky Shader system is designed to allow you to create whatever you need.
+
+Sky Shaders are another type of shader that can be used in a `ShaderMaterial`.
+
+```
+shader_type sky;
+```
+
+Everything in Sky Shaders takes place in the `fragment()` function. The output is a single color value, `COLOR`.
+
+The simplest Sky Shader is:
+
+```
+shader_type sky;
+
+void fragment() {
+ COLOR = vec3(0.2, 0.4, 0.9); // Set the entire sky to a nice shade of blue.
+}
+```
+
+Most Sky Shaders will rely on the view direction which is named `EYEDIR`. Shaders also provide `POSITION` which is the position of the active camera in world space. This can be used to change the sky depending on the location of the camera.
+
+Sky Shaders draw to the background and to the radiance cubemap. This allows the scene to receive real-time lighting updates from changes to the sky.
+
+Sky Shaders also have two optional built-in subpasses which can be accessed with `HALF_RES_COLOR` and `QUARTER_RES_COLOR`. These subpasses run the sky shader on a half-resolution or quarter-resolution texture to allow expensive calculations to be done fewer times (e.g. for clouds). Currently, to use the subpasses you must set the appropriate render mode `use_half_res_pass` or `use_quarter_res_pass`.
+
+The following image draws clouds at half resolution to improve performance.
+
+
+Sky Shaders allow users to write different code depending on which render target they are using. This allows users to have one version for the cubemap, and another for each subpass.
+
+```
+shader_type sky;
+render_mode use_half_res_pass;
+
+void fragment() {
+ if (AT_CUBEMAP_PASS) {
+ COLOR = vec3(1.0); // Reflections will be all white.
+ } else if (AT_HALF_RES_PASS) {
+ vec4 col = generate_fancy_clouds(EYEDIR, TIME); // Clouds will be rendered to half res texture.
+ COLOR = col.rgb;
+ ALPHA = col.a; // Subpasses can use alpha.
+ } else {
+ COLOR = HALF_RES_COLOR; // Background will read from HALF_RES_PASS.
+ }
+}
+```
+
+Finally, Sky Shaders provide access to information about the first 4 `DirectionalLight`s in the scene.
+* `LIGHT0_DIRECTION`: Direction of the first `DirectionalLight`.
+* `LIGHT0_ENABLED`: `true` when there is at least one `DirectionalLight` in the scene.
+* `LIGHT3_COLOR`: Color of the fourth light in the scene. If `LIGHT3_ENABLED` is `false`, this value is undetermined.
+* `LIGHT2_ENERGY`: Energy of the third `DirectionalLight` in the scene.
+
+Sky Shaders should allow users to create arbitrarily complex skies. For example, here is a Sky Shader ported over from a [Shadertoy shader](https://www.shadertoy.com/view/MscXRH) by Shane called "Combustible Clouds":
+
+
+
+## Performance considerations
+
+The Sky Shader is drawn on a full screen quad after all objects are drawn. This means pixels that are occluded will not be drawn. However, this doesn't apply when updating the radiance map and the subbuffers.
+
+In general the best optimization is to avoid updating the radiance cubemap as much as possible. The radiance cubemap updates every frame: when `TIME` is used in the shader, when a uniform is changed in the shader, when any of the light properties update, when the screen size is updated (is using subpasses), and when the active camera's position changes (when using `POSITION`). The radiance cubemap updates multiple times per frame if multiple `Camera`'s share a `Sky` and `POSITION` is used in the shader.
+
+Users should also try to perform expensive calculations in the subpass buffers and then upscale to the full screen when possible. If the sky is especially smooth, you can even render the entire thing to the radiance cubemap and then read from the cubemap when drawing to the screen.
+
+## Conclusion
+
+Please note, if you have existing scenes using the `ProceduralSky` or `PanoramaSky`, this change will break them and you will have to create a `ProceduralSkyMaterial` or a `PanoramaSkyMaterial.`
+
+Since this devlog hasn't felt very devloggy, here is an in-progess screenshot as a reward for reading! This comes from hunting a bug that arose while working on reading from the radiance cubemap properly.
+
+
+Please test out these new shaders and share what you create!
+
+And as always, if you are not yet, consider becoming our [patron](https://www.patreon.com/godotengine). This ensures that Godot development remains free from the control of any company and we can keep working like now, with the freedom to listen to everyone equally.
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-2-1-5-beta-1.md b/collections/_article/dev-snapshot-godot-2-1-5-beta-1.md
new file mode 100644
index 0000000000..a8dc5b0926
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-2-1-5-beta-1.md
@@ -0,0 +1,32 @@
+---
+title: "Dev snapshot: Godot 2.1.5 beta 1"
+excerpt: "As Godot 3.0 is a major release with compatibility breakage, we are still going to support the previous 2.1 stable branch for some time. Many fixes and enhancements have been done in the 2.1 branch since the release of 2.1.4 in August 2017, so it's time to get them tested widely to go towards a 2.1.5 release."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5a8/af9/b4c/5a8af9b4c4f7e372924442.png
+date: 2018-02-19 16:34:00
+---
+
+Godot 3.0 was [released a few weeks ago](/article/godot-3-0-released), and the feedback we are getting so far is incredible. The new version is of course not perfect, but for a major compatibility breaking release with over 18 months of development, it seems to be pretty usable and satisfactory for most users.
+
+Still, we still have many users who depend on the previous stable branch, 2.1, for various reasons:
+
+1. They might need support for OpenGL 2.1 / OpenGL ES 2.0, which is missing in Godot 3.0, limiting it to higher end devices (especially on mobile). This support will come back with Godot 3.1, but in the meantime such users are stuck on 2.1.
+2. They might have existing projects in development, or even already released, that they do not wish to port over to the new version. Migrating from Godot 2 to Godot 3 can be time consuming.
+
+As such, we will continue to provide maintenance releases for Godot 2.1 until at least version 3.1 (to address point 1.), and likely a few months afterwards with only security fixes (for users with games in production as per 2.).
+
+## Godot 2.1.5 incoming
+
+The previous stable version, Godot 2.1.4, was released in August 2017. Since then, there have been over 300 commits to the *2.1* branch, with bug fixes, enhancements, and even some new features.
+
+We'll go over the changes more in-depth in the actual release announcement, but until then, we need testers for this first beta 1 build! [Download it](https://download.tuxfamily.org/godotengine/2.1.5/beta1/) and test it with your existing 2.1 projects (make sure to do backups or use version control, as always). If you spot any regression (something worked in 2.1.4 and is now broken), please make a bug report and mention it in the [tracker bug](https://github.com/godotengine/godot/issues/16813).
+
+- [**Download repository**](https://download.tuxfamily.org/godotengine/2.1.5/beta1/)
+- [Tracker bug for regressions](https://github.com/godotengine/godot/issues/16813)
+
+Happy bug hunting!
+
+## Godot 3.0.1 also coming soon
+
+In parallel, we're also working on what will be the 3.0.1 release, with many bug fixes and enhancements to the current stable branch. Stay tuned for more info!
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-2-1-5-beta-2.md b/collections/_article/dev-snapshot-godot-2-1-5-beta-2.md
new file mode 100644
index 0000000000..370558cf7e
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-2-1-5-beta-2.md
@@ -0,0 +1,41 @@
+---
+title: "Dev snapshot: Godot 2.1.5 beta 2"
+excerpt: "One step closer to releasing 2.1.5 (our \"old stable\" branch) with this new beta 2 build! If you are still working with Godot 2.1 for any reason, make sure to give it a try and ensure that your projects still work as intended. If all goes well we will soon make a release candidate build and then the stable one."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5aa/a32/458/5aaa324584dc2378307816.png
+date: 2018-03-15 09:01:21
+---
+
+As mentioned in a [previous blog post](/article/dev-snapshot-godot-2-1-5-beta-1), we plan to continue supporting the 2.1.x branch for a while - at least until 3.1 is released, bringing back support for low and mid-end mobile and low-end desktop GPUs via OpenGL ES 2.0 / OpenGL 2.1.
+
+The feedback on the previous 2.1.5 beta 1 build was relatively good, and many fixes have been done since, especially to the (still imperfect, but better) tool to convert 2.1 projects to the Godot 3 API.
+
+## Godot 2.1.5 incoming
+
+The previous stable version, Godot 2.1.4, was released in August 2017. Since then, there have been over 300 commits to the *2.1* branch, with bug fixes, enhancements, and even some new features.
+
+We'll go over the changes more in-depth in the actual release announcement, but until then, we need testers for this new beta 2 build! [Download it](https://download.tuxfamily.org/godotengine/2.1.5/beta2/) and test it with your existing 2.1 projects (make sure to do backups or use version control, as always). If you spot any regression (i.e. something that worked fine in 2.1.4 and is now broken), please make a bug report and mention it in the [tracker bug](https://github.com/godotengine/godot/issues/16813).
+
+- [**Download repository**](https://download.tuxfamily.org/godotengine/2.1.5/beta2/)
+- [Tracker bug for regressions](https://github.com/godotengine/godot/issues/16813)
+
+Happy bug hunting!
+
+## Godot 3.1 making good progress
+
+In parallel, work on Godot 3.1 is still ongoing. Support for OpenGL ES 2.0 / OpenGL 2.1 **for 2D** was merged in the *master* branch recently, and [karroffel](https://github.com/karroffel) is now focusing on the more complex 3D part.
+
+Juan ([reduz](https://github.com/reduz)) implemented initial support for 2D meshes, and is now quite busy with preparations for GDC, where he will meet many companies as well as give a talk during our [GDC Meetup](https://godotengine.org/article/join-us-gdc-during-godot-meetup-2018) at the GitHub HQ.
+
+Other contributors are still quite active, and we're slowly but surely reducing our backlog of [awesome pull requests](https://github.com/godotengine/godot/pulls) done by the community over the last couple of months.
+
+There is still no ETA for 3.1, but basically we will wrap it up as soon as the 3D support via OpenGL ES 2.0 / OpenGL 2.1 is ready for production use.
+
+## Godot 3.0.3 in a few weeks
+
+We will continue pushing bug fixes and improvements in a forward compatible way to the 3.0 branch (i.e. you should be able to use the newer versions on your existing 3.0.x project without logic change). Hein-Peter ([TMM](https://github.com/hpvb)) did a great job so far on [3.0.1](/article/maintenance-release-godot-3-0-1) and [3.0.2](/article/maintenance-release-godot-302), and will continue doing so!
+
+Unless regressions or critical bugs dictate it, we plan to have maintenance releases once a month or so, to keep you up-to-date with the latest and greatest in the stable branch.
+
+Keep having fun working with Godot, and don't hesitate to showcase your work on social media using the [#GodotEngine](https://twitter.com/hashtag/GodotEngine) hashtag!
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-2-1-5-rc-1.md b/collections/_article/dev-snapshot-godot-2-1-5-rc-1.md
new file mode 100644
index 0000000000..2b46a5d91a
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-2-1-5-rc-1.md
@@ -0,0 +1,29 @@
+---
+title: "Dev snapshot: Godot 2.1.5 RC 1"
+excerpt: "Feedback has been quite good on the past two beta builds for the upcoming Godot 2.1.5 (providing legacy support for users of Godot 2), so we're now publishing a release candidate. If all goes well (no new regression reported), that should more or less be the 2.1.5 final release. So make sure to test it thoroughly!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5ab/69c/f4c/5ab69cf4c700d643288675.png
+date: 2018-03-24 18:53:08
+---
+
+As mentioned in a [previous blog post](/article/dev-snapshot-godot-2-1-5-beta-1), we plan to continue supporting the 2.1.x branch for a while - at least until 3.1 is released, bringing back support for low and mid-end mobile and low-end desktop GPUs via OpenGL ES 2.0 / OpenGL 2.1.
+
+The feedback on the previous 2.1.5 beta 1 and 2 builds was relatively good, and many fixes have been done since, especially to the (still imperfect, but better) tool to convert 2.1 projects to the Godot 3 API.
+
+## Godot 2.1.5 is around the corner
+
+The previous stable version, Godot 2.1.4, was released in August 2017. Since then, there have been over 350 commits to the 2.1 branch, with bug fixes, enhancements, and even some new features.
+
+We'll go over the changes more in-depth in the actual release announcement, but until then, we need testers for this first release candidate!
+
+**[Download it](https://download.tuxfamily.org/godotengine/2.1.5/rc1/)** and test it with your existing 2.1 projects (make sure to do backups or use version control, as always). If you spot any regression (i.e. something that worked fine in 2.1.4 and is now broken), please make a bug report and mention it in the [tracker bug report](https://github.com/godotengine/godot/issues/16813).
+
+- **[Download repository](https://download.tuxfamily.org/godotengine/2.1.5/rc1/)**
+- [Tracker bug report for regressions](https://github.com/godotengine/godot/issues/16813)
+
+Happy testing!
+
+## Known issues
+
+- The "toggle visibility" button in the SceneTree panel does not work for Spatial-derived nodes ([#17722](https://github.com/godotengine/godot/issues/17722)). It has been fixed in the *2.1* branch after the RC 1 build was made.
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-2-1-5-rc-2.md b/collections/_article/dev-snapshot-godot-2-1-5-rc-2.md
new file mode 100644
index 0000000000..0a94f670c8
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-2-1-5-rc-2.md
@@ -0,0 +1,56 @@
+---
+title: "Dev snapshot: Godot 2.1.5 RC2"
+excerpt: "Some love for the users of the old stable 2.1 branch: Godot 2.1.5 is still being worked on and we now have a second release candidate. If all goes well, the stable release should only be a few days away."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5b5/073/2f9/5b50732f9b7ce697339594.jpg
+date: 2018-07-19 11:22:40
+---
+
+Yes, you read correctly: Godot 2.1.5 is still being worked on, four months after the [previous release candidate](/article/dev-snapshot-godot-2-1-5-rc-1) and close to one year after the [2.1.4 stable release](/article/maintenance-release-godot-2-1-4)!
+
+I planned to release it much sooner, but 3.0 and its subsequent maintenance releases happened, and I could only dedicate a few hours every now and then to the old stable branch.
+
+On top of that, I decided to wait for this RC2 to have a proper fix for the [Android placeholder permissions issue](/article/fixing-godot-games-published-google-play) that crept up on Google Play in May and affected many published 2.1 games. Hein-Pieter's [APK fixer tool](/article/godot-apk-fixer-tool) could already be used to fix those games, but I wanted 2.1.5 to export correct APKs out of the box. The proper fix was [merged a few days ago](https://github.com/godotengine/godot/pull/20082), so I'm now considering 2.1.5 ready to go stable.
+
+## Download and test
+
+This is the second release candidate for 2.1.5, and if all goes well, it should be the last. For this I will need the help of all 2.1.x users to test this release, use it to export your existing projects and check that there are no regressions from 2.1.4.
+
+- [Downloads](https://downloads.tuxfamily.org/godotengine/2.1.5/rc2/)
+- [Changelog](https://downloads.tuxfamily.org/godotengine/2.1.5/rc2/Godot_v2.1.5-rc2_changelog.txt)
+- [General feedback issue](https://github.com/godotengine/godot/issues/20273) - you can collect your feedback on this RC build here, especially linking to other issues which might be open already but not fixed yet
+
+Note that contrarily to 3.0 which can download the export templates for you automatically, with 2.1 you still need to [download the `.tpz` file](https://downloads.tuxfamily.org/godotengine/2.1.5/rc2/Godot_v2.1.5-rc2_export_templates.tpz) manually and use it to install templates within the editor.
+
+## Why do we still do 2.1.x releases again?
+
+As mentioned in a [previous blog post](/article/dev-snapshot-godot-2-1-5-beta-1), since Godot 3.0 requires OpenGL 3.3 on desktop and OpenGL ES 3.0 on mobile, some developers are sticking to the 2.1.x branch for now while waiting for Godot 3.1, which will bring support for OpenGL 2.1 and OpenGL ES 2.0 again.
+
+Moreover, some developers started big projects with Godot 2.1 before Godot 3.0 was released, and it might not be worth it for them to port their project over to Godot 3 for the time being, due to the important amount of work required to port/rewrite non-trivial projects in Godot 3.
+
+Finally, distribution platforms like Google Play or the Apple Store keep increasing their requirements in terms of target systems (to ~~force~~ encourage more users to move to newer, supported versions), so we need to provide new export templates that match those guidelines so that people can update their published games. Same story with ensuring that the embedded libraries that we're using don't have known security vulnerabilities.
+
+## What's new in 2.1.5?
+
+We'll go over the changes in detail in the stable release announcement (hopefully in a few days!), but in the meantime you can check the [complete changelog since 2.1.4](https://downloads.tuxfamily.org/godotengine/2.1.5/rc2/Godot_v2.1.5-rc2_changelog.txt). Here are some highlights:
+
+- Android: APKs no longer include placeholder permissions that Google Play started complaining about
+- Android: Minimum SDK raised to 18, target SDK raised to 27.
+- Debug: New crash handler to generate backtraces when crashing on all desktop platforms (as in 3.0).
+- Editor: Tons of improvements to the "Godot 2 to 3 converter" tool, which can now convert many more resources than the one in 2.1.4. It even has an option to tentatively convert your scripts and change things like `get_pos()` (2.1) to `get_position()` (3.0) automatically.
+- Editor: Add class members overview in script editor.
+- Editor: New contextual menu in FileSystem dock.
+- Input: Hardware cursor support.
+- Input: Multitouch support.
+- iOS: Minimum SDK raised to 9.0, target SDK raised to 11.4.
+- OSX: Exporting for macOS from a Mac now generates a .dmg package.
+- Windows: New WASAPI audio driver (as in 3.0).
+- Performance optimisations.
+- Several crashes fixed, especially in Android backend.
+
+That's just a quick selection going through the changelog, there were a lot more nice changes in the 450 commits made to the 2.1 branch since 2.1.4-stable!
+
+Happy testing, and please report any (new) issue you may find!
+
+*The illustration picture ([full size](/storage/app/uploads/public/5b5/073/2f9/5b50732f9b7ce697339594.jpg)) is from an upcoming Godot 2.1 game by [Kit9Studio](https://twitter.com/kit9studio) (composed of [Sini](https://twitter.com/thekattiapina) and [Jared](https://twitter.com/Avencherus)), *Gun-Toting Cats*. They helped a lot with testing the *2.1* branch and finding several bugs that are fixed in this RC2.*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-2-1-6-rc-1.md b/collections/_article/dev-snapshot-godot-2-1-6-rc-1.md
new file mode 100644
index 0000000000..dc87544d55
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-2-1-6-rc-1.md
@@ -0,0 +1,38 @@
+---
+title: "Dev snapshot: Godot 2.1.6 RC 1"
+excerpt: "It's been a long time since our previous release in the 2.1 branch! The upcoming 2.1.6 release is intended to address new requirements from Google Play and Apple store, as well as update thirdparty libraries to recent versions to fix known security vulnerabilities (in particular in libpng and openssl)."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5cf/69b/132/5cf69b132699d052649367.png
+date: 2019-06-04 17:28:31
+---
+
+It's been a long time since [our previous release](/article/maintenance-release-godot-2-1-5) in the 2.1 branch!
+
+"Wait," I hear you say, "is the 2.1 branch still maintained 3 years after its first release?"
+
+The answer is yes, on a "best effort" basis and focusing on release critical and security issues. What we consider "release critical" are issues which prevent people using Godot 2.1.x in production from releasing or updating their game, such as crash issues and adapting to the changing requirements of distribution platforms (mainly Google Play and Apple Store).
+
+The upcoming 2.1.6 release is intended to address new requirements from Google Play and Apple store, as well as update thirdparty libraries to recent versions to fix known security vulnerabilities (in particular in libpng and openssl).
+
+Google Play now mandates the support of its two 64-bit architectures, `arm64v8` and `x86_64`. The former was already included in Godot 2.1.5, but `x86_64` was missing and added first in Godot 3.1-stable. The templates for this architecture are now also included in Godot 2.1.6 RC 1, and will be included in an upcoming Godot 3.0.7 for the same reason.
+
+Apple Store now requires binaries compiled against the iOS SDK 12.1 or later to support the latest iterations of its OS, so new binaries were also needed.
+
+### Who is this for?
+
+As mentioned above, this new release is made for people using Godot 2.1.x in production. Many users started projects years ago with Godot 2.1 and are still developing them, about to release them or need to ship updates. Upgrading to Godot 3.0 or later is not straightforward due to various compatibility breakages that we did at the time, so these users need long term support.
+
+If you want to start a new project, there is no reason to use Godot 2.1.6 which is based on a 3 years old code branch. You should instead use the [latest stable release](/download) to benefit from all the new features and bug fixes included over the years.
+
+### Download
+
+As a reminder, Godot 2.1.x does not have an export templates downloader, so you should make sure to download both the editor binary for your platform and the templates archive (`.tpz` file), and install these templates using the dedicated editor feature. You should **not mix versions**, i.e. using a 2.1.6 editor binary with 2.1.5 templates or the other way around. Export templates should match the exact commit used to build your editor binary.
+
+Please test this release candidate on your 2.1 projects and make sure that both the editor and the exports work as expected. If you could test the upload of Android or iOS games to Google Play/Apple Store to confirm that they pass the platforms' requirements, this would be very helpful too.
+
+Please report any regression (a new bug in 2.1.6 RC 1 that you did not have in 2.1.5) or blocking bug in this [tracker bug report](https://github.com/godotengine/godot/issues/29484).
+
+- [Download repository](https://download.tuxfamily.org/godotengine/2.1.6/rc1/)
+- [Changelog](https://downloads.tuxfamily.org/godotengine/2.1.6/rc1/Godot_v2.1.6-rc1_changelog.txt)
+- [Tracker bug report for regressions](https://github.com/godotengine/godot/issues/29484)
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-0-1-rc1.md b/collections/_article/dev-snapshot-godot-3-0-1-rc1.md
new file mode 100644
index 0000000000..27692ee772
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-0-1-rc1.md
@@ -0,0 +1,45 @@
+---
+title: "Introduction and Godot 3.0.1-rc1"
+excerpt: "We've released the release candidate for the first patch release of the Godot 3.0 branch. This is what is going to be 3.0.1. We've added many fixes and some enhancements to make your lives as Godot users (even) better. Please see the article for details on the release and we'd like to ask all our users to test!"
+categories: ["pre-release"]
+author: Hein-Pieter van Braam
+image: /storage/app/uploads/public/5a9/078/f91/5a9078f917e6e405671833.png
+date: 2018-02-23 21:21:34
+---
+
+Hi Godot! My name is Hein-Pieter van Braam-Stewart. Some of you might know me on IRC/Discord/Matrix as 'TMM' and on GitHub as '[hpvb](https://github.com/hpvb)'. To help Rémi ([Akien](https://github.com/akien-mga)) focus on making sure the *master* branch is as good as it can be, I'm looking after the stable branch. Currently the stable branch is the *3.0* branch.
+
+I'm very happy to have been given this responsibility and I hope to work with all of you to make the Godot stable branches, well, just that! Stable!
+
+TL;DR: Download Godot 3.0.1-rc1 [**here!**](https://download.tuxfamily.org/godotengine/3.0.1/rc1/) And here is the [changelog](https://download.tuxfamily.org/godotengine/3.0.1/rc1/Godot_v3.0.1-rc1_changelog.txt).
+
+I'd like to thank all of our many wonderful contributors for their efforts!
+
+## So what does the stable branch mean
+
+What 'stable' means has changed a bit since the Godot 2 times as we're moving towards a more rapid release schedule. Starting with 3.0 the release numbers are in the form of 'x.y.z' where:
+* x = Major release. Any number of things may break in your project. You will need to port (like from 2.1.x to 3.0 currently).
+* y = Minor release. You may need to do some small changes to your scripts but no major breakage.
+* z = Patch release. We will make every effort to make sure you can upgrade your existing project without any changes. We may sometimes fix a bug that could impact your game in very rare cases. We will document these on the release notes. The goal here is that you can replace the Godot executable even on an already exported game and everything should 'just work'.
+
+Note that until further notice every project using C# should be prepared to rebuild and fix their code. We're not currently considering C# support to have reached the level of stability required to make the same guarantees as we try to make for GDScript-based projects. Don't worry! C# users got a popup when starting Godot 3.0 that explained this, and our C# contributors are still working on several improvements that should make the workflow much better.
+
+## On this release
+
+This is the release candidate for the first patch release for the Godot 3.0 stable branch. The version that will become 3.0.1. We'd like to ask the community to give it a test, make sure that we didn't break any of your ongoing projects (*any* project breakage will be considered a bug for 3.0.1). With the exception of the following:
+
+* If you relied on the Bullet physics engine and relied on the fact that the calculated effective gravity on KinematicBodies was always '0' then you will need to fix your code as this is now correctly calculated. See [#15554](https://github.com/godotengine/godot/issues/15554) for details.
+* Setting the `v` member of a color did not properly set the `s` member. This is now corrected. See [#16916](https://github.com/godotengine/godot/pull/16916) for details.
+* RichTextLabels did not properly determine the baseline of all fonts. If you relied on the look of the previous implementation please let us know. See [#15711](https://github.com/godotengine/godot/pull/15711) for details.
+* SpinBoxes didn't calculate their width properly. This is now fixed but could subtly change your GUI layout. See [#16432](https://github.com/godotengine/godot/pull/16432) for details.
+* OGG streams now correctly signal the end of playback. If you were relying on this not happening please let us know. See [#15910](https://github.com/godotengine/godot/pull/15910) for details.
+* Last but not least, C# assemblies built with Godot 3.0 won't be compatible with 3.0.1, and the editor might crash while trying to load old assemblies. Make sure to delete the `.mono` folder in your project folder to force a new build (this workflow will be improved in future releases).
+
+### What didn't make it
+
+Sadly the support for C# export templates hasn't quite baked yet (a [WIP has just been merged](https://github.com/godotengine/godot/pull/16920), but more work and testing is still needed). We will release a stable point release of Godot as **soon as this support has sufficiently matured**. Nobody will get the C# support a second later than it is done!
+
+### Exciting new stuff
+
+* Thanks to Fabio ([Fales](https://github.com/faless)) and [iFire](https://github.com/fire) the server platform has made a comeback. So headless Godot is back in the same form it was in 2.1!
+* Back by popular demand: Type icons! Enable them in project settings if you missed them.
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-0-3-rc-1.md b/collections/_article/dev-snapshot-godot-3-0-3-rc-1.md
new file mode 100644
index 0000000000..23e5d6e8b2
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-0-3-rc-1.md
@@ -0,0 +1,55 @@
+---
+title: "Dev snapshot: Godot 3.0.3 RC 1"
+excerpt: "This is the first release candidate for what will become Godot 3.0.3. In this release we have initial support for Mono export for desktop platforms. Please test this release and report bugs!"
+categories: ["pre-release"]
+author: Hein-Pieter van Braam
+image: /storage/app/uploads/public/5ae/a42/707/5aea427070767889266673.png
+date: 2018-05-02 23:06:38
+---
+
+**Note: [Release candidate 2](https://godotengine.org/article/dev-snapshot-godot-3-0-3-rc-2) is out now!**
+
+This is the first release candiate for what will become Godot 3.0.3. This release has over 100 bugfixes and new features. A full human-readable changelog is still to be created but the git shortlog [can be downloaded here](https://downloads.tuxfamily.org/godotengine/3.0.3/rc1/Godot_v3.0.3-rc1_changelog.txt).
+
+The most important new feature for this release is initial support for Mono exports on the desktop platforms (Windows, Linux, and MacOSX). We're still hard at work at making Mono exporting to mobile work.
+
+Note that some early users have reported some issues with the Mono downloads. This is being investigated.
+
+Please test this release with your existing projects and as usual: Any breakage of existing projects after upgrading is a bug. If we somehow missed something please [report a bug](https://github.com/godotengine/godot/issues/new).
+
+I'd like to thank our wonderful community for smothering us in the warm glow of their pull requests and bug reports. This is looking like another great release!
+
+On a sidenote: I (hp) was moving house last month so this release is somewhat later than usual. We're aiming to have 3.0.4 available near the end of May. We're aiming for a roughly monthly patch release cycle.
+
+## Downloads
+
+**The original uploads for the X11 binaries were accidentally the export templates instead of the editor. This has been corrected now.**
+
+As always, you will find the binaries for your platform on our mirrors:
+
+- Classical version: [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0.3/rc1)]
+- Mono version: [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0.3/rc1/mono)]
+
+Mono versions require Mono 5.10 on Linux and Windows and Mono 5.8 on MacOS
+
+## Known incompatibilities with Godot 3.0.2
+
+None
+
+## Known incompatibilities with Godot 3.0.1
+
+None
+
+## Known incompatibilities with Godot 3.0
+
+* If you use the Bullet physics engine and relied on the fact that the calculated effective gravity on KinematicBodies was always '0' then you will need to fix your code as this is now correctly calculated. See [#15554](https://github.com/godotengine/godot/issues/15554) for details.
+* Setting the `v` member of a color did not properly set the `s` member. This is now corrected. See [#16916](https://github.com/godotengine/godot/pull/16916) for details.
+* RichTextLabels did not properly determine the baseline of all fonts. If you relied on the look of the previous implementation please let us know. See [#15711](https://github.com/godotengine/godot/pull/15711) for details.
+* SpinBoxes didn't calculate their width properly. This is now fixed but could subtly change your GUI layout. See [#16432](https://github.com/godotengine/godot/pull/16432) for details.
+* OGG streams now correctly signal the end of playback. If you were relying on this not happening please let us know. See [#15910](https://github.com/godotengine/godot/pull/15910) for details.
+
+## Known bugs in Godot 3.0.3
+
+* `Vector3.snapped()` does not work and just returns the original Vector3. Fixing this would have meant breaking ABI between Godot 3.0 and 3.0.2 so this function will remain non-functional.
+* `move_and_slide()` doesn't quite work correctly. An easy workaround is to increase the safe margin to 0.05 (or higher if required). It is not yet clear how to implement the proper fix without impacting users who already implemented this workaround in their projects. See [issue #16459](https://github.com/godotengine/godot/issues/16459) for an explanation.
+* Some users report crashes on Windows 10 after a recent Windows update. We currently don't know what is causing this.
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-0-3-rc-2.md b/collections/_article/dev-snapshot-godot-3-0-3-rc-2.md
new file mode 100644
index 0000000000..629dbfcb44
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-0-3-rc-2.md
@@ -0,0 +1,47 @@
+---
+title: "Dev snapshot: Godot 3.0.3 RC 2"
+excerpt: "This is the second release candidate for what will become Godot 3.0.3. In this release we overhauled the new buildsystem (again) and fixed quite a few bugs. Please go forth and test!"
+categories: ["pre-release"]
+author: Hein-Pieter van Braam
+image: /storage/app/uploads/public/5af/9dd/ac8/5af9ddac832c9548534486.png
+date: 2018-05-14 19:03:45
+---
+
+We're pleased to announce the second release candidate for what will become Godot 3.0.3. We've added quite a few bugfixes compared to rc1 and a port of [RandomShaper](https://github.com/RandomShaper)'s mouse input emulation code.
+
+For this release I've had to redo our buildsystem (again) due to trouble with the rc1 packages. This is why it took a while to get rc2 out. I believe the problems have now been solved but please test on all your platforms! The most important user-visible changes compared to rc1 are that now the Mono builds should work on all platforms, and rc2 restores support for Windows 7. Windows 7 compatibility is now also being tested before releases happen.
+
+Please test this release with your existing projects and as usual: Any breakage of existing projects after upgrading is a bug. If we somehow missed something please [report a bug](https://github.com/godotengine/godot/issues/new).
+
+I'd like to take this time to thank all of our wonderful contributers who made this releases possible. You're the best! Thank you for all your contributions, be it code, docs, or bugreports.
+
+## Downloads
+
+As always, you will find the binaries for your platform on our mirrors:
+
+- Classical version: [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0.3/rc2)]
+- Mono version: [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0.3/rc2/mono)]
+
+Mono versions require Mono 5.10 on Linux and Windows and Mono 5.8 on MacOS
+
+## Known incompatibilities with Godot 3.0.2
+
+None
+
+## Known incompatibilities with Godot 3.0.1
+
+None
+
+## Known incompatibilities with Godot 3.0
+
+* If you use the Bullet physics engine and relied on the fact that the calculated effective gravity on KinematicBodies was always '0' then you will need to fix your code as this is now correctly calculated. See [#15554](https://github.com/godotengine/godot/issues/15554) for details.
+* Setting the `v` member of a color did not properly set the `s` member. This is now corrected. See [#16916](https://github.com/godotengine/godot/pull/16916) for details.
+* RichTextLabels did not properly determine the baseline of all fonts. If you relied on the look of the previous implementation please let us know. See [#15711](https://github.com/godotengine/godot/pull/15711) for details.
+* SpinBoxes didn't calculate their width properly. This is now fixed but could subtly change your GUI layout. See [#16432](https://github.com/godotengine/godot/pull/16432) for details.
+* OGG streams now correctly signal the end of playback. If you were relying on this not happening please let us know. See [#15910](https://github.com/godotengine/godot/pull/15910) for details.
+
+## Known bugs in Godot 3.0.3
+
+* `Vector3.snapped()` does not work and just returns the original Vector3. Fixing this would have meant breaking ABI between Godot 3.0 and 3.0.2 so this function will remain non-functional.
+* `move_and_slide()` doesn't quite work correctly. An easy workaround is to increase the safe margin to 0.05 (or higher if required). It is not yet clear how to implement the proper fix without impacting users who already implemented this workaround in their projects. See [issue #16459](https://github.com/godotengine/godot/issues/16459) for an explanation.
+* Some users report crashes on Windows 10 after a recent Windows update. We currently don't know what is causing this.
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-0-3-rc-3.md b/collections/_article/dev-snapshot-godot-3-0-3-rc-3.md
new file mode 100644
index 0000000000..f641941f66
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-0-3-rc-3.md
@@ -0,0 +1,49 @@
+---
+title: "Dev snapshot: Godot 3.0.3 RC 3"
+excerpt: "Godot 3.0.3 RC3 is out! We've done a lot of work to make the mono export experience better for Windows users. Please help us test and debug this release!"
+categories: ["pre-release"]
+author: Hein-Pieter van Braam
+image: /storage/app/uploads/public/5b1/2ab/104/5b12ab104dfb6960002176.png
+date: 2018-06-02 00:00:00
+---
+
+We're pleased to announce the third release candidate for what will become Godot 3.0.3. Quite a lot of work went into making the Mono exports work for Windows targets. It turned out to be quite a hairy problem. But now Mono exports to Windows, Linux, and MacOS should work with a single click. It is no longer necessary to ship the Mono runtime DLL manually.
+
+This release also restores the Javascript export templates. These were broken for rc2.
+
+Please note that this release still has the [Android Google Play bug](https://godotengine.org/article/fixing-godot-games-published-google-play). We will do an rc4 shortly with a fix. A tool will be released soon to fix existing APKs. I've had some trouble with getting signing to work reliably from a third-party tool.
+
+Please test this release with your existing projects and as usual: Any breakage of existing projects after upgrading is a bug. If we somehow missed something please [report a bug](https://github.com/godotengine/godot/issues/new).
+
+I'd like to take a moment to thank all of the superheroes that contribute to the project to make this release possible. If you'd like to be elevated to 'super hero' please file bugs, fix documentation, write patches, or just come hang out with us on Discord, IRC, or Matrix!
+
+## Downloads
+
+As always, you will find the binaries for your platform on our mirrors:
+
+- Classical version: [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0.3/rc3)]
+- Mono version: [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0.3/rc3/mono)]
+
+Mono versions require **Mono 5.12.0** on all platforms.
+
+## Known incompatibilities with Godot 3.0.2
+
+None
+
+## Known incompatibilities with Godot 3.0.1
+
+None
+
+## Known incompatibilities with Godot 3.0
+
+* If you use the Bullet physics engine and relied on the fact that the calculated effective gravity on KinematicBodies was always '0' then you will need to fix your code as this is now correctly calculated. See [#15554](https://github.com/godotengine/godot/issues/15554) for details.
+* Setting the `v` member of a color did not properly set the `s` member. This is now corrected. See [#16916](https://github.com/godotengine/godot/pull/16916) for details.
+* RichTextLabels did not properly determine the baseline of all fonts. If you relied on the look of the previous implementation please let us know. See [#15711](https://github.com/godotengine/godot/pull/15711) for details.
+* SpinBoxes didn't calculate their width properly. This is now fixed but could subtly change your GUI layout. See [#16432](https://github.com/godotengine/godot/pull/16432) for details.
+* OGG streams now correctly signal the end of playback. If you were relying on this not happening please let us know. See [#15910](https://github.com/godotengine/godot/pull/15910) for details.
+
+## Known bugs in Godot 3.0.3
+
+* `Vector3.snapped()` does not work and just returns the original Vector3. Fixing this would have meant breaking ABI between Godot 3.0 and 3.0.2 so this function will remain non-functional.
+* `move_and_slide()` doesn't quite work correctly. An easy workaround is to increase the safe margin to 0.05 (or higher if required). It is not yet clear how to implement the proper fix without impacting users who already implemented this workaround in their projects. See [issue #16459](https://github.com/godotengine/godot/issues/16459) for an explanation.
+* Some users report crashes on Windows 10 after a recent Windows update. We currently don't know what is causing this.
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-0-alpha-1.md b/collections/_article/dev-snapshot-godot-3-0-alpha-1.md
new file mode 100644
index 0000000000..eb92d98538
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-0-alpha-1.md
@@ -0,0 +1,73 @@
+---
+title: "Dev snapshot: Godot 3.0 alpha1"
+excerpt: "There is still a long way to go to finalize Godot 3.0 and release it publicly, but we are now ready for some broader testing of the alpha version. The first alpha build comes with many known issues, but also a lot of interesting (and undocumented) features to experiment with and debug."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/597/8e2/fc4/5978e2fc4ffb4676085667.jpg
+date: 2017-07-26 18:44:02
+---
+
+After almost one year of development, the *master* branch (future Godot 3.0) is mostly feature-complete and ready for broader testing by the Godot community. We are therefore releasing a first alpha snapshot for existing users to play with and report bugs.
+
+## Disclaimer
+
+**IMPORTANT: This is an [*alpha*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.0 would be on its release.**
+
+There is still a long way of bug fixing and usability improvement until we can release the stable version, and this release comes with virtually *no documentation*. This release is exclusively for testers who are already familiar with Godot and can report the issues they experience [on GitHub](https://github.com/godotengine/godot/issues/).
+
+There is also no guarantee that projects started with the alpha1 build will still work in alpha2 or later builds, as we reserve the right to do necessary breaking adjustments up to the *beta* stage. Finally, the desktop platforms (Linux, macOS, Windows) are the only ones in a usable state, Android, iOS, UWP and JavaScript all need further fixes to properly support the new Godot 3.0 features.
+
+**Note:** New Godot users should *not* use this build to start their learning. Godot 2.1 is still supported and [well documented](http://docs.godotengine.org/en/stable/)
+
+## The features
+
+Now, there are still some cool features that can already be played with in this alpha1 build, and we are looking forward to seeing what you will come up with using the new 3D renderer. There is no exhaustive listing of all the new features to experiment with, but you can read past articles of [this blog](/news) and check Juan's [Twitter feed](https://twitter.com/reduzio) for some teasers :)
+
+Please use the [community channels](/community) to discuss with existing users and learn how to use the new workflows of Godot 3.0 - as of this writing there is almost no documentation on the new features, but this alpha1 build should serve as a starting point for documentation writers.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our mirrors and download the editor binary for your platform and the export templates archive:
+
+- [Mirror 1 (HTTPS)](https://downloads.tuxfamily.org/godotengine/3.0/alpha1)
+- [Mirror 2 (HTTP)](http://op.godotengine.org:81/downloads/3.0/alpha1)
+
+Also clone the [godot-demo-projects](https://github.com/godotengine/godot-demo-projects/) repository to have demos to play with. Some of them might still need adjustments due to recent changes in the *master* branch, feel free to report any issue.
+
+## Bug reports
+
+There are still many open bug reports for the 3.0 milestone, which means that we are aware of many bugs already. We still release this snapshot to get some early feedback while we work on fixing the known issues.
+
+As a tester, you are encouraged to open bug reports if you experience issues with alpha1. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+You can also consult this list of [known issues](https://pad.sfconservancy.org/p/godot3-alpha-known-issues), which is a hand-picked list of the most visible problems you will likely encounter.
+
+## FAQ
+
+We can already see many questions coming regarding this development snapshot, so here are some answers.
+
+#### What is the ETA for Godot 3.0 stable?
+
+*When it's ready.* We're all working on our free time on this project, and can't commit to a given deadline. We consider the *master* branch to be feature-complete, and we are now working on fixing bugs in the new features and enhancing the usability of the new workflows. Depending on how it goes, we may be able to release 3.0 stable in a couple of months.
+
+#### Does it support C#?
+
+No, the alpha1 build does not contain the [Mono/C# module](https://github.com/neikeq/GodotSharp) yet. It should soon be merged in the *master* branch, so it might be available in alpha2. The 3.0 stable release *will* support C#, the integration is almost ready.
+
+#### Does it support Vulkan?
+
+No, and there are no plans for Vulkan support for the time being. Our resources are too limited to focus on too many renderers at the same time, and the new OpenGL ES 3.0 / OpenGL 3.3 renderer of this build was already a huge refactor. Vulkan being only relevant for a small fraction of our users, it's low priority for now.
+
+#### How to run my 2.1 game in the alpha?
+
+Projects from Godot 2.1 are not compatible with Godot 3.0, as many things changed in the Godot API as well as in GDScript. There is no porting guide for now, but there is an export tool in Godot 2.1.3 and later which can be used to export 2.1 games to the formats expected for Godot 3.0.
+
+Since the *master* branch is a moving target, the exporter in Godot 2.1.3 is already outdated and won't work as smoothly as it should. Your best bet is to compile the [2.1 branch](https://github.com/godotengine/godot/tree/2.1) yourself to use the latest version of the exporter, and report any issue you experience with it.
+
+#### How to use GDNative?
+
+As for most features, it lacks documentation for now. Still, you will find some infos on the [godot_headers](https://github.com/GodotNativeTools/godot_headers) main repository, as well as the [CPP bindings](https://github.com/GodotNativeTools/cpp_bindings). You can use the [Q&A](/qa) with the *gdnative* tag to mark your questions; karroffel will do all she can to help you get started.
+
+#### Will there be more alpha builds?
+
+Yes, as the name "alpha1" suggests, we plan to have newer builds regularly to bring the latest state of the *master* branch. Depending on the user feedback we get, we might make weekly releases or biweekly if it proves too much burden.
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-0-alpha-2.md b/collections/_article/dev-snapshot-godot-3-0-alpha-2.md
new file mode 100644
index 0000000000..3b820f7537
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-0-alpha-2.md
@@ -0,0 +1,56 @@
+---
+title: "Dev snapshot: Godot 3.0 alpha 2"
+excerpt: "One step closer to the release of Godot 3.0! With this alpha 2 development snapshot, Godot users will be able to preview the upcoming C# support and continue testing the advanced 3D features introduced in Godot 3.0. This snapshot is of course expected to be buggy and unstable, so please be aware that it does not reflect the final state of what Godot 3.0 will be like."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/59f/8c3/c91/59f8c3c91a87f065753289.png
+date: 2017-10-31 18:23:17
+---
+
+A little treat (or is it a trick?) for our community on this Halloween eve: Godot 3.0 *alpha 2* is out, ready for your testing! It's already been 3 months since our previous [official development snapshot](/article/dev-snapshot-godot-3-0-alpha-1), and lots of bugs have been fixed, making us one big step closer to the final 3.0 *stable* release.
+
+It's also the first build to include the long awaited support for the C# programming language using [Mono](http://mono-project.com/)! This is of course still pretty rough, though usable, and we are looking forward to your feedback and bug reports. Some caveats are documented below as well as in the [introduction blog post](/article/introducing-csharp-godot), so make sure to read them before filing issues.
+
+## Disclaimer
+
+**IMPORTANT: This is an *[alpha](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha)* build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.0 would be on its release.**
+
+There is still a long way of bug fixing and usability improvement until we can release the stable version, and this release comes with incomplete documentation: the in-editor and [online Class Reference](http://docs.godotengine.org/en/latest/) is quite complete thanks to the awesome work of our documentation team, but there aren't many tutorials about using Godot 3.0 yet. For the Mono build, there is no specific documentation yet. This release is exclusively for testers who are already familiar with Godot and can report the issues they experience on GitHub.
+
+There is also no guarantee that projects started with the alpha 2 build will still work later builds, as we reserve the right to do necessary breaking adjustments up to the *beta* stage.
+
+**Note:** New Godot users should *not* use this build to start their learning. Godot 2.1 is still supported and [well documented](http://docs.godotengine.org/en/stable/).
+
+## The features
+
+Since the previous alpha build, there have been hundreds of bugs fixed, as well as many usability enhancements to make the new features as easy to use as possible.
+
+There was also a [strong focus on the documentation](https://godotengine.org/article/first-godot-3-docs-sprint-sept-9), with the Class Reference close to 70% complete now (which is already much higher than the completion level of the 2.x API documentation).
+
+### Quick Mono howto
+
+Of course, the main feature many have been waiting for is the Mono support. It comes in separate binaries with an additional system requirement: the Mono SDK. You need to install the [current stable version](http://www.mono-project.com/download/) of Mono to use with Godot, as you will be developing applications which require the .NET Framework.
+
+If you installed Mono in the classical system directories (using the upstream macOS or Windows installers, or the Linux repositories), everything should work out of the box.
+
+If you installed Mono in a specific directory, things might get a bit more complex. You can override the `MONO_PATH` environment variable to point to the location of your .NET Framework 4.5, typically `/path_to_mono_root/lib/mono/4.5/`. You will also need `msbuild` in your `PATH`, so if you installed it in a location which is not included in the `PATH`, you can either override the latter or create a symbolic link.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusing new users. Instead, browse one of our mirrors and download the editor binary for your platform and the export templates archive:
+
+- Classical version: [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0/alpha2)] [[HTTP mirror](http://op.godotengine.org:81/downloads/3.0/alpha2)]
+- Mono version (requires the Mono SDK): [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0/alpha2/mono)] [[HTTP mirror](http://op.godotengine.org:81/downloads/3.0/alpha2/mono)]
+
+**Note:** Export templates are currently missing due to a last minute regression in the HTML5 platform (**Edit 2017-10-31 23:00 UTC:** They are now available for the classical version).
+Export templates for the Mono flavour will not be provided, as exporting Mono games is not completely implemented yet.
+
+Also clone the [godot-demo-projects](https://github.com/godotengine/godot-demo-projects/) repository to have demos to play with. Some of them might still need adjustments due to recent changes in the *master* branch, feel free to report any issue.
+
+## Bug reports
+
+There are still many open bug reports for the 3.0 milestone, which means that we are aware of many bugs already. We still release this snapshot to get some early feedback while we work on fixing the known issues.
+
+As a tester, you are encouraged to open bug reports if you experience issues with alpha 2. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+Have fun with this alpha 2 and stay tuned for future, more stable releases :)
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-0-beta-1.md b/collections/_article/dev-snapshot-godot-3-0-beta-1.md
new file mode 100644
index 0000000000..bf1678e365
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-0-beta-1.md
@@ -0,0 +1,44 @@
+---
+title: "Dev snapshot: Godot 3.0 beta 1"
+excerpt: "Godot 3.0's development official entered the beta stage last week, which coincides for us with what we name the feature freeze: from now on, no new features will be merged in the master branch, as the focus will be fully on fixing existing issues to stabilize the current feature set.
+To get broader testing of the feature-frozen branch, we're releasing an official build, Godot 3.0 beta 1, just one month after the previous alpha 2."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5a2/01a/2d7/5a201a2d7a27e423350304.jpg
+date: 2017-11-30 14:48:18
+---
+
+Godot 3.0's development officially entered the *beta* stage last week, which coincides for us with what we name the *feature freeze*: from now on, no new features will be merged in the *master* branch, as the focus will be fully on fixing existing issues to stabilize the current feature set.
+Don't worry though, Godot 3.1 will arrive soon after the 3.0 release to bring all the nice features that contributors are already working on.
+
+To get broader testing of the feature-frozen branch, we're releasing an official build, Godot 3.0 *beta 1*, just one month after the [previous alpha 2](/article/dev-snapshot-godot-3-0-alpha-2).
+
+It notably includes [Bullet](http://bulletphysics.org) as the [new 3D physics engine](/article/godot-30-switches-bullet-3-physics), [onion skinning](/article/introducing-onion-skinning-godot-game-engine), autotiling for 2D tilemaps, an enhanced debugger with remote SceneTree edit, and nice usability improvements such as code folding in the script editor, PascalCase builtins for C#, and many others.
+
+But more importantly, it also brings tons of bug fixes compared to alpha 2, and we will continue to hunt down the remaining issues to guarantee a nice experience with Godot 3.0 stable. The documentation and translation have also been updated thanks to the work of our many contributors.
+
+## Disclaimer
+
+**IMPORTANT: This is a *[beta](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta)* build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.0 would be on its release.**
+
+There will still be many fixes and enhancements done before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them. Notably, the 3D performance varies greatly depending on your graphics hardware, and will be improved and streamlined progressively as Godot 3 stabilizes.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusing new users. Instead, browse one of our mirrors and download the editor binary for your platform and the export templates archive:
+
+- Classical version: [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0/beta1)] [[HTTP mirror](http://op.godotengine.org:81/downloads/3.0/beta1)]
+- Mono version (requires the Mono SDK): [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0/beta1/mono)] [[HTTP mirror](http://op.godotengine.org:81/downloads/3.0/beta1/mono)]
+
+Note that Godot can now download and install the export templates automatically, so you don't need to download them manually. Check the export templates manager in the Editor menu.
+Export templates for the Mono flavour will not be provided for beta 1, as exporting Mono games is not fully implemented yet.
+
+Also clone the [godot-demo-projects](https://github.com/godotengine/godot-demo-projects/) repository to have demos to play with. Some of them might still need adjustments due to recent changes in the *master* branch, feel free to report any issue.
+
+## Bug reports
+
+There are still many open bug reports for the 3.0 milestone, which means that we are aware of many bugs already. We still release this snapshot to get more testing coverage while we work on fixing the known issues.
+
+As a tester, you are encouraged to open bug reports if you experience issues with beta 1. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+Have fun with this beta 1 and stay tuned for a potential beta 2, or directly a release candidate (RC) if we're happy with the test results.
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-0-beta-2.md b/collections/_article/dev-snapshot-godot-3-0-beta-2.md
new file mode 100644
index 0000000000..0a131faf6b
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-0-beta-2.md
@@ -0,0 +1,41 @@
+---
+title: "Dev snapshot: Godot 3.0 beta 2"
+excerpt: "After three weeks of testing of the 3.0 beta 1 snapshot, we're now ready for a new beta release fixing many of the reported issues and then some! It also includes a surprise lightmapper from Juan, and many usability enhancements provided by our numerous contributors. The final 3.0 release is now very close, so stay tuned for more news and the release candidate!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5a3/c39/918/5a3c399188781933894734.jpg
+date: 2017-12-21 22:48:33
+---
+
+**Edit 22.12.2017:** Windows binaries (both the editor binaries and the export templates) have been replaced by versions without OpenMP support, the latter forcing the installation of the MS Visual C++ Redistributable 2017 to get the OpenMP DLL. If you downloaded export templates before 22.12.2017 at 23:59 UTC, we advise to download them anew to get the proper portable Windows binaries.
+
+-----
+
+Three weeks after our [3.0 beta 1 development snapshot](/article/dev-snapshot-godot-3-0-beta-1), it's time for another beta release to bring us closer to the final 3.0 version.
+
+We initially hoped for a stable release around Christmas, but given that we're publishing 3.0 *beta 2* today, you can probably assume that 3.0 *stable* will be an early 2018 release instead. And that's just as well, since a lot of work continues to be done every day to fix issues in the master branch and improve usability, and Juan even took the time to sneak in a couple past-deadline but very requested features, like a [lightmapper](/article/introducing-new-last-minute-lightmapper) for static light baking (to provide an alternative to the real-time but resource-heavy GIProbe).
+
+This release fixes many of the issues that you reported while testing *beta 1*, so it should be a lot more stable. There are definitely still bugs here and there, so please report anything you might stumble upon.
+
+## Disclaimer
+
+**IMPORTANT: This is a *[beta](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta)* build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.0 would be on its release.**
+
+There will still be many fixes and enhancements done before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them. Notably, the 3D performance varies greatly depending on your graphics hardware, and will be improved and streamlined progressively as Godot 3 stabilizes.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusing new users. Instead, browse one of our mirrors and download the editor binary for your platform and the export templates archive:
+
+- Classical version: [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0/beta2)] [[HTTP mirror](http://op.godotengine.org:81/downloads/3.0/beta2)]
+- Mono version (requires the Mono SDK): [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0/beta2/mono)] [[HTTP mirror](http://op.godotengine.org:81/downloads/3.0/beta2/mono)]
+
+Note that Godot can now download and install the export templates automatically, so you don't need to download them manually. If you installed export templates for the previous 3.0 *beta 1* release, make sure to uninstall them/replace them by the *beta 2* ones, as they are not compatible. Export templates for the Mono flavour will not be provided for beta 2, as exporting Mono games is not fully implemented yet.
+
+Also clone the [godot-demo-projects](https://github.com/godotengine/godot-demo-projects/) repository to have demos to play with. Some of them might still need adjustments due to recent changes in the *master* branch, feel free to report any issue.
+
+## Bug reports
+
+As a tester, you are encouraged to open bug reports if you experience issues with beta 2. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+Have fun with this beta 2 and stay tuned for a release candidate (RC) in the first weeks of January!
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-0-rc-1.md b/collections/_article/dev-snapshot-godot-3-0-rc-1.md
new file mode 100644
index 0000000000..10afed8418
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-0-rc-1.md
@@ -0,0 +1,39 @@
+---
+title: "Dev snapshot: Godot 3.0 RC 1"
+excerpt: "Things have sped up a lot in the Godot development team since the beginning of 2018, to be able to finalize 3.0 and release it in January. The release freeze has been announced, meaning that enhancements and non-critical bug fixes are no longer being merged, to ensure that the master branch can stabilize and eventually be ready for the final release. This means of course that many known issues won't be fixed for 3.0, but will have to wait for 3.1 or for the maintenance 3.0.x releases which should start arriving in February."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5a5/b94/69d/5a5b9469d7c11018259088.png
+date: 2018-01-14 17:36:39
+---
+
+So Godot 3.0 won't be a 2017 release as we had hoped during the last semester, but we are pretty confident that you will get it in January 2018 to properly kickstart this new year!
+
+We fixed hundreds of bugs and declared the [release freeze](https://github.com/godotengine/godot/issues/15321), which means that many non critical bugs and enhancements have been moved to the 3.1 milestone, allowing us to tend faster towards the final 3.0 release by focusing on the big issues.
+
+With this first *Release Candidate* (RC), we are now getting very close to the final release. We plan to have at least a second RC in the middle of the coming week, fixing some already-known regressions and probably some more important bugs [that you will have reported](https://github.com/godotengine/godot/issues) until then.
+
+Note that no release can be bug-free, even if we label it "stable", so don't be offended if the bugs you report are assigned to the 3.1 milestone - at this stage we focus only on the most critical stuff, but we still welcome your reports to know all that is not working perfectly. Many non-critical bug fixes and enhancements will be included in 3.0.x maintenance releases, the first one likely coming in February.
+
+## Downloads
+
+Enough talk, here are your download links:
+
+- Classical version: [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0/rc1)] [[HTTP mirror](http://op.godotengine.org:81/downloads/3.0/rc1)]
+- Mono version (requires the Mono SDK): [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0/rc1/mono)] [[HTTP mirror](http://op.godotengine.org:81/downloads/3.0/rc1/mono)]
+
+Note that Godot can now download and install the export templates automatically, so you don't need to download them manually.
+
+Export templates for the Mono flavour are still not available yet due to time constraints. It might be that they will only be made available in the first 3.0.1 maintenance release (so you can start working on C# projects in 3.0 nevertheless, but exports will have to wait a few weeks). Even though Godot 3.0 is reaching the gold state, it's important to remember that C# support is a young feature and still to be considered at the *beta* stage. It will improve *a lot* in coming months.
+
+Another caveat for users of 3.0 beta 2 with Mono: you might need to delete the `mono` folder of your Godot user folder, as well as the `.mono` folder in your project, to remove now-incompatible assemblies.
+
+Also clone the [godot-demo-projects](https://github.com/godotengine/godot-demo-projects/) repository to have demos to play with. Some of them might still need adjustments due to recent changes in the *master* branch, feel free to report any issue in that repository's tracker.
+
+## Bug reports
+
+As a tester, you are encouraged to open bug reports if you experience issues with RC 1. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already. In particular, you can check the list of issues [reported since last Thursday](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aissue+milestone%3A3.0+-label%3Aarchived+created%3A%3E%3D2018-01-11+), many of which might affect RC 1 but be fixed already or known in the master branch.
+
+If you've been following development closely, you might notice issues with physics/collision shapes in this RC 1 (recent regression, will be fixed soon in the master branch) as well as script error if you have variables shadowing newly exposed member variables (e.g. you can now accept `Node.name` directly, so if you declared your own `name` variables in scripts, you might need to rename those to avoid the conflict).
+
+Have fun with this RC 1 and stay tuned for a new RC in the coming week as well as the stable release Very Soon™.
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-0-rc-2.md b/collections/_article/dev-snapshot-godot-3-0-rc-2.md
new file mode 100644
index 0000000000..4d76627a3e
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-0-rc-2.md
@@ -0,0 +1,48 @@
+---
+title: "Dev snapshot: Godot 3.0 RC 2"
+excerpt: "The long-awaited release is finally here, Godot 3.0... RC 2 ;)
+The actual stable release is still planned for January 2018, but we have various recent bug fixes that need broader testing before we can label the current master branch \"stable\" and move on towards the next milestone. You can already expect a third (and hopefully last) RC early next week, and the stable release shortly after."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5a6/3ae/e17/5a63aee174d80543898745.png
+date: 2018-01-20 21:07:35
+---
+
+The final release of Godot 3.0 is getting closer and closer! We had a first *Release Candidate* (RC) [last week](/article/dev-snapshot-godot-3-0-rc-1), quite stable already but with some remaining blockers and late regressions.
+
+After a week of bugfixing with a tight control of what gets merged and what must wait for the 3.1 development cycle, we should now have a pretty good RC 2.
+
+This RC 2 build corresponds to commit [fe2932a9](https://github.com/godotengine/godot/commit/fe2932a969cdc0483c31c12c1f8bfd5868401da8) from almost two days ago already, and some more fixes have been made since then. We'll have a RC 3 in a few days to get those tested, and if all goes fine, this RC 3 should become our stable release.
+
+Note that no release can be bug-free, even if we label it "stable", so don't be offended if the bugs you report are assigned to the 3.1 milestone - at this stage we focus only on the most critical stuff, but we still welcome your reports to know all that is not working perfectly. Many non-critical bug fixes and enhancements will be included in 3.0.x maintenance releases, the first one likely coming in February.
+
+There's also a bad news for C# users: the export pipeline hasn't been finalized yet for Mono projects, and we have decided that we won't wait for it to release 3.0. That means that even though you can use 3.0 to develop games in C#, you won't be able to export them just yet. This support will be added quickly after 3.0 is released, and should be available in February with 3.0.1, so the wait shouldn't be long. Until then, you can start your projects and debug the likely numerous issues of our first public release with C# support.
+
+Keep in mind that C# support is a *work in progress*, and your critical feedback will help greatly to shape the C# support in later releases. Even though the rest of Godot 3.0 is quite stable, users of the C# version should be aware of potential feature-specific instabilities.
+
+## Downloads
+
+As always, you will find the binaries for your platform on our mirrors:
+
+- Classical version: [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0/rc2)] [[HTTP mirror](http://op.godotengine.org:81/downloads/3.0/rc2)]
+- Mono version (requires the Mono SDK): [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0/rc2/mono)] [[HTTP mirror](http://op.godotengine.org:81/downloads/3.0/rc2/mono)]
+
+*Edit 20/01/2018 @ 23:15 CET:* The current Mono binaries display a non-blocking error about API hash mismatches. You can ignore it, the binaries should work fine regardless. Updated binaries with the proper API hashes will be available in the coming hours.
+
+*Edit 21/01/2018 @ 00:10 CET:* Mono binaries for Linux and Windows are now fixed. *00:40 CET:* macOS binary is fixed too.
+
+Note that Godot can now download and install the export templates automatically, so you don't need to download them manually.
+
+As mentioned above, there are no export templates for Mono and likely won't be any for 3.0 stable either, but they should be available in February with 3.0.1.
+
+Also clone the [godot-demo-projects](https://github.com/godotengine/godot-demo-projects/) repository to have demos to play with. Some of them might still need adjustments due to recent changes in the *master* branch, feel free to report any issue in that repository's tracker.
+
+## Bug reports
+
+As a tester, you are encouraged to open bug reports if you experience issues with RC 2. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+*Edit 21/01/2018 @ 00:20 CET:* Known major issues in RC 2:
+
+- Resource preloading does not work after export due to converted paths ([#15902](https://github.com/godotengine/godot/issues/15902))
+
+Have fun with this RC 2 and stay tuned for the final release (still planned for January)!
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-0-rc-3.md b/collections/_article/dev-snapshot-godot-3-0-rc-3.md
new file mode 100644
index 0000000000..73fb885791
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-0-rc-3.md
@@ -0,0 +1,41 @@
+---
+title: "Dev snapshot: Godot 3.0 RC 3"
+excerpt: "Yet another iteration in the last week before 3.0 stable - this third release candidate should fix the main issues found in 3.0 RC 2, and bring us very close to what the stable release should be. Please test it extensively, it's (probably) the last call before takeoff!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5a6/856/519/5a685651987ce263514865.png
+date: 2018-01-24 09:48:06
+---
+
+Here's another *Release Candidate* (RC) build on the way to 3.0 stable, fixing most of the remaining blocking bugs from [RC 2](/article/dev-snapshot-godot-3-0-rc-2).
+
+This RC 3 build corresponds to commit [d50c0ef](https://github.com/godotengine/godot/commit/d50c0efd2c352b1e03fea1425e01e120dab8f2bb) for the classical build, and commit [59e83af](https://github.com/godotengine/godot/commit/59e83af201af5a93c7a13750d781c050c2275c07) for the Mono build. The classical build is thus already a couple days old, due to the system we currently use to produce binaries being particularly slow lately (this will be worked on after 3.0 to improve the release workflow).
+
+Note that no release can be bug-free, even if we label it "stable", so don't be offended if the bugs you report are assigned to the 3.1 milestone - at this stage we focus only on the most critical stuff, but we still welcome your reports to know all that is not working perfectly. Many non-critical bug fixes and enhancements will be included in 3.0.x maintenance releases, the first one likely coming in February.
+
+As mentioned in the [RC 2 announcement](/article/dev-snapshot-godot-3-0-rc-3), the export pipeline hasn't been finalized yet for Mono projects, and has therefore been postponed to 3.0.1. You can use 3.0 for Mono projects nevertheless, but you won't be able to export them as standalone release binaries just yet.
+
+Keep in mind that C# support is a *work in progress*, and your critical feedback will help greatly to shape the C# support in later releases. Even though the rest of Godot 3.0 is quite stable, users of the C# version should be aware of potential feature-specific instabilities.
+
+## Downloads
+
+As always, you will find the binaries for your platform on our mirrors:
+
+- Classical version: [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0/rc3)] [[HTTP mirror](http://op.godotengine.org:81/downloads/3.0/rc3)]
+- Mono version (requires the Mono SDK in version 5.x, ideally 5.4.1.7): [[HTTPS mirror](https://downloads.tuxfamily.org/godotengine/3.0/rc3/mono)] [[HTTP mirror](http://op.godotengine.org:81/downloads/3.0/rc3/mono)]
+
+**Note:** Due to a huge backlog of macOS builds on the buildsystem we use for release binaries, two macOS binaries are missing at the time of this announcement: 1) The Mono-flavoured macOS editor binary. 2) The macOS release export template (the one in the templates zip is for now a copy of the debug export template). This post will be updated once the missing macOS binaries are available.
+
+*Edit 25.01.2018 8:00 UTC:* The Mono-flavoured macOS editor binary is now available.
+
+Godot can now download and install the export templates automatically, so you don't need to download them manually.
+
+As mentioned above, there are no export templates for Mono and likely won't be any for 3.0 stable either, but they should be available in February with 3.0.1.
+
+Also clone the [godot-demo-projects](https://github.com/godotengine/godot-demo-projects/) repository to have demos to play with. Some of them might still need adjustments due to recent changes in the *master* branch, feel free to report any issue in that repository's tracker.
+
+## Bug reports
+
+As a tester, you are encouraged to open bug reports if you experience issues with RC 3. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+Have fun with this RC 3 and stay tuned for the final release (still planned for January)!
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-alpha-1.md b/collections/_article/dev-snapshot-godot-3-1-alpha-1.md
new file mode 100644
index 0000000000..b2fb000b0e
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-alpha-1.md
@@ -0,0 +1,53 @@
+---
+title: "Dev snapshot: Godot 3.1 alpha 1"
+excerpt: "Godot 3.1 is shaping up nicely, and the master branch is finally ready for wider testing from the community. With this snapshot, we're entering the alpha stage and focus will now be solely on bug fixing and stabilizing the development version, up until we release Godot 3.1-stable."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5b8/84a/92b/5b884a92b2b2a338707291.jpg
+date: 2018-08-31 07:16:09
+---
+
+Long awaited, Godot **3.1 alpha 1** is our first milestone towards the stable release of Godot 3.1, packed with 7 months of development since Godot 3.0 (over 3,500 commits!).
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog).
+
+The *alpha* stage corresponds for us to a *feature freeze*, as [announced on GitHub](https://github.com/godotengine/godot/issues/21490) a few days ago, which means that we will no longer consider pull requests with new features for merge in the *master* branch, and that until Godot 3.1 is released. This way, we can focus on what we already have, finish and polish the major features which are still in progress (e.g. OpenGL ES 2.0 support), and fix many of the old and new bugs reported by the community.
+
+Alpha snapshots will be released regularly during this phase, to continuously test the *master* branch and make sure that it keeps getting more stable, reliable and ready for production.
+
+## Disclaimer
+
+**IMPORTANT: This is an [*alpha*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There is still a long way of bug fixing and usability improvement until we can release the stable version. This release is exclusively for testers who are already familiar with Godot and can report the issues they experience [on GitHub](https://github.com/godotengine/godot/issues/).
+
+There is also no guarantee that projects started with the alpha 1 build will still work in alpha 2 or later builds, as we reserve the right to do necessary breaking adjustments up to the *beta* stage (albeit compatibility breaking changes at this stage should be very minimal, if any).
+
+**Note:** New Godot users should *not* use this build to start their learning. [Godot 3.0.x](/download) is our current stable branch and still received frequent updates.
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor [Hugo Locurcio](https://github.com/Calinou) is working on.
+
+As mentioned previously, [our past devblogs](/devblog) should also give you an idea of the main highlights of the upcoming release.
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary that matches your platform:
+
+- [Classical](https://downloads.tuxfamily.org/godotengine/3.1/alpha1)
+- [Mono (*alpha* C# support)](https://downloads.tuxfamily.org/godotengine/3.1/alpha1/mono) - you need Mono SDK **5.12.0** for this alpha
+
+**IMPORTANT:** Make backups of your Godot 3.0 projects before opening them in any 3.1 development build. Once a project has been opened in 3.1, it's `project.godot` file will be updated to a new format for input mappings which is not compatible with Godot 3.0 - the latter will thus refuse to open a 3.1 project. Moreover, using new 3.1 features in your project means that you can't go back to 3.0, unless you do the necessary work to remove the use of those features. So either test 3.1-alpha1 in a copy of your 3.0 projects, or start new projects with it.
+
+Due to some buildsystem problems alpha1 does not have working export templates for the UWP ARM target. Furthermore the upnp and websockets features are missing from UWP export templates entirely.
+
+## Bug reports
+
+There are still hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues may not be critical for the 3.1 release and may end up be retargeted to a later release to allow releasing Godot 3.1 within a couple of months.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 alpha. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+*The illustration picture is a 3D scene designed by [John Watson](https://twitter.com/yafd). Source: [Twitter post by @yafd](https://twitter.com/yafd/status/1031706288642641921).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-alpha-2.md b/collections/_article/dev-snapshot-godot-3-1-alpha-2.md
new file mode 100644
index 0000000000..027a61bdea
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-alpha-2.md
@@ -0,0 +1,57 @@
+---
+title: "Dev snapshot: Godot 3.1 alpha 2"
+excerpt: "A new development snapshot straight out of Godot's master branch is released, giving a preview of what Godot 3.1 will be. It's meant for testers to experiment with and report all the issues that they find with it, to ensure that Godot 3.1 will be a stable and pleasant release."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5bd/cb6/df6/5bdcb6df6ba77895463474.jpg
+date: 2018-11-02 21:33:49
+---
+
+Two months after [our previous alpha](/article/dev-snapshot-godot-3-1-alpha-1), we are pleased to release Godot **3.1 alpha 2**, a new development snapshot of the *master* branch, moving slowly but steadily towards the *beta* status.
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been 9 months since the 3.0 release and close to 5,000 commits, so expect a lot of nice things in the final 3.1 version!
+
+The *alpha* stage corresponds for us to a *feature freeze* (see [announcement on GitHub](https://github.com/godotengine/godot/issues/21490)), which means that we will no longer consider pull requests with new features for merge in the *master* branch, and that until Godot 3.1 is released. This way, we can focus on what we already have, finish and polish the major features which are still in progress (e.g. OpenGL ES 2.0 support), and fix many of the old and new bugs reported by the community.
+
+Alpha snapshots will be released regularly during this phase, to continuously test the *master* branch and make sure that it keeps getting more stable, reliable and ready for production.
+
+## Disclaimer
+
+**IMPORTANT: This is an [*alpha*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There is still a long way of bug fixing and usability improvement until we can release the stable version. This release is exclusively for testers who are already familiar with Godot and can report the issues they experience [on GitHub](https://github.com/godotengine/godot/issues/).
+
+There is also no guarantee that projects started with the alpha 2 build will still work in alpha 3 or later builds, as we reserve the right to do necessary breaking adjustments up to the *beta* stage (albeit compatibility breaking changes at this stage should be very minimal, if any).
+
+**Note:** New Godot users should *not* use this build to start their learning. [Godot 3.0.x](/download) is our current stable branch and still receives frequent updates.
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor [Hugo Locurcio](https://github.com/Calinou) is working on.
+
+As mentioned previously, [our past devblogs](/devblog) should also give you an idea of the main highlights of the upcoming release.
+
+This alpha 2 comes with an impressive amount of bug fixes compared to the previous alpha 1. The OpenGL ES 2.0 backend has also seen a lot of work to push it towards feature-completion -- it's not done yet, but it's getting close.
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary that matches your platform:
+
+- [Classical](https://downloads.tuxfamily.org/godotengine/3.1/alpha2)
+- [Mono (*alpha* C# support)](https://downloads.tuxfamily.org/godotengine/3.1/alpha2/mono) - you need Mono SDK **5.12.0** for this alpha (5.14 or newer won't work)
+
+**IMPORTANT:** Make backups of your Godot 3.0 projects before opening them in any 3.1 development build. Once a project has been opened in 3.1, its `project.godot` file will be updated to a new format for input mappings which is not compatible with Godot 3.0 - the latter will thus refuse to open a 3.1 project. Moreover, using new 3.1 features in your project means that you can't go back to 3.0, unless you do the necessary work to remove the use of those features. So either test 3.1-alpha2 in a copy of your 3.0 projects, or start new projects with it.
+
+**Note:** This release is still called "3.1.alpha" internally, same as alpha 1 and daily builds from the master branch. This means that the export templates share the same installation folder, yet you have to make sure to replace any "3.1.alpha" templates you currently have installed with the ones from the alpha 2 distribution.
+
+Due to some buildsystem problems alpha2 does not have working export templates for the UWP ARM target. Furthermore the upnp and websockets features are missing from UWP export templates entirely.
+
+## Bug reports
+
+There are still hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues may not be critical for the 3.1 release and may end up be retargeted to a later release to allow releasing Godot 3.1 in the near future.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 alpha. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+*The illustration picture is from [Krzysztof Jankowski](https://twitter.com/w84death)'s FOSS *[Mystic Treasure Hunt](https://github.com/w84death/mystic-treasure-hunt)* 3D game. You can read more about his journey as a 2D artist into 3D shaderland [on his blog](https://bits.krzysztofjankowski.com/how-i-grow-with-grass-shader/).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-alpha-3.md b/collections/_article/dev-snapshot-godot-3-1-alpha-3.md
new file mode 100644
index 0000000000..f15d90cc9e
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-alpha-3.md
@@ -0,0 +1,55 @@
+---
+title: "Dev snapshot: Godot 3.1 alpha 3"
+excerpt: "A new development snapshot straight out of Godot's master branch is released, giving a preview of what Godot 3.1 will be. It's meant for testers to experiment with and report all the issues that they find with it, to ensure that Godot 3.1 will be a stable and pleasant release."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c0/d20/8fb/5c0d208fb9e4c913419803.png
+date: 2018-12-12 11:38:58
+---
+
+Already more than a month since [our previous alpha](/article/dev-snapshot-godot-3-1-alpha-2), yet we haven't been idle in the meantime. Hundreds of fixes and enhancements have been done in the *master* branch, which we are pleased to bring to you as Godot **3.1 alpha 3**. This new development snapshot brings us one step closer to the *beta* stage, which we should reach before Christmas.
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been over 10 months since the 3.0 release and over 5,000 commits, so expect a lot of nice things in the final 3.1 version!
+
+The *alpha* stage corresponds for us to a *feature freeze* (see [announcement on GitHub](https://github.com/godotengine/godot/issues/21490)), which means that we will no longer consider pull requests with new features for merge in the *master* branch, and that until Godot 3.1 is released. This way, we can focus on what we already have, finish and polish the major features which are still in progress (e.g. OpenGL ES 2.0 support), and fix many of the old and new bugs reported by the community.
+
+Development snapshots will continue to be released regularly to continuously test the *master* branch and make sure that it keeps getting more stable, reliable and ready for production.
+
+## Disclaimer
+
+**IMPORTANT: This is an [*alpha*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There is still a long way of bug fixing and usability improvement until we can release the stable version. This release is exclusively for testers who are already familiar with Godot and can report the issues they experience [on GitHub](https://github.com/godotengine/godot/issues/).
+
+There is also no guarantee that projects started with the alpha 3 build will still work in later builds, as we reserve the right to do necessary breaking adjustments up to the *beta* stage (albeit compatibility breaking changes at this stage should be very minimal, if any).
+
+**Note:** New Godot users should not use this build to start their learning. [Godot 3.0.x](/download) is our current stable branch and still receives frequent updates.
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor [Hugo Locurcio](https://github.com/Calinou) is working on.
+
+As mentioned previously, [our past devblogs](/devblog) should also give you an idea of the main highlights of the upcoming release.
+
+This alpha 3 comes with an impressive amount of bug fixes all around the engine, with Juan spending most of the month of November focusing on that. See this [Patreon post](https://www.patreon.com/posts/23181942) for details on what happened since alpha 2.
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary and export templates that matches your platform:
+
+- [Classical](https://downloads.tuxfamily.org/godotengine/3.1/alpha3)
+- [Mono (*alpha* C# support)](https://downloads.tuxfamily.org/godotengine/3.1/alpha3/mono) - you need Mono SDK **5.12.0** for this alpha (5.14 or newer won't work)
+
+**IMPORTANT:** Make backups of your Godot 3.0 projects before opening them in any 3.1 development build. Once a project has been opened in 3.1, its `project.godot` file will be updated to a new format for input mappings which is not compatible with Godot 3.0 - the latter will thus refuse to open a 3.1 project. Moreover, using new 3.1 features in your project means that you can't go back to 3.0, unless you do the necessary work to remove the use of those features. So either test 3.1-alpha3 on a copy of your 3.0 projects, or start new projects with it.
+
+**Note:** This release is still called "3.1.alpha" internally, same as previous alphas and daily builds from the master branch. This means that the export templates share the same installation folder, yet you have to make sure to replace any "3.1.alpha" templates you currently have installed with the ones from the alpha 3 distribution.
+
+## Bug reports
+
+There are still hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues may not be critical for the 3.1 release and may end up be retargeted to a later release to allow releasing Godot 3.1 in the near future.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 alpha. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+*The illustration picture is from [Samuele Zolfanelli](https://twitter.com/Samdzeq)'s *[Gumgem](https://dazel.itch.io/gumgem)*, a great-looking 2D game developed for the A Game By Its Cover 2018 jam. A big update is upcoming, be sure to follow their work!*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-alpha-4.md b/collections/_article/dev-snapshot-godot-3-1-alpha-4.md
new file mode 100644
index 0000000000..b853814ea5
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-alpha-4.md
@@ -0,0 +1,55 @@
+---
+title: "Dev snapshot: Godot 3.1 alpha 4"
+excerpt: "Godot 3.1 alpha 4 is released, with 97 PRs merged since the previous alpha last week. It should be the last alpha release, as we're now moving into the beta stage, where only critical bug fixes will be considered for merging until we are happy with the overall stability of the master branch."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c1/b47/a5d/5c1b47a5d4436949253271.jpg
+date: 2018-12-22 00:00:00
+---
+
+We released Godot [3.1 alpha 3](/article/dev-snapshot-godot-3-1-alpha-3) last week, and it's now time for another alpha build, **3.1 alpha 4**. We plan to have a last alpha build within one week, and then we should be ready to move into the *beta* stage, where we only merge critical bug fixes until the branch is stable enough for the final release.
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been almost 11 months since the 3.0 release and over 5,500 commits, so expect a lot of nice things in the final 3.1 version!
+
+The *alpha* stage corresponds for us to a *feature freeze* (see [announcement on GitHub](https://github.com/godotengine/godot/issues/21490)), which means that we will no longer consider pull requests with new features for merge in the *master* branch, and that until Godot 3.1 is released. This way, we can focus on what we already have, finish and polish the major features which are still in progress (e.g. OpenGL ES 2.0 support), and fix many of the old and new bugs reported by the community.
+
+Development snapshots will continue to be released regularly to continuously test the *master* branch and make sure that it keeps getting more stable, reliable and ready for production.
+
+## Disclaimer
+
+**IMPORTANT: This is an [*alpha*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There is still a long way of bug fixing and usability improvement until we can release the stable version. This release is exclusively for testers who are already familiar with Godot and can report the issues they experience [on GitHub](https://github.com/godotengine/godot/issues/).
+
+**Note:** New Godot users should not use this build to start their learning. [Godot 3.0.x](/download) is our current stable branch and still receives frequent updates.
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor [Hugo Locurcio](https://github.com/Calinou) is working on.
+
+As mentioned previously, [our past devblogs](/devblog) should also give you an idea of the main highlights of the upcoming release.
+
+This alpha 4 comes after many of the pending PRs in the 3.1 milestone have been reviewed and merged over the last 10 days. [This progress report](https://www.patreon.com/posts/23473702) outlines the changes that happened in the *master* branch since the last two weeks, which match more or less changes since the alpha 3 build.
+
+We notably merged various [platform-related mouse input changes](https://github.com/godotengine/godot/issues/24363), which require extensive testing to ensure that no regressions happen in 3.1.
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary and export templates that matches your platform:
+
+- [Classical](https://downloads.tuxfamily.org/godotengine/3.1/alpha4)
+- [Mono (*alpha* C# support)](https://downloads.tuxfamily.org/godotengine/3.1/alpha4/mono) - **IMPORTANT:** You need to have Nuget and MSbuild installed. However, alpha 4 no longer relies on a specific Mono SDK version.
+
+**IMPORTANT:** Make backups of your Godot 3.0 projects before opening them in any 3.1 development build. Once a project has been opened in 3.1, its `project.godot` file will be updated to a new format for input mappings which is not compatible with Godot 3.0 - the latter will thus refuse to open a 3.1 project. Moreover, using new 3.1 features in your project means that you can't go back to 3.0, unless you do the necessary work to remove the use of those features. So either test 3.1-alpha4 on a copy of your 3.0 projects, or start new projects with it.
+
+**Note:** This release is still called "3.1.alpha" internally, same as previous alphas and daily builds from the master branch. This means that the export templates share the same installation folder, yet you have to make sure to replace any "3.1.alpha" templates you currently have installed with the ones from the alpha 4 distribution.
+
+## Bug reports
+
+There are still hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues may not be critical for the 3.1 release and may end up be retargeted to a later release to allow releasing Godot 3.1 in the near future.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 alpha. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+*The illustration picture is a scene created with [Marc Gilleron](http://twitter.com/ZylannMP3)'s *HeightMap terrain plugin*, available on the [Asset Library](https://godotengine.org/asset-library/asset/231) and on [GitHub](https://github.com/Zylann/godot_heightmap_plugin).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-alpha-5.md b/collections/_article/dev-snapshot-godot-3-1-alpha-5.md
new file mode 100644
index 0000000000..07cdf11180
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-alpha-5.md
@@ -0,0 +1,51 @@
+---
+title: "Dev snapshot: Godot 3.1 alpha 5"
+excerpt: "Godot 3.1 alpha 5 is released, with 31 PRs merged since the previous alpha last week. This is the last alpha, we're now moving into the beta stage, where only critical bug fixes will be considered for merging until we are happy with the overall stability of the master branch."
+categories: ["pre-release"]
+author: Hein-Pieter van Braam
+image: /storage/app/uploads/public/5c2/cbd/8e3/5c2cbd8e3bcdd214188243.png
+date: 2019-01-02 00:00:00
+---
+
+We released Godot [3.1 alpha 4](/article/dev-snapshot-godot-3-1-alpha-4) 10 days ago, and it's now time for another alpha build, **3.1 alpha 5**. This is the last alpha build before the *beta* stage, where we only merge critical bug fixes until the branch is stable enough for the final release. This last alpha mainly focuses on the build and release system. More on that in a later blogpost.
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been almost 11 months since the 3.0 release and over 5,500 commits, so expect a lot of nice things in the final 3.1 version!
+
+The *alpha* stage corresponds for us to a *feature freeze* (see [announcement on GitHub](https://github.com/godotengine/godot/issues/21490)), which means that we will no longer consider pull requests with new features for merge in the *master* branch, and that until Godot 3.1 is released. This way, we can focus on what we already have, finish and polish the major features which are still in progress (e.g. OpenGL ES 2.0 support), and fix many of the old and new bugs reported by the community.
+
+Development snapshots will continue to be released regularly to continuously test the *master* branch and make sure that it keeps getting more stable, reliable and ready for production.
+
+## Disclaimer
+
+**IMPORTANT: This is an [*alpha*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There is still a long way of bug fixing and usability improvement until we can release the stable version. This release is exclusively for testers who are already familiar with Godot and can report the issues they experience [on GitHub](https://github.com/godotengine/godot/issues/).
+
+**Note:** New Godot users should not use this build to start their learning. [Godot 3.0.x](/download) is our current stable branch and still receives frequent updates.
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor [Hugo Locurcio](https://github.com/Calinou) is working on.
+
+As mentioned previously, [our past devblogs](/devblog) should also give you an idea of the main highlights of the upcoming release.
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary and export templates that matches your platform:
+
+- [Classical](https://downloads.tuxfamily.org/godotengine/3.1/alpha5)
+- [Mono (*alpha* C# support)](https://downloads.tuxfamily.org/godotengine/3.1/alpha5/mono) - **IMPORTANT:** You need to have Nuget and MSbuild installed. However, alpha 5 no longer relies on a specific Mono SDK version.
+
+**IMPORTANT:** Make backups of your Godot 3.0 projects before opening them in any 3.1 development build. Once a project has been opened in 3.1, its `project.godot` file will be updated to a new format for input mappings which is not compatible with Godot 3.0 - the latter will thus refuse to open a 3.1 project. Moreover, using new 3.1 features in your project means that you can't go back to 3.0, unless you do the necessary work to remove the use of those features. So either test 3.1-alpha4 on a copy of your 3.0 projects, or start new projects with it.
+
+**Note:** This release is still called "3.1.alpha" internally, same as previous alphas and daily builds from the master branch. This means that the export templates share the same installation folder, yet you have to make sure to replace any "3.1.alpha" templates you currently have installed with the ones from the alpha 5 distribution.
+
+## Bug reports
+
+There are still hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues may not be critical for the 3.1 release and may end up be retargeted to a later release to allow releasing Godot 3.1 in the near future.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 alpha. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+*The illustration picture is a screenshot from [Bauxitedev](https://twitter.com/bauxitedev)'s game *Meteorite*, available on [itch.io](https://bauxite.itch.io/meteorite), Godot's [Asset Library](https://godotengine.org/asset-library/asset/257) and [GitHub](https://github.com/Bauxitedev/meteorite).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-beta-1.md b/collections/_article/dev-snapshot-godot-3-1-beta-1.md
new file mode 100644
index 0000000000..e5f9f718f3
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-beta-1.md
@@ -0,0 +1,49 @@
+---
+title: "Dev snapshot: Godot 3.1 beta 1"
+excerpt: "We're now entering the beta phase for Godot 3.1, and the release freeze, which means that only major bug fixes will now be merged in the master branch until 3.1 is released. This first development snapshot, 3.1 beta 1, brings a week's worth of bug fixes and enhancements merged in the master branch since the alpha 5 release."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c3/3a6/698/5c33a66988e9b192770083.jpg
+date: 2019-01-08 00:00:00
+---
+
+After an alpha phase that took longer than anticipated, we're now ready to enter the *beta* phase for Godot 3.1, which means that the feature work is finished for this version. From now on, we are in *release freeze*, which means that new features will no longer be merged, and we will focus solely on fixing release-critical bugs.
+
+This should allow to finish polishing this release quickly and hopefully be ready to publish it by the end of this month. See [this GitHub issue](https://github.com/godotengine/godot/issues/24822) for details.
+
+See the changes between [3.1 alpha 5 and 3.1 beta 1](https://github.com/godotengine/godot/compare/b60939be88d192b63798aec6e9b031d570048b8b...f7de2c0cb3793bd289b8465bcc9af54157a54e91). This beta is built from commit [b60939b](https://github.com/godotengine/godot/commit/b60939be88d192b63798aec6e9b031d570048b8b).
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been almost a year since the 3.0 release and close to 6,000 commits, so expect a lot of nice things in the final 3.1 version!
+
+## Disclaimer
+
+**IMPORTANT: This is a [*beta*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There will still be many fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor [Hugo Locurcio](https://github.com/Calinou) is maintaining.
+
+As mentioned previously, [our past devblogs](/devblog) should also give you an idea of the main highlights of the upcoming release.
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary and export templates that matches your platform and Godot flavour:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.1/beta1) (GDScript, GDNative, VisualScript)
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.1/beta1/mono) (C# support + all the above). You need to have Nuget and MSbuild installed to use the Mono build. However, this build no longer mandates a specific Mono SDK version.
+
+**IMPORTANT:** Make backups of your Godot 3.0 projects before opening them in any 3.1 development build. Once a project has been opened in 3.1, its `project.godot` file will be updated to a new format for input mappings which is not compatible with Godot 3.0 - the latter will thus refuse to open a 3.1 project. Moreover, using new 3.1 features in your project means that you can't go back to 3.0, unless you do the necessary work to remove the use of those features. So either test this release on a copy of your 3.0 projects, or start new projects with it.
+
+## Bug reports
+
+There are still hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.1 release and will end up retargeted to a later milestone.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released.
+
+*The illustration picture is a screenshot from [Little Red Dog Games](https://www.littlereddoggames.com)'s upcoming 1-2 player strategy game *[Precipice](https://www.littlereddoggames.com/precipice)*, developed with Godot 3.1 alpha. [Early gameplay video](https://www.youtube.com/watch?v=f3cBQouCGbs), [Steam](https://store.steampowered.com/app/951670/Precipice/), [Twitter](http://twitter.com/lrdgames).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-beta-10.md b/collections/_article/dev-snapshot-godot-3-1-beta-10.md
new file mode 100644
index 0000000000..12b86af352
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-beta-10.md
@@ -0,0 +1,50 @@
+---
+title: "Dev snapshot: Godot 3.1 beta 10"
+excerpt: "Another beta build towards Godot 3.1. We're getting very close to being ready to call it a Release Candidate, so barring any major regression in this beta, we should be able to publish a RC1 build in a few days."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c7/a6b/251/5c7a6b251a5c0432026897.jpg
+date: 2019-03-02 00:00:00
+---
+
+As bugfixing is going at a steady pace towards Godot 3.1 stable, we plan to release beta builds frequently to have broad testing on the latest fixes and spot any regression. So we're now publishing Godot 3.1 **beta 10** with 70 commits made since beta 9 a few days ago.
+
+See the changes between [3.1 beta 9 and 3.1 beta 10](https://github.com/godotengine/godot/compare/a5370b1b1bed3744941c90b4a05d4516aabd4c67...e930fb9a6e4277ad3c4dc60a775785b294840512). This beta is built from commit [e930fb9](https://github.com/godotengine/godot/commit/e930fb9a6e4277ad3c4dc60a775785b294840512).
+
+Barring any big regression, this should be our last beta build, the next one being the first Release Candidate (RC 1) in a few days.
+
+A big change since 3.1 beta 6 is that the Windows binaries are now **properly code signed**. Our release manager [Hein-Pieter van Braam-Stewart](https://github.com/hpvb) is now signing binaries with his own company's certificate. From now on, you should thus expect (and can trust) our official binaries signed by **[Prehensile Tales B.V.](https://www.prehensile-tales.com/)**. macOS binaries will be signed at a later time.
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been over a year since the 3.0 release and over 6,500 commits, so expect a lot of nice things in the final 3.1 version!
+
+## Disclaimer
+
+**IMPORTANT: This is a [*beta*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are drafted already, but we don't want to spoil the surprise of the 3.1 release announcement ;)
+In the meantime, you can read the [preliminary changelog](https://github.com/godotengine/godot/blob/master/CHANGELOG.md#unreleased), as well as [past devblogs](/devblog).
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary and export templates that matches your platform and Godot flavour:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.1/beta10) (GDScript, GDNative, VisualScript)
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.1/beta10/mono) (C# support + all the above). You need to have MSbuild installed to use the Mono build. However, this build no longer mandates a specific Mono SDK version; it comes bundled with Mono 5.18.
+
+**Important:** As mentioned above, Windows binaries are now signed by **Prehensile Tales B.V.**, the company of our release manager [Hein-Pieter van Braam-Stewart](https://github.com/hpvb). You can trust this signature and accept any warning that Windows may issue due to the novelty of this certificate. As more users accept it, the certificate will be recognized as trusted for future releases.
+
+## Bug reports
+
+There is still a couple hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.1 release and will end up retargeted to a later milestone.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released.
+
+*The illustration picture is from [carrotcake.studio](https://carrotcake.studio)'s *[The Garden Path](https://carrotcakestudio.itch.io/thegardenpath)*, a beautiful sandbox gardening game developed with Godot. Follow its development on their [Devlog](https://blog.carrotcake.studio) and [Twitter](https://mobile.twitter.com/carrotcakest).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-beta-11.md b/collections/_article/dev-snapshot-godot-3-1-beta-11.md
new file mode 100644
index 0000000000..1201a08ed6
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-beta-11.md
@@ -0,0 +1,48 @@
+---
+title: "Dev snapshot: Godot 3.1 beta 11"
+excerpt: "One (hopefully) last beta was needed to test the many last-minute bug fixes done over the last few day, which brought the 3.1 version very close to what we want the final version to be. But any heavy bugfix requires QA testing to ensure that it does not introduce regressions, so we're publishing a new 3.1 beta 11 build to have the community confirm if it's ready for the Release Candidate stage."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c7/eb0/021/5c7eb0021fe9f976412604.png
+date: 2019-03-05 00:00:00
+---
+
+As bugfixing is going at a steady pace towards Godot 3.1 stable, we plan to release beta builds frequently to have broad testing on the latest fixes and spot any regression. So we're now publishing Godot 3.1 **beta 11** with over 110 commits made since beta 10 a few days ago.
+
+See the changes between [3.1 beta 10 and 3.1 beta 11](https://github.com/godotengine/godot/compare/e930fb9a6e4277ad3c4dc60a775785b294840512...80618700ca668a595fd214ca8db43a69ca2a8b67). This beta is built from commit [e930fb9](https://github.com/godotengine/godot/commit/80618700ca668a595fd214ca8db43a69ca2a8b67).
+
+We said that beta 10 would likely be the last one before the first Release Candidate (RC 1), but there were still quite a few big changes that warrant another beta. The list of remaining release-critical bugs is quite small, so we should be able to enter the RC phase soon.
+
+A big change since 3.1 beta 6 is that the Windows binaries are now **properly code signed**. Our release manager [Hein-Pieter van Braam-Stewart](https://github.com/hpvb) is now signing binaries with his own company's certificate. From now on, you should thus expect (and can trust) our official binaries signed by **[Prehensile Tales B.V.](https://www.prehensile-tales.com/)**. macOS binaries will be signed at a later time.
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been over a year since the 3.0 release and over 6,500 commits, so expect a lot of nice things in the final 3.1 version!
+
+## Disclaimer
+
+**IMPORTANT: This is a [*beta*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are drafted already, but we don't want to spoil the surprise of the 3.1 release announcement ;)
+In the meantime, you can read the [preliminary changelog](https://github.com/godotengine/godot/blob/master/CHANGELOG.md#unreleased), as well as [past devblogs](/devblog).
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary and export templates that matches your platform and Godot flavour:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.1/beta11) (GDScript, GDNative, VisualScript)
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.1/beta11/mono) (C# support + all the above). You need to have MSbuild installed to use the Mono build. However, this build no longer mandates a specific Mono SDK version; it comes bundled with Mono 5.18.
+
+**Important:** As mentioned above, Windows binaries are now signed by **Prehensile Tales B.V.**, the company of our release manager [Hein-Pieter van Braam-Stewart](https://github.com/hpvb). You can trust this signature and accept any warning that Windows may issue due to the novelty of this certificate. As more users accept it, the certificate will be recognized as trusted for future releases.
+
+## Bug reports
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released.
+
+*The illustration picture is from Odyssey Entertainment's upcoming sci-fi puzzle platformer *[Transmogrify](http://www.playtransmogrify.com/)*, which is schedule to release in coming weeks on [itch.io](https://odysseyentertainment.itch.io/transmogrify) and [Steam](https://store.steampowered.com/app/740310/Transmogrify/).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-beta-2.md b/collections/_article/dev-snapshot-godot-3-1-beta-2.md
new file mode 100644
index 0000000000..f9e032c1a2
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-beta-2.md
@@ -0,0 +1,50 @@
+---
+title: "Dev snapshot: Godot 3.1 beta 2"
+excerpt: "We're making good progress on fixing the most critical bugs for Godot 3.1, and it's now time for another beta build for testers to work with. This brings us one step closer to the final release, with notably many crashes fixed. A major performance regression in the GLES2 backend has also been fixed."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c4/0b8/f02/5c40b8f021bd5327148897.jpg
+date: 2019-01-18 00:00:00
+---
+
+We entered the [*release freeze*](https://github.com/godotengine/godot/issues/24822) last week with Godot [3.1 beta 1](/article/dev-snapshot-godot-3-1-beta-1), and many high priority bug reports have been fixed since then. We're now publishing a new **beta 2** snapshot for testers to work with. This new release fixes various crash scenarios, as well as a [performance regression](https://github.com/godotengine/godot/issues/24466) in the GLES backend.
+
+We're still aiming for a release by the end of the month, so we're under a tight schedule. From now on dev focus is on release-critical issues that would seriously hamper Godot 3.1's usability and features.
+
+See the changes between [3.1 beta 1 and 3.1 beta 2](https://github.com/godotengine/godot/compare/f7de2c0cb3793bd289b8465bcc9af54157a54e91...1efd37f1b77d71c652fe28a50f42c5284d5ef4ec). This beta is built from commit [1efd37f](https://github.com/godotengine/godot/commit/1efd37f1b77d71c652fe28a50f42c5284d5ef4ec).
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been almost a year since the 3.0 release and close to 6,000 commits, so expect a lot of nice things in the final 3.1 version!
+
+And a small note for C# users: Godot 3.1 beta 2 now bundles **mono 5.18** instead of 5.16. It's still bundled so you don't need to upgrade your system mono.
+
+## Disclaimer
+
+**IMPORTANT: This is a [*beta*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There will still be many fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are drafted already, but we don't want to spoil the surprise of the 3.1 release announcement ;)
+In the meantime, you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor [Hugo Locurcio](https://github.com/Calinou) is maintaining, as well as [past devblogs](/devblog).
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features. Juan added several tutorials on new 3.1 features last week ([2D meshes](http://docs.godotengine.org/en/latest/tutorials/2d/2d_meshes.html), [2D skeletons](http://docs.godotengine.org/en/latest/tutorials/animation/2d_skeletons.html) and [AnimationTree](http://docs.godotengine.org/en/latest/tutorials/animation/animation_tree.html) docs).
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary and export templates that matches your platform and Godot flavour:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.1/beta2) (GDScript, GDNative, VisualScript)
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.1/beta2/mono) (C# support + all the above). You need to have Nuget and MSbuild installed to use the Mono build. However, this build no longer mandates a specific Mono SDK version.
+
+**IMPORTANT:** Make backups of your Godot 3.0 projects before opening them in any 3.1 development build. Once a project has been opened in 3.1, its `project.godot` file will be updated to a new format for input mappings which is not compatible with Godot 3.0 - the latter will thus refuse to open a 3.1 project. Moreover, using new 3.1 features in your project means that you can't go back to 3.0, unless you do the necessary work to remove the use of those features. So either test this release on a copy of your 3.0 projects, or start new projects with it.
+
+## Bug reports
+
+There are still hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.1 release and will end up retargeted to a later milestone.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released.
+
+*The illustration picture is a screenshot from [Miskatonic Studio](https://miskatonicstudio.com/)'s first game, *Intrepid*, a sci-fi esape room game, which was released last month. [Steam](https://store.steampowered.com/app/992860/Intrepid), [Twitter](https://twitter.com/miskatonic_s).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-beta-3.md b/collections/_article/dev-snapshot-godot-3-1-beta-3.md
new file mode 100644
index 0000000000..7839ce3485
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-beta-3.md
@@ -0,0 +1,53 @@
+---
+title: "Dev snapshot: Godot 3.1 beta 3"
+excerpt: "We've been hard at work fixing bugs since the Godot 3.1 beta 2 last week, and our new beta 3 snapshot is a lot closer to what we want the final 3.1 to be like. We've reviewed the many bug reports filed in the 3.1 milestone over the last few weeks, and many of them have been resolved, or postponed to the next milestone when they were not critical. The GLES2 backend is getting more and more mature, especially for the web and mobile platforms where severe issues have been fixed."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c4/b93/a45/5c4b93a45047f384045358.png
+date: 2019-01-27 00:00:00
+---
+
+We've been hard at work fixing bugs since the Godot [3.1 beta 2](/article/dev-snapshot-godot-3-1-beta-2) last week, and our new **beta 3** snapshot is a lot closer to what we want the final 3.1 to be like.
+
+There were over 600 bugs listed for the 3.1 milestone at the start of the month, but we've been reviewed them tirelessly over the last few weeks, and many of them have been fixed, or postponed to the next milestone when they were not critical. The GLES2 backend is getting more and more mature, especially for the web and mobile platforms where severe issues have been fixed.
+
+If all goes well, we may have a first release candidate next week :)
+
+See the changes between [3.1 beta 2 and 3.1 beta 3](https://github.com/godotengine/godot/compare/1efd37f1b77d71c652fe28a50f42c5284d5ef4ec...a8510331c0115eeee2d6ac0a4acbeb5d4df833b3). This beta is built from commit [a851033](https://github.com/godotengine/godot/commit/a8510331c0115eeee2d6ac0a4acbeb5d4df833b3).
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been almost a year since the 3.0 release and over 6,000 commits, so expect a lot of nice things in the final 3.1 version!
+
+## Disclaimer
+
+**IMPORTANT: This is a [*beta*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There will still be many fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are drafted already, but we don't want to spoil the surprise of the 3.1 release announcement ;)
+In the meantime, you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor [Hugo Locurcio](https://github.com/Calinou) is maintaining, as well as [past devblogs](/devblog).
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features. Juan added several tutorials on new 3.1 features this month ([2D meshes](http://docs.godotengine.org/en/latest/tutorials/2d/2d_meshes.html), [2D skeletons](http://docs.godotengine.org/en/latest/tutorials/animation/2d_skeletons.html) and [AnimationTree](http://docs.godotengine.org/en/latest/tutorials/animation/animation_tree.html) docs).
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary and export templates that matches your platform and Godot flavour:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.1/beta3) (GDScript, GDNative, VisualScript)
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.1/beta3/mono) (C# support + all the above). You need to have Nuget and MSbuild installed to use the Mono build. However, this build no longer mandates a specific Mono SDK version; it comes bundled with Mono 5.18.
+
+**IMPORTANT:** Make backups of your Godot 3.0 projects before opening them in any 3.1 development build. Once a project has been opened in 3.1, its `project.godot` file will be updated to a new format for input mappings which is not compatible with Godot 3.0 - the latter will thus refuse to open a 3.1 project. Moreover, using new 3.1 features in your project means that you can't go back to 3.0, unless you do the necessary work to remove the use of those features. So either test this release on a copy of your 3.0 projects, or start new projects with it.
+
+## Bug reports
+
+There is still a couple hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.1 release and will end up retargeted to a later milestone.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released.
+
+Known regressions in 3.1 beta 3:
+- [GH-25378](https://github.com/godotengine/godot/issues/25378): Texture previews are extremely low res
+
+*The illustration picture is a screenshot from John Watson's upcoming game, *[Gravity Ace](https://gravityace.com)*, a gorgeous arcade twin-stick shooter currently in public alpha on [itch.io](https://jotson.itch.io/gravity).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-beta-4.md b/collections/_article/dev-snapshot-godot-3-1-beta-4.md
new file mode 100644
index 0000000000..e77337bc9e
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-beta-4.md
@@ -0,0 +1,50 @@
+---
+title: "Dev snapshot: Godot 3.1 beta 4"
+excerpt: "The last couple of weeks have been busy, as many core developers were meeting in Brussels for the Godot Sprint, FOSDEM and GodotCon. Nevertheless, other contributors have kept working in the meantime, and some of the Godot Sprint attendees also did some welcome bugfixing, so we have enough content for a new beta 4 build. We're quite close to being ready for a first release candidate."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c6/086/93b/5c608693b2c0c600326798.jpg
+date: 2019-02-12 14:21:08
+---
+
+The last couple of weeks have been busy, as many core developers were meeting in Brussels for the Godot Sprint, FOSDEM and [GodotCon](/article/schedule-godotcon-2019-brussels). We'll post an update about what we did there and some of the topics discussed in coming days, stay tuned!
+
+Nevertheless, other contributors have kept working in the meantime, and some of the Godot Sprint attendees also did some welcome bugfixing, so we have enough content for a new **beta 4** build. We're quite close to being ready for a first release candidate.
+
+See the changes between [3.1 beta 3 and 3.1 beta 4](https://github.com/godotengine/godot/compare/a8510331c0115eeee2d6ac0a4acbeb5d4df833b3...17809ca9a907b8d48bea2fd26ea42312a9eaaca4). This beta is built from commit [17809ca](https://github.com/godotengine/godot/commit/17809ca9a907b8d48bea2fd26ea42312a9eaaca4).
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been almost a year since the 3.0 release and over 6,300 commits, so expect a lot of nice things in the final 3.1 version!
+
+## Disclaimer
+
+**IMPORTANT: This is a [*beta*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There will still be many fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are drafted already, but we don't want to spoil the surprise of the 3.1 release announcement ;)
+In the meantime, you can read the [preliminary changelog](https://github.com/godotengine/godot/blob/master/CHANGELOG.md#unreleased), as well as [past devblogs](/devblog).
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary and export templates that matches your platform and Godot flavour:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.1/beta4) (GDScript, GDNative, VisualScript)
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.1/beta4/mono) (C# support + all the above). You need to have Nuget and MSbuild installed to use the Mono build. However, this build no longer mandates a specific Mono SDK version; it comes bundled with Mono 5.18.
+
+## Bug reports
+
+There is still a couple hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.1 release and will end up retargeted to a later milestone.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released.
+
+**Known regressions:**
+- [GH-25804](https://github.com/godotengine/godot/issues/25804): 3d workspace disappears in the editor (fixed in *master*)
+- [GH-25839](https://github.com/godotengine/godot/issues/25839): Visual Shader compile error with CanvasShaderGLES2 (fixed in *master*)
+
+*The illustration picture is a screenshot from [Kodera Software (Mariusz Chwalba)](https://twitter.com/KoderaSoftware)'s upcoming game, *[ΔV: Rings of Saturn](https://games.kodera.pl/dv/)*, a hard sci-fi, top-down space simulator with a demo available on [itch.io](https://koder.itch.io/dv-rings-of-saturn-demo) and [Steam](https://store.steampowered.com/app/846030/V_Rings_of_Saturn/). *
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-beta-5.md b/collections/_article/dev-snapshot-godot-3-1-beta-5.md
new file mode 100644
index 0000000000..455fd3f758
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-beta-5.md
@@ -0,0 +1,44 @@
+---
+title: "Dev snapshot: Godot 3.1 beta 5"
+excerpt: "It's only been a few days since beta 4, but we're making very good progress on polishing the 3.1 beta, with many bugs being fixed every day. We'll soon be able to issue a Release Candidate (RC) build and from there, proceed quickly to the stable release. For now, we're still calling this one beta 5, as there are some critical bugs left that we want to fix before RC 1."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c6/876/abc/5c6876abcd8f7519906691.png
+date: 2019-02-17 00:00:00
+---
+
+It's only been a few days since [beta 4](/article/dev-snapshot-godot-3-1-beta-4), but we're making very good progress on polishing the 3.1 beta, with many bugs being fixed every day. We'll soon be able to issue a Release Candidate (RC) build and from there, proceed quickly to the stable release. For now, we're still calling this one **beta 5**, as there are some critical bugs left that we want to fix before RC 1.
+
+See the changes between [3.1 beta 4 and 3.1 beta 5](https://github.com/godotengine/godot/compare/17809ca9a907b8d48bea2fd26ea42312a9eaaca4...c54330c6b0530d0fdc836f7349c4725eb7f309cb). This beta is built from commit [c54330c](https://github.com/godotengine/godot/commit/c54330c6b0530d0fdc836f7349c4725eb7f309cb).
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been over a year since the 3.0 release and close to 6,500 commits, so expect a lot of nice things in the final 3.1 version!
+
+## Disclaimer
+
+**IMPORTANT: This is a [*beta*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are drafted already, but we don't want to spoil the surprise of the 3.1 release announcement ;)
+In the meantime, you can read the [preliminary changelog](https://github.com/godotengine/godot/blob/master/CHANGELOG.md#unreleased), as well as [past devblogs](/devblog).
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary and export templates that matches your platform and Godot flavour:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.1/beta5) (GDScript, GDNative, VisualScript)
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.1/beta5/mono) (C# support + all the above). You need to have MSbuild installed to use the Mono build. However, this build no longer mandates a specific Mono SDK version; it comes bundled with Mono 5.18.
+
+## Bug reports
+
+There is still a couple hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.1 release and will end up retargeted to a later milestone.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released.
+
+*The illustration picture is a screenshot from *[Primal Light](https://twitter.com/PrimalLightGame)*, a gorgeous action platformer developed in Godot 3.1 by a team of two, scheduled to release on Steam in 2019. Check their many GIFs [on Twitter](https://twitter.com/PrimalLightGame)!*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-beta-6.md b/collections/_article/dev-snapshot-godot-3-1-beta-6.md
new file mode 100644
index 0000000000..c87e67fef9
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-beta-6.md
@@ -0,0 +1,52 @@
+---
+title: "Dev snapshot: Godot 3.1 beta 6"
+excerpt: "As bugfixing is going at a steady pace towards Godot 3.1 stable, we plan to release beta builds frequently to have broad testing on the latest fixes and spot any regression. So we're now publishing Godot 3.1 beta 6 with close to 150 commits made since beta 5 a few days ago. This is also the first Godot released to have code signed binaries on Windows!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c6/ed2/f61/5c6ed2f617ed8871688013.jpg
+date: 2019-02-22 00:00:00
+---
+
+As bugfixing is going at a steady pace towards Godot 3.1 stable, we plan to release beta builds frequently to have broad testing on the latest fixes and spot any regression. So we're now publishing Godot 3.1 **beta 6** with close to 150 commits made since beta 5 a few days ago.
+
+See the changes between [3.1 beta 5 and 3.1 beta 6](https://github.com/godotengine/godot/compare/c54330c6b0530d0fdc836f7349c4725eb7f309cb...30a4723d9c974daaaf6b8af581b2d66c6b31b119). This beta is built from commit [30a4723](https://github.com/godotengine/godot/commit/30a4723d9c974daaaf6b8af581b2d66c6b31b119).
+
+A big change in this release is that the Windows binaries are now **properly code signed**. Our release manager [Hein-Pieter van Braam-Stewart](https://github.com/hpvb) is now signing binaries with his own company's certificate. From now on, you should thus expect (and can trust) our official binaries signed by **[Prehensile Tales B.V.](https://www.prehensile-tales.com/)**. macOS binaries will be signed at a later time.
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been over a year since the 3.0 release and over 6,500 commits, so expect a lot of nice things in the final 3.1 version!
+
+## Disclaimer
+
+**IMPORTANT: This is a [*beta*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are drafted already, but we don't want to spoil the surprise of the 3.1 release announcement ;)
+In the meantime, you can read the [preliminary changelog](https://github.com/godotengine/godot/blob/master/CHANGELOG.md#unreleased), as well as [past devblogs](/devblog).
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary and export templates that matches your platform and Godot flavour:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.1/beta6) (GDScript, GDNative, VisualScript)
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.1/beta6/mono) (C# support + all the above). You need to have MSbuild installed to use the Mono build. However, this build no longer mandates a specific Mono SDK version; it comes bundled with Mono 5.18.
+
+**Important:** As mentioned above, Windows binaries are now signed by **Prehensile Tales B.V.**, the company of our release manager [Hein-Pieter van Braam-Stewart](https://github.com/hpvb). You can trust this signature and accept any warning that Windows may issue due to the novelty of this certificate. As more users accept it, the certificate will be recognized as trusted for future releases.
+
+## Bug reports
+
+There is still a couple hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.1 release and will end up retargeted to a later milestone.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released.
+
+**Known issues:**
+
+- [GH-26149](https://github.com/godotengine/godot/issues/26149) - Recent area optimization commit causes massive FPS swings (fixed in *master* branch).
+
+*The illustration picture is a screenshot from [Binogure Studio](https://twitter.com/Binogure)'s *[City Game Studio](https://store.steampowered.com/app/726840/City_Game_Studio/)*, a game development simulation game made with Godot 2.1.5, which was just released on [Steam Early Access](https://store.steampowered.com/app/726840/City_Game_Studio/).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-beta-7.md b/collections/_article/dev-snapshot-godot-3-1-beta-7.md
new file mode 100644
index 0000000000..58f2afbfbb
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-beta-7.md
@@ -0,0 +1,52 @@
+---
+title: "Dev snapshot: Godot 3.1 beta 7"
+excerpt: "As bugfixing is going at a steady pace towards Godot 3.1 stable, we plan to release beta builds frequently to have broad testing on the latest fixes and spot any regression. So we're now publishing Godot 3.1 beta 7 with close to 25 commits made since beta 6 a few days ago. This is also the first Godot released to have code signed binaries on Windows!"
+categories: ["pre-release"]
+author: Hein-Pieter van Braam
+image: /storage/app/uploads/public/5c7/2a2/0bb/5c72a20bb6843627788761.jpg
+date: 2019-02-24 00:00:00
+---
+
+As bugfixing is going at a steady pace towards Godot 3.1 stable, we plan to release beta builds frequently to have broad testing on the latest fixes and spot any regression. So we're now publishing Godot 3.1 **beta 7** with close to 25 commits made since beta 6 a few days ago.
+
+See the changes between [3.1 beta 6 and 3.1 beta 7](https://github.com/godotengine/godot/compare/30a4723d9c974daaaf6b8af581b2d66c6b31b119...e30ce69cb44cd31933dc81700d16db2c80727015). This beta is built from commit [e30ce69](https://github.com/godotengine/godot/commit/e30ce69cb44cd31933dc81700d16db2c80727015).
+
+A big change in this release is that the Windows binaries are now **properly code signed**. Our release manager [Hein-Pieter van Braam-Stewart](https://github.com/hpvb) is now signing binaries with his own company's certificate. From now on, you should thus expect (and can trust) our official binaries signed by **[Prehensile Tales B.V.](https://www.prehensile-tales.com/)**. macOS binaries will be signed at a later time.
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been over a year since the 3.0 release and over 6,500 commits, so expect a lot of nice things in the final 3.1 version!
+
+## Disclaimer
+
+**IMPORTANT: This is a [*beta*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are drafted already, but we don't want to spoil the surprise of the 3.1 release announcement ;)
+In the meantime, you can read the [preliminary changelog](https://github.com/godotengine/godot/blob/master/CHANGELOG.md#unreleased), as well as [past devblogs](/devblog).
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary and export templates that matches your platform and Godot flavour:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.1/beta7) (GDScript, GDNative, VisualScript)
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.1/beta7/mono) (C# support + all the above). You need to have MSbuild installed to use the Mono build. However, this build no longer mandates a specific Mono SDK version; it comes bundled with Mono 5.18.
+
+**Important:** As mentioned above, Windows binaries are now signed by **Prehensile Tales B.V.**, the company of our release manager [Hein-Pieter van Braam-Stewart](https://github.com/hpvb). You can trust this signature and accept any warning that Windows may issue due to the novelty of this certificate. As more users accept it, the certificate will be recognized as trusted for future releases.
+
+## Bug reports
+
+There is still a couple hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.1 release and will end up retargeted to a later milestone.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released.
+
+**Known issues:**
+- [26243](https://github.com/godotengine/godot/issues/26243): Crash with "Illegal instruction" on pre-2011 CPUs (fixed in *master*)
+- [26244](https://github.com/godotengine/godot/issues/26244): C# builds are failing (fixed in *master*)
+
+*The illustration picture is a scene created with [Marc Gilleron](http://twitter.com/ZylannMP3)'s *HeightMap terrain plugin*, available on the [Asset Library](https://godotengine.org/asset-library/asset/231) and on [GitHub](https://github.com/Zylann/godot_heightmap_plugin).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-beta-8.md b/collections/_article/dev-snapshot-godot-3-1-beta-8.md
new file mode 100644
index 0000000000..d9cad9f2c1
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-beta-8.md
@@ -0,0 +1,53 @@
+---
+title: "Dev snapshot: Godot 3.1 beta 8"
+excerpt: "Our two previous beta builds had showstopper regressions, which have now been fixed. This beta 8 builds allows using the engine with C# again, as well as running it on older CPUs. As we release it, we are already aware of another recent regression with ETC texture import affecting GLES2 on mobile, which will be fixed in the next build."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c7/558/1f7/5c75581f7dadb646440050.jpg
+date: 2019-02-26 15:29:20
+---
+
+As bugfixing is going at a steady pace towards Godot 3.1 stable, we plan to release beta builds frequently to have broad testing on the latest fixes and spot any regression. So we're now publishing Godot 3.1 **beta 8** with close to 50 commits made since beta 7 a few days ago.
+
+See the changes between [3.1 beta 7 and 3.1 beta 8](https://github.com/godotengine/godot/compare/e30ce69cb44cd31933dc81700d16db2c80727015...a32b26dfa26f2a039bf9c84b90d10666bcf785c9). This beta is built from commit [a32b26d](https://github.com/godotengine/godot/commit/a32b26dfa26f2a039bf9c84b90d10666bcf785c9).
+
+Our two previous betas had regressions on Bullet physics (beta 6), C# support and old CPUs supports (beta 7), which are fixed in this beta. There is still one big regression that we know of, which is that ETC import is now invalid, so GLES2 projects exported to Android or iOS would likely not work. This will be fixed shortly in beta 9.
+
+A big change since 3.1 beta 6 is that the Windows binaries are now **properly code signed**. Our release manager [Hein-Pieter van Braam-Stewart](https://github.com/hpvb) is now signing binaries with his own company's certificate. From now on, you should thus expect (and can trust) our official binaries signed by **[Prehensile Tales B.V.](https://www.prehensile-tales.com/)**. macOS binaries will be signed at a later time.
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been over a year since the 3.0 release and over 6,500 commits, so expect a lot of nice things in the final 3.1 version!
+
+## Disclaimer
+
+**IMPORTANT: This is a [*beta*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are drafted already, but we don't want to spoil the surprise of the 3.1 release announcement ;)
+In the meantime, you can read the [preliminary changelog](https://github.com/godotengine/godot/blob/master/CHANGELOG.md#unreleased), as well as [past devblogs](/devblog).
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary and export templates that matches your platform and Godot flavour:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.1/beta8) (GDScript, GDNative, VisualScript)
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.1/beta8/mono) (C# support + all the above). You need to have MSbuild installed to use the Mono build. However, this build no longer mandates a specific Mono SDK version; it comes bundled with Mono 5.18.
+
+**Important:** As mentioned above, Windows binaries are now signed by **Prehensile Tales B.V.**, the company of our release manager [Hein-Pieter van Braam-Stewart](https://github.com/hpvb). You can trust this signature and accept any warning that Windows may issue due to the novelty of this certificate. As more users accept it, the certificate will be recognized as trusted for future releases.
+
+## Bug reports
+
+There is still a couple hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.1 release and will end up retargeted to a later milestone.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released.
+
+**Known issues:**
+- [GH-26301](https://github.com/godotengine/godot/issues/26301) and others: GLES2 projets with ETC textures on Android crash on start
+
+*The illustration picture is a screenshot from the FOSS game *[Tanks of Freedom](https://tof.p1x.in/)* by [P1X](https://p1x.in), initially released in 2015 and continuously updated since then. [Source code](https://github.com/w84death/Tanks-of-Freedom) (Godot 2.1), [itch.io](https://w84death.itch.io/tanks-of-freedom).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-1-beta-9.md b/collections/_article/dev-snapshot-godot-3-1-beta-9.md
new file mode 100644
index 0000000000..657568f347
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-1-beta-9.md
@@ -0,0 +1,54 @@
+---
+title: "Dev snapshot: Godot 3.1 beta 9"
+excerpt: "The previous beta had some GLES2/Android regressions which, along with several other issues, has been fixed in Beta 9. Please go forth and test! Assuming no new regressions are found we are likely going to move to *release candidate* state soon."
+categories: ["pre-release"]
+author: Hein-Pieter van Braam
+image: /storage/app/uploads/public/5c7/818/df2/5c7818df2369c923755927.jpg
+date: 2019-02-28 00:00:00
+---
+
+As bugfixing is going at a steady pace towards Godot 3.1 stable, we plan to release beta builds frequently to have broad testing on the latest fixes and spot any regression. So we're now publishing Godot 3.1 **beta 9** with close to 50 commits made since beta 8 a few days ago.
+
+See the changes between [3.1 beta 8 and 3.1 beta 9](https://github.com/godotengine/godot/compare/a32b26dfa26f2a039bf9c84b90d10666bcf785c9...a5370b1b1bed3744941c90b4a05d4516aabd4c67). This beta is built from commit [a5370b1](https://github.com/godotengine/godot/commit/a5370b1b1bed3744941c90b4a05d4516aabd4c67).
+
+The ETC issue on GLES2/Android has been fixed in this release.
+
+A big change since 3.1 beta 6 is that the Windows binaries are now **properly code signed**. Our release manager [Hein-Pieter van Braam-Stewart](https://github.com/hpvb) is now signing binaries with his own company's certificate. From now on, you should thus expect (and can trust) our official binaries signed by **[Prehensile Tales B.V.](https://www.prehensile-tales.com/)**. macOS binaries will be signed at a later time.
+
+Contrarily to our [3.0.x maintenance releases](/article/maintenance-release-godot-3-0-6), which include only thoroughly reviewed and backwards-compatible bug fixes, the 3.1 version includes all the new features (and subsequent bugs!) merged in the *master* branch since January 2018, and especially all those showcased on [our past devblogs](/devblog). It's been over a year since the 3.0 release and over 6,500 commits, so expect a lot of nice things in the final 3.1 version!
+
+## Disclaimer
+
+**IMPORTANT: This is a [*beta*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta) build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.1 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are drafted already, but we don't want to spoil the surprise of the 3.1 release announcement ;)
+In the meantime, you can read the [preliminary changelog](https://github.com/godotengine/godot/blob/master/CHANGELOG.md#unreleased), as well as [past devblogs](/devblog).
+
+Documentation writers are hard at work to catch up with the new features, and the [*latest* branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.1 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary and export templates that matches your platform and Godot flavour:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.1/beta9) (GDScript, GDNative, VisualScript)
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.1/beta9/mono) (C# support + all the above). You need to have MSbuild installed to use the Mono build. However, this build no longer mandates a specific Mono SDK version; it comes bundled with Mono 5.18.
+
+**Important:** As mentioned above, Windows binaries are now signed by **Prehensile Tales B.V.**, the company of our release manager [Hein-Pieter van Braam-Stewart](https://github.com/hpvb). You can trust this signature and accept any warning that Windows may issue due to the novelty of this certificate. As more users accept it, the certificate will be recognized as trusted for future releases.
+
+## Bug reports
+
+There is still a couple hundreds of open [bug reports for the 3.1 milestone](https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.1+label%3Abug), which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.1 release and will end up retargeted to a later milestone.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.1 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released.
+
+**Known issues:**
+
+- [GH-26359](https://github.com/godotengine/godot/issues/26359): Previous scenes/scripts and project layout not loading up (fixed in *master*)
+
+*The illustration picture is from [HeartBeast Studios](http://twitter.com/uheartbeast/)' byte-sized roguelike *Endhall*, released in December on [itch.io](https://uheartbeast.itch.io/endhall) and [Steam](https://store.steampowered.com/app/838990/Endhall/).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-2-beta-1.md b/collections/_article/dev-snapshot-godot-3-2-2-beta-1.md
new file mode 100644
index 0000000000..2d0e951f99
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-2-beta-1.md
@@ -0,0 +1,85 @@
+---
+title: "Dev snapshot: Godot 3.2.2 beta 1"
+excerpt: "After refining our Godot 3.2 release with bug fixes in 3.2.1 last month, it's time to integrate some of the new features that didn't make it into the 3.2 merge window. Notably, Godot 3.2.2 is going to add three major features: C# support for the iOS platform, 2D batching for the GLES2 renderer, and a re-architecture of the Android plugin system."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5e9/c16/331/5e9c16331c02c557914246.png
+date: 2020-04-19 09:14:17
+---
+
+After refining our [Godot 3.2 release](/article/here-comes-godot-3-2) with bug fixes in [3.2.1 last month](/article/maintenance-release-godot-3-2-1), it's time to integrate some of the new features that didn't make it into the 3.2 merge window but have been further developed and backported since.
+
+Notably, Godot 3.2.2 is going to add three major features:
+
+- [C# support for the iOS platform](/article/csharp-ios-signals-events), courtesy of Ignacio ([neikeq](https://github.com/neikeq)).
+- [2D batching for the GLES2 renderer](/article/gles2-renderer-optimization-2d-batching), thanks to [lawnjelly](https://github.com/lawnjelly) and Clay ([clayjohn](https://github.com/clayjohn)).
+- [Re-architecture of the Android plugin system](https://github.com/godotengine/godot/pull/36336), by Fredia ([m4gr3d](https://github.com/m4gr3d)).
+
+We need your help to test and validate these changes before publishing 3.2.2-stable, which is why we publish this beta build now. If you find any new issue with this build, especially related to one of the listed big changes, please [report it on GitHub](https://github.com/godotengine/godot/issues), ideally including a minimal project that can be used to reproduce the issue.
+
+## How to test
+
+It should be safe to test this build directly with pre-existing projects made with Godot 3.2.x. It's of course always advised to use a version control system or backups in case you want to go back to the previous version (but testing 3.2.2-beta1 shouldn't prevent you from doing so anyway).
+
+#### C# support for iOS
+
+C# support for iOS should work similarly to [exporting a GDScript project for iOS](http://docs.godotengine.org/en/3.2/getting_started/workflow/export/exporting_for_ios.html). Note that the export needs to be done from a macOS system to use the included AOT compiler for iOS arm64. If you run into any issue with the export process, please also test the export of a simple GDScript project to verify if the issue relates to the new C# support or to the iOS export pipeline in general.
+
+#### GLES2 2D batching
+
+The new 2D batching is only implemented for the GLES2 renderer, so if you use GLES3 you will not be able to benefit from it. As the GLES3 renderer is being deprecated by Vulkan in Godot 4.0, we currently don't plan to port the 2D batching to it. GLES2 batching is enabled by default both in-game and in the editor. You can turn it off or configure advanced settings in the Project Settings. Please see [this dedicated issue](https://github.com/godotengine/godot/issues/38004) for more details and to share your own testing results (we're interested in all feedback, whether you gained a lot of performance, lost some or didn't notice any chance). Note that currently, only rects are batched (TileMaps, `draw_rect`, text rendering, etc.), but we plan to include more primitive types once this has been well tested.
+
+#### New Android plugin system
+
+Godot 3.2 came with a brand new Android plugin system already, and notably the possibility to build custom APKs from your project folder with any additional plugins/modules that your project needs.
+
+Fredia had done a lot of work back then to improve Juan's initial custom build system, which led him to notice many things that could be modernized to be better suited to the current Android ecosystem. Notably, he re-architectured the plugin system to leverage the [Android AAR library file format](https://developer.android.com/studio/projects/android-library#aar-contents).
+
+This new plugin system is backward-incompatible with the 3.2/3.2.1 system, but both systems are kept functional in future releases of the 3.2.x branch. Since we previously did not version our Android plugin systems, this new one is now labelled `v1`, and is the starting point for the modern Godot Android ecosystem.
+
+See [this Pull Request](https://github.com/godotengine/godot/pull/36336) and [the updated documentation](https://docs.godotengine.org/en/3.2/tutorials/plugins/android/android_plugin.html) for details. Fredia has already started helping some plugin authors to update theirs to the new `v1` system, feel free to ask if you need help too.
+
+## Other changes
+
+Apart from those three major features, there are also close to [200 cherry-picks](https://github.com/godotengine/godot/compare/3.2.1-stable...cb1366f006dfc9904083e8fc6fa23e271bc39e39) for bug fixes and enhancements which have been merged since Godot 3.2.1. Here are some highlights:
+
+- Android: Re-architecture of the Godot Android plugin ([GH-36336](https://github.com/godotengine/godot/pull/36336)).
+- Android: Add signal support to Godot Android plugins ([GH-37305](https://github.com/godotengine/godot/pull/37305)).
+- AStar: Implements estimate/compute_cost for AStar2D ([GH-37039](https://github.com/godotengine/godot/pull/37039)).
+- Audio: Fix volume interpolation in positional audio nodes ([GH-37279](https://github.com/godotengine/godot/pull/37279)).
+- Core: Ensure COWData does not always reallocate on resize ([GH-37373](https://github.com/godotengine/godot/pull/37373)).
+- Editor: Add rotation widget to 3D viewport ([GH-33098](https://github.com/godotengine/godot/pull/33098)).
+- C#: Add iOS support ([GH-36979](https://github.com/godotengine/godot/pull/36979)).
+- C#: Sync csproj when files are changed from the FileSystem dock ([GH-37149](https://github.com/godotengine/godot/pull/37149)).
+- C#: Replace uses of old Configuration and update old csprojs ([GH-36865](https://github.com/godotengine/godot/pull/36865)).
+- Files: Allow specify unpack location when loading a `.pck` ([GH-35261](https://github.com/godotengine/godot/pull/35261)).
+- Files: Improve UX of drive letters ([GH-36639](https://github.com/godotengine/godot/pull/36639)).
+- GLES2: Add 2D batch rendering across items ([GH-37349](https://github.com/godotengine/godot/pull/37349)).
+- GLES2: Avoid material rebind when using skeleton ([GH-37667](https://github.com/godotengine/godot/pull/37667)).
+- GLES2/GLES3: Add support for OpenGL external textures ([GH-36342](https://github.com/godotengine/godot/pull/36342)).
+- GLES2/GLES3: Reset texture flags after radiance map generation ([GH-37815](https://github.com/godotengine/godot/pull/37815)).
+- Import: Fix changing the import type of multiple files at once (regression fix) ([GH-37610](https://github.com/godotengine/godot/pull/37610)).
+- Language Server: Switch the GDScript LSP from WebSocket to TCP, compatible with more external editors ([GH-35864](https://github.com/godotengine/godot/pull/35864)).
+- macOS: Ignore process serial number argument passed by macOS Gatekeeper ([GH-37719](https://github.com/godotengine/godot/pull/37719)).
+- Object: Add `has_signal` method ([GH-33508](https://github.com/godotengine/godot/pull/33508)).
+- Skeleton: Fix IK rotation issue ([GH-37272](https://github.com/godotengine/godot/pull/37272)).
+- VR: Fix aspect ratio on HMD projection matrix ([GH-37601](https://github.com/godotengine/godot/pull/37601)).
+- Windows: Make stack size on Windows match Linux and macOS ([GH-37115](https://github.com/godotengine/godot/pull/37115)).
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the [full changelog on GitHub](https://github.com/godotengine/godot/compare/3.2.1-stable...cb1366f006dfc9904083e8fc6fa23e271bc39e39) for details.
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.2.2/beta1/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2.2/beta1/mono/) (C# support + all the above). You need to have MSBuild (and on Windows .NET Framework 4.7) installed to use the Mono build. Relevant parts of Mono 6.6.0.166 are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.2.2 beta 1. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2.1 no longer works in 3.2.2 beta 1).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-2-beta-2.md b/collections/_article/dev-snapshot-godot-3-2-2-beta-2.md
new file mode 100644
index 0000000000..afc78384e4
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-2-beta-2.md
@@ -0,0 +1,117 @@
+---
+title: "Dev snapshot: Godot 3.2.2 beta 2"
+excerpt: "After refining our Godot 3.2 release with bug fixes in 3.2.1, we're now looking at integrating some new features that didn't make it into the 3.2 merge window but have been further developed and backported since. We published a first beta a few weeks ago, and here's the next round with Godot 3.2.2 beta 2."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5eb/400/0dd/5eb4000ddf0d8512778590.png
+date: 2020-05-07 14:08:24
+---
+
+After refining our [Godot 3.2 release](/article/here-comes-godot-3-2) with bug fixes in [3.2.1](/article/maintenance-release-godot-3-2-1), we're now looking at integrating some new features that didn't make it into the 3.2 merge window but have been further developed and backported since. We published a [first beta](/article/dev-snapshot-godot-3-2-2-beta-1) a few weeks ago, and here's the next round with Godot 3.2.2 beta 2.
+
+Notably, Godot 3.2.2 is going to add 5 major features:
+
+- [C# support for the iOS platform](/article/csharp-ios-signals-events), courtesy of Ignacio ([neikeq](https://github.com/neikeq)).
+- [2D batching for the GLES2 renderer](/article/gles2-renderer-optimization-2d-batching), thanks to [lawnjelly](https://github.com/lawnjelly) and Clay ([clayjohn](https://github.com/clayjohn)).
+ * Several regressions and pre-existing GLES2 issues have additionally been fixed since 3.2.2 beta 1.
+- [Re-architecture of the Android plugin system](https://github.com/godotengine/godot/pull/36336), by Fredia ([m4gr3d](https://github.com/m4gr3d)).
+- [DTLS support and ENET integration](/article/enet-dtls-encryption), developed by Fabio ([Faless](https://github.com/Faless)) (*added in 3.2.2 beta 2*).
+- [Fix for the dangling Variant bug](https://github.com/godotengine/godot/pull/38119), kudos to Pedro ([RandomShaper](https://github.com/RandomShaper)) (*added in 3.2.2 beta 2*).
+ * While this is not a feature per se, it fixes a major annoyance that users have had with pointers to freed objects unexpectedly being re-assigned to new objects, causing hard-to-debug issues.
+
+We need your help to test and validate these changes before publishing 3.2.2-stable, which is why we publish this beta build now. If you find any new issue with this build, especially related to one of the listed big changes, please [report it on GitHub](https://github.com/godotengine/godot/issues), ideally including a minimal project that can be used to reproduce the issue.
+
+## How to test
+
+It should be safe to test this build directly with pre-existing projects made with Godot 3.2.x. It's of course always advised to use a version control system or backups in case you want to go back to the previous version (but testing 3.2.2-beta2 shouldn't prevent you from doing so anyway).
+
+Note: If using C#, the `.csproj` file will be converted with some bug fixes which makes it incompatible with earlier Godot 3.2 and 3.2.1. [A backup of the file](https://github.com/godotengine/godot/pull/38110) will be generated upon conversion so that you can revert to older releases if need be.
+
+#### C# support for iOS
+
+C# support for iOS should work similarly to [exporting a GDScript project for iOS](http://docs.godotengine.org/en/3.2/getting_started/workflow/export/exporting_for_ios.html). Note that the export needs to be done from a macOS system to use the included AOT compiler for iOS arm64. If you run into any issue with the export process, please also test the export of a simple GDScript project to verify if the issue relates to the new C# support or to the iOS export pipeline in general.
+
+#### GLES2 2D batching
+
+The new 2D batching is only implemented for the GLES2 renderer, so if you use GLES3 you will not be able to benefit from it. As the GLES3 renderer is being deprecated by Vulkan in Godot 4.0, we currently don't plan to port the 2D batching to it. GLES2 batching is enabled by default both in-game and in the editor. You can turn it off or configure advanced settings in the Project Settings. Please see [this dedicated issue](https://github.com/godotengine/godot/issues/38004) for more details and to share your own testing results (we're interested in all feedback, whether you gained a lot of performance, lost some or didn't notice any chance). Note that currently, only rects are batched (TileMaps, `draw_rect`, text rendering, etc.), but we plan to include more primitive types once this has been well tested.
+
+#### New Android plugin system
+
+Godot 3.2 came with a brand new Android plugin system already, and notably the possibility to build custom APKs from your project folder with any additional plugins/modules that your project needs.
+
+Fredia had done a lot of work back then to improve Juan's initial custom build system, which led him to notice many things that could be modernized to be better suited to the current Android ecosystem. Notably, he re-architectured the plugin system to leverage the [Android AAR library file format](https://developer.android.com/studio/projects/android-library#aar-contents).
+
+This new plugin system is backward-incompatible with the 3.2/3.2.1 system, but both systems are kept functional in future releases of the 3.2.x branch. Since we previously did not version our Android plugin systems, this new one is now labelled `v1`, and is the starting point for the modern Godot Android ecosystem.
+
+See [this Pull Request](https://github.com/godotengine/godot/pull/36336) and [the updated documentation](https://docs.godotengine.org/en/3.2/tutorials/plugins/android/android_plugin.html) for details. Fredia has already started helping some plugin authors to update theirs to the new `v1` system, feel free to ask if you need help too.
+
+#### DTLS support and ENet integration
+
+[Fabio's work on DTLS support](/article/enet-dtls-encryption) was nearly done by the time 3.2 was released, but came too late to be thoroughly tested. Testing has happened since then both in the `master` branch and in the pending `3.2` Pull Request, so we're now confident to include it in this beta build for further testing.
+
+See the [dedicated devblog](/article/enet-dtls-encryption) for usage examples.
+
+#### Fix for the dangling Variant bug
+
+If you were running into this bug, it would typically be in situations where you'd check `is_instance_valid()` on what you expect to be a freed instance (which should give `False`), and it would actually return `True` and lead you to access a method or a property of a different object (causing an error if the object's class does not include this method or property).
+
+The fix made in the 3.2 is only done on **debug** builds for performance reasons, so make sure to fix any error reported by the editor or debug builds before shipping a release build to your players.
+In the upcoming Godot 4.0, this bug was fixed with a more comprehensive approach which prevents dangling Variant pointers in both release and debug builds.
+
+## Other changes
+
+Apart from those major features, there are also over 350 cherry-picks ([part 1](https://github.com/godotengine/godot/compare/3.2.1-stable...cb1366f006dfc9904083e8fc6fa23e271bc39e39), [part 2](https://github.com/godotengine/godot/compare/cb1366f006dfc9904083e8fc6fa23e271bc39e39...d09036992ca8a979716823ac852a5bb0c9afa0ec)) for bug fixes and enhancements which have been merged since Godot 3.2.1. Here are some highlights:
+
+- 2D: Expose the `cell_size` affecting `VisibilityNotifier2D` precision ([GH-38286](https://github.com/godotengine/godot/pull/38286)).
+- 2D: Add `MODULATE` builtin to canvas item shaders ([GH-38432](https://github.com/godotengine/godot/pull/38432)).
+- 2D: Implement skew in `Node2D` ([GH-38394](https://github.com/godotengine/godot/pull/38394)).
+- Android: Re-architecture of the Godot Android plugin ([GH-36336](https://github.com/godotengine/godot/pull/36336)).
+- Android: Add signal support to Godot Android plugins ([GH-37305](https://github.com/godotengine/godot/pull/37305)).
+- AStar: Implements estimate/compute_cost for AStar2D ([GH-37039](https://github.com/godotengine/godot/pull/37039)).
+- Audio: Fix volume interpolation in positional audio nodes ([GH-37279](https://github.com/godotengine/godot/pull/37279)).
+- C#: Add iOS support ([GH-36979](https://github.com/godotengine/godot/pull/36979)).
+- C#: Sync csproj when files are changed from the FileSystem dock ([GH-37149](https://github.com/godotengine/godot/pull/37149)).
+- C#: Replace uses of old Configuration and update old csprojs ([GH-36865](https://github.com/godotengine/godot/pull/36865)).
+- C#: Allow debugging exported games ([GH-38115](https://github.com/godotengine/godot/pull/38115)).
+- C#: Revert marshalling of IDictionary/IEnumerable implementing types ([GH-38141](https://github.com/godotengine/godot/pull/38141)).
+- Core: Ensure COWData does not always reallocate on resize ([GH-37373](https://github.com/godotengine/godot/pull/37373)).
+- Core: Fix dangling Variants ([GH-38119](https://github.com/godotengine/godot/pull/38119)).
+- Core: Fixed false positives in the culling system ([GH-37863](https://github.com/godotengine/godot/pull/37863)).
+- CSG: Various bug fixes ([GH-38011](https://github.com/godotengine/godot/pull/38011)).
+- Editor: Add rotation widget to 3D viewport ([GH-33098](https://github.com/godotengine/godot/pull/33098)).
+- Editor: Add editor freelook navigation scheme settings ([GH-37989](https://github.com/godotengine/godot/pull/37989)).
+- Files: Improve UX of drive letters ([GH-36639](https://github.com/godotengine/godot/pull/36639)).
+- GDScript: Fix leaked objects when game ends with yields in progress ([GH-38288](https://github.com/godotengine/godot/pull/38288)).
+- GLES2: Add 2D batch rendering across items ([GH-37349](https://github.com/godotengine/godot/pull/37349)).
+- GLES2: Avoid unnecessary material rebind when using skeleton ([GH-37667](https://github.com/godotengine/godot/pull/37667)).
+- GLES2/GLES3: Add support for OpenGL external textures ([GH-36342](https://github.com/godotengine/godot/pull/36342)).
+- GLES2/GLES3: Reset texture flags after radiance map generation ([GH-37815](https://github.com/godotengine/godot/pull/37815)).
+- Import: Fix changing the import type of multiple files at once (regression fix) ([GH-37610](https://github.com/godotengine/godot/pull/37610)).
+- Input: Various fixes for touch pen input ([GH-37756](https://github.com/godotengine/godot/pull/37756), [GH-38439](https://github.com/godotengine/godot/pull/38439), [GH-38484](https://github.com/godotengine/godot/pull/38484)).
+- Language Server: Switch the GDScript LSP from WebSocket to TCP, compatible with more external editors ([GH-35864](https://github.com/godotengine/godot/pull/35864)).
+- macOS: Ignore process serial number argument passed by macOS Gatekeeper ([GH-37719](https://github.com/godotengine/godot/pull/37719)).
+- Networking: DTLS support + optional ENet encryption ([GH-35091](https://github.com/godotengine/godot/pull/35091)).
+- Object: Add `has_signal` method ([GH-33508](https://github.com/godotengine/godot/pull/33508)).
+- Particles: Fix uninitialized memory in CPUParticles and CPUParticles2D ([GH-38346](https://github.com/godotengine/godot/pull/38346), [GH-38378](https://github.com/godotengine/godot/pull/38378)).
+- Physics: Make soft body completely stiff to attachment point ([GH-36048](https://github.com/godotengine/godot/pull/36048)).
+- Skeleton: Fix IK rotation issue ([GH-37272](https://github.com/godotengine/godot/pull/37272)).
+- VR: Fix aspect ratio on HMD projection matrix ([GH-37601](https://github.com/godotengine/godot/pull/37601)).
+- Windows: Make stack size on Windows match Linux and macOS ([GH-37115](https://github.com/godotengine/godot/pull/37115)).
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog on GitHub ([part 1](https://github.com/godotengine/godot/compare/3.2.1-stable...cb1366f006dfc9904083e8fc6fa23e271bc39e39), [part 2](https://github.com/godotengine/godot/compare/cb1366f006dfc9904083e8fc6fa23e271bc39e39...d09036992ca8a979716823ac852a5bb0c9afa0ec)) for details.
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.2.2/beta2/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2.2/beta2/mono/) (C# support + all the above). You need to have MSBuild (and on Windows .NET Framework 4.7) installed to use the Mono build. Relevant parts of Mono 6.6.0.166 are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.2.2 beta 2. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2.1 no longer works in 3.2.2 beta 2).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-2-beta-3.md b/collections/_article/dev-snapshot-godot-3-2-2-beta-3.md
new file mode 100644
index 0000000000..106ab6de15
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-2-beta-3.md
@@ -0,0 +1,132 @@
+---
+title: "Dev snapshot: Godot 3.2.2 beta 3"
+excerpt: "After refining our Godot 3.2 release with bug fixes in 3.2.1, we're now looking at integrating some new features that didn't make it into the 3.2 merge window but have been further developed and backported since. We already had two betas, and here's the next round with Godot 3.2.2 beta 3."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5ec/7a2/8d5/5ec7a28d5656c146172595.png
+date: 2020-05-22 10:20:36
+---
+
+After refining our [Godot 3.2 release](/article/here-comes-godot-3-2) with bug fixes in [3.2.1](/article/maintenance-release-godot-3-2-1), we're now looking at integrating some new features that didn't make it into the 3.2 merge window but have been further developed and backported since. We already had [two](/article/dev-snapshot-godot-3-2-2-beta-1) [betas](/article/dev-snapshot-godot-3-2-2-beta-2), and here's the next round with Godot 3.2.2 beta 3.
+
+Notably, Godot 3.2.2 is going to add 5 major features:
+
+- [C# support for the iOS platform](/article/csharp-ios-signals-events), courtesy of Ignacio ([neikeq](https://github.com/neikeq)).
+- [2D batching for the GLES2 renderer](/article/gles2-renderer-optimization-2d-batching), thanks to [lawnjelly](https://github.com/lawnjelly) and Clay ([clayjohn](https://github.com/clayjohn)).
+- [Re-architecture of the Android plugin system](https://github.com/godotengine/godot/pull/36336), by Fredia ([m4gr3d](https://github.com/m4gr3d)).
+- [DTLS support and ENET integration](/article/enet-dtls-encryption), developed by Fabio ([Faless](https://github.com/Faless)).
+- [Fix for the dangling Variant bug](https://github.com/godotengine/godot/pull/38119), kudos to Pedro ([RandomShaper](https://github.com/RandomShaper)).
+ * While this is not a feature per se, it fixes a major annoyance that users have had with pointers to freed objects unexpectedly being re-assigned to new objects, causing hard-to-debug issues.
+
+We need your help to test and validate these changes before publishing 3.2.2-stable, which is why we publish this beta build now. If you find any new issue with this build, especially related to one of the listed big changes, please [report it on GitHub](https://github.com/godotengine/godot/issues), ideally including a minimal project that can be used to reproduce the issue.
+
+## How to test
+
+It should be safe to test this build directly with pre-existing projects made with Godot 3.2.x. It's of course always advised to use a version control system or backups in case you want to go back to the previous version (but testing 3.2.2-beta3 shouldn't prevent you from doing so anyway).
+
+Note: If using C#, the `.csproj` file will be converted with some bug fixes which makes it incompatible with earlier Godot 3.2 and 3.2.1. [A backup of the file](https://github.com/godotengine/godot/pull/38110) will be generated upon conversion so that you can revert to older releases if need be.
+
+#### C# support for iOS
+
+C# support for iOS should work similarly to [exporting a GDScript project for iOS](http://docs.godotengine.org/en/3.2/getting_started/workflow/export/exporting_for_ios.html). Note that the export needs to be done from a macOS system to use the included AOT compiler for iOS arm64. If you run into any issue with the export process, please also test the export of a simple GDScript project to verify if the issue relates to the new C# support or to the iOS export pipeline in general.
+
+#### GLES2 2D batching
+
+The new 2D batching is only implemented for the GLES2 renderer, so if you use GLES3 you will not be able to benefit from it. As the GLES3 renderer is being deprecated by Vulkan in Godot 4.0, we currently don't plan to port the 2D batching to it. GLES2 batching is enabled by default both in-game and in the editor. You can turn it off or configure advanced settings in the Project Settings. Please see [this dedicated issue](https://github.com/godotengine/godot/issues/38004) for more details and to share your own testing results (we're interested in all feedback, whether you gained a lot of performance, lost some or didn't notice any chance). Note that currently, only rects are batched (TileMaps, `draw_rect`, text rendering, etc.), but we plan to include more primitive types once this has been well tested.
+
+#### New Android plugin system
+
+Godot 3.2 came with a brand new Android plugin system already, and notably the possibility to build custom APKs from your project folder with any additional plugins/modules that your project needs.
+
+Fredia had done a lot of work back then to improve Juan's initial custom build system, which led him to notice many things that could be modernized to be better suited to the current Android ecosystem. Notably, he re-architectured the plugin system to leverage the [Android AAR library file format](https://developer.android.com/studio/projects/android-library#aar-contents).
+
+This new plugin system is backward-incompatible with the 3.2/3.2.1 system, but both systems are kept functional in future releases of the 3.2.x branch. Since we previously did not version our Android plugin systems, this new one is now labelled `v1`, and is the starting point for the modern Godot Android ecosystem.
+
+See [this Pull Request](https://github.com/godotengine/godot/pull/36336) and [the updated documentation](https://docs.godotengine.org/en/3.2/tutorials/plugins/android/android_plugin.html) for details. Fredia has already started helping some plugin authors to update theirs to the new `v1` system, feel free to ask if you need help too.
+
+#### DTLS support and ENet integration
+
+[Fabio's work on DTLS support](/article/enet-dtls-encryption) was nearly done by the time 3.2 was released, but came too late to be thoroughly tested. Testing has happened since then both in the `master` branch and in the pending `3.2` Pull Request, so we're now confident to include it in this beta build for further testing.
+
+See the [dedicated devblog](/article/enet-dtls-encryption) for usage examples.
+
+#### Fix for the dangling Variant bug
+
+If you were running into this bug, it would typically be in situations where you'd check `is_instance_valid()` on what you expect to be a freed instance (which should give `False`), and it would actually return `True` and lead you to access a method or a property of a different object (causing an error if the object's class does not include this method or property).
+
+The fix made in the 3.2 is only done on **debug** builds for performance reasons, so make sure to fix any error reported by the editor or debug builds before shipping a release build to your players.
+In the upcoming Godot 4.0, this bug was fixed with a more comprehensive approach which prevents dangling Variant pointers in both release and debug builds.
+
+## Other changes
+
+Apart from those major features, there are close to 500 cherry-picks ([beta 1](https://github.com/godotengine/godot/compare/3.2.1-stable...cb1366f006dfc9904083e8fc6fa23e271bc39e39), [beta 2](https://github.com/godotengine/godot/compare/cb1366f006dfc9904083e8fc6fa23e271bc39e39...d09036992ca8a979716823ac852a5bb0c9afa0ec), [beta 3](https://github.com/godotengine/godot/compare/d09036992ca8a979716823ac852a5bb0c9afa0ec...b6c551e8646bedde0f81ac3a4f61f9709e82668d)) for bug fixes and enhancements which have been merged since Godot 3.2.1. Here are some highlights:
+
+- 2D: Expose the `cell_size` affecting `VisibilityNotifier2D` precision ([GH-38286](https://github.com/godotengine/godot/pull/38286)).
+- 2D: Add `MODULATE` builtin to canvas item shaders ([GH-38432](https://github.com/godotengine/godot/pull/38432)).
+- 2D: Implement skew in `Node2D` ([GH-38394](https://github.com/godotengine/godot/pull/38394)).
+- Android: Re-architecture of the Godot Android plugin ([GH-36336](https://github.com/godotengine/godot/pull/36336)).
+- Android: Add signal support to Godot Android plugins ([GH-37305](https://github.com/godotengine/godot/pull/37305)).
+- Android: Fix `LineEdit` virtual keyboard issues ([GH-38309](https://github.com/godotengine/godot/pull/38309)).
+- AStar: Implements estimate/compute_cost for AStar2D ([GH-37039](https://github.com/godotengine/godot/pull/37039)).
+- Audio: Fix volume interpolation in positional audio nodes ([GH-37279](https://github.com/godotengine/godot/pull/37279)).
+- C#: Add iOS support ([GH-36979](https://github.com/godotengine/godot/pull/36979)).
+- C#: Sync csproj when files are changed from the FileSystem dock ([GH-37149](https://github.com/godotengine/godot/pull/37149)).
+- C#: Replace uses of old Configuration and update old csprojs ([GH-36865](https://github.com/godotengine/godot/pull/36865)).
+- C#: Allow debugging exported games ([GH-38115](https://github.com/godotengine/godot/pull/38115)).
+- C#: Revert marshalling of IDictionary/IEnumerable implementing types ([GH-38141](https://github.com/godotengine/godot/pull/38141)).
+- C#: Fix inherited scene not inheriting parent's exported properties ([GH-38638](https://github.com/godotengine/godot/pull/38638)).
+- Core: Ensure COWData does not always reallocate on resize ([GH-37373](https://github.com/godotengine/godot/pull/37373)).
+- Core: Fix dangling Variants ([GH-38119](https://github.com/godotengine/godot/pull/38119)).
+- Core: Fixed false positives in the culling system ([GH-37863](https://github.com/godotengine/godot/pull/37863)).
+- Core: Fix leaks and crashes in `OAHashMap` ([GH-38828](https://github.com/godotengine/godot/pull/38828)).
+- CSG: Various bug fixes ([GH-38011](https://github.com/godotengine/godot/pull/38011)).
+- Editor: Add rotation widget to 3D viewport ([GH-33098](https://github.com/godotengine/godot/pull/33098)).
+- Editor: Add editor freelook navigation scheme settings ([GH-37989](https://github.com/godotengine/godot/pull/37989)).
+- Editor: Improved go-to definition (Ctrl + Click) in script editor ([GH-37293](https://github.com/godotengine/godot/pull/37293)).
+- Files: Improve UX of drive letters ([GH-36639](https://github.com/godotengine/godot/pull/36639)).
+- GDNative: Fix Variant size on 32-bit platforms ([GH-38799](https://github.com/godotengine/godot/pull/38799)).
+- GDScript: Fix leaked objects when game ends with yields in progress ([GH-38288](https://github.com/godotengine/godot/pull/38288)).
+- GDScript: Fix object leaks caused by unfulfilled yields ([GH-38482](https://github.com/godotengine/godot/pull/38482)).
+- GDScript: Various bugs fixed in the parser.
+- GLES2: Add 2D batch rendering across items ([GH-37349](https://github.com/godotengine/godot/pull/37349)).
+- GLES2: Avoid unnecessary material rebind when using skeleton ([GH-37667](https://github.com/godotengine/godot/pull/37667)).
+- GLES3: Add Nvidia `draw_rect` flickering workaround ([GH-38517](https://github.com/godotengine/godot/pull/38517)).
+- GLES2/GLES3: Add support for OpenGL external textures ([GH-36342](https://github.com/godotengine/godot/pull/36342)).
+- GLES2/GLES3: Reset texture flags after radiance map generation ([GH-37815](https://github.com/godotengine/godot/pull/37815)).
+- HTML5: Implement audio buffer size calculation, should fix iOS Safari audio issues ([GH-38816](https://github.com/godotengine/godot/pull/38816)).
+- Import: Fix changing the import type of multiple files at once (regression fix) ([GH-37610](https://github.com/godotengine/godot/pull/37610)).
+- Input: Various fixes for touch pen input ([GH-37756](https://github.com/godotengine/godot/pull/37756), [GH-38439](https://github.com/godotengine/godot/pull/38439), [GH-38484](https://github.com/godotengine/godot/pull/38484)).
+- Language Server: Switch the GDScript LSP from WebSocket to TCP, compatible with more external editors ([GH-35864](https://github.com/godotengine/godot/pull/35864)).
+- macOS: Ignore process serial number argument passed by macOS Gatekeeper ([GH-37719](https://github.com/godotengine/godot/pull/37719)).
+- macOS: Enable signing of DMG and ZIP'ed exports ([GH-33447](https://github.com/godotengine/godot/pull/33447)).
+- Networking: DTLS support + optional ENet encryption ([GH-35091](https://github.com/godotengine/godot/pull/35091)).
+- Object: Add `has_signal` method ([GH-33508](https://github.com/godotengine/godot/pull/33508)).
+- Particles: Fix uninitialized memory in CPUParticles and CPUParticles2D ([GH-38346](https://github.com/godotengine/godot/pull/38346), [GH-38378](https://github.com/godotengine/godot/pull/38378)).
+- Physics: Make soft body completely stiff to attachment point ([GH-36048](https://github.com/godotengine/godot/pull/36048)).
+- Skeleton: Fix IK rotation issue ([GH-37272](https://github.com/godotengine/godot/pull/37272)).
+- VR: Fix aspect ratio on HMD projection matrix ([GH-37601](https://github.com/godotengine/godot/pull/37601)).
+- Windows: Make stack size on Windows match Linux and macOS ([GH-37115](https://github.com/godotengine/godot/pull/37115)).
+- Windows: Fix certain characters being recognized as special keys when using the US international layout ([GH-38820](https://github.com/godotengine/godot/pull/38820)).
+- Windows: Add tablet driver selection (WinTab, Windows Ink) ([GH-38875](https://github.com/godotengine/godot/pull/38875)).
+- Windows: Fix quoting arguments with special characters in `OS.execute()` ([GH-38856](https://github.com/godotengine/godot/pull/38856)).
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog on GitHub ([beta 1](https://github.com/godotengine/godot/compare/3.2.1-stable...cb1366f006dfc9904083e8fc6fa23e271bc39e39), [beta 2](https://github.com/godotengine/godot/compare/cb1366f006dfc9904083e8fc6fa23e271bc39e39...d09036992ca8a979716823ac852a5bb0c9afa0ec), [beta 3](https://github.com/godotengine/godot/compare/d09036992ca8a979716823ac852a5bb0c9afa0ec...b6c551e8646bedde0f81ac3a4f61f9709e82668d)) for details.
+
+Godot 3.2.2 beta 3 is built from commit [b6c551e8646bedde0f81ac3a4f61f9709e82668d](https://github.com/godotengine/godot/commit/b6c551e8646bedde0f81ac3a4f61f9709e82668d) (May 20, 2020).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [**Classical build**](https://downloads.tuxfamily.org/godotengine/3.2.2/beta3/) (GDScript, GDNative, VisualScript).
+- [**Mono build**](https://downloads.tuxfamily.org/godotengine/3.2.2/beta3/mono/) (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.6.0.166 are included in this build.
+ * Note: Due to a technical issue, Linux x86 (32-bit) binaries with C# support are not included in this build (neither the editor build nor the export template).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.2.2 beta 3. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2.1 no longer works in 3.2.2 beta 3).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-2-beta-4.md b/collections/_article/dev-snapshot-godot-3-2-2-beta-4.md
new file mode 100644
index 0000000000..8e4c6b5126
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-2-beta-4.md
@@ -0,0 +1,138 @@
+---
+title: "Dev snapshot: Godot 3.2.2 beta 4"
+excerpt: "Yet another snapshot on the way to the feature-packed Godot 3.2.2! This beta 4 fixes some regressions and adds more bug fixes to make the upcoming release even better."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5ed/a94/760/5eda94760bb2e320902518.png
+date: 2020-06-05 18:51:28
+---
+
+Yet another snapshot on the way to the feature-packed Godot 3.2.2! This beta 4 fixes some regressions and adds more bug fixes to make the upcoming release even better.
+
+Notably, Godot 3.2.2 is going to add 5 major features:
+
+- [C# support for the iOS platform](/article/csharp-ios-signals-events), courtesy of Ignacio ([neikeq](https://github.com/neikeq)).
+- [2D batching for the GLES2 renderer](/article/gles2-renderer-optimization-2d-batching), thanks to [lawnjelly](https://github.com/lawnjelly) and Clay ([clayjohn](https://github.com/clayjohn)).
+- [Re-architecture of the Android plugin system](https://github.com/godotengine/godot/pull/36336), by Fredia ([m4gr3d](https://github.com/m4gr3d)).
+- [DTLS support and ENET integration](/article/enet-dtls-encryption), developed by Fabio ([Faless](https://github.com/Faless)).
+- [Fix for the dangling Variant bug](https://github.com/godotengine/godot/pull/38119), kudos to Pedro ([RandomShaper](https://github.com/RandomShaper)).
+ * While this is not a feature per se, it fixes a major annoyance that users have had with pointers to freed objects unexpectedly being re-assigned to new objects, causing hard-to-debug issues.
+
+We need your help to test and validate these changes before publishing 3.2.2-stable, which is why we publish this beta build now. If you find any new issue with this build, especially related to one of the listed big changes, please [report it on GitHub](https://github.com/godotengine/godot/issues), ideally including a minimal project that can be used to reproduce the issue.
+
+## How to test
+
+It should be safe to test this build directly with pre-existing projects made with Godot 3.2.x. It's of course always advised to use a version control system or backups in case you want to go back to the previous version (but testing 3.2.2-beta4 shouldn't prevent you from doing so anyway).
+
+Note: If using C#, the `.csproj` file will be converted with some bug fixes which makes it incompatible with earlier Godot 3.2 and 3.2.1. [A backup of the file](https://github.com/godotengine/godot/pull/38110) will be generated upon conversion so that you can revert to older releases if need be.
+
+#### C# support for iOS
+
+C# support for iOS should work similarly to [exporting a GDScript project for iOS](http://docs.godotengine.org/en/3.2/getting_started/workflow/export/exporting_for_ios.html). Note that the export needs to be done from a macOS system to use the included AOT compiler for iOS arm64. If you run into any issue with the export process, please also test the export of a simple GDScript project to verify if the issue relates to the new C# support or to the iOS export pipeline in general.
+
+#### GLES2 2D batching
+
+The new 2D batching is only implemented for the GLES2 renderer, so if you use GLES3 you will not be able to benefit from it. As the GLES3 renderer is being deprecated by Vulkan in Godot 4.0, we currently don't plan to port the 2D batching to it. GLES2 batching is enabled by default both in-game and in the editor. You can turn it off or configure advanced settings in the Project Settings. Please see [this dedicated issue](https://github.com/godotengine/godot/issues/38004) for more details and to share your own testing results (we're interested in all feedback, whether you gained a lot of performance, lost some or didn't notice any chance). Note that currently, only rects are batched (TileMaps, `draw_rect`, text rendering, etc.), but we plan to include more primitive types once this has been well tested.
+
+#### New Android plugin system
+
+Godot 3.2 came with a brand new Android plugin system already, and notably the possibility to build custom APKs from your project folder with any additional plugins/modules that your project needs.
+
+Fredia had done a lot of work back then to improve Juan's initial custom build system, which led him to notice many things that could be modernized to be better suited to the current Android ecosystem. Notably, he re-architectured the plugin system to leverage the [Android AAR library file format](https://developer.android.com/studio/projects/android-library#aar-contents).
+
+This new plugin system is backward-incompatible with the 3.2/3.2.1 system, but both systems are kept functional in future releases of the 3.2.x branch. Since we previously did not version our Android plugin systems, this new one is now labelled `v1`, and is the starting point for the modern Godot Android ecosystem.
+
+See [this Pull Request](https://github.com/godotengine/godot/pull/36336) and [the updated documentation](https://docs.godotengine.org/en/3.2/tutorials/plugins/android/android_plugin.html) for details. Fredia has already started helping some plugin authors to update theirs to the new `v1` system, feel free to ask if you need help too.
+
+#### DTLS support and ENet integration
+
+[Fabio's work on DTLS support](/article/enet-dtls-encryption) was nearly done by the time 3.2 was released, but came too late to be thoroughly tested. Testing has happened since then both in the `master` branch and in the pending `3.2` Pull Request, so we're now confident to include it in this beta build for further testing.
+
+See the [dedicated devblog](/article/enet-dtls-encryption) for usage examples.
+
+#### Fix for the dangling Variant bug
+
+If you were running into this bug, it would typically be in situations where you'd check `is_instance_valid()` on what you expect to be a freed instance (which should give `False`), and it would actually return `True` and lead you to access a method or a property of a different object (causing an error if the object's class does not include this method or property).
+
+The fix made in the 3.2 is only done on **debug** builds for performance reasons, so make sure to fix any error reported by the editor or debug builds before shipping a release build to your players.
+In the upcoming Godot 4.0, this bug was fixed with a more comprehensive approach which prevents dangling Variant pointers in both release and debug builds.
+
+## Other changes
+
+Apart from those major features, there are more than 600 cherry-picks ([beta 1](https://github.com/godotengine/godot/compare/3.2.1-stable...cb1366f006dfc9904083e8fc6fa23e271bc39e39), [beta 2](https://github.com/godotengine/godot/compare/cb1366f006dfc9904083e8fc6fa23e271bc39e39...d09036992ca8a979716823ac852a5bb0c9afa0ec), [beta 3](https://github.com/godotengine/godot/compare/d09036992ca8a979716823ac852a5bb0c9afa0ec...b6c551e8646bedde0f81ac3a4f61f9709e82668d), [beta 4](https://github.com/godotengine/godot/compare/b6c551e8646bedde0f81ac3a4f61f9709e82668d...aeb5513babbb1840c4c210bd534a2c2bf3b4400f)) for bug fixes and enhancements which have been merged since Godot 3.2.1. Here are some highlights:
+
+- 2D: Expose the `cell_size` affecting `VisibilityNotifier2D` precision ([GH-38286](https://github.com/godotengine/godot/pull/38286)).
+- 2D: Add `MODULATE` builtin to canvas item shaders ([GH-38432](https://github.com/godotengine/godot/pull/38432)).
+- 2D: Implement skew in `Node2D` ([GH-38394](https://github.com/godotengine/godot/pull/38394)).
+- Android: Re-architecture of the Godot Android plugin ([GH-36336](https://github.com/godotengine/godot/pull/36336)).
+- Android: Add signal support to Godot Android plugins ([GH-37305](https://github.com/godotengine/godot/pull/37305)).
+- Android: Fix `LineEdit` virtual keyboard issues ([GH-38309](https://github.com/godotengine/godot/pull/38309)).
+- Android: Reimplementation of the `GodotPayment` plugin using the Google Play Billing library ([GH-39034](https://github.com/godotengine/godot/pull/39034)).
+ * Note: Breaks compatibility slightly, but the Android plugin re-architecture already did so. See [GH-39034](https://github.com/godotengine/godot/pull/39034) for usage instructions, docs will be updated before the 3.2.2 release.
+- AStar: Implements estimate/compute_cost for AStar2D ([GH-37039](https://github.com/godotengine/godot/pull/37039)).
+- Audio: Fix volume interpolation in positional audio nodes ([GH-37279](https://github.com/godotengine/godot/pull/37279)).
+- C#: Add iOS support ([GH-36979](https://github.com/godotengine/godot/pull/36979)).
+- C#: Sync csproj when files are changed from the FileSystem dock ([GH-37149](https://github.com/godotengine/godot/pull/37149)).
+- C#: Replace uses of old Configuration and update old csprojs ([GH-36865](https://github.com/godotengine/godot/pull/36865)).
+- C#: Allow debugging exported games ([GH-38115](https://github.com/godotengine/godot/pull/38115)).
+- C#: Revert marshalling of IDictionary/IEnumerable implementing types ([GH-38141](https://github.com/godotengine/godot/pull/38141)).
+- C#: Fix inherited scene not inheriting parent's exported properties ([GH-38638](https://github.com/godotengine/godot/pull/38638)).
+- C#: Fix exported values not updated in the remote inspector ([GH-38940](https://github.com/godotengine/godot/pull/38940).
+- Core: Ensure COWData does not always reallocate on resize ([GH-37373](https://github.com/godotengine/godot/pull/37373)).
+- Core: Fix dangling Variants ([GH-38119](https://github.com/godotengine/godot/pull/38119)).
+- Core: Fixed false positives in the culling system ([GH-37863](https://github.com/godotengine/godot/pull/37863)).
+- Core: Fix leaks and crashes in `OAHashMap` ([GH-38828](https://github.com/godotengine/godot/pull/38828)).
+- CSG: Various bug fixes ([GH-38011](https://github.com/godotengine/godot/pull/38011)).
+- Editor: Add rotation widget to 3D viewport ([GH-33098](https://github.com/godotengine/godot/pull/33098)).
+- Editor: Add editor freelook navigation scheme settings ([GH-37989](https://github.com/godotengine/godot/pull/37989)).
+- Editor: Improved go-to definition (Ctrl + Click) in script editor ([GH-37293](https://github.com/godotengine/godot/pull/37293)).
+- Files: Improve UX of drive letters ([GH-36639](https://github.com/godotengine/godot/pull/36639)).
+- GDNative: Fix Variant size on 32-bit platforms ([GH-38799](https://github.com/godotengine/godot/pull/38799)).
+- GDScript: Fix leaked objects when game ends with yields in progress ([GH-38288](https://github.com/godotengine/godot/pull/38288)).
+- GDScript: Fix object leaks caused by unfulfilled yields ([GH-38482](https://github.com/godotengine/godot/pull/38482)).
+- GDScript: Various bugs fixed in the parser.
+- GLES2: Add 2D batch rendering across items ([GH-37349](https://github.com/godotengine/godot/pull/37349)).
+- GLES2: Avoid unnecessary material rebind when using skeleton ([GH-37667](https://github.com/godotengine/godot/pull/37667)).
+- GLES3: Add Nvidia `draw_rect` flickering workaround ([GH-38517](https://github.com/godotengine/godot/pull/38517)).
+- GLES2/GLES3: Add support for OpenGL external textures ([GH-36342](https://github.com/godotengine/godot/pull/36342)).
+- GLES2/GLES3: Reset texture flags after radiance map generation ([GH-37815](https://github.com/godotengine/godot/pull/37815)).
+- HTML5: Implement audio buffer size calculation, should fix iOS Safari audio issues ([GH-38816](https://github.com/godotengine/godot/pull/38816)).
+- HTML5: Switch key detection from `keyCode` to `code` ([GH-39298](https://github.com/godotengine/godot/pull/39298)).
+- Import: Fix changing the import type of multiple files at once (regression fix) ([GH-37610](https://github.com/godotengine/godot/pull/37610)).
+- Input: Various fixes for touch pen input ([GH-37756](https://github.com/godotengine/godot/pull/37756), [GH-38439](https://github.com/godotengine/godot/pull/38439), [GH-38484](https://github.com/godotengine/godot/pull/38484)).
+- Input: Fix joypad GUID conversion to match new SDL format on OSX and Windows ([GH-39060](https://github.com/godotengine/godot/pull/39060), [GH-39172](https://github.com/godotengine/godot/pull/39172))
+- Language Server: Switch the GDScript LSP from WebSocket to TCP, compatible with more external editors ([GH-35864](https://github.com/godotengine/godot/pull/35864)).
+- macOS: Ignore process serial number argument passed by macOS Gatekeeper ([GH-37719](https://github.com/godotengine/godot/pull/37719)).
+- macOS: Enable signing of DMG and ZIP'ed exports ([GH-33447](https://github.com/godotengine/godot/pull/33447)).
+- Networking: DTLS support + optional ENet encryption ([GH-35091](https://github.com/godotengine/godot/pull/35091)).
+- Object: Add `has_signal` method ([GH-33508](https://github.com/godotengine/godot/pull/33508)).
+- Particles: Fix uninitialized memory in CPUParticles and CPUParticles2D ([GH-38346](https://github.com/godotengine/godot/pull/38346), [GH-38378](https://github.com/godotengine/godot/pull/38378)).
+- Physics: Make soft body completely stiff to attachment point ([GH-36048](https://github.com/godotengine/godot/pull/36048)).
+- RichTextLabel: Fix alignment bug with `[center]` and `[right]` tags ([GH-39164](https://github.com/godotengine/godot/pull/39164)).
+- Skeleton: Fix IK rotation issue ([GH-37272](https://github.com/godotengine/godot/pull/37272)).
+- VR: Fix aspect ratio on HMD projection matrix ([GH-37601](https://github.com/godotengine/godot/pull/37601)).
+- Windows: Make stack size on Windows match Linux and macOS ([GH-37115](https://github.com/godotengine/godot/pull/37115)).
+- Windows: Fix certain characters being recognized as special keys when using the US international layout ([GH-38820](https://github.com/godotengine/godot/pull/38820)).
+- Windows: Add tablet driver selection (WinTab, Windows Ink) ([GH-38875](https://github.com/godotengine/godot/pull/38875)).
+- Windows: Fix quoting arguments with special characters in `OS.execute()` ([GH-38856](https://github.com/godotengine/godot/pull/38856)).
+- Windows: Do not probe joypads if DirectInput cannot be initializer ([GH-39143](https://github.com/godotengine/godot/pull/39143)).
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog on GitHub ([beta 1](https://github.com/godotengine/godot/compare/3.2.1-stable...cb1366f006dfc9904083e8fc6fa23e271bc39e39), [beta 2](https://github.com/godotengine/godot/compare/cb1366f006dfc9904083e8fc6fa23e271bc39e39...d09036992ca8a979716823ac852a5bb0c9afa0ec), [beta 3](https://github.com/godotengine/godot/compare/d09036992ca8a979716823ac852a5bb0c9afa0ec...b6c551e8646bedde0f81ac3a4f61f9709e82668d), [beta 4](https://github.com/godotengine/godot/compare/b6c551e8646bedde0f81ac3a4f61f9709e82668d...aeb5513babbb1840c4c210bd534a2c2bf3b4400f)) for details.
+
+Godot 3.2.2 beta 4 is built from commit [aeb5513babbb1840c4c210bd534a2c2bf3b4400f](https://github.com/godotengine/godot/commit/aeb5513babbb1840c4c210bd534a2c2bf3b4400f) (June 5, 2020).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [**Classical build**](https://downloads.tuxfamily.org/godotengine/3.2.2/beta4/) (GDScript, GDNative, VisualScript).
+- [**Mono build**](https://downloads.tuxfamily.org/godotengine/3.2.2/beta4/mono/) (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.6.0.166 are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.2.2 beta 4. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2.1 no longer works in 3.2.2 beta 4).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-3-beta-1.md b/collections/_article/dev-snapshot-godot-3-2-3-beta-1.md
new file mode 100644
index 0000000000..255524a4cb
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-3-beta-1.md
@@ -0,0 +1,73 @@
+---
+title: "Dev snapshot: Godot 3.2.3 beta 1"
+excerpt: "Godot 3.2.2 was released on June 26 with over 3 months' worth of development, including many bugfixes and a handful of features. Some regressions were noticed after the release though, so we decided that Godot 3.2.3 would focus mainly on fixing those new bugs to ensure that all Godot users can have the most stable experience possible."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5f1/564/d56/5f1564d569884631328374.jpg
+date: 2020-07-20 09:23:47
+---
+
+Godot 3.2.2 was [released on June 26](/article/maintenance-release-godot-3-2-2) with over 3 months' worth of development, including many bugfixes and a handful of features. Some regressions were noticed after the release though, so we decided that Godot 3.2.3 would focus mainly on fixing those new bugs to ensure that all Godot users can have the most stable experience possible.
+
+## Changes
+
+- C#: Add Visual Studio support ([GH-39784](https://github.com/godotengine/godot/pull/39784)).
+- C#: Fix crash when pass null in print array in `GD.Print` ([GH-40078](https://github.com/godotengine/godot/pull/40078)).
+- Core: Fix debugger error when Dictionary key is a freed Object ([GH-39906](https://github.com/godotengine/godot/pull/39906)) [regression fix].
+- Core: Fix leaked ObjectRCs on object Variant reassignment ([GH-39903](https://github.com/godotengine/godot/pull/39903)) [regression fix].
+- GLES2: Fixed mesh data access errors in GLES2 ([GH-40235](https://github.com/godotengine/godot/pull/40235)).
+- GLES2: Batching - Fix `FORCE_REPEAT` not being set properly on npot hardware ([GH-40410](https://github.com/godotengine/godot/pull/40410)).
+- GLES3: Force depth prepass when using alpha prepass ([GH-39865](https://github.com/godotengine/godot/pull/39865)).
+- HTML5: Improvements and bugfixes backported from the `master` branch ([GH-39604](https://github.com/godotengine/godot/pull/39604)).
+ * Note: This PR adds threads support, but as this support is still [disabled in many browsers](https://caniuse.com/#feat=sharedarraybuffer) due to security concerns, the option is not enabled by default. Build HTML5 templates with `threads_enabled=yes` to test it.
+- HTML5: More fixes, audio fallback, fixed FPS ([GH-40052](https://github.com/godotengine/godot/pull/40052)).
+- IK: Fixed SkeletonIK not working with scaled skeletons ([GH-39803](https://github.com/godotengine/godot/pull/39803)).
+- Import: Fix custom tracks causing issues on reimport ([GH-39968](https://github.com/godotengine/godot/pull/39968)) [regression fix].
+- Import: Fix upstream stb_vorbis regression causing crashes with some OGG files ([GH-40174](https://github.com/godotengine/godot/pull/40174)) [regression fix].
+- Input: Support SDL2 half axes and inverted axes mappings ([GH-38724](https://github.com/godotengine/godot/pull/38724)).
+- iOS: Add support of iOS's dynamic libraries to GDNative ([GH-39996](https://github.com/godotengine/godot/pull/39996)).
+- macOS: Add support for the Apple Silicon (ARM64) build target ([GH-39943](https://github.com/godotengine/godot/pull/39943)).
+ * Note: ARM64 binaries are not included in macOS editor or template builds yet. It's going to take some time before our [dependencies and toolchains](https://github.com/godotengine/godot-build-scripts/pull/10) are updated to support it.
+- macOS: Set correct external file attributes, and creation time ([GH-39977](https://github.com/godotengine/godot/pull/39977)) [regression fix].
+- macOS: Implement confined mouse mode ([GH-40054](https://github.com/godotengine/godot/pull/40054)).
+- macOS: Implement seamless display scaling ([GH-40201](https://github.com/godotengine/godot/pull/40201)).
+- Networking: Fix `UDPServer` and `DTLSServer` on Windows compatibility ([GH-40374](https://github.com/godotengine/godot/pull/40374)).
+- PathFollow3D: Fix repeated updates of PathFollow3D Transform ([GH-40197](https://github.com/godotengine/godot/pull/40197)).
+- Physics: Better damping implementation for Bullet rigid bodies ([GH-39084](https://github.com/godotengine/godot/pull/39084)).
+- Physics: Trigger broadphase update when changing collision layer/mask ([GH-39895](https://github.com/godotengine/godot/pull/39895)).
+- Physics: Fix laxist collision detection on one way shapes ([GH-39880](https://github.com/godotengine/godot/pull/39880)).
+- Physics: Move Bullet physics query flush from Bullet space pre-tick callback to Bullet physics `flush_queries()` ([GH-40184](https://github.com/godotengine/godot/pull/40184)).
+- Physics: Allow Area2D and 3D mouse events without collision layer ([GH-40193](https://github.com/godotengine/godot/pull/40193)).
+- Physics: Properly pass safe margin on initialization (fixes jitter in GodotPhysics backend) ([GH-40377](https://github.com/godotengine/godot/pull/40377)).
+- Project Settings: Enable file logging by default on desktops to help with troubleshooting ([GH-40121](https://github.com/godotengine/godot/pull/40121)).
+- Project Settings: Fix overriding compression related settings ([GH-40340](https://github.com/godotengine/godot/pull/40340)).
+- Rendering: Fixed images in black margins ([GH-37475](https://github.com/godotengine/godot/pull/37475)).
+- RichTextLabel: Fix RichTextLabel fill alignment regression ([GH-40081](https://github.com/godotengine/godot/pull/40081)) [regression fix].
+- Sprite3D: Use mesh instead of immediate for drawing Sprite3D ([GH-39867](https://github.com/godotengine/godot/pull/39867)).
+- Thirdparty library updates (mbedtls 2.16.7, wslay 1.1.1).
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the [full changelog on GitHub](https://github.com/godotengine/godot/compare/3.2.2-stable...89f57ae12244f3269c9e3fe4684e16ec1fd2c989) for details.
+
+This release is built from commit [89f57ae12244f3269c9e3fe4684e16ec1fd2c989](https://github.com/godotengine/godot/commit/89f57ae12244f3269c9e3fe4684e16ec1fd2c989).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.2.3/beta1/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2.3/beta1/mono/) (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.6.0.166 are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.2.3 beta 1. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2.1 or 3.2.2 no longer works in 3.2.3 beta 1).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-4-beta-1.md b/collections/_article/dev-snapshot-godot-3-2-4-beta-1.md
new file mode 100644
index 0000000000..d344fac189
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-4-beta-1.md
@@ -0,0 +1,92 @@
+---
+title: "Dev snapshot: Godot 3.2.4 beta 1"
+excerpt: "Godot 3.2.3 was released a month ago and the reception was great! It focused mostly on fixing bugs and therefore we were somewhat conservative on what could be merged before the release.
+Now that we're confident that 3.2.3 works well, we can take some time to add new features to the `3.2` branch while you wait for Godot 4.0 :)"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5f9/05d/220/5f905d22085b8748176138.jpg
+date: 2020-10-21 16:09:10
+---
+
+[Godot 3.2.3 was released a month ago](/article/maintenance-release-godot-3-2-3) and the reception was great! It focused mostly on fixing bugs and therefore we were somewhat conservative on what could be merged before the release.
+
+Now that we're confident that 3.2.3 works well, we can take some time to add new features to the `3.2` branch while you wait for Godot 4.0 :)
+
+This first beta build already includes a number of them which have been worked on by core contributors, with notable mentions to:
+
+- Android App Bundle and subview embedding support.
+- 2D batching for GLES3 (remember that we added it for GLES2 in 3.2.2), and improvements to GLES2's batching.
+- A new software skinning for MeshInstance to replace the slow GPU skinning on devices that don't support the fast GPU skinning (especially mobile).
+
+And this is just a first beta, there's more in the works that will be included in future beta builds.
+
+## Changes
+
+The main new features in need of testing are highlighted in bold. Refer to the linked pull requests for details.
+
+- **Android: Add support for the Android App Bundle format ([GH-42185](https://github.com/godotengine/godot/pull/42185)).**
+- Android: Add support for emedded Godot as a subview in Android applications ([GH-42186](https://github.com/godotengine/godot/pull/42186)).
+- Android: Fix splash screen loading ([GH-42389](https://github.com/godotengine/godot/pull/42389)).
+- C#: Official builds now use Mono 6.12.0.102.
+- C#: Re-work solution build output panel ([GH-42547](https://github.com/godotengine/godot/pull/42547)).
+- **Core: Optimize octree and fix leak ([GH-41123](https://github.com/godotengine/godot/pull/41123)).**
+- Core: Disable decayment of freed Objects to null in debug builds ([GH-41866](https://github.com/godotengine/godot/pull/41866)).
+- CSG: Various bug fixes.
+- Editor: Fixed renaming/moving of nodes with exported NodePaths in the editor ([GH-42314](https://github.com/godotengine/godot/pull/42314)).
+- GDScript: Fix leaks due to cyclic references ([GH-41931](https://github.com/godotengine/godot/pull/41931)).
+- **GLES2/GLES3: Fix buffer orphaning on desktop ([GH-42734](https://github.com/godotengine/godot/pull/42734)).**
+- GLES2/GLES3: Fix flipped normal mapping in 2D with batching and nvidia workaround ([GH-41323](https://github.com/godotengine/godot/pull/41323), [GH-41254](https://github.com/godotengine/godot/pull/41254)).
+- **GLES2: Various improvements to 2D batching ([GH-42119](https://github.com/godotengine/godot/pull/42119)).**
+ * See [GH-42899](https://github.com/godotengine/godot/issues/42899) for instructions on how to test the improved 2D batching and report your results.
+- GLES2: Fix glow on devices with only 8 texture slots ([GH-42446](https://github.com/godotengine/godot/pull/42446)).
+- GLES2: Use separate texture unit for `light_texture` ([GH-42538](https://github.com/godotengine/godot/pull/42538)).
+- **GLES3: Add 2D batching support, unified architecture with GLES2 ([GH-42119](https://github.com/godotengine/godot/pull/42119)).**
+ * See [GH-42899](https://github.com/godotengine/godot/issues/42899) for instructions on how to test the new GLES3 2D batching and report your results.
+- GLES3: Fixes to Screen Space Reflections ([GH-38954](https://github.com/godotengine/godot/pull/38954), [GH-41892](https://github.com/godotengine/godot/pull/41892)).
+- GLES3: Ensure that color values in Reinhard tonemapping are positive ([GH-42056](https://github.com/godotengine/godot/pull/42056)).
+- glTF: Use vertex colors by default ([GH-41007](https://github.com/godotengine/godot/pull/41007)).
+- glTF: Fix parsing base64-encoded buffer and image data ([GH-42501](https://github.com/godotengine/godot/pull/42501), [GH-42504](https://github.com/godotengine/godot/pull/42504)).
+- HTML5: Synchronous main, better persistence, handlers fixes, optional full screen ([GH-42266](https://github.com/godotengine/godot/pull/42266)).
+- HTML5: Move audio processing to thread when threads are enabled ([GH-42510](https://github.com/godotengine/godot/pull/42510)).
+- HTML5: Merged code for web editor prototype ([GH-42790](https://github.com/godotengine/godot/pull/42790)).
+- Input: Add mouse event pass-through support for the game window ([GH-40205](https://github.com/godotengine/godot/pull/40205)).
+- iOS: Fix multiple issues with PVRTC import, disable ETC1 ([GH-38076](https://github.com/godotengine/godot/pull/38076)).
+- iOS: Add touch delay value to project settings ([GH-42457](https://github.com/godotengine/godot/pull/42457)).
+- Linux: Fix issues related to delay when processing events ([GH-42341](https://github.com/godotengine/godot/pull/42341)).
+- macOS: Fix mouse position in captured mode ([GH-42328](https://github.com/godotengine/godot/pull/42328)).
+- macOS: Fix `get_screen_dpi` for non-fractional display scales ([GH-42478](https://github.com/godotengine/godot/pull/42478)).
+- **MeshInstance: Add option for software skinning ([GH-40313](https://github.com/godotengine/godot/pull/40313)).**
+- Physics: Various bug fixes for 2D and 3D.
+- Rendering: Add fast approximate antialiasing (FXAA) to Viewport ([GH-42006](https://github.com/godotengine/godot/pull/42006)).
+- Rendering: Disable lights for objects with baked lighting ([GH-41629](https://github.com/godotengine/godot/pull/41629)).
+- Sprite3D: Use full float UV for better precision ([GH-42537](https://github.com/godotengine/godot/pull/42537)) [regression fix].
+- TextEdit/LineEdit: Support Ctrl+Alt as alias for Alt Gr on Windows ([GH-37769](https://github.com/godotengine/godot/pull/37769)).
+- Windows: Fix debugger not getting focused on break on Windows ([GH-40555](https://github.com/godotengine/godot/pull/40555)).
+- YSort: Make rendering order more deterministic ([GH-42375](https://github.com/godotengine/godot/pull/42375)).
+- Thirdparty library updates (tinyexr 1.0.0, zstd 1.4.5).
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog on GitHub ([part 1](https://github.com/godotengine/godot/compare/3.2.3-stable...01f23480e1eb5b82fd276a58fd56654d3db39d49), [part 2](https://github.com/godotengine/godot/compare/01f23480e1eb5b82fd276a58fd56654d3db39d49...2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f)).
+
+This release is built from commit [2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f](https://github.com/godotengine/godot/commit/2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.2.4/beta1/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2.4/beta1/mono/) (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.102 are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.2.4 beta 1. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2.3 or earlier no longer works in 3.2.4 beta 1).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-4-beta-2.md b/collections/_article/dev-snapshot-godot-3-2-4-beta-2.md
new file mode 100644
index 0000000000..ea6c08e4e2
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-4-beta-2.md
@@ -0,0 +1,110 @@
+---
+title: "Dev snapshot: Godot 3.2.4 beta 2"
+excerpt: "While development keeps going at full speed towards Godot 4.0, a lot of work is also being done on the `3.2` branch for the upcoming Godot 3.2.4: better FBX, 2D transform snapping, configurable amount of lights per object, and more!
+And of course, lots of bug and regression fixes since the previous beta build."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5fb/540/f13/5fb540f133068076528179.jpg
+date: 2020-11-18 15:43:17
+---
+
+While development keeps going at full speed towards Godot 4.0 (see recent devblogs on [GDScript typed instructions](/article/gdscript-progress-report-typed-instructions) and [Complex Text Layout](/article/complex-text-layouts-progress-report-2)), a lot of work is also being done on the `3.2` branch for the upcoming Godot 3.2.4.
+
+Adding to the [first beta version](/article/dev-snapshot-godot-3-2-4-beta-1) from last month ago, we now have even more great features coming in 3.2.4:
+
+- Android App Bundle and subview embedding support.
+- 2D batching for GLES3 (remember that we added it for GLES2 in 3.2.2), and improvements to GLES2's batching.
+- A new software skinning for MeshInstance to replace the slow GPU skinning on devices that don't support the fast GPU skinning (especially mobile).
+- [Rewritten and greatly improved FBX importer](/article/fbx-importer-rewritten-for-godot-3-2-4) (new in 3.2.4 beta 2).
+- [Improved Web editor prototype](/article/godot-web-progress-report-3) and [AudioWorklet support for multithreaded HTML5 builds](https://github.com/godotengine/godot/pull/43454) (new in 3.2.4 beta 2).
+- [New option to snapping 2D transforms to whole coordinates](https://github.com/godotengine/godot/pull/43554), helps prevent jitter on pixel art camera motions (new in 3.2.4 beta 2).
+- [Configurable amount of lights per object](https://github.com/godotengine/godot/pull/43606), now defaulting to 32 instead of 8 (new in 3.2.4 beta 2).
+
+And there's even more in the works that will be included in future beta builds.
+
+## Changes
+
+The main new features in need of testing are highlighted in bold. Refer to the linked pull requests for details.
+
+- **Android: Add support for the Android App Bundle format ([GH-42185](https://github.com/godotengine/godot/pull/42185)).**
+- Android: Add support for emedded Godot as a subview in Android applications ([GH-42186](https://github.com/godotengine/godot/pull/42186)).
+- Android: Fix splash screen loading ([GH-42389](https://github.com/godotengine/godot/pull/42389)).
+- Android: Add notch cutout support for Android P and later ([GH-43104](https://github.com/godotengine/godot/pull/43104)).
+- Android: Add support for mouse events ([GH-42360](https://github.com/godotengine/godot/pull/42360)).
+- Android: Add support for keyboard modifiers and arrow keys ([GH-40398](https://github.com/godotengine/godot/pull/40398)).
+- Android: Fix screen orientation settings and API ([GH-43022](https://github.com/godotengine/godot/pull/43022), [GH-43248](https://github.com/godotengine/godot/pull/43248)), [GH-43511](https://github.com/godotengine/godot/pull/43511)).
+- C#: Official builds now use Mono 6.12.0.111.
+- C#: Re-work solution build output panel ([GH-42547](https://github.com/godotengine/godot/pull/42547)).
+- **Core: Optimize octree and fix leak ([GH-41123](https://github.com/godotengine/godot/pull/41123)).**
+- Core: Disable decayment of freed Objects to null in debug builds ([GH-41866](https://github.com/godotengine/godot/pull/41866)).
+- Core: More fixes to Variant and Reference pointers ([GH-43049](https://github.com/godotengine/godot/pull/43049)).
+- Core: Add `append_array` method to `Array` class ([GH-43398](https://github.com/godotengine/godot/pull/43398)).
+- CSG: Various bug fixes.
+- Editor: Fixed renaming/moving of nodes with exported NodePaths in the editor ([GH-42314](https://github.com/godotengine/godot/pull/42314)).
+- Editor: Improve 3D rotation gizmo ([GH-43016](https://github.com/godotengine/godot/pull/43016)).
+- Editor: Add a dynamic infinite grid to the 3D editor ([GH-43206](https://github.com/godotengine/godot/pull/43206)).
+- Editor: Use 75% editor scale on small displays automatically ([GH-43611](https://github.com/godotengine/godot/pull/43611)).
+- Editor: Require Ctrl for switching between editors, bind F2 to Rename Node ([GH-38201](https://github.com/godotengine/godot/pull/38201)).
+- **FBX: Rewritten and improved importer** ([GH-42941](https://github.com/godotengine/godot/pull/42941)).
+- GDScript: Fix leaks due to cyclic references ([GH-41931](https://github.com/godotengine/godot/pull/41931)).
+- **GLES2/GLES3: Fix buffer orphaning on desktop ([GH-42734](https://github.com/godotengine/godot/pull/42734)).**
+- GLES2/GLES3: Fix flipped normal mapping in 2D with batching and nvidia workaround ([GH-41323](https://github.com/godotengine/godot/pull/41323), [GH-41254](https://github.com/godotengine/godot/pull/41254)).
+- **GLES2: Various improvements to 2D batching ([GH-42119](https://github.com/godotengine/godot/pull/42119)).**
+ * See [GH-42899](https://github.com/godotengine/godot/issues/42899) for instructions on how to test the improved 2D batching and report your results.
+- GLES2: Fix glow on devices with only 8 texture slots ([GH-42446](https://github.com/godotengine/godot/pull/42446)).
+- GLES2: Use separate texture unit for `light_texture` ([GH-42538](https://github.com/godotengine/godot/pull/42538)).
+- **GLES3: Add 2D batching support, unified architecture with GLES2 ([GH-42119](https://github.com/godotengine/godot/pull/42119)).**
+ * See [GH-42899](https://github.com/godotengine/godot/issues/42899) for instructions on how to test the new GLES3 2D batching and report your results.
+- GLES3: Fixes to Screen Space Reflections ([GH-38954](https://github.com/godotengine/godot/pull/38954), [GH-41892](https://github.com/godotengine/godot/pull/41892)).
+- GLES3: Ensure that color values in Reinhard tonemapping are positive ([GH-42056](https://github.com/godotengine/godot/pull/42056)).
+- glTF: Use vertex colors by default ([GH-41007](https://github.com/godotengine/godot/pull/41007)).
+- glTF: Fix parsing base64-encoded buffer and image data ([GH-42501](https://github.com/godotengine/godot/pull/42501), [GH-42504](https://github.com/godotengine/godot/pull/42504)).
+- HTML5: Synchronous main, better persistence, handlers fixes, optional full screen ([GH-42266](https://github.com/godotengine/godot/pull/42266)).
+- HTML5: Move audio processing to thread when threads are enabled ([GH-42510](https://github.com/godotengine/godot/pull/42510)).
+- HTML5: Merged code for web editor prototype ([GH-42790](https://github.com/godotengine/godot/pull/42790)).
+- **HTML5: Add AudioWorklet support in multithreaded builds** ([GH-43454](https://github.com/godotengine/godot/pull/43454)).
+- Input: Add mouse event pass-through support for the game window ([GH-40205](https://github.com/godotengine/godot/pull/40205)).
+- Input: Add support for buttons and D-pads mapped to half axes ([GH-42800](https://github.com/godotengine/godot/pull/42800)).
+- iOS: Fix multiple issues with PVRTC import, disable ETC1 ([GH-38076](https://github.com/godotengine/godot/pull/38076)).
+- iOS: Add touch delay value to project settings ([GH-42457](https://github.com/godotengine/godot/pull/42457)).
+- Linux: Fix issues related to delay when processing events ([GH-42341](https://github.com/godotengine/godot/pull/42341)).
+- Linux: Implement `--no-window` mode ([GH-42276](https://github.com/godotengine/godot/pull/42276)).
+- macOS: Fix mouse position in captured mode ([GH-42328](https://github.com/godotengine/godot/pull/42328)).
+- macOS: Fix `get_screen_dpi` for non-fractional display scales ([GH-42478](https://github.com/godotengine/godot/pull/42478)).
+- macOS: Implement `--no-window` mode ([GH-42276](https://github.com/godotengine/godot/pull/42276)).
+- **MeshInstance: Add option for software skinning ([GH-40313](https://github.com/godotengine/godot/pull/40313)).**
+- Physics: Various bug fixes for 2D and 3D.
+- Rendering: Add fast approximate antialiasing (FXAA) to Viewport ([GH-42006](https://github.com/godotengine/godot/pull/42006)).
+- Rendering: Disable lights for objects with baked lighting ([GH-41629](https://github.com/godotengine/godot/pull/41629)).
+- **Rendering: Add option for snapping 2D transforms to whole coordinates, for pixel art motion** ([GH-43554](https://github.com/godotengine/godot/pull/43554)).
+- Sprite3D: Use full float UV for better precision ([GH-42537](https://github.com/godotengine/godot/pull/42537)) [regression fix].
+- TextEdit/LineEdit: Support Ctrl+Alt as alias for Alt Gr on Windows ([GH-37769](https://github.com/godotengine/godot/pull/37769)).
+- Windows: Fix debugger not getting focused on break on Windows ([GH-40555](https://github.com/godotengine/godot/pull/40555)).
+- YSort: Make rendering order more deterministic ([GH-42375](https://github.com/godotengine/godot/pull/42375)).
+- Thirdparty library updates (freetype 2.10.4, tinyexr 1.0.0, zstd 1.4.5).
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog on GitHub ([part 1](https://github.com/godotengine/godot/compare/3.2.3-stable...01f23480e1eb5b82fd276a58fd56654d3db39d49), [part 2](https://github.com/godotengine/godot/compare/01f23480e1eb5b82fd276a58fd56654d3db39d49...2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f), [part 3](https://github.com/godotengine/godot/compare/2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f...04103db6bd5694b81ab0a1717fc5fdde6cb5dd4f)).
+
+This release is built from commit [04103db6bd5694b81ab0a1717fc5fdde6cb5dd4f](https://github.com/godotengine/godot/commit/04103db6bd5694b81ab0a1717fc5fdde6cb5dd4f).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.2.4/beta2/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2.4/beta2/mono/) (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.111 are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.2.4 beta 2. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2.3 or earlier no longer works in 3.2.4 beta 2).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-4-beta-3.md b/collections/_article/dev-snapshot-godot-3-2-4-beta-3.md
new file mode 100644
index 0000000000..157e1f330b
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-4-beta-3.md
@@ -0,0 +1,119 @@
+---
+title: "Dev snapshot: Godot 3.2.4 beta 3"
+excerpt: "This third beta build for the upcoming Godot 3.2.4 fixes some regressions from previous snapshots, and adds a native ARM64 build for the recently released Apple M1 chip."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5fc/0f4/eac/5fc0f4eac186e790380821.jpg
+date: 2020-11-27 12:46:50
+---
+
+While development keeps going at full speed towards Godot 4.0 (see recent devblogs on [GDScript typed instructions](/article/gdscript-progress-report-typed-instructions) and [Complex Text Layout](/article/complex-text-layouts-progress-report-2)), a lot of work is also being done on the `3.2` branch for the upcoming Godot 3.2.4.
+
+This new **beta 3** build comes shortly after [last week's beta 2](/article/dev-snapshot-godot-3-2-4-beta-2) to fix some of the regressions and bugs reported against that release.
+
+The only big change is that the classical build for macOS is now a universal binary, with **both `x86_64` and `arm64`** architectures included (to support the new ARM-based Apple M1 chip natively).
+This update also re-adds UWP templates which we missing in beta 1 and beta 2 due to a temporary buildsystem issue.
+
+## Highlights
+
+The main changes coming in Godot 3.2.4 and included in this beta are:
+
+- [Android App Bundle](https://github.com/godotengine/godot-proposals/issues/342) and [subview embedding](https://github.com/godotengine/godot-proposals/issues/1064) support.
+- [2D batching for GLES3](https://github.com/godotengine/godot/pull/42119) (it was implemented for GLES2 in 3.2.2), and improvements to GLES2's batching.
+- [A new software skinning for MeshInstance](https://github.com/godotengine/godot/pull/40313) to replace the slow GPU skinning on devices that don't support the fast GPU skinning (especially mobile).
+- [Rewritten and greatly improved FBX importer](/article/fbx-importer-rewritten-for-godot-3-2-4).
+- [Improved Web editor prototype](/article/godot-web-progress-report-3) and [AudioWorklet support for multithreaded HTML5 builds](https://github.com/godotengine/godot/pull/43454).
+- [New option to snap 2D transforms to whole coordinates](https://github.com/godotengine/godot/pull/43554), helps prevent jitter on pixel art camera motions.
+- [Configurable amount of lights per object](https://github.com/godotengine/godot/pull/43606), now defaulting to 32 instead of 8.
+- [macOS ARM64 support](https://github.com/godotengine/godot/pull/39788) in official binaries for Apple M1 chip (new in 3.2.4 beta 3, only classical build for now).
+
+And there's even more in the works that will be included in future beta builds.
+
+## Changes
+
+The main new features in need of testing are highlighted in bold. Refer to the linked pull requests for details.
+
+- **Android: Add support for the Android App Bundle format ([GH-42185](https://github.com/godotengine/godot/pull/42185)).**
+- Android: Add support for emedded Godot as a subview in Android applications ([GH-42186](https://github.com/godotengine/godot/pull/42186)).
+- Android: Fix splash screen loading ([GH-42389](https://github.com/godotengine/godot/pull/42389)).
+- Android: Add notch cutout support for Android P and later ([GH-43104](https://github.com/godotengine/godot/pull/43104)).
+- Android: Add support for mouse events ([GH-42360](https://github.com/godotengine/godot/pull/42360)).
+- Android: Add support for keyboard modifiers and arrow keys ([GH-40398](https://github.com/godotengine/godot/pull/40398)).
+- Android: Fix screen orientation settings and API ([GH-43022](https://github.com/godotengine/godot/pull/43022), [GH-43248](https://github.com/godotengine/godot/pull/43248)), [GH-43511](https://github.com/godotengine/godot/pull/43511)).
+- C#: Official builds now use Mono 6.12.0.111.
+- C#: Re-work solution build output panel ([GH-42547](https://github.com/godotengine/godot/pull/42547)).
+- **Core: Optimize octree and fix leak ([GH-41123](https://github.com/godotengine/godot/pull/41123)).**
+- Core: Disable decayment of freed Objects to null in debug builds ([GH-41866](https://github.com/godotengine/godot/pull/41866)).
+- Core: More fixes to Variant and Reference pointers ([GH-43049](https://github.com/godotengine/godot/pull/43049)).
+- Core: Add `append_array` method to `Array` class ([GH-43398](https://github.com/godotengine/godot/pull/43398)).
+- CSG: Various bug fixes.
+- Editor: Fixed renaming/moving of nodes with exported NodePaths in the editor ([GH-42314](https://github.com/godotengine/godot/pull/42314)).
+- Editor: Improve 3D rotation gizmo ([GH-43016](https://github.com/godotengine/godot/pull/43016)).
+- Editor: Add a dynamic infinite grid to the 3D editor ([GH-43206](https://github.com/godotengine/godot/pull/43206)).
+- Editor: Use 75% editor scale on small displays automatically ([GH-43611](https://github.com/godotengine/godot/pull/43611)).
+- Editor: Require Ctrl for switching between editors, bind F2 to Rename Node ([GH-38201](https://github.com/godotengine/godot/pull/38201)).
+- **FBX: Rewritten and improved importer** ([GH-42941](https://github.com/godotengine/godot/pull/42941)).
+- GDScript: Fix leaks due to cyclic references ([GH-41931](https://github.com/godotengine/godot/pull/41931)).
+- **GLES2/GLES3: Fix buffer orphaning on desktop ([GH-42734](https://github.com/godotengine/godot/pull/42734)).**
+- GLES2/GLES3: Fix flipped normal mapping in 2D with batching and nvidia workaround ([GH-41323](https://github.com/godotengine/godot/pull/41323), [GH-41254](https://github.com/godotengine/godot/pull/41254)).
+- **GLES2: Various improvements to 2D batching ([GH-42119](https://github.com/godotengine/godot/pull/42119)).**
+ * See [GH-42899](https://github.com/godotengine/godot/issues/42899) for instructions on how to test the improved 2D batching and report your results.
+- GLES2: Fix glow on devices with only 8 texture slots ([GH-42446](https://github.com/godotengine/godot/pull/42446)).
+- GLES2: Use separate texture unit for `light_texture` ([GH-42538](https://github.com/godotengine/godot/pull/42538)).
+- **GLES3: Add 2D batching support, unified architecture with GLES2 ([GH-42119](https://github.com/godotengine/godot/pull/42119)).**
+ * See [GH-42899](https://github.com/godotengine/godot/issues/42899) for instructions on how to test the new GLES3 2D batching and report your results.
+- GLES3: Fixes to Screen Space Reflections ([GH-38954](https://github.com/godotengine/godot/pull/38954), [GH-41892](https://github.com/godotengine/godot/pull/41892)).
+- GLES3: Ensure that color values in Reinhard tonemapping are positive ([GH-42056](https://github.com/godotengine/godot/pull/42056)).
+- glTF: Use vertex colors by default ([GH-41007](https://github.com/godotengine/godot/pull/41007)).
+- glTF: Fix parsing base64-encoded buffer and image data ([GH-42501](https://github.com/godotengine/godot/pull/42501), [GH-42504](https://github.com/godotengine/godot/pull/42504)).
+- HTML5: Synchronous main, better persistence, handlers fixes, optional full screen ([GH-42266](https://github.com/godotengine/godot/pull/42266)).
+- HTML5: Move audio processing to thread when threads are enabled ([GH-42510](https://github.com/godotengine/godot/pull/42510)).
+- HTML5: Merged code for web editor prototype ([GH-42790](https://github.com/godotengine/godot/pull/42790)).
+- **HTML5: Add AudioWorklet support in multithreaded builds** ([GH-43454](https://github.com/godotengine/godot/pull/43454)).
+- Input: Add mouse event pass-through support for the game window ([GH-40205](https://github.com/godotengine/godot/pull/40205)).
+- Input: Add support for buttons and D-pads mapped to half axes ([GH-42800](https://github.com/godotengine/godot/pull/42800)).
+- iOS: Fix multiple issues with PVRTC import, disable ETC1 ([GH-38076](https://github.com/godotengine/godot/pull/38076)).
+- iOS: Add touch delay value to project settings ([GH-42457](https://github.com/godotengine/godot/pull/42457)).
+- Linux: Fix issues related to delay when processing events ([GH-42341](https://github.com/godotengine/godot/pull/42341)).
+- Linux: Implement `--no-window` mode ([GH-42276](https://github.com/godotengine/godot/pull/42276)).
+- **macOS: ARM64 support in official binaries.**
+ * Currently only for standard builds, Mono ARM64 builds are still a work in progress.
+- macOS: Fix mouse position in captured mode ([GH-42328](https://github.com/godotengine/godot/pull/42328)).
+- macOS: Fix `get_screen_dpi` for non-fractional display scales ([GH-42478](https://github.com/godotengine/godot/pull/42478)).
+- macOS: Implement `--no-window` mode ([GH-42276](https://github.com/godotengine/godot/pull/42276)).
+- **MeshInstance: Add option for software skinning ([GH-40313](https://github.com/godotengine/godot/pull/40313)).**
+- Physics: Various bug fixes for 2D and 3D.
+- Rendering: Add fast approximate antialiasing (FXAA) to Viewport ([GH-42006](https://github.com/godotengine/godot/pull/42006)).
+- Rendering: Disable lights for objects with baked lighting ([GH-41629](https://github.com/godotengine/godot/pull/41629)).
+- **Rendering: Add option for snapping 2D transforms to whole coordinates, for pixel art motion** ([GH-43554](https://github.com/godotengine/godot/pull/43554)).
+- Sprite3D: Use full float UV for better precision ([GH-42537](https://github.com/godotengine/godot/pull/42537)) [regression fix].
+- TextEdit/LineEdit: Support Ctrl+Alt as alias for Alt Gr on Windows ([GH-37769](https://github.com/godotengine/godot/pull/37769)).
+- Windows: Fix debugger not getting focused on break on Windows ([GH-40555](https://github.com/godotengine/godot/pull/40555)).
+- YSort: Make rendering order more deterministic ([GH-42375](https://github.com/godotengine/godot/pull/42375)).
+- Thirdparty library updates (freetype 2.10.4, tinyexr 1.0.0, zstd 1.4.5).
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog on GitHub ([part 1](https://github.com/godotengine/godot/compare/3.2.3-stable...01f23480e1eb5b82fd276a58fd56654d3db39d49), [part 2](https://github.com/godotengine/godot/compare/01f23480e1eb5b82fd276a58fd56654d3db39d49...2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f), [part 3](https://github.com/godotengine/godot/compare/2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f...04103db6bd5694b81ab0a1717fc5fdde6cb5dd4f), [part 4](https://github.com/godotengine/godot/compare/04103db6bd5694b81ab0a1717fc5fdde6cb5dd4f...b9b773c3f0e7d895b2aaf2c8712b7d55ad0a05dd)), or the [changes since the previous beta 2 build](https://github.com/godotengine/godot/compare/04103db6bd5694b81ab0a1717fc5fdde6cb5dd4f...b9b773c3f0e7d895b2aaf2c8712b7d55ad0a05dd).
+
+This release is built from commit [b9b773c3f0e7d895b2aaf2c8712b7d55ad0a05dd](https://github.com/godotengine/godot/commit/b9b773c3f0e7d895b2aaf2c8712b7d55ad0a05dd).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.2.4/beta3/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2.4/beta3/mono/) (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.111 are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.2.4 beta 3. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2.3 or earlier no longer works in 3.2.4 beta 3).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-4-beta-4.md b/collections/_article/dev-snapshot-godot-3-2-4-beta-4.md
new file mode 100644
index 0000000000..9aabbf6950
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-4-beta-4.md
@@ -0,0 +1,133 @@
+---
+title: "Dev snapshot: Godot 3.2.4 beta 4"
+excerpt: "Here's a new feature-packed beta build for the upcoming Godot 3.2.4: GDNative support for HTML5, MP3 support, FBX import fixes, and more!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5fd/398/01a/5fd39801a2fcb799144127.jpg
+date: 2020-12-11 16:02:52
+---
+
+While development keeps going at full speed towards Godot 4.0 (see recent devblogs on [GDScript typed instructions](/article/gdscript-progress-report-typed-instructions), [Complex Text Layout](/article/complex-text-layouts-progress-report-2), [Tiles editor](/article/tiles-editor-rework), [documentation](/article/godot-docs-improvements-report), and [2D rendering improvements](https://godotengine.org/article/godots-2d-engine-gets-several-improvements-upcoming-40)!), a lot of work is also being done on the `3.2` branch for the upcoming Godot 3.2.4.
+
+This new **beta 4** adds a new round of bugfixes and enhancements over the previous dev snapshots, as well as some nice new features.
+
+In particular, this build adds [optional GDNative support to the HTML5 target](https://github.com/godotengine/godot/pull/44076), on top of the pre-existing optional multithreading support. The HTML5 export templates now come in three flavors which you can select in the export preset: normal, threads enabled and GDNative enabled. Multithreading and dynamic linking (GDNative) can't be used at the same time due to current WebAssembly limitations.
+**Note:** Threads enabled and GDNative enabled templates are only available for standard builds for now, as there are other issues to solve to make them work with Mono.
+
+Additionally, beta 4 adds support for [MP3 loading and playback](https://github.com/godotengine/godot/pull/43007)! Until recently, the MP3 audio format was patent-encumbered and could therefore not be included in Godot, but the last patent expired in 2017, so a MP3 loader and decoded could finally be implemented.
+
+There are also a number of [fixes to the rewritten FBX importer](https://github.com/godotengine/godot/pull/43921) which should improve compatibility, so if you ran into issues with it in previous builds, make sure to retry your models!
+
+## Highlights
+
+The main changes coming in Godot 3.2.4 and included in this beta are:
+
+- [Android App Bundle](https://github.com/godotengine/godot-proposals/issues/342) and [subview embedding](https://github.com/godotengine/godot-proposals/issues/1064) support.
+- [2D batching for GLES3](https://github.com/godotengine/godot/pull/42119) (it was implemented for GLES2 in 3.2.2), and improvements to GLES2's batching.
+- [A new software skinning for MeshInstance](https://github.com/godotengine/godot/pull/40313) to replace the slow GPU skinning on devices that don't support the fast GPU skinning (especially mobile).
+- [Rewritten and greatly improved FBX importer](/article/fbx-importer-rewritten-for-godot-3-2-4).
+- [Improved Web editor prototype](/article/godot-web-progress-report-3) and [AudioWorklet support for multithreaded HTML5 builds](https://github.com/godotengine/godot/pull/43454).
+- [New option to snap 2D transforms to whole coordinates](https://github.com/godotengine/godot/pull/43554), helps prevent jitter on pixel art camera motions.
+- [Configurable amount of lights per object](https://github.com/godotengine/godot/pull/43606), now defaulting to 32 instead of 8.
+- [macOS ARM64 support](https://github.com/godotengine/godot/pull/39788) in official binaries for Apple M1 chip (only classical build for now).
+- [Optional GDNative support for HTML5](https://github.com/godotengine/godot/pull/44076) (new in beta 4).
+- [MP3 loading and playback support](https://github.com/godotengine/godot/pull/43007) (new in beta 4).
+
+
+And there's even more in the works that will be included in future beta builds.
+
+## Changes
+
+The main new features in need of testing are highlighted in bold. Refer to the linked pull requests for details.
+
+- **Android: Add support for the Android App Bundle format ([GH-42185](https://github.com/godotengine/godot/pull/42185)).**
+- Android: Add support for emedded Godot as a subview in Android applications ([GH-42186](https://github.com/godotengine/godot/pull/42186)).
+- Android: Fix splash screen loading ([GH-42389](https://github.com/godotengine/godot/pull/42389)).
+- Android: Add notch cutout support for Android P and later ([GH-43104](https://github.com/godotengine/godot/pull/43104)).
+- Android: Add support for mouse events ([GH-42360](https://github.com/godotengine/godot/pull/42360)).
+- Android: Add support for keyboard modifiers and arrow keys ([GH-40398](https://github.com/godotengine/godot/pull/40398)).
+- Android: Fix screen orientation settings and API ([GH-43022](https://github.com/godotengine/godot/pull/43022), [GH-43248](https://github.com/godotengine/godot/pull/43248)), [GH-43511](https://github.com/godotengine/godot/pull/43511)).
+- **Audio: Add MP3 loading and playback support** ([GH-43007](https://github.com/godotengine/godot/pull/43007)).
+- C#: Official builds now use Mono 6.12.0.111.
+- C#: Re-work solution build output panel ([GH-42547](https://github.com/godotengine/godot/pull/42547)).
+- C#: Godot.NET.Sdk/3.2.4 - Fix targeting .NETFramework with .NET 5 ([GH-44135](https://github.com/godotengine/godot/pull/44135)).
+- **Core: Optimize octree and fix leak ([GH-41123](https://github.com/godotengine/godot/pull/41123)).**
+- Core: Disable decayment of freed Objects to null in debug builds ([GH-41866](https://github.com/godotengine/godot/pull/41866)).
+- Core: More fixes to Variant and Reference pointers ([GH-43049](https://github.com/godotengine/godot/pull/43049)).
+- Core: Add `append_array` method to `Array` class ([GH-43398](https://github.com/godotengine/godot/pull/43398)).
+- CSG: Various bug fixes.
+- Editor: Fixed renaming/moving of nodes with exported NodePaths in the editor ([GH-42314](https://github.com/godotengine/godot/pull/42314)).
+- Editor: Improve 3D rotation gizmo ([GH-43016](https://github.com/godotengine/godot/pull/43016)).
+- Editor: Add a dynamic infinite grid to the 3D editor ([GH-43206](https://github.com/godotengine/godot/pull/43206)).
+- Editor: Use 75% editor scale on small displays automatically ([GH-43611](https://github.com/godotengine/godot/pull/43611)).
+- Editor: Require Ctrl for switching between editors, bind F2 to Rename Node ([GH-38201](https://github.com/godotengine/godot/pull/38201)).
+- **FBX: Rewritten and improved importer** ([GH-42941](https://github.com/godotengine/godot/pull/42941)).
+- Font: Load dynamic fonts to memory on all platforms to avoid locked files ([GH-44117](https://github.com/godotengine/godot/pull/44117)).
+- Font: Fix fallback emoji font color ([GH-44212](https://github.com/godotengine/godot/pull/44212)).
+- GDScript: Fix leaks due to cyclic references ([GH-41931](https://github.com/godotengine/godot/pull/41931)).
+- **GLES2/GLES3: Fix buffer orphaning on desktop ([GH-42734](https://github.com/godotengine/godot/pull/42734)).**
+- GLES2/GLES3: Fix flipped normal mapping in 2D with batching and nvidia workaround ([GH-41323](https://github.com/godotengine/godot/pull/41323), [GH-41254](https://github.com/godotengine/godot/pull/41254)).
+- **GLES2: Various improvements to 2D batching ([GH-42119](https://github.com/godotengine/godot/pull/42119)).**
+ * See [GH-42899](https://github.com/godotengine/godot/issues/42899) for instructions on how to test the improved 2D batching and report your results.
+- GLES2: Fix glow on devices with only 8 texture slots ([GH-42446](https://github.com/godotengine/godot/pull/42446)).
+- GLES2: Use separate texture unit for `light_texture` ([GH-42538](https://github.com/godotengine/godot/pull/42538)).
+- **GLES3: Add 2D batching support, unified architecture with GLES2 ([GH-42119](https://github.com/godotengine/godot/pull/42119)).**
+ * See [GH-42899](https://github.com/godotengine/godot/issues/42899) for instructions on how to test the new GLES3 2D batching and report your results.
+- GLES3: Fixes to Screen Space Reflections ([GH-38954](https://github.com/godotengine/godot/pull/38954), [GH-41892](https://github.com/godotengine/godot/pull/41892)).
+- GLES3: Ensure that color values in Reinhard tonemapping are positive ([GH-42056](https://github.com/godotengine/godot/pull/42056)).
+- glTF: Use vertex colors by default ([GH-41007](https://github.com/godotengine/godot/pull/41007)).
+- glTF: Fix parsing base64-encoded buffer and image data ([GH-42501](https://github.com/godotengine/godot/pull/42501), [GH-42504](https://github.com/godotengine/godot/pull/42504)).
+- HTML5: Synchronous main, better persistence, handlers fixes, optional full screen ([GH-42266](https://github.com/godotengine/godot/pull/42266)).
+- HTML5: Move audio processing to thread when threads are enabled ([GH-42510](https://github.com/godotengine/godot/pull/42510)).
+- HTML5: Merged code for web editor prototype ([GH-42790](https://github.com/godotengine/godot/pull/42790)).
+- **HTML5: Add AudioWorklet support in multithreaded builds** ([GH-43454](https://github.com/godotengine/godot/pull/43454)).
+- **HTML5: Add optional GDNative support** ([GH-44076](https://github.com/godotengine/godot/pull/44076)).
+- Input: Add mouse event pass-through support for the game window ([GH-40205](https://github.com/godotengine/godot/pull/40205)).
+- Input: Add support for buttons and D-pads mapped to half axes ([GH-42800](https://github.com/godotengine/godot/pull/42800)).
+- Input: Add driving joystick type to windows joystick handling ([GH-44082](https://github.com/godotengine/godot/pull/44082)).
+- iOS: Fix multiple issues with PVRTC import, disable ETC1 ([GH-38076](https://github.com/godotengine/godot/pull/38076)).
+- iOS: Add touch delay value to project settings ([GH-42457](https://github.com/godotengine/godot/pull/42457)).
+- Linux: Fix issues related to delay when processing events ([GH-42341](https://github.com/godotengine/godot/pull/42341)).
+- Linux: Implement `--no-window` mode ([GH-42276](https://github.com/godotengine/godot/pull/42276)).
+- Linux: Prevent audio corruption in the ALSA driver ([GH-43928](https://github.com/godotengine/godot/pull/43928)).
+- **macOS: ARM64 support in official binaries.**
+ * Currently only for standard builds, Mono ARM64 builds are still a work in progress.
+- macOS: Fix mouse position in captured mode ([GH-42328](https://github.com/godotengine/godot/pull/42328)).
+- macOS: Fix `get_screen_dpi` for non-fractional display scales ([GH-42478](https://github.com/godotengine/godot/pull/42478)).
+- macOS: Implement `--no-window` mode ([GH-42276](https://github.com/godotengine/godot/pull/42276)).
+- **MeshInstance: Add option for software skinning ([GH-40313](https://github.com/godotengine/godot/pull/40313)).**
+- Physics: Various bug fixes for 2D and 3D.
+- Rendering: Add fast approximate antialiasing (FXAA) to Viewport ([GH-42006](https://github.com/godotengine/godot/pull/42006)).
+- Rendering: Disable lights for objects with baked lighting ([GH-41629](https://github.com/godotengine/godot/pull/41629)).
+- **Rendering: Add option for snapping 2D transforms to whole coordinates, for pixel art motion** ([GH-43554](https://github.com/godotengine/godot/pull/43554)).
+- Sprite3D: Use full float UV for better precision ([GH-42537](https://github.com/godotengine/godot/pull/42537)) [regression fix].
+- TextEdit/LineEdit: Support Ctrl+Alt as alias for Alt Gr on Windows ([GH-37769](https://github.com/godotengine/godot/pull/37769)).
+- Windows: Fix debugger not getting focused on break on Windows ([GH-40555](https://github.com/godotengine/godot/pull/40555)).
+- YSort: Make rendering order more deterministic ([GH-42375](https://github.com/godotengine/godot/pull/42375)).
+- Thirdparty library updates (freetype 2.10.4, tinyexr 1.0.0, zstd 1.4.5).
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog on GitHub ([beta 1 part 1](https://github.com/godotengine/godot/compare/3.2.3-stable...01f23480e1eb5b82fd276a58fd56654d3db39d49), [beta 1 part 2](https://github.com/godotengine/godot/compare/01f23480e1eb5b82fd276a58fd56654d3db39d49...2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f), [beta 2](https://github.com/godotengine/godot/compare/2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f...04103db6bd5694b81ab0a1717fc5fdde6cb5dd4f), [beta 3](https://github.com/godotengine/godot/compare/04103db6bd5694b81ab0a1717fc5fdde6cb5dd4f...b9b773c3f0e7d895b2aaf2c8712b7d55ad0a05dd), [beta 4](https://github.com/godotengine/godot/compare/b9b773c3f0e7d895b2aaf2c8712b7d55ad0a05dd...b5e8b48bb7de2e3cfe8205af9d375eae050c60e6)), or the [changes since the previous beta 3 build](https://github.com/godotengine/godot/compare/b9b773c3f0e7d895b2aaf2c8712b7d55ad0a05dd...b5e8b48bb7de2e3cfe8205af9d375eae050c60e6).
+
+This release is built from commit [b5e8b48bb7de2e3cfe8205af9d375eae050c60e6](https://github.com/godotengine/godot/commit/b5e8b48bb7de2e3cfe8205af9d375eae050c60e6).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.2.4/beta4/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2.4/beta4/mono/) (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.111 are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.2.4 beta 4. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2.3 or earlier no longer works in 3.2.4 beta 4).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-4-beta-5.md b/collections/_article/dev-snapshot-godot-3-2-4-beta-5.md
new file mode 100644
index 0000000000..767cc18507
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-4-beta-5.md
@@ -0,0 +1,139 @@
+---
+title: "Dev snapshot: Godot 3.2.4 beta 5"
+excerpt: "Another beta build on the way to Godot 3.2.4, which promises a much improved feature set for Godot 3.2 users while we wait for the 4.0 release. This beta 5 includes many bug fixes and improvements, but also new features such as WebXR support and a minimap in the graph editors!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5ff/6f7/246/5ff6f724691ad311133792.jpg
+date: 2021-01-07 13:51:24
+---
+
+While development keeps going at full speed towards Godot 4.0 (see recent devblogs on [glTF 2.0 scene exporter](/article/introducing-the-godot-gltf-2-0-scene-exporter), [Complex Text Layout](/article/complex-text-layouts-progress-report-3), [Web export improvements](https://godotengine.org/article/godot-web-export-progress-report-4), and a [physics work package](https://godotengine.org/article/camille-mohr-daurat-hired-work-physics)), a lot of work is also being done on the `3.2` branch for the upcoming Godot 3.2.4.
+
+This new **beta 5** comes with 4 weeks' worth of bugfixes and enhancements over the previous dev snapshots, as well as some nice new features.
+
+In particular, this build adds [WebXR support](https://github.com/godotengine/godot/pull/42397) for VR games! It also adds a much-requested [minimap to `GraphEdit`](https://github.com/godotengine/godot/pull/43416), and thus to the VisualScript and Visual Shader editors. Moreover, there have been many fixes to features introduced in previous betas, so make sure to test this build and ensure that everything works as you'd want it.
+
+You can try it live with the [**online version of the Godot editor**](https://editor.godotengine.org/3.2.4.beta5/godot.tools.html) updated for this beta.
+
+## Highlights
+
+The main changes coming in Godot 3.2.4 and included in this beta are:
+
+- [Android App Bundle](https://github.com/godotengine/godot-proposals/issues/342) and [subview embedding](https://github.com/godotengine/godot-proposals/issues/1064) support.
+- [2D batching for GLES3](https://github.com/godotengine/godot/pull/42119) (it was implemented for GLES2 in 3.2.2), and improvements to GLES2's batching.
+- [A new software skinning for MeshInstance](https://github.com/godotengine/godot/pull/40313) to replace the slow GPU skinning on devices that don't support the fast GPU skinning (especially mobile).
+- [Rewritten and greatly improved FBX importer](/article/fbx-importer-rewritten-for-godot-3-2-4).
+- [Improved Web editor prototype](/article/godot-web-progress-report-3) and [AudioWorklet support for multithreaded HTML5 builds](https://github.com/godotengine/godot/pull/43454).
+- [New option to snap 2D transforms to whole coordinates](https://github.com/godotengine/godot/pull/43554), helps prevent jitter on pixel art camera motions.
+- [Configurable amount of lights per object](https://github.com/godotengine/godot/pull/43606), now defaulting to 32 instead of 8.
+- [macOS ARM64 support](https://github.com/godotengine/godot/pull/39788) in official binaries for Apple M1 chip (only classical build for now).
+- [Optional GDNative support for HTML5](https://github.com/godotengine/godot/pull/44076).
+- [MP3 loading and playback support](https://github.com/godotengine/godot/pull/43007).
+- [WebXR support for VR games](https://github.com/godotengine/godot/pull/42397) (new in beta 5).
+- [Minimap support in GraphEdit](https://github.com/godotengine/godot/pull/43416) (new in beta 5).
+- [Fixes to Mono on WebAssembly](https://github.com/godotengine/godot/pull/44374) (new in beta 5).
+
+And there's even more in the works that will be included in future beta builds.
+
+## Changes
+
+The main new features in need of testing are highlighted in bold. Refer to the linked pull requests for details.
+
+- **Android: Add support for the Android App Bundle format ([GH-42185](https://github.com/godotengine/godot/pull/42185)).**
+- Android: Add support for emedded Godot as a subview in Android applications ([GH-42186](https://github.com/godotengine/godot/pull/42186)).
+- Android: Fix splash screen loading ([GH-42389](https://github.com/godotengine/godot/pull/42389)).
+- Android: Add notch cutout support for Android P and later ([GH-43104](https://github.com/godotengine/godot/pull/43104)).
+- Android: Add support for mouse events ([GH-42360](https://github.com/godotengine/godot/pull/42360)).
+- Android: Add support for keyboard modifiers and arrow keys ([GH-40398](https://github.com/godotengine/godot/pull/40398)).
+- Android: Fix screen orientation settings and API ([GH-43022](https://github.com/godotengine/godot/pull/43022), [GH-43248](https://github.com/godotengine/godot/pull/43248)), [GH-43511](https://github.com/godotengine/godot/pull/43511)).
+- Android: Update logic to sign prebuilt APKs with `apksigner` instead of `jarsigner`, as required for Android API 30 ([GH-44645](https://github.com/godotengine/godot/pull/44645)).
+- **Audio: Add MP3 loading and playback support** ([GH-43007](https://github.com/godotengine/godot/pull/43007)).
+- C#: Official builds now use Mono 6.12.0.114.
+- C#: Re-work solution build output panel ([GH-42547](https://github.com/godotengine/godot/pull/42547)).
+- C#: Godot.NET.Sdk/3.2.4 - Fix targeting .NETFramework with .NET 5 ([GH-44135](https://github.com/godotengine/godot/pull/44135)).
+- **C#: Fixes to WebAssembly support** ([GH-44105](https://github.com/godotengine/godot/pull/44105), [GH-44374](https://github.com/godotengine/godot/pull/44374)).
+- **Core: Optimize octree and fix leak ([GH-41123](https://github.com/godotengine/godot/pull/41123)).**
+- Core: Disable decayment of freed Objects to null in debug builds ([GH-41866](https://github.com/godotengine/godot/pull/41866)).
+- Core: More fixes to Variant and Reference pointers ([GH-43049](https://github.com/godotengine/godot/pull/43049)).
+- Core: Add `append_array` method to `Array` class ([GH-43398](https://github.com/godotengine/godot/pull/43398)).
+- CSG: Various bug fixes.
+- Editor: Fixed renaming/moving of nodes with exported NodePaths in the editor ([GH-42314](https://github.com/godotengine/godot/pull/42314)).
+- Editor: Improve 3D rotation gizmo ([GH-43016](https://github.com/godotengine/godot/pull/43016)).
+- Editor: Add a dynamic infinite grid to the 3D editor ([GH-43206](https://github.com/godotengine/godot/pull/43206)).
+- Editor: Use 75% editor scale on small displays automatically ([GH-43611](https://github.com/godotengine/godot/pull/43611)).
+- Editor: Require Ctrl for switching between editors, bind F2 to Rename Node ([GH-38201](https://github.com/godotengine/godot/pull/38201)).
+- **FBX: Rewritten and improved importer** ([GH-42941](https://github.com/godotengine/godot/pull/42941)).
+- Font: Load dynamic fonts to memory on all platforms to avoid locked files ([GH-44117](https://github.com/godotengine/godot/pull/44117)).
+- Font: Fix fallback emoji font color ([GH-44212](https://github.com/godotengine/godot/pull/44212)).
+- GDScript: Fix leaks due to cyclic references ([GH-41931](https://github.com/godotengine/godot/pull/41931)).
+- **GLES2/GLES3: Fix buffer orphaning on desktop ([GH-42734](https://github.com/godotengine/godot/pull/42734)).**
+- GLES2/GLES3: Fix flipped normal mapping in 2D with batching and nvidia workaround ([GH-41323](https://github.com/godotengine/godot/pull/41323), [GH-41254](https://github.com/godotengine/godot/pull/41254)).
+- **GLES2: Various improvements to 2D batching ([GH-42119](https://github.com/godotengine/godot/pull/42119)).**
+ * See [GH-42899](https://github.com/godotengine/godot/issues/42899) for instructions on how to test the improved 2D batching and report your results.
+- GLES2: Fix glow on devices with only 8 texture slots ([GH-42446](https://github.com/godotengine/godot/pull/42446)).
+- GLES2: Use separate texture unit for `light_texture` ([GH-42538](https://github.com/godotengine/godot/pull/42538)).
+- GLES2: Fix PanoramaSky artifacts on Android ([GH-44489](https://github.com/godotengine/godot/pull/44489)).
+- **GLES3: Add 2D batching support, unified architecture with GLES2 ([GH-42119](https://github.com/godotengine/godot/pull/42119)).**
+ * See [GH-42899](https://github.com/godotengine/godot/issues/42899) for instructions on how to test the new GLES3 2D batching and report your results.
+- GLES3: Fixes to Screen Space Reflections ([GH-38954](https://github.com/godotengine/godot/pull/38954), [GH-41892](https://github.com/godotengine/godot/pull/41892)).
+- GLES3: Ensure that color values in Reinhard tonemapping are positive ([GH-42056](https://github.com/godotengine/godot/pull/42056)).
+- glTF: Use vertex colors by default ([GH-41007](https://github.com/godotengine/godot/pull/41007)).
+- glTF: Fix parsing base64-encoded buffer and image data ([GH-42501](https://github.com/godotengine/godot/pull/42501), [GH-42504](https://github.com/godotengine/godot/pull/42504)).
+- glTF: Fix handling of `normalized` accessor property ([GH-44746](https://github.com/godotengine/godot/pull/44746)).
+- **GraphEdit: Add minimap support, enabled by default** ([GH-43416](https://github.com/godotengine/godot/pull/43416)).
+- HTML5: Synchronous main, better persistence, handlers fixes, optional full screen ([GH-42266](https://github.com/godotengine/godot/pull/42266)).
+- HTML5: Move audio processing to thread when threads are enabled ([GH-42510](https://github.com/godotengine/godot/pull/42510)).
+- HTML5: Merged code for web editor prototype ([GH-42790](https://github.com/godotengine/godot/pull/42790)).
+- **HTML5: Add AudioWorklet support in multithreaded builds** ([GH-43454](https://github.com/godotengine/godot/pull/43454)).
+- **HTML5: Add optional GDNative support** ([GH-44076](https://github.com/godotengine/godot/pull/44076)).
+- Input: Add mouse event pass-through support for the game window ([GH-40205](https://github.com/godotengine/godot/pull/40205)).
+- Input: Add support for buttons and D-pads mapped to half axes ([GH-42800](https://github.com/godotengine/godot/pull/42800)).
+- Input: Add driving joystick type to windows joystick handling ([GH-44082](https://github.com/godotengine/godot/pull/44082)).
+- iOS: Fix multiple issues with PVRTC import, disable ETC1 ([GH-38076](https://github.com/godotengine/godot/pull/38076)).
+- iOS: Add touch delay value to project settings ([GH-42457](https://github.com/godotengine/godot/pull/42457)).
+- iOS: Fixes to keyboard input, including better IME support ([GH-43560](https://github.com/godotengine/godot/pull/43560)).
+- Linux: Fix issues related to delay when processing events ([GH-42341](https://github.com/godotengine/godot/pull/42341)).
+- Linux: Implement `--no-window` mode ([GH-42276](https://github.com/godotengine/godot/pull/42276)).
+- Linux: Prevent audio corruption in the ALSA driver ([GH-43928](https://github.com/godotengine/godot/pull/43928)).
+- **macOS: ARM64 support in official binaries.**
+ * Currently only for standard builds, Mono ARM64 builds are still a work in progress.
+- macOS: Fix mouse position in captured mode ([GH-42328](https://github.com/godotengine/godot/pull/42328)).
+- macOS: Fix `get_screen_dpi` for non-fractional display scales ([GH-42478](https://github.com/godotengine/godot/pull/42478)).
+- macOS: Implement `--no-window` mode ([GH-42276](https://github.com/godotengine/godot/pull/42276)).
+- **MeshInstance: Add option for software skinning ([GH-40313](https://github.com/godotengine/godot/pull/40313)).**
+- Physics: Various bug fixes for 2D and 3D.
+- Rendering: Add fast approximate antialiasing (FXAA) to Viewport ([GH-42006](https://github.com/godotengine/godot/pull/42006)).
+- Rendering: Disable lights for objects with baked lighting ([GH-41629](https://github.com/godotengine/godot/pull/41629)).
+- **Rendering: Add option for snapping 2D transforms to whole coordinates, for pixel art motion** ([GH-43554](https://github.com/godotengine/godot/pull/43554)).
+- Sprite3D: Use full float UV for better precision ([GH-42537](https://github.com/godotengine/godot/pull/42537)) [regression fix].
+- TextEdit/LineEdit: Support Ctrl+Alt as alias for Alt Gr on Windows ([GH-37769](https://github.com/godotengine/godot/pull/37769)).
+- **VR: Add WebXR support for VR games** ([GH-42397](https://github.com/godotengine/godot/pull/42397)).
+- Windows: Fix debugger not getting focused on break on Windows ([GH-40555](https://github.com/godotengine/godot/pull/40555)).
+- YSort: Make rendering order more deterministic ([GH-42375](https://github.com/godotengine/godot/pull/42375)).
+- Thirdparty library updates (freetype 2.10.4, mbedtls 2.16.9, tinyexr 1.0.0, zstd 1.4.5).
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog on GitHub ([beta 1 part 1](https://github.com/godotengine/godot/compare/3.2.3-stable...01f23480e1eb5b82fd276a58fd56654d3db39d49), [beta 1 part 2](https://github.com/godotengine/godot/compare/01f23480e1eb5b82fd276a58fd56654d3db39d49...2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f), [beta 2](https://github.com/godotengine/godot/compare/2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f...04103db6bd5694b81ab0a1717fc5fdde6cb5dd4f), [beta 3](https://github.com/godotengine/godot/compare/04103db6bd5694b81ab0a1717fc5fdde6cb5dd4f...b9b773c3f0e7d895b2aaf2c8712b7d55ad0a05dd), [beta 4](https://github.com/godotengine/godot/compare/b9b773c3f0e7d895b2aaf2c8712b7d55ad0a05dd...b5e8b48bb7de2e3cfe8205af9d375eae050c60e6), [beta 5](https://github.com/godotengine/godot/compare/b5e8b48bb7de2e3cfe8205af9d375eae050c60e6...a18df71789a36b318c40d691efdb4da1e574bbfd)), or the [changes since the previous beta 4 build](https://github.com/godotengine/godot/compare/b5e8b48bb7de2e3cfe8205af9d375eae050c60e6...a18df71789a36b318c40d691efdb4da1e574bbfd).
+
+This release is built from commit [a18df71789a36b318c40d691efdb4da1e574bbfd](https://github.com/godotengine/godot/commit/a18df71789a36b318c40d691efdb4da1e574bbfd).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.2.4/beta5/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2.4/beta5/mono/) (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.114 are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.2.4 beta 5. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2.3 or earlier no longer works in 3.2.4 beta 5).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-4-beta-6.md b/collections/_article/dev-snapshot-godot-3-2-4-beta-6.md
new file mode 100644
index 0000000000..98b8612129
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-4-beta-6.md
@@ -0,0 +1,160 @@
+---
+title: "Dev snapshot: Godot 3.2.4 beta 6"
+excerpt: "Here's another feature-packed beta for the upcoming Godot 3.2.4 release. It adds the following main changes: new CPU lightmapper, new dynamic BVH for rendering and the GodotPhysics backends, multiple fixes to one-way collisions, iOS plugins support, and a new AspectRatioContainer Control node."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/600/305/9f5/6003059f52bb4613931642.jpg
+date: 2021-01-16 15:36:08
+---
+
+While our main focus stays on the 4.0 branch, the current stable 3.2 branch is receiving a lot of great improvements, and the upcoming 3.2.4 release is going to be packed with many new features.
+
+With this **beta 6** build, there are several recently merged changes that will require heavy testing to be stabilized before 3.2.4-stable:
+
+- [New CPU lightmapper](https://github.com/godotengine/godot/pull/44628) using Embree for raytracing and OIDN for denoising.
+ * Note: It's currently not available for macOS ARM64 as the libraries used are specific to x86_64. We hope to be able to solve that eventually. On Apple M1 devices, you can use the x86_64 version in the "universal" binary with Rosetta to test the new lightmapper.
+- [New dynamic BVH](https://github.com/godotengine/godot/pull/44901) for rendering and the GodotPhysics backends, which should fix some issues and improve performance significantly in games using a high number of dynamic objects.
+ * The previous Octree-based system is still available, though the dynamic BVH is meant to replace it once all potential issues are ironed out. In this beta, the dynamic BVH is the default option for both physics and rendering. You can revert back either of them to octree in the [Project Settings](https://github.com/godotengine/godot/pull/44901#issuecomment-758618531).
+ * The Bullet physics backend already used its own dynamic BVH implementation, it's not affected by this change.
+- [Multiple fixes to one-way collisions](https://github.com/godotengine/godot/pull/42574), handling many cases where collisions would not work reliably.
+- [iOS plugins support](https://github.com/godotengine/godot/pull/41340), with a similar interface to Android plugins.
+ * See [godot-docs#4213](https://github.com/godotengine/godot-docs/pull/4213) for the updated documentation.
+- [New `AspectRatioContainer` Control node](https://github.com/godotengine/godot/pull/45129) to easily set up UIs that should respect a given aspect ratio.
+
+Please report any issue regarding either of those changes, so that we can iron out potential issues quickly and release 3.2.4-stable.
+
+
+
+## Highlights
+
+The main changes coming in Godot 3.2.4 and included in this beta are:
+
+- [Android App Bundle](https://github.com/godotengine/godot-proposals/issues/342) and [subview embedding](https://github.com/godotengine/godot-proposals/issues/1064) support.
+- [2D batching for GLES3](https://github.com/godotengine/godot/pull/42119) (it was implemented for GLES2 in 3.2.2), and improvements to GLES2's batching.
+- [A new software skinning for MeshInstance](https://github.com/godotengine/godot/pull/40313) to replace the slow GPU skinning on devices that don't support the fast GPU skinning (especially mobile).
+- [Rewritten and greatly improved FBX importer](/article/fbx-importer-rewritten-for-godot-3-2-4).
+- [Improved Web editor prototype](/article/godot-web-progress-report-3) and [AudioWorklet support for multithreaded HTML5 builds](https://github.com/godotengine/godot/pull/43454).
+- [New option to snap 2D transforms to whole coordinates](https://github.com/godotengine/godot/pull/43554), helps prevent jitter on pixel art camera motions.
+- [Configurable amount of lights per object](https://github.com/godotengine/godot/pull/43606), now defaulting to 32 instead of 8.
+- [macOS ARM64 support](https://github.com/godotengine/godot/pull/39788) in official binaries for Apple M1 chip (only classical build for now).
+- [Optional GDNative support for HTML5](https://github.com/godotengine/godot/pull/44076).
+- [MP3 loading and playback support](https://github.com/godotengine/godot/pull/43007).
+- [WebXR support for VR games](https://github.com/godotengine/godot/pull/42397).
+- [Minimap support in GraphEdit](https://github.com/godotengine/godot/pull/43416).
+- [Fixes to Mono on WebAssembly](https://github.com/godotengine/godot/pull/44374).
+- [New CPU lightmapper](https://github.com/godotengine/godot/pull/44628) (new in beta 6).
+- [New dynamic BVH](https://github.com/godotengine/godot/pull/44901) for rendering and the GodotPhysics backends (new in beta 6).
+- [Multiple fixes to one-way collisions](https://github.com/godotengine/godot/pull/42574) (new in beta 6).
+- [New `AspectRatioContainer` Control node](https://github.com/godotengine/godot/pull/45129) (new in beta 6).
+
+And there's even more in the works that will be included in future beta builds.
+
+## Changes
+
+The main new features in need of testing are highlighted in bold. Refer to the linked pull requests for details.
+
+- **Android: Add support for the Android App Bundle format ([GH-42185](https://github.com/godotengine/godot/pull/42185)).**
+- Android: Add support for emedded Godot as a subview in Android applications ([GH-42186](https://github.com/godotengine/godot/pull/42186)).
+- Android: Fix splash screen loading ([GH-42389](https://github.com/godotengine/godot/pull/42389)).
+- Android: Add notch cutout support for Android P and later ([GH-43104](https://github.com/godotengine/godot/pull/43104)).
+- Android: Add support for mouse events ([GH-42360](https://github.com/godotengine/godot/pull/42360)).
+- Android: Add support for keyboard modifiers and arrow keys ([GH-40398](https://github.com/godotengine/godot/pull/40398)).
+- Android: Fix screen orientation settings and API ([GH-43022](https://github.com/godotengine/godot/pull/43022), [GH-43248](https://github.com/godotengine/godot/pull/43248)), [GH-43511](https://github.com/godotengine/godot/pull/43511)).
+- Android: Update logic to sign prebuilt APKs with `apksigner` instead of `jarsigner`, as required for Android API 30 ([GH-44645](https://github.com/godotengine/godot/pull/44645)).
+- **Audio: Add MP3 loading and playback support** ([GH-43007](https://github.com/godotengine/godot/pull/43007)).
+- C#: Official builds now use Mono 6.12.0.114.
+- C#: Re-work solution build output panel ([GH-42547](https://github.com/godotengine/godot/pull/42547)).
+- C#: Godot.NET.Sdk/3.2.4 - Fix targeting .NETFramework with .NET 5 ([GH-44135](https://github.com/godotengine/godot/pull/44135)).
+- **C#: Fixes to WebAssembly support** ([GH-44105](https://github.com/godotengine/godot/pull/44105), [GH-44374](https://github.com/godotengine/godot/pull/44374)).
+- **Core: Optimize octree and fix leak ([GH-41123](https://github.com/godotengine/godot/pull/41123)).**
+- Core: Disable decayment of freed Objects to null in debug builds ([GH-41866](https://github.com/godotengine/godot/pull/41866)).
+- Core: More fixes to Variant and Reference pointers ([GH-43049](https://github.com/godotengine/godot/pull/43049)).
+- Core: Add `append_array` method to `Array` class ([GH-43398](https://github.com/godotengine/godot/pull/43398)).
+- Core: Add ability to restore `RandomNumberGenerator` state ([GH-45019](https://github.com/godotengine/godot/pull/45019)).
+- CSG: Various bug fixes.
+- Editor: Fixed renaming/moving of nodes with exported NodePaths in the editor ([GH-42314](https://github.com/godotengine/godot/pull/42314)).
+- Editor: Improve 3D rotation gizmo ([GH-43016](https://github.com/godotengine/godot/pull/43016)).
+- Editor: Add a dynamic infinite grid to the 3D editor ([GH-43206](https://github.com/godotengine/godot/pull/43206)).
+- Editor: Use 75% editor scale on small displays automatically ([GH-43611](https://github.com/godotengine/godot/pull/43611)).
+- Editor: Require Ctrl for switching between editors, bind F2 to Rename Node ([GH-38201](https://github.com/godotengine/godot/pull/38201)).
+- **FBX: Rewritten and improved importer** ([GH-42941](https://github.com/godotengine/godot/pull/42941)).
+- Font: Load dynamic fonts to memory on all platforms to avoid locked files ([GH-44117](https://github.com/godotengine/godot/pull/44117)).
+- Font: Fix fallback emoji font color ([GH-44212](https://github.com/godotengine/godot/pull/44212)).
+- GDScript: Fix leaks due to cyclic references ([GH-41931](https://github.com/godotengine/godot/pull/41931)).
+- **GLES2/GLES3: Fix buffer orphaning on desktop ([GH-42734](https://github.com/godotengine/godot/pull/42734)).**
+- GLES2/GLES3: Fix flipped normal mapping in 2D with batching and nvidia workaround ([GH-41323](https://github.com/godotengine/godot/pull/41323), [GH-41254](https://github.com/godotengine/godot/pull/41254)).
+- **GLES2: Various improvements to 2D batching ([GH-42119](https://github.com/godotengine/godot/pull/42119)).**
+ * See [GH-42899](https://github.com/godotengine/godot/issues/42899) for instructions on how to test the improved 2D batching and report your results.
+- GLES2: Fix glow on devices with only 8 texture slots ([GH-42446](https://github.com/godotengine/godot/pull/42446)).
+- GLES2: Use separate texture unit for `light_texture` ([GH-42538](https://github.com/godotengine/godot/pull/42538)).
+- GLES2: Fix PanoramaSky artifacts on Android ([GH-44489](https://github.com/godotengine/godot/pull/44489)).
+- **GLES3: Add 2D batching support, unified architecture with GLES2 ([GH-42119](https://github.com/godotengine/godot/pull/42119)).**
+ * See [GH-42899](https://github.com/godotengine/godot/issues/42899) for instructions on how to test the new GLES3 2D batching and report your results.
+- GLES3: Fixes to Screen Space Reflections ([GH-38954](https://github.com/godotengine/godot/pull/38954), [GH-41892](https://github.com/godotengine/godot/pull/41892)).
+- GLES3: Ensure that color values in Reinhard tonemapping are positive ([GH-42056](https://github.com/godotengine/godot/pull/42056)).
+- glTF: Use vertex colors by default ([GH-41007](https://github.com/godotengine/godot/pull/41007)).
+- glTF: Fix parsing base64-encoded buffer and image data ([GH-42501](https://github.com/godotengine/godot/pull/42501), [GH-42504](https://github.com/godotengine/godot/pull/42504)).
+- glTF: Fix handling of `normalized` accessor property ([GH-44746](https://github.com/godotengine/godot/pull/44746)).
+- **GraphEdit: Add minimap support, enabled by default** ([GH-43416](https://github.com/godotengine/godot/pull/43416)).
+- **GUI:** Add `AspectRatioContainer` class ([GH-45129](https://github.com/godotengine/godot/pull/45129)).
+- HTML5: Synchronous main, better persistence, handlers fixes, optional full screen ([GH-42266](https://github.com/godotengine/godot/pull/42266)).
+- HTML5: Move audio processing to thread when threads are enabled ([GH-42510](https://github.com/godotengine/godot/pull/42510)).
+- HTML5: Merged code for web editor prototype ([GH-42790](https://github.com/godotengine/godot/pull/42790)).
+- **HTML5: Add AudioWorklet support in multithreaded builds** ([GH-43454](https://github.com/godotengine/godot/pull/43454)).
+- **HTML5: Add optional GDNative support** ([GH-44076](https://github.com/godotengine/godot/pull/44076)).
+- Input: Add mouse event pass-through support for the game window ([GH-40205](https://github.com/godotengine/godot/pull/40205)).
+- Input: Add support for buttons and D-pads mapped to half axes ([GH-42800](https://github.com/godotengine/godot/pull/42800)).
+- Input: Add driving joystick type to windows joystick handling ([GH-44082](https://github.com/godotengine/godot/pull/44082)).
+- **iOS: Add support for iOS plugins, with a similar interface to Android plugins** ([GH-41340](https://github.com/godotengine/godot/pull/41340)).
+ * You can read the updated documentation on [godot-docs#4213](https://github.com/godotengine/godot-docs/pull/4213), until it's merged and included in the `3.2` documentation.
+- iOS: Fix multiple issues with PVRTC import, disable ETC1 ([GH-38076](https://github.com/godotengine/godot/pull/38076)).
+- iOS: Add touch delay value to project settings ([GH-42457](https://github.com/godotengine/godot/pull/42457)).
+- iOS: Fixes to keyboard input, including better IME support ([GH-43560](https://github.com/godotengine/godot/pull/43560)).
+- **Lighting: New CPU lightmapper** ([GH-44628](https://github.com/godotengine/godot/pull/44628)).
+- Linux: Fix issues related to delay when processing events ([GH-42341](https://github.com/godotengine/godot/pull/42341)).
+- Linux: Implement `--no-window` mode ([GH-42276](https://github.com/godotengine/godot/pull/42276)).
+- Linux: Prevent audio corruption in the ALSA driver ([GH-43928](https://github.com/godotengine/godot/pull/43928)).
+- **macOS: ARM64 support in official binaries.**
+ * Currently only for standard builds, Mono ARM64 builds are still a work in progress.
+- macOS: Fix mouse position in captured mode ([GH-42328](https://github.com/godotengine/godot/pull/42328)).
+- macOS: Fix `get_screen_dpi` for non-fractional display scales ([GH-42478](https://github.com/godotengine/godot/pull/42478)).
+- macOS: Implement `--no-window` mode ([GH-42276](https://github.com/godotengine/godot/pull/42276)).
+- **MeshInstance: Add option for software skinning ([GH-40313](https://github.com/godotengine/godot/pull/40313)).**
+- **Physics: New dynamic BVH for GodotPhysics backends ([GH-44901](https://github.com/godotengine/godot/pull/44901)).**
+- Physics: Various bug fixes for 2D and 3D.
+- **Physics: Fix multiple issues with one-way collisions** ([GH-42574](https://github.com/godotengine/godot/pull/42574)).
+- Rendering: Add fast approximate antialiasing (FXAA) to Viewport ([GH-42006](https://github.com/godotengine/godot/pull/42006)).
+- Rendering: Disable lights for objects with baked lighting ([GH-41629](https://github.com/godotengine/godot/pull/41629)).
+- **Rendering: Add option for snapping 2D transforms to whole coordinates, for pixel art motion** ([GH-43554](https://github.com/godotengine/godot/pull/43554)).
+- **Rendering: New dynamic BVH ([GH-44901](https://github.com/godotengine/godot/pull/44901)).**
+- Sprite3D: Use full float UV for better precision ([GH-42537](https://github.com/godotengine/godot/pull/42537)) [regression fix].
+- **VR: Add WebXR support for VR games** ([GH-42397](https://github.com/godotengine/godot/pull/42397)).
+- Windows: Fix debugger not getting focused on break on Windows ([GH-40555](https://github.com/godotengine/godot/pull/40555)).
+- YSort: Make rendering order more deterministic ([GH-42375](https://github.com/godotengine/godot/pull/42375)).
+- Thirdparty library updates (enet 1.3.17, freetype 2.10.4, mbedtls 2.16.9, pcre2 10.36, tinyexr 1.0.0, zstd 1.4.8).
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog on GitHub ([beta 1 part 1](https://github.com/godotengine/godot/compare/3.2.3-stable...01f23480e1eb5b82fd276a58fd56654d3db39d49), [beta 1 part 2](https://github.com/godotengine/godot/compare/01f23480e1eb5b82fd276a58fd56654d3db39d49...2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f), [beta 2](https://github.com/godotengine/godot/compare/2e073ecbeaf5b502c2b8c3c0510e4a22a56db58f...04103db6bd5694b81ab0a1717fc5fdde6cb5dd4f), [beta 3](https://github.com/godotengine/godot/compare/04103db6bd5694b81ab0a1717fc5fdde6cb5dd4f...b9b773c3f0e7d895b2aaf2c8712b7d55ad0a05dd), [beta 4](https://github.com/godotengine/godot/compare/b9b773c3f0e7d895b2aaf2c8712b7d55ad0a05dd...b5e8b48bb7de2e3cfe8205af9d375eae050c60e6), [beta 5](https://github.com/godotengine/godot/compare/b5e8b48bb7de2e3cfe8205af9d375eae050c60e6...a18df71789a36b318c40d691efdb4da1e574bbfd), [beta 6](https://github.com/godotengine/godot/compare/a18df71789a36b318c40d691efdb4da1e574bbfd...7e207cfd48d6077ac6aaa3c45423d3fcf2f90bd7)), or the [changes since the previous beta 5 build](https://github.com/godotengine/godot/compare/a18df71789a36b318c40d691efdb4da1e574bbfd...7e207cfd48d6077ac6aaa3c45423d3fcf2f90bd7).
+
+This release is built from commit [7e207cfd48d6077ac6aaa3c45423d3fcf2f90bd7](https://github.com/godotengine/godot/commit/7e207cfd48d6077ac6aaa3c45423d3fcf2f90bd7).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.2.4/beta6/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2.4/beta6/mono/) (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.114 are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.2.4 beta 6. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2.3 or earlier no longer works in 3.2.4 beta 6).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-alpha-1.md b/collections/_article/dev-snapshot-godot-3-2-alpha-1.md
new file mode 100644
index 0000000000..7373d5bf20
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-alpha-1.md
@@ -0,0 +1,58 @@
+---
+title: "Dev snapshot: Godot 3.2 alpha 1"
+excerpt: "After close to 7 months of development and over 4,000 commits since the 3.1 release, we are now happy to release Godot 3.2 alpha 1, our first milestone towards the next stable installment of our free and open source game engine. It brings new features such as an Android plugin/custom build system, C# support for Android, WebRTC support and WebSocket improvements, a fully reworked Visual Shader editor, ARKit and Oculus Go/Quest support and many more."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5d9/9bd/66b/5d99bd66b58c5678103264.jpg
+date: 2019-10-06 11:02:33
+---
+
+After close to 7 months of development and over 4,000 commits since the 3.1 release, we are now happy to release **Godot 3.2 alpha 1**, our first milestone towards the next stable installment of our free and open source game engine.
+
+This first alpha build comes relatively late in our planned release schedule, mostly because of work done on our official build infrastructure to adapt to 3.2 requirements (changes to the Android buildsystem and packaging, especially with the new C# support), as well as a build server upgrade. But we have been in the alpha stage since August 31, and testers and developers were not idle in the meantime, so the `master` branch from which 3.2 will be released is already quite stable. As such we expect the alpha and beta phases to be quite short for Godot 3.2, and a stable release within one or two months should be possible.
+
+The alpha stage corresponds for us to a feature freeze, as announced on GitHub [a month ago](https://github.com/godotengine/godot/issues/31592), which means that we will no longer consider pull requests with new features for merge in the master branch, and that until Godot 3.2 is released. This way, we can focus on what we already have, finish and polish the major features which are still in progress, and fix many of the old and new bugs reported by the community.
+
+Alpha snapshots will be released regularly during this phase, to continuously test the master branch and make sure that it keeps getting more stable, reliable and ready for production.
+
+*Note: Illustration credits at the bottom of this page.*
+
+## Disclaimer
+
+**IMPORTANT: This is an *[alpha](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha)* build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.2 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+There is also no guarantee that projects started with the alpha 1 build will still work in alpha 2 or later builds, as we reserve the right to do necessary breaking adjustments up to the beta stage (albeit compatibility breaking changes at this stage should be very minimal, if any).
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor Hugo Locurcio is working on.
+
+Our [past devblogs](https://godotengine.org/devblog) should also give you an idea of the main highlights of the upcoming release. Note that the Vulkan port outlined in Juan's latest posts is developed in a separate branch for Godot 4.0, and is not included in this release.
+
+Documentation writers are hard at work to catch up with the new features, and the [latest branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.2 features.
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary that matches your platform:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.2/alpha1/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2/alpha1/mono/) (C# support + all the above). You need to have MSbuild installed to use the Mono build. Relevant parts of Mono 5.18.1.3 are included in this build.
+
+**IMPORTANT:** Make backups of your Godot 3.1 projects before opening them in any 3.2 development build.
+
+Notes:
+
+- Due to some build issues alpha1 does not have export templates for the UWP platform. This will be fixed in later builds.
+- Release exports of Mono projects seem to crash in some configurations. Deleting the `res://.mono/` folder to force its recreation with the new Godot version seems to be a good workaround. We are working on solving this issue for later builds.
+
+## Bug reports
+
+There are still [hundreds of open bug reports](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+milestone%3A3.2+label%3Abug+) for the 3.2 milestone, which means that we are aware of many bugs already. Yet, many of those issues may not be critical for the 3.2 release and may end up be retargeted to a later release to allow releasing Godot 3.2 within a couple of months.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.2 alpha. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+-----
+
+*The illustration picture is from the upcoming action-adventure game* **[Resolutiion](https://resolutiion.monolithofminds.com/)** *by [Monolith of Minds](https://twitter.com/monolithofminds), which is scheduled for release in early 2020. Wishlist it on [Steam](https://store.steampowered.com/app/975150/Resolutiion/) or follow them on [Twitter](https://twitter.com/monolithofminds). You can also read a nice post they wrote last year on [porting from Godot 2 to Godot 3](https://steemit.com/games/@cloudif/crash-replace-repeat-porting-resolutiion-to-godot-3).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-alpha-2.md b/collections/_article/dev-snapshot-godot-3-2-alpha-2.md
new file mode 100644
index 0000000000..c3cd266bae
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-alpha-2.md
@@ -0,0 +1,60 @@
+---
+title: "Dev snapshot: Godot 3.2 alpha 2"
+excerpt: "It's been less than a week since we published Godot 3.2 alpha 1 as a first development snapshot towards the stable release. But as mentioned, we want to have builds frequently to iterate and improve the stability on a weekly basis, so here comes 3.2 alpha 2. As that branch is already quite mature, this should allow us to publish Godot 3.2-stable in a few weeks."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5da/0d6/c19/5da0d6c198b34564377170.jpg
+date: 2019-10-11 19:46:27
+---
+
+We released a [first alpha build](/article/dev-snapshot-godot-3-2-alpha-1) last week, and we want to keep a relatively short iteration cycle on future alpha and beta builds until the final 3.2 release.
+The new official buildsystem that our contributor Hein-Pieter van Braam-Stewart ([hpvb](https://github.com/hpvb/)) set up for us is now quite efficient, so we can roll out builds fast and easily.
+
+We thus publish **Godot 3.2 alpha 2** as a second snapshot, fixing various issues from the last build. [152 commits](https://github.com/godotengine/godot/compare/1d9233c3882afe888b9396f7f2aac917d4dcac4d...3cc94b2c0b90ec1136937e2c02b9d7901d3d28b8) have been merged since 3.2 alpha 1. This release is built from commit [3cc94b2](https://github.com/godotengine/godot/commit/3cc94b2c0b90ec1136937e2c02b9d7901d3d28b8).
+
+As a reminder, the alpha stage corresponds for us to a feature freeze, as announced on GitHub [a month ago](https://github.com/godotengine/godot/issues/31592), which means that we will no longer consider pull requests with new features for merge in the master branch, and that until Godot 3.2 is released. This way, we can focus on what we already have, finish and polish the major features which are still in progress, and fix many of the old and new bugs reported by the community.
+
+*Note: Illustration credits at the bottom of this page.*
+
+## Disclaimer
+
+**IMPORTANT: This is an *[alpha](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha)* build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.2 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+There is also no guarantee that projects started with an alpha build will still work in later alpha builds, as we reserve the right to do necessary breaking adjustments up to the beta stage (albeit compatibility breaking changes at this stage should be very minimal, if any).
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor Hugo Locurcio is working on.
+
+Our [past devblogs](https://godotengine.org/devblog) should also give you an idea of the main highlights of the upcoming release. Note that the Vulkan port outlined in Juan's latest posts is developed in a separate branch for Godot 4.0, and is not included in this release.
+
+Documentation writers are hard at work to catch up with the new features, and the [latest branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.2 features.
+
+For changes since the previous alpha build, see [the list of commits](https://github.com/godotengine/godot/compare/1d9233c3882afe888b9396f7f2aac917d4dcac4d...3cc94b2c0b90ec1136937e2c02b9d7901d3d28b8).
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary that matches your platform:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.2/alpha2/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2/alpha2/mono/) (C# support + all the above). You need to have MSbuild installed to use the Mono build. Relevant parts of Mono 5.18.1.3 are included in this build.
+
+**IMPORTANT:** Make backups of your Godot 3.1 projects before opening them in any 3.2 development build.
+
+Notes:
+
+- Due to some build issues alpha1 does not have export templates for the UWP platform. This will be fixed in later builds.
+- The alpha 1 issue with release exports of Mono projects should now be solved.
+- This build should also fix a regression for GLES2 rendering on some Windows and macOS devices.
+
+## Bug reports
+
+There are still [hundreds of open bug reports](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+milestone%3A3.2+label%3Abug+) for the 3.2 milestone, which means that we are aware of many bugs already. Yet, many of those issues may not be critical for the 3.2 release and may end up be retargeted to a later release to allow releasing Godot 3.2 within a couple of months.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.2 alpha. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+-----
+
+*The illustration picture is from the gorgeous puzzle platformer* **[Seedlings](https://bardsley-creative.itch.io/seedlings)** *by [Bardsley Creative](https://twitter.com/Seedlings_Game). Follow its development on [Twitter](https://twitter.com/Seedlings_Game) and play the recently updated demo on [itch.io](https://bardsley-creative.itch.io/seedlings).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-alpha-3.md b/collections/_article/dev-snapshot-godot-3-2-alpha-3.md
new file mode 100644
index 0000000000..20ea0b0911
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-alpha-3.md
@@ -0,0 +1,58 @@
+---
+title: "Dev snapshot: Godot 3.2 alpha 3"
+excerpt: "While many core contributors were busy with the Godot Sprint and GodotCon last week, the rest of the world has not been idle and we got lots of nice contributions fixing bugs and improving usability.
+We thus publish Godot 3.2 alpha 3 as our next iteration, fixing various issues from the last build. 150 commits have been merged since 3.2 alpha 2."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5db/1c0/ec6/5db1c0ec6cf8e490600367.png
+date: 2019-10-24 15:25:07
+---
+
+While many core contributors were busy with the Godot Sprint and GodotCon [last week](/article/schedule-godotcon-2019-poznan), the rest of the world has not been idle and we got lots of nice contributions fixing bugs and improving usability.
+
+We thus publish **Godot 3.2 alpha 3** as our next iteration, fixing various issues from the last build. [150 commits](https://github.com/godotengine/godot/compare/3cc94b2c0b90ec1136937e2c02b9d7901d3d28b8...35944aebdeb4c3b5869aaeedaaded02397b7ce92) have been merged since 3.2 alpha 2. This release is built from commit [35944ae](https://github.com/godotengine/godot/commit/35944aebdeb4c3b5869aaeedaaded02397b7ce92).
+
+As a reminder, the alpha stage corresponds for us to a feature freeze, as announced on GitHub [at the end of August](https://github.com/godotengine/godot/issues/31592), which means that we will no longer consider pull requests with new features for merge in the master branch, and that until Godot 3.2 is released. This way, we can focus on what we already have, finish and polish the major features which are still in progress, and fix many of the old and new bugs reported by the community.
+
+*Note: Illustration credits at the bottom of this page.*
+
+## Disclaimer
+
+**IMPORTANT: This is an *[alpha](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha)* build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.2 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+There is also no guarantee that projects started with an alpha build will still work in later alpha builds, as we reserve the right to do necessary breaking adjustments up to the beta stage (albeit compatibility breaking changes at this stage should be very minimal, if any).
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor Hugo Locurcio is working on.
+
+Our [past devblogs](https://godotengine.org/devblog) should also give you an idea of the main highlights of the upcoming release. Note that the Vulkan port outlined in Juan's latest posts is developed in a separate branch for Godot 4.0, and is not included in this release.
+
+Documentation writers are hard at work to catch up with the new features, and the [latest branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.2 features.
+
+For changes since the previous alpha build, see [the list of commits](https://github.com/godotengine/godot/compare/3cc94b2c0b90ec1136937e2c02b9d7901d3d28b8...35944aebdeb4c3b5869aaeedaaded02397b7ce92).
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary that matches your platform:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.2/alpha3/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2/alpha3/mono/) (C# support + all the above). You need to have MSbuild installed to use the Mono build. Relevant parts of Mono 5.18.1.3 are included in this build.
+
+**IMPORTANT:** Make backups of your Godot 3.1 projects before opening them in any 3.2 development build.
+
+Notes:
+
+- Due to some build issues alpha3 does not have export templates for the UWP platform. This will be fixed in later builds.
+
+## Bug reports
+
+There are still [hundreds of open bug reports](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+milestone%3A3.2+label%3Abug+) for the 3.2 milestone, which means that we are aware of many bugs already. Yet, many of those issues may not be critical for the 3.2 release and may end up be retargeted to a later release to allow releasing Godot 3.2 within a couple of months.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.2 alpha. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+-----
+
+*The illustration picture is from the low-poly, SNES-like 3D rail shooter* **[Ex-Zodiac](https://benhickling.itch.io/ex-zodiac)** *developed by [Ben Hickling](https://twitter.com/BenHickling). Follow its development on [Twitter](https://twitter.com/BenHickling) and [itch.io](https://benhickling.itch.io/), and stay tuned for an upcoming demo version!*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-beta-1.md b/collections/_article/dev-snapshot-godot-3-2-beta-1.md
new file mode 100644
index 0000000000..7d85b45846
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-beta-1.md
@@ -0,0 +1,56 @@
+---
+title: "Dev snapshot: Godot 3.2 beta 1"
+excerpt: "After three well-tested and quite stable alpha builds, we're now ready to enter the beta stage for the upcoming Godot 3.2 release.
+The beta stage corresponds for us to a release freeze, which means that we will only consider critical bug fixes for merging in the master branch, and that until Godot 3.2 is released."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5dc/2d4/f59/5dc2d4f59ea0f935451715.jpg
+date: 2019-11-06 14:14:47
+---
+
+After three well-tested and quite stable *alpha* builds, we're now ready to enter the *beta* stage for the upcoming Godot 3.2 release.
+
+We thus publish **Godot 3.2 beta 1** as our next iteration, fixing various issues from previous builds. [263 commits](https://github.com/godotengine/godot/compare/35944aebdeb4c3b5869aaeedaaded02397b7ce92...077b5f6c2c06bb2c0af525ee25f87e0db719f9d2) have been merged since 3.2 alpha 3. This release is built from commit [077b5f6](https://github.com/godotengine/godot/commit/077b5f6c2c06bb2c0af525ee25f87e0db719f9d2).
+
+The beta stage corresponds for us to a release freeze, as [announced today on GitHub](https://github.com/godotengine/godot/issues/33389), which means that we will only consider critical bug fixes for merging in the master branch, and that until Godot 3.2 is released. This way, we can focus on making the 3.2 release as stable as possible with continuously increasing the scope of its new features.
+
+*Note: Illustration credits at the bottom of this page.*
+
+## Disclaimer
+
+**IMPORTANT: This is a *[beta](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta)* build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.2 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor Hugo Locurcio is maintaining.
+
+Our [past devblogs](https://godotengine.org/devblog) should also give you an idea of the main highlights of the upcoming release. Note that the Vulkan port outlined in Juan's latest posts is developed in a separate branch for Godot 4.0, and is not included in this release.
+
+Documentation writers are hard at work to catch up with the new features, and the [latest branch](http://docs.godotengine.org/en/latest/) should already include details on many of the new 3.2 features.
+
+For changes since the last alpha build, see [the list of commits](https://github.com/godotengine/godot/compare/35944aebdeb4c3b5869aaeedaaded02397b7ce92...077b5f6c2c06bb2c0af525ee25f87e0db719f9d2).
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary that matches your platform:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.2/beta1/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2/beta1/mono/) (C# support + all the above). You need to have MSbuild installed to use the Mono build. Relevant parts of Mono 5.18.1.3 are included in this build.
+
+**IMPORTANT:** Make backups of your Godot 3.1 projects before opening them in any 3.2 development build.
+
+Notes:
+
+- Due to some build issues beta1 does not have export templates for the UWP platform. This will be fixed in later builds.
+
+## Bug reports
+
+There are still [hundreds of open bug reports](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+milestone%3A3.2+label%3Abug+) for the 3.2 milestone, which means that we are aware of many bugs already. Yet, many of those issues may not be critical for the 3.2 release, and now that we reached the release freeze, they will be reviewed again and some pushed back to later milestones.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.2 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+-----
+
+*The illustration picture is from the gorgeous procedural arcade shooter* **[Infinistate](http://www.fracteed.com/infinistate.html)**, *developed by [James Redmond](https://twitter.com/fracteed) ([Fracteed](http://www.fracteed.com/)). Fracteed is an early adopter of Godot 3.0's new PBR pipeline, and helped a lot testing and improving it with his impressive artwork. Follow* Infinistate*'s development on [Twitter](https://twitter.com/fracteed) and stay tuned for a possible Early Access release next year!*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-beta-2.md b/collections/_article/dev-snapshot-godot-3-2-beta-2.md
new file mode 100644
index 0000000000..10e9326c0d
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-beta-2.md
@@ -0,0 +1,63 @@
+---
+title: "Dev snapshot: Godot 3.2 beta 2"
+excerpt: "We now release Godot 3.2 beta 2 with two weeks of bug fixes over the previous snapshot. Notable changes include the addition of WebAssembly export templates for the Mono build, as well as C# 8 support via Mono 6.6.0 Preview."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5dd/7f7/f3b/5dd7f7f3b7de4872680557.jpg
+date: 2019-11-22 15:00:53
+---
+
+**Update:** It turns out that the update to Mono 6.x did not go as smoothly as we hoped. The Mono binaries in this beta appear not to work properly on Windows and macOS, so unless you're running Linux, it is recommended to stay with [3.2 beta 1](/article/dev-snapshot-godot-3-2-beta-1) or [compile from the `master` branch](https://docs.godotengine.org/en/latest/development/compiling/compiling_with_mono.html) if you use C#. If you don't use C#, the classical build still works as usual.
+
+---
+
+We published a first beta build for Godot 3.2 [two weeks ago](/article/dev-snapshot-godot-3-2-beta-1), and many bug fixes and improvements have been merged in the meantime. It's time for **Godot 3.2 beta 2**!
+
+The most notable is the **WebAssembly support for Mono exports**, which means that C# projects can now run on the Web! See [Ignacio's progress report](/article/csharp-wasm-aot) for details. I spent most of my time the past week working on the buildsystem to be able to ship Wasm templates for Mono, with a lot of help from Ignacio to iron out issues with both Emscripten and Mono. At long last, we managed to get a working build which is included in the Mono export templates for this beta!
+
+Another noteworthy change for the Mono version is that we now use Mono 6.6.0 Preview, which provides support for C# 8 and many other enhancements. While 6.6.0 has not been labelled stable yet, this should happen soon and we needed a very recent version for proper WebAssembly support in Mono, which has matured a lot over the past few months.
+
+Note that the AOT compilation support merged recently for C# is not included in those builds. This will be worked on in coming months and should be shipped in a 3.2.x maintenance update once it has been extensively tested.
+
+[313 commits](https://github.com/godotengine/godot/compare/077b5f6c2c06bb2c0af525ee25f87e0db719f9d2...b7ea22c5d203da1b592a743a4c893de25cd34408) have been merged since 3.2 beta 1. This release is built from commit [b7ea22c](https://github.com/godotengine/godot/commit/b7ea22c5d203da1b592a743a4c893de25cd34408).
+
+*Note: Illustration credits at the bottom of this page.*
+
+## Disclaimer
+
+**IMPORTANT: This is a *[beta](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta)* build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.2 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor Hugo Locurcio is maintaining.
+
+Our [past devblogs](https://godotengine.org/devblog) should also give you an idea of the main highlights of the upcoming release. Note that the Vulkan port outlined in Juan's latest posts is developed in a separate branch for Godot 4.0, and is not included in this release.
+
+Documentation writers are hard at work to catch up with the new features, and the [latest branch](https://docs.godotengine.org/en/latest/) should already include details on many of the new 3.2 features.
+
+For changes since the last alpha build, see [the list of commits](https://github.com/godotengine/godot/compare/077b5f6c2c06bb2c0af525ee25f87e0db719f9d2...b7ea22c5d203da1b592a743a4c893de25cd34408).
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary that matches your platform:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.2/beta2/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2/beta2/mono/) (C# support + all the above). You need to have MSbuild installed to use the Mono build. Relevant parts of Mono 6.6.0 Preview are included in this build.
+
+**IMPORTANT:** Make backups of your Godot 3.1 projects before opening them in any 3.2 development build.
+
+Notes:
+
+- Due to some build issues beta2 does not have export templates for the UWP platform. This will be fixed in later builds.
+
+## Bug reports
+
+There are still [hundreds of open bug reports](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+milestone%3A3.2+label%3Abug+) for the 3.2 milestone, which means that we are aware of many bugs already. Yet, many of those issues may not be critical for the 3.2 release, and now that we reached the release freeze, they will be reviewed again and some pushed back to later milestones.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.2 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+-----
+
+*The illustration picture is from the innovative action adventure RPG* **[Bloom: Memories](https://store.steampowered.com/app/1145440/Bloom_Memories/)** *by [Studio Fawn](https://twitter.com/StudioFawn), which has been 7 years in the making (ported to Godot along the way) and is close to being released. You can wishlist it on [Steam](https://store.steampowered.com/app/1145440/Bloom_Memories/), follow the developer on [Twitter](https://twitter.com/StudioFawn) or [Patreon](https://www.patreon.com/studiofawn), and see the gorgeous trailer on [YouTube](https://www.youtube.com/watch?v=K4PPDpXEn74).*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-beta-3.md b/collections/_article/dev-snapshot-godot-3-2-beta-3.md
new file mode 100644
index 0000000000..49982fe4bc
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-beta-3.md
@@ -0,0 +1,67 @@
+---
+title: "Dev snapshot: Godot 3.2 beta 3"
+excerpt: "Many fixes have been applied since our previous beta build, encompassing rendering issues, port-specific issues notably on iOS and Windows, and many other fixes all around the editor.
+Due to issues with our build process, this release does not include the usual Mono build, but we are hard at work to fix it and provide a Mono build again with 3.2 beta 4."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5de/80f/61f/5de80f61f222b955329853.jpg
+date: 2019-12-04 20:02:09
+---
+
+**Update 2019-12-04 @ 20:30 UTC:** I've been notified that the iOS Camera and ARKit optional libraries are missing from the export templates. I will reuploaded fixes templates as soon as possible.
+
+**Update 2019-12-04 @ 21:10 UTC:** Here's an [extra templates package](https://downloads.tuxfamily.org/godotengine/3.2/beta3/hotfix/Godot_v3.2-beta3_fixed_ios_templates.tpz) with only the fixed iOS templates. You can install manually after having installed the original package with all templates, [see instructions](https://downloads.tuxfamily.org/godotengine/3.2/beta3/hotfix/README.txt).
+
+---
+
+Again close to two weeks since [beta 2](/article/dev-snapshot-godot-3-2-beta-2), time runs fast! Many fixes have been made in the `master` branch since then, so it's time for a new build with **Godot 3.2 beta 3**!
+
+*Note: Illustration credits at the bottom of this page.*
+
+With beta 2, we upgraded Mono to version 6.6.0 (from 5.18.1.3), but this proved to be more problematic than expected. The Mono build for beta 2 did not run properly on Windows, and we are still hard at work trying to solve that together with upstream. Our buildsystem implies cross-compiling most platforms from Linux containers, and this worked fine until now, but Mono 6.x brings some issues with cross-compilation.
+A proper fix is in the works and will be contributed back upstream, and in the meantime this beta 3 comes **without Mono build**. C# users should for now stay on [3.2 beta 1](/article/dev-snapshot-godot-3-2-beta-1), or wait for 3.2 beta 4 which should have fixed Mono 6.x binaries.
+
+There are still many important changes in this beta which are worth testing in the classical build:
+
+- More work has been done on the rendering, fixing many long-standing bugs as well as some recent regressions that would affect GLES2 mobile and low-end desktop devices. A huge thankyou to [Clay John](https://github.com/clayjohn) for debugging and fixing so many rendering issues.
+- Notably, [a fix was merged](https://github.com/godotengine/godot/pull/33527) in both GLES2 and GLES3 to address some performance issues on iOS (which might also benefit Android). Thanks to [@oeleo1](https://github.com/oeleo1) for doing the research, testing and providing patches.
+- For Windows, many users are having stutter issues when playing games in windowed mode due to conflicts with the system compositor. After many attempts and research, [a fix was finally merged](https://github.com/godotengine/godot/pull/33414) today thanks to [Steve Rogers](https://github.com/TerminalJack). It's currently opt-in, so you have to enable this option if you want to try it. We're not 100% confident yet that the fix is the correct approach, but it does seem to improve the situation for a number of users, so it's worth having it as an option until we can look into it some more.
+- For iOS, the addition of ARKit support by Bastiaan Olij a few months back caused unexpected issues, as the code added to handle the device's camera is flagged as sensitive when uploading games to the App Store, so users were forced to require camera permissions even if not using ARKit or the camera. Thanks to [bruvzg](https://github.com/bruvzg), the [Camera and ARKit modules are now opt-in](https://github.com/godotengine/godot/pull/33992) when exporting an iOS project, and their relevant code will only be linked in Xcode if it's requested.
+- [Marcel Admiraal](https://github.com/madmiraal) reviewed and fixed recent changes to [KinematicBody's `move_and_slide` API](https://github.com/godotengine/godot/pull/33864) (both 2D and 3D). If you're using these nodes, we could really use more test reports to ensure that everything works the same (or better, if you had bugs) in your projects as it did in 3.1.x.
+
+[176 commits](https://github.com/godotengine/godot/compare/b7ea22c5d203da1b592a743a4c893de25cd34408...73fb08289af1260669a3ce118b9866a11c06a0eb) have been merged since 3.2 beta 2. This release is built from commit [73fb082](https://github.com/godotengine/godot/commit/73fb08289af1260669a3ce118b9866a11c06a0eb).
+
+## Disclaimer
+
+**IMPORTANT: This is a *[beta](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta)* build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.2 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor Hugo Locurcio is maintaining.
+
+Our [past devblogs](https://godotengine.org/devblog) should also give you an idea of the main highlights of the upcoming release. Note that the Vulkan port outlined in Juan's latest posts is developed in a separate branch for Godot 4.0, and is not included in this release.
+
+Documentation writers are hard at work to catch up with the new features, and the [latest branch](https://docs.godotengine.org/en/latest/) should already include details on many of the new 3.2 features.
+
+For changes since the last beta build, see [the list of commits](https://github.com/godotengine/godot/compare/b7ea22c5d203da1b592a743a4c893de25cd34408...73fb08289af1260669a3ce118b9866a11c06a0eb).
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary that matches your platform:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.2/beta3/) (GDScript, GDNative, VisualScript).
+- ~~Mono build~~ Unavailable this time, see above note. Use [3.2 beta 1](https://downloads.tuxfamily.org/godotengine/3.2/beta1) in the meantime or [compile it from source](https://docs.godotengine.org/en/latest/development/compiling/compiling_with_mono.html).
+
+**IMPORTANT:** Make backups of your Godot 3.1 projects before opening them in any 3.2 development build.
+
+## Bug reports
+
+There are still [hundreds of open bug reports](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+milestone%3A3.2+label%3Abug+) for the 3.2 milestone, which means that we are aware of many bugs already. Yet, many of those issues may not be critical for the 3.2 release, and now that we reached the release freeze, they will be reviewed again and some pushed back to later milestones.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.2 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+-----
+
+*The illustration picture is from* [**Door in the Woods**](https://store.steampowered.com/app/1189230/Door_in_the_Woods/), *an open world roguelike inspired by the lovecraftian mythos and developed in Godot by [teedoubleuGAMES](https://twitter.com/teedoubleuGAMES). The game was just released today on [Steam](https://store.steampowered.com/app/1189230/Door_in_the_Woods/), so congrats to the developers for the release!*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-beta-4.md b/collections/_article/dev-snapshot-godot-3-2-beta-4.md
new file mode 100644
index 0000000000..51c4b4bd05
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-beta-4.md
@@ -0,0 +1,80 @@
+---
+title: "Dev snapshot: Godot 3.2 beta 4"
+excerpt: "After another two weeks since our previous beta build, here comes Godot 3.2 beta 4, bringing back the Mono build for all supported platforms (including Android and WebAssembly, new in Godot 3.2)."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5df/a07/d9c/5dfa07d9c2fd1796170879.jpg
+date: 2019-12-18 00:00:00
+---
+
+**Update 2019-12-21 @ 10:00 UTC:** Two packaging issues have been fixed with the Mono builds:
+- The Mono export templates `.tpz` lacked the Windows and Unix-specific base class libraries, so it was not possible to export Linux/macOS binaries from Windows and the other way around. This is now fixed in the [export templates](https://downloads.tuxfamily.org/godotengine/3.2/beta4/mono/Godot_v3.2-beta4_mono_export_templates.tpz) for new downloads. Users who already installed the Mono templates can simply get this [hotfix archive](https://downloads.tuxfamily.org/godotengine/3.2/beta4/mono/Godot_v3.2-beta4_mono_desktop_bcl_hotfix.tpz) and install it from the editor on top of the existing templates (it should add `net_4_x` and `net_4_x_win` folders in the templates `bcl` folder).
+- The macOS editor binary had a configuration issue, which has been fixed. macOS users should [redownload it](https://downloads.tuxfamily.org/godotengine/3.2/beta4/mono/Godot_v3.2-beta4_mono_osx.64.zip) if they got it before this update.
+
+---
+
+After another two weeks since our [previous beta build](/article/dev-snapshot-godot-3-2-beta-3), here comes Godot **3.2 beta 4**, bringing back the Mono build for all supported platforms (including Android and WebAssembly, new in Godot 3.2).
+
+*Note: Illustration credits at the bottom of this page.*
+
+A month ago, we attempted to upgrade our Mono version to 6.6.0 (from 5.18.1.3) which is necessary for the WebAssembly target. It brought some issues with the cross-compilation and packaging of our binaries, so the Windows and macOS Mono builds were not functional in beta 2, and we skipped Mono builds altogether in beta 3.
+
+Since then, [Hein-Pieter](https://github.com/hpvb) spent some time debugging and fixing our cross-compilation issues. He has some work-in-progress patches that will be contributed back to the upstream Mono project, but for now we used a workaround using [Wine](http://www.winehq.org/).
+
+Apart from fixing Mono builds, there have been various important changes since beta 3. Here's a short selection:
+
+- Android: Acquire MulticastLock on Android when using broadcast/multicast ([GH-33910](https://github.com/godotengine/godot/pull/33910)).
+- GDScript: Fix some cases where typed assignment gets invalid ([GH-34333](https://github.com/godotengine/godot/pull/34333)).
+- GLES2: Fix shadow color in GLES2 by making sRGB ([GH-34367](https://github.com/godotengine/godot/pull/34367)).
+- GLES2: Force 32 bit depth buffer for WebGL ([GH-34237](https://github.com/godotengine/godot/pull/34237)).
+- GLES2: Use renderbuffer depth for post-process buffers when appropriate ([GH-34238](https://github.com/godotengine/godot/pull/34238)).
+- iOS: Allow to change the home indicator behaviour ([GH-34229](https://github.com/godotengine/godot/pull/34229)).
+- iOS: Disable armv7 target by default as we no longer provide templates for it ([GH-34138](https://github.com/godotengine/godot/pull/34138)). Users who still want to support armv7 iOS devices need to compile their own export templates.
+- Localization: Fixes in the handling of language code and localized resources ([GH-34103](https://github.com/godotengine/godot/pull/34103)).
+- macOS: Fix potential crash when moving window between Retina and non-Retina monitors ([GH-34202](https://github.com/godotengine/godot/pull/34202)).
+- Mono: Fix class parser bug with 'where T : struct' ([GH-34334](https://github.com/godotengine/godot/pull/34334)).
+- Mono: Support for JetBrains Rider as external editor ([GH-34181](https://github.com/godotengine/godot/pull/34181)).
+- Mono: Various fixes to Android support ([GH-34101](https://github.com/godotengine/godot/pull/34101)).
+- Physics: Change CollisionPolygon convex shapes generation to use the same algorithm as CollisionPolygon2D, now also available at runtime ([GH-34293](https://github.com/godotengine/godot/pull/34293)).
+- Windows: Fix extremely slow linking with MinGW due to exceeding command line size limit ([GH-23447](https://github.com/godotengine/godot/pull/34227)).
+- Various crash fixes on wrong API usage.
+- A good number of documentation and translation updates.
+
+[246 commits](https://github.com/godotengine/godot/compare/73fb08289af1260669a3ce118b9866a11c06a0eb...d1bce5c679bd77b50ddae2c3841e5157c6a0b917) have been merged since 3.2 beta 3. This release is built from commit [d1bce5c](https://github.com/godotengine/godot/commit/d1bce5c679bd77b50ddae2c3841e5157c6a0b917).
+
+## Disclaimer
+
+**IMPORTANT: This is a *[beta](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta)* build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.2 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor Hugo Locurcio is maintaining.
+
+Our [past devblogs](https://godotengine.org/devblog) should also give you an idea of the main highlights of the upcoming release. Note that the Vulkan port outlined in Juan's latest posts is developed in a separate branch for Godot 4.0, and is not included in this release.
+
+Documentation writers are hard at work to catch up with the new features, and the [latest branch](https://docs.godotengine.org/en/latest/) should already include details on many of the new 3.2 features.
+
+For changes since the last beta build, see [the list of commits](https://github.com/godotengine/godot/compare/73fb08289af1260669a3ce118b9866a11c06a0eb...d1bce5c679bd77b50ddae2c3841e5157c6a0b917).
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary that matches your platform:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.2/beta4/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2/beta4/mono) (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.6.0.160 are included in this build.
+
+**IMPORTANT:** Make backups of your Godot 3.1 projects before opening them in any 3.2 development build.
+
+## Bug reports
+
+There are still [hundreds of open bug reports](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+milestone%3A3.2+label%3Abug+) for the 3.2 milestone, which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.2 release and will be pushed back to later milestones.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.2 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.1.x no longer works in 3.2 beta).
+
+-----
+
+*The illustration picture is from* [**Hive Time**](https://cheeseness.itch.io/hive-time), *a bee-themed base-building game released last week by [Cheeseness](https://twitter.com/ValiantCheese), [Mimness](https://twitter.com/MimLofBees) and [Peter](http://www.kestrelpi.co.uk/). Available now on [**itch.io**](https://cheeseness.itch.io/hive-time). Follow updates on the game's [Twitter](https://twitter.com/hive_time) account.*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-beta-5.md b/collections/_article/dev-snapshot-godot-3-2-beta-5.md
new file mode 100644
index 0000000000..c51e901ded
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-beta-5.md
@@ -0,0 +1,53 @@
+---
+title: "Dev snapshot: Godot 3.2 beta 5"
+excerpt: "Happy new year! After a brief holiday where contributors kept fixing many issues, we now release Godot 3.2 beta 5 to iterate upon the relatively good state that we had with the previous beta. Both the master branch and the official buildsystem are now starting to be quite reliable, and we should be ready for a release candidate soon."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5e0/f88/cc3/5e0f88cc3ebea443218386.jpg
+date: 2020-01-03 19:26:26
+---
+
+To start the new year with a bang, we finally release the long awaited... **Godot 3.2 beta 5**! Right, yet another beta build, but this one is so much closer to the release candidate ;)
+
+More seriously, we are quite happy with the current state of the `master` branch and a lot of important bug fixes have been made since the previous beta 4. The Mono build seems to behave and barring any big regression, we should be able to have a release candidate within a week or so.
+
+*Note: Illustration credits at the bottom of this page.*
+
+[245 commits](https://github.com/godotengine/godot/compare/d1bce5c679bd77b50ddae2c3841e5157c6a0b917...399e53e8c328f47bc116b743cd19c66c83e1122b) have been merged since 3.2 beta 4. This release is built from commit [399e53e](https://github.com/godotengine/godot/commit/399e53e8c328f47bc116b743cd19c66c83e1122b).
+
+## Disclaimer
+
+**IMPORTANT: This is a *[beta](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta)* build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.2 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor Hugo Locurcio is maintaining.
+
+Our [past devblogs](https://godotengine.org/devblog) should also give you an idea of the main highlights of the upcoming release. Note that the Vulkan port outlined in Juan's latest posts is developed in a separate branch for Godot 4.0, and is not included in this release.
+
+Documentation writers are hard at work to catch up with the new features, and the [latest branch](https://docs.godotengine.org/en/latest/) should already include details on many of the new 3.2 features.
+
+For changes since the last beta build, see [the list of commits](https://github.com/godotengine/godot/compare/d1bce5c679bd77b50ddae2c3841e5157c6a0b917...399e53e8c328f47bc116b743cd19c66c83e1122b).
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary that matches your platform:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.2/beta5/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2/beta5/mono) (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.6.0.160 are included in this build.
+
+**IMPORTANT:** Make backups of your Godot 3.1 projects before opening them in any 3.2 development build.
+
+## Bug reports
+
+There are still [hundreds of open bug reports](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+milestone%3A3.2+label%3Abug+) for the 3.2 milestone, which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.2 release and will be pushed back to later milestones.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.2 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.1.x no longer works in 3.2 beta).
+
+-----
+
+*The illustration picture is a screenshot from* [**Haiki**](https://twitter.com/xr3alx), *a juicy platformer developed in Godot by [Richard](https://twitter.com/xr3alx) since 2017. Follow Richard [on Twitter](https://twitter.com/xr3alx) for updates about the game.*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-2-beta-6.md b/collections/_article/dev-snapshot-godot-3-2-beta-6.md
new file mode 100644
index 0000000000..bf63988b47
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-2-beta-6.md
@@ -0,0 +1,51 @@
+---
+title: "Dev snapshot: Godot 3.2 beta 6"
+excerpt: "After a very busy week with many important bug fixes (plus a bunch of low risk enhancements and a lot of documentation updates), here's Godot 3.2 beta 6! As mentioned in the previous post, we're close to the Release Candidate stage and I hesitated to name this build as such. Since there were a number of big changes though I opted for making it another beta, and if all goes well testing it we should have a RC 1 in coming days."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5e1/9ae/32b/5e19ae32b8b87812018580.png
+date: 2020-01-11 11:15:39
+---
+
+After a very busy week with many important bug fixes (plus a bunch of low risk enhancements and a lot of documentation updates), here's **Godot 3.2 beta 6**! As mentioned in the [previous post](/article/dev-snapshot-godot-3-2-beta-5), we're close to the Release Candidate stage and I hesitated to name this build as such. Since there were a number of big changes though I opted for making it another beta, and if all goes well testing it we should have a RC 1 in coming days.
+
+*Note: Illustration credits at the bottom of this page.*
+
+[219 commits](https://github.com/godotengine/godot/compare/399e53e8c328f47bc116b743cd19c66c83e1122b...0ab1726b43dbe81c96d208a41a582435b76fd058) have been merged since 3.2 beta 5. This release is built from commit [0ab1726](https://github.com/godotengine/godot/commit/0ab1726b43dbe81c96d208a41a582435b76fd058).
+
+## Disclaimer
+
+**IMPORTANT: This is a *[beta](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta)* build, which means that it is *not suitable* for use in production, nor for press reviews of what Godot 3.2 would be on its release.**
+
+There will still be various fixes made before the final release, and we will need your [detailed bug reports](https://github.com/godotengine/godot/issues) to debug issues and fix them.
+
+## The features
+
+Release notes are not written yet, but you can refer to the [detailed changelog](https://gist.github.com/Calinou/49aefe52ce8f67ffa3f743932123d14f) that our contributor Hugo Locurcio is maintaining.
+
+Our [past devblogs](https://godotengine.org/devblog) should also give you an idea of the main highlights of the upcoming release. Note that the Vulkan port outlined in Juan's latest posts is developed in a separate branch for Godot 4.0, and is not included in this release.
+
+Documentation writers are hard at work to catch up with the new features, and the [latest branch](https://docs.godotengine.org/en/latest/) should already include details on many of the new 3.2 features.
+
+For changes since the last beta build, see [the list of commits](https://github.com/godotengine/godot/compare/399e53e8c328f47bc116b743cd19c66c83e1122b...0ab1726b43dbe81c96d208a41a582435b76fd058).
+
+## Downloads
+
+The download links are not featured on the [Download](/download) page for now to avoid confusion for new users. Instead, browse one of our download repository and fetch the editor binary that matches your platform:
+
+- [Classical build](https://downloads.tuxfamily.org/godotengine/3.2/beta6/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.2/beta6/mono) (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.6.0.161 are included in this build.
+
+**IMPORTANT:** Make backups of your Godot 3.1 projects before opening them in any 3.2 development build.
+
+## Bug reports
+
+There are still [hundreds of open bug reports](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+milestone%3A3.2+label%3Abug+) for the 3.2 milestone, which means that we are aware of many bugs already. Yet, many of those issues are not critical for the 3.2 release and will be pushed back to later milestones.
+
+As a tester, you are encouraged to open bug reports if you experience issues with 3.2 beta. Please check first the [existing issues](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.1.x no longer works in 3.2 beta).
+
+-----
+
+*The illustration picture is from* [**Sealed Bite**](https://securas.itch.io/sealedbite), *a delightful pixel art metroidvania by [Securas](https://twitter.com/Securas2010) with music by [Wandard](https://soundcloud.com/fabienmerten), which is the winning entry of the [GitHub Game Off 2019](https://itch.io/jam/game-off-2019)! Check it out on [http://itch.io](https://securas.itch.io/sealedbite), or play with the source files on [GitHub](https://github.com/securas/SealedBite). Be sure to follow [Securas on Twitter](https://twitter.com/Securas2010), who is allegedly one of the most prolific and talented Godot jammers!*
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-4-beta-2.md b/collections/_article/dev-snapshot-godot-3-4-beta-2.md
new file mode 100644
index 0000000000..0634e05ba8
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-4-beta-2.md
@@ -0,0 +1,218 @@
+---
+title: "Dev snapshot: Godot 3.4 beta 2"
+excerpt: "Here's a first official dev snapshot for the upcoming Godot 3.4, with a lot of important improvements such as portal-based occlusion culling, lightmapper soft shadows, physics fixes, fixes to iOS C# support, Mono support for macOS ARM64, a whole new theme editor, and more!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/610/012/b82/610012b827c7a703515304.jpg
+date: 2021-07-27 14:08:23
+---
+
+It's finally time for some extensive testing of the upcoming Godot 3.4 release, which is already quite feature-packed a mere 3 months after the [3.3 release](https://godotengine.org/article/godot-3-3-has-arrived)!
+
+And you read correctly, this is 3.4 **beta 2**, even though we never had a formal beta 1 announcement on this blog. [3.4 beta 1 is available for download](https://downloads.tuxfamily.org/godotengine/3.4/beta1/) for comparison purposes, but since it had a major regression on [C# support on Windows](https://github.com/godotengine/godot/issues/50486), I skipped its blog post...
+
+... which gave me some more time to go through the huge changelog and list some of the main changes below! There's still more I want to add over coming days, but there's no reason to delay the publication of the beta 2 builds.
+
+As usual, you can try it live with the [**online version of the Godot editor**](https://editor.godotengine.org/3.4.beta2/godot.tools.html) updated for this release.
+
+## Highlights
+
+The main changes coming in Godot 3.4 and included in this beta are:
+
+- Animation: Add animation "reset" track feature ([GH-44558](https://github.com/godotengine/godot/pull/44558)).
+- C#: iOS and Apple Silicon fixes ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+ * iOS: Fix `P/Invoke` symbols being stripped by the linker. This would often result in a `EntryPointNotFoundException` crash at runtime.
+ * macOS: Mono builds are now universal builds with support for both `x86_64` and `arm64` architectures.
+- Core: Make all file access 64-bit (`uint64_t`) ([GH-47254](https://github.com/godotengine/godot/pull/47254)).
+ * This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes.
+- Core: Add frame delta smoothing option ([GH-48390](https://github.com/godotengine/godot/pull/48390)).
+ * This option is enabled by default (`application/run/delta_smoothing`). Please report any issue.
+- Crypto: Add AESContext, HMACContext, RSA public keys, encryption, decryption, sign, and verify ([GH-48144](https://github.com/godotengine/godot/pull/48144), [GH-48869](https://github.com/godotengine/godot/pull/48869)).
+- Editor: Overhaul the theme editor and improve user experience ([GH-49774](https://github.com/godotengine/godot/pull/49774)).
+- HTML5: Export as Progressive Web App (PWA) ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Implement Godot <-> JavaScript interface ([GH-48691](https://github.com/godotengine/godot/pull/48691)).
+- Import: Implement lossless WebP encoding ([GH-47854](https://github.com/godotengine/godot/pull/47854)).
+- Import: Backport improved glTF module with scene export support ([GH-49120](https://github.com/godotengine/godot/pull/49120)).
+- macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks ([GH-46860](https://github.com/godotengine/godot/pull/46860)).
+- macOS: Add notarization support when exporting for macOS on a macOS host ([GH-49276](https://github.com/godotengine/godot/pull/49276)).
+- Mesh: Options to clean/simplify convex hull generated from mesh ([GH-50328](https://github.com/godotengine/godot/pull/50328)).
+- Particles: Add ring emitter for 3D particles ([GH-47801](https://github.com/godotengine/godot/pull/47801)).
+- Physics: Fixing 2D moving platform logic ([GH-50166](https://github.com/godotengine/godot/pull/50166)).
+- Physics: Various fixes to 2D and 3D KinematicBody `move_and_slide` and `move_and_collide` ([GH-50495](https://github.com/godotengine/godot/pull/50495)).
+- Rendering: Rooms and portals-based occlusion culling ([GH-46130](https://github.com/godotengine/godot/pull/46130)).
+ * Extensive documentation will be available soon. In the meantime, you can read the work in progress on the [godot-docs repository](https://github.com/godotengine/godot-docs/pull/5111/files).
+- Rendering: Fixes depth sorting of meshes with transparent textures ([GH-50721](https://github.com/godotengine/godot/pull/50721)).
+- Rendering: Add soft shadows to the CPU lightmapper ([GH-50184](https://github.com/godotengine/godot/pull/50184)).
+- Rendering: Combined the DOF far and DOF near passes ([GH-50723](https://github.com/godotengine/godot/pull/50723)).
+- Rendering: Import option to split vertex buffer stream in positions and attributes ([GH-46574](https://github.com/godotengine/godot/pull/46574)).
+- RichTextLabel: Fix auto-wrapping on CJK texts ([GH-49280](https://github.com/godotengine/godot/pull/49280)).
+- Shaders: Add support for structs and fragment-to-light varyings ([GH-48075](https://github.com/godotengine/godot/pull/48075)).
+- VisualScript: Improve and streamline VisualScriptFuncNodes `Call` `Set` `Get` ([GH-50709](https://github.com/godotengine/godot/pull/50709)).
+
+All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.4-stable.
+
+## Changes
+
+Here's a curated changelog with links to the relevant pull requests for details. The list is not exhaustive and will be completed in the future to include more noteworthy changes.
+
+Note that some of the changes in 3.4 have already been backported and published in [Godot 3.2.1](https://godotengine.org/article/maintenance-release-godot-3-2-1) and [3.2.2](https://godotengine.org/article/maintenance-release-godot-3-2-2), and therefore they were not listed here again. You can refer to the changelogs of those maintenance releases for details on what you might have missed since 3.3-stable.
+
+- Android: Add basic user data backup option ([GH-49070](https://github.com/godotengine/godot/pull/49070)).
+- Android: Add GDNative libraries to Android custom Gradle builds ([GH-49912](https://github.com/godotengine/godot/pull/49912)).
+- Android: Remove non-functional native video OS methods ([GH-48537](https://github.com/godotengine/godot/pull/48537)).
+- Animation: Add animation "reset" track feature ([GH-44558](https://github.com/godotengine/godot/pull/44558)).
+- Animation: Fix Tween active state and repeat after `stop()` and then `start()` ([GH-47142](https://github.com/godotengine/godot/pull/47142)).
+- Animation: Allow renaming bones and blend shapes ([GH-42827](https://github.com/godotengine/godot/pull/42827)).
+- Animation: Fix issues with BlendSpace2D BLEND_MODE_DISCRETE_CARRY ([GH-48375](https://github.com/godotengine/godot/pull/48375)).
+- Animation: Fixed issue where bones become detached if multiple SkeletonIK nodes are used ([GH-49031](https://github.com/godotengine/godot/pull/49031)).
+- Buildsystem: Refactor module defines into a generated header ([GH-50466](https://github.com/godotengine/godot/pull/50466)).
+- ButtonGroup: Add a `pressed `signal ([GH-48500](https://github.com/godotengine/godot/pull/48500)).
+- Debugger: Automatic remote debugger port assignment ([GH-37067](https://github.com/godotengine/godot/pull/37067)).
+- C#: iOS and Apple Silicon fixes ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+ * iOS: Fix `P/Invoke` symbols being stripped by the linker. This would often result in a `EntryPointNotFoundException` crash at runtime.
+ * macOS: Mono builds are now universal builds with support for both `x86_64` and `arm64` architectures.
+- Camera2D: Make the most recently added current Camera2D take precedence ([GH-50112](https://github.com/godotengine/godot/pull/50112)).
+- CheckBox: Add disabled theme icons ([GH-37755](https://github.com/godotengine/godot/pull/37755)).
+- ColorPicker: Display previous color and allow selecting it back ([GH-48611](https://github.com/godotengine/godot/pull/48611), [GH-48623](https://github.com/godotengine/godot/pull/48623)).
+- Core: Make all file access 64-bit (`uint64_t`) ([GH-47254](https://github.com/godotengine/godot/pull/47254)).
+ * This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes.
+- Core: Add frame delta smoothing option ([GH-48390](https://github.com/godotengine/godot/pull/48390)).
+ * This option is enabled by default (`application/run/delta_smoothing`). Please report any issue.
+- Core: Add option to sync frame delta after draw ([GH-48555](https://github.com/godotengine/godot/pull/48555)).
+ * This option is experimental and disabled by default (`application/run/delta_sync_after_draw`). Please try it out and report any issue.
+- Core: Thread callbacks can now take optional parameters ([GH-38078](https://github.com/godotengine/godot/pull/38078)).
+- Core: Add support for numeric XML entities to XMLParser ([GH-47978](https://github.com/godotengine/godot/pull/47978)).
+- Core: Add option for BVH thread safety ([GH-48892](https://github.com/godotengine/godot/pull/48892)).
+- Core: Fix sub-resource storing the wrong index in cache ([GH-49625](https://github.com/godotengine/godot/pull/49625)).
+- Core: Improve the console error logging appearance: ([GH-49577](https://github.com/godotengine/godot/pull/49577)).
+- Core: Add `Engine.print_error_messages` property to disable printing errors ([GH-50640](https://github.com/godotengine/godot/pull/50640)).
+- Core: Added Node name to `print()` of all nodes, makes `Object::to_string()` virtual ([GH-38819](https://github.com/godotengine/godot/pull/38819)).
+- Crypto: Add AESContext, RSA public keys, encryption, decryption, sign, and verify ([GH-48144](https://github.com/godotengine/godot/pull/48144)).
+- Crypto: Add HMACContext ([GH-48869](https://github.com/godotengine/godot/pull/48869)).
+- Editor: Add zoom support to SpriteFrames editor plugin ([GH-48977](https://github.com/godotengine/godot/pull/48977)).
+- Editor: Fix logic for showing tilemap debug collision shapes ([GH-49075](https://github.com/godotengine/godot/pull/49075)).
+- Editor: Add `EditorResourcePicker` and `EditorScriptPicker` classes for plugins (and internal editor use) ([GH-49491](https://github.com/godotengine/godot/pull/49491)).
+- Editor: Refactor `Theme` item management in the theme editor ([GH-49512](https://github.com/godotengine/godot/pull/49512)).
+- Editor: Overhaul the theme editor and improve user experience ([GH-49774](https://github.com/godotengine/godot/pull/49774)).
+- Editor: Allow to create a node at specific position ([GH-50242](https://github.com/godotengine/godot/pull/50242)).
+- Editor: Implement a `%command%` placeholder in the Main Run Args setting ([GH-35992](https://github.com/godotengine/godot/pull/35992)).
+- Editor: Add keyboard shortcuts to the project manager ([GH-47894](https://github.com/godotengine/godot/pull/47894)).
+- Editor: Handle portrait mode monitors in the automatic editor scale detection ([GH-48597](https://github.com/godotengine/godot/pull/48597)).
+- Editor: Add custom debug shape thickness and color options to RayCast ([GH-49726](https://github.com/godotengine/godot/pull/49726)).
+- Editor: Properly update NodePaths in the editor in more cases when nodes are moved or renamed ([GH-49812](https://github.com/godotengine/godot/pull/49812)).
+- Editor: Improve 2D editor zoom logic ([GH-50490](https://github.com/godotengine/godot/pull/50490), [GH-50499](https://github.com/godotengine/godot/pull/50499)).
+- Editor: Make several actions in the Inspector dock more obvious ([GH-50528](https://github.com/godotengine/godot/pull/50528)).
+- Editor: Improve the editor feature profiles UX ([GH-49643](https://github.com/godotengine/godot/pull/49643)).
+- Editor: Improve the UI/UX of the Export Template Manager dialog ([GH-50531](https://github.com/godotengine/godot/pull/50531)).
+- Editor: Improve FileSystem dock sorting ([GH-50565](https://github.com/godotengine/godot/pull/50565)).
+- Editor: Add the ability to reorder array elements from the inspector ([GH-50651](https://github.com/godotengine/godot/pull/50651)).
+- Editor: Assign value to property by dropping to scene tree ([GH-50700](https://github.com/godotengine/godot/pull/50700)).
+- Font: Re-add support for kerning in DynamicFont ([GH-49377](https://github.com/godotengine/godot/pull/49377)).
+- GLES2: Add basic support for CPU blendshapes ([GH-48480](https://github.com/godotengine/godot/pull/48480)).
+- GLES3: Allow repeat flag in viewport textures ([GH-34008](https://github.com/godotengine/godot/pull/34008)).
+- GLES3: Fix draw order of transparent materials with multiple directional lights ([GH-47129](https://github.com/godotengine/godot/pull/47129)).
+- GLES3: Fix multimesh being colored by other nodes GLES3 ([GH-47582](https://github.com/godotengine/godot/pull/47582)).
+- GraphEdit: Enable zooming with Ctrl + Scroll wheel and related fixes to zoom handling ([GH-47173](https://github.com/godotengine/godot/pull/47173)).
+- GraphEdit: Make zoom limits and step adjustable ([GH-50526](https://github.com/godotengine/godot/pull/50526)).
+- GraphNode: Properly handle children with "Expand" flag ([GH-39810](https://github.com/godotengine/godot/pull/39810)).
+- HTML5: Debug HTTP server refactor with SSL support ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Export as Progressive Web App (PWA) ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Implement Godot <-> JavaScript interface ([GH-48691](https://github.com/godotengine/godot/pull/48691)).
+- HTML5: Add easy to use download API ([GH-48929](https://github.com/godotengine/godot/pull/48929)).
+- Import: Implement lossless WebP encoding ([GH-47854](https://github.com/godotengine/godot/pull/47854)).
+- Import: Add "Normal Map Invert Y" import option for normal maps ([GH-48693](https://github.com/godotengine/godot/pull/48693)).
+- Import: Backport improved glTF module with scene export support ([GH-49120](https://github.com/godotengine/godot/pull/49120)).
+- Import: Optimize image channel detection ([GH-47396](https://github.com/godotengine/godot/pull/47396)).
+- Import: Fix loading RLE compressed TGA files ([GH-49603](https://github.com/godotengine/godot/pull/49603)).
+- Input: Add support for physical scancodes, fixes non-latin layout scancodes on Linux ([GH-46764](https://github.com/godotengine/godot/pull/46764)).
+- Input: Fix game controllers ignoring the last listed button ([GH-48934](https://github.com/godotengine/godot/pull/48934)).
+ * Breaks compat slightly by changing the value of some of the `JoystickList` enum constants.
+- Input: Allow getting axis/vector values from multiple actions ([GH-50788](https://github.com/godotengine/godot/pull/50788)).
+- iOS: Add pen pressure support for Apple Pencil ([GH-47469](https://github.com/godotengine/godot/pull/47469)).
+- iOS: Add option to automatically generate icons and launch screens ([GH-49464](https://github.com/godotengine/godot/pull/49464)).
+- iOS: Support multiple `plist` types in plugin ([GH-49802](https://github.com/godotengine/godot/pull/49802)).
+- iOS: Remove duplicate orientation setting in the export preset ([GH-48943](https://github.com/godotengine/godot/pull/48943)).
+- Label: Fix valign with stylebox borders ([GH-50478](https://github.com/godotengine/godot/pull/50478)).
+- LineEdit: Double click selects words, triple click selects all the content ([GH-46527](https://github.com/godotengine/godot/pull/46527)).
+- Linux: Fix implementation of `move_to_trash` ([GH-44021](https://github.com/godotengine/godot/pull/44021)).
+- Linux: Fix `Directory::get_space_left()` result ([GH-49222](https://github.com/godotengine/godot/pull/49222)).
+- macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks ([GH-46860](https://github.com/godotengine/godot/pull/46860)).
+- macOS: Allow "on top" windows to enter fullscreen mode ([GH-49017](https://github.com/godotengine/godot/pull/49017)).
+- macOS: Add notarization support when exporting for macOS on a macOS host ([GH-49276](https://github.com/godotengine/godot/pull/49276)).
+- macOS: Fix `Directory::get_space_left()` result ([GH-49222](https://github.com/godotengine/godot/pull/49222)).
+- Mesh: Add a `center_offset` property to both plane primitive and quad primitive ([GH-48763](https://github.com/godotengine/godot/pull/48763)).
+- Mesh: Fix UV mapping on CSGSphere ([GH-49195](https://github.com/godotengine/godot/pull/49195)).
+- Mesh: Options to clean/simplify convex hull generated from mesh ([GH-50328](https://github.com/godotengine/godot/pull/50328)).
+- Networking: Add support for gzip compression in HTTPRequest ([GH-48651](https://github.com/godotengine/godot/pull/48651)).
+- Networking: Add support for multiple address resolution in DNS requests ([GH-49020](https://github.com/godotengine/godot/pull/49020)).
+- Networking: Implement `String::parse_url()` for parsing URLs ([GH-48205](https://github.com/godotengine/godot/pull/48205)).
+- Networking: Add `get_buffered_amount()` to WebRTCDataChannel ([GH-50659](https://github.com/godotengine/godot/pull/50659)).
+- OpenSimplexNoise: Fix swapped axes in `get_image()` ([GH-30424](https://github.com/godotengine/godot/pull/30424)).
+ * Breaks compat. If you need to preserve the 3.2 behavior, swap your first and second arguments in `get_image()`.
+- OpenSimplexNoise: Add support for generating noise images with an offset ([GH-48805](https://github.com/godotengine/godot/pull/48805)).
+- OS: Expose OS data directory getter methods ([GH-49732](https://github.com/godotengine/godot/pull/49732)).
+- Particles: Add ring emitter for 3D particles ([GH-47801](https://github.com/godotengine/godot/pull/47801)).
+- Particles: Fixed `rotate_y` property of particle shaders ([GH-46687](https://github.com/godotengine/godot/pull/46687)).
+- Particles: Fixed behavior of velocity spread ([GH-47310](https://github.com/godotengine/godot/pull/47310)).
+- Physics: Fixing 2D moving platform logic ([GH-50166](https://github.com/godotengine/godot/pull/50166)).
+- Physics: Various fixes to 2D and 3D KinematicBody `move_and_slide` and `move_and_collide` ([GH-50495](https://github.com/godotengine/godot/pull/50495)).
+- Physics: Enable setting the number of physics solver iterations ([GH-38387](https://github.com/godotengine/godot/pull/38387), [GH-50257](https://github.com/godotengine/godot/pull/50257)).
+- Physics: Apply infinite inertia checks to Godot Physics 3D ([GH-42637](https://github.com/godotengine/godot/pull/42637)).
+- Physics: Return RID instead of Object ID in area-body_shape_entered-exited signals ([GH-42743](https://github.com/godotengine/godot/pull/42743)).
+- Physics: Heightmap collision shape support in Godot Physics 3D ([GH-47349](https://github.com/godotengine/godot/pull/47349)).
+- Physics: Add support for Dynamic BVH as 2D physics broadphase ([GH-48314](https://github.com/godotengine/godot/pull/48314)).
+- Physics: Port Bullet's convex hull computer to replace QuickHull ([GH-48533](https://github.com/godotengine/godot/pull/48533)).
+- Physics: Expose `body_test_motion` in 3D physics server ([GH-50103](https://github.com/godotengine/godot/pull/50103)).
+- Physics: Add option to sync motion to physics in 3D KinematicBody ([GH-49446](https://github.com/godotengine/godot/pull/49446)).
+- Physics: Expose collider RID in 2D/3D kinematic collision ([GH-49476](https://github.com/godotengine/godot/pull/49476)).
+- Physics: Support for disabling physics on SoftBody ([GH-49835](https://github.com/godotengine/godot/pull/49835)).
+- Physics: Fix and clean disabled shapes handling in Godot physics servers ([GH-49845](https://github.com/godotengine/godot/pull/49845)).
+- Rendering: Rooms and portals-based occlusion culling ([GH-46130](https://github.com/godotengine/godot/pull/46130)).
+- Rendering: VisualServer now sorts based on AABB position ([GH-43506](https://github.com/godotengine/godot/pull/43506)).
+- Rendering: Fixes depth sorting of meshes with transparent textures ([GH-50721](https://github.com/godotengine/godot/pull/50721)).
+- Rendering: Add soft shadows to the CPU lightmapper ([GH-50184](https://github.com/godotengine/godot/pull/50184)).
+- Rendering: Combined the DOF far and DOF near passes ([GH-50723](https://github.com/godotengine/godot/pull/50723)).
+ * Breaks compat slightly if you used both far and near DOF passes with different amount and quality settings.
+ With the changed API, the "far" amount and quality settings will take precedence and also affect the "near" DOF.
+- Rendering: Import option to split vertex buffer stream in positions and attributes ([GH-46574](https://github.com/godotengine/godot/pull/46574)).
+- Rendering: Fix flipped binormal in SpatialMaterial triplanar mapping ([GH-49950](https://github.com/godotengine/godot/pull/49950)).
+- Rendering: Fix CanvasItem bounding rect calculation in some cases ([GH-49160](https://github.com/godotengine/godot/pull/49160)).
+- RichTextLabel: Fix auto-wrapping on CJK texts ([GH-49280](https://github.com/godotengine/godot/pull/49280)).
+- Shaders: Add support for structs and fragment-to-light varyings ([GH-48075](https://github.com/godotengine/godot/pull/48075)).
+- TextureButton: Add `flip_h` and `flip_v` properties ([GH-30424](https://github.com/godotengine/godot/pull/30424)).
+- TextureProgress: Improve behavior with nine patch ([GH-45815](https://github.com/godotengine/godot/pull/45815)).
+- Theme: Various improvements to the Theme API ([GH-49487](https://github.com/godotengine/godot/pull/49487)).
+- TileSet: Fix selection of spaced atlas tile when using priority ([GH-50886](https://github.com/godotengine/godot/pull/50886)).
+- Viewport: Allow input echo when changing UI focus ([GH-44456](https://github.com/godotengine/godot/pull/44456)).
+- VisualScript: Allow dropping custom node scripts in VisualScript editor ([GH-50696](https://github.com/godotengine/godot/pull/50696)).
+- VisualScript: Expose visual script custom node type hints ([GH-50705](https://github.com/godotengine/godot/pull/50705)).
+- VisualScript: Improve and streamline VisualScriptFuncNodes `Call` `Set` `Get` ([GH-50709](https://github.com/godotengine/godot/pull/50709)).
+- Windows: Send error logs to `stderr` instead of `stdout`, like done on other OSes ([GH-39139](https://github.com/godotengine/godot/pull/39139)).
+- XR: Add `VIEW_INDEX` variable in shader to know which eye/view we're rendering for ([GH-48011](https://github.com/godotengine/godot/pull/48011)).
+- Thirdparty library updates: embree 3.13.0, mbedtls 2.16.11.
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog since 3.3-stable ([chronological](https://downloads.tuxfamily.org/godotengine/3.4/beta2/Godot_v3.4-beta2_changelog_chrono.txt), or [for each contributor](https://downloads.tuxfamily.org/godotengine/3.4/beta2/Godot_v3.4-beta2_changelog_authors.txt)).
+
+This release is built from commit [a71169c0e0ed7644b959189522535337bdb6cb2b](https://github.com/godotengine/godot/commit/a71169c0e0ed7644b959189522535337bdb6cb2b).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.4/beta2/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.4/beta2/mono/) (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono **6.12.0.147** are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.4 beta 2. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2 or earlier no longer works in 3.4 beta 2).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-4-beta-3.md b/collections/_article/dev-snapshot-godot-3-4-beta-3.md
new file mode 100644
index 0000000000..bbcef3e70d
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-4-beta-3.md
@@ -0,0 +1,232 @@
+---
+title: "Dev snapshot: Godot 3.4 beta 3"
+excerpt: "We released 3.4 beta 2 ten days ago as a first testing build for the upcoming Godot 3.4 (yes, beta 1 was skipped). Since then, many bugs have been fixed, including some related to upgrading our build environments. This beta 3 should be a lot stabler."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/610/d3d/7c7/610d3d7c75b4e999613924.jpg
+date: 2021-08-06 20:51:07
+---
+
+The upcoming Godot 3.4 release will provide a number of new features which have been backported from the 4.0 development branch (see our [release policy](https://docs.godotengine.org/en/stable/about/release_policy.html) for details on the various Godot versions). We had a [beta 2 build ten days ago](/article/dev-snapshot-godot-3-4-beta-2), and a number of issues have since been found and fixed, so it's time for **Godot 3.4 beta 3**.
+
+If you already reviewed the changelog for the previous beta, you can skip right to the [differences between beta 2 and beta 3](https://github.com/godotengine/godot/compare/a71169c0e0ed7644b959189522535337bdb6cb2b...8db0bd44249e9cac56cf24c7c192bc782c118638).
+
+This build also fixes a nasty crash on Windows for some projects using dynamic fonts with outlines, triggered by a buildsystem update ([GH-50790](https://github.com/godotengine/godot/issues/50970)).
+
+As usual, you can try it live with the [**online version of the Godot editor**](https://editor.godotengine.org/3.4.beta3/godot.tools.html) updated for this release.
+
+## Highlights
+
+The main changes coming in Godot 3.4 and included in this beta are:
+
+- Animation: Add animation "reset" track feature ([GH-44558](https://github.com/godotengine/godot/pull/44558)).
+- Audio: Fix cubic resampling algorithm ([GH-51082](https://github.com/godotengine/godot/pull/51082)).
+- C#: macOS: Mono builds are now universal builds with support for both `x86_64` and `arm64` architectures ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- C#: iOS: Fix `P/Invoke` symbols being stripped by the linker, resulting in `EntryPointNotFoundException` crash at runtime ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- Core: Make all file access 64-bit (`uint64_t`) ([GH-47254](https://github.com/godotengine/godot/pull/47254)).
+ * This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes.
+- Core: Add frame delta smoothing option ([GH-48390](https://github.com/godotengine/godot/pull/48390)).
+ * This option is enabled by default (`application/run/delta_smoothing`). Please report any issue.
+- Crypto: Add AESContext, HMACContext, RSA public keys, encryption, decryption, sign, and verify ([GH-48144](https://github.com/godotengine/godot/pull/48144), [GH-48869](https://github.com/godotengine/godot/pull/48869)).
+- Editor: Overhaul the theme editor and improve user experience ([GH-49774](https://github.com/godotengine/godot/pull/49774)).
+- HTML5: Export as Progressive Web App (PWA) ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Implement Godot <-> JavaScript interface ([GH-48691](https://github.com/godotengine/godot/pull/48691)).
+- Import: Implement lossless WebP encoding ([GH-47854](https://github.com/godotengine/godot/pull/47854)).
+- Import: Backport improved glTF module with scene export support ([GH-49120](https://github.com/godotengine/godot/pull/49120)).
+- macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks ([GH-46860](https://github.com/godotengine/godot/pull/46860)).
+- macOS: Add notarization support when exporting for macOS on a macOS host ([GH-49276](https://github.com/godotengine/godot/pull/49276)).
+- Mesh: Implement octahedral map normal/tangent attribute compression ([GH-46800](https://github.com/godotengine/godot/pull/46800)).
+- Mesh: Options to clean/simplify convex hull generated from mesh ([GH-50328](https://github.com/godotengine/godot/pull/50328)).
+- Particles: Add ring emitter for 3D particles ([GH-47801](https://github.com/godotengine/godot/pull/47801)).
+- Physics: Fixing 2D moving platform logic ([GH-50166](https://github.com/godotengine/godot/pull/50166)).
+- Physics: Various fixes to 2D and 3D KinematicBody `move_and_slide` and `move_and_collide` ([GH-50495](https://github.com/godotengine/godot/pull/50495)).
+- Rendering: Rooms and portals-based occlusion culling ([GH-46130](https://github.com/godotengine/godot/pull/46130)).
+ * [In-depth documentation is available.](https://docs.godotengine.org/en/3.4/tutorials/3d/portals/index.html)
+- Rendering: Fixes depth sorting of meshes with transparent textures ([GH-50721](https://github.com/godotengine/godot/pull/50721)).
+- Rendering: Add soft shadows to the CPU lightmapper ([GH-50184](https://github.com/godotengine/godot/pull/50184)).
+- Rendering: Import option to split vertex buffer stream in positions and attributes ([GH-46574](https://github.com/godotengine/godot/pull/46574)).
+- RichTextLabel: Fix auto-wrapping on CJK texts ([GH-49280](https://github.com/godotengine/godot/pull/49280)).
+- Shaders: Add support for structs and fragment-to-light varyings ([GH-48075](https://github.com/godotengine/godot/pull/48075)).
+- VisualScript: Improve and streamline VisualScriptFuncNodes `Call` `Set` `Get` ([GH-50709](https://github.com/godotengine/godot/pull/50709)).
+
+All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.4-stable.
+
+## Changes
+
+Here's a curated changelog with links to the relevant pull requests for details. The list is not exhaustive and will be completed in the future to include more noteworthy changes.
+
+Note that some of the changes in 3.4 have already been backported and published in [Godot 3.2.1](https://godotengine.org/article/maintenance-release-godot-3-2-1) and [3.2.2](https://godotengine.org/article/maintenance-release-godot-3-2-2), and therefore they were not listed here again. You can refer to the changelogs of those maintenance releases for details on what you might have missed since 3.3-stable.
+
+- Android: Add basic user data backup option ([GH-49070](https://github.com/godotengine/godot/pull/49070)).
+- Android: Add GDNative libraries to Android custom Gradle builds ([GH-49912](https://github.com/godotengine/godot/pull/49912)).
+- Android: Remove non-functional native video OS methods ([GH-48537](https://github.com/godotengine/godot/pull/48537)).
+- Animation: Add animation "reset" track feature ([GH-44558](https://github.com/godotengine/godot/pull/44558)).
+- Animation: Fix Tween active state and repeat after `stop()` and then `start()` ([GH-47142](https://github.com/godotengine/godot/pull/47142)).
+- Animation: Allow renaming bones and blend shapes ([GH-42827](https://github.com/godotengine/godot/pull/42827)).
+- Animation: Fix issues with BlendSpace2D BLEND_MODE_DISCRETE_CARRY ([GH-48375](https://github.com/godotengine/godot/pull/48375)).
+- Animation: Fixed issue where bones become detached if multiple SkeletonIK nodes are used ([GH-49031](https://github.com/godotengine/godot/pull/49031)).
+- AStar: `get_available_point_id()` returns 0 instead of 1 when empty ([GH-48958](https://github.com/godotengine/godot/pull/48958)).
+- Audio: Fix cubic resampling algorithm ([GH-51082](https://github.com/godotengine/godot/pull/51082)).
+- Buildsystem: Refactor module defines into a generated header ([GH-50466](https://github.com/godotengine/godot/pull/50466)).
+- ButtonGroup: Add a `pressed `signal ([GH-48500](https://github.com/godotengine/godot/pull/48500)).
+- C#: macOS: Mono builds are now universal builds with support for both `x86_64` and `arm64` architectures ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- C#: iOS: Fix `P/Invoke` symbols being stripped by the linker, resulting in `EntryPointNotFoundException` crash at runtime ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- C#: iOS: Cache AOT compiler output ([GH-51191](https://github.com/godotengine/godot/pull/51191)).
+- Camera2D: Make the most recently added current Camera2D take precedence ([GH-50112](https://github.com/godotengine/godot/pull/50112)).
+- CheckBox: Add disabled theme icons ([GH-37755](https://github.com/godotengine/godot/pull/37755)).
+- ColorPicker: Display previous color and allow selecting it back ([GH-48611](https://github.com/godotengine/godot/pull/48611), [GH-48623](https://github.com/godotengine/godot/pull/48623)).
+- Core: Make all file access 64-bit (`uint64_t`) ([GH-47254](https://github.com/godotengine/godot/pull/47254)).
+ * This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes.
+- Core: Add frame delta smoothing option ([GH-48390](https://github.com/godotengine/godot/pull/48390)).
+ * This option is enabled by default (`application/run/delta_smoothing`). Please report any issue.
+- Core: Add option to sync frame delta after draw ([GH-48555](https://github.com/godotengine/godot/pull/48555)).
+ * This option is experimental and disabled by default (`application/run/delta_sync_after_draw`). Please try it out and report any issue.
+- Core: Thread callbacks can now take optional parameters ([GH-38078](https://github.com/godotengine/godot/pull/38078), [GH-51093](https://github.com/godotengine/godot/pull/51093)).
+- Core: Add support for numeric XML entities to XMLParser ([GH-47978](https://github.com/godotengine/godot/pull/47978)).
+- Core: Add option for BVH thread safety ([GH-48892](https://github.com/godotengine/godot/pull/48892)).
+- Core: Fix sub-resource storing the wrong index in cache ([GH-49625](https://github.com/godotengine/godot/pull/49625)).
+- Core: Improve the console error logging appearance: ([GH-49577](https://github.com/godotengine/godot/pull/49577)).
+- Core: Add `Engine.print_error_messages` property to disable printing errors ([GH-50640](https://github.com/godotengine/godot/pull/50640)).
+- Core: Added Node name to `print()` of all nodes, makes `Object::to_string()` virtual ([GH-38819](https://github.com/godotengine/godot/pull/38819)).
+- Crypto: Add AESContext, RSA public keys, encryption, decryption, sign, and verify ([GH-48144](https://github.com/godotengine/godot/pull/48144)).
+- Crypto: Add HMACContext ([GH-48869](https://github.com/godotengine/godot/pull/48869)).
+- Debugger: Automatic remote debugger port assignment ([GH-37067](https://github.com/godotengine/godot/pull/37067)).
+- Debugger: Fix Marshalls infinite recursion crash ([GH-51068](https://github.com/godotengine/godot/pull/51068)).
+- Editor: Add zoom support to SpriteFrames editor plugin ([GH-48977](https://github.com/godotengine/godot/pull/48977)).
+- Editor: Fix logic for showing tilemap debug collision shapes ([GH-49075](https://github.com/godotengine/godot/pull/49075)).
+- Editor: Add `EditorResourcePicker` and `EditorScriptPicker` classes for plugins (and internal editor use) ([GH-49491](https://github.com/godotengine/godot/pull/49491)).
+- Editor: Refactor `Theme` item management in the theme editor ([GH-49512](https://github.com/godotengine/godot/pull/49512)).
+- Editor: Overhaul the theme editor and improve user experience ([GH-49774](https://github.com/godotengine/godot/pull/49774)).
+- Editor: Allow to create a node at specific position ([GH-50242](https://github.com/godotengine/godot/pull/50242)).
+- Editor: Implement a `%command%` placeholder in the Main Run Args setting ([GH-35992](https://github.com/godotengine/godot/pull/35992)).
+- Editor: Add keyboard shortcuts to the project manager ([GH-47894](https://github.com/godotengine/godot/pull/47894)).
+- Editor: Handle portrait mode monitors in the automatic editor scale detection ([GH-48597](https://github.com/godotengine/godot/pull/48597)).
+- Editor: Add custom debug shape thickness and color options to RayCast ([GH-49726](https://github.com/godotengine/godot/pull/49726)).
+- Editor: Properly update NodePaths in the editor in more cases when nodes are moved or renamed ([GH-49812](https://github.com/godotengine/godot/pull/49812)).
+- Editor: Improve 2D editor zoom logic ([GH-50490](https://github.com/godotengine/godot/pull/50490), [GH-50499](https://github.com/godotengine/godot/pull/50499)).
+- Editor: Make several actions in the Inspector dock more obvious ([GH-50528](https://github.com/godotengine/godot/pull/50528)).
+- Editor: Improve the editor feature profiles UX ([GH-49643](https://github.com/godotengine/godot/pull/49643)).
+- Editor: Improve the UI/UX of the Export Template Manager dialog ([GH-50531](https://github.com/godotengine/godot/pull/50531)).
+- Editor: Improve FileSystem dock sorting ([GH-50565](https://github.com/godotengine/godot/pull/50565)).
+- Editor: Add the ability to reorder array elements from the inspector ([GH-50651](https://github.com/godotengine/godot/pull/50651)).
+- Editor: Assign value to property by dropping to scene tree ([GH-50700](https://github.com/godotengine/godot/pull/50700)).
+- Editor: Improve the 3D editor manipulation gizmo ([GH-50597](https://github.com/godotengine/godot/pull/50597)).
+- Editor: Refactor layer property editor grid ([GH-51040](https://github.com/godotengine/godot/pull/51040)).
+- Font: Re-add support for kerning in DynamicFont ([GH-49377](https://github.com/godotengine/godot/pull/49377)).
+- GLES2: Add basic support for CPU blendshapes ([GH-48480](https://github.com/godotengine/godot/pull/48480)).
+- GLES3: Allow repeat flag in viewport textures ([GH-34008](https://github.com/godotengine/godot/pull/34008)).
+- GLES3: Fix draw order of transparent materials with multiple directional lights ([GH-47129](https://github.com/godotengine/godot/pull/47129)).
+- GLES3: Fix multimesh being colored by other nodes GLES3 ([GH-47582](https://github.com/godotengine/godot/pull/47582)).
+- GraphEdit: Enable zooming with Ctrl + Scroll wheel and related fixes to zoom handling ([GH-47173](https://github.com/godotengine/godot/pull/47173)).
+- GraphEdit: Make zoom limits and step adjustable ([GH-50526](https://github.com/godotengine/godot/pull/50526)).
+- GraphNode: Properly handle children with "Expand" flag ([GH-39810](https://github.com/godotengine/godot/pull/39810)).
+- HTML5: Debug HTTP server refactor with SSL support ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Export as Progressive Web App (PWA) ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Implement Godot <-> JavaScript interface ([GH-48691](https://github.com/godotengine/godot/pull/48691)).
+- HTML5: Add easy to use download API ([GH-48929](https://github.com/godotengine/godot/pull/48929)).
+- Import: Implement lossless WebP encoding ([GH-47854](https://github.com/godotengine/godot/pull/47854)).
+- Import: Add "Normal Map Invert Y" import option for normal maps ([GH-48693](https://github.com/godotengine/godot/pull/48693)).
+- Import: Backport improved glTF module with scene export support ([GH-49120](https://github.com/godotengine/godot/pull/49120)).
+- Import: Optimize image channel detection ([GH-47396](https://github.com/godotengine/godot/pull/47396)).
+- Import: Fix loading RLE compressed TGA files ([GH-49603](https://github.com/godotengine/godot/pull/49603)).
+- Input: Add support for physical scancodes, fixes non-latin layout scancodes on Linux ([GH-46764](https://github.com/godotengine/godot/pull/46764)).
+- Input: Fix game controllers ignoring the last listed button ([GH-48934](https://github.com/godotengine/godot/pull/48934)).
+ * Breaks compat slightly by changing the value of some of the `JoystickList` enum constants.
+- Input: Allow getting axis/vector values from multiple actions ([GH-50788](https://github.com/godotengine/godot/pull/50788)).
+- Input: Allow checking for exact matches with Action events ([GH-50874](https://github.com/godotengine/godot/pull/50874)).
+- iOS: Add pen pressure support for Apple Pencil ([GH-47469](https://github.com/godotengine/godot/pull/47469)).
+- iOS: Add option to automatically generate icons and launch screens ([GH-49464](https://github.com/godotengine/godot/pull/49464)).
+- iOS: Support multiple `plist` types in plugin ([GH-49802](https://github.com/godotengine/godot/pull/49802)).
+- iOS: Remove duplicate orientation setting in the export preset ([GH-48943](https://github.com/godotengine/godot/pull/48943)).
+- Label: Fix valign with stylebox borders ([GH-50478](https://github.com/godotengine/godot/pull/50478)).
+- LineEdit: Double click selects words, triple click selects all the content ([GH-46527](https://github.com/godotengine/godot/pull/46527)).
+- Linux: Fix implementation of `move_to_trash` ([GH-44021](https://github.com/godotengine/godot/pull/44021)).
+- Linux: Fix `Directory::get_space_left()` result ([GH-49222](https://github.com/godotengine/godot/pull/49222)).
+- LSP: Implement `didSave` notify and rename request ([GH-48616](https://github.com/godotengine/godot/pull/48616)).
+- LSP: Fix `SymbolKind` reporting wrong types and `get_node()` parsing ([GH-50914](https://github.com/godotengine/godot/pull/50914), [GH-51283](https://github.com/godotengine/godot/pull/51283)).
+- macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks ([GH-46860](https://github.com/godotengine/godot/pull/46860)).
+- macOS: Allow "on top" windows to enter fullscreen mode ([GH-49017](https://github.com/godotengine/godot/pull/49017)).
+- macOS: Add notarization support when exporting for macOS on a macOS host ([GH-49276](https://github.com/godotengine/godot/pull/49276)).
+- macOS: Fix `Directory::get_space_left()` result ([GH-49222](https://github.com/godotengine/godot/pull/49222)).
+- Mesh: Implement octahedral map normal/tangent attribute compression ([GH-46800](https://github.com/godotengine/godot/pull/46800)).
+- Mesh: Add a `center_offset` property to both plane primitive and quad primitive ([GH-48763](https://github.com/godotengine/godot/pull/48763)).
+- Mesh: Fix UV mapping on CSGSphere ([GH-49195](https://github.com/godotengine/godot/pull/49195)).
+- Mesh: Options to clean/simplify convex hull generated from mesh ([GH-50328](https://github.com/godotengine/godot/pull/50328)).
+- Networking: Add support for gzip compression in HTTPRequest ([GH-48651](https://github.com/godotengine/godot/pull/48651)).
+- Networking: Add support for multiple address resolution in DNS requests ([GH-49020](https://github.com/godotengine/godot/pull/49020)).
+- Networking: Implement `String::parse_url()` for parsing URLs ([GH-48205](https://github.com/godotengine/godot/pull/48205)).
+- Networking: Add `get_buffered_amount()` to WebRTCDataChannel ([GH-50659](https://github.com/godotengine/godot/pull/50659)).
+- Networking: WebsocketPeer outbound buffer fixes and buffer size query ([GH-51037](https://github.com/godotengine/godot/pull/51037)).
+- Networking: Fix IP address resolution incorrectly locking the main thread ([GH-51199](https://github.com/godotengine/godot/pull/51199)).
+- OpenSimplexNoise: Fix swapped axes in `get_image()` ([GH-30424](https://github.com/godotengine/godot/pull/30424)).
+ * Breaks compat. If you need to preserve the 3.2 behavior, swap your first and second arguments in `get_image()`.
+- OpenSimplexNoise: Add support for generating noise images with an offset ([GH-48805](https://github.com/godotengine/godot/pull/48805)).
+- OS: Expose OS data directory getter methods ([GH-49732](https://github.com/godotengine/godot/pull/49732)).
+- Particles: Add ring emitter for 3D particles ([GH-47801](https://github.com/godotengine/godot/pull/47801)).
+- Particles: Fixed `rotate_y` property of particle shaders ([GH-46687](https://github.com/godotengine/godot/pull/46687)).
+- Particles: Fixed behavior of velocity spread ([GH-47310](https://github.com/godotengine/godot/pull/47310)).
+- Physics: Fixing 2D moving platform logic ([GH-50166](https://github.com/godotengine/godot/pull/50166)).
+- Physics: Various fixes to 2D and 3D KinematicBody `move_and_slide` and `move_and_collide` ([GH-50495](https://github.com/godotengine/godot/pull/50495)).
+- Physics: Enable setting the number of physics solver iterations ([GH-38387](https://github.com/godotengine/godot/pull/38387), [GH-50257](https://github.com/godotengine/godot/pull/50257)).
+- Physics: Apply infinite inertia checks to Godot Physics 3D ([GH-42637](https://github.com/godotengine/godot/pull/42637)).
+- Physics: Return RID instead of Object ID in area-body_shape_entered-exited signals ([GH-42743](https://github.com/godotengine/godot/pull/42743)).
+- Physics: Heightmap collision shape support in Godot Physics 3D ([GH-47349](https://github.com/godotengine/godot/pull/47349)).
+- Physics: Add support for Dynamic BVH as 2D physics broadphase ([GH-48314](https://github.com/godotengine/godot/pull/48314)).
+- Physics: Port Bullet's convex hull computer to replace QuickHull ([GH-48533](https://github.com/godotengine/godot/pull/48533)).
+- Physics: Expose `body_test_motion` in 3D physics server ([GH-50103](https://github.com/godotengine/godot/pull/50103)).
+- Physics: Add option to sync motion to physics in 3D KinematicBody ([GH-49446](https://github.com/godotengine/godot/pull/49446)).
+- Physics: Expose collider RID in 2D/3D kinematic collision ([GH-49476](https://github.com/godotengine/godot/pull/49476)).
+- Physics: Support for disabling physics on SoftBody ([GH-49835](https://github.com/godotengine/godot/pull/49835)).
+- Physics: Fix and clean disabled shapes handling in Godot physics servers ([GH-49845](https://github.com/godotengine/godot/pull/49845)).
+- Rendering: Rooms and portals-based occlusion culling ([GH-46130](https://github.com/godotengine/godot/pull/46130)).
+- Rendering: VisualServer now sorts based on AABB position ([GH-43506](https://github.com/godotengine/godot/pull/43506)).
+- Rendering: Fixes depth sorting of meshes with transparent textures ([GH-50721](https://github.com/godotengine/godot/pull/50721)).
+- Rendering: Add soft shadows to the CPU lightmapper ([GH-50184](https://github.com/godotengine/godot/pull/50184)).
+- Rendering: Import option to split vertex buffer stream in positions and attributes ([GH-46574](https://github.com/godotengine/godot/pull/46574)).
+- Rendering: Fix flipped binormal in SpatialMaterial triplanar mapping ([GH-49950](https://github.com/godotengine/godot/pull/49950)).
+- Rendering: Fix CanvasItem bounding rect calculation in some cases ([GH-49160](https://github.com/godotengine/godot/pull/49160)).
+- RichTextLabel: Fix auto-wrapping on CJK texts ([GH-49280](https://github.com/godotengine/godot/pull/49280)).
+- Shaders: Add support for structs and fragment-to-light varyings ([GH-48075](https://github.com/godotengine/godot/pull/48075)).
+- Shaders: Add support for global const arrays ([GH-50889](https://github.com/godotengine/godot/pull/50889)).
+- TabContainer: Fix moving dropped tab to incorrect child index ([GH-51177](https://github.com/godotengine/godot/pull/51177)).
+- TextureButton: Add `flip_h` and `flip_v` properties ([GH-30424](https://github.com/godotengine/godot/pull/30424)).
+- TextureProgress: Improve behavior with nine patch ([GH-45815](https://github.com/godotengine/godot/pull/45815)).
+- Theme: Various improvements to the Theme API ([GH-49487](https://github.com/godotengine/godot/pull/49487)).
+- TileSet: Fix selection of spaced atlas tile when using priority ([GH-50886](https://github.com/godotengine/godot/pull/50886)).
+- Viewport: Allow input echo when changing UI focus ([GH-44456](https://github.com/godotengine/godot/pull/44456)).
+- VisualScript: Allow dropping custom node scripts in VisualScript editor ([GH-50696](https://github.com/godotengine/godot/pull/50696)).
+- VisualScript: Expose visual script custom node type hints ([GH-50705](https://github.com/godotengine/godot/pull/50705)).
+- VisualScript: Improve and streamline VisualScriptFuncNodes `Call` `Set` `Get` ([GH-50709](https://github.com/godotengine/godot/pull/50709)).
+- Windows: Send error logs to `stderr` instead of `stdout`, like done on other OSes ([GH-39139](https://github.com/godotengine/godot/pull/39139)).
+- XR: Add `VIEW_INDEX` variable in shader to know which eye/view we're rendering for ([GH-48011](https://github.com/godotengine/godot/pull/48011)).
+- Thirdparty library updates: embree 3.13.0, mbedtls 2.16.11.
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog since 3.3-stable ([chronological](https://downloads.tuxfamily.org/godotengine/3.4/beta3/Godot_v3.4-beta3_changelog_chrono.txt), or [for each contributor](https://downloads.tuxfamily.org/godotengine/3.4/beta3/Godot_v3.4-beta3_changelog_authors.txt)).
+
+You can also browse the [changes between 3.4 beta 2 and beta 3](https://github.com/godotengine/godot/compare/a71169c0e0ed7644b959189522535337bdb6cb2b...8db0bd44249e9cac56cf24c7c192bc782c118638).
+
+This release is built from commit [8db0bd44249e9cac56cf24c7c192bc782c118638](https://github.com/godotengine/godot/commit/8db0bd44249e9cac56cf24c7c192bc782c118638).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.4/beta3/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.4/beta3/mono/) (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono **6.12.0.147** are included in this build.
+
+**Update 2021-08-07 @ 13:00 UTC:** The original Mono version for 3.4 beta 3 had a breaking regression and was later fixed. The binaries have been replaced, if you downloaded them prior to this update, you might want to redownload them.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.4 beta 3. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2 or earlier no longer works in 3.4 beta 3).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-4-beta-4.md b/collections/_article/dev-snapshot-godot-3-4-beta-4.md
new file mode 100644
index 0000000000..890558767b
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-4-beta-4.md
@@ -0,0 +1,260 @@
+---
+title: "Dev snapshot: Godot 3.4 beta 4"
+excerpt: "Another beta build for the upcoming Godot 3.4, which adds partial support for Android scoped storage and API level 30, better input responsiveness on Android, various physics and rendering fixes, and more!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/611/e44/723/611e447232422337080043.jpg
+date: 2021-08-19 11:48:08
+---
+
+The upcoming Godot 3.4 release will provide a number of new features which have been backported from the 4.0 development branch (see our [release policy](https://docs.godotengine.org/en/stable/about/release_policy.html) for details on the various Godot versions). This **beta 4** build provides additional features and fixes to bugs reported against previous builds.
+
+If you already reviewed the changelog for the previous beta, you can skip right to the [differences between beta 3 and beta 4](https://github.com/godotengine/godot/compare/8db0bd44249e9cac56cf24c7c192bc782c118638...6a058cbf3984131f94c8680970f3c184ddecc801).
+
+As usual, you can try it live with the [**online version of the Godot editor**](https://editor.godotengine.org/3.4.beta4/godot.tools.html) updated for this release.
+
+## Highlights
+
+The main changes coming in Godot 3.4 and included in this beta are:
+
+- Android: Improve input responsiveness on underpowered Android devices ([GH-42220](https://github.com/godotengine/godot/pull/42220)).
+- Android: Add partial support for Android scoped storage ([GH-50359](https://github.com/godotengine/godot/pull/50359)).
+ * This also means we're now targeting API level 30 as required to publish new apps on Google Play.
+- Animation: Add animation "reset" track feature ([GH-44558](https://github.com/godotengine/godot/pull/44558)).
+- Audio: Fix cubic resampling algorithm ([GH-51082](https://github.com/godotengine/godot/pull/51082)).
+- C#: macOS: Mono builds are now universal builds with support for both `x86_64` and `arm64` architectures ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- C#: iOS: Fix `P/Invoke` symbols being stripped by the linker, resulting in `EntryPointNotFoundException` crash at runtime ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- Core: Make all file access 64-bit (`uint64_t`) ([GH-47254](https://github.com/godotengine/godot/pull/47254)).
+ * This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes.
+- Core: Add frame delta smoothing option ([GH-48390](https://github.com/godotengine/godot/pull/48390)).
+ * This option is enabled by default (`application/run/delta_smoothing`). Please report any issue.
+- Crypto: Add AESContext, HMACContext, RSA public keys, encryption, decryption, sign, and verify ([GH-48144](https://github.com/godotengine/godot/pull/48144), [GH-48869](https://github.com/godotengine/godot/pull/48869)).
+- Editor: Overhaul the theme editor and improve user experience ([GH-49774](https://github.com/godotengine/godot/pull/49774)).
+- HTML5: Export as Progressive Web App (PWA) ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Implement Godot <-> JavaScript interface ([GH-48691](https://github.com/godotengine/godot/pull/48691)).
+- Import: Implement lossless WebP encoding ([GH-47854](https://github.com/godotengine/godot/pull/47854)).
+- Import: Backport improved glTF module with scene export support ([GH-49120](https://github.com/godotengine/godot/pull/49120)).
+- macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks ([GH-46860](https://github.com/godotengine/godot/pull/46860)).
+- macOS: Add notarization support when exporting for macOS on a macOS host ([GH-49276](https://github.com/godotengine/godot/pull/49276)).
+- Mesh: Implement octahedral map normal/tangent attribute compression ([GH-46800](https://github.com/godotengine/godot/pull/46800)).
+- Mesh: Options to clean/simplify convex hull generated from mesh ([GH-50328](https://github.com/godotengine/godot/pull/50328)).
+- Particles: Add ring emitter for 3D particles ([GH-47801](https://github.com/godotengine/godot/pull/47801)).
+- Physics: Fix 2D and 3D moving platform logic ([GH-50166](https://github.com/godotengine/godot/pull/50166), [GH-51458](https://github.com/godotengine/godot/pull/51458)).
+- Physics: Various fixes to 2D and 3D KinematicBody `move_and_slide` and `move_and_collide` ([GH-50495](https://github.com/godotengine/godot/pull/50495)).
+- Rendering: Rooms and portals-based occlusion culling ([GH-46130](https://github.com/godotengine/godot/pull/46130)).
+ * [In-depth documentation is available.](https://docs.godotengine.org/en/3.4/tutorials/3d/portals/index.html)
+- Rendering: Fixes depth sorting of meshes with transparent textures ([GH-50721](https://github.com/godotengine/godot/pull/50721)).
+- Rendering: Add soft shadows to the CPU lightmapper ([GH-50184](https://github.com/godotengine/godot/pull/50184)).
+- Rendering: Import option to split vertex buffer stream in positions and attributes ([GH-46574](https://github.com/godotengine/godot/pull/46574)).
+- RichTextLabel: Fix auto-wrapping on CJK texts ([GH-49280](https://github.com/godotengine/godot/pull/49280)).
+- Shaders: Add support for structs and fragment-to-light varyings ([GH-48075](https://github.com/godotengine/godot/pull/48075)).
+- VisualScript: Improve and streamline VisualScriptFuncNodes `Call` `Set` `Get` ([GH-50709](https://github.com/godotengine/godot/pull/50709)).
+- Windows: Fix platform file access to allow file sharing with external programs ([GH-51430](https://github.com/godotengine/godot/pull/51430)).
+
+All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.4-stable.
+
+## Changes
+
+Here's a curated changelog with links to the relevant pull requests for details. The list is not exhaustive and will be completed in the future to include more noteworthy changes.
+
+Note that some of the changes in 3.4 have already been backported and published in [Godot 3.3.1](https://godotengine.org/article/maintenance-release-godot-3-3-1) and [3.3.2](https://godotengine.org/article/maintenance-release-godot-3-3-2), and therefore they were not listed here again. You can refer to the changelogs of those maintenance releases for details on what you might have missed since 3.3-stable.
+
+- Android: Add partial support for Android scoped storage ([GH-50359](https://github.com/godotengine/godot/pull/50359)).
+ * This also means we're now targeting API level 30 as required to publish new apps on Google Play.
+- Android: Improve input responsiveness on underpowered Android devices ([GH-42220](https://github.com/godotengine/godot/pull/42220)).
+- Android: Add GDNative libraries to Android custom Gradle builds ([GH-49912](https://github.com/godotengine/godot/pull/49912)).
+- Android: Resolve issue where the Godot app remains stuck when resuming ([GH-51584](https://github.com/godotengine/godot/pull/51584)).
+- Android: Add basic user data backup option ([GH-49070](https://github.com/godotengine/godot/pull/49070)).
+- Android: Add support for prompting the user to retain app data on uninstall ([GH-51605](https://github.com/godotengine/godot/pull/51605)).
+- Android: Remove non-functional native video OS methods ([GH-48537](https://github.com/godotengine/godot/pull/48537)).
+- Animation: Add animation "reset" track featurex ([GH-44558](https://github.com/godotengine/godot/pull/44558)).
+- Animation: Fix Tween active state and repeat after `stop()` and then `start()` ([GH-47142](https://github.com/godotengine/godot/pull/47142)).
+- Animation: Allow renaming bones and blend shapes ([GH-42827](https://github.com/godotengine/godot/pull/42827)).
+- Animation: Fix issues with BlendSpace2D BLEND_MODE_DISCRETE_CARRY ([GH-48375](https://github.com/godotengine/godot/pull/48375)).
+- Animation: Fixed issue where bones become detached if multiple SkeletonIK nodes are used ([GH-49031](https://github.com/godotengine/godot/pull/49031)).
+- AStar: `get_available_point_id()` returns 0 instead of 1 when empty ([GH-48958](https://github.com/godotengine/godot/pull/48958)).
+- Audio: Fix cubic resampling algorithm ([GH-51082](https://github.com/godotengine/godot/pull/51082)).
+- Buildsystem: Refactor module defines into a generated header ([GH-50466](https://github.com/godotengine/godot/pull/50466)).
+- ButtonGroup: Add a `pressed `signal ([GH-48500](https://github.com/godotengine/godot/pull/48500)).
+- C#: macOS: Mono builds are now universal builds with support for both `x86_64` and `arm64` architectures ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- C#: iOS: Fix `P/Invoke` symbols being stripped by the linker, resulting in `EntryPointNotFoundException` crash at runtime ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- C#: iOS: Cache AOT compiler output ([GH-51191](https://github.com/godotengine/godot/pull/51191)).
+- Camera2D: Make the most recently added current Camera2D take precedence ([GH-50112](https://github.com/godotengine/godot/pull/50112)).
+- CheckBox: Add disabled theme icons ([GH-37755](https://github.com/godotengine/godot/pull/37755)).
+- ColorPicker: Display previous color and allow selecting it back ([GH-48611](https://github.com/godotengine/godot/pull/48611), [GH-48623](https://github.com/godotengine/godot/pull/48623)).
+- Control: Don't change hovering during Control focus events ([GH-47280](https://github.com/godotengine/godot/pull/47280)).
+- Core: Make all file access 64-bit (`uint64_t`) ([GH-47254](https://github.com/godotengine/godot/pull/47254)).
+ * This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes.
+- Core: Add frame delta smoothing option ([GH-48390](https://github.com/godotengine/godot/pull/48390)).
+ * This option is enabled by default (`application/run/delta_smoothing`). Please report any issue.
+- Core: Add option to sync frame delta after draw ([GH-48555](https://github.com/godotengine/godot/pull/48555)).
+ * This option is experimental and disabled by default (`application/run/delta_sync_after_draw`). Please try it out and report any issue.
+- Core: Thread callbacks can now take optional parameters ([GH-38078](https://github.com/godotengine/godot/pull/38078), [GH-51093](https://github.com/godotengine/godot/pull/51093)).
+- Core: Add support for numeric XML entities to XMLParser ([GH-47978](https://github.com/godotengine/godot/pull/47978)).
+- Core: Add option for BVH thread safety ([GH-48892](https://github.com/godotengine/godot/pull/48892)).
+- Core: Fix sub-resource storing the wrong index in cache ([GH-49625](https://github.com/godotengine/godot/pull/49625)).
+- Core: Improve the console error logging appearance: ([GH-49577](https://github.com/godotengine/godot/pull/49577)).
+- Core: Add `Engine.print_error_messages` property to disable printing errors ([GH-50640](https://github.com/godotengine/godot/pull/50640)).
+- Core: Added Node name to `print()` of all nodes, makes `Object::to_string()` virtual ([GH-38819](https://github.com/godotengine/godot/pull/38819)).
+- Core: Fix `Transform::xform(Plane)` functions to handle non-uniform scaling ([GH-50637](https://github.com/godotengine/godot/pull/50637)).
+- Core: Fix renaming directories with `Directory.rename()` ([GH-51793](https://github.com/godotengine/godot/pull/51793)).
+- Crypto: Add AESContext, RSA public keys, encryption, decryption, sign, and verify ([GH-48144](https://github.com/godotengine/godot/pull/48144)).
+- Crypto: Add HMACContext ([GH-48869](https://github.com/godotengine/godot/pull/48869)).
+- Debugger: Automatic remote debugger port assignment ([GH-37067](https://github.com/godotengine/godot/pull/37067)).
+- Debugger: Fix Marshalls infinite recursion crash ([GH-51068](https://github.com/godotengine/godot/pull/51068)).
+- Editor: Add zoom support to SpriteFrames editor plugin ([GH-48977](https://github.com/godotengine/godot/pull/48977)).
+- Editor: Fix logic for showing tilemap debug collision shapes ([GH-49075](https://github.com/godotengine/godot/pull/49075)).
+- Editor: Add `EditorResourcePicker` and `EditorScriptPicker` classes for plugins (and internal editor use) ([GH-49491](https://github.com/godotengine/godot/pull/49491)).
+- Editor: Refactor `Theme` item management in the theme editor ([GH-49512](https://github.com/godotengine/godot/pull/49512)).
+- Editor: Overhaul the theme editor and improve user experience ([GH-49774](https://github.com/godotengine/godot/pull/49774)).
+- Editor: Allow to create a node at specific position ([GH-50242](https://github.com/godotengine/godot/pull/50242)).
+- Editor: Implement a `%command%` placeholder in the Main Run Args setting ([GH-35992](https://github.com/godotengine/godot/pull/35992)).
+- Editor: Add keyboard shortcuts to the project manager ([GH-47894](https://github.com/godotengine/godot/pull/47894)).
+- Editor: Handle portrait mode monitors in the automatic editor scale detection ([GH-48597](https://github.com/godotengine/godot/pull/48597)).
+- Editor: Add custom debug shape thickness and color options to RayCast ([GH-49726](https://github.com/godotengine/godot/pull/49726)).
+- Editor: Properly update NodePaths in the editor in more cases when nodes are moved or renamed ([GH-49812](https://github.com/godotengine/godot/pull/49812)).
+- Editor: Improve 2D editor zoom logic ([GH-50490](https://github.com/godotengine/godot/pull/50490), [GH-50499](https://github.com/godotengine/godot/pull/50499)).
+- Editor: Make several actions in the Inspector dock more obvious ([GH-50528](https://github.com/godotengine/godot/pull/50528)).
+- Editor: Improve the editor feature profiles UX ([GH-49643](https://github.com/godotengine/godot/pull/49643)).
+- Editor: Improve the UI/UX of the Export Template Manager dialog ([GH-50531](https://github.com/godotengine/godot/pull/50531)).
+- Editor: Improve FileSystem dock sorting ([GH-50565](https://github.com/godotengine/godot/pull/50565)).
+- Editor: Add the ability to reorder array elements from the inspector ([GH-50651](https://github.com/godotengine/godot/pull/50651)).
+- Editor: Assign value to property by dropping to scene tree ([GH-50700](https://github.com/godotengine/godot/pull/50700)).
+- Editor: Improve the 3D editor manipulation gizmo ([GH-50597](https://github.com/godotengine/godot/pull/50597)).
+- Editor: Refactor layer property editor grid ([GH-51040](https://github.com/godotengine/godot/pull/51040)).
+- Editor: Rationalize property reversion ([GH-51166](https://github.com/godotengine/godot/pull/51166)).
+- Editor: Allow dropping property path into script editor ([GH-51629](https://github.com/godotengine/godot/pull/51629)).
+- Editor: Auto-reload scripts with external editor ([GH-51828](https://github.com/godotengine/godot/pull/51828)).
+- Editor: Improve the animation bezier editor ([GH-48572](https://github.com/godotengine/godot/pull/48572)).
+- Font: Re-add support for kerning in DynamicFont ([GH-49377](https://github.com/godotengine/godot/pull/49377)).
+- GLES2: Add basic support for CPU blendshapes ([GH-48480](https://github.com/godotengine/godot/pull/48480)).
+- GLES2: Performance improvements for CPU blendshapes ([GH-51363](https://github.com/godotengine/godot/pull/51363)).
+- GLES3: Allow repeat flag in viewport textures ([GH-34008](https://github.com/godotengine/godot/pull/34008)).
+- GLES3: Fix draw order of transparent materials with multiple directional lights ([GH-47129](https://github.com/godotengine/godot/pull/47129)).
+- GLES3: Fix multimesh being colored by other nodes GLES3 ([GH-47582](https://github.com/godotengine/godot/pull/47582)).
+- GLES3: Add support for contrast-adaptive sharpening in 3D ([GH-47416](https://github.com/godotengine/godot/pull/47416)).
+- GraphEdit: Enable zooming with Ctrl + Scroll wheel and related fixes to zoom handling ([GH-47173](https://github.com/godotengine/godot/pull/47173)).
+- GraphEdit: Make zoom limits and step adjustable ([GH-50526](https://github.com/godotengine/godot/pull/50526)).
+- GraphNode: Properly handle children with "Expand" flag ([GH-39810](https://github.com/godotengine/godot/pull/39810)).
+- HTML5: Debug HTTP server refactor with SSL support ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Export as Progressive Web App (PWA) ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Implement Godot <-> JavaScript interface ([GH-48691](https://github.com/godotengine/godot/pull/48691)).
+- HTML5: Add easy to use download API ([GH-48929](https://github.com/godotengine/godot/pull/48929)).
+- Import: Implement lossless WebP encoding ([GH-47854](https://github.com/godotengine/godot/pull/47854)).
+- Import: Add anisotropic filter option for TextureArrays ([GH-51402](https://github.com/godotengine/godot/pull/51402)).
+- Import: Add "Normal Map Invert Y" import option for normal maps ([GH-48693](https://github.com/godotengine/godot/pull/48693)).
+- Import: Backport improved glTF module with scene export support ([GH-49120](https://github.com/godotengine/godot/pull/49120)).
+- Import: Optimize image channel detection ([GH-47396](https://github.com/godotengine/godot/pull/47396)).
+- Import: Fix loading RLE compressed TGA files ([GH-49603](https://github.com/godotengine/godot/pull/49603)).
+- Input: Add support for physical scancodes, fixes non-latin layout scancodes on Linux ([GH-46764](https://github.com/godotengine/godot/pull/46764)).
+- Input: Fix game controllers ignoring the last listed button ([GH-48934](https://github.com/godotengine/godot/pull/48934)).
+ * Breaks compat slightly by changing the value of some of the `JoystickList` enum constants.
+- Input: Allow getting axis/vector values from multiple actions ([GH-50788](https://github.com/godotengine/godot/pull/50788)).
+- Input: Allow checking for exact matches with Action events ([GH-50874](https://github.com/godotengine/godot/pull/50874)).
+- iOS: Add pen pressure support for Apple Pencil ([GH-47469](https://github.com/godotengine/godot/pull/47469)).
+- iOS: Add option to automatically generate icons and launch screens ([GH-49464](https://github.com/godotengine/godot/pull/49464)).
+- iOS: Support multiple `plist` types in plugin ([GH-49802](https://github.com/godotengine/godot/pull/49802)).
+- iOS: Remove duplicate orientation setting in the export preset ([GH-48943](https://github.com/godotengine/godot/pull/48943)).
+- Label: Fix valign with stylebox borders ([GH-50478](https://github.com/godotengine/godot/pull/50478)).
+- LineEdit: Double click selects words, triple click selects all the content ([GH-46527](https://github.com/godotengine/godot/pull/46527)).
+- Linux: Fix implementation of `move_to_trash` ([GH-44021](https://github.com/godotengine/godot/pull/44021)).
+- Linux: Fix `Directory::get_space_left()` result ([GH-49222](https://github.com/godotengine/godot/pull/49222)).
+- LSP: Implement `didSave` notify and rename request ([GH-48616](https://github.com/godotengine/godot/pull/48616)).
+- LSP: Fix `SymbolKind` reporting wrong types and `get_node()` parsing ([GH-50914](https://github.com/godotengine/godot/pull/50914), [GH-51283](https://github.com/godotengine/godot/pull/51283)).
+- macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks ([GH-46860](https://github.com/godotengine/godot/pull/46860)).
+- macOS: Allow "on top" windows to enter fullscreen mode ([GH-49017](https://github.com/godotengine/godot/pull/49017)).
+- macOS: Add notarization support when exporting for macOS on a macOS host ([GH-49276](https://github.com/godotengine/godot/pull/49276)).
+- macOS: Fix `Directory::get_space_left()` result ([GH-49222](https://github.com/godotengine/godot/pull/49222)).
+- macOS: Fix Xbox controllers in Bluetooth mode on macOS ([GH-51117](https://github.com/godotengine/godot/pull/51117)).
+- Mesh: Implement octahedral map normal/tangent attribute compression ([GH-46800](https://github.com/godotengine/godot/pull/46800)).
+- Mesh: Add a `center_offset` property to both plane primitive and quad primitive ([GH-48763](https://github.com/godotengine/godot/pull/48763)).
+- Mesh: Fix UV mapping on CSGSphere ([GH-49195](https://github.com/godotengine/godot/pull/49195)).
+- Mesh: Options to clean/simplify convex hull generated from mesh ([GH-50328](https://github.com/godotengine/godot/pull/50328)).
+- Mesh: Fix multiple issues with CSGPolygon ([GH-49314](https://github.com/godotengine/godot/pull/49314)).
+- Networking: Add support for gzip compression in HTTPRequest ([GH-48651](https://github.com/godotengine/godot/pull/48651)).
+- Networking: Add support for multiple address resolution in DNS requests ([GH-49020](https://github.com/godotengine/godot/pull/49020)).
+- Networking: Implement `String::parse_url()` for parsing URLs ([GH-48205](https://github.com/godotengine/godot/pull/48205)).
+- Networking: Add `get_buffered_amount()` to WebRTCDataChannel ([GH-50659](https://github.com/godotengine/godot/pull/50659)).
+- Networking: WebsocketPeer outbound buffer fixes and buffer size query ([GH-51037](https://github.com/godotengine/godot/pull/51037)).
+- Networking: Fix IP address resolution incorrectly locking the main thread ([GH-51199](https://github.com/godotengine/godot/pull/51199)).
+- Networking: Add `dtls_hostname` property to ENet ([GH-51434](https://github.com/godotengine/godot/pull/51434)).
+- Networking: Enable range coder compression by default in NetworkedMultiplayerENet ([GH-51525](https://github.com/godotengine/godot/pull/51525)).
+- OpenSimplexNoise: Fix swapped axes in `get_image()` ([GH-30424](https://github.com/godotengine/godot/pull/30424)).
+ * Breaks compat. If you need to preserve the 3.2 behavior, swap your first and second arguments in `get_image()`.
+- OpenSimplexNoise: Add support for generating noise images with an offset ([GH-48805](https://github.com/godotengine/godot/pull/48805)).
+- OS: Expose OS data directory getter methods ([GH-49732](https://github.com/godotengine/godot/pull/49732)).
+- Particles: Add ring emitter for 3D particles ([GH-47801](https://github.com/godotengine/godot/pull/47801)).
+- Particles: Fixed `rotate_y` property of particle shaders ([GH-46687](https://github.com/godotengine/godot/pull/46687)).
+- Particles: Fixed behavior of velocity spread ([GH-47310](https://github.com/godotengine/godot/pull/47310)).
+- Physics: Fix 2D and 3D moving platform logic ([GH-50166](https://github.com/godotengine/godot/pull/50166), [GH-51458](https://github.com/godotengine/godot/pull/51458)).
+- Physics: Various fixes to 2D and 3D KinematicBody `move_and_slide` and `move_and_collide` ([GH-50495](https://github.com/godotengine/godot/pull/50495)).
+- Physics: Enable setting the number of physics solver iterations ([GH-38387](https://github.com/godotengine/godot/pull/38387), [GH-50257](https://github.com/godotengine/godot/pull/50257)).
+- Physics: Apply infinite inertia checks to Godot Physics 3D ([GH-42637](https://github.com/godotengine/godot/pull/42637)).
+- Physics: Return RID instead of Object ID in area-body_shape_entered-exited signals ([GH-42743](https://github.com/godotengine/godot/pull/42743)).
+- Physics: Heightmap collision shape support in Godot Physics 3D ([GH-47349](https://github.com/godotengine/godot/pull/47349)).
+- Physics: Add support for Dynamic BVH as 2D physics broadphase ([GH-48314](https://github.com/godotengine/godot/pull/48314)).
+- Physics: Port Bullet's convex hull computer to replace QuickHull ([GH-48533](https://github.com/godotengine/godot/pull/48533)).
+- Physics: Expose `body_test_motion` in 3D physics server ([GH-50103](https://github.com/godotengine/godot/pull/50103)).
+- Physics: Add option to sync motion to physics in 3D KinematicBody ([GH-49446](https://github.com/godotengine/godot/pull/49446)).
+- Physics: Expose collider RID in 2D/3D kinematic collision ([GH-49476](https://github.com/godotengine/godot/pull/49476)).
+- Physics: Support for disabling physics on SoftBody ([GH-49835](https://github.com/godotengine/godot/pull/49835)).
+- Physics: Fix and clean disabled shapes handling in Godot physics servers ([GH-49845](https://github.com/godotengine/godot/pull/49845)).
+- Rendering: Rooms and portals-based occlusion culling ([GH-46130](https://github.com/godotengine/godot/pull/46130)).
+- Rendering: VisualServer now sorts based on AABB position ([GH-43506](https://github.com/godotengine/godot/pull/43506)).
+- Rendering: Fixes depth sorting of meshes with transparent textures ([GH-50721](https://github.com/godotengine/godot/pull/50721)).
+- Rendering: Add soft shadows to the CPU lightmapper ([GH-50184](https://github.com/godotengine/godot/pull/50184)).
+- Rendering: Import option to split vertex buffer stream in positions and attributes ([GH-46574](https://github.com/godotengine/godot/pull/46574)).
+- Rendering: Fix flipped binormal in SpatialMaterial triplanar mapping ([GH-49950](https://github.com/godotengine/godot/pull/49950)).
+- Rendering: Fix CanvasItem bounding rect calculation in some cases ([GH-49160](https://github.com/godotengine/godot/pull/49160)).
+- Rendering: Make Blinn and Phong specular consider albedo and specular amount ([GH-51410](https://github.com/godotengine/godot/pull/51410)).
+- Rendering: Add horizon specular occlusion ([GH-51416](https://github.com/godotengine/godot/pull/51416)).
+- Rendering: Clamp negative colors regardless of the tonemapper to avoid artifacts ([GH-51439](https://github.com/godotengine/godot/pull/51439)).
+- RichTextLabel: Fix auto-wrapping on CJK texts ([GH-49280](https://github.com/godotengine/godot/pull/49280)).
+- Shaders: Add support for structs and fragment-to-light varyings ([GH-48075](https://github.com/godotengine/godot/pull/48075)).
+- Shaders: Add support for global const arrays ([GH-50889](https://github.com/godotengine/godot/pull/50889)).
+- Shaders: Makes `TIME` available in custom functions by default ([GH-49509](https://github.com/godotengine/godot/pull/49509)).
+- Shaders: Default shader specular render mode to `SCHLICK_GGX` ([GH-51401](https://github.com/godotengine/godot/pull/51401)).
+- Sprite3D: Allow unclamped colors in Sprite3D ([GH-51462](https://github.com/godotengine/godot/pull/51462)).
+- TabContainer: Fix moving dropped tab to incorrect child index ([GH-51177](https://github.com/godotengine/godot/pull/51177)).
+- TextureButton: Add `flip_h` and `flip_v` properties ([GH-30424](https://github.com/godotengine/godot/pull/30424)).
+- TextureProgress: Improve behavior with nine patch ([GH-45815](https://github.com/godotengine/godot/pull/45815)).
+- Theme: Various improvements to the Theme API ([GH-49487](https://github.com/godotengine/godot/pull/49487)).
+- Theme: StyleBox fake anti-aliasing improvements ([GH-51589](https://github.com/godotengine/godot/pull/51589)).
+- Theme: Add support for partial custom editor themes ([GH-51648](https://github.com/godotengine/godot/pull/51648)).
+- TileSet: Fix selection of spaced atlas tile when using priority ([GH-50886](https://github.com/godotengine/godot/pull/50886)).
+- Viewport: Allow input echo when changing UI focus ([GH-44456](https://github.com/godotengine/godot/pull/44456)).
+- VisualScript: Allow dropping custom node scripts in VisualScript editor ([GH-50696](https://github.com/godotengine/godot/pull/50696)).
+- VisualScript: Expose visual script custom node type hints ([GH-50705](https://github.com/godotengine/godot/pull/50705)).
+- VisualScript: Improve and streamline VisualScriptFuncNodes `Call` `Set` `Get` ([GH-50709](https://github.com/godotengine/godot/pull/50709)).
+- Windows: Fix platform file access to allow file sharing with external programs ([GH-51430](https://github.com/godotengine/godot/pull/51430)).
+- Windows: Send error logs to `stderr` instead of `stdout`, like done on other OSes ([GH-39139](https://github.com/godotengine/godot/pull/39139)).
+- XR: Add `VIEW_INDEX` variable in shader to know which eye/view we're rendering for ([GH-48011](https://github.com/godotengine/godot/pull/48011)).
+- Thirdparty library updates: embree 3.13.0, mbedtls 2.16.11, CA root certificates.
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog since 3.3-stable ([chronological](https://downloads.tuxfamily.org/godotengine/3.4/beta4/Godot_v3.4-beta4_changelog_chrono.txt), or [for each contributor](https://downloads.tuxfamily.org/godotengine/3.4/beta4/Godot_v3.4-beta4_changelog_authors.txt)).
+
+You can also browse the [changes between 3.4 beta 3 and beta 4](https://github.com/godotengine/godot/compare/8db0bd44249e9cac56cf24c7c192bc782c118638...6a058cbf3984131f94c8680970f3c184ddecc801).
+
+This release is built from commit [6a058cbf3984131f94c8680970f3c184ddecc801](https://github.com/godotengine/godot/commit/6a058cbf3984131f94c8680970f3c184ddecc801).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.4/beta4/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.4/beta4/mono/) (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono **6.12.0.147** are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.4 beta 4. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.2 or earlier no longer works in 3.4 beta 4).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-4-beta-5.md b/collections/_article/dev-snapshot-godot-3-4-beta-5.md
new file mode 100644
index 0000000000..eddb4f12a7
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-4-beta-5.md
@@ -0,0 +1,317 @@
+---
+title: "Dev snapshot: Godot 3.4 beta 5"
+excerpt: "A new beta build towards Godot 3.4, with a month's worth of bugfixes and backported features. Notable additions are the promotion of object validity checks to release builds, initial support for Android Play Asset Delivery, and a new ACES Fitted high quality tonemapper."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/614/c51/9dd/614c519dd6d84245838038.jpg
+date: 2021-09-22 20:09:26
+---
+
+The upcoming Godot 3.4 release will provide a number of new features which have been backported from the 4.0 development branch (see our [release policy](https://docs.godotengine.org/en/stable/about/release_policy.html) for details on the various Godot versions). This **beta 5** build provides additional features and fixes to bugs reported against previous builds.
+
+If you already reviewed the changelog for the previous beta, you can skip right to the differences between beta 4 and beta 5 ([part 1](https://github.com/godotengine/godot/compare/6a058cbf3984131f94c8680970f3c184ddecc801...25cbb858bcf1bd1e8dafada2bbab9621c68b515e), [part 2](https://github.com/godotengine/godot/compare/25cbb858bcf1bd1e8dafada2bbab9621c68b515e...dd0ee487280d1a6dc4941235cc85bf211cebc444)).
+
+Some big changes since the previous beta are the promotion of [object validity checks to release builds](https://github.com/godotengine/godot/pull/51796) (no more "dangling pointers" release surprises), initial support for [Android Play Asset Delivery](https://github.com/godotengine/godot/pull/52526), and a new [ACES Fitted high quality tonemapper](https://github.com/godotengine/godot/pull/52477).
+
+As usual, you can try it live with the [**online version of the Godot editor**](https://editor.godotengine.org/3.4.beta5/godot.tools.html) updated for this release.
+
+## Highlights
+
+The main changes coming in Godot 3.4 and included in this beta are:
+
+- Android: Add partial support for Android scoped storage ([GH-50359](https://github.com/godotengine/godot/pull/50359)).
+ * This also means we're now targeting API level 30 as required to publish new apps on Google Play.
+- Android: Add initial support for Play Asset Delivery ([GH-52526](https://github.com/godotengine/godot/pull/52526)).
+- Android: Improve input responsiveness on underpowered Android devices ([GH-42220](https://github.com/godotengine/godot/pull/42220)).
+- Animation: Add animation "reset" track feature ([GH-44558](https://github.com/godotengine/godot/pull/44558)).
+- Audio: Fix cubic resampling algorithm ([GH-51082](https://github.com/godotengine/godot/pull/51082)).
+- C#: macOS: Mono builds are now universal builds with support for both `x86_64` and `arm64` architectures ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- C#: iOS: Fix `P/Invoke` symbols being stripped by the linker, resulting in `EntryPointNotFoundException` crash at runtime ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- Core: Promote object validity checks to release builds ([GH-51796](https://github.com/godotengine/godot/pull/51796)).
+- Core: Make all file access 64-bit (`uint64_t`) ([GH-47254](https://github.com/godotengine/godot/pull/47254)).
+ * This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes.
+- Core: Add frame delta smoothing option ([GH-48390](https://github.com/godotengine/godot/pull/48390)).
+ * This option is enabled by default (`application/run/delta_smoothing`). Please report any issue.
+- Crypto: Add AESContext, HMACContext, RSA public keys, encryption, decryption, sign, and verify ([GH-48144](https://github.com/godotengine/godot/pull/48144), [GH-48869](https://github.com/godotengine/godot/pull/48869)).
+- Editor: Overhaul the theme editor and improve user experience ([GH-49774](https://github.com/godotengine/godot/pull/49774)).
+- GridMap: Implement individual mesh transform for MeshLibrary items ([GH-52298](https://github.com/godotengine/godot/pull/52298)).
+- HTML5: Export as Progressive Web App (PWA) ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Implement Godot <-> JavaScript interface ([GH-48691](https://github.com/godotengine/godot/pull/48691)).
+- HTML5: Implement AudioWorklet without threads ([GH-52650](https://github.com/godotengine/godot/pull/52650)).
+- Import: Implement lossless WebP encoding ([GH-47854](https://github.com/godotengine/godot/pull/47854)).
+- Import: Backport improved glTF module with scene export support ([GH-49120](https://github.com/godotengine/godot/pull/49120)).
+- macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks ([GH-46860](https://github.com/godotengine/godot/pull/46860)).
+- macOS: Add notarization support when exporting for macOS on a macOS host ([GH-49276](https://github.com/godotengine/godot/pull/49276)).
+- Mesh: Implement octahedral map normal/tangent attribute compression ([GH-46800](https://github.com/godotengine/godot/pull/46800)).
+- Mesh: Options to clean/simplify convex hull generated from mesh ([GH-50328](https://github.com/godotengine/godot/pull/50328)).
+- Particles: Add ring emitter for 3D particles ([GH-47801](https://github.com/godotengine/godot/pull/47801)).
+- Physics: Fix 2D and 3D moving platform logic ([GH-50166](https://github.com/godotengine/godot/pull/50166), [GH-51458](https://github.com/godotengine/godot/pull/51458)).
+- Physics: Various fixes to 2D and 3D KinematicBody `move_and_slide` and `move_and_collide` ([GH-50495](https://github.com/godotengine/godot/pull/50495)).
+- Rendering: Rooms and portals-based occlusion culling ([GH-46130](https://github.com/godotengine/godot/pull/46130)).
+ * [In-depth documentation is available.](https://docs.godotengine.org/en/3.4/tutorials/3d/portals/index.html)
+- Rendering: Add a new high quality tonemapper: ACES Fitted ([GH-52477](https://github.com/godotengine/godot/pull/52477)).
+- Rendering: Fixes depth sorting of meshes with transparent textures ([GH-50721](https://github.com/godotengine/godot/pull/50721)).
+- Rendering: Add soft shadows to the CPU lightmapper ([GH-50184](https://github.com/godotengine/godot/pull/50184)).
+- Rendering: Import option to split vertex buffer stream in positions and attributes ([GH-46574](https://github.com/godotengine/godot/pull/46574)).
+- RichTextLabel: Fix auto-wrapping on CJK texts ([GH-49280](https://github.com/godotengine/godot/pull/49280)).
+- Shaders: Add support for structs and fragment-to-light varyings ([GH-48075](https://github.com/godotengine/godot/pull/48075)).
+- VisualScript: Improve and streamline VisualScriptFuncNodes `Call` `Set` `Get` ([GH-50709](https://github.com/godotengine/godot/pull/50709)).
+- Windows: Fix platform file access to allow file sharing with external programs ([GH-51430](https://github.com/godotengine/godot/pull/51430)).
+
+All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.4-stable.
+
+## Changes
+
+Here's a curated changelog with links to the relevant pull requests for details. The list is not exhaustive and will be completed in the future to include more noteworthy changes.
+
+Note that some of the changes in 3.4 have already been backported and published in [Godot 3.3.1](https://godotengine.org/article/maintenance-release-godot-3-3-1) and [3.3.2](https://godotengine.org/article/maintenance-release-godot-3-3-2), and therefore they were not listed here again. You can refer to the changelogs of those maintenance releases for details on what you might have missed since 3.3-stable.
+
+- Android: Add partial support for Android scoped storage ([GH-50359](https://github.com/godotengine/godot/pull/50359)).
+ * This also means we're now targeting API level 30 as required to publish new apps on Google Play.
+- Android: Add initial support for Play Asset Delivery ([GH-52526](https://github.com/godotengine/godot/pull/52526)).
+- Android: Improve input responsiveness on underpowered Android devices ([GH-42220](https://github.com/godotengine/godot/pull/42220)).
+- Android: Add GDNative libraries to Android custom Gradle builds ([GH-49912](https://github.com/godotengine/godot/pull/49912)).
+- Android: Implement per-pixel transparency ([GH-51935](https://github.com/godotengine/godot/pull/51935)).
+- Android: Resolve issue where the Godot app remains stuck when resuming ([GH-51584](https://github.com/godotengine/godot/pull/51584)).
+- Android: Add basic user data backup option ([GH-49070](https://github.com/godotengine/godot/pull/49070)).
+- Android: Add support for prompting the user to retain app data on uninstall ([GH-51605](https://github.com/godotengine/godot/pull/51605)).
+- Android: Remove non-functional native video OS methods ([GH-48537](https://github.com/godotengine/godot/pull/48537)).
+- Animation: Add animation "reset" track featurex ([GH-44558](https://github.com/godotengine/godot/pull/44558)).
+- Animation: Fix Tween active state and repeat after `stop()` and then `start()` ([GH-47142](https://github.com/godotengine/godot/pull/47142)).
+- Animation: Allow renaming bones and blend shapes ([GH-42827](https://github.com/godotengine/godot/pull/42827)).
+- Animation: Fix issues with BlendSpace2D `BLEND_MODE_DISCRETE_CARRY` ([GH-48375](https://github.com/godotengine/godot/pull/48375)).
+- Animation: Fixed issue where bones become detached if multiple SkeletonIK nodes are used ([GH-49031](https://github.com/godotengine/godot/pull/49031)).
+- Animation: Fix non functional 3D onion skinning ([GH-52664](https://github.com/godotengine/godot/pull/52664)).
+- Animation: Fix Animation Playback Track not seeking properly ([GH-38107](https://github.com/godotengine/godot/pull/38107)).
+- Animation: Fix bugs in AnimationNodeTransition's behavior ([GH-52543](https://github.com/godotengine/godot/pull/52543), [GH-52555](https://github.com/godotengine/godot/pull/52555)).
+- AStar: `get_available_point_id()` returns 0 instead of 1 when empty ([GH-48958](https://github.com/godotengine/godot/pull/48958)).
+- Audio: Fix cubic resampling algorithm ([GH-51082](https://github.com/godotengine/godot/pull/51082)).
+- Buildsystem: Refactor module defines into a generated header ([GH-50466](https://github.com/godotengine/godot/pull/50466)).
+- ButtonGroup: Add a `pressed `signal ([GH-48500](https://github.com/godotengine/godot/pull/48500)).
+- C#: macOS: Mono builds are now universal builds with support for both `x86_64` and `arm64` architectures ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- C#: iOS: Fix `P/Invoke` symbols being stripped by the linker, resulting in `EntryPointNotFoundException` crash at runtime ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- C#: iOS: Cache AOT compiler output ([GH-51191](https://github.com/godotengine/godot/pull/51191)).
+- C#: Improve C# method listing ([GH-52607](https://github.com/godotengine/godot/pull/52607)).
+- C#: Add editor keyboard shortcut (Alt+B) for Mono Build solution button ([GH-52595](https://github.com/godotengine/godot/pull/52595)).
+- C#: Add support to export enum strings for `Array` ([GH-52763](https://github.com/godotengine/godot/pull/52763)).
+- C#: Deprecate `Xform` methods removed in 4.0, the `*` operator is preferred ([GH-52762](https://github.com/godotengine/godot/pull/52762)).
+- Camera2D: Make the most recently added current Camera2D take precedence ([GH-50112](https://github.com/godotengine/godot/pull/50112)).
+- CheckBox: Add disabled theme icons ([GH-37755](https://github.com/godotengine/godot/pull/37755)).
+- ColorPicker: Display previous color and allow selecting it back ([GH-48611](https://github.com/godotengine/godot/pull/48611), [GH-48623](https://github.com/godotengine/godot/pull/48623)).
+- Control: Don't change hovering during Control focus events ([GH-47280](https://github.com/godotengine/godot/pull/47280)).
+- Core: Promote object validity checks to release builds ([GH-51796](https://github.com/godotengine/godot/pull/51796)).
+- Core: Make all file access 64-bit (`uint64_t`) ([GH-47254](https://github.com/godotengine/godot/pull/47254)).
+ * This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes.
+- Core: Add frame delta smoothing option ([GH-48390](https://github.com/godotengine/godot/pull/48390)).
+ * This option is enabled by default (`application/run/delta_smoothing`). Please report any issue.
+- Core: Add option to sync frame delta after draw ([GH-48555](https://github.com/godotengine/godot/pull/48555)).
+ * This option is experimental and disabled by default (`application/run/delta_sync_after_draw`). Please try it out and report any issue.
+- Core: Complain if casting a freed object in a debug session ([GH-51095](https://github.com/godotengine/godot/pull/51095)).
+- Core: Thread callbacks can now take optional parameters ([GH-38078](https://github.com/godotengine/godot/pull/38078), [GH-51093](https://github.com/godotengine/godot/pull/51093)).
+- Core: Add support for numeric XML entities to XMLParser ([GH-47978](https://github.com/godotengine/godot/pull/47978)).
+- Core: Add option for BVH thread safety ([GH-48892](https://github.com/godotengine/godot/pull/48892)).
+- Core: Fix sub-resource storing the wrong index in cache ([GH-49625](https://github.com/godotengine/godot/pull/49625)).
+- Core: Improve the console error logging appearance: ([GH-49577](https://github.com/godotengine/godot/pull/49577)).
+- Core: Add `Engine.print_error_messages` property to disable printing errors ([GH-50640](https://github.com/godotengine/godot/pull/50640)).
+- Core: Added Node name to `print()` of all nodes, makes `Object::to_string()` virtual ([GH-38819](https://github.com/godotengine/godot/pull/38819)).
+- Core: Fix `Transform::xform(Plane)` functions to handle non-uniform scaling ([GH-50637](https://github.com/godotengine/godot/pull/50637)).
+- Core: Fix renaming directories with `Directory.rename()` ([GH-51793](https://github.com/godotengine/godot/pull/51793)).
+- Core: Harmonize output of `OS.get_locale()` between platforms ([GH-40708](https://github.com/godotengine/godot/pull/40708)).
+- Core: Implement `OS.get_locale_language()` helper method ([GH-52740](https://github.com/godotengine/godot/pull/52740)).
+- Core: Fix path with multiple slashes not being corrected on templates ([GH-52513](https://github.com/godotengine/godot/pull/52513)).
+- Core: Allow using global classes as project `MainLoop` implementation ([GH-52438](https://github.com/godotengine/godot/pull/52438)).
+- Core: Add an `Array.pop_at()` method to pop an element at an arbitrary index ([GH-52143](https://github.com/godotengine/godot/pull/52143)).
+- Core: Fix `String.get_base_dir()` handling of Windows top-level directories ([GH-52744](https://github.com/godotengine/godot/pull/52744)).
+- Core: Expose enum related methods in ClassDB ([GH-52572](https://github.com/godotengine/godot/pull/52572)).
+- Core: Allow for platform `Thread` implementation override ([GH-52734](https://github.com/godotengine/godot/pull/52734)).
+- Crypto: Add AESContext, RSA public keys, encryption, decryption, sign, and verify ([GH-48144](https://github.com/godotengine/godot/pull/48144)).
+- Crypto: Add HMACContext ([GH-48869](https://github.com/godotengine/godot/pull/48869)).
+- Debugger: Automatic remote debugger port assignment ([GH-37067](https://github.com/godotengine/godot/pull/37067)).
+- Debugger: Fix Marshalls infinite recursion crash ([GH-51068](https://github.com/godotengine/godot/pull/51068)).
+- Editor: Add zoom support to SpriteFrames editor plugin ([GH-48977](https://github.com/godotengine/godot/pull/48977)).
+- Editor: Fix logic for showing tilemap debug collision shapes ([GH-49075](https://github.com/godotengine/godot/pull/49075)).
+- Editor: Add `EditorResourcePicker` and `EditorScriptPicker` classes for plugins (and internal editor use) ([GH-49491](https://github.com/godotengine/godot/pull/49491)).
+- Editor: Refactor `Theme` item management in the theme editor ([GH-49512](https://github.com/godotengine/godot/pull/49512)).
+- Editor: Overhaul the theme editor and improve user experience ([GH-49774](https://github.com/godotengine/godot/pull/49774)).
+- Editor: Allow to create a node at specific position ([GH-50242](https://github.com/godotengine/godot/pull/50242)).
+- Editor: Implement a `%command%` placeholder in the Main Run Args setting ([GH-35992](https://github.com/godotengine/godot/pull/35992)).
+- Editor: Add keyboard shortcuts to the project manager ([GH-47894](https://github.com/godotengine/godot/pull/47894)).
+- Editor: Handle portrait mode monitors in the automatic editor scale detection ([GH-48597](https://github.com/godotengine/godot/pull/48597)).
+- Editor: Add custom debug shape thickness and color options to RayCast ([GH-49726](https://github.com/godotengine/godot/pull/49726)).
+- Editor: Properly update NodePaths in the editor in more cases when nodes are moved or renamed ([GH-49812](https://github.com/godotengine/godot/pull/49812)).
+- Editor: Improve 2D editor zoom logic ([GH-50490](https://github.com/godotengine/godot/pull/50490), [GH-50499](https://github.com/godotengine/godot/pull/50499)).
+- Editor: Make several actions in the Inspector dock more obvious ([GH-50528](https://github.com/godotengine/godot/pull/50528)).
+- Editor: Improve the editor feature profiles UX ([GH-49643](https://github.com/godotengine/godot/pull/49643)).
+- Editor: Improve the UI/UX of the Export Template Manager dialog ([GH-50531](https://github.com/godotengine/godot/pull/50531)).
+- Editor: Improve FileSystem dock sorting ([GH-50565](https://github.com/godotengine/godot/pull/50565)).
+- Editor: Add the ability to reorder array elements from the inspector ([GH-50651](https://github.com/godotengine/godot/pull/50651)).
+- Editor: Assign value to property by dropping to scene tree ([GH-50700](https://github.com/godotengine/godot/pull/50700)).
+- Editor: Improve the 3D editor manipulation gizmo ([GH-50597](https://github.com/godotengine/godot/pull/50597)).
+- Editor: Refactor layer property editor grid ([GH-51040](https://github.com/godotengine/godot/pull/51040)).
+- Editor: Rationalize property reversion ([GH-51166](https://github.com/godotengine/godot/pull/51166)).
+- Editor: Allow dropping property path into script editor ([GH-51629](https://github.com/godotengine/godot/pull/51629)).
+- Editor: Auto-reload scripts with external editor ([GH-51828](https://github.com/godotengine/godot/pull/51828)).
+- Editor: Improve the animation bezier editor ([GH-48572](https://github.com/godotengine/godot/pull/48572)).
+- Editor: Save branch as scene by dropping to filesystem ([GH-52503](https://github.com/godotengine/godot/pull/52503)).
+- Editor: Fix scale sensitivity for 3D objects ([GH-52665](https://github.com/godotengine/godot/pull/52665)).
+- Editor: Load assets before enabling editor plugins ([GH-52344](https://github.com/godotengine/godot/pull/52344)).
+- Editor: Use QuickOpen to load resources in the inspector ([GH-37228](https://github.com/godotengine/godot/pull/37228)).
+- Editor: Fix preview grid in SpriteFrames editor's "Select Frames" dialog ([GH-52461](https://github.com/godotengine/godot/pull/52461)).
+- Font: Re-add support for kerning in DynamicFont ([GH-49377](https://github.com/godotengine/godot/pull/49377)).
+- Font: Allow using WOFF fonts in DynamicFont ([GH-52052](https://github.com/godotengine/godot/pull/52052)).
+- GLES2: Add basic support for CPU blendshapes ([GH-48480](https://github.com/godotengine/godot/pull/48480)).
+- GLES2: Performance improvements for CPU blendshapes ([GH-51363](https://github.com/godotengine/godot/pull/51363)).
+- GLES2: Allow using clearcoat, anisotropy and refraction in SpatialMaterial ([GH-51967](https://github.com/godotengine/godot/pull/51967)).
+- GLES2: Implement `Viewport.keep_3d_linear` for VR applications to convert output to linear color space ([GH-51780](https://github.com/godotengine/godot/pull/51780)).
+- GLES3: Allow repeat flag in viewport textures ([GH-34008](https://github.com/godotengine/godot/pull/34008)).
+- GLES3: Fix draw order of transparent materials with multiple directional lights ([GH-47129](https://github.com/godotengine/godot/pull/47129)).
+- GLES3: Fix multimesh being colored by other nodes GLES3 ([GH-47582](https://github.com/godotengine/godot/pull/47582)).
+- GLES3: Add support for contrast-adaptive sharpening in 3D ([GH-47416](https://github.com/godotengine/godot/pull/47416)).
+- GraphEdit: Enable zooming with Ctrl + Scroll wheel and related fixes to zoom handling ([GH-47173](https://github.com/godotengine/godot/pull/47173)).
+- GraphEdit: Make zoom limits and step adjustable ([GH-50526](https://github.com/godotengine/godot/pull/50526)).
+- GraphNode: Properly handle children with "Expand" flag ([GH-39810](https://github.com/godotengine/godot/pull/39810)).
+- GridMap: Implement individual mesh transform for MeshLibrary items ([GH-52298](https://github.com/godotengine/godot/pull/52298)).
+- HTML5: Export as Progressive Web App (PWA) ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Implement Godot <-> JavaScript interface ([GH-48691](https://github.com/godotengine/godot/pull/48691)).
+- HTML5: Implement AudioWorklet without threads ([GH-52650](https://github.com/godotengine/godot/pull/52650)).
+- HTML5: Debug HTTP server refactor with SSL support ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Add easy to use download API ([GH-48929](https://github.com/godotengine/godot/pull/48929)).
+- HTML5: Fix bug in AudioWorklet when reading output buffer ([GH-52696](https://github.com/godotengine/godot/pull/52696)).
+- HTML5: Use browser mix rate by default on the Web ([GH-52723](https://github.com/godotengine/godot/pull/52723)).
+- Import: Implement lossless WebP encoding ([GH-47854](https://github.com/godotengine/godot/pull/47854)).
+- Import: Add anisotropic filter option for TextureArrays ([GH-51402](https://github.com/godotengine/godot/pull/51402)).
+- Import: Add "Normal Map Invert Y" import option for normal maps ([GH-48693](https://github.com/godotengine/godot/pull/48693)).
+- Import: Backport improved glTF module with scene export support ([GH-49120](https://github.com/godotengine/godot/pull/49120)).
+- Import: Optimize image channel detection ([GH-47396](https://github.com/godotengine/godot/pull/47396)).
+- Import: Fix loading RLE compressed TGA files ([GH-49603](https://github.com/godotengine/godot/pull/49603)).
+- Import: Fixed issue in TextureAtlas import of images with wrong size ([GH-42103](https://github.com/godotengine/godot/pull/42103)).
+- Input: Add support for physical scancodes, fixes non-latin layout scancodes on Linux ([GH-46764](https://github.com/godotengine/godot/pull/46764)).
+- Input: Fix game controllers ignoring the last listed button ([GH-48934](https://github.com/godotengine/godot/pull/48934)).
+ * Breaks compat slightly by changing the value of some of the `JoystickList` enum constants.
+- Input: Allow getting axis/vector values from multiple actions ([GH-50788](https://github.com/godotengine/godot/pull/50788)).
+- Input: Allow checking for exact matches with Action events ([GH-50874](https://github.com/godotengine/godot/pull/50874)).
+- iOS: Add pen pressure support for Apple Pencil ([GH-47469](https://github.com/godotengine/godot/pull/47469)).
+- iOS: Add option to automatically generate icons and launch screens ([GH-49464](https://github.com/godotengine/godot/pull/49464)).
+- iOS: Support multiple `plist` types in plugin ([GH-49802](https://github.com/godotengine/godot/pull/49802)).
+- iOS: Remove duplicate orientation setting in the export preset ([GH-48943](https://github.com/godotengine/godot/pull/48943)).
+- iOS: Implement missing OS `set`/`get_clipboard()` methods ([GH-52540](https://github.com/godotengine/godot/pull/52540)).
+- Label: Fix valign with stylebox borders ([GH-50478](https://github.com/godotengine/godot/pull/50478)).
+- LineEdit: Double click selects words, triple click selects all the content ([GH-46527](https://github.com/godotengine/godot/pull/46527)).
+- Linux: Fix implementation of `move_to_trash` ([GH-44021](https://github.com/godotengine/godot/pull/44021)).
+- Linux: Fix `Directory::get_space_left()` result ([GH-49222](https://github.com/godotengine/godot/pull/49222)).
+- LSP: Implement `didSave` notify and rename request ([GH-48616](https://github.com/godotengine/godot/pull/48616)).
+- LSP: Fix `SymbolKind` reporting wrong types and `get_node()` parsing ([GH-50914](https://github.com/godotengine/godot/pull/50914), [GH-51283](https://github.com/godotengine/godot/pull/51283)).
+- LSP: Add support for custom host setting ([GH-52330](https://github.com/godotengine/godot/pull/52330)).
+- macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks ([GH-46860](https://github.com/godotengine/godot/pull/46860)).
+- macOS: Allow "on top" windows to enter fullscreen mode ([GH-49017](https://github.com/godotengine/godot/pull/49017)).
+- macOS: Add notarization support when exporting for macOS on a macOS host ([GH-49276](https://github.com/godotengine/godot/pull/49276)).
+- macOS: Fix `Directory::get_space_left()` result ([GH-49222](https://github.com/godotengine/godot/pull/49222)).
+- macOS: Fix Xbox controllers in Bluetooth mode on macOS ([GH-51117](https://github.com/godotengine/godot/pull/51117)).
+- macOS: Fix incorrect mouse position in fullscreen ([GH-52374](https://github.com/godotengine/godot/pull/52374)).
+- Mesh: Implement octahedral map normal/tangent attribute compression ([GH-46800](https://github.com/godotengine/godot/pull/46800)).
+- Mesh: Add a `center_offset` property to both plane primitive and quad primitive ([GH-48763](https://github.com/godotengine/godot/pull/48763)).
+- Mesh: Fix UV mapping on CSGSphere ([GH-49195](https://github.com/godotengine/godot/pull/49195)).
+- Mesh: Options to clean/simplify convex hull generated from mesh ([GH-50328](https://github.com/godotengine/godot/pull/50328)).
+- Mesh: Fix multiple issues with CSGPolygon ([GH-49314](https://github.com/godotengine/godot/pull/49314)).
+- Mesh: Fix the normals of SphereMesh when the sphere/hemisphere is oblong ([GH-51995](https://github.com/godotengine/godot/pull/51995)).
+- Networking: Add support for gzip compression in HTTPRequest ([GH-48651](https://github.com/godotengine/godot/pull/48651)).
+- Networking: Add support for multiple address resolution in DNS requests ([GH-49020](https://github.com/godotengine/godot/pull/49020)).
+- Networking: Implement `String::parse_url()` for parsing URLs ([GH-48205](https://github.com/godotengine/godot/pull/48205)).
+- Networking: Add `get_buffered_amount()` to WebRTCDataChannel ([GH-50659](https://github.com/godotengine/godot/pull/50659)).
+- Networking: WebsocketPeer outbound buffer fixes and buffer size query ([GH-51037](https://github.com/godotengine/godot/pull/51037)).
+- Networking: Fix IP address resolution incorrectly locking the main thread ([GH-51199](https://github.com/godotengine/godot/pull/51199)).
+- Networking: Add `dtls_hostname` property to ENet ([GH-51434](https://github.com/godotengine/godot/pull/51434)).
+- Networking: Enable range coder compression by default in NetworkedMultiplayerENet ([GH-51525](https://github.com/godotengine/godot/pull/51525)).
+- OpenSimplexNoise: Fix swapped axes in `get_image()` ([GH-30424](https://github.com/godotengine/godot/pull/30424)).
+ * Breaks compat. If you need to preserve the 3.2 behavior, swap your first and second arguments in `get_image()`.
+- OpenSimplexNoise: Add support for generating noise images with an offset ([GH-48805](https://github.com/godotengine/godot/pull/48805)).
+- OS: Expose OS data directory getter methods ([GH-49732](https://github.com/godotengine/godot/pull/49732)).
+- Particles: Add ring emitter for 3D particles ([GH-47801](https://github.com/godotengine/godot/pull/47801)).
+- Particles: Fixed `rotate_y` property of particle shaders ([GH-46687](https://github.com/godotengine/godot/pull/46687)).
+- Particles: Fixed behavior of velocity spread ([GH-47310](https://github.com/godotengine/godot/pull/47310)).
+- Physics: Fix 2D and 3D moving platform logic ([GH-50166](https://github.com/godotengine/godot/pull/50166), [GH-51458](https://github.com/godotengine/godot/pull/51458)).
+- Physics: Various fixes to 2D and 3D KinematicBody `move_and_slide` and `move_and_collide` ([GH-50495](https://github.com/godotengine/godot/pull/50495)).
+- Physics: Enable setting the number of physics solver iterations ([GH-38387](https://github.com/godotengine/godot/pull/38387), [GH-50257](https://github.com/godotengine/godot/pull/50257)).
+- Physics: Apply infinite inertia checks to Godot Physics 3D ([GH-42637](https://github.com/godotengine/godot/pull/42637)).
+- Physics: Return RID instead of Object ID in area-body_shape_entered-exited signals ([GH-42743](https://github.com/godotengine/godot/pull/42743)).
+- Physics: Heightmap collision shape support in Godot Physics 3D ([GH-47349](https://github.com/godotengine/godot/pull/47349)).
+- Physics: Add support for Dynamic BVH as 2D physics broadphase ([GH-48314](https://github.com/godotengine/godot/pull/48314)).
+- Physics: Port Bullet's convex hull computer to replace QuickHull ([GH-48533](https://github.com/godotengine/godot/pull/48533)).
+- Physics: Expose `body_test_motion` in 3D physics server ([GH-50103](https://github.com/godotengine/godot/pull/50103)).
+- Physics: Add option to sync motion to physics in 3D KinematicBody ([GH-49446](https://github.com/godotengine/godot/pull/49446)).
+- Physics: Expose collider RID in 2D/3D kinematic collision ([GH-49476](https://github.com/godotengine/godot/pull/49476)).
+- Physics: Support for disabling physics on SoftBody ([GH-49835](https://github.com/godotengine/godot/pull/49835)).
+- Physics: Fix and clean disabled shapes handling in Godot physics servers ([GH-49845](https://github.com/godotengine/godot/pull/49845)).
+- Physics: Optimize area detection and `intersect_shape` queries with concave shapes ([GH-48551](https://github.com/godotengine/godot/pull/48551)).
+- Physics: Optimize raycast with large Heightmap shape data ([GH-48709](https://github.com/godotengine/godot/pull/48709)).
+- Physics: Fix KinematicBody axis lock ([GH-45176](https://github.com/godotengine/godot/pull/45176)).
+- Physics: Backport new methods for KinematicBody and KinematicCollision ([GH-52116](https://github.com/godotengine/godot/pull/52116)).
+- Physics: Expose SoftBody pin methods for scripting ([GH-52369](https://github.com/godotengine/godot/pull/52369)).
+- Rendering: Rooms and portals-based occlusion culling ([GH-46130](https://github.com/godotengine/godot/pull/46130)).
+- Rendering: Add a new high quality tonemapper: ACES Fitted ([GH-52477](https://github.com/godotengine/godot/pull/52477)).
+- Rendering: VisualServer now sorts based on AABB position ([GH-43506](https://github.com/godotengine/godot/pull/43506)).
+- Rendering: Fixes depth sorting of meshes with transparent textures ([GH-50721](https://github.com/godotengine/godot/pull/50721)).
+- Rendering: Add soft shadows to the CPU lightmapper ([GH-50184](https://github.com/godotengine/godot/pull/50184)).
+- Rendering: Import option to split vertex buffer stream in positions and attributes ([GH-46574](https://github.com/godotengine/godot/pull/46574)).
+- Rendering: Fix flipped binormal in SpatialMaterial triplanar mapping ([GH-49950](https://github.com/godotengine/godot/pull/49950)).
+- Rendering: Fix CanvasItem bounding rect calculation in some cases ([GH-49160](https://github.com/godotengine/godot/pull/49160)).
+- Rendering: Make Blinn and Phong specular consider albedo and specular amount ([GH-51410](https://github.com/godotengine/godot/pull/51410)).
+- Rendering: Add horizon specular occlusion ([GH-51416](https://github.com/godotengine/godot/pull/51416)).
+- Rendering: Clamp negative colors regardless of the tonemapper to avoid artifacts ([GH-51439](https://github.com/godotengine/godot/pull/51439)).
+- Rendering: Fix Y billboard shear when rotating camera ([GH-52151](https://github.com/godotengine/godot/pull/52151)).
+- RichTextLabel: Fix auto-wrapping on CJK texts ([GH-49280](https://github.com/godotengine/godot/pull/49280)).
+- Scene: Fix loading packed scene with editable children at runtime ([GH-49664](https://github.com/godotengine/godot/pull/49664)).
+- Scene: Write node groups on a single line when saving a `.tscn` file ([GH-52284](https://github.com/godotengine/godot/pull/52284)).
+- Scene: Compare connections by object ID, making `.tscn` order deterministic ([GH-52493](https://github.com/godotengine/godot/pull/52493)).
+- ScrollBar: Add `increment_pressed` and `decrement_pressed` icons ([GH-51805](https://github.com/godotengine/godot/pull/51805)).
+- Shaders: Add support for structs and fragment-to-light varyings ([GH-48075](https://github.com/godotengine/godot/pull/48075)).
+- Shaders: Add support for global const arrays ([GH-50889](https://github.com/godotengine/godot/pull/50889)).
+- Shaders: Makes `TIME` available in custom functions by default ([GH-49509](https://github.com/godotengine/godot/pull/49509)).
+- Shaders: Default shader specular render mode to `SCHLICK_GGX` ([GH-51401](https://github.com/godotengine/godot/pull/51401)).
+- Shaders: Prevent shaders from generating code before the constructor finishes ([GH-52475](https://github.com/godotengine/godot/pull/52475)).
+- Sprite3D: Allow unclamped colors in Sprite3D ([GH-51462](https://github.com/godotengine/godot/pull/51462)).
+- TabContainer: Fix moving dropped tab to incorrect child index ([GH-51177](https://github.com/godotengine/godot/pull/51177)).
+- TextureButton: Add `flip_h` and `flip_v` properties ([GH-30424](https://github.com/godotengine/godot/pull/30424)).
+- TextureProgress: Improve behavior with nine patch ([GH-45815](https://github.com/godotengine/godot/pull/45815)).
+- TextureProgress: Add offset for progress texture ([GH-38722](https://github.com/godotengine/godot/pull/38722)).
+- Theme: Various improvements to the Theme API ([GH-49487](https://github.com/godotengine/godot/pull/49487)).
+- Theme: StyleBox fake anti-aliasing improvements ([GH-51589](https://github.com/godotengine/godot/pull/51589)).
+- Theme: Add support for partial custom editor themes ([GH-51648](https://github.com/godotengine/godot/pull/51648)).
+- TileSet: Fix selection of spaced atlas tile when using priority ([GH-50886](https://github.com/godotengine/godot/pull/50886)).
+- Viewport: Allow input echo when changing UI focus ([GH-44456](https://github.com/godotengine/godot/pull/44456)).
+- VisualScript: Allow dropping custom node scripts in VisualScript editor ([GH-50696](https://github.com/godotengine/godot/pull/50696)).
+- VisualScript: Expose visual script custom node type hints ([GH-50705](https://github.com/godotengine/godot/pull/50705)).
+- VisualScript: Improve and streamline VisualScriptFuncNodes `Call` `Set` `Get` ([GH-50709](https://github.com/godotengine/godot/pull/50709)).
+- Windows: Fix platform file access to allow file sharing with external programs ([GH-51430](https://github.com/godotengine/godot/pull/51430)).
+- Windows: Send error logs to `stderr` instead of `stdout`, like done on other OSes ([GH-39139](https://github.com/godotengine/godot/pull/39139)).
+- Windows: Fix `OS.shell_open()` not returning errors ([GH-52842](https://github.com/godotengine/godot/pull/52842)).
+- XR: Add `VIEW_INDEX` variable in shader to know which eye/view we're rendering for ([GH-48011](https://github.com/godotengine/godot/pull/48011)).
+- Thirdparty library updates: embree 3.13.0, mbedtls 2.16.11, CA root certificates.
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog since 3.3-stable ([chronological](https://downloads.tuxfamily.org/godotengine/3.4/beta5/Godot_v3.4-beta5_changelog_chrono.txt), or [for each contributor](https://downloads.tuxfamily.org/godotengine/3.4/beta5/Godot_v3.4-beta5_changelog_authors.txt)).
+
+You can also browse the changes between 3.4 beta 4 and beta 5 ([part 1](https://github.com/godotengine/godot/compare/6a058cbf3984131f94c8680970f3c184ddecc801...25cbb858bcf1bd1e8dafada2bbab9621c68b515e), [part 2](https://github.com/godotengine/godot/compare/25cbb858bcf1bd1e8dafada2bbab9621c68b515e...dd0ee487280d1a6dc4941235cc85bf211cebc444)).
+
+This release is built from commit [dd0ee487280d1a6dc4941235cc85bf211cebc444](https://github.com/godotengine/godot/commit/dd0ee487280d1a6dc4941235cc85bf211cebc444).
+
+## Downloads
+
+The download links for dev snapshots are not featured on the [Download](/download) page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.4/beta5/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.4/beta5/mono/) (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono **6.12.0.147** are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.4 beta 5. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.3 or earlier no longer works in 3.4 beta 5).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-4-beta-6.md b/collections/_article/dev-snapshot-godot-3-4-beta-6.md
new file mode 100644
index 0000000000..062f61ea7b
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-4-beta-6.md
@@ -0,0 +1,357 @@
+---
+title: "Dev snapshot: Godot 3.4 beta 6"
+excerpt: "One step closer to releasing Godot 3.4 with this new beta, which may be the final one before Release Candidate. The feature set for 3.4 is already pretty packed and it's more than time to get it released in the wild."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/615/db4/6c2/615db46c275e9053218403.jpg
+date: 2021-10-06 17:30:21
+---
+
+The upcoming Godot 3.4 release will provide a number of new features which have been backported from the 4.0 development branch (see our [release policy](https://docs.godotengine.org/en/stable/about/release_policy.html) for details on the various Godot versions). This **beta 6** build provides additional features and fixes to bugs reported against previous builds.
+
+If you already reviewed the changelog for the previous beta, you can skip right to the [differences between beta 5 and beta 6](https://github.com/godotengine/godot/compare/dd0ee487280d1a6dc4941235cc85bf211cebc444...3e2bb415a9b186596b9ce02debc79590380c2355).
+
+As usual, you can try it live with the [**online version of the Godot editor**](https://editor.godotengine.org/3.4.beta6/godot.tools.html) updated for this release.
+
+## Highlights
+
+The main changes coming in Godot 3.4 and included in this beta are:
+
+- Android: Add partial support for Android scoped storage ([GH-50359](https://github.com/godotengine/godot/pull/50359)).
+ * This also means we're now targeting API level 30 as required to publish new apps on Google Play.
+- Android: Add initial support for Play Asset Delivery ([GH-52526](https://github.com/godotengine/godot/pull/52526)).
+- Android: Improve input responsiveness on underpowered Android devices ([GH-42220](https://github.com/godotengine/godot/pull/42220)).
+- Animation: Add animation "reset" track feature ([GH-44558](https://github.com/godotengine/godot/pull/44558)).
+- Audio: Fix cubic resampling algorithm ([GH-51082](https://github.com/godotengine/godot/pull/51082)).
+- Audio: Add Listener2D node ([GH-53429](https://github.com/godotengine/godot/pull/53429)).
+- C#: macOS: Mono builds are now universal builds with support for both `x86_64` and `arm64` architectures ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- C#: Fix reloading tool scripts in the editor ([GH-52883](https://github.com/godotengine/godot/pull/52883)).
+- C#: iOS: Fix `P/Invoke` symbols being stripped by the linker, resulting in `EntryPointNotFoundException` crash at runtime ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- Core: Promote object validity checks to release builds ([GH-51796](https://github.com/godotengine/godot/pull/51796)).
+- Core: Make all file access 64-bit (`uint64_t`) ([GH-47254](https://github.com/godotengine/godot/pull/47254)).
+ * This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes.
+- Core: Fix negative delta arguments ([GH-52947](https://github.com/godotengine/godot/pull/52947)).
+- Core: Add frame delta smoothing option ([GH-48390](https://github.com/godotengine/godot/pull/48390)).
+ * This option is enabled by default (`application/run/delta_smoothing`). Please report any issue.
+- Crypto: Add AESContext, HMACContext, RSA public keys, encryption, decryption, sign, and verify ([GH-48144](https://github.com/godotengine/godot/pull/48144), [GH-48869](https://github.com/godotengine/godot/pull/48869)).
+- CSG: CSGPolygon fixes and features: Angle simplification, UV tiling distance, interval type ([GH-52509](https://github.com/godotengine/godot/pull/52509)).
+- Editor: Overhaul the theme editor and improve user experience ([GH-49774](https://github.com/godotengine/godot/pull/49774)).
+- GridMap: Implement individual mesh transform for MeshLibrary items ([GH-52298](https://github.com/godotengine/godot/pull/52298)).
+- HTML5: Export as Progressive Web App (PWA) ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Implement Godot <-> JavaScript interface ([GH-48691](https://github.com/godotengine/godot/pull/48691)).
+- HTML5: Implement AudioWorklet without threads ([GH-52650](https://github.com/godotengine/godot/pull/52650)).
+- Import: Implement lossless WebP encoding ([GH-47854](https://github.com/godotengine/godot/pull/47854)).
+- Import: Backport improved glTF module with scene export support ([GH-49120](https://github.com/godotengine/godot/pull/49120)).
+- macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks ([GH-46860](https://github.com/godotengine/godot/pull/46860)).
+- macOS: Add notarization support when exporting for macOS on a macOS host ([GH-49276](https://github.com/godotengine/godot/pull/49276)).
+- Mesh: Implement octahedral map normal/tangent attribute compression ([GH-46800](https://github.com/godotengine/godot/pull/46800)).
+- Mesh: Options to clean/simplify convex hull generated from mesh ([GH-50328](https://github.com/godotengine/godot/pull/50328)).
+- Particles: Add ring emitter for 3D particles ([GH-47801](https://github.com/godotengine/godot/pull/47801)).
+- Physics: Fix 2D and 3D moving platform logic ([GH-50166](https://github.com/godotengine/godot/pull/50166), [GH-51458](https://github.com/godotengine/godot/pull/51458)).
+- Physics: Various fixes to 2D and 3D KinematicBody `move_and_slide` and `move_and_collide` ([GH-50495](https://github.com/godotengine/godot/pull/50495)).
+- Physics: Improved logic for KinematicBody collision recovery depth ([GH-53451](https://github.com/godotengine/godot/pull/53451)).
+- Rendering: Rooms and portals-based occlusion culling ([GH-46130](https://github.com/godotengine/godot/pull/46130)).
+ * [In-depth documentation is available.](https://docs.godotengine.org/en/3.4/tutorials/3d/portals/index.html)
+- Rendering: Add a new high quality tonemapper: ACES Fitted ([GH-52477](https://github.com/godotengine/godot/pull/52477)).
+- Rendering: Fixes depth sorting of meshes with transparent textures ([GH-50721](https://github.com/godotengine/godot/pull/50721)).
+- Rendering: Add soft shadows to the CPU lightmapper ([GH-50184](https://github.com/godotengine/godot/pull/50184)).
+- Rendering: Import option to split vertex buffer stream in positions and attributes ([GH-46574](https://github.com/godotengine/godot/pull/46574)).
+- RichTextLabel: Fix auto-wrapping on CJK texts ([GH-49280](https://github.com/godotengine/godot/pull/49280)).
+- Shaders: Add support for structs and fragment-to-light varyings ([GH-48075](https://github.com/godotengine/godot/pull/48075)).
+- Viewport: Add a 2D scale factor property ([GH-52137](https://github.com/godotengine/godot/pull/52137)).
+- VisualScript: Improve and streamline VisualScriptFuncNodes `Call` `Set` `Get` ([GH-50709](https://github.com/godotengine/godot/pull/50709)).
+- Windows: Fix platform file access to allow file sharing with external programs ([GH-51430](https://github.com/godotengine/godot/pull/51430)).
+
+All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.4-stable.
+
+## Changes
+
+Here's a curated changelog with links to the relevant pull requests for details. The list is not exhaustive and will be completed in the future to include more noteworthy changes.
+
+Note that some of the changes in 3.4 have already been backported and published in [Godot 3.3.1](https://godotengine.org/article/maintenance-release-godot-3-3-1) and [3.3.2](https://godotengine.org/article/maintenance-release-godot-3-3-2), and therefore they were not listed here again. You can refer to the changelogs of those maintenance releases for details on what you might have missed since 3.3-stable.
+
+- Android: Add partial support for Android scoped storage ([GH-50359](https://github.com/godotengine/godot/pull/50359)).
+ * This also means we're now targeting API level 30 as required to publish new apps on Google Play.
+- Android: Add initial support for Play Asset Delivery ([GH-52526](https://github.com/godotengine/godot/pull/52526)).
+- Android: Improve input responsiveness on underpowered Android devices ([GH-42220](https://github.com/godotengine/godot/pull/42220)).
+- Android: Add GDNative libraries to Android custom Gradle builds ([GH-49912](https://github.com/godotengine/godot/pull/49912)).
+- Android: Implement per-pixel transparency ([GH-51935](https://github.com/godotengine/godot/pull/51935)).
+- Android: Resolve issue where the Godot app remains stuck when resuming ([GH-51584](https://github.com/godotengine/godot/pull/51584)).
+- Android: Add basic user data backup option ([GH-49070](https://github.com/godotengine/godot/pull/49070)).
+- Android: Add support for prompting the user to retain app data on uninstall ([GH-51605](https://github.com/godotengine/godot/pull/51605)).
+- Android: Remove non-functional native video OS methods ([GH-48537](https://github.com/godotengine/godot/pull/48537)).
+- Animation: Add animation "reset" track featurex ([GH-44558](https://github.com/godotengine/godot/pull/44558)).
+- Animation: Fix Tween active state and repeat after `stop()` and then `start()` ([GH-47142](https://github.com/godotengine/godot/pull/47142)).
+- Animation: Allow renaming bones and blend shapes ([GH-42827](https://github.com/godotengine/godot/pull/42827)).
+- Animation: Fix issues with BlendSpace2D `BLEND_MODE_DISCRETE_CARRY` ([GH-48375](https://github.com/godotengine/godot/pull/48375)).
+- Animation: Fixed issue where bones become detached if multiple SkeletonIK nodes are used ([GH-49031](https://github.com/godotengine/godot/pull/49031)).
+- Animation: Fix non functional 3D onion skinning ([GH-52664](https://github.com/godotengine/godot/pull/52664)).
+- Animation: Fix Animation Playback Track not seeking properly ([GH-38107](https://github.com/godotengine/godot/pull/38107)).
+- Animation: Fix bugs in AnimationNodeTransition's behavior ([GH-52543](https://github.com/godotengine/godot/pull/52543), [GH-52555](https://github.com/godotengine/godot/pull/52555)).
+- Animation: Fix rendering centered odd-size texture for AnimatedSprite/AnimatedSprite3D ([GH-53052](https://github.com/godotengine/godot/pull/53052)).
+- AStar: `get_available_point_id()` returns 0 instead of 1 when empty ([GH-48958](https://github.com/godotengine/godot/pull/48958)).
+- Audio: Fix cubic resampling algorithm ([GH-51082](https://github.com/godotengine/godot/pull/51082)).
+- Audio: Add Listener2D node ([GH-53429](https://github.com/godotengine/godot/pull/53429)).
+- Buildsystem: Refactor module defines into a generated header ([GH-50466](https://github.com/godotengine/godot/pull/50466)).
+- ButtonGroup: Add a `pressed `signal ([GH-48500](https://github.com/godotengine/godot/pull/48500)).
+- C#: macOS: Mono builds are now universal builds with support for both `x86_64` and `arm64` architectures ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- C#: Fix reloading tool scripts in the editor ([GH-52883](https://github.com/godotengine/godot/pull/52883)).
+- C#: iOS: Fix `P/Invoke` symbols being stripped by the linker, resulting in `EntryPointNotFoundException` crash at runtime ([GH-49248](https://github.com/godotengine/godot/pull/49248)).
+- C#: iOS: Cache AOT compiler output ([GH-51191](https://github.com/godotengine/godot/pull/51191)).
+- C#: Improve C# method listing ([GH-52607](https://github.com/godotengine/godot/pull/52607)).
+- C#: Add editor keyboard shortcut (Alt+B) for Mono Build solution button ([GH-52595](https://github.com/godotengine/godot/pull/52595)).
+- C#: Add support to export enum strings for `Array` ([GH-52763](https://github.com/godotengine/godot/pull/52763)).
+- C#: Deprecate `Xform` methods removed in 4.0, the `*` operator is preferred ([GH-52762](https://github.com/godotengine/godot/pull/52762)).
+- Camera2D: Make the most recently added current Camera2D take precedence ([GH-50112](https://github.com/godotengine/godot/pull/50112)).
+- CheckBox: Add disabled theme icons ([GH-37755](https://github.com/godotengine/godot/pull/37755)).
+- ColorPicker: Display previous color and allow selecting it back ([GH-48611](https://github.com/godotengine/godot/pull/48611), [GH-48623](https://github.com/godotengine/godot/pull/48623)).
+- Control: Don't change hovering during Control focus events ([GH-47280](https://github.com/godotengine/godot/pull/47280)).
+- Core: Promote object validity checks to release builds ([GH-51796](https://github.com/godotengine/godot/pull/51796)).
+- Core: Make all file access 64-bit (`uint64_t`) ([GH-47254](https://github.com/godotengine/godot/pull/47254)).
+ * This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes.
+- Core: Add frame delta smoothing option ([GH-48390](https://github.com/godotengine/godot/pull/48390)).
+ * This option is enabled by default (`application/run/delta_smoothing`). Please report any issue.
+- Core: Fix negative delta arguments ([GH-52947](https://github.com/godotengine/godot/pull/52947)).
+- Core: Add option to sync frame delta after draw ([GH-48555](https://github.com/godotengine/godot/pull/48555)).
+ * This option is experimental and disabled by default (`application/run/delta_sync_after_draw`). Please try it out and report any issue.
+- Core: Complain if casting a freed object in a debug session ([GH-51095](https://github.com/godotengine/godot/pull/51095)).
+- Core: Thread callbacks can now take optional parameters ([GH-38078](https://github.com/godotengine/godot/pull/38078), [GH-51093](https://github.com/godotengine/godot/pull/51093)).
+- Core: Fix read/write issues with `NaN` and `INF` in VariantParser ([GH-47500](https://github.com/godotengine/godot/pull/47500)).
+- Core: Provide a getter for the project data directory ([GH-52714](https://github.com/godotengine/godot/pull/52714)).
+- Core: Add support for numeric XML entities to XMLParser ([GH-47978](https://github.com/godotengine/godot/pull/47978)).
+- Core: Add option for BVH thread safety ([GH-48892](https://github.com/godotengine/godot/pull/48892)).
+- Core: Fix sub-resource storing the wrong index in cache ([GH-49625](https://github.com/godotengine/godot/pull/49625)).
+- Core: Add detailed error messages to release builds (used to be debug-only) ([GH-53405](https://github.com/godotengine/godot/pull/53405)).
+- Core: Improve the console error logging appearance: ([GH-49577](https://github.com/godotengine/godot/pull/49577)).
+- Core: Add `Engine.print_error_messages` property to disable printing errors ([GH-50640](https://github.com/godotengine/godot/pull/50640)).
+- Core: Added Node name to `print()` of all nodes, makes `Object::to_string()` virtual ([GH-38819](https://github.com/godotengine/godot/pull/38819)).
+- Core: Fix `Transform::xform(Plane)` functions to handle non-uniform scaling ([GH-50637](https://github.com/godotengine/godot/pull/50637)).
+- Core: Fix renaming directories with `Directory.rename()` ([GH-51793](https://github.com/godotengine/godot/pull/51793)).
+- Core: Harmonize output of `OS.get_locale()` between platforms ([GH-40708](https://github.com/godotengine/godot/pull/40708)).
+- Core: Implement `OS.get_locale_language()` helper method ([GH-52740](https://github.com/godotengine/godot/pull/52740)).
+- Core: Fix path with multiple slashes not being corrected on templates ([GH-52513](https://github.com/godotengine/godot/pull/52513)).
+- Core: Allow using global classes as project `MainLoop` implementation ([GH-52438](https://github.com/godotengine/godot/pull/52438)).
+- Core: Add an `Array.pop_at()` method to pop an element at an arbitrary index ([GH-52143](https://github.com/godotengine/godot/pull/52143)).
+- Core: Fix `String.get_base_dir()` handling of Windows top-level directories ([GH-52744](https://github.com/godotengine/godot/pull/52744)).
+- Core: Expose enum related methods in ClassDB ([GH-52572](https://github.com/godotengine/godot/pull/52572)).
+- Core: Allow for platform `Thread` implementation override ([GH-52734](https://github.com/godotengine/godot/pull/52734)).
+- Core: Fix potential crash when creating thread with an invalid target instance ([GH-53060](https://github.com/godotengine/godot/pull/53060)).
+- Core: Fix behavior of `CONNECT_REFERENCE_COUNTED` option for signal connections ([GH-47442](https://github.com/godotengine/godot/pull/47442)).
+- Crypto: Add AESContext, RSA public keys, encryption, decryption, sign, and verify ([GH-48144](https://github.com/godotengine/godot/pull/48144)).
+- Crypto: Add HMACContext ([GH-48869](https://github.com/godotengine/godot/pull/48869)).
+- CSG: CSGPolygon fixes and features: Angle simplification, UV tiling distance, interval type ([GH-52509](https://github.com/godotengine/godot/pull/52509)).
+- Debugger: Automatic remote debugger port assignment ([GH-37067](https://github.com/godotengine/godot/pull/37067)).
+- Debugger: Fix Marshalls infinite recursion crash ([GH-51068](https://github.com/godotengine/godot/pull/51068)).
+- Editor: Add zoom support to SpriteFrames editor plugin ([GH-48977](https://github.com/godotengine/godot/pull/48977)).
+- Editor: Fix logic for showing tilemap debug collision shapes ([GH-49075](https://github.com/godotengine/godot/pull/49075)).
+- Editor: Add `EditorResourcePicker` and `EditorScriptPicker` classes for plugins (and internal editor use) ([GH-49491](https://github.com/godotengine/godot/pull/49491)).
+- Editor: Refactor `Theme` item management in the theme editor ([GH-49512](https://github.com/godotengine/godot/pull/49512)).
+- Editor: Overhaul the theme editor and improve user experience ([GH-49774](https://github.com/godotengine/godot/pull/49774)).
+- Editor: Allow to create a node at specific position ([GH-50242](https://github.com/godotengine/godot/pull/50242)).
+- Editor: Implement a `%command%` placeholder in the Main Run Args setting ([GH-35992](https://github.com/godotengine/godot/pull/35992)).
+- Editor: Add keyboard shortcuts to the project manager ([GH-47894](https://github.com/godotengine/godot/pull/47894)).
+- Editor: Handle portrait mode monitors in the automatic editor scale detection ([GH-48597](https://github.com/godotengine/godot/pull/48597)).
+- Editor: Add custom debug shape thickness and color options to RayCast ([GH-49726](https://github.com/godotengine/godot/pull/49726)).
+- Editor: Properly update NodePaths in the editor in more cases when nodes are moved or renamed ([GH-49812](https://github.com/godotengine/godot/pull/49812)).
+- Editor: Improve 2D editor zoom logic ([GH-50490](https://github.com/godotengine/godot/pull/50490), [GH-50499](https://github.com/godotengine/godot/pull/50499)).
+- Editor: Make several actions in the Inspector dock more obvious ([GH-50528](https://github.com/godotengine/godot/pull/50528)).
+- Editor: Improve the editor feature profiles UX ([GH-49643](https://github.com/godotengine/godot/pull/49643)).
+- Editor: Improve the UI/UX of the Export Template Manager dialog ([GH-50531](https://github.com/godotengine/godot/pull/50531)).
+- Editor: Improve FileSystem dock sorting ([GH-50565](https://github.com/godotengine/godot/pull/50565)).
+- Editor: Add the ability to reorder array elements from the inspector ([GH-50651](https://github.com/godotengine/godot/pull/50651)).
+- Editor: Assign value to property by dropping to scene tree ([GH-50700](https://github.com/godotengine/godot/pull/50700)).
+- Editor: Improve the 3D editor manipulation gizmo ([GH-50597](https://github.com/godotengine/godot/pull/50597)).
+- Editor: Refactor layer property editor grid ([GH-51040](https://github.com/godotengine/godot/pull/51040)).
+- Editor: Rationalize property reversion ([GH-51166](https://github.com/godotengine/godot/pull/51166)).
+- Editor: Allow dropping property path into script editor ([GH-51629](https://github.com/godotengine/godot/pull/51629)).
+- Editor: Auto-reload scripts with external editor ([GH-51828](https://github.com/godotengine/godot/pull/51828)).
+- Editor: Improve the animation bezier editor ([GH-48572](https://github.com/godotengine/godot/pull/48572)).
+- Editor: Save branch as scene by dropping to filesystem ([GH-52503](https://github.com/godotengine/godot/pull/52503)).
+- Editor: Fix scale sensitivity for 3D objects ([GH-52665](https://github.com/godotengine/godot/pull/52665)).
+- Editor: Use QuickOpen to load resources in the inspector ([GH-37228](https://github.com/godotengine/godot/pull/37228)).
+- Editor: Fix preview grid in SpriteFrames editor's "Select Frames" dialog ([GH-52461](https://github.com/godotengine/godot/pull/52461)).
+- Editor: Add up/down keys to increment/decrement value in editor spin slider ([GH-53090](https://github.com/godotengine/godot/pull/53090)).
+- Editor: Allow creating nodes in Animation Blend Tree by dragging from in/out ports ([GH-52966](https://github.com/godotengine/godot/pull/52966)).
+- Editor: Allow dragging multiple resources onto exported array variable at once ([GH-50718](https://github.com/godotengine/godot/pull/50718)).
+- Editor: Add history navigation in the script editor using extra mouse buttons ([GH-53067](https://github.com/godotengine/godot/pull/53067)).
+- Font: Re-add support for kerning in DynamicFont ([GH-49377](https://github.com/godotengine/godot/pull/49377)).
+- Font: Allow using WOFF fonts in DynamicFont ([GH-52052](https://github.com/godotengine/godot/pull/52052)).
+- GDScript: Fix parsing multi-line `preload` statement ([GH-52521](https://github.com/godotengine/godot/pull/52521)).
+- GLES2: Add basic support for CPU blendshapes ([GH-48480](https://github.com/godotengine/godot/pull/48480)).
+- GLES2: Performance improvements for CPU blendshapes ([GH-51363](https://github.com/godotengine/godot/pull/51363)).
+- GLES2: Allow using clearcoat, anisotropy and refraction in SpatialMaterial ([GH-51967](https://github.com/godotengine/godot/pull/51967)).
+- GLES2: Implement `Viewport.keep_3d_linear` for VR applications to convert output to linear color space ([GH-51780](https://github.com/godotengine/godot/pull/51780)).
+- GLES3: Allow repeat flag in viewport textures ([GH-34008](https://github.com/godotengine/godot/pull/34008)).
+- GLES3: Fix draw order of transparent materials with multiple directional lights ([GH-47129](https://github.com/godotengine/godot/pull/47129)).
+- GLES3: Fix multimesh being colored by other nodes GLES3 ([GH-47582](https://github.com/godotengine/godot/pull/47582)).
+- GLES3: Add support for contrast-adaptive sharpening in 3D ([GH-47416](https://github.com/godotengine/godot/pull/47416)).
+- GraphEdit: Enable zooming with Ctrl + Scroll wheel and related fixes to zoom handling ([GH-47173](https://github.com/godotengine/godot/pull/47173)).
+- GraphEdit: Make zoom limits and step adjustable ([GH-50526](https://github.com/godotengine/godot/pull/50526)).
+- GraphNode: Properly handle children with "Expand" flag ([GH-39810](https://github.com/godotengine/godot/pull/39810)).
+- GridMap: Implement individual mesh transform for MeshLibrary items ([GH-52298](https://github.com/godotengine/godot/pull/52298)).
+- HTML5: Export as Progressive Web App (PWA) ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Implement Godot <-> JavaScript interface ([GH-48691](https://github.com/godotengine/godot/pull/48691)).
+- HTML5: Implement AudioWorklet without threads ([GH-52650](https://github.com/godotengine/godot/pull/52650)).
+- HTML5: Debug HTTP server refactor with SSL support ([GH-48250](https://github.com/godotengine/godot/pull/48250)).
+- HTML5: Add easy to use download API ([GH-48929](https://github.com/godotengine/godot/pull/48929)).
+- HTML5: Fix bug in AudioWorklet when reading output buffer ([GH-52696](https://github.com/godotengine/godot/pull/52696)).
+- HTML5: Use browser mix rate by default on the Web ([GH-52723](https://github.com/godotengine/godot/pull/52723)).
+- HTML5: Release pressed events when the window is blurred on HTML5 platform ([GH-52973](https://github.com/godotengine/godot/pull/52973)).
+- HTML5: Refactor event handlers, drop most Emscripten HTML5 dependencies ([GH-52812](https://github.com/godotengine/godot/pull/52812)).
+- Import: Implement lossless WebP encoding ([GH-47854](https://github.com/godotengine/godot/pull/47854)).
+- Import: Add anisotropic filter option for TextureArrays ([GH-51402](https://github.com/godotengine/godot/pull/51402)).
+- Import: Add "Normal Map Invert Y" import option for normal maps ([GH-48693](https://github.com/godotengine/godot/pull/48693)).
+- Import: Backport improved glTF module with scene export support ([GH-49120](https://github.com/godotengine/godot/pull/49120)).
+- Import: Optimize image channel detection ([GH-47396](https://github.com/godotengine/godot/pull/47396)).
+- Import: Fix loading RLE compressed TGA files ([GH-49603](https://github.com/godotengine/godot/pull/49603)).
+- Import: Add optional region cropping for TextureAtlas importer ([GH-52652](https://github.com/godotengine/godot/pull/52652)).
+- Import: Fixed issue in TextureAtlas import of images with wrong size ([GH-42103](https://github.com/godotengine/godot/pull/42103)).
+- Import: Fix potential crash importing invalid BMP files ([GH-46555](https://github.com/godotengine/godot/pull/46555)).
+- Input: Add support for physical scancodes, fixes non-latin layout scancodes on Linux ([GH-46764](https://github.com/godotengine/godot/pull/46764)).
+- Input: Fix game controllers ignoring the last listed button ([GH-48934](https://github.com/godotengine/godot/pull/48934)).
+ * Breaks compat slightly by changing the value of some of the `JoystickList` enum constants.
+- Input: Allow getting axis/vector values from multiple actions ([GH-50788](https://github.com/godotengine/godot/pull/50788)).
+- Input: Allow checking for exact matches with Action events ([GH-50874](https://github.com/godotengine/godot/pull/50874)).
+- iOS: Add pen pressure support for Apple Pencil ([GH-47469](https://github.com/godotengine/godot/pull/47469)).
+- iOS: Add option to automatically generate icons and launch screens ([GH-49464](https://github.com/godotengine/godot/pull/49464)).
+- iOS: Support multiple `plist` types in plugin ([GH-49802](https://github.com/godotengine/godot/pull/49802)).
+- iOS: Remove duplicate orientation setting in the export preset ([GH-48943](https://github.com/godotengine/godot/pull/48943)).
+- iOS: Implement missing OS `set`/`get_clipboard()` methods ([GH-52540](https://github.com/godotengine/godot/pull/52540)).
+- Label: Fix valign with stylebox borders ([GH-50478](https://github.com/godotengine/godot/pull/50478)).
+- Lightmapper: Add an editor setting to configure number of threads for lightmap baking ([GH-52952](https://github.com/godotengine/godot/pull/52952)).
+- LineEdit: Double click selects words, triple click selects all the content ([GH-46527](https://github.com/godotengine/godot/pull/46527)).
+- Linux: Fix implementation of `move_to_trash` ([GH-44021](https://github.com/godotengine/godot/pull/44021)).
+- Linux: Fix `Directory::get_space_left()` result ([GH-49222](https://github.com/godotengine/godot/pull/49222)).
+- LSP: Implement `didSave` notify and rename request ([GH-48616](https://github.com/godotengine/godot/pull/48616)).
+- LSP: Fix `SymbolKind` reporting wrong types and `get_node()` parsing ([GH-50914](https://github.com/godotengine/godot/pull/50914), [GH-51283](https://github.com/godotengine/godot/pull/51283)).
+- LSP: Add support for custom host setting ([GH-52330](https://github.com/godotengine/godot/pull/52330)).
+- LSP: Implement `applyEdit` for signal connecting ([GH-53068](https://github.com/godotengine/godot/pull/53068)).
+- LSP: Report `new()` as `_init` & fix docstrings on multiline functions ([GH-53094](https://github.com/godotengine/godot/pull/53094)).
+- macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks ([GH-46860](https://github.com/godotengine/godot/pull/46860)).
+- macOS: Allow "on top" windows to enter fullscreen mode ([GH-49017](https://github.com/godotengine/godot/pull/49017)).
+- macOS: Add notarization support when exporting for macOS on a macOS host ([GH-49276](https://github.com/godotengine/godot/pull/49276)).
+- macOS: Fix `Directory::get_space_left()` result ([GH-49222](https://github.com/godotengine/godot/pull/49222)).
+- macOS: Fix Xbox controllers in Bluetooth mode on macOS ([GH-51117](https://github.com/godotengine/godot/pull/51117)).
+- macOS: Fix incorrect mouse position in fullscreen ([GH-52374](https://github.com/godotengine/godot/pull/52374)).
+- macOS: Prefer .app bundle icon over the default one ([GH-48686](https://github.com/godotengine/godot/pull/48686)).
+- Mesh: Implement octahedral map normal/tangent attribute compression ([GH-46800](https://github.com/godotengine/godot/pull/46800)).
+- Mesh: Add a `center_offset` property to both plane primitive and quad primitive ([GH-48763](https://github.com/godotengine/godot/pull/48763)).
+- Mesh: Fix UV mapping on CSGSphere ([GH-49195](https://github.com/godotengine/godot/pull/49195)).
+- Mesh: Options to clean/simplify convex hull generated from mesh ([GH-50328](https://github.com/godotengine/godot/pull/50328)).
+- Mesh: Fix multiple issues with CSGPolygon ([GH-49314](https://github.com/godotengine/godot/pull/49314)).
+- Mesh: Fix the normals of SphereMesh when the sphere/hemisphere is oblong ([GH-51995](https://github.com/godotengine/godot/pull/51995)).
+- Mesh: Update mesh AABB when software skinning is used ([GH-53144](https://github.com/godotengine/godot/pull/53144)).
+- Networking: Add support for gzip compression in HTTPRequest ([GH-48651](https://github.com/godotengine/godot/pull/48651)).
+- Networking: Add support for multiple address resolution in DNS requests ([GH-49020](https://github.com/godotengine/godot/pull/49020)).
+- Networking: Implement `String::parse_url()` for parsing URLs ([GH-48205](https://github.com/godotengine/godot/pull/48205)).
+- Networking: Add `get_buffered_amount()` to WebRTCDataChannel ([GH-50659](https://github.com/godotengine/godot/pull/50659)).
+- Networking: WebsocketPeer outbound buffer fixes and buffer size query ([GH-51037](https://github.com/godotengine/godot/pull/51037)).
+- Networking: Fix IP address resolution incorrectly locking the main thread ([GH-51199](https://github.com/godotengine/godot/pull/51199)).
+- Networking: Add `dtls_hostname` property to ENet ([GH-51434](https://github.com/godotengine/godot/pull/51434)).
+- Networking: Enable range coder compression by default in NetworkedMultiplayerENet ([GH-51525](https://github.com/godotengine/godot/pull/51525)).
+- OpenSimplexNoise: Fix swapped axes in `get_image()` ([GH-30424](https://github.com/godotengine/godot/pull/30424)).
+ * Breaks compat. If you need to preserve the 3.2 behavior, swap your first and second arguments in `get_image()`.
+- OpenSimplexNoise: Add support for generating noise images with an offset ([GH-48805](https://github.com/godotengine/godot/pull/48805)).
+- OS: Expose OS data directory getter methods ([GH-49732](https://github.com/godotengine/godot/pull/49732)).
+- Particles: Add ring emitter for 3D particles ([GH-47801](https://github.com/godotengine/godot/pull/47801)).
+- Particles: Fixed `rotate_y` property of particle shaders ([GH-46687](https://github.com/godotengine/godot/pull/46687)).
+- Particles: Fixed behavior of velocity spread ([GH-47310](https://github.com/godotengine/godot/pull/47310)).
+- Physics: Fix 2D and 3D moving platform logic ([GH-50166](https://github.com/godotengine/godot/pull/50166), [GH-51458](https://github.com/godotengine/godot/pull/51458)).
+- Physics: Various fixes to 2D and 3D KinematicBody `move_and_slide` and `move_and_collide` ([GH-50495](https://github.com/godotengine/godot/pull/50495)).
+- Physics: Improved logic for KinematicBody collision recovery depth ([GH-53451](https://github.com/godotengine/godot/pull/53451)).
+- Physics: Fix Rayshape recovery in `test_body_ray_separation` ([GH-53453](https://github.com/godotengine/godot/pull/53453)).
+- Physics: Enable setting the number of physics solver iterations ([GH-38387](https://github.com/godotengine/godot/pull/38387), [GH-50257](https://github.com/godotengine/godot/pull/50257)).
+- Physics: Apply infinite inertia checks to Godot Physics 3D ([GH-42637](https://github.com/godotengine/godot/pull/42637)).
+- Physics: Return RID instead of Object ID in area-body_shape_entered-exited signals ([GH-42743](https://github.com/godotengine/godot/pull/42743)).
+- Physics: Heightmap collision shape support in Godot Physics 3D ([GH-47349](https://github.com/godotengine/godot/pull/47349)).
+- Physics: Add support for Dynamic BVH as 2D physics broadphase ([GH-48314](https://github.com/godotengine/godot/pull/48314)).
+- Physics: Port Bullet's convex hull computer to replace QuickHull ([GH-48533](https://github.com/godotengine/godot/pull/48533)).
+- Physics: Expose `body_test_motion` in 3D physics server ([GH-50103](https://github.com/godotengine/godot/pull/50103)).
+- Physics: Add option to sync motion to physics in 3D KinematicBody ([GH-49446](https://github.com/godotengine/godot/pull/49446)).
+- Physics: Expose collider RID in 2D/3D kinematic collision ([GH-49476](https://github.com/godotengine/godot/pull/49476)).
+- Physics: Support for disabling physics on SoftBody ([GH-49835](https://github.com/godotengine/godot/pull/49835)).
+- Physics: Fix and clean disabled shapes handling in Godot physics servers ([GH-49845](https://github.com/godotengine/godot/pull/49845)).
+- Physics: Optimize area detection and `intersect_shape` queries with concave shapes ([GH-48551](https://github.com/godotengine/godot/pull/48551)).
+- Physics: Optimize raycast with large Heightmap shape data ([GH-48709](https://github.com/godotengine/godot/pull/48709)).
+- Physics: Fix KinematicBody axis lock ([GH-45176](https://github.com/godotengine/godot/pull/45176)).
+- Physics: Backport new methods for KinematicBody and KinematicCollision ([GH-52116](https://github.com/godotengine/godot/pull/52116)).
+- Physics: Expose SoftBody pin methods for scripting ([GH-52369](https://github.com/godotengine/godot/pull/52369)).
+- Physics: Don't override KinematicCollision reference when still in use in script: ([GH-52955](https://github.com/godotengine/godot/pull/52955)).
+- Physics: Reload kinematic shapes when changing PhysicsBody mode to Kinematic ([GH-53118](https://github.com/godotengine/godot/pull/53118)).
+- Physics: Wake up 2D and 3D bodies in impulse and force functions ([GH-53113](https://github.com/godotengine/godot/pull/53113)).
+- Physics: Compile Bullet with threadsafe switch on ([GH-53183](https://github.com/godotengine/godot/pull/53183)).
+- Rendering: Rooms and portals-based occlusion culling ([GH-46130](https://github.com/godotengine/godot/pull/46130)).
+- Rendering: Add a new high quality tonemapper: ACES Fitted ([GH-52477](https://github.com/godotengine/godot/pull/52477)).
+- Rendering: VisualServer now sorts based on AABB position ([GH-43506](https://github.com/godotengine/godot/pull/43506)).
+- Rendering: Fixes depth sorting of meshes with transparent textures ([GH-50721](https://github.com/godotengine/godot/pull/50721)).
+- Rendering: Add soft shadows to the CPU lightmapper ([GH-50184](https://github.com/godotengine/godot/pull/50184)).
+- Rendering: Import option to split vertex buffer stream in positions and attributes ([GH-46574](https://github.com/godotengine/godot/pull/46574)).
+- Rendering: Fix flipped binormal in SpatialMaterial triplanar mapping ([GH-49950](https://github.com/godotengine/godot/pull/49950)).
+- Rendering: Fix CanvasItem bounding rect calculation in some cases ([GH-49160](https://github.com/godotengine/godot/pull/49160)).
+- Rendering: Make Blinn and Phong specular consider albedo and specular amount ([GH-51410](https://github.com/godotengine/godot/pull/51410)).
+- Rendering: Add horizon specular occlusion ([GH-51416](https://github.com/godotengine/godot/pull/51416)).
+- Rendering: Clamp negative colors regardless of the tonemapper to avoid artifacts ([GH-51439](https://github.com/godotengine/godot/pull/51439)).
+- Rendering: Fix Y billboard shear when rotating camera ([GH-52151](https://github.com/godotengine/godot/pull/52151)).
+- Rendering: Add half frame to `floor()` for animated particles UV to compensate precision errors ([GH-53233](https://github.com/godotengine/godot/pull/53233)).
+- RichTextLabel: Fix auto-wrapping on CJK texts ([GH-49280](https://github.com/godotengine/godot/pull/49280)).
+- RichTextLabel: Fix character horizontal offset calculation ([GH-52752](https://github.com/godotengine/godot/pull/52752)).
+- Scene: Fix loading packed scene with editable children at runtime ([GH-49664](https://github.com/godotengine/godot/pull/49664)).
+- Scene: Write node groups on a single line when saving a `.tscn` file ([GH-52284](https://github.com/godotengine/godot/pull/52284)).
+- Scene: Compare connections by object ID, making `.tscn` order deterministic ([GH-52493](https://github.com/godotengine/godot/pull/52493)).
+- ScrollBar: Add `increment_pressed` and `decrement_pressed` icons ([GH-51805](https://github.com/godotengine/godot/pull/51805)).
+- Shaders: Add support for structs and fragment-to-light varyings ([GH-48075](https://github.com/godotengine/godot/pull/48075)).
+- Shaders: Add support for global const arrays ([GH-50889](https://github.com/godotengine/godot/pull/50889)).
+- Shaders: Makes `TIME` available in custom functions by default ([GH-49509](https://github.com/godotengine/godot/pull/49509)).
+- Shaders: Default shader specular render mode to `SCHLICK_GGX` ([GH-51401](https://github.com/godotengine/godot/pull/51401)).
+- Shaders: Prevent shaders from generating code before the constructor finishes ([GH-52475](https://github.com/godotengine/godot/pull/52475)).
+- Sprite3D: Allow unclamped colors in Sprite3D ([GH-51462](https://github.com/godotengine/godot/pull/51462)).
+- TabContainer: Fix moving dropped tab to incorrect child index ([GH-51177](https://github.com/godotengine/godot/pull/51177)).
+- TextureButton: Add `flip_h` and `flip_v` properties ([GH-30424](https://github.com/godotengine/godot/pull/30424)).
+- TextureProgress: Improve behavior with nine patch ([GH-45815](https://github.com/godotengine/godot/pull/45815)).
+- TextureProgress: Add offset for progress texture ([GH-38722](https://github.com/godotengine/godot/pull/38722)).
+- Theme: Various improvements to the Theme API ([GH-49487](https://github.com/godotengine/godot/pull/49487)).
+- Theme: StyleBox fake anti-aliasing improvements ([GH-51589](https://github.com/godotengine/godot/pull/51589)).
+- Theme: Add support for partial custom editor themes ([GH-51648](https://github.com/godotengine/godot/pull/51648)).
+- Theme: Add API to retrieve the default font, and optimize property change notification ([GH-53397](https://github.com/godotengine/godot/pull/53397)).
+- Theme: Fix potential crash with custom themes using BitMap fonts ([GH-53410](https://github.com/godotengine/godot/pull/53410)).
+- TileSet: Fix selection of spaced atlas tile when using priority ([GH-50886](https://github.com/godotengine/godot/pull/50886)).
+- Translation: Allow override `get_message` with virtual method ([GH-53207](https://github.com/godotengine/godot/pull/53207)).
+- Viewport: Add a 2D scale factor property ([GH-52137](https://github.com/godotengine/godot/pull/52137)).
+- Viewport: Allow input echo when changing UI focus ([GH-44456](https://github.com/godotengine/godot/pull/44456)).
+- VisualScript: Allow dropping custom node scripts in VisualScript editor ([GH-50696](https://github.com/godotengine/godot/pull/50696)).
+- VisualScript: Expose visual script custom node type hints ([GH-50705](https://github.com/godotengine/godot/pull/50705)).
+- VisualScript: Improve and streamline VisualScriptFuncNodes `Call` `Set` `Get` ([GH-50709](https://github.com/godotengine/godot/pull/50709)).
+- Windows: Fix platform file access to allow file sharing with external programs ([GH-51430](https://github.com/godotengine/godot/pull/51430)).
+- Windows: Send error logs to `stderr` instead of `stdout`, like done on other OSes ([GH-39139](https://github.com/godotengine/godot/pull/39139)).
+- Windows: Fix `OS.shell_open()` not returning errors ([GH-52842](https://github.com/godotengine/godot/pull/52842)).
+- Windows: Allow renaming to change the case of Windows directories ([GH-43068](https://github.com/godotengine/godot/pull/43068)).
+- XR: Add `VIEW_INDEX` variable in shader to know which eye/view we're rendering for ([GH-48011](https://github.com/godotengine/godot/pull/48011)).
+- Thirdparty library updates: bullet 3.17, embree 3.13.0, mbedtls 2.16.11, nanosvg git, CA root certificates.
+- API documentation updates.
+- Editor translation updates.
+- And many more bug fixes and usability enhancements all around the engine!
+
+See the full changelog since 3.3-stable ([chronological](https://downloads.tuxfamily.org/godotengine/3.4/beta6/Godot_v3.4-beta6_changelog_chrono.txt), or [for each contributor](https://downloads.tuxfamily.org/godotengine/3.4/beta6/Godot_v3.4-beta6_changelog_authors.txt)).
+
+You can also browse the [changes between 3.4 beta 5 and beta 6](https://github.com/godotengine/godot/compare/dd0ee487280d1a6dc4941235cc85bf211cebc444...3e2bb415a9b186596b9ce02debc79590380c2355).
+
+This release is built from commit [3e2bb415a9b186596b9ce02debc79590380c2355](https://github.com/godotengine/godot/commit/3e2bb415a9b186596b9ce02debc79590380c2355).
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.4/beta6/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.4/beta6/mono/) (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono **6.12.0.147** are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.4 beta 6. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.3 or earlier no longer works in 3.4 beta 6).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-5-beta-1.md b/collections/_article/dev-snapshot-godot-3-5-beta-1.md
new file mode 100644
index 0000000000..480be3b2f1
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-5-beta-1.md
@@ -0,0 +1,87 @@
+---
+title: "Dev snapshot: Godot 3.5 beta 1"
+excerpt: "We're getting ready for Godot 3.5, with some of the major highlights already merged and ready to test: asynchronous shader compilation and caching, new NavigationServer with obstacle avoidance, improved in-editor VCS integration, and more!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/61e/04e/00d/61e04e00d599a636911489.jpg
+date: 2022-01-13 16:06:35
+---
+
+Godot 3.4 was [released 2 months ago](/article/godot-3-4-is-released), and some of the major planned features for Godot 3.5 have since been merged and are now ready for wider testing.
+
+So we're starting the [beta testing](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta) phase with this already significant set of changes, and we'll have frequent beta builds to polish them for the stable release. Some more features are still being worked on and will be included in future beta builds.
+
+All this work is done by contributors on the side while our main development focus remains on the upcoming Godot 4.0 alpha (see our [release policy](https://docs.godotengine.org/en/stable/about/release_policy.html) for details on the various Godot versions).
+
+[Jump to the **Downloads** section.](#downloads)
+
+As usual, you can try it live with the [**online version of the Godot editor**](https://editor.godotengine.org/3.5.beta1/godot.tools.html) updated for this release.
+
+## Highlights
+
+The main changes coming in Godot 3.5 and included in this beta are:
+
+### Asynchronous shader compilation + caching (ubershader) ([GH-53411](https://github.com/godotengine/godot/pull/53411))
+
+A long awaited solution to shader compilation stuttering on OpenGL, courtesy Pedro J. Estébanez ([RandomShaper](https://github.com/RandomShaper))!
+
+This new system uses an "ubershader" (big shader supporting all features, slow but compiled on startup) to fill in for all shaders initially while the more efficient and material-specific shaders get compiled asynchronously, and cached for future runs.
+
+This means that on the first run materials may look a bit different for a second or two, but there should no longer be compilation lags. Please test this thoroughly and let us know how it performs on your projects.
+
+### Add NavigationServer with obstacle avoidance using RVO2 ([GH-48395](https://github.com/godotengine/godot/pull/48395))
+
+Jake Young ([Duroxxigar](https://github.com/Duroxxigar)) backported the refactored and much improved navigation system that Andrea Catania ([AndreaCatania](https://github.com/AndreaCatania)) implemented for [Godot 4.0](https://github.com/godotengine/godot/pull/34776) back in 2020!
+
+This adds support for obstacle avoidance using the RVO2 library, and navigation meshes can now be baked at runtime.
+
+The backport was done while attempting to preserve API compatibility within reason, but the underlying behavior will change, mainly to provide *a lot* more features and flexibility. We expect that all users will happily move to the new NavigationServer, but please report issues if you see behavior changes for the worse when upgrading from 3.4.
+
+### Add push, pull, fetch and improved diff view to VCS UI ([GH-53900](https://github.com/godotengine/godot/pull/53900))
+
+Aged like fine wine, Meru Patel ([Janglee123](https://github.com/Janglee123))'s work from [Google Summer of Code 2020](https://godotengine.org/article/gsoc-2020-progress-report-1#vcs-improvements) has been continued and updated by [GSoC 2019 alumni](https://godotengine.org/article/gsoc-2019-progress-report-3#vcs-integration) Twarit Waikar ([ChronicallySerious](https://github.com/ChronicallySerious))!
+
+What is it? A lot of new features for Version Control Systems (VCS) integration in the Godot editor, such as push, pull, and fetch operations, as well as a very nice diff view UI. All these features have been implemented in the official [Git integration plugin](https://github.com/godotengine/godot-git-plugin). Watch the [Releases page](https://github.com/godotengine/godot-git-plugin/releases) for upcoming testing builds of the Git plugin to use with 3.5 beta 1!
+
+### And more!
+
+- Core: Add GradientTexture2D ([GH-54824](https://github.com/godotengine/godot/pull/54824)).
+- Core: Allow pinning property values + Consistent property defaults ([GH-52943](https://github.com/godotengine/godot/pull/52943)).
+- Core: Support deep comparison of Array and Dictionary ([GH-42625](https://github.com/godotengine/godot/pull/42625)).
+- Networking: Add proxy support for HTTPClient and the editor ([GH-55988](https://github.com/godotengine/godot/pull/55988)).
+- Rendering: Add `material_overlay` property to MeshInstance ([GH-50823](https://github.com/godotengine/godot/pull/50823)).
+- Rendering: Faster editor line drawing - Path2D and `draw_line` ([GH-54377](https://github.com/godotengine/godot/pull/54377)).
+- VisualShader: Add hints and default values to the uniform nodes ([GH-56466](https://github.com/godotengine/godot/pull/56466)).
+- Windows: Improve console handling and `execute` ([GH-55987](https://github.com/godotengine/godot/pull/55987)).
+ * This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn't open with a console by default, but you can see console output if you start it from a console yourself. You can [create a batch script or shortcut](https://github.com/godotengine/godot/pull/55987#issuecomment-996563579) to automatically start Godot from a console as in previous releases.
+- Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) ([GH-54625](https://github.com/godotengine/godot/pull/54625)).
+
+All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.5-stable.
+
+## Changelog
+
+There's no curated changelog just yet, I still have to skim through all commits to select the changelog worthy changes.
+
+For now, you can check the full changelog since 3.4-stable ([chronological](https://downloads.tuxfamily.org/godotengine/3.5/beta1/Godot_v3.5-beta1_changelog_chrono.txt), or [for each contributor](https://downloads.tuxfamily.org/godotengine/3.5/beta1/Godot_v3.5-beta1_changelog_authors.txt)).
+
+This release is built from commit [b9b23d2226261e09d4eaa581c865920c00a826c7](https://github.com/godotengine/godot/commit/b9b23d2226261e09d4eaa581c865920c00a826c7).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.5/beta1/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.5/beta1/mono/) (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono **6.12.0.158** are included in this build.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.5 beta 1. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.4.x no longer works in 3.5 beta 1).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-5-beta-2.md b/collections/_article/dev-snapshot-godot-3-5-beta-2.md
new file mode 100644
index 0000000000..0a47f426b2
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-5-beta-2.md
@@ -0,0 +1,129 @@
+---
+title: "Dev snapshot: Godot 3.5 beta 2"
+excerpt: "It's already been 2 months since 3.5 beta 1, and we have a ton of new changes ready to test! Some of the main highlights added in beta 2 are physics interpolation for 3D, and a new OccluderShaderPolygon for your 3D occlusion needs."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/623/0c7/a89/6230c7a89237e646159568.jpg
+date: 2022-03-15 17:06:49
+---
+
+It's already been 2 months since [3.5 beta 1](/article/dev-snapshot-3-5-beta-2)! Between biweekly [4.0 alpha](/article/dev-snapshot-godot-4-0-alpha-4) builds and maintenance releases for the stable branch ([3.4.3](/article/maintenance-release-godot-3-4-3), [3.4.4 RC 1](/article/release-candidate-godot-3-4-4-rc-1)), the release team – i.e. me – is spread thin... but these two months gave time for a lot of improvements in the `3.x` branch and this new **3.5 beta 2** should be worth the wait!
+
+This is a big update with close to 350 commits from 82 contributors since the previous beta! Some of the main highlights added in beta 2 are physics interpolation for 3D, and a new OccluderShapePolygon for your 3D occlusion needs.
+
+[Jump to the **Downloads** section.](#downloads)
+
+As usual, you can try it live with the [**online version of the Godot editor**](https://editor.godotengine.org/3.5.beta2/godot.tools.html) updated for this release.
+
+## Highlights
+
+The main changes coming in Godot 3.5 and included in this beta are:
+
+### Asynchronous shader compilation + caching (ubershader) ([GH-53411](https://github.com/godotengine/godot/pull/53411))
+
+A long awaited solution to shader compilation stuttering on OpenGL, courtesy Pedro J. Estébanez ([RandomShaper](https://github.com/RandomShaper))!
+
+This new system uses an "ubershader" (big shader supporting all features, slow but compiled on startup) to fill in for all shaders initially while the more efficient and material-specific shaders get compiled asynchronously, and cached for future runs.
+
+This means that on the first run materials may look a bit different for a second or two, but there should no longer be compilation lags. Please test this thoroughly and let us know how it performs on your projects.
+
+### Add NavigationServer with obstacle avoidance using RVO2 ([GH-48395](https://github.com/godotengine/godot/pull/48395))
+
+Jake Young ([Duroxxigar](https://github.com/Duroxxigar)) backported the refactored and much improved navigation system that Andrea Catania ([AndreaCatania](https://github.com/AndreaCatania)) implemented for [Godot 4.0](https://github.com/godotengine/godot/pull/34776) back in 2020!
+
+This adds support for obstacle avoidance using the RVO2 library, and navigation meshes can now be baked at runtime.
+
+The backport was done while attempting to preserve API compatibility within reason, but the underlying behavior will change, mainly to provide *a lot* more features and flexibility. We expect that all users will happily move to the new NavigationServer, but please report issues if you see behavior changes for the worse when upgrading from 3.4.
+
+### Physics interpolation (3D) ([GH-52846](https://github.com/godotengine/godot/pull/52846))
+
+In Godot, while physics runs at a fixed tick rate, frames can actually display at a wide variety of frame rates, depending on the player's hardware. This can lead to a problem, when the movement of objects (which tends to occur on physics ticks) does not line up with the rendered frames, giving unsightly jitter.
+
+Thanks to [lawnjelly](https://github.com/lawnjelly)'s expertise, you will now find a sweet new option hidden in the project settings. Switch on `physics/common/physics_interpolation`, and Godot will now automatically interpolate objects on rendered frames so they look super smooth.
+
+In order to benefit you should be moving your objects and running your game logic in `_physics_process()`. This ensures your game will run the same on all machines. [Full details are available in preliminary docs](https://github.com/lawnjelly/Misc/blob/master/FTIDocs/FTI.md).
+
+Fixed timestep interpolation is 3D only for now, but watch this space as we plan to add 2D support after initial feedback and bugfixing on the 3D version.
+
+### OccluderShapePolygon (3D) ([GH-57361](https://github.com/godotengine/godot/pull/57361))
+
+Following on from the addition of [OccluderShapeSphere in 3.4](/article/godot-3-4-is-released#portal-occlusion-culling), lawnjelly now brings us a more adaptable and easy way to add basic occlusion culling in the form of the OccluderShapePolygon. Add an Occluder node to your scene, and choose to create an OccluderShapePolygon. This should show up initially as a quad.
+
+You can move the polygon with the node transform, drag the corners to reshape it, add delete points. Anything behind the polygon will be culled from view.
+
+It is really as simple as that to get started, place them wherever you like in your game level. [Read the preliminary docs for details](https://github.com/lawnjelly/Misc/blob/master/OccluderDocs/OccluderShapePolygon.md).
+
+### Add push, pull, fetch and improved diff view to VCS UI ([GH-53900](https://github.com/godotengine/godot/pull/53900))
+
+Aged like fine wine, Meru Patel ([Janglee123](https://github.com/Janglee123))'s work from [Google Summer of Code 2020](https://godotengine.org/article/gsoc-2020-progress-report-1#vcs-improvements) has been continued and updated by [GSoC 2019 alumni](https://godotengine.org/article/gsoc-2019-progress-report-3#vcs-integration) Twarit Waikar ([ChronicallySerious](https://github.com/ChronicallySerious))!
+
+What is it? A lot of new features for Version Control Systems (VCS) integration in the Godot editor, such as push, pull, and fetch operations, as well as a very nice diff view UI. All these features have been implemented in the official [Git integration plugin](https://github.com/godotengine/godot-git-plugin). Check out the [Releases page](https://github.com/godotengine/godot-git-plugin/releases) for the latest 2.x plugin release supporting Godot 3.5 beta.
+
+### And more!
+
+- C#: Fix Android AAB export failing to load native libs ([GH-57420](https://github.com/godotengine/godot/pull/57420)).
+- Core: Add GradientTexture2D ([GH-54824](https://github.com/godotengine/godot/pull/54824)).
+- Core: Allow pinning property values + Consistent property defaults ([GH-52943](https://github.com/godotengine/godot/pull/52943)).
+- Core: Support deep comparison of Array and Dictionary ([GH-42625](https://github.com/godotengine/godot/pull/42625)).
+- Core: Add visibility to CanvasLayer ([GH-57900](https://github.com/godotengine/godot/pull/57900)).
+- Core: Add a signal to notify when children nodes enter or exit tree ([GH-57541](https://github.com/godotengine/godot/pull/57541)).
+- Editor: Improve ColorPicker presets ([GH-54439](https://github.com/godotengine/godot/pull/54439)).
+- Editor: Add option to only redraw vital updates ([GH-53463](https://github.com/godotengine/godot/pull/53463)).
+- Editor: Improved region-select in the 3D editor viewport ([GH-58252](https://github.com/godotengine/godot/pull/58252)).
+- Editor: Make property paths and categories translatable ([GH-58634](https://github.com/godotengine/godot/pull/58634)).
+- GDScript: Fix variable type inference on release ([GH-57851](https://github.com/godotengine/godot/pull/57851)).
+- GDScript: Don't coerce default values to the export hint type ([GH-58686](https://github.com/godotengine/godot/pull/58686)).
+- GUI: Add FlowContainer ([GH-57960](https://github.com/godotengine/godot/pull/57960)).
+- GUI: Add alignment options to Button icons ([GH-57771](https://github.com/godotengine/godot/pull/57771)).
+- GUI: Add type variations to Theme ([GH-57942](https://github.com/godotengine/godot/pull/57942)).
+- Input: Allow for mapping scancodes to current layout ([GH-56015](https://github.com/godotengine/godot/pull/56015)).
+- macOS: Implements ad-hoc signing from Linux/Windows ([GH-51550](https://github.com/godotengine/godot/pull/51550)).
+- Networking: Add proxy support for HTTPClient and the editor ([GH-55988](https://github.com/godotengine/godot/pull/55988)).
+- Physics: Add fixed timestep interpolation for 3D ([GH-52846](https://github.com/godotengine/godot/pull/52846)).
+ * The 2D equivalent will be added later on.
+- Rendering: Add `material_overlay` property to MeshInstance ([GH-50823](https://github.com/godotengine/godot/pull/50823)).
+- Rendering: Faster editor line drawing - Path2D and `draw_line` ([GH-54377](https://github.com/godotengine/godot/pull/54377)).
+- Rendering: Add OccluderShapePolygon ([GH-57361](https://github.com/godotengine/godot/pull/57361)).
+- Rendering: Add support for saving multiple Images in BakedLightmap ([GH-58102](https://github.com/godotengine/godot/pull/58102)).
+- Shaders: Many improvements backported from `master` ([GH-56794](https://github.com/godotengine/godot/pull/56794)).
+- VisualShader: Add hints and default values to the uniform nodes ([GH-56466](https://github.com/godotengine/godot/pull/56466)).
+- Windows: Improve console handling and `execute` ([GH-55987](https://github.com/godotengine/godot/pull/55987)).
+ * This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn't open with a console by default, but you can see console output if you start it from a console yourself. You can [create a batch script or shortcut](https://github.com/godotengine/godot/pull/55987#issuecomment-996563579) to automatically start Godot from a console as in previous releases.
+- Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) ([GH-54625](https://github.com/godotengine/godot/pull/54625)).
+
+All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.5-stable.
+
+## Changelog
+
+There's no curated changelog just yet, I still have to skim through all commits to select the changelog worthy changes.
+
+For now, you can check the full changelog since 3.4-stable ([chronological](https://downloads.tuxfamily.org/godotengine/3.5/beta2/Godot_v3.5-beta2_changelog_chrono.txt), or [for each contributor](https://downloads.tuxfamily.org/godotengine/3.5/beta2/Godot_v3.5-beta2_changelog_authors.txt)).
+
+You can also review the [changes between beta 1 and beta 2](https://github.com/godotengine/godot/compare/b9b23d2226261e09d4eaa581c865920c00a826c7...7a4f9dfb15a6817135e753b286cd5b767119d08b).
+
+This release is built from commit [7a4f9dfb15a6817135e753b286cd5b767119d08b](https://github.com/godotengine/godot/commit/7a4f9dfb15a6817135e753b286cd5b767119d08b).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.5/beta2/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.5/beta2/mono/) (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono **6.12.0.158** are included in this build.
+
+**Notes:**
+
+- The Windows builds are signed, but the certificate expired recently. The next builds should be signed with a new certificate.
+- The macOS editor builds are signed but not notarized. The next builds should be notarized again.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.5 beta 2. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.4.x no longer works in 3.5 beta 2).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-5-beta-3.md b/collections/_article/dev-snapshot-godot-3-5-beta-3.md
new file mode 100644
index 0000000000..7ef3ab1498
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-5-beta-3.md
@@ -0,0 +1,148 @@
+---
+title: "Dev snapshot: Godot 3.5 beta 3"
+excerpt: "We're starting to iterate faster with 3.5 beta builds until we're confident that the new features are working as intended. This new beta adds an initial Android editor port, as well as a fix for low processor usage mode on Android."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/624/478/e18/624478e1847b4256833354.jpg
+date: 2022-03-30 15:27:23
+---
+
+We're getting closer to the Godot 3.5 stable release with a third beta snapshot! Like with [4.0 alpha builds](/article/dev-snapshot-godot-4-0-alpha-5), we're trying to release 3.5 beta builds every other week to ensure that new features can be tested, bugs can be reported and bugfixes can be validated.
+
+This new beta 3 adds two much awaited changes for Android users: an initial **Android editor port**, and a fix for the **low processor usage mode** which used to flicker on Android. See the [highlight section below](#android-editor) for details and a download link for the editor APK.
+
+This is a big update with close to 350 commits from 82 contributors since the previous beta! Some of the main highlights added in beta 2 are physics interpolation for 3D, and a new OccluderShapePolygon for your 3D occlusion needs.
+
+[Jump to the **Downloads** section.](#downloads)
+
+As usual, you can try it live with the [**online version of the Godot editor**](https://editor.godotengine.org/3.5.beta3/godot.tools.html) updated for this release.
+
+## Highlights
+
+The main changes coming in Godot 3.5 and included in this beta are:
+
+### Asynchronous shader compilation + caching (ubershader) ([GH-53411](https://github.com/godotengine/godot/pull/53411))
+
+A long awaited solution to shader compilation stuttering on OpenGL, courtesy Pedro J. Estébanez ([RandomShaper](https://github.com/RandomShaper))!
+
+This new system uses an "ubershader" (big shader supporting all features, slow but compiled on startup) to fill in for all shaders initially while the more efficient and material-specific shaders get compiled asynchronously, and cached for future runs.
+
+This means that on the first run materials may look a bit different for a second or two, but there should no longer be compilation lags. Please test this thoroughly and let us know how it performs on your projects.
+
+### Add NavigationServer with obstacle avoidance using RVO2 ([GH-48395](https://github.com/godotengine/godot/pull/48395))
+
+Jake Young ([Duroxxigar](https://github.com/Duroxxigar)) backported the refactored and much improved navigation system that Andrea Catania ([AndreaCatania](https://github.com/AndreaCatania)) implemented for [Godot 4.0](https://github.com/godotengine/godot/pull/34776) back in 2020!
+
+This adds support for obstacle avoidance using the RVO2 library, and navigation meshes can now be baked at runtime.
+
+The backport was done while attempting to preserve API compatibility within reason, but the underlying behavior will change, mainly to provide *a lot* more features and flexibility. We expect that all users will happily move to the new NavigationServer, but please report issues if you see behavior changes for the worse when upgrading from 3.4.
+
+### Physics interpolation (3D) ([GH-52846](https://github.com/godotengine/godot/pull/52846))
+
+In Godot, while physics runs at a fixed tick rate, frames can actually display at a wide variety of frame rates, depending on the player's hardware. This can lead to a problem, when the movement of objects (which tends to occur on physics ticks) does not line up with the rendered frames, giving unsightly jitter.
+
+Thanks to [lawnjelly](https://github.com/lawnjelly)'s expertise, you will now find a sweet new option hidden in the project settings. Switch on `physics/common/physics_interpolation`, and Godot will now automatically interpolate objects on rendered frames so they look super smooth.
+
+In order to benefit you should be moving your objects and running your game logic in `_physics_process()`. This ensures your game will run the same on all machines. [Full details are available in preliminary docs](https://github.com/lawnjelly/Misc/blob/master/FTIDocs/FTI.md).
+
+Fixed timestep interpolation is 3D only for now, but watch this space as we plan to add 2D support after initial feedback and bugfixing on the 3D version.
+
+### OccluderShapePolygon (3D) ([GH-57361](https://github.com/godotengine/godot/pull/57361))
+
+Following on from the addition of [OccluderShapeSphere in 3.4](/article/godot-3-4-is-released#portal-occlusion-culling), lawnjelly now brings us a more adaptable and easy way to add basic occlusion culling in the form of the OccluderShapePolygon. Add an Occluder node to your scene, and choose to create an OccluderShapePolygon. This should show up initially as a quad.
+
+You can move the polygon with the node transform, drag the corners to reshape it, add delete points. Anything behind the polygon will be culled from view.
+
+It is really as simple as that to get started, place them wherever you like in your game level. [Read the preliminary docs for details](https://github.com/lawnjelly/Misc/blob/master/OccluderDocs/OccluderShapePolygon.md).
+
+
+### Android editor port ([GH-57747](https://github.com/godotengine/godot/pull/57747/))
+
+Two years ago (!), [thebestnom](https://github.com/thebestnom) started working on an Android port of the Godot editor ([GH-36776](https://github.com/godotengine/godot/pull/36776)). Since the Godot editor is built with Godot itself, it wasn't too difficult to imagine compiling the editor for Android with some buildsystem changes. But a lot of work was needed to actually make this compiled version work decently on an Android device, with improved mouse and keyboard support, better touch input, as well as being able to run the project on top of the editor like on desktop.
+
+With a lot of testing from interested users, things progressed slowly but steadily, and our Android maintainer Fredia Huya-Kouadio ([m4gr3d](https://github.com/m4gr3d)) put the finishing touches to get this work merged for Godot 3.5 ([GH-57747](https://github.com/godotengine/godot/pull/57747/)). The current version doesn't have a lot of mobile specific changes, so it's only really usable on a tablet with keyboard and mouse - but the foundation is there to improve upon, and we're interested in your feedback and ideas son how to make the Godot experience more mobile friendly!
+
+From now on you'll find builds of the Android editor as `_android_editor.apk` in the download repository. Note that builds are currently not signed, so you will get a warning on install. [**Give it a try!**](https://downloads.tuxfamily.org/godotengine/3.5/beta3/Godot_v3.5-beta3_android_editor.apk)
+
+With [helpful input](https://github.com/godotengine/godot/pull/55604#issuecomment-1077590602) from contributors Dan Edwards ([Gromph](https://github.com/Gromph)) and Péter Magyar ([Relintai](https://github.com/Relintai)), Fredia was also able to fix the low processor usage mode on Android ([GH-59606](https://github.com/godotengine/godot/pull/59606)), which the editor port uses. It should now work fine for users who make non-game applications or non real-time games on Android and want to preserve battery life.
+
+### Add push, pull, fetch and improved diff view to VCS UI ([GH-53900](https://github.com/godotengine/godot/pull/53900))
+
+Aged like fine wine, Meru Patel ([Janglee123](https://github.com/Janglee123))'s work from [Google Summer of Code 2020](https://godotengine.org/article/gsoc-2020-progress-report-1#vcs-improvements) has been continued and updated by [GSoC 2019 alumni](https://godotengine.org/article/gsoc-2019-progress-report-3#vcs-integration) Twarit Waikar ([ChronicallySerious](https://github.com/ChronicallySerious))!
+
+What is it? A lot of new features for Version Control Systems (VCS) integration in the Godot editor, such as push, pull, and fetch operations, as well as a very nice diff view UI. All these features have been implemented in the official [Git integration plugin](https://github.com/godotengine/godot-git-plugin). Check out the [Releases page](https://github.com/godotengine/godot-git-plugin/releases) for the latest 2.x plugin release supporting Godot 3.5 beta.
+
+### And more!
+
+- Android: Initial port of the Godot editor ([GH-57747](https://github.com/godotengine/godot/pull/57747)).
+- Android: Fix flickering issues with low processor mode ([GH-59606](https://github.com/godotengine/godot/pull/59606)).
+- Audio: Allow configuring loop mode on WAV import ([GH-59170](https://github.com/godotengine/godot/pull/59170)).
+- C#: Fix Android AAB export failing to load native libs ([GH-57420](https://github.com/godotengine/godot/pull/57420)).
+- Core: Add GradientTexture2D ([GH-54824](https://github.com/godotengine/godot/pull/54824)).
+- Core: Allow pinning property values + Consistent property defaults ([GH-52943](https://github.com/godotengine/godot/pull/52943)).
+- Core: Support deep comparison of Array and Dictionary ([GH-42625](https://github.com/godotengine/godot/pull/42625)).
+- Core: Add visibility to CanvasLayer ([GH-57900](https://github.com/godotengine/godot/pull/57900)).
+- Core: Add a signal to notify when children nodes enter or exit tree ([GH-57541](https://github.com/godotengine/godot/pull/57541)).
+- Editor: Improve ColorPicker presets ([GH-54439](https://github.com/godotengine/godot/pull/54439)).
+- Editor: Add option to only redraw vital updates ([GH-53463](https://github.com/godotengine/godot/pull/53463)).
+- Editor: Improved region-select in the 3D editor viewport ([GH-58252](https://github.com/godotengine/godot/pull/58252)).
+- Editor: Make property paths and categories translatable ([GH-58634](https://github.com/godotengine/godot/pull/58634)).
+- Editor: Add property name style toggle to Inspector ([GH-59313](https://github.com/godotengine/godot/pull/59313)).
+- GDScript: Fix variable type inference on release ([GH-57851](https://github.com/godotengine/godot/pull/57851)).
+- GDScript: Don't coerce default values to the export hint type ([GH-58686](https://github.com/godotengine/godot/pull/58686)).
+- GUI: Add FlowContainer ([GH-57960](https://github.com/godotengine/godot/pull/57960)).
+- GUI: Add alignment options to Button icons ([GH-57771](https://github.com/godotengine/godot/pull/57771)).
+- GUI: Add type variations to Theme ([GH-57942](https://github.com/godotengine/godot/pull/57942)).
+- GUI: Add WOFF2 font support and brotli decoder ([GH-59522](https://github.com/godotengine/godot/pull/59522)).
+- Input: Allow for mapping scancodes to current layout ([GH-56015](https://github.com/godotengine/godot/pull/56015)).
+- Internationalization: Add binary MO translation file support ([GH-59522](https://github.com/godotengine/godot/pull/59522)).
+- macOS: Implements ad-hoc signing from Linux/Windows ([GH-51550](https://github.com/godotengine/godot/pull/51550)).
+- Networking: Add proxy support for HTTPClient and the editor ([GH-55988](https://github.com/godotengine/godot/pull/55988)).
+- Physics: Add fixed timestep interpolation for 3D ([GH-52846](https://github.com/godotengine/godot/pull/52846)).
+ * The 2D equivalent will be added later on.
+- Rendering: Add `material_overlay` property to MeshInstance ([GH-50823](https://github.com/godotengine/godot/pull/50823)).
+- Rendering: Faster editor line drawing - Path2D and `draw_line` ([GH-54377](https://github.com/godotengine/godot/pull/54377)).
+- Rendering: Add OccluderShapePolygon ([GH-57361](https://github.com/godotengine/godot/pull/57361)).
+- Rendering: Add support for saving multiple Images in BakedLightmap ([GH-58102](https://github.com/godotengine/godot/pull/58102)).
+- Rendering: Bind mesh merging functionality in MeshInstance ([GH-57661](https://github.com/godotengine/godot/pull/57661)).
+- Shaders: Many improvements backported from `master` ([GH-56794](https://github.com/godotengine/godot/pull/56794)).
+- VisualShader: Add hints and default values to the uniform nodes ([GH-56466](https://github.com/godotengine/godot/pull/56466)).
+- Windows: Improve console handling and `execute` ([GH-55987](https://github.com/godotengine/godot/pull/55987)).
+ * This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn't open with a console by default, but you can see console output if you start it from a console yourself. You can [create a batch script or shortcut](https://github.com/godotengine/godot/pull/55987#issuecomment-996563579) to automatically start Godot from a console as in previous releases.
+- Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) ([GH-54625](https://github.com/godotengine/godot/pull/54625)).
+
+All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.5-stable.
+
+## Changelog
+
+There's no curated changelog just yet, I still have to skim through all commits to select the changelog worthy changes.
+
+For now, you can check the full changelog since 3.4-stable ([chronological](https://downloads.tuxfamily.org/godotengine/3.5/beta3/Godot_v3.5-beta3_changelog_chrono.txt), or [for each contributor](https://downloads.tuxfamily.org/godotengine/3.5/beta3/Godot_v3.5-beta3_changelog_authors.txt)).
+
+You can also review the [changes between beta 2 and beta 3](https://github.com/godotengine/godot/compare/7a4f9dfb15a6817135e753b286cd5b767119d08b...3c0d32562b558b60abe382f2a132f4ea0f25b380).
+
+This release is built from commit [3c0d32562b558b60abe382f2a132f4ea0f25b380](https://github.com/godotengine/godot/commit/3c0d32562b558b60abe382f2a132f4ea0f25b380).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.5/beta3/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.5/beta3/mono/) (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono **6.12.0.158** are included in this build.
+
+**Notes:**
+
+- The Windows builds are signed, but the certificate expired recently. The next builds should be signed with a new certificate.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 3.5 beta 3. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.4.x no longer works in 3.5 beta 3).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-5-beta-4.md b/collections/_article/dev-snapshot-godot-3-5-beta-4.md
new file mode 100644
index 0000000000..082fafa53c
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-5-beta-4.md
@@ -0,0 +1,154 @@
+---
+title: "Dev snapshot: Godot 3.5 beta 4"
+excerpt: "Another beta build on the road to Godot 3.5. Things are shaping up nicely and we should soon be able to go for a Release Candidate."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/625/9ea/bf7/6259eabf7e2bb855765148.jpg
+date: 2022-04-15 22:00:00
+---
+
+We're getting closer to the Godot 3.5 stable release with a fourth beta snapshot! Like with [4.0 alpha builds](/article/dev-snapshot-godot-4-0-alpha-6), we're trying to release 3.5 beta builds every other week to ensure that new features can be tested, bugs can be reported and bugfixes can be validated.
+
+This beta 4 is a small update with just 83 commits excluding merges, focusing on fixing bugs to stabilize the current feature set for 3.5 stable.
+
+The previous [beta 3](/article/dev-snapshot-godot-3-5-beta-3) introduced a brand new Android editor port! In this build, we also built it for 32-bit platforms (armv7 and x86) as there was some demand for it, so you'll find the APK is a bit heavier.
+
+[Jump to the **Downloads** section.](#downloads)
+
+As usual, you can try it live with the [**online version of the Godot editor**](https://editor.godotengine.org/3.5.beta4/) updated for this release.
+
+## Highlights
+
+The main changes coming in Godot 3.5 and included in this beta are:
+
+### Asynchronous shader compilation + caching (ubershader) ([GH-53411](https://github.com/godotengine/godot/pull/53411))
+
+A long awaited solution to shader compilation stuttering on OpenGL, courtesy Pedro J. Estébanez ([RandomShaper](https://github.com/RandomShaper))!
+
+This new system uses an "ubershader" (big shader supporting all features, slow but compiled on startup) to fill in for all shaders initially while the more efficient and material-specific shaders get compiled asynchronously, and cached for future runs.
+
+This means that on the first run materials may look a bit different for a second or two, but there should no longer be compilation lags. Please test this thoroughly and let us know how it performs on your projects.
+
+### Add NavigationServer with obstacle avoidance using RVO2 ([GH-48395](https://github.com/godotengine/godot/pull/48395))
+
+Jake Young ([Duroxxigar](https://github.com/Duroxxigar)) backported the refactored and much improved navigation system that Andrea Catania ([AndreaCatania](https://github.com/AndreaCatania)) implemented for [Godot 4.0](https://github.com/godotengine/godot/pull/34776) back in 2020!
+
+This adds support for obstacle avoidance using the RVO2 library, and navigation meshes can now be baked at runtime.
+
+The backport was done while attempting to preserve API compatibility within reason, but the underlying behavior will change, mainly to provide *a lot* more features and flexibility. We expect that all users will happily move to the new NavigationServer, but please report issues if you see behavior changes for the worse when upgrading from 3.4.
+
+### Physics interpolation (3D) ([GH-52846](https://github.com/godotengine/godot/pull/52846))
+
+In Godot, while physics runs at a fixed tick rate, frames can actually display at a wide variety of frame rates, depending on the player's hardware. This can lead to a problem, when the movement of objects (which tends to occur on physics ticks) does not line up with the rendered frames, giving unsightly jitter.
+
+Thanks to [lawnjelly](https://github.com/lawnjelly)'s expertise, you will now find a sweet new option hidden in the project settings. Switch on `physics/common/physics_interpolation`, and Godot will now automatically interpolate objects on rendered frames so they look super smooth.
+
+In order to benefit you should be moving your objects and running your game logic in `_physics_process()`. This ensures your game will run the same on all machines. [Full details are available in preliminary docs](https://github.com/lawnjelly/Misc/blob/master/FTIDocs/FTI.md).
+
+Fixed timestep interpolation is 3D only for now, but watch this space as we plan to add 2D support after initial feedback and bugfixing on the 3D version.
+
+### OccluderShapePolygon (3D) ([GH-57361](https://github.com/godotengine/godot/pull/57361))
+
+Following on from the addition of [OccluderShapeSphere in 3.4](/article/godot-3-4-is-released#portal-occlusion-culling), lawnjelly now brings us a more adaptable and easy way to add basic occlusion culling in the form of the OccluderShapePolygon. Add an Occluder node to your scene, and choose to create an OccluderShapePolygon. This should show up initially as a quad.
+
+You can move the polygon with the node transform, drag the corners to reshape it, add delete points. Anything behind the polygon will be culled from view.
+
+It is really as simple as that to get started, place them wherever you like in your game level. [Read the preliminary docs for details](https://github.com/lawnjelly/Misc/blob/master/OccluderDocs/OccluderShapePolygon.md).
+
+
+### Android editor port ([GH-57747](https://github.com/godotengine/godot/pull/57747/))
+
+Two years ago (!), [thebestnom](https://github.com/thebestnom) started working on an Android port of the Godot editor ([GH-36776](https://github.com/godotengine/godot/pull/36776)). Since the Godot editor is built with Godot itself, it wasn't too difficult to imagine compiling the editor for Android with some buildsystem changes. But a lot of work was needed to actually make this compiled version work decently on an Android device, with improved mouse and keyboard support, better touch input, as well as being able to run the project on top of the editor like on desktop.
+
+With a lot of testing from interested users, things progressed slowly but steadily, and our Android maintainer Fredia Huya-Kouadio ([m4gr3d](https://github.com/m4gr3d)) put the finishing touches to get this work merged for Godot 3.5 ([GH-57747](https://github.com/godotengine/godot/pull/57747/)). The current version doesn't have a lot of mobile specific changes, so it's only really usable on a tablet with keyboard and mouse - but the foundation is there to improve upon, and we're interested in your feedback and ideas son how to make the Godot experience more mobile friendly!
+
+From now on you'll find builds of the Android editor as `_android_editor.apk` in the download repository. Note that builds are currently not signed, so you will get a warning on install. [**Give it a try!**](https://downloads.tuxfamily.org/godotengine/3.5/beta4/Godot_v3.5-beta4_android_editor.apk)
+
+With [helpful input](https://github.com/godotengine/godot/pull/55604#issuecomment-1077590602) from contributors Dan Edwards ([Gromph](https://github.com/Gromph)) and Péter Magyar ([Relintai](https://github.com/Relintai)), Fredia was also able to fix the low processor usage mode on Android ([GH-59606](https://github.com/godotengine/godot/pull/59606)), which the editor port uses. It should now work fine for users who make non-game applications or non real-time games on Android and want to preserve battery life.
+
+### Add push, pull, fetch and improved diff view to VCS UI ([GH-53900](https://github.com/godotengine/godot/pull/53900))
+
+Aged like fine wine, Meru Patel ([Janglee123](https://github.com/Janglee123))'s work from [Google Summer of Code 2020](https://godotengine.org/article/gsoc-2020-progress-report-1#vcs-improvements) has been continued and updated by [GSoC 2019 alumni](https://godotengine.org/article/gsoc-2019-progress-report-3#vcs-integration) Twarit Waikar ([ChronicallySerious](https://github.com/ChronicallySerious))!
+
+What is it? A lot of new features for Version Control Systems (VCS) integration in the Godot editor, such as push, pull, and fetch operations, as well as a very nice diff view UI. All these features have been implemented in the official [Git integration plugin](https://github.com/godotengine/godot-git-plugin). Check out the [Releases page](https://github.com/godotengine/godot-git-plugin/releases) for the latest 2.x plugin release supporting Godot 3.5 beta.
+
+### And more!
+
+- Android: Initial port of the Godot editor ([GH-57747](https://github.com/godotengine/godot/pull/57747)).
+- Android: Fix flickering issues with low processor mode ([GH-59606](https://github.com/godotengine/godot/pull/59606)).
+- Android: Update editor default display scale, allow resizing windows ([GH-59868](https://github.com/godotengine/godot/pull/59868), [GH-59861](https://github.com/godotengine/godot/pull/59861), [GH-59880](https://github.com/godotengine/godot/pull/59880)).
+- Animation: Add option to paste animation as duplicate ([GH-60226](https://github.com/godotengine/godot/pull/60226)).
+- Audio: Allow configuring loop mode on WAV import ([GH-59170](https://github.com/godotengine/godot/pull/59170)).
+- Audio: Instance audio streams before `AudioServer::lock` call ([GH-59413](https://github.com/godotengine/godot/pull/59413)).
+- Audio: Fix crash in AudioServer when switching audio devices with different audio channels count ([GH-59778](https://github.com/godotengine/godot/pull/59778)).
+- C#: Fix Android AAB export failing to load native libs ([GH-57420](https://github.com/godotengine/godot/pull/57420)).
+- Core: Add GradientTexture2D ([GH-54824](https://github.com/godotengine/godot/pull/54824)).
+- Core: Allow pinning property values + Consistent property defaults ([GH-52943](https://github.com/godotengine/godot/pull/52943)).
+- Core: Support deep comparison of Array and Dictionary ([GH-42625](https://github.com/godotengine/godot/pull/42625)).
+- Core: Add visibility to CanvasLayer ([GH-57900](https://github.com/godotengine/godot/pull/57900)).
+- Core: Add a signal to notify when children nodes enter or exit tree ([GH-57541](https://github.com/godotengine/godot/pull/57541)).
+- Editor: Improve ColorPicker presets ([GH-54439](https://github.com/godotengine/godot/pull/54439)).
+- Editor: Add option to only redraw vital updates ([GH-53463](https://github.com/godotengine/godot/pull/53463)).
+- Editor: Improved region-select in the 3D editor viewport ([GH-58252](https://github.com/godotengine/godot/pull/58252)).
+- Editor: Make property paths and categories translatable ([GH-58634](https://github.com/godotengine/godot/pull/58634)).
+- Editor: Add property name style toggle to Inspector ([GH-59313](https://github.com/godotengine/godot/pull/59313)).
+- GDScript: Fix variable type inference on release ([GH-57851](https://github.com/godotengine/godot/pull/57851)).
+- GDScript: Don't coerce default values to the export hint type ([GH-58686](https://github.com/godotengine/godot/pull/58686)).
+- GDScript: Enable method type information on release builds ([GH-59793](https://github.com/godotengine/godot/pull/59793)).
+- GUI: Add FlowContainer ([GH-57960](https://github.com/godotengine/godot/pull/57960)).
+- GUI: Add alignment options to Button icons ([GH-57771](https://github.com/godotengine/godot/pull/57771)).
+- GUI: Add type variations to Theme ([GH-57942](https://github.com/godotengine/godot/pull/57942)).
+- GUI: Add WOFF2 font support and brotli decoder ([GH-59522](https://github.com/godotengine/godot/pull/59522)).
+- Input: Allow for mapping scancodes to current layout ([GH-56015](https://github.com/godotengine/godot/pull/56015)).
+- Internationalization: Add binary MO translation file support ([GH-59522](https://github.com/godotengine/godot/pull/59522)).
+- Linux: Fix `window_maximized` not working reliably ([GH-59767](https://github.com/godotengine/godot/pull/59767)).
+- macOS: Implements ad-hoc signing from Linux/Windows ([GH-51550](https://github.com/godotengine/godot/pull/51550)).
+- Networking: Add proxy support for HTTPClient and the editor ([GH-55988](https://github.com/godotengine/godot/pull/55988)).
+- Physics: Add fixed timestep interpolation for 3D ([GH-52846](https://github.com/godotengine/godot/pull/52846)).
+ * The 2D equivalent will be added later on.
+- Rendering: Add `material_overlay` property to MeshInstance ([GH-50823](https://github.com/godotengine/godot/pull/50823)).
+- Rendering: Faster editor line drawing - Path2D and `draw_line` ([GH-54377](https://github.com/godotengine/godot/pull/54377)).
+- Rendering: Add OccluderShapePolygon ([GH-57361](https://github.com/godotengine/godot/pull/57361)).
+- Rendering: Add support for saving multiple Images in BakedLightmap ([GH-58102](https://github.com/godotengine/godot/pull/58102)).
+- Rendering: Bind mesh merging functionality in MeshInstance ([GH-57661](https://github.com/godotengine/godot/pull/57661)).
+- Shaders: Many improvements backported from `master` ([GH-56794](https://github.com/godotengine/godot/pull/56794)).
+- VisualShader: Add hints and default values to the uniform nodes ([GH-56466](https://github.com/godotengine/godot/pull/56466)).
+- Windows: Improve console handling and `execute` ([GH-55987](https://github.com/godotengine/godot/pull/55987)).
+ * This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn't open with a console by default, but you can see console output if you start it from a console yourself. You can [create a batch script or shortcut](https://github.com/godotengine/godot/pull/55987#issuecomment-996563579) to automatically start Godot from a console as in previous releases.
+- Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) ([GH-54625](https://github.com/godotengine/godot/pull/54625)).
+
+All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.5-stable.
+
+## Changelog
+
+There's no curated changelog just yet, I still have to skim through all commits to select the changelog worthy changes.
+
+For now, you can check the full changelog since 3.4-stable ([chronological](https://downloads.tuxfamily.org/godotengine/3.5/beta4/Godot_v3.5-beta4_changelog_chrono.txt), or [for each contributor](https://downloads.tuxfamily.org/godotengine/3.5/beta4/Godot_v3.5-beta4_changelog_authors.txt)).
+
+You can also review the [changes between beta 3 and beta 4](https://github.com/godotengine/godot/compare/3c0d32562b558b60abe382f2a132f4ea0f25b380...b6968ab0602bfe72c71d4efcafe608f9cac36252).
+
+This release is built from commit [b6968ab06](https://github.com/godotengine/godot/commit/b6968ab0602bfe72c71d4efcafe608f9cac36252).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.5/beta4/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.5/beta4/mono/) (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono **6.12.0.158** are included in this build.
+
+**Notes:**
+
+- The Windows builds are signed, but the certificate expired recently. The next builds should be signed with a new certificate.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this beta. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.4.x no longer works in this 3.5 beta).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-3-5-beta-5.md b/collections/_article/dev-snapshot-godot-3-5-beta-5.md
new file mode 100644
index 0000000000..333b8188e1
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-3-5-beta-5.md
@@ -0,0 +1,165 @@
+---
+title: "Dev snapshot: Godot 3.5 beta 5"
+excerpt: "We're getting closer to the Godot 3.5 stable release with a fifth beta snapshot! This beta adds what should be the last batch of new features (together with *a lot* of bug fixes, as that's our focus at this stage), with scene unique node names and the new SceneTreeTween backported from Godot 4.0."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/627/14d/d2d/62714dd2dfeee087684095.jpg
+date: 2022-05-03 15:44:21
+---
+
+We're getting closer to the Godot 3.5 stable release with a fifth beta snapshot! Like with [4.0 alpha builds](/article/dev-snapshot-godot-4-0-alpha-7), we're trying to release 3.5 beta builds every other week to ensure that new features can be tested, bugs can be reported and bugfixes can be validated.
+
+This beta adds what should be the last batch of new features (together with *a lot* of bug fixes, as that's our focus at this stage), with scene unique node names and the new `SceneTreeTween` backported from Godot 4.0.
+
+[Jump to the **Downloads** section.](#downloads)
+
+As usual, you can try it live with the [**online version of the Godot editor**](https://editor.godotengine.org/3.5.beta5/) updated for this release.
+
+## Highlights
+
+The main changes coming in Godot 3.5 and included in this beta are:
+
+### Asynchronous shader compilation + caching (ubershader) ([GH-53411](https://github.com/godotengine/godot/pull/53411))
+
+A long awaited solution to shader compilation stuttering on OpenGL, courtesy Pedro J. Estébanez ([RandomShaper](https://github.com/RandomShaper))!
+
+This new system uses an "ubershader" (big shader supporting all features, slow but compiled on startup) to fill in for all shaders initially while the more efficient and material-specific shaders get compiled asynchronously, and cached for future runs.
+
+This means that on the first run materials may look a bit different for a second or two, but there should no longer be compilation lags. Please test this thoroughly and let us know how it performs on your projects.
+
+### Add NavigationServer with obstacle avoidance using RVO2 ([GH-48395](https://github.com/godotengine/godot/pull/48395))
+
+Jake Young ([Duroxxigar](https://github.com/Duroxxigar)) backported the refactored and much improved navigation system that Andrea Catania ([AndreaCatania](https://github.com/AndreaCatania)) implemented for [Godot 4.0](https://github.com/godotengine/godot/pull/34776) back in 2020!
+
+This adds support for obstacle avoidance using the RVO2 library, and navigation meshes can now be baked at runtime.
+
+The backport was done while attempting to preserve API compatibility within reason, but the underlying behavior will change, mainly to provide *a lot* more features and flexibility. We expect that all users will happily move to the new NavigationServer, but please report issues if you see behavior changes for the worse when upgrading from 3.4.
+
+### Physics interpolation (3D) ([GH-52846](https://github.com/godotengine/godot/pull/52846))
+
+In Godot, while physics runs at a fixed tick rate, frames can actually display at a wide variety of frame rates, depending on the player's hardware. This can lead to a problem, when the movement of objects (which tends to occur on physics ticks) does not line up with the rendered frames, giving unsightly jitter.
+
+Thanks to [lawnjelly](https://github.com/lawnjelly)'s expertise, you will now find a sweet new option hidden in the project settings. Switch on `physics/common/physics_interpolation`, and Godot will now automatically interpolate objects on rendered frames so they look super smooth.
+
+In order to benefit you should be moving your objects and running your game logic in `_physics_process()`. This ensures your game will run the same on all machines. [Full details are available in preliminary docs](https://github.com/lawnjelly/Misc/blob/master/FTIDocs/FTI.md).
+
+Fixed timestep interpolation is 3D only for now, but watch this space as we plan to add 2D support after initial feedback and bugfixing on the 3D version.
+
+### OccluderShapePolygon (3D) ([GH-57361](https://github.com/godotengine/godot/pull/57361))
+
+Following on from the addition of [OccluderShapeSphere in 3.4](/article/godot-3-4-is-released#portal-occlusion-culling), lawnjelly now brings us a more adaptable and easy way to add basic occlusion culling in the form of the OccluderShapePolygon. Add an Occluder node to your scene, and choose to create an OccluderShapePolygon. This should show up initially as a quad.
+
+You can move the polygon with the node transform, drag the corners to reshape it, add delete points. Anything behind the polygon will be culled from view.
+
+It is really as simple as that to get started, place them wherever you like in your game level. [Read the preliminary docs for details](https://github.com/lawnjelly/Misc/blob/master/OccluderDocs/OccluderShapePolygon.md).
+
+
+### Android editor port ([GH-57747](https://github.com/godotengine/godot/pull/57747/))
+
+Two years ago (!), [thebestnom](https://github.com/thebestnom) started working on an Android port of the Godot editor ([GH-36776](https://github.com/godotengine/godot/pull/36776)). Since the Godot editor is built with Godot itself, it wasn't too difficult to imagine compiling the editor for Android with some buildsystem changes. But a lot of work was needed to actually make this compiled version work decently on an Android device, with improved mouse and keyboard support, better touch input, as well as being able to run the project on top of the editor like on desktop.
+
+With a lot of testing from interested users, things progressed slowly but steadily, and our Android maintainer Fredia Huya-Kouadio ([m4gr3d](https://github.com/m4gr3d)) put the finishing touches to get this work merged for Godot 3.5 ([GH-57747](https://github.com/godotengine/godot/pull/57747/)). The current version doesn't have a lot of mobile specific changes, so it's only really usable on a tablet with keyboard and mouse - but the foundation is there to improve upon, and we're interested in your feedback and ideas son how to make the Godot experience more mobile friendly!
+
+From now on you'll find builds of the Android editor as `_android_editor.apk` in the download repository. Note that builds are currently not signed, so you will get a warning on install. [**Give it a try!**](https://downloads.tuxfamily.org/godotengine/3.5/beta5/Godot_v3.5-beta5_android_editor.apk)
+
+With [helpful input](https://github.com/godotengine/godot/pull/55604#issuecomment-1077590602) from contributors Dan Edwards ([Gromph](https://github.com/Gromph)) and Péter Magyar ([Relintai](https://github.com/Relintai)), Fredia was also able to fix the low processor usage mode on Android ([GH-59606](https://github.com/godotengine/godot/pull/59606)), which the editor port uses. It should now work fine for users who make non-game applications or non real-time games on Android and want to preserve battery life.
+
+### New SceneTreeTween backported from Godot 4.0 ([GH-60581](https://github.com/godotengine/godot/pull/60581))
+
+Tomasz Chabora ([KoBeWi](https://github.com/KoBeWi)) completely overhauled the Tween class in Godot 4.0 to make it a lot more powerful and flexible. Early testers so far seemed to like, and Haoyu Qiu ([timothyqiu](https://github.com/timothyqiu)) decided to backport the feature to Godot 3.5 as `SceneTreeTween` (to keep the pre-existing `Tween` and thus preserve compatibility). So you now have two separate Tween implementations and can use to keep using the original 3.x one, or adopt the new API from 4.0.
+
+### Scene unique nodes ([GH-60527](https://github.com/godotengine/godot/pull/60527))
+
+To help with the common task of accessing specific nodes from scripts, Juan Linietsky ([reduz](https://github.com/reduz)) added the concept of "scene unique names" for nodes in the `master` branch ([GH-60298](https://github.com/godotengine/godot/pull/60298)), and Tomasz backported it for 3.5. Nodes with a scene unique name can be referenced easily within their scene using a new `%` name prefix, like so: `get_node("%MyUniqueNode")`. This is particularly useful for GUI if you need to locate a specific Control node which might move in the scene tree as you refactor things.
+
+### Add push, pull, fetch and improved diff view to VCS UI ([GH-53900](https://github.com/godotengine/godot/pull/53900))
+
+Aged like fine wine, Meru Patel ([Janglee123](https://github.com/Janglee123))'s work from [Google Summer of Code 2020](https://godotengine.org/article/gsoc-2020-progress-report-1#vcs-improvements) has been continued and updated by [GSoC 2019 alumni](https://godotengine.org/article/gsoc-2019-progress-report-3#vcs-integration) Twarit Waikar ([ChronicallySerious](https://github.com/ChronicallySerious))!
+
+What is it? A lot of new features for Version Control Systems (VCS) integration in the Godot editor, such as push, pull, and fetch operations, as well as a very nice diff view UI. All these features have been implemented in the official [Git integration plugin](https://github.com/godotengine/godot-git-plugin). Check out the [Releases page](https://github.com/godotengine/godot-git-plugin/releases) for the latest 2.x plugin release supporting Godot 3.5 beta.
+
+### And more!
+
+- Android: Initial port of the Godot editor ([GH-57747](https://github.com/godotengine/godot/pull/57747)).
+- Android: Fix flickering issues with low processor mode ([GH-59606](https://github.com/godotengine/godot/pull/59606)).
+- Android: Update editor default display scale, allow resizing windows ([GH-59868](https://github.com/godotengine/godot/pull/59868), [GH-59861](https://github.com/godotengine/godot/pull/59861), [GH-59880](https://github.com/godotengine/godot/pull/59880)).
+- Animation: Add option to paste animation as duplicate ([GH-60226](https://github.com/godotengine/godot/pull/60226)).
+- Audio: Allow configuring loop mode on WAV import ([GH-59170](https://github.com/godotengine/godot/pull/59170)).
+- Audio: Instance audio streams before `AudioServer::lock` call ([GH-59413](https://github.com/godotengine/godot/pull/59413)).
+- Audio: Fix crash in AudioServer when switching audio devices with different audio channels count ([GH-59778](https://github.com/godotengine/godot/pull/59778)).
+- C#: Fix Android AAB export failing to load native libs ([GH-57420](https://github.com/godotengine/godot/pull/57420)).
+- Core: Add GradientTexture2D ([GH-54824](https://github.com/godotengine/godot/pull/54824)).
+- Core: Allow pinning property values + Consistent property defaults ([GH-52943](https://github.com/godotengine/godot/pull/52943)).
+- Core: Support deep comparison of Array and Dictionary ([GH-42625](https://github.com/godotengine/godot/pull/42625)).
+- Core: Add visibility to CanvasLayer ([GH-57900](https://github.com/godotengine/godot/pull/57900)).
+- Core: Add a signal to notify when children nodes enter or exit tree ([GH-57541](https://github.com/godotengine/godot/pull/57541)).
+- Core: Add fill method to Array and Pool*Array ([GH-60426](https://github.com/godotengine/godot/pull/60426)).
+- Core: Expose `OS.move_to_trash()` ([GH-60542](https://github.com/godotengine/godot/pull/60542)).
+- Editor: Improve ColorPicker presets ([GH-54439](https://github.com/godotengine/godot/pull/54439)).
+- Editor: Add option to only redraw vital updates ([GH-53463](https://github.com/godotengine/godot/pull/53463)).
+- Editor: Improved region-select in the 3D editor viewport ([GH-58252](https://github.com/godotengine/godot/pull/58252)).
+- Editor: Make property paths and categories translatable ([GH-58634](https://github.com/godotengine/godot/pull/58634)).
+- Editor: Add property name style toggle to Inspector ([GH-59313](https://github.com/godotengine/godot/pull/59313)).
+- Editor: Add an inspector preview for BitMap ([GH-60700](https://github.com/godotengine/godot/pull/60700)).
+- Export: Improve embedded PCK loading and exporting ([GH-60580](https://github.com/godotengine/godot/pull/60580)).
+- GDScript: Fix variable type inference on release ([GH-57851](https://github.com/godotengine/godot/pull/57851)).
+- GDScript: Don't coerce default values to the export hint type ([GH-58686](https://github.com/godotengine/godot/pull/58686)).
+- GDScript: Enable method type information on release builds ([GH-59793](https://github.com/godotengine/godot/pull/59793)).
+- GUI: Add FlowContainer ([GH-57960](https://github.com/godotengine/godot/pull/57960)).
+- GUI: Add alignment options to Button icons ([GH-57771](https://github.com/godotengine/godot/pull/57771)).
+- GUI: Add type variations to Theme ([GH-57942](https://github.com/godotengine/godot/pull/57942)).
+- GUI: Add WOFF2 font support and brotli decoder ([GH-59522](https://github.com/godotengine/godot/pull/59522)).
+- GUI: Add a Skew property to StyleBoxFlat ([GH-60592](https://github.com/godotengine/godot/pull/60592)).
+- Input: Allow for mapping scancodes to current layout ([GH-56015](https://github.com/godotengine/godot/pull/56015)).
+- Internationalization: Add binary MO translation file support ([GH-59522](https://github.com/godotengine/godot/pull/59522)).
+- Linux: Fix `window_maximized` not working reliably ([GH-59767](https://github.com/godotengine/godot/pull/59767)).
+- macOS: Implements ad-hoc signing from Linux/Windows ([GH-51550](https://github.com/godotengine/godot/pull/51550)).
+- Networking: Add proxy support for HTTPClient and the editor ([GH-55988](https://github.com/godotengine/godot/pull/55988)).
+- Physics: Add fixed timestep interpolation for 3D ([GH-52846](https://github.com/godotengine/godot/pull/52846)).
+ * The 2D equivalent will be added later on.
+- Rendering: Add `material_overlay` property to MeshInstance ([GH-50823](https://github.com/godotengine/godot/pull/50823)).
+- Rendering: Faster editor line drawing - Path2D and `draw_line` ([GH-54377](https://github.com/godotengine/godot/pull/54377)).
+- Rendering: Add OccluderShapePolygon ([GH-57361](https://github.com/godotengine/godot/pull/57361)).
+- Rendering: Add support for saving multiple Images in BakedLightmap ([GH-58102](https://github.com/godotengine/godot/pull/58102)).
+- Rendering: Bind mesh merging functionality in MeshInstance ([GH-57661](https://github.com/godotengine/godot/pull/57661)).
+- Shaders: Many improvements backported from `master` ([GH-56794](https://github.com/godotengine/godot/pull/56794)).
+- VisualShader: Add hints and default values to the uniform nodes ([GH-56466](https://github.com/godotengine/godot/pull/56466)).
+- Windows: Improve console handling and `execute` ([GH-55987](https://github.com/godotengine/godot/pull/55987)).
+ * This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn't open with a console by default, but you can see console output if you start it from a console yourself. You can [create a batch script or shortcut](https://github.com/godotengine/godot/pull/55987#issuecomment-996563579) to automatically start Godot from a console as in previous releases.
+- Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) ([GH-54625](https://github.com/godotengine/godot/pull/54625)).
+
+All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.5-stable.
+
+## Changelog
+
+There's no curated changelog just yet, I still have to skim through all commits to select the changelog worthy changes.
+
+For now, you can check the full changelog since 3.4-stable ([chronological](https://downloads.tuxfamily.org/godotengine/3.5/beta5/Godot_v3.5-beta5_changelog_chrono.txt), or [for each contributor](https://downloads.tuxfamily.org/godotengine/3.5/beta5/Godot_v3.5-beta5_changelog_authors.txt)).
+
+You can also review the [changes between beta 4 and beta 5](https://github.com/godotengine/godot/compare/b6968ab0602bfe72c71d4efcafe608f9cac36252...815f7fe636e6937f6ae7d7a9e00a85798afb324b).
+
+This release is built from commit [815f7fe63](https://github.com/godotengine/godot/commit/815f7fe636e6937f6ae7d7a9e00a85798afb324b).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/3.5/beta5/) (GDScript, GDNative, VisualScript).
+- [Mono build](https://downloads.tuxfamily.org/godotengine/3.5/beta5/mono/) (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono **6.12.0.158** are included in this build.
+
+**Notes:**
+
+- The Windows builds are signed, but the certificate expired recently. Future builds should be signed with a new certificate.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this beta. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.4.x no longer works in this 3.5 beta).
+
+## Support
+
+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](/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-1.md b/collections/_article/dev-snapshot-godot-4-0-alpha-1.md
new file mode 100644
index 0000000000..21d6c6671e
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-1.md
@@ -0,0 +1,185 @@
+---
+title: "Major milestone ready for testing: Godot 4.0 alpha 1 is out!"
+excerpt: "We are finally ready to release Godot 4.0 alpha 1 — a major milestone on the way to the stable release of Godot 4.0 and all future 4.x releases. As expected of any alpha software, it is still rough on the edges and not intended for use in production, but instead of early testers to find and report bugs, and provide us with feedback on the new features and how to improve them."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/61e/ebb/51b/61eebb51baa9f592108392.png
+date: 2022-01-24 15:36:03
+---
+
+The new year is often the time for new beginnings, and 2022 is on schedule to mark a new chapter in Godot's history. Slowly but surely we are getting to the release of the new major version of the engine — **Godot 4.0**. But to get there, we first need to test the new version rigorously, and like many times before we are looking to our amazing community to help with the efforts.
+
+This marks the start of the [*alpha* development phase](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha), and we invite everyone to start experimenting with upcoming preview versions of the engine. Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix. There will be frequent alpha releases and the engine will gradually become more stable along the way, as our contributors fix the issues reported by alpha testers.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha 1.** There is no easy way back once a project has been (partially) converted.
+
+Don't let us hold your curiosity any longer, though! [Jump to the **Downloads** section now.](#downloads) Or continue reading to learn about some highlights of what has changed.
+
+## What's new? {#whats-new}
+
+Godot 4.0 has been in development for 2 years already, and even longer than that for the initial Vulkan renderer rewrite! All contributors have been quite busy during that time to bring Godot to the next level, while also giving Godot 3 users a lot of care by backporting relevant features and bugfixes to Godot [3.3](https://godotengine.org/article/godot-3-3-has-arrived), [3.4](https://godotengine.org/article/godot-3-4-is-released) and soon [3.5](https://godotengine.org/article/dev-snapshot-godot-3-5-beta-1).
+
+After 2 years of work, it wasn't an easy task to write down the release notes for this 4.0 alpha 1, and we have Yuri Sizov ([pycbouh](https://github.com/pycbouh)) to thank for coordinating that effort and writing most of the content.
+
+This blog post will give you a glimpse of some of the highlights of Godot 4.0 as of today. Of course we couldn't feature all our favorite changes, nor give a much deserved mention to all of the 700 contributors who have been working on this release. We still have some way to go to [compile a detailed changelog](https://github.com/godotengine/godot/blob/master/CHANGELOG.md#40---tbd) and [update all the documentation](https://docs.godotengine.org/en/latest/) to reflect the many changes that are coming to the Godot 4 series.
+
+### Core {#core}
+
+Throughout the last two years the core of the engine has seen a lot of improvements and refactoring to bring it to the next level in terms of maintainability, reliability, and performance. The ugly reality of software development is that legacy code builds up really quick and keeping it up to date, ready for new challenges that arise several years down the line takes a lot of effort. So we took the opportunity of the new major version of the engine to break stuff to make it better, and you'll see it in every other part of this blog post.
+
+Internal changes are hard to showcase, but if you are curious to learn a bit more, Godot's lead developer Juan Linietsky ([reduz](https://github.com/reduz)) has covered some of the bigger improvements made in the engine core in several blog posts last year, check them out: [1](https://godotengine.org/article/core-refactoring-progress-report-1), [2](https://godotengine.org/article/core-refactoring-progress-report-2). And there's been a lot more since then in all areas of the engine — we can't state enough how much of Godot 4.0's development boils down to refactoring and rewriting existing features to make them a much better base to build on. We're thinking forward, and preparing the ground for frequent 4.x releases which will let us to improve Godot at a much faster pace thanks to all the foundational work we've been doing for 4.0.
+
+One of the most important additions not covered by those articles is the introduction of unit testing to the engine components. While our existing integration testing can highlight critical issues preventing the code from compiling or running, it does little to ensure the stability of the engine. With a decent [unit test coverage](https://github.com/godotengine/godot/issues/43440), we should be able to better catch logical regression or changes accidentally breaking the engine's systems.
+
+### Rendering {#rendering}
+
+Visuals are, arguably, the first thing everyone notices about a game. For a long time, we really wanted to deliver on that front, but it took a complete rendering overhaul in Godot 4 to finally give us that opportunity. With two new **Vulkan** backends (*Clustered* and *Mobile*), Godot has never been so advanced in rendering.
+
+
+
+For starters, Godot's global illumination systems have been remade from scratch in the new release. *GIProbe* has been replaced by the **VoxelGI** node, which is a real-time solution fit for small and medium-scale environments. For the first time ever, Godot also comes with a GI technique that can be used with large open worlds — signed distance field global illumination (**SDFGI**). It's a novel technique created and implemented by Juan, it works in real-time, and you can learn a lot more about it [here](https://godotengine.org/article/godot-40-gets-sdf-based-real-time-global-illumination). If you are looking to add that extra bit of quality when running on high-end devices, rendering contributor Clay John ([clayjohn](https://github.com/clayjohn)) brings you [Screen Space Indirect Lighting](https://github.com/godotengine/godot/pull/51206). This feature adds more detail to existing GI techniques by using screen-space sampling, similar to SSAO. Last but not least, *lightmaps baking* is now [done using the GPU](https://github.com/godotengine/godot/pull/38386) to speed up the process significantly.
+
+To help improve fidelity of your 3D scenes, we have worked on a couple of exciting and long-anticipated features. [Volumetric fog](https://github.com/godotengine/godot/pull/41213) is making its first appearance in Godot 4, balancing a realistic look and fast performance, thanks to the use of *temporal reprojection*. You can configure the effect globally, or define specific areas with [FogVolume nodes](https://github.com/godotengine/godot/pull/53353). You can even create complex dynamic effects by writing custom shaders that operate on FogVolume nodes. Another new way to add dynamic effects is [decals](https://github.com/godotengine/godot/pull/37861), which rely on PBR materials and can also be used for decorating your environments.
+
+Visual effect artists among you should find a lot of useful changes to the GPU-based particles. Those now come with support for attractors, [collision](https://github.com/godotengine/godot/pull/42628), [trails](https://github.com/godotengine/godot/pull/48242), [sub-emitters and manual emission](https://github.com/godotengine/godot/pull/41810). And speaking of effects, our shader maintainer Yuri Roubinsky ([Chaosus](https://github.com/Chaosus)) poured a lot of love into making the shading language and visual shaders more accessible and versatile. Check out his and Juan's blog posts on some of the improvements: [1](https://godotengine.org/article/improvements-shaders-visual-shaders-godot-4), [2](https://godotengine.org/article/godot-40-gets-global-and-instance-shader-uniforms).
+
+
+
+Don't worry, though, you will be able to reap the benefits of these new features without sacrificing your game's performance. Several new optimization techniques are also at your disposal, such as [occlusion culling](https://github.com/godotengine/godot/pull/48050), [automatic mesh LOD](https://github.com/godotengine/godot/pull/44468), and manual HLOD using [visibility ranges](https://github.com/godotengine/godot/pull/48847), made possible by Joan Fons ([JFonS](https://github.com/JFonS)) and Juan.
+
+If you are using Godot to develop apps, you should be pleased to learn that Godot 4 supports multiple windows per running application. You will notice it with the editor itself, and you can enable the same behavior in your projects, globally or per sub-viewport.
+
+**Important note regarding OpenGL:** Since not all hardware supports Vulkan yet (along with HTML5), a GLES3-based [OpenGL renderer](https://github.com/godotengine/godot/pull/54307) is also being developed. However, at this point, it is very limited and cannot be used even for 2D projects. Learn more about future of OpenGL in Godot in [this blog post](https://godotengine.org/article/about-godot4-vulkan-gles3-and-gles2).
+
+### Physics and navigation {#physics}
+
+Godot 4 marks a big return of Godot's in-house 3D physics engine, **Godot Physics**. For years, Godot has relied on the **Bullet** engine to provide a solid foundation for your 3D projects. We felt, however, that a bespoke solution would give us more flexibility when implementing new features and fixing issues.
+
+But first, we needed to bring Godot Physics on-par with Bullet feature-wise, and improve performance and precision of these features along the way. This included adding new collision shapes, [cylinder](https://github.com/godotengine/godot/pull/45854) and [heightmap](https://github.com/godotengine/godot/pull/47347), as well as re-implementing [SoftBody nodes](https://github.com/godotengine/godot/pull/46937). In addition to feature-specific improvements, general optimization techniques, such as broadphase optimization and multithreading support, were implemented for both 2D and 3D environments. Some of these improvements can also be found in recent Godot 3 releases.
+
+
+
+With that done, it was time to improve the the user side of things. In Godot 4 setting up scenes is a breeze after a [major reorganization of physics nodes](https://github.com/godotengine/godot/pull/48908). A lot of properties previously unique to specific body types are now available to all **PhysicsBody** nodes. This allows us to introduce the new **CharacterBody** node to replace old kinematic bodies and make the configuration of characters much simpler. Scripting them is simpler now as well. In previous versions of the engine properties related to moving, sliding, and colliding had to be passed to each corresponding method manually. They can now be set up using scenes, on the nodes themselves reducing code needed to have desired physical interactions.
+
+But a new release is not just new big features. A significant effort was put to fix various issues causing jitters and imprecise computations. You can read more about all this work by contributors Camille Mohr-Daurat ([pouleyKetchoupp](https://github.com/pouleyKetchoupp)), [lawnjelly](https://github.com/lawnjelly), and Fabrice Cipolla ([fabriceci](https://github.com/fabriceci)) in [this blog post](https://godotengine.org/article/physics-progress-report-1) by Camille, who helms the physics development in Godot.
+
+To breathe more life into physical bodies, the next major version of Godot also introduces a new navigation system. Previous versions of the navigation were entirely node-based, which limited their usability and performance. Thanks to work done by [Andrea Catania](https://github.com/AndreaCatania), Godot 4 features a server-based approach to navigation.
+
+The new **NavigationServer** supports fully dynamic environments and on-the-fly navigation mesh baking. You can stream regions, which makes the system applicable to large open spaces. Physics bodies can be marked as obstacles for automatic collision avoidance, and it all works much faster than before thanks to multithreading support.
+
+Andrea described the new system with a great practical example in a [dedicated article](https://godotengine.org/article/navigation-server-godot-4-0), and we recommend you give it a read.
+
+### Scripting {#scripting}
+
+[A recent study shows](https://godotengine.org/article/godot-community-poll-2021) that 100% of Godot users love to write a lot of code for their projects! With **GDScript** being the most used language, we wanted to really improve the coding experience in Godot 4 with some of the most requested and long-awaited language features. You can now reap the benefits of first-class functions and lambdas, new property syntax, the `await` and `super` keywords, and typed arrays. New built-in annotations make the language clearer and improve syntax for exported properties. And to top it off, your scripts can now automatically generate documentation that can be studied with the built-in help and the Inspector dock tooltips.
+
+
+
+Despite growing in features, the GDScript runtime is only faster and more stable in Godot 4. This was achieved by a complete rewrite of the language backend by our main scripting maintainer George Marques ([vnen](https://github.com/vnen)). If you are interested in further reading George has provided several detailed reports on the new language features ([1](https://godotengine.org/article/gdscript-progress-report-new-gdscript-now-merged), [2](https://godotengine.org/article/gdscript-progress-report-feature-complete-40)), as well as on the decision-making process for the new language parser and runtime ([1](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer), [2](https://godotengine.org/article/gdscript-progress-report-writing-new-parser), [3](https://godotengine.org/article/gdscript-progress-report-type-checking-back), [4](https://godotengine.org/article/gdscript-progress-report-typed-instructions)). The documentation feature was implemented by a student, Thakee Nathees ([ThakeeNathees](https://github.com/ThakeeNathees)), during the last year's Google Summer of Code. You can read their report [here](https://godotengine.org/article/gsoc-2020-progress-report-1#gdscript-doc).
+
+Sometimes user-level scripting is not enough, though. Being an open source project, Godot has always valued extensibility. With the existing *GDNative* API layer, you don't even have to fork the engine to extend it. But it was our first attempt at making a nice abstraction layer for engine internals that you could plug-and-play into. And so for all its benefits, GDNative didn't feel quite there yet.
+
+This is why with Godot 4, we introduce a new system called **GDExtension**. By design, it takes the best parts of creating GDNative extensions and writing custom engine modules. The code that you make can be ported into the engine if needs be, and, vice versa, some engine parts can be made into a GDExtension library, reducing engine bloat. All this still without having to recompile the engine.
+
+The new GDExtension system was implemented by Juan and George, and further improved by many contributors, especially while porting the [official godot-cpp C++ bindings](https://github.com/godotengine/godot-cpp). Resident XR enthusiast and Godot contributor Bastiaan Olij ([BastiaanOlij](https://github.com/BastiaanOlij)) took time to make a blog post to [introduce GDExtensions](https://godotengine.org/article/introducing-gd-extensions).
+
+### GUI and text {#gui}
+
+
+
+Localization is probably the most straightforward way to allow more people to experience your game or use your tool efficiently. However, translating your project is often just half the battle. Most software can handle Latin or Cyrillic characters well enough, but when it comes to Arabic scripts or logograms of East Asian languages, text rendering quickly becomes tricky.
+
+Defying the odds of this difficult task, our talented contributor Pāvels Nadtočajevs ([bruvzg](https://github.com/bruvzg)) has reimplemented Godot's text rendering systems under an umbrella of the **TextServer**. That backend solution does the heavy lifting for everything related to displaying textual information on screen. It also enables right-to-left languages to work just as their users expect them — ligatures, complex graphemes and all. Read Pāvels' detailed reports on the improvements made: [1](https://godotengine.org/article/complex-text-layouts-progress-report-1), [2](https://godotengine.org/article/complex-text-layouts-progress-report-2), [3](https://godotengine.org/article/complex-text-layouts-progress-report-3).
+
+Your localization efforts are further assisted by a built-in pseudolocalization tool. Implemented by Angad Kambli ([angad-k](https://github.com/angad-k)), a Google Summer of Code 2021 student, it allows to easily test the effects of diacritics and other font permutations on your GUI without having to rely on actual translations to stress test your project. You can learn more about pseudolocalization features in the student's report [here](https://godotengine.org/article/gsoc-2021-progress-report-1#pseudolocalization).
+
+Text rendering changes couldn't have happened without an overhaul in how fonts are handled by the engine. Besides supporting ligatures and other OpenType features, font resources have two more important differences from Godot 3. First of all, fonts now have proper multilevel fallback logic, which helps to cover a wider range of characters than any one font would allow with a single font resource. Second of all, the size of the font is no longer tied to the font itself, which means it can be easily changed on the fly. In fact, all Control nodes that have configurable fonts now have separate configurable font sizes in their theme properties.
+
+Speaking of themes, the default project theme have been modernized to provide a cleaner look and get rid of embedded images, which should slightly reduce the size of exported projects. You can thank our core contributor Hugo Locurcio ([Calinou](https://github.com/Calinou)) for that.
+
+### Audio {#audio}
+
+Sound design and music is another area that is important to get right. It is also the area that requires a lot of specialized knowledge to properly support in the engine. Luckily, our contributor Ellen Poe ([ellenhp](https://github.com/ellenhp)) has exactly what it takes, and her work on Godot 4 helped to fix a large amount of withstanding issues with the audio system.
+
+The new release takes full advantage of the existing **AudioServer** as a [significant chunk of audio processing logic](https://github.com/godotengine/godot/pull/51296) has been moved there. This change aims to address various popping issues, race conditions, and overall poor resampling behavior. It also paves the road for future improvements to make Godot's audio system more flexible and feature-rich. Such as [built-in polyphony support](https://github.com/godotengine/godot/pull/52237), allowing you to repeat the same sound multiple times on top of itself using a single AudioStreamPlayer node. This leads to more satisfying audio effects, such as gunfire.
+
+### Multiplayer {#multiplayer}
+
+We've spent a lot of time and effort on the foundations for our networking systems and their reliability for Godot 4.0 — be it DNS, HTTP, TCP, UDP, ENet, or Websockets: all core components were refactored, improved and many bugs and edge cases fixed and handled.
+Whether it's DNS now resolving multiple IP addresses correctly, connections being more stable and less prone to being interrupted or hanging, large downloads working as they should or countless other tiny improvements under the hood — networking in Godot 4.0 should be an altogether more pleasant and reliable experience thanks to Fabio Alessandrelli ([Faless](https://github.com/Faless)), Max Hilbrunner ([mhilbrunner](https://github.com/mhilbrunner)), Haoyu Qiu ([timothyqiu](https://github.com/timothyqiu)), David Snopek ([dsnopek](https://github.com/dsnopek)), Jordan Schidlowsky ([jordo](https://github.com/jordo)), [sarchar](https://github.com/sarchar) and many other contributors. New features and bigger improvements require you to try out our latest and greatest, but passionate Godot contributors have done tremendous work backporting a lot of the fixes to Godot 3 as well.
+
+With the GDScript 2.0 changes, RPCs can now be configured using the new annotations. Godot 4.0 also comes with a fully working headless mode (no rendering or visual output, supported on all platforms!), which is great for multiplayer server hosting, CI/CD and many other things and Godot now also supports [mesh or peer to peer networking](https://github.com/godotengine/godot/pull/50710) as an alternative to the trusty client-server model. You have Fabio in particular to thank for all of these!
+
+And finally, this vastly more stable and improved foundation now allows us to build excited higher level features on top. Fabio has been working tirelessly on scene replication, which may just make the cut for one of the next alpha releases. Stay tuned! (And thank you, everyone who already contributed and provided feedback on this!)
+
+If you want to read more on all of the above, [this series of posts](https://godotengine.org/article/multiplayer-changes-godot-4-0-report-1) is a good place to start.
+
+### Importing {#importing}
+
+
+
+When you start working on a new 3D scene in Godot 4, you won't be able to miss a leaping change in the importing workflow. Previous versions of the engine provided users with a powerful, but obscured mechanism for preparing imported 3D assets. You could automate and enhance your models and scenes with an import script and a few import settings, but we were sure we can do better than that. Godot 4 comes with a [dedicated import dialog](https://github.com/godotengine/godot/pull/47166) that allows you to preview and customize every part of the imported scene, its materials and physical properties. Scripts can still be used for additional tweaks, thanks to the [new plugin interface](https://github.com/godotengine/godot/pull/53813).
+
+You should also notice a [significant bump](https://github.com/godotengine/godot/pull/47370) in textures import speed thanks to the etcpak library, and the new multi-threaded importer. Additionally, you can now [import your glTF files](https://github.com/godotengine/godot/pull/52541) at runtime, allowing for more modular 3D projects as well as tools made with the engine. Give it up for K. S. Ernest Lee ([fire](https://github.com/fire)), who worked on these and a myriad of other features as an importing and usability specialist.
+
+3D animations have seen an internal overhaul, allowing for compression to reduce memory usage, as well as individual position, rotation, and scale tracks in place of united transforms. Read more about animation changes in [this blog post](https://godotengine.org/article/animation-data-redesign-40) by Juan.
+
+### Editor and usability {#editor}
+
+Of course, none of the aforementioned changes would be worth it if you couldn't access them or if they were uncomfortable to use. We improve the Godot editor in big and small ways all the time, and you may have already seen some of the new features from their ports and counterparts added to Godot 3.3 and Godot 3.4.
+
+However, with a new major release, we can do some radical changes to the tools and the editor accessibility – changes that would be impossible without breaking compatibility. Probably the biggest improvement relying on that is the new Tiles editor, which has been reimagined based on your requests and reports. Our 2D editor maintainer Gilles Roudière ([groud](https://github.com/groud)) has united the workflow for `TileSet`s and `TileMap`s, providing various ways to organize and place tiles, to supply them with metadata and animations. You can probably build half a game with tiles alone!
+
+
+
+Read Gilles' multiple detailed reports on the progress made over several months of development: [1](https://godotengine.org/article/tiles-editor-rework), [2](https://godotengine.org/article/tiles-editor-progress-report-2), [3](https://godotengine.org/article/tiles-editor-progress-3), [4](https://godotengine.org/article/tiles-editor-progress-4), [5](https://godotengine.org/article/tiles-editor-progress-report-5).
+
+Another major tool that is seeing a lot of love in Godot 4 is the animation editor. With input from Juan, Gilles, as well as contributions by François Belair ([Razoric480](https://github.com/Razoric480)) and Nathan Lovato ([NathanLovato](https://github.com/NathanLovato)), the Animation editor receives support for blend shape tracks, dedicated position, rotation, and scale tracks, and improved Bezier curve workflow.
+
+Overall editor usability is also always improving, and you will likely see a few new tricks the closer we get to the stable release of Godot 4. One great usability booster that you can try already is the new command palette, added by a student during Godot Summer of Code this year. This tool provides quick access to a lot of editor operations for keyboard-proficient users. Read a report by Bhuvaneshwar ([Bhu1-V](https://github.com/Bhu1-V)) [here](https://godotengine.org/article/gsoc-2021-progress-report-1#command-palette) to learn more about this feature. Another big time saver has got to be new and improved script templates, which can now be [customized per node type](https://github.com/godotengine/godot/pull/53957). The editor even comes with some handy physics body templates, courtesy of Fabrice.
+
+And finally, a new release doesn't feel new without an updated look for the editor. Just like the new project theme, the [new editor theme](https://github.com/godotengine/godot/pull/45607) was made by Hugo to give it a more modern feeling and improve color schemes for better accessibility. The editor also benefits from the improved text rendering and right-to-left support, which should open the doors of gamedev for developers from many more regions.
+
+## More updates to come {#more-updates}
+
+There are a number of other features and important fixes in the pipeline for Godot 4, which are still being finalized and will be included in future alpha releases.
+Notably, C# support is undergoing a [port to .NET 6](https://github.com/godotengine/godot/tree/dotnet6), which is why Mono builds are not included in this alpha.
+
+As we get closer to the stable release of Godot 4, expect us to cover the key changes in more detail in dedicated blog posts.
+
+In the meantime, if you don't quite feel adventurous enough to try the alpha, Godot 3 keeps getting bigger and better with every backport and fix. Many contributors don't stop at developing a feature, but also go one step further and deliver it to the stable release of the engine. Thanks to them, you can experience a taste of what's coming – today. And share some feedback, if you can! Now is the best time to shape the future of Godot.
+
+## Downloads {#downloads}
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha1/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. You'll get a chance to test it with later alpha releases!
+
+## Known issues {#known-issues}
+
+As this is our first alpha release of the next major version of Godot there are still many-many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+). Below we list a few of them that may be important to a lot of users:
+
+* Crash when minimising any window when a sub window is open ([GH-51537](https://github.com/godotengine/godot/issues/51537)).
+* Duplicated files or resources retains the same UID ([GH-54774](https://github.com/godotengine/godot/issues/54774)).
+* Navigating the editor UI with the Tab key doesn't work ([GH-54602](https://github.com/godotengine/godot/issues/54602)).
+* GDScript's rewrite has a [number of outstanding bugs](https://github.com/godotengine/godot/pulls?q=is%3Apr+is%3Aopen+label%3Abug+label%3Atopic%3Agdscript+milestone%3A4.0+) which may affect your testing.
+* The Vulkan Mobile backend has a lot of known bugs. We recommend testing rendering features with Vulkan Clustered for now.
+* AMD FSR implementation may not be working as expected ([GH-56173](https://github.com/godotengine/godot/issues/56173), [GH-56174](https://github.com/godotengine/godot/issues/56174)).
+* TileMap terrain feature doesn't work as expected ([GH-54587](https://github.com/godotengine/godot/issues/54587)).
+* Particle trails work incorrectly with random lifetime ([GH-55842](https://github.com/godotengine/godot/issues/55842)).
+* There are of course [many more known issues](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+) as it's only the first alpha release. We'll add more to this post if we see testers stumbling on them.
+
+## Bug reports {#bugs}
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 1. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support {#support}
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-10.md b/collections/_article/dev-snapshot-godot-4-0-alpha-10.md
new file mode 100644
index 0000000000..fe1eabbb0c
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-10.md
@@ -0,0 +1,79 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 10"
+excerpt: "Another couple of weeks, another alpha snapshot from the development branch, this time with 4.0 alpha 10! This release adds an initial implementation for Temporal Anti-Aliasing, as well as the first iteration of a command line tool to (partially) convert Godot 3.x projects to the Godot 4.0 API."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: ["/storage/app/uploads/public/62a/9e1/79b/62a9e179b77cb823642349.jpg"]
+date: 2022-06-15 13:08:46
+---
+
+Another couple of weeks, another alpha snapshot from the development branch, this time with **4.0 alpha 10**! We're getting in 2-digit territory, both because 4.0 is a *huge* release that requires a lot of work, and because we're committed to providing dev snapshots frequently so that pre-release testers can quickly access the new features and bug fixes.
+
+This snapshot comes with a handful of interesting new features, notably:
+- Initial TAA implementation ([GH-61319](https://github.com/godotengine/godot/pull/61319)).
+- Early version of a command-line tool to convert Godot 3.x projects to the 4.0 API ([GH-51950](https://github.com/godotengine/godot/pull/51950)). You can test it **on a separate copy of your project** with the `--convert-3to4` command line argument.
+- Adds TileMap terrain center bit to support "connect" and "path" draw modes ([GH-61809](https://github.com/godotengine/godot/pull/61809)).
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 10 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/d9daf3869f27e2afdacb2744168052ce0d4ae43b...4bbe7f0b98de72d6dd77d5ade4b761de375bcf66) for an overview of all changes since 4.0 alpha 9 (149 commits – excluding merge commits ― from 51 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- 2D: Add TileMap terrain center bit to support "connect" and "path" draw modes ([GH-61809](https://github.com/godotengine/godot/pull/61809)).
+- 2D: Fix terrains for isometric tilemaps ([GH-61998](https://github.com/godotengine/godot/pull/61998)).
+- 2D: Fix global properties and add `global_skew` for Node2D ([GH-52415](https://github.com/godotengine/godot/pull/52415)).
+- 3D: Add support for saving lightmap as multiple images ([GH-61861](https://github.com/godotengine/godot/pull/61861)).
+- Core: Hash function improvements ([GH-61934](https://github.com/godotengine/godot/pull/61934)).
+- Core: Add `any()` and `all()` methods to Array ([GH-50349](https://github.com/godotengine/godot/pull/50349)).
+- Core: Add `Dictionary.merge()` ([GH-59883](https://github.com/godotengine/godot/pull/59883)).
+- GUI: Allow picking similar colors with OKHSL in ColorPicker ([GH-59786](https://github.com/godotengine/godot/pull/59786)).
+- GUI: Add text overrun behavior to Button ([GH-61819](https://github.com/godotengine/godot/pull/61819)).
+- Editor: Add initial Godot 3.x to 4.x project conversion tool ([GH-51950](https://github.com/godotengine/godot/pull/51950)).
+- Editor: Add vector value linking ([GH-59125](https://github.com/godotengine/godot/pull/59125)).
+- Editor: Add shortcuts to TileSet shapes editor ([GH-61767](https://github.com/godotengine/godot/pull/61767)).
+- Export: Add readable export errors ([GH-61674](https://github.com/godotengine/godot/pull/61674)).
+- HTML5: Add initial support for GDExtension+Threads template ([GH-62028](https://github.com/godotengine/godot/pull/62028)).
+- Navigation: Add NavigationRegion costs for 2D and 3D pathfinding ([GH-61739](https://github.com/godotengine/godot/pull/61739)).
+- Navigation: Streamling Navigation layer functions names ([GH-62052](https://github.com/godotengine/godot/pull/62052)).
+- Rendering: Initial TAA (Temporal Anti-Aliasing) implementation ([GH-61319](https://github.com/godotengine/godot/pull/61319)).
+- Rendering: GLES3: Implement MultiMesh in 3D and flesh out MultiMesh functions ([GH-62057](https://github.com/godotengine/godot/pull/62057)).
+- Windows: Fix FreeType crashing in GCC + LTO builds ([GH-61805](https://github.com/godotengine/godot/pull/61805)).
+
+This release is built from commit [4bbe7f0b9](https://github.com/godotengine/godot/commit/4bbe7f0b98de72d6dd77d5ade4b761de375bcf66).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha10/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. You'll get a chance to test it with later alpha releases!
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 10. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-11.md b/collections/_article/dev-snapshot-godot-4-0-alpha-11.md
new file mode 100644
index 0000000000..7722a8cc25
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-11.md
@@ -0,0 +1,92 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 11"
+excerpt: "Another alpha snapshot from the development branch, this time with 4.0 alpha 11! Noteworthy changes: exporting Node pointers as NodePaths, Movie Maker run mode, fixed release builds, AnimationTree advance expressions."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/62b/ef3/600/62bef360098e2733276874.jpg
+date: 2022-07-01 13:16:20
+---
+
+Another couple of weeks, another alpha snapshot from the development branch, this time with **4.0 alpha 11**! Same deal as usual, lots of bugs fixed and more refactoring and feature work. We're etching closer and closer to the beta stage, things are starting to fall into place!
+
+Some noteworthy changes in this release:
+- Exporting Node pointers as NodePaths (`@export var some_node: Node`)
+- Movie Maker run mode to record in-game footage for trailers/movies
+- Fix GDScript bug causing return values to be reset in release builds
+- AnimationTree advance expressions to drive complex state machines
+
+**Note:** There was a change in the internal format that PNG files get imported to, which you might experience as projects from earlier alphas reporting broken dependencies. You can fix this by deleting the `.godot/imported/` folder to force a reimport. (Or manually triggering a reimport for your image resources.)
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 11 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/4bbe7f0b98de72d6dd77d5ade4b761de375bcf66...afdae67cc381bb340da2e864279da6b836804b7f) for an overview of all changes since 4.0 alpha 10 (200 commits – excluding merge commits ― from 71 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- Android: Upgrade NDK to r23 LTS ([GH-61691](https://github.com/godotengine/godot/pull/61691)).
+- Android: Fix broken scroll gesture on UI ([GH-62289](https://github.com/godotengine/godot/pull/62289)).
+- Animation: Add AnimationTree advance expressions ([GH-61196](https://github.com/godotengine/godot/pull/61196)).
+- Audio: Expose 2D/3D panning strength parameters ([GH-58841](https://github.com/godotengine/godot/pull/58841)).
+- Core: Add ability to export Node pointers as NodePaths ([GH-62185](https://github.com/godotengine/godot/pull/62185)).
+- Core: Implement a Movie Maker run mode ([GH-62122](https://github.com/godotengine/godot/pull/62122)).
+- Core: Optimize HashMap/HashSet with fast modulo ([GH-62327](https://github.com/godotengine/godot/pull/62327)).
+- Core: Add support for saving WebP images ([GH-61770](https://github.com/godotengine/godot/pull/61770)).
+- Core: Add `print_rich()` for printing with BBCode ([GH-60675](https://github.com/godotengine/godot/pull/60675)).
+- Core: Remake ResourceCache thread safety code and API ([GH-62309](https://github.com/godotengine/godot/pull/62309)).
+- Core: Fix VECTOR/LOCAL transitions in Node3D ([GH-62396](https://github.com/godotengine/godot/pull/62396)).
+- Core: Fix option to convert text resources to binary ([GH-56185](https://github.com/godotengine/godot/pull/56185)).
+- Editor: Refactored shader editor, now a permanent bottom dock with support to edit multiple files ([GH-61459](https://github.com/godotengine/godot/pull/61459)).
+- Editor: Rework scene creation dialog ([GH-61954](https://github.com/godotengine/godot/pull/61954)).
+- Editor: Fix support for RID, Callable and Signal in editor properties ([GH-62540](https://github.com/godotengine/godot/pull/62540)).
+- Editor: Simplify subresource saving ([GH-62318](https://github.com/godotengine/godot/pull/62318)).
+- GDScript: Fix resetting return value in release builds ([GH-62317](https://github.com/godotengine/godot/pull/62317)).
+- GDScript: Fix setter being called in chains for shared types ([GH-62462](https://github.com/godotengine/godot/pull/62462)).
+- GDScript: Use implicit method for `@onready` variables ([GH-62255](https://github.com/godotengine/godot/pull/62255)).
+- GDScript: Don't double-reference `Ref`s returned from function ([GH-53135](https://github.com/godotengine/godot/pull/53135)).
+- GUI: Fix theme propagation for children of top level controls and windows ([GH-61587](https://github.com/godotengine/godot/pull/61587)).
+- Navigation: Lots of new features, fixes and enhancements to the new API ([16 PRs merged](https://github.com/godotengine/godot/pulls?q=is%3Apr+sort%3Aupdated-desc+label%3Atopic%3Anavigation+is%3Amerged+merged%3A2022-06-14..2022-06-30+milestone%3A4.0)).
+- Rendering: Add support for soft shadows to the GPU lightmapper ([GH-62054](https://github.com/godotengine/godot/pull/62054)).
+- Rendering: Use the Static global illumination mode in GeometryInstance3D by default ([GH-60935](https://github.com/godotengine/godot/pull/60935)).
+- Rendering: Fix usage of FSR 1.0 ([GH-62475](https://github.com/godotengine/godot/pull/62475)).
+- Rendering: Assorted fixes to the implementation of Vulkan RenderingDevice ([GH-55954](https://github.com/godotengine/godot/pull/55954)).
+- Rendering: Further refactoring work of the implementation classes
+- XR: Add HTC tracker support ([GH-58921](https://github.com/godotengine/godot/pull/58921)).
+- XR: Introduce `eye_offset` for correcting stereoscopic reflections ([GH-62106](https://github.com/godotengine/godot/pull/62106)).
+
+This release is built from commit [afdae67cc](https://github.com/godotengine/godot/commit/afdae67cc381bb340da2e864279da6b836804b7f).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha11/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. You'll get a chance to test it with later alpha releases!
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 11. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-12.md b/collections/_article/dev-snapshot-godot-4-0-alpha-12.md
new file mode 100644
index 0000000000..2afe6d1165
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-12.md
@@ -0,0 +1,85 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 12"
+excerpt: "Another couple of weeks, another alpha snapshot from the development branch, this time with 4.0 alpha 12! Noteworthy changes: GDScript variable grouping annotations, full support for Android scoped storage, Font resource refactoring, lots of GDScript 2.0 bugs squashed."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/62d/084/d0c/62d084d0cc864053656938.jpg
+date: 2022-07-14 21:06:14
+---
+
+Another couple of weeks, another alpha snapshot from the development branch, this time with **4.0 alpha 12**! Same deal as usual, lots of bugs fixed and more refactoring and feature work. We're etching closer and closer to the beta stage, things are starting to fall into place!
+
+Some noteworthy changes in this release:
+
+- Grouping annotations for exported variables in GDScript (`@export_group`).
+- Full support for Android scoped storage (also in 3.5 RCs).
+- Font resource refactoring.
+- Lots of GDScript 2.0 bugs squashed.
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 12 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/afdae67cc381bb340da2e864279da6b836804b7f...2c11e6d9efc42370a8d7537eaff8b1ea78a283e5) for an overview of all changes since 4.0 alpha 11 (129 commits – excluding merge commits ― from 54 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- 2D: Account for relative Z indices when Y-sorting ([GH-62837](https://github.com/godotengine/godot/pull/62837)).
+- 3D: Add `global_position` and `global_rotation` to Node3D ([GH-50755](https://github.com/godotengine/godot/pull/50755)).
+- Android: Add full support for Android scoped storage ([GH-62459](https://github.com/godotengine/godot/pull/62459)).
+- Android: Refactor Custom Build options in export preset ([GH-62611](https://github.com/godotengine/godot/pull/62611)).
+- Core: Implement a BitField hint ([GH-62374](https://github.com/godotengine/godot/pull/62374)).
+- Core: Allow parsing of invalid UTF-16 surrogates and some non-standard UTF-8 variants, make Unicode parse errors more verbose ([GH-62735](https://github.com/godotengine/godot/pull/62735)).
+- Core: Add static methods for creating Image and ImageTexture ([GH-60739](https://github.com/godotengine/godot/pull/60739)).
+- Editor: Show the transform operation numbers in 2D viewport ([GH-62539](https://github.com/godotengine/godot/pull/62539)).
+- Editor: Improve visibility of `code`, `codeblock`, `kbd` and clickable references in editor help ([GH-62710](https://github.com/godotengine/godot/pull/62710)).
+- GDScript: Add grouping annotations for class properties ([GH-62707](https://github.com/godotengine/godot/pull/62707)).
+- GDScript: Add support for documenting built-in annotations ([GH-62713](https://github.com/godotengine/godot/pull/62713)).
+- GDScript: Lots of bug fixes ([13 merged PRs](https://github.com/godotengine/godot/pulls?q=is%3Apr+sort%3Aupdated-desc+label%3Atopic%3Agdscript+is%3Amerged+merged%3A2022-07-01..2022-07-14)).
+- GUI: Refactor Font configuration and import UI, and Font resources ([GH-62108](https://github.com/godotengine/godot/pull/62108)).
+- GUI: Refactor ColorPicker codebase ([GH-62075](https://github.com/godotengine/godot/pull/62075)).
+- GUI: Add `root_subfolder` to FileDialog ([GH-59089](https://github.com/godotengine/godot/pull/59089)).
+- Import: Fix various bugs in the advanced scene import ([GH-59834](https://github.com/godotengine/godot/pull/59834)).
+- Import: Fix light intensity and attenuation import from glTF ([GH-62747](https://github.com/godotengine/godot/pull/62747)).
+- Import: Add support for 64-bit IEEE float WAV audio samples ([GH-61168](https://github.com/godotengine/godot/pull/61168)).
+- Input: Re-enable input accumulation by default ([GH-62665](https://github.com/godotengine/godot/pull/62665)).
+- Input: Add inversion/eraser-end property for tablet pens ([GH-62212](https://github.com/godotengine/godot/pull/62212)).
+- iOS: Flush accumulated input events ([GH-62843](https://github.com/godotengine/godot/pull/62843)).
+- macOS: Use statically linked MoltenVK by default, automatically detect MoltenVK SDK install ([GH-62669](https://github.com/godotengine/godot/pull/62669)).
+- macOS: Improve file association handling, and allow URL schema handling ([GH-62808](https://github.com/godotengine/godot/pull/62808)).
+
+This release is built from commit [2c11e6d9e](https://github.com/godotengine/godot/commit/2c11e6d9efc42370a8d7537eaff8b1ea78a283e5).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha12/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. You'll get a chance to test it with later alpha releases!
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 12. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-13.md b/collections/_article/dev-snapshot-godot-4-0-alpha-13.md
new file mode 100644
index 0000000000..0e5cc159f9
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-13.md
@@ -0,0 +1,94 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 13"
+excerpt: "We just announced that we'll enter feature freeze next week to focus on stabilizing the existing functionality in Godot 4.0 and prepare the first beta release. But until then we'll keep having alpha releases to test new features and fixes, so here goes 4.0 alpha 13!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/62e/2d8/d50/62e2d8d50baa2930461492.png
+date: 2022-07-28 18:43:35
+---
+
+We just announced that we'll enter [*feature freeze* next week](https://godotengine.org/article/godot-4-0-development-enters-feature-freeze) to focus on stabilizing the existing functionality in Godot 4.0 and prepare the first beta release. But we're not there yet and we'll keep having frequent alpha builds until we're ready to slap the *beta* label on the engine. So here we go with **4.0 alpha 13**!
+
+**Update 2022-07-29 @ 10:30 UTC:** A regression was found in the original build that prevented exporting projects to Windows and Linux with official templates. All editor builds for this alpha have been [updated with a hotfix](https://github.com/godotengine/godot/pull/63614). If you downloaded alpha 13 before this update, you can re-download the editor build for your platform. Export templates are unimpacted so you don't need to update them.
+
+---
+
+Some noteworthy changes in this release:
+
+- Shader preprocessor support and shader includes.
+- Grouping annotations for shaders (`uniform_group`).
+- Vector4, Vector4i and Projection types.
+- Support for loading system fonts on desktop and iOS.
+- Peer visibility support in MultiplayerSynchronizer.
+- Variable Rate Shading support.
+- Worker Thread Pool.
+- Feature build profiles for custom builds.
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 13 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/2c11e6d9efc42370a8d7537eaff8b1ea78a283e5...82811367cb36d3124d4e8c0a9c4c7f82dc64f9e4) for an overview of all changes since 4.0 alpha 12 (204 commits – excluding merge commits ― from 66 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- Audio: Implement BPM support in AudioStream files ([GH-63265](https://github.com/godotengine/godot/pull/63265)).
+- Buildsystem: Implement feature build profiles ([GH-62996](https://github.com/godotengine/godot/pull/62996)).
+- Buildsystem: Default `num_jobs` to max CPUs minus 1 if not specified ([GH-63087](https://github.com/godotengine/godot/pull/63087)).
+- Core: Implement a Worker Thread Pool ([GH-63141](https://github.com/godotengine/godot/pull/63141)).
+- Core: Implement Vector4, Vector4i, Projection built-in types ([GH-63219](https://github.com/godotengine/godot/pull/63219)).
+- Core: Fix `Quaternion.cubic_slerp()` and rename it to `spherical_cubic_interpolate()` ([GH-63380](https://github.com/godotengine/godot/pull/63380)).
+- Editor: Add drag-and-drop support for materials in 3D instances ([GH-56597](https://github.com/godotengine/godot/pull/56597)).
+- Editor: Use `FlowContainer` to handle toolbar overflow more gracefully ([GH-63247](https://github.com/godotengine/godot/pull/63247)).
+- Editor: Fix wrongly hidden script variables in Inspector ([GH-58443](https://github.com/godotengine/godot/pull/58443)).
+- Editor: Don't switch to 2D/3D viewports when selecting nodes while in Script Editor ([GH-63344](https://github.com/godotengine/godot/pull/63344)).
+- GUI: Add LabelSettings resource for quick Label theme property override ([GH-62139](https://github.com/godotengine/godot/pull/62139)).
+- GUI: Implement support for loading system fonts (on Linux, macOS / iOS, and Windows) ([GH-62973](https://github.com/godotengine/godot/pull/62973)).
+ * Linux support for this feature is temporarily missing in this build. You can test by building from source with the `fontconfig` package installed.
+- Multiplayer: Add peer visibility to MultiplayerSynchronizer ([GH-62961](https://github.com/godotengine/godot/pull/62961)).
+- Multiplayer: Allow extending MultiplayerPeerExtension from scripts ([GH-63262](https://github.com/godotengine/godot/pull/63262)).
+- Rendering: Add Variable Rate Shading support ([GH-60901](https://github.com/godotengine/godot/pull/60901)).
+- Rendering: Force regenerating shader cache when updating Godot ([GH-62848](https://github.com/godotengine/godot/pull/62848)).
+- Rendering: Use full size mipmaps for reflections when in high-quality mode ([GH-62362](https://github.com/godotengine/godot/pull/62362)).
+- Rendering: GLES3: Precompute Cubemap filter on the CPU to reduce GPU usage and improve performance ([GH-62364](https://github.com/godotengine/godot/pull/62364)).
+- Rendering: Vulkan: Fix DirectionalLight2D and PointLight2D shadows not rendering correctly ([GH-63057](https://github.com/godotengine/godot/pull/63057)).
+- Shaders: Add shader preprocessor and includes support ([GH-62513](https://github.com/godotengine/godot/pull/62513)).
+- Shaders: Implement shader uniform groups/subgroups ([GH-62972](https://github.com/godotengine/godot/pull/62972)).
+- Windows: Fix editor re-focus on debugger break ([GH-63286](https://github.com/godotengine/godot/pull/63286)).
+- XR: Add `--xr-mode` startup flag to override XR mode settings ([GH-63383](https://github.com/godotengine/godot/pull/63383)).
+
+This release is built from commit [82811367c](https://github.com/godotengine/godot/commit/82811367cb36d3124d4e8c0a9c4c7f82dc64f9e4).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha13/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. As soon as the .NET 6 port is ready to test, it will be included in dev snapshots.
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 13. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-14.md b/collections/_article/dev-snapshot-godot-4-0-alpha-14.md
new file mode 100644
index 0000000000..1b5b811d17
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-14.md
@@ -0,0 +1,86 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 14"
+excerpt: "We're working towards finalizing the feature set for 4.0 beta, reviewing many PRs which have been opened prior to our roadmap feature freeze announced a couple of weeks ago. While this process is ongoing, we'll keep releasing alpha builds so here's 4.0 alpha 14!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/62f/3cf/f69/62f3cff699de5885323719.png
+date: 2022-08-11 09:33:06
+---
+
+We're working towards finalizing the feature set for 4.0 beta, reviewing many PRs which have been opened prior to our roadmap [feature freeze](/article/godot-4-0-development-enters-feature-freeze) announced a couple of weeks ago. While this process is ongoing, we'll keep releasing alpha builds so here's **4.0 alpha 14**! Same deal as usual, lots of bugs fixed and more refactoring and feature work.
+
+Some noteworthy changes in this release:
+
+- Add turbulence/noise for ParticlesMaterial ([GH-55387](https://github.com/godotengine/godot/pull/55387)).
+- Add often used built-ins to spatial shaders (`NODE_POSITION_WORLD`, `CAMERA_POSITION_WORLD`, `CAMERA_DIRECTION_WORLD`, `NODE_POSITION_VIEW`) ([GH-63597](https://github.com/godotengine/godot/pull/63597)).
+- Improve usability of non-default values in the property inspector ([GH-63429](https://github.com/godotengine/godot/pull/63429)).
+- Modularize multiplayer, expose MultiplayerAPI to extensions ([GH-63049](https://github.com/godotengine/godot/pull/63049)).
+- Various enhancements and fixes to the Godot 3 to 4 converter ([GH-63887](https://github.com/godotengine/godot/pull/63887)).
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 14 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/82811367cb36d3124d4e8c0a9c4c7f82dc64f9e4...106b6805018649b13da9e9508e80611f62ed660a) for an overview of all changes since 4.0 alpha 13 (288 commits – excluding merge commits ― from 93 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- 3D: Add TorusMesh primitive ([GH-60843](https://github.com/godotengine/godot/pull/60843)).
+- Core: Use memory pools for some Variant types ([GH-61315](https://github.com/godotengine/godot/pull/61315)).
+- Core: Swap parameters of `ResourceSaver.save()` ([GH-61647](https://github.com/godotengine/godot/pull/61647)).
+- Core: Zero new Array items of trivial types on `resize()` (bindings only) ([GH-62709](https://github.com/godotengine/godot/pull/62709)).
+- Core: Remove Signal connect binds ([GH-63595](https://github.com/godotengine/godot/pull/63595)).
+- Core: Add support for command-line user arguments ([GH-63624](https://github.com/godotengine/godot/pull/63624)).
+- Doc: Document most Editor Settings in the class reference ([GH-48548](https://github.com/godotengine/godot/pull/48548), [GH-63870](https://github.com/godotengine/godot/pull/63870)).
+- Editor: Keep property values when extending script ([GH-43081](https://github.com/godotengine/godot/pull/43081)).
+- Editor: Add resource picker operation "Make Unique (Recursive)" ([GH-60567](https://github.com/godotengine/godot/pull/60567)).
+- Editor: Clean-up and improve array editing in the inspector ([GH-63266](https://github.com/godotengine/godot/pull/63266)).
+- Editor: Improve usability of non-default values in the property inspector ([GH-63429](https://github.com/godotengine/godot/pull/63429)).
+- Editor: Fix export properties appearing twice in the inspector ([GH-63712](https://github.com/godotengine/godot/pull/63712)).
+- Editor: Various enhancements and fixes to the Godot 3 to 4 converter ([GH-63887](https://github.com/godotengine/godot/pull/63887)).
+- GUI: Add `fit_to_longest_item` to OptionButton ([GH-59303](https://github.com/godotengine/godot/pull/59303)).
+- Input: Add support for multiple virtual keyboard types ([GH-58536](https://github.com/godotengine/godot/pull/58536)).
+- Navigation: Add more detailed Navigation debug visualization ([GH-62601](https://github.com/godotengine/godot/pull/62601)).
+- Networking: Modularize multiplayer, expose MultiplayerAPI to extensions ([GH-63049](https://github.com/godotengine/godot/pull/63049)).
+- Particles: Add turbulence/noise for ParticlesMaterial ([GH-55387](https://github.com/godotengine/godot/pull/55387)).
+- Particles: Use global coordinates for particles by default ([GH-61851](https://github.com/godotengine/godot/pull/61851)).
+- Physics: Add static methods to create RayQueryParameters ([GH-61918](https://github.com/godotengine/godot/pull/61918)).
+- Physics: Add ShapeCast3D node ([GH-63161](https://github.com/godotengine/godot/pull/63161)).
+- Porting: Implement `keep_screen_on` option for macOS and Windows ([GH-63882](https://github.com/godotengine/godot/pull/63882), [GH-63953](https://github.com/godotengine/godot/pull/63953)).
+- Shaders: Add often used built-ins to spatial shaders (`NODE_POSITION_WORLD`, `CAMERA_POSITION_WORLD`, `CAMERA_DIRECTION_WORLD`, `NODE_POSITION_VIEW`) ([GH-63597](https://github.com/godotengine/godot/pull/63597)).
+
+This release is built from commit [106b68050](https://github.com/godotengine/godot/commit/106b6805018649b13da9e9508e80611f62ed660a).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha14/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. As soon as the .NET 6 port is ready to test, it will be included in dev snapshots.
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 14. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-15.md b/collections/_article/dev-snapshot-godot-4-0-alpha-15.md
new file mode 100644
index 0000000000..f8cdea0b9c
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-15.md
@@ -0,0 +1,119 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 15"
+excerpt: "The past 2 weeks weeks have been BUSY! We've reviewed and merged a ton of Pull Requests to prepare for the imminent 4.0 beta release and make sure that we're as feature-complete as possible."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/630/e31/8a8/630e318a80525807224115.png
+date: 2022-08-30 16:26:29
+---
+
+We're working towards finalizing the feature set for 4.0 beta, reviewing many PRs which have been opened prior to our roadmap [feature freeze](/article/godot-4-0-development-enters-feature-freeze) announced a month ago. While this process is ongoing, we'll keep releasing alpha builds so here's **4.0 alpha 15**! Same deal as usual, lots of bugs fixed and more refactoring and feature work.
+
+Some noteworthy changes in this release:
+
+- C#: Merged .NET 6 support ([GH-64089](https://github.com/godotengine/godot/pull/64089)).
+ * This alpha doesn't include official builds with .NET 6 support yet, as we still have more work to do to enable this. For now, it's possible to compile it yourself from source, see [`modules/mono/README.md`](https://github.com/godotengine/godot/blob/master/modules/mono/README.md) for instructions.
+- Editor: Add per-scene UndoRedo ([GH-59564](https://github.com/godotengine/godot/pull/59564)).
+- Animation: Complete implementation of [Animation Retargeting](https://github.com/godotengine/godot-proposals/issues/4510)!
+- Rendering: Octahedral normal/tangent compression ([GH-60309](https://github.com/godotengine/godot/pull/60309)).
+- Core: A plethora of renames!
+ * The beta feature freeze will soon lock the API more or less in place, so contributors have been hard at work evaluating and merging or rejecting the last proposals for a more consistent and user-friendly API.
+ * For users of previous alphas, we don't always have compatibility code to ease transition. If you run into upgrade issues that you can't solve easily, please let us know so we can consider how much inter-alpha compatibility code we need to add.
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 15 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/106b6805018649b13da9e9508e80611f62ed660a...432b25d3649319517827dbf7bc275e81e0a2b92e) for an overview of all changes since 4.0 alpha 14 (362 commits – excluding merge commits ― from 73 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- 3D: Add line breaking support to the TextMesh ([GH-64243](https://github.com/godotengine/godot/pull/64243)).
+- 3D: Remove QuadMesh and add orientation parameter to PlaneMesh ([GH-64801](https://github.com/godotengine/godot/pull/64801)).
+- Animation: Complete implementation of [Animation Retargeting](https://github.com/godotengine/godot-proposals/issues/4510)!
+ * See the multiple linked PRs in that proposal for details.
+- Animation: Make `cubic_interpolate()` consider key time in animation ([GH-63602](https://github.com/godotengine/godot/pull/63602)).
+- Animation: Improve animation track optimizer ([GH-64132](https://github.com/godotengine/godot/pull/64132)).
+- Animation: Add bezier preset and refactor bezier editor ([GH-64647](https://github.com/godotengine/godot/pull/64647)).
+- Buildsystem: Unify bits, arch, and android_arch into env["arch"] ([GH-55778](https://github.com/godotengine/godot/pull/55778)).
+ * For people compiling from source, note that this changes the name of the compiled binary to use the architecture name as a suffix (e.g. `.x86_64.exe` instead of `.64.exe`).
+- C#: Merge .NET 6 branch with master ([GH-64089](https://github.com/godotengine/godot/pull/64089)).
+- C#: Add grouping attributes for exported properties ([GH-64742](https://github.com/godotengine/godot/pull/64742)).
+- Core: A plethora of renames!
+ * Rename `str2var` to `str_to_var` and similar ([GH-64367](https://github.com/godotengine/godot/pull/64367)).
+ * Renamed ParticlesMaterial to ParticlesProcessMaterial ([GH-64566](https://github.com/godotengine/godot/pull/64566)).
+ * Rename Position\* nodes to Marker\* ([GH-64370](https://github.com/godotengine/godot/pull/64370)).
+ * Rename Label & RichTextLabel `percent_visible` to `visible_ratio` ([GH-64665](https://github.com/godotengine/godot/pull/64665)).
+ * Rename PathFollow's offsets to `progress` & `progress_ratio` ([GH-64804](https://github.com/godotengine/godot/pull/64804)).
+ * Rename `hint_tooltip` to `tooltip_text` ([GH-64885](https://github.com/godotengine/godot/pull/64885)).
+ * Restore RigidBody2/3D, SoftBody names in physics ([GH-64894](https://github.com/godotengine/godot/pull/64894)).
+ * Rename JavaScript platform to Web ([GH-65023](https://github.com/godotengine/godot/pull/65023)).
+- Core: Increase the default project window size for better usability ([GH-55032](https://github.com/godotengine/godot/pull/55032)).
+- Core: Tweak the default project icon and convert it to SVG ([GH-58059](https://github.com/godotengine/godot/pull/58059), ([GH-64637](https://github.com/godotengine/godot/pull/64637)).
+- Core: Make JSON methods static ([GH-60515](https://github.com/godotengine/godot/pull/60515)).
+- Core: Add `%v` substitution for formatting vectors as strings ([GH-63728](https://github.com/godotengine/godot/pull/63728)).
+- Core: Replace Array return types with TypedArray ([GH-63959](https://github.com/godotengine/godot/pull/63959)). ([GH-64009](https://github.com/godotengine/godot/pull/64009)). ([GH-64082](https://github.com/godotengine/godot/pull/64082)).
+- Core: Make `property_*_revert` methods multilevel and expose them for scripting ([GH-64334](https://github.com/godotengine/godot/pull/64334)).
+- Core: Make `_validate_property` a multilevel method ([GH-64339](https://github.com/godotengine/godot/pull/64339)).
+- Core: Add startup benchmarking support ([GH-64610](https://github.com/godotengine/godot/pull/64610)).
+- Documentation: Add documentation for all annotations ([GH-64170](https://github.com/godotengine/godot/pull/64170)).
+- Editor: Add a way to filter nodes by type in scene tree dock ([GH-58377](https://github.com/godotengine/godot/pull/58377)).
+- Editor: Improve scene playing and reloading ([GH-58665](https://github.com/godotengine/godot/pull/58665)).
+- Editor: Add per-scene UndoRedo ([GH-59564](https://github.com/godotengine/godot/pull/59564)).
+- Editor: Disable editing properties in foreign resources ([GH-63282](https://github.com/godotengine/godot/pull/63282)).
+- Editor: Improve editor toolbar for Control nodes ([GH-63358](https://github.com/godotengine/godot/pull/63358)).
+- Editor: Improvements to shader editor ([GH-63582](https://github.com/godotengine/godot/pull/63582)).
+- Editor: Improve 3-to-4 converter performance and add option to set maximum line length to prevent freezes ([GH-64396](https://github.com/godotengine/godot/pull/64396)).
+- Editor: Add bezier preset and refactor bezier editor ([GH-64647](https://github.com/godotengine/godot/pull/64647)).
+- GUI: Add font LCD sub-pixel anti-aliasing support ([GH-64422](https://github.com/godotengine/godot/pull/64422)).
+- Linux: Fix some X11 issues with fullscreen and window focus ([GH-64969](https://github.com/godotengine/godot/pull/64969), [GH-64943](https://github.com/godotengine/godot/pull/64943)).
+- macOS: Implement MenuBar control to wrap Popup menus or native menu, use native menu for editor ([GH-63950](https://github.com/godotengine/godot/pull/63950)).
+- macOS: Simplify code signing options, add support for rcodesign tool for signing and notarization from Windows/Linux ([GH-64207](https://github.com/godotengine/godot/pull/64207)).
+- Particles: Add "Hide on Contact" collision mode to ParticlesMaterial ([GH-61238](https://github.com/godotengine/godot/pull/61238)).
+- Physics: Add collision weight to PhysicsBody2D/3D for penetrations which must be avoided ([GH-64343](https://github.com/godotengine/godot/pull/64343)).
+- Physics: Fix collision solving between world boundary and motion shape ([GH-64936](https://github.com/godotengine/godot/pull/64936)).
+- Rendering: Octahedral normal/tangent compression ([GH-60309](https://github.com/godotengine/godot/pull/60309)).
+ * Warning: This has the potential to break meshes imported in earlier alphas, we are still working on improving the compatibility code.
+- Rendering: Fix viewport sorting being wrong on parent/child relation ([GH-63091](https://github.com/godotengine/godot/pull/63091)).
+- Rendering: Add font LCD sub-pixel anti-aliasing support ([GH-64422](https://github.com/godotengine/godot/pull/64422)).
+- Shaders: Quality of life Visual Shaders updates ([GH-63999](https://github.com/godotengine/godot/pull/63999)).
+- Shaders: Implement custom non-trivial Visual Shader nodes ([GH-64248](https://github.com/godotengine/godot/pull/64248)).
+- VisualScript: Remove VisualScript module [as announced on the blog](https://godotengine.org/article/godot-4-will-discontinue-visual-scripting) ([GH-64822](https://github.com/godotengine/godot/pull/64822)).
+
+This release is built from commit [432b25d36](https://github.com/godotengine/godot/commit/432b25d3649319517827dbf7bc275e81e0a2b92e).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha15/) (GDScript, GDExtension).
+* .NET 6 support should be included in 4.0 beta 1. The initial support has been merged, but more work is required to make official builds easily. For now, it's possible to compile it yourself from source, see [`modules/mono/README.md`](https://github.com/godotengine/godot/blob/master/modules/mono/README.md) for instructions.
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+In this build specifically, we mistakenly compiled only the `arm64v8` libraries for the Android templates and editor builds. That's why the whole templates package ended up significantly smaller, and Android exports would not work on `armv7`, `x86` and `x86_64` architectures.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 15. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-16.md b/collections/_article/dev-snapshot-godot-4-0-alpha-16.md
new file mode 100644
index 0000000000..c0fb0413f6
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-16.md
@@ -0,0 +1,115 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 16"
+excerpt: "One more alpha build on the way to Godot 4.0 beta! As we're getting closer we're also iterating faster to make sure that we spot and fix the most problematic bugs ahead of the beta phase, to enable broader testing."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/631/8a4/10f/6318a410f1d2c423222075.png
+date: 2022-09-07 14:06:51
+---
+
+We're working towards finalizing the feature set for 4.0 beta, reviewing many PRs which have been opened prior to our roadmap [feature freeze](/article/godot-4-0-development-enters-feature-freeze) announced a month ago. While this process is ongoing, we'll keep releasing alpha builds so here's **4.0 alpha 16**! Same deal as usual, lots of bugs fixed and more refactoring and feature work.
+
+Some noteworthy changes in this release:
+
+- Re-enable support for Web exports using the OpenGL 3 / WebGL 2 renderer.
+ * This is the first alpha to include export templates for the Web platform again. The Web editor build is not functional yet.
+- Implement MSAA for 2D with Vulkan.
+- Implement physical light units in Vulkan renderers.
+- Implement navigation links via `NavigationLink2D`/`3D` nodes.
+- Re-enable per-pixel transparency support on Linux, macOS, and Windows.
+- Lots of fixes to theme propagation issues, both regressions in the previous alpha 15 and pre-existing bugs that it helped uncover. And various editor theme improvements.
+- Core: More renames!
+ * The beta feature freeze will soon lock the API more or less in place, so contributors have been hard at work evaluating and merging or rejecting the last proposals for a more consistent and user-friendly API.
+ * For users of previous alphas, we don't always have compatibility code to ease transition. If you run into upgrade issues that you can't solve easily, please let us know so we can consider how much inter-alpha compatibility code we need to add.
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 16 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/432b25d3649319517827dbf7bc275e81e0a2b92e...86dd3f312c4ff8ef8be04b9a210415d21f2ca269) for an overview of all changes since 4.0 alpha 15 (180 commits – excluding merge commits ― from 61 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- Core: More renames!
+ * Rename `or_lesser` range property hint to `or_less` ([GH-59589](https://github.com/godotengine/godot/pull/59589)).
+ * Rename Curve/Curve2D/Curve3D/Gradient `interpolate()` to `sample()` ([GH-63394](https://github.com/godotengine/godot/pull/63394)).
+ * Rename every instance of `caret_blink_speed` to `caret_blink_interval` ([GH-64361](https://github.com/godotengine/godot/pull/64361)).
+ * Rename CanvasItem `update()` to `queue_redraw()` ([GH-64377](https://github.com/godotengine/godot/pull/64377)).
+ * Rename AABB/Rect2/Rect2i `has_no_*` methods with `has_*` methods ([GH-64417](https://github.com/godotengine/godot/pull/64417)).
+ * Rename TileMap/GridMap `world_to_map()` and opposite to `local_to_map()` ([GH-64661](https://github.com/godotengine/godot/pull/64661)).
+ * Rename `uniform` to `parameter` across the engine ([GH-64952](https://github.com/godotengine/godot/pull/64952)).
+ * Rename ProgressBar `percent_visible` to `show_percentage` ([GH-65038](https://github.com/godotengine/godot/pull/65038)).
+ * Rename `Object` constant `CONNECT_ONESHOT` to `CONNECT_ONE_SHOT` ([GH-65197](https://github.com/godotengine/godot/pull/65197)).
+ * Rename `JavaScript` singleton to `JavaScriptBridge` ([GH-65239](https://github.com/godotengine/godot/pull/65239)).
+ * Rename `range_lerp()` to `remap()` ([GH-65361](https://github.com/godotengine/godot/pull/65361)).
+ * Rename PopupMenu `set`/`get_current_index()` to `set`/`get_focused_item()` ([GH-65423](https://github.com/godotengine/godot/pull/65423)).
+ * Rename `StreamPeerSSL` to `StreamPeerTLS` ([GH-65447](https://github.com/godotengine/godot/pull/65447)).
+ * Rename EditorInterface `get_editor_main_control()` to `get_editor_main_screen()` ([GH-65449](https://github.com/godotengine/godot/pull/65449)).
+ * Improve naming of theme properties throughout GUI code ([GH-65437](https://github.com/godotengine/godot/pull/65437)).
+- Buildsystem: Fix compilation database generation with MSVC ([GH-65440](https://github.com/godotengine/godot/pull/65440)).
+- C#: Create script instance of reloaded scripts even if they're not tools ([GH-65266](https://github.com/godotengine/godot/pull/65266)).
+- Core: Implement `AStarGrid2D` class with jump-point pathfinding ([GH-62717](https://github.com/godotengine/godot/pull/62717)).
+- Core: Improve null and object printing to avoid confusion with arrays ([GH-63411](https://github.com/godotengine/godot/pull/63411)).
+- Core: Add `String.to_{camel,pascal,snake}_case()` methods ([GH-63902](https://github.com/godotengine/godot/pull/63902)).
+- Core: Add `Dictionary.find_key()` method ([GH-63968](https://github.com/godotengine/godot/pull/63968)).
+- Core: Fix Basis constructor to use column vectors instead of rows ([GH-65124](https://github.com/godotengine/godot/pull/65124)).
+- Editor: Allow to change the Stop shortcut (F8) used at runtime ([GH-47744](https://github.com/godotengine/godot/pull/47744)).
+- Editor: Port Godot 3.5's VCS features to GDExtension ([GH-62157](https://github.com/godotengine/godot/pull/62157)).
+- Editor: Add background to TabContainer's tabbar and editor docks ([GH-65042](https://github.com/godotengine/godot/pull/65042)).
+- Editor: Mark Script button if it's tool in Scene Tree Editor ([GH-65088](https://github.com/godotengine/godot/pull/65088)).
+- Editor: Improve style and add contextual highlight to the editor launch pad ([GH-65089](https://github.com/godotengine/godot/pull/65089)).
+- Editor: Add support for scene/resource customization in export plugins ([GH-65135](https://github.com/godotengine/godot/pull/65135)).
+- Editor: Fix theme propagation in various parts of the editor ([GH-65210](https://github.com/godotengine/godot/pull/65210)).
+- GUI: Rework oriented containers to allow changing orientation on the fly ([GH-64724](https://github.com/godotengine/godot/pull/64724)).
+- GUI: Improve SplitContainer behavior, keeping asked split position whenever possible ([GH-65028](https://github.com/godotengine/godot/pull/65028)).
+- GUI: Add support for trimming edge spaces on line break ([GH-65073](https://github.com/godotengine/godot/pull/65073)).
+- GUI: Add `ThemeOwner` type for managing theme propagation and lookup ([GH-65250](https://github.com/godotengine/godot/pull/65250)).
+- GUI: Make AcceptDialog and derivatives utilize StyleBox fully ([GH-65446](https://github.com/godotengine/godot/pull/65446)).
+- Linux: Fix minimize/maximize not taking effect in X11 ([GH-65107](https://github.com/godotengine/godot/pull/65107)).
+- macOS: Handle accelerator and click events of the global menu items separately ([GH-65132](https://github.com/godotengine/godot/pull/65132), [GH-65242](https://github.com/godotengine/godot/pull/65242)).
+- Navigation: Implement navigation links via `NavigationLink2D`/`3D` nodes ([GH-63479](https://github.com/godotengine/godot/pull/63479)).
+- Navigation: Add debug visuals for GridMap cell edge connections ([GH-64173](https://github.com/godotengine/godot/pull/64173)).
+- Porting: Add support for system dark mode and accent color detection ([GH-65026](https://github.com/godotengine/godot/pull/65026), [GH-65115](https://github.com/godotengine/godot/pull/65115)).
+- Porting: Re-enable per-pixel transparency support on Linux, macOS, and Windows ([GH-65283](https://github.com/godotengine/godot/pull/65283)).
+- Rendering: Implement MSAA for 2D with Vulkan ([GH-63003](https://github.com/godotengine/godot/pull/63003)).
+- Rendering: Implement physical light units in Vulkan renderers ([GH-63751](https://github.com/godotengine/godot/pull/63751)).
+- Rendering: Extract render buffers and change it to a more generic solution ([GH-63901](https://github.com/godotengine/godot/pull/63901)).
+- Rendering: Fix rendering when using WebGL 2 ([GH-65442](https://github.com/godotengine/godot/pull/65442)).
+- Web: Require thread and RTTI, update templates name pattern ([GH-65094](https://github.com/godotengine/godot/pull/65094)).
+- Web: Re-enable Web exporter in non-dev mode ([GH-65464](https://github.com/godotengine/godot/pull/65464)).
+
+This release is built from commit [86dd3f312](https://github.com/godotengine/godot/commit/86dd3f312c4ff8ef8be04b9a210415d21f2ca269).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha16/) (GDScript, GDExtension).
+* .NET 6 support should be included in 4.0 beta 1. The initial support has been merged, but more work is required to make official builds easily. For now, it's possible to compile it yourself from source, see [`modules/mono/README.md`](https://github.com/godotengine/godot/blob/master/modules/mono/README.md) for instructions.
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 16. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-17.md b/collections/_article/dev-snapshot-godot-4-0-alpha-17.md
new file mode 100644
index 0000000000..a45f24c8e2
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-17.md
@@ -0,0 +1,93 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 17"
+excerpt: "We're getting prepared for the imminent release of Godot 4.0 beta 1, and to do so we're having a (last?) alpha 17 release to ensure that things work as best as we can reasonably expect before the beta phase."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/632/08f/42e/63208f42e7e15588239571.png
+date: 2022-09-13 14:10:13
+---
+
+We're getting prepared for the imminent release of Godot 4.0 beta 1, and to do so we're having a (last?) alpha 17 release to ensure that things work as best as we can reasonably expect before the beta phase.
+
+Some noteworthy changes in this release:
+
+- Add option to convert project from 3.x to 4.0 from the Project Manager ([GH-64927](https://github.com/godotengine/godot/pull/64927)).
+- Refactored Android input implementation with better handling of gestures ([GH-65434](https://github.com/godotengine/godot/pull/65434)).
+- .NET 6 support no longer requires libnethost, makes it easier to build([GH-65438](https://github.com/godotengine/godot/pull/65438)).
+- Allow images to be imported "for editor use" and respect editor settings ([GH-64938](https://github.com/godotengine/godot/pull/64938)).
+- Fix Ctrl/Cmd key remapping changes when moving from macOS to other platform ([GH-65241](https://github.com/godotengine/godot/pull/65241)).
+- Fix multiwindow support in GLES3 for X11, Windows and macOS ([GH-65727](https://github.com/godotengine/godot/pull/65727)).
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 17 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/86dd3f312c4ff8ef8be04b9a210415d21f2ca269...22a09fef5d56fc7c37d70118532509076ebd7b12) for an overview of all changes since 4.0 alpha 16 (90 commits – excluding merge commits ― from 34 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- Android: Clean-up and refactor the Android input implementation ([GH-65434](https://github.com/godotengine/godot/pull/65434)).
+- Android: Update the versioning logic for the Android editor ([GH-65682](https://github.com/godotengine/godot/pull/65682)).
+- Animation: Rework AnimatedTexture's `fps` into `speed_scale` ([GH-65188](https://github.com/godotengine/godot/pull/65188)).
+- Animation: Harmonize AnimatedSprite3D and its 2D counterparts ([GH-64155](https://github.com/godotengine/godot/pull/64155)).
+- Animation: Don't store the `frame` property of playing AnimatedSprite ([GH-65720](https://github.com/godotengine/godot/pull/65720)).
+- Buildsystem: Refactor LTO options with `lto=` ([GH-63288](https://github.com/godotengine/godot/pull/63288)).
+- C#: Replace libnethost dependency to find hostfxr ([GH-65438](https://github.com/godotengine/godot/pull/65438)).
+- Core: A few more renames:
+ * Rename and move `Node.raise()` to `CanvasItem.move_to_front()` ([GH-60108](https://github.com/godotengine/godot/pull/60108)).
+ * Rename SceneTree `change_scene()` and `change_scene_to()` to remove ambiguity ([GH-63596](https://github.com/godotengine/godot/pull/63596)).
+ * Rename "ssl" references to "tls" in methods and properties ([GH-65460](https://github.com/godotengine/godot/pull/65460)).
+- Core: Fix `Time.get_datetime_*` methods possibly return wrong time on day change ([GH-65509](https://github.com/godotengine/godot/pull/65509)).
+- Core: Allow negative indices in Node `move_child()` ([GH-65595](https://github.com/godotengine/godot/pull/65595)).
+- Core: Add ability to flag classes and methods as experimental or deprecated ([GH-64982](https://github.com/godotengine/godot/pull/64982)).
+- Editor: Fix editing of remote objects in the Inspector ([GH-63640](https://github.com/godotengine/godot/pull/63640), [GH-65520](https://github.com/godotengine/godot/pull/65520)).
+- Editor: Improve Scene Tree dock's node filter (allow multiple terms & more) ([GH-65352](https://github.com/godotengine/godot/pull/65352)).
+- Editor: Add option to convert project from 3.x to 4.0 from the Project Manager ([GH-64927](https://github.com/godotengine/godot/pull/64927)).
+- GDScript: Fix last modified time not being properly tracked when reloading scripts ([GH-65687](https://github.com/godotengine/godot/pull/65687)).
+- GUI: Allow SplitContainer to have a grab area larger than its visual grabber ([GH-65355](https://github.com/godotengine/godot/pull/65355)).
+- Import: Allow images to be imported "for editor use" and respect editor settings ([GH-64938](https://github.com/godotengine/godot/pull/64938)).
+- Input: Fix Ctrl/Cmd key remapping changes when moving from macOS to other platform ([GH-65241](https://github.com/godotengine/godot/pull/65241)).
+- Physics: Implement `Area[2D/3D].has_overlapping_[bodies/areas]` ([GH-65591](https://github.com/godotengine/godot/pull/65591)).
+- Rendering: Ensure sibling SubViewports are renderer from top to bottom ([GH-65579](https://github.com/godotengine/godot/pull/65579)).
+- Rendering: Properly scale SSR reflection based on metallic value for dielectric materials ([GH-65594](https://github.com/godotengine/godot/pull/65594)).
+- Rendering: Fix MSAA initialization in clustered forward renderer ([GH-65676](https://github.com/godotengine/godot/pull/65676)).
+- Rendering: Apply energy conservation to `LAMBERT_WRAP` and `TOON` diffuse modes by dividing by PI ([GH-65544](https://github.com/godotengine/godot/pull/65544)).
+- Rendering: Fix multiwindow support in GLES3 for X11, Windows and macOS ([GH-65727](https://github.com/godotengine/godot/pull/65727)).
+- Web: Various fixes and enhancements ([GH-65644](https://github.com/godotengine/godot/pull/65644)).
+- Windows: Enable ANSI escape code processing on Windows 10 and later ([GH-44118](https://github.com/godotengine/godot/pull/44118)).
+
+This release is built from commit [22a09fef5](https://github.com/godotengine/godot/commit/22a09fef5d56fc7c37d70118532509076ebd7b12).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha17/) (GDScript, GDExtension).
+* .NET 6 support should be included in 4.0 beta 1. The initial support has been merged, but more work is required to make official builds easily. For now, it's possible to compile it yourself from source, see [`modules/mono/README.md`](https://github.com/godotengine/godot/blob/master/modules/mono/README.md) for instructions.
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 17. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-2.md b/collections/_article/dev-snapshot-godot-4-0-alpha-2.md
new file mode 100644
index 0000000000..d659c1d4a7
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-2.md
@@ -0,0 +1,117 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 2"
+excerpt: "Every other week we'll publish a new alpha build for Godot 4.0! This is the second build, adding a number of new features and a ton of bug fixes that should be beneficial to both existing and new alpha testers!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/620/3d3/0e0/6203d30e0bda9846826159.jpg
+date: 2022-02-09 14:44:55
+---
+
+Two weeks ago we finally released [Godot 4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1) ― the first official [*alpha*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) build of our upcoming major milestone, enabling all interested users to try it out and report bugs, as well as provide feedback on the new features.
+
+We got [lots of bug reports](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+label%3Abug+milestone%3A4.0+) and many have been fixed already in these two weeks! To keep iterating on stabilizing the 4.0 branch, we're going to release new alpha builds every other week, so that testers can always have a recent version to test the latest changes.
+
+So here's Godot 4.0 alpha 2 with a great deal of fixes and new features!
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 2 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/31a7ddbf838572e50415159a56720275f9523262...79077e6c10db9e8e53a8134f72e326f3ffb9c51c) for an overview of all changes since 4.0 alpha 1 (260 commits – excluding merge commits ― from 48 contributors).
+
+Some of the most notables feature changes in this update are:
+
+### Multiplayer replication
+
+Built into the engine core we now have scene, spawn, and property replication over the network. This means the engine can now do a lot of the heavy lifting and get you started on the next multiplayer hit much quicker. You don't have to worry about manually keeping your scenes in sync across connected devices, even for players connecting mid-game. Long gone are boilerplate functions and remote calls just to change some property for every player in the session.
+
+Of course, you still can do all of it, or part of it, manually, depending on your needs. And you can mix and match — all of the additions are completely extendable, configurable, and replaceable. If you are still going to use RPCs, those received some love too and now have their own annotations in GDScript 2.0.
+
+See [GH-55950](https://github.com/godotengine/godot/pull/55950) for details.
+
+### 3D editor features
+
+We got a series of 3D editor usability improvements and bugfixes in this alpha, with the implementation of Blender-style shortcuts for 3D transformations ([GH-56543](https://github.com/godotengine/godot/pull/56543)), and various fixes for the 3D rotation gizmo ([GH-56946](https://github.com/godotengine/godot/pull/56946)). And there's more to come in the next alpha!
+
+### AudioStreamRandomizer
+
+The `AudioStreamRandomPitch` node has been renamed to `AudioStreamRandomizer` and extended with new functionalities ([GH-52592](https://github.com/godotengine/godot/pull/52592)):
+- Random or sequential playback of a selection of streams
+- Random pitch variation
+- Random volume variation
+
+### Other main changes
+
+- 2D: Add visibility to CanvasLayer ([GH-48006](https://github.com/godotengine/godot/pull/48006)).
+- 3D: Improvements and fixes to occluders ([GH-57627](https://github.com/godotengine/godot/pull/57627)).
+- Android: Fix plugin support for custom builds ([GH-57277](https://github.com/godotengine/godot/pull/57277)).
+- Audio: Rename AudioStreamRandomPitch to AudioStreamRandomizer and add additional randomization options ([GH-52592](https://github.com/godotengine/godot/pull/52592)).
+- Buildsystem: Add `fast_unsafe` option for faster rebuilds ([GH-57806](https://github.com/godotengine/godot/pull/57806)).
+- Core: Allow method binds to take Object subclasses as arguments ([GH-57205](https://github.com/godotengine/godot/pull/57205)).
+- Core: Add a signal to notify when children nodes enter or exit tree ([GH-57541](https://github.com/godotengine/godot/pull/57541)).
+- Core: Fix integer vector multiplication/division operators and bindings ([GH-57607](https://github.com/godotengine/godot/pull/57607)).
+- DisplayServer: Add support for getting native display, window, and view handles ([GH-56785](https://github.com/godotengine/godot/pull/56785)).
+- DisplayServer: Add method to get the screen refresh rate ([GH-57335](https://github.com/godotengine/godot/pull/57335)).
+- Editor: Fix UID conflict when duplicate resources in the FileSystem dock (temporary workaround) ([GH-55584](https://github.com/godotengine/godot/pull/55584)).
+- Editor: Implement Blender-style 3D transform tools ([GH-56543](https://github.com/godotengine/godot/pull/56543)).
+- Editor: Improve rotation in the 3D transform gizmo ([GH-56946](https://github.com/godotengine/godot/pull/56946)).
+- Editor: Fix content height fit and theme propagation for documentation tooltips ([GH-57547](https://github.com/godotengine/godot/pull/57547)).
+- Editor: Improve loading performance for projects with many script files ([GH-57766](https://github.com/godotengine/godot/pull/57766)).
+- GDScript: Fix some issues with enums ([GH-57591](https://github.com/godotengine/godot/pull/57591)).
+- GDScript: Implement RPC custom callable (`my_func.rpc()`) ([GH-53704](https://github.com/godotengine/godot/pull/53704)).
+- GUI: Enhancements and fixes for OptionButton and PopupMenu ([GH-57330](https://github.com/godotengine/godot/pull/57330), [GH-57692](https://github.com/godotengine/godot/pull/57692)).
+- GUI: Restore "snap controls to pixels" functionality ([GH-57481](https://github.com/godotengine/godot/pull/57481)).
+- GUI: Make scrolling to a tree item optionally center on that item ([GH-40140](https://github.com/godotengine/godot/pull/40140)).
+- Import: Speed up CVTT compression by lowering the default quality ([GH-49775](https://github.com/godotengine/godot/pull/49775)).
+- Input: Fix action exact match (also fixes `ui_*` focus keys) ([GH-54173](https://github.com/godotengine/godot/pull/54173)).
+- Input: Improve update rate and precision of mouse velocity ([GH-56754](https://github.com/godotengine/godot/pull/56754), [GH-56764](https://github.com/godotengine/godot/pull/56764)).
+- Input: Fix `mouse_over` not dropped when mouse leaves window ([GH-48156](https://github.com/godotengine/godot/pull/48156)).
+- Linux: Set window to focused when created ([GH-56548](https://github.com/godotengine/godot/pull/56548)).
+- Linux: Fix decoration reset when returning from fullscreen mode ([GH-57794](https://github.com/godotengine/godot/pull/57794)).
+- Networking: Multiplayer replication interface, spawner and sync nodes ([GH-55950](https://github.com/godotengine/godot/pull/55950)).
+- Physics: Revert applying the frame delta in `move_and_collide` and `test_move` ([GH-57275](https://github.com/godotengine/godot/pull/57275)).
+- Rendering: Add support for glow maps ([GH-54574](https://github.com/godotengine/godot/pull/54574)).
+- Rendering: Implement GPUParticles2D sub-emission support ([GH-56888](https://github.com/godotengine/godot/pull/56888)).
+- TileMap: Fix terrain painting when using empty terrain bits ([GH-57631](https://github.com/godotengine/godot/pull/57631)).
+- VideoPlayer: Fix "texture not initialized" error preventing Theora video from playing ([GH-57537](https://github.com/godotengine/godot/pull/57537)).
+- Windows: Fix wrong popup/tooltip offset in the editor ([GH-54645](https://github.com/godotengine/godot/pull/54645)).
+- Windows: Fix transient windows not working in the fullscreen mode ([GH-57341](https://github.com/godotengine/godot/pull/57341)).
+- Windows: Add support for handling network share paths ([GH-57116](https://github.com/godotengine/godot/pull/57116)).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha2/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. You'll get a chance to test it with later alpha releases!
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+). Below we list a few of them that may be important to a lot of users:
+
+* GDScript's rewrite has a [number of outstanding bugs](https://github.com/godotengine/godot/pulls?q=is%3Apr+is%3Aopen+label%3Abug+label%3Atopic%3Agdscript+milestone%3A4.0+) which may affect your testing.
+* The Vulkan Mobile backend has a lot of known bugs. We recommend testing rendering features with Vulkan Clustered for now.
+* AMD FSR implementation may not be working as expected ([GH-56173](https://github.com/godotengine/godot/issues/56173), [GH-56174](https://github.com/godotengine/godot/issues/56174)).
+* Particle trails work incorrectly with random lifetime ([GH-55842](https://github.com/godotengine/godot/issues/55842)).
+* There are of course [many more known issues](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+) as we're still in the alpha stage. We'll add more to this post if we see testers stumbling on them.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 2. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-3.md b/collections/_article/dev-snapshot-godot-4-0-alpha-3.md
new file mode 100644
index 0000000000..4ab55f6357
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-3.md
@@ -0,0 +1,77 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 3"
+excerpt: "We're continuing on our fortnightly release schedule for alpha snapshots of Godot 4.0 - this time with 4.0 alpha 3."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/621/561/e9c/621561e9c9799081922431.jpg
+date: 2022-02-22 10:20:00
+---
+
+We're continuing on our fortnightly release schedule for [*alpha*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) snapshots of Godot 4.0 - this time with **4.0 alpha 3**. See past alpha releases for details ([alpha 1](/article/dev-snapshot-godot-4-0-alpha-1), [alpha 2](/article/dev-snapshot-godot-4-0-alpha-2)).
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 3 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/79077e6c10db9e8e53a8134f72e326f3ffb9c51c...256069eaf00be2340259f896695014d92b1e22ed) for an overview of all changes since 4.0 alpha 2 (191 commits – excluding merge commits ― from 47 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- Animation: Allow the drawing and editing of all animation bezier curves ([GH-55030](https://github.com/godotengine/godot/pull/55030)).
+- Core: Fix Variant `Ref<>` assignment (fixes crashes in GDExtension) ([GH-57968](https://github.com/godotengine/godot/pull/57968)).
+- Core: Fix internal resource reuse in binary loader ([GH-58007](https://github.com/godotengine/godot/pull/58007)).
+- CSG: Fix exporting CSG nodes as glTF ([GH-57969](https://github.com/godotengine/godot/pull/57969)).
+- Crypto: Implement `OS::get_entropy` and `CryptoCore::RandomGenerator` ([GH-57887](https://github.com/godotengine/godot/pull/57887)).
+- Debugger: Profilers refactoring via extensible `EditorProfiler` class ([GH-57715](https://github.com/godotengine/godot/pull/57715)).
+- DisplayServer: Add exclusive window handling (on macOS and Windows) ([GH-56953](https://github.com/godotengine/godot/pull/56953)).
+- Editor: Reorganize inspector layout workflow for `Control` nodes ([GH-55157](https://github.com/godotengine/godot/pull/55157)).
+- Editor: Add `EditorPaginator` and unify array, dictionary, and inspector array editors ([GH-57866](https://github.com/godotengine/godot/pull/57866)).
+- Editor: Improved region-select in the 3D editor viewport ([GH-57847](https://github.com/godotengine/godot/pull/57847)).
+- GUI: Add an explicit way to remove a theme type ([GH-57973](https://github.com/godotengine/godot/pull/57973)).
+- Networking: Fix multi-peer path-only replication, optimize single peer object cache ([GH-58400](https://github.com/godotengine/godot/pull/58400)).
+- Rendering: Various bug fixes to both shaders and the Vulkan setup (including updating to [Vulkan SDK 1.3.204](https://github.com/godotengine/godot/pull/57980)).
+- Rendering: Various tweaks to default environment and lighting config to balance quality and performance
+- Rendering: Use prefiltered radiance for Sky high quality update mode ([GH-58177](https://github.com/godotengine/godot/pull/58177)).
+- Rendering: Add ParticleShader Userdata ([GH-58088](https://github.com/godotengine/godot/pull/58088)).
+- GUI: Add support to drag text to/from `RichTextLabel` ([GH-55207](https://github.com/godotengine/godot/pull/55207)).
+- Text: Add sub-pixel glyph positioning support ([GH-57877](https://github.com/godotengine/godot/pull/57877)).
+- Windows: Fix regression for drag and drop support ([GH-57961](https://github.com/godotengine/godot/pull/57961)).
+- Windows: Fix Vulkan driver crash on sub-window minimization ([GH-58236](https://github.com/godotengine/godot/pull/58236)).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha3/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. You'll get a chance to test it with later alpha releases!
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+). Below we list a few of them that may be important to a lot of users:
+
+* GDScript's rewrite has a [number of outstanding bugs](https://github.com/godotengine/godot/pulls?q=is%3Apr+is%3Aopen+label%3Abug+label%3Atopic%3Agdscript+milestone%3A4.0+) which may affect your testing.
+* The Vulkan Mobile backend has a lot of known bugs. We recommend testing rendering features with Vulkan Clustered for now.
+* AMD FSR implementation may not be working as expected ([GH-56173](https://github.com/godotengine/godot/issues/56173), [GH-56174](https://github.com/godotengine/godot/issues/56174)).
+* Particle trails work incorrectly with random lifetime ([GH-55842](https://github.com/godotengine/godot/issues/55842)).
+* There are of course [many more known issues](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+) as we're still in the alpha stage. We'll add more to this post if we see testers stumbling on them.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 3. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-4.md b/collections/_article/dev-snapshot-godot-4-0-alpha-4.md
new file mode 100644
index 0000000000..e34abfbc90
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-4.md
@@ -0,0 +1,84 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 4"
+excerpt: "Another couple of weeks, another alpha build for Godot 4.0!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/622/7d1/07d/6227d107d6474712525522.jpg
+date: 2022-03-08 21:56:58
+---
+
+We're continuing on our fortnightly release schedule for [*alpha*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) snapshots of Godot 4.0 - this time with **4.0 alpha 4**. See past alpha releases for details ([alpha 1](/article/dev-snapshot-godot-4-0-alpha-1), [alpha 2](/article/dev-snapshot-godot-4-0-alpha-2), [alpha 3](/article/dev-snapshot-godot-4-0-alpha-3)).
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 4 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/256069eaf00be2340259f896695014d92b1e22ed...f470979732513436124c01a465b22f948637b5fa) for an overview of all changes since 4.0 alpha 3 (158 commits – excluding merge commits ― from 45 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- 2D: Fix invisible CanvasItem visibility issue ([GH-58413](https://github.com/godotengine/godot/pull/58413)).
+- 2D: Fix GPUParticles2D emission offset in global coords ([GH-57538](https://github.com/godotengine/godot/pull/57538)).
+- C#: Various fixes to the documentation generator ([GH-58721](https://github.com/godotengine/godot/pull/58721)).
+- C#: Implement `Deconstruct` methods for vector types ([GH-58827](https://github.com/godotengine/godot/pull/58827)).
+- Core: Sync BVH implementation with the improvements from `3.x` ([GH-57630](https://github.com/godotengine/godot/pull/57630)).
+- DisplayServer: Improve popup window/menu handling ([GH-58490](https://github.com/godotengine/godot/pull/58490)).
+- Editor: Optimize settings changed notification ([GH-53839](https://github.com/godotengine/godot/pull/53839)).
+- GUI: Make `TabContainer` use `TabBar` internally ([GH-58687](https://github.com/godotengine/godot/pull/58687)).
+- GUI: Prevent AcceptDialog from taking over main window in editor ([GH-58282](https://github.com/godotengine/godot/pull/58282)).
+- GUI: Fix LineEdit and TextEdit carets disappearing at theme scales below 1.0 ([GH-58699](https://github.com/godotengine/godot/pull/58699)).
+- GDScript: Lots of fixes ([multiple PRs](https://github.com/godotengine/godot/pulls?q=is%3Apr+is%3Amerged+label%3Atopic%3Agdscript+merged%3A2022-02-24..2022-03-08+)).
+- Import: Rename `StreamTexture*` to `CompressedTexture*` ([GH-58788](https://github.com/godotengine/godot/pull/58788)).
+ * Note: You might need to delete your `.godot/imported` folder to force reimporting all your textures with the new class name.
+- macOS: Disable window redraw during resize, when rendering in the separate thread ([GH-58738](https://github.com/godotengine/godot/pull/58738)).
+- Physics: Rename CharacterBody2D/3D `motion_velocity` to `velocity` ([GH-58411](https://github.com/godotengine/godot/pull/58411)).
+- Physics: Add `linear_velocity` and `angular_velocity` to PhysicalBone3D ([GH-58717](https://github.com/godotengine/godot/pull/58717)).
+- Rendering: Use Filament specular model and parametrization ([GH-51716](https://github.com/godotengine/godot/pull/51716)).
+- Rendering: Use properly use non-perceptual roughness when filtering radiance ([GH-58418](https://github.com/godotengine/godot/pull/58418)).
+- Rendering: Fix shader compilation error with anisotropy ([GH-58419](https://github.com/godotengine/godot/pull/58419)).
+- Rendering: Implement distance fade properties in OmniLight3D and SpotLight3D ([GH-58512](https://github.com/godotengine/godot/pull/58512)).
+- Rendering: Add a UniformSet cache (refactoring) ([GH-58832](https://github.com/godotengine/godot/pull/58832)).
+- Visual Shader: Add few more input/output built-ins ([GH-58719](https://github.com/godotengine/godot/pull/58719)).
+- Visual Shader: Add varying support ([GH-58750](https://github.com/godotengine/godot/pull/58750)).
+- Windows: Fix borderless window flag toggle and restoring minimized borderless window ([GH-58420](https://github.com/godotengine/godot/pull/58420)).
+- XR: Add OpenXR support to the core ([GH-56394](https://github.com/godotengine/godot/pull/56394)).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha4/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. You'll get a chance to test it with later alpha releases!
+
+**Note:** The Windows builds are signed, but the certificate expired recently. We're working on having it renewed, this should be fixed in the next build.
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+). Below we list a few of them that may be important to a lot of users:
+
+* GDScript's rewrite has a [number of outstanding bugs](https://github.com/godotengine/godot/pulls?q=is%3Apr+is%3Aopen+label%3Abug+label%3Atopic%3Agdscript+milestone%3A4.0+) which may affect your testing.
+* The Vulkan Mobile backend has a lot of known bugs. We recommend testing rendering features with Vulkan Clustered for now.
+* AMD FSR implementation may not be working as expected ([GH-56173](https://github.com/godotengine/godot/issues/56173), [GH-56174](https://github.com/godotengine/godot/issues/56174)).
+* Particle trails work incorrectly with random lifetime ([GH-55842](https://github.com/godotengine/godot/issues/55842)).
+* There are of course [many more known issues](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+) as we're still in the alpha stage. We'll add more to this post if we see testers stumbling on them.
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 4. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-5.md b/collections/_article/dev-snapshot-godot-4-0-alpha-5.md
new file mode 100644
index 0000000000..0edcc6b45c
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-5.md
@@ -0,0 +1,81 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 5"
+excerpt: "Another couple of weeks, another alpha build for Godot 4.0!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/623/c78/5f2/623c785f207e4505667472.jpg
+date: 2022-03-24 13:55:46
+---
+
+We're continuing on our fortnightly release schedule for [*alpha*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) snapshots of Godot 4.0 - this time with **4.0 alpha 5**. See past alpha releases for details ([alpha 1](/article/dev-snapshot-godot-4-0-alpha-1), [2](/article/dev-snapshot-godot-4-0-alpha-2), [3](/article/dev-snapshot-godot-4-0-alpha-3), [4](/article/dev-snapshot-godot-4-0-alpha-4)).
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 5 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/f470979732513436124c01a465b22f948637b5fa...d7d528c15f0e858b52bb0f510ff47e65c2341de1) for an overview of all changes since 4.0 alpha 4 (199 commits – excluding merge commits ― from 57 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- 2D: Invert Camera2D zoom to make it intuitive ([GH-57392](https://github.com/godotengine/godot/pull/57392)).
+- 3D: Properly handle CSGShape parent and visibility updates ([GH-40814](https://github.com/godotengine/godot/pull/40814)).
+- Animation: Fix blend animation to solve TRS track bug & blend order inconsistency ([GH-57675](https://github.com/godotengine/godot/pull/57675)).
+- Core: Remove `VARIANT_ARG*` macros ([GH-58929](https://github.com/godotengine/godot/pull/58929)).
+- Core: Discern between `VIRTUAL` and `ABSTRACT` class bindings ([GH-58972](https://github.com/godotengine/godot/pull/58972)).
+- Core: Add binary MO translation file support ([GH-59276](https://github.com/godotengine/godot/pull/59276)).
+- Core: Add static method support to ClassDB ([GH-59314](https://github.com/godotengine/godot/pull/59314)).
+- Editor: Make property paths and categories translatable ([GH-58706](https://github.com/godotengine/godot/pull/58706)).
+- Export: Add "export console script" option for Linux, macOS, and Windows exports ([GH-58455](https://github.com/godotengine/godot/pull/58455)).
+- GDExtension: Unify TextServer built-in module and GDExtension code ([GH-58233](https://github.com/godotengine/godot/pull/58233)).
+- GDExtension: Implement extension export plugin ([GH-58973](https://github.com/godotengine/godot/pull/58973)).
+- GDExtension: Create extension classes for PhysicsServer3D ([GH-59140](https://github.com/godotengine/godot/pull/59140)).
+- GUI: Rename Control's Rect properties to exclude `rect_` part ([GH-57095](https://github.com/godotengine/godot/pull/57095)).
+- GUI: Add RichTextLabel `hint` tag ([GH-58394](https://github.com/godotengine/godot/pull/58394)).
+- GUI: Add options to embolden and transform font outlines to simulate bold and italic typefaces ([GH-59013](https://github.com/godotengine/godot/pull/59013)).
+- GUI: Add brotli decoder and WOFF2 support ([GH-59275](https://github.com/godotengine/godot/pull/59275)).
+- Import: ResourceImporterWAV: Allow configuring loop mode on import ([GH-59170](https://github.com/godotengine/godot/pull/59170)).
+- Input: Ensure minimum modifiers are pressed when matching actions ([GH-59343](https://github.com/godotengine/godot/pull/59343)).
+- macOS: Add missing global menu features ([GH-59410](https://github.com/godotengine/godot/pull/59410)).
+- Particles: Sphere emission shape emitting from the volume ([GH-55399](https://github.com/godotengine/godot/pull/55399)).
+- Rendering: Add multiview support to the clustered forward renderer ([GH-49092](https://github.com/godotengine/godot/pull/49092)).
+- Rendering: Add sky cover texture for ProceduralSkyMaterial ([GH-58018](https://github.com/godotengine/godot/pull/58018)).
+- Visual Shader: Add `_get_func_code`/`_is_available` virtual functions to custom nodes ([GH-57769](https://github.com/godotengine/godot/pull/57769)).
+- Windows: Reenable `DisplayServer::window_set_vsync_mode` on Windows ([GH-59106](https://github.com/godotengine/godot/pull/59106)).
+
+This release is built from commit [d7d528c15](https://github.com/godotengine/godot/commit/d7d528c15f0e858b52bb0f510ff47e65c2341de1).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha5/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. You'll get a chance to test it with later alpha releases!
+
+**Note:** The Windows builds are signed, but the certificate expired recently. We're working on having it renewed, this should be fixed in the next build.
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 5. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-6.md b/collections/_article/dev-snapshot-godot-4-0-alpha-6.md
new file mode 100644
index 0000000000..8c031aec4a
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-6.md
@@ -0,0 +1,78 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 6"
+excerpt: "Another alpha build for Godot 4.0 with its share of bugs fixes, as well as a few nifty features such as new .blend and FBX importers, lots of noise features with FastNoiseLite, more GDExtension features, input fixes, and more."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/624/da1/f3c/624da1f3cff67769282589.jpg
+date: 2022-04-06 14:23:07
+---
+
+We're continuing on our fortnightly release schedule for [*alpha*](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) snapshots of Godot 4.0 - this time with **4.0 alpha 6**. See past alpha releases for details ([alpha 1](/article/dev-snapshot-godot-4-0-alpha-1), [2](/article/dev-snapshot-godot-4-0-alpha-2), [3](/article/dev-snapshot-godot-4-0-alpha-3), [4](/article/dev-snapshot-godot-4-0-alpha-4), [5](/article/dev-snapshot-godot-4-0-alpha-5)).
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 6 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/d7d528c15f0e858b52bb0f510ff47e65c2341de1...e4f0fc50f79336cf76beec40e5e8e5164b288714) for an overview of all changes since 4.0 alpha 5 (166 commits – excluding merge commits ― from 55 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- Android: Initial port of the Godot editor ([GH-58160](https://github.com/godotengine/godot/pull/58160)).
+- Android: Fix flickering issues with low processor mode ([GH-59607](https://github.com/godotengine/godot/pull/59607)).
+- Core: Refactor Object metadata ([GH-59452](https://github.com/godotengine/godot/pull/59452)).
+- Core: Add PortableCompressedTexture ([GH-59478](https://github.com/godotengine/godot/pull/59478)).
+- Editor: Add property name style toggle to Inspector ([GH-59426](https://github.com/godotengine/godot/pull/59426)).
+- GDExtension: Add support for creating/binding Script Languages ([GH-59553](https://github.com/godotengine/godot/pull/59553)).
+- GDScript: Improve sorting of code completion options ([GH-59633](https://github.com/godotengine/godot/pull/59633)).
+- GUI: Convert the editor and default theme fonts to WOFF2 format to save space ([GH-59510](https://github.com/godotengine/godot/pull/59510)).
+- Import: Fix blend shape mask array enforcement in importers ([GH-59489](https://github.com/godotengine/godot/pull/59489)).
+- Import: New .blend files importer using Blender ([GH-54886](https://github.com/godotengine/godot/pull/54886), [GH-59764](https://github.com/godotengine/godot/pull/59764)).
+ * This requires Blender 3.0 or later.
+- Import: New FBX importer using FBX2glTF converter ([GH-59653](https://github.com/godotengine/godot/pull/59653)).
+ * This requires configuring a path to the FBX2glTF command line tool. We recommend using the latest release from the [V-Sekai fork](https://github.com/V-Sekai/FBX2glTF/releases) for best results.
+- Input: Fix Unicode character input with Alt / Ctrl modifiers ([GH-56695](https://github.com/godotengine/godot/pull/56695)).
+- Noise: Add more noise types, noise color ramp, replace OpenSimplexNoise with FastNoiseLite ([GH-56718](https://github.com/godotengine/godot/pull/56718)).
+- Rendering: Add color pass flags to Forward Clustered renderer ([GH-59205](https://github.com/godotengine/godot/pull/59205)).
+- Rendering: Ongoing refactoring work ([GH-59385](https://github.com/godotengine/godot/pull/59385)). ([GH-59807](https://github.com/godotengine/godot/pull/59807)).
+- XR: Add action map editor for OpenXR ([GH-59513](https://github.com/godotengine/godot/pull/59513)).
+
+This release is built from commit [e4f0fc50f](https://github.com/godotengine/godot/commit/e4f0fc50f79336cf76beec40e5e8e5164b288714).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha6/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. You'll get a chance to test it with later alpha releases!
+
+**Note:** The Windows builds are signed, but the certificate expired recently. We're working on having it renewed, this should be fixed in future builds.
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+- [**Cannot create folders in the editor's FileSystem dock**](https://github.com/godotengine/godot/issues/59956)
+ - As a workaround, create folders using the operating system's file manager.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 6. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-7.md b/collections/_article/dev-snapshot-godot-4-0-alpha-7.md
new file mode 100644
index 0000000000..180b70205c
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-7.md
@@ -0,0 +1,83 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 7"
+excerpt: "This new 4.0 alpha 7 comes with one week delay on our every-other-week release schedule, but that means it got time for even more features and bug fixes to be finalized, reviewed and merged."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: ["/storage/app/uploads/public/626/a9a/840/626a9a840b793757439120.jpg"]
+date: 2022-04-28 13:40:17
+---
+
+This new **4.0 alpha 7** comes with one week delay on our every-other-week release schedule, since I was taking some time off :) But that means it got time for even more features and bug fixes to be finalized, reviewed and merged. See past alpha releases for details ([alpha 1](/article/dev-snapshot-godot-4-0-alpha-1), [2](/article/dev-snapshot-godot-4-0-alpha-2), [3](/article/dev-snapshot-godot-4-0-alpha-3), [4](/article/dev-snapshot-godot-4-0-alpha-4), [5](/article/dev-snapshot-godot-4-0-alpha-5), [6](/article/dev-snapshot-godot-4-0-alpha-6)).
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 7 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/e4f0fc50f79336cf76beec40e5e8e5164b288714...3e9ead05f2e87e46b5982cc9a140e172ee98c227) for an overview of all changes since 4.0 alpha 6 (192 commits – excluding merge commits ― from 65 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- Animation: Implement animation libraries ([GH-59980](https://github.com/godotengine/godot/pull/59980)).
+- Animation: Import scenes as AnimationLibrary ([GH-60177](https://github.com/godotengine/godot/pull/60177)).
+- Animation: Make `Tween.interpolate_value()` static ([GH-60331](https://github.com/godotengine/godot/pull/60331)).
+- Core: Remove argument name strings from release builds ([GH-59932](https://github.com/godotengine/godot/pull/59932)).
+- Core: Fix loading binary resources with `float=64` ([GH-59324](https://github.com/godotengine/godot/pull/59324)).
+- Core: Make FileAccess and DirAccess classes reference counted ([GH-59440](https://github.com/godotengine/godot/pull/59440)).
+- Core: Implement scene unique nodes ([GH-60298](https://github.com/godotengine/godot/pull/60298)).
+- Core: Re-add Node `find_node` as `find_child` ([GH-60511](https://github.com/godotengine/godot/pull/60511)).
+- Editor: Action Map Editor fixes and improvements ([GH-59514](https://github.com/godotengine/godot/pull/59514)).
+- Editor: Redesign InputEvent editor and fix `Window.popup_centered()` rect calculation ([GH-60081](https://github.com/godotengine/godot/pull/60081)).
+- Editor: Add Gradient resource preview generator ([GH-60395](https://github.com/godotengine/godot/pull/60395)).
+- Editor: Add a BitMap preview to the inspector ([GH-60008](https://github.com/godotengine/godot/pull/60008)).
+- GDScript: Add support for static method calls in native types ([GH-59947](https://github.com/godotengine/godot/pull/59947)).
+- GDScript: Allow using `self` in lambdas ([GH-60396](https://github.com/godotengine/godot/pull/60396)).
+- GUI: Implement Label3D node ([GH-60386](https://github.com/godotengine/godot/pull/60386)).
+- GUI: Add MSDF and mipmap generation project settings for the default font ([GH-60513](https://github.com/godotengine/godot/pull/60513)).
+- GUI: RichTextLabel: Improve table cell selection ([GH-57871](https://github.com/godotengine/godot/pull/57871)).
+- GUI: RichTextLabel: Add context menu ([GH-60170](https://github.com/godotengine/godot/pull/60170)).
+- Navigation: Fix NavMesh baking on thread ([GH-59995](https://github.com/godotengine/godot/pull/59995)).
+- Navigation: Use ThreadWorkPool instead of `thread_process_array` in NavMap ([GH-60359](https://github.com/godotengine/godot/pull/60359)).
+- Networking: Make TCP poll explicit, drop `is_connected_to_host` ([GH-59582](https://github.com/godotengine/godot/pull/59582)).
+- Networking: Allow branch-specific MultiplayerAPIs ([GH-57647](https://github.com/godotengine/godot/pull/57647)).
+- Noise: Restructure and refine the noise module ([GH-60312](https://github.com/godotengine/godot/pull/60312)).
+- Rendering: More work on splitting up RendererStorage ([GH-59984](https://github.com/godotengine/godot/pull/59984)).
+- Rendering: Restore antialiasing for `draw_line` ([GH-60171](https://github.com/godotengine/godot/pull/60171)).
+- VisualShader: Add Vector4 support to vector operation nodes ([GH-60175](https://github.com/godotengine/godot/pull/60175)).
+
+This release is built from commit [3e9ead05f](https://github.com/godotengine/godot/commit/3e9ead05f2e87e46b5982cc9a140e172ee98c227).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha7/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. You'll get a chance to test it with later alpha releases!
+
+**Note:** The Windows builds are signed, but the certificate expired recently. We're working on having it renewed, this should be fixed in future builds.
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 7. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-8.md b/collections/_article/dev-snapshot-godot-4-0-alpha-8.md
new file mode 100644
index 0000000000..2dccb3dc5b
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-8.md
@@ -0,0 +1,80 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 8"
+excerpt: "Another fortnight, another alpha snapshot of the development branch, this time with 4.0 alpha 8! It includes notably Text-to-Speech support on all platforms, and a refactoring of the module/extension initialization levels to allow more flexibility for third-party code."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/627/cb8/9e9/627cb89e91286901016326.jpg
+date: 2022-05-12 10:53:54
+---
+
+Another fortnight, another alpha snapshot of the development branch, this time with **4.0 alpha 8**!
+It includes notably Text-to-Speech support on all platforms (as a feature for games/applications, the Godot editor itself doesn't make use of it for now), and a refactoring of the module/extension initialization levels to allow more flexibility for third-party code.
+
+See past alpha releases for details ([alpha 1](/article/dev-snapshot-godot-4-0-alpha-1), [2](/article/dev-snapshot-godot-4-0-alpha-2), [3](/article/dev-snapshot-godot-4-0-alpha-3), [4](/article/dev-snapshot-godot-4-0-alpha-4), [5](/article/dev-snapshot-godot-4-0-alpha-5), [6](/article/dev-snapshot-godot-4-0-alpha-6), [7](/article/dev-snapshot-godot-4-0-alpha-7)).
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 8 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/3e9ead05f2e87e46b5982cc9a140e172ee98c227...917fd65748957304c987414c63d54ef4f6972394) for an overview of all changes since 4.0 alpha 7 (157 commits – excluding merge commits ― from 55 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- Audio: Implement text-to-speech support on all platforms ([GH-56192](https://github.com/godotengine/godot/pull/56192)).
+- Buildsystem: Upgraded official build system to newer toolchains ([build-containers#104](https://github.com/godotengine/build-containers/pull/104)):
+ * Windows: MinGW GCC 11.2.1 and binutils 2.37.
+ * macOS/iOS: LLVM 14 - *Edit:* Seems like macOS doesn't like LLVM 14, it's crashing.
+- Core: Make `{call,set,notify}_group()` immediate by default ([GH-51591](https://github.com/godotengine/godot/pull/51591)).
+- Core: Implement placeholder assets ([GH-60583](https://github.com/godotengine/godot/pull/60583)).
+- Core: Implement missing Node & Resource placeholders ([GH-60597](https://github.com/godotengine/godot/pull/60597)).
+- Core: Quote strings in arrays and dictionaries when printing ([GH-60609](https://github.com/godotengine/godot/pull/60609)).
+- Core: Refactor module initialization ([GH-60723](https://github.com/godotengine/godot/pull/60723)).
+- Core: Crash handler: Use `print_error` to include backtrace in logs ([GH-60782](https://github.com/godotengine/godot/pull/60782)).
+- Editor: Add Copy UID option to filesystem dock ([GH-60707](https://github.com/godotengine/godot/pull/60707)).
+- Export: Improve embedded PCK loading and exporting ([GH-56093](https://github.com/godotengine/godot/pull/56093)).
+- GUI: Add more fill modes to ProgressBar ([GH-46208](https://github.com/godotengine/godot/pull/46208)).
+- GUI: Add a Skew property to StyleBoxFlat ([GH-58599](https://github.com/godotengine/godot/pull/58599)).
+- Linux: Read and store joypad events in a separate thread ([GH-56125](https://github.com/godotengine/godot/pull/56125)).
+- Rendering: Add dithering to ProceduralSkyMaterial to combat banding ([GH-60070](https://github.com/godotengine/godot/pull/60070)).
+- Rendering: A lot of refactoring work behind the scenes, and work in progress on OpenGL 3 (not usable yet)
+
+This release is built from commit [917fd657](https://github.com/godotengine/godot/commit/917fd65748957304c987414c63d54ef4f6972394).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha8/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. You'll get a chance to test it with later alpha releases!
+
+**Note:** The Windows builds are signed, but the certificate expired recently. We're still working on having it renewed.
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+- macOS builds in 4.0 alpha 8 are crashing on Apple M1, we're investigating why. In the meantime, you can keep using [4.0 alpha 7](/article/dev-snapshot-godot-4-0-alpha-7) which should work fine.
+ * *Edit:* A new macOS editor binary has been uploaded which should work fine. Export templates for ARM64 might still be broken.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 8. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-alpha-9.md b/collections/_article/dev-snapshot-godot-4-0-alpha-9.md
new file mode 100644
index 0000000000..6cda606143
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-alpha-9.md
@@ -0,0 +1,81 @@
+---
+title: "Dev snapshot: Godot 4.0 alpha 9"
+excerpt: "New alpha build for Godot 4.0, fresh from the Godot Sprint in Barcelona where some core contributors are finally meeting IRL. Lots of editor, core and rendering improvements with an early version of the OpenGL 3D renderer!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/629/89b/e37/62989be37c03a908985630.jpg
+date: 2022-06-02 11:15:51
+---
+
+Straight out of the [Godot Sprint](/article/godot-sprint-and-user-meeting-barcelona-june-2022) in Barcelona, here's another alpha snapshot of the development branch, this time with **4.0 alpha 9**! See past alpha releases for details ([alpha 1](/article/dev-snapshot-godot-4-0-alpha-1), [2](/article/dev-snapshot-godot-4-0-alpha-2), [3](/article/dev-snapshot-godot-4-0-alpha-3), [4](/article/dev-snapshot-godot-4-0-alpha-4), [5](/article/dev-snapshot-godot-4-0-alpha-5), [6](/article/dev-snapshot-godot-4-0-alpha-6), [7](/article/dev-snapshot-godot-4-0-alpha-7), [8](/article/dev-snapshot-godot-4-0-alpha-8)).
+
+Be aware that during the alpha stage the engine is still not feature-complete or stable. **There will likely be breaking changes between this release and the first [*beta* release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta).** Only the beta will mark the so-called "feature freeze".
+
+As such, we do not recommend porting existing projects to this and other upcoming alpha releases unless you are prepared to do it again to fix future incompatibilities. However, if you can port some existing projects and demos to the new version, that may provide a lot of useful information about critical issues still left to fix.
+
+Most importantly: **Make backups before opening any existing project in Godot 4.0 alpha builds.** There is no easy way back once a project has been (partially) converted.
+
+[Jump to the **Downloads** section.](#downloads)
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 alpha in general, have a look at the detailed release notes for [4.0 alpha 1](/article/dev-snapshot-godot-4-0-alpha-1). In this alpha 9 blog post, we will only cover the main changes since the previous alpha release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/917fd65748957304c987414c63d54ef4f6972394...d9daf3869f27e2afdacb2744168052ce0d4ae43b) for an overview of all changes since 4.0 alpha 8 (255 commits – excluding merge commits ― from 60 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- 3D: Implement TextMesh resource ([GH-60507](https://github.com/godotengine/godot/pull/60507)).
+- Android/iOS: Increase compiler optimization when using `target=release` ([GH-60358](https://github.com/godotengine/godot/pull/60358)).
+- Android: Fix the logic to restart the Godot application ([GH-61333](https://github.com/godotengine/godot/pull/61333)).
+- Core: Add a new HashMap implementation ([GH-60881](https://github.com/godotengine/godot/pull/60881)).
+- Core: Replace most uses of Map by new HashMap ([GH-60999](https://github.com/godotengine/godot/pull/60999)).
+- Core: Implement read-only dictionaries and arrays ([GH-61087](https://github.com/godotengine/godot/pull/61087), [GH-61127](https://github.com/godotengine/godot/pull/61127)).
+- Core: Add a new HashSet template ([GH-61194](https://github.com/godotengine/godot/pull/61194)).
+- Core: Change Server initialization order ([GH-61436](https://github.com/godotengine/godot/pull/61436)).
+- Editor: Exposes the Curve, Curve2D and Curve3D points in the inspector ([GH-58023](https://github.com/godotengine/godot/pull/58023)).
+- Editor: Improve the VisualShader/VisualScript editor UI ([GH-60463](https://github.com/godotengine/godot/pull/60463)).
+- Editor: Improve StyleBox preview ([GH-61337](https://github.com/godotengine/godot/pull/61337)).
+- Editor: Reorganize Region Rect editor ([GH-61342](https://github.com/godotengine/godot/pull/61342)).
+- Editor: Improve style of inspector buttons ([GH-61387](https://github.com/godotengine/godot/pull/61387)).
+- Editor: Improve TextureRegion editor ([GH-61429](https://github.com/godotengine/godot/pull/61429)).
+- GDScript: Add enum values (Ignore, Warn, Error) to GDScript warnings ([GH-59943](https://github.com/godotengine/godot/pull/59943)).
+- GDScript: Implement exponential operator (`**`) to GDScript/Expressions ([GH-58873](https://github.com/godotengine/godot/pull/58873)).
+- GDScript: Fix signal completion in GDScript editor ([GH-60970](https://github.com/godotengine/godot/pull/60970)).
+- GDScript: Fix stack manipulation for `await` ([GH-61003](https://github.com/godotengine/godot/pull/61003), [GH-61463](https://github.com/godotengine/godot/pull/61463)).
+- GDScript: A few fixes for lambda issues ([GH-61345](https://github.com/godotengine/godot/pull/61345)).
+- GDScript: Support `%` in shorthand for `get_node` ([GH-61440](https://github.com/godotengine/godot/pull/61440)).
+- GUI: Add ALT NUM+ {hex code} character input support for LineEdit, TextEdit and CodeEdit ([GH-55441](https://github.com/godotengine/godot/pull/55441)).
+- Rendering: Lots of progress on OpenGL3 with initial 3D support
+- Rendering: Fix normal and tangent blending in blend shapes ([GH-61217](https://github.com/godotengine/godot/pull/61217)).
+- Rendering: Use IGN instead of white noise for sky dithering ([GH-60641](https://github.com/godotengine/godot/pull/60641)).
+- Shaders: Rename `hint_albedo`, `hint_white`/`black` in shaders ([GH-60803](https://github.com/godotengine/godot/pull/60803)).
+- Windows: Improve OpenGL3 driver support, including multiple windows ([GH-60894](https://github.com/godotengine/godot/pull/60894)).
+
+This release is built from commit [d9daf3869](https://github.com/godotengine/godot/commit/d9daf3869f27e2afdacb2744168052ce0d4ae43b).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/alpha9/) (GDScript, GDExtension, VisualScript).
+* Mono builds are currently not available as our focus is on porting to .NET 6. You'll get a chance to test it with later alpha releases!
+
+## Known issues
+
+As we are still in the alpha phase of development, there are still many issues to fix, some of which have already been reported and are being worked on.
+
+See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with 4.0 alpha 9. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-beta-1.md b/collections/_article/dev-snapshot-godot-4-0-beta-1.md
new file mode 100644
index 0000000000..b8b972f8c1
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-beta-1.md
@@ -0,0 +1,283 @@
+---
+title: "The next big step: Godot 4.0 reaches Beta"
+excerpt: "It has been a long road to Godot 4.0 with 17 alpha builds distributed in 2022, and continuous development effort since 2019. We aren’t done yet, but today marks a major milestone on the road to Godot 4.0: the first beta is out!"
+categories: ["progress-report", "pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/632/355/534/632355534b2d7687276315.jpg
+image_caption_title: Forest scene by Wojtek Pe
+date: 2022-09-15 17:25:54
+---
+
+It has been a long road to Godot 4.0 with 17 alpha builds distributed in 2022, and continuous development effort since 2019. We aren’t done yet, but today marks a major milestone on the road to Godot 4.0.
+
+Today we are pleased to announce that the first beta for the much-anticipated release of Godot 4.0 is now ready and available for download. We know that everyone is eager to get their hands on Godot 4.0 and this is a major step in getting there. Like in previous release cycles, a beta release means that we are happy with the features that have been included and we don’t plan on adding any major new features before release (except for a few that have been discussed and planned in advance). The goal between now and the stable release will be to continue polishing the current feature set by fixing bugs and optimizing performance.
+
+As contributors, you will find that the core team is spending much less time evaluating new feature PRs and feature proposals and is instead diverting their attention to the many bugs that need to be fixed. We ask that everyone join us in that – the sooner we fix the blocking bugs and release 4.0, the sooner we can start the next feature development cycle for 4.1!
+
+As users, please report all bugs that you encounter and provide as much detail as you can (including screenshots, code, and where possible, a minimal reproduction project). We don’t recommend migrating large projects to the Godot 4.0 beta just yet as we expect the engine to be unstable until we have more testing done. If you do migrate, make sure to save a backup before converting your project. The beta comes with a work-in-progress conversion tool that does part of the conversion work from 3.x to 4.0, but a lot of manual work is still to be expected. On the other hand, now is definitely the time to jump into Godot 4.0 with a *new project* to test out exciting new features and provide valuable feedback to the development team before 4.0 is set in stone.
+
+On that note, feel free to head to the [**Downloads section**](#downloads) and download 4.0 beta 1 now! Or continue reading to take a look at what's new.
+
+*The illustration picture for this article is a screenshot of [Wojtek Pe](https://twitter.com/wojtekpil)'s Forest scene demo made in Godot 4.0 alpha 6. [Check out the video!](https://www.youtube.com/watch?v=1ho6tbxGt4c)*
+
+## What's new? {#whats-new}
+
+In this article we highlight some of the new features we are most excited about. You may have already seen some of this content on social media, in blog posts, or in alpha release notes. There is way too much to include here, so please take a look yourself and have fun!
+
+We also reached out to content creators from the Godot community and got two very nice videos from [FinePointCGI](https://www.youtube.com/c/FinePointCGI) and [Bramwell](https://www.youtube.com/c/BramwellWilliams) covering what Godot 4.0 beta is, and some of the most important changes. Check them out!
+
+
+
+
+
+
+
+## Core {#core}
+
+Throughout the last two years the core of the engine has seen a lot of improvements and refactoring to bring it to the next level in terms of maintainability, reliability, and performance. The ugly reality of software development is that legacy code builds up really quick and keeping it up to date, ready for new challenges that arise several years down the line takes a lot of effort. So we took the opportunity of the new major version of the engine to break stuff to make it better, and you'll see it in every other part of this blog post.
+
+Internal changes are hard to showcase, but if you are curious to learn a bit more, Godot's lead developer Juan Linietsky ([reduz](https://github.com/reduz)) has covered some of the bigger improvements made in the engine core in several blog posts last year, check them out: [1](https://godotengine.org/article/core-refactoring-progress-report-1), [2](https://godotengine.org/article/core-refactoring-progress-report-2). And there's been a lot more since then in all areas of the engine — we can't state enough how much of Godot 4.0's development boils down to refactoring and rewriting existing features to make them a much better base to build on. We're thinking forward, and preparing the ground for frequent 4.x releases which will let us improve Godot at a much faster pace thanks to all the foundational work we've been doing for 4.0.
+
+One of the most important additions not covered by those articles is the introduction of unit testing to the engine components. While our existing integration testing can highlight critical issues preventing the code from compiling or running, it does little to ensure the stability of the engine. With a decent [unit test coverage](https://github.com/godotengine/godot/issues/43440), we should be able to better catch logical regression or changes accidentally breaking the engine's systems.
+
+## Rendering {#rendering}
+
+We know many users are excited about the coming improvements to 2D and 3D rendering in 4.0. Over the last few years we have completely overhauled the Godot renders. They now target Vulkan by default and we have created them with future support for [Direct3D 12](https://github.com/godotengine/godot/pull/64304) and other rendering APIs in mind. We also have created an OpenGL-based compatibility renderer aimed at supporting older and low-end devices that do not support Vulkan or other modern GPU APIs. As much as we love exciting new features, we also want to see people create games on the full spectrum of devices for everyone to enjoy.
+
+
+
+Notably, Godot's global illumination systems have been remade from scratch in the new release. *GIProbe* has been replaced by the **VoxelGI** node, which is a real-time solution fit for small and medium-scale environments. For the first time ever, Godot also comes with a GI technique that can be used with large open worlds — signed distance field global illumination (**SDFGI**). It's a novel technique created and implemented by Juan, it works in real-time, and you can learn a lot more about it [here](https://godotengine.org/article/godot-40-gets-sdf-based-real-time-global-illumination). If you are looking to add that extra bit of quality when running on high-end devices, rendering contributor Clay John ([clayjohn](https://github.com/clayjohn)) brings you [Screen Space Indirect Lighting](https://github.com/godotengine/godot/pull/51206). This feature adds more detail to existing GI techniques by using screen-space sampling, similar to SSAO. Last but not least, *lightmaps baking* is now [done using the GPU](https://github.com/godotengine/godot/pull/38386) to speed up the process significantly.
+
+To help improve fidelity of your 3D scenes, we have worked on a couple of exciting and long-anticipated features. [Volumetric fog](https://github.com/godotengine/godot/pull/41213) is making its first appearance in Godot 4, balancing a realistic look and fast performance, thanks to the use of *temporal reprojection*. You can configure the effect globally, or define specific areas with [FogVolume nodes](https://github.com/godotengine/godot/pull/53353). You can even create complex dynamic effects by writing custom shaders that operate on FogVolume nodes.
+
+For other atmospheric effects, Godot 4.0 is introducing sky shaders which allow users to create dynamic skies that update in real time (including reflections). For more information see the article introducing [sky shaders](https://godotengine.org/article/custom-sky-shaders-godot-4-0).
+
+
+
+[Decals](https://github.com/godotengine/godot/pull/37861) are another new way to add dynamic effects, which rely on PBR materials and can also be used for decorating your environments.
+
+Visual effect artists among you should find a lot of useful changes to the GPU-based particles. Those now come with support for attractors, [collision](https://github.com/godotengine/godot/pull/42628), [trails](https://github.com/godotengine/godot/pull/48242), [sub-emitters and manual emission](https://github.com/godotengine/godot/pull/41810). And speaking of effects, our shader maintainer Yuri Rubinsky ([Chaosus](https://github.com/Chaosus)) poured a lot of love into making the shading language and visual shaders more accessible and versatile. Check out his and Juan's blog posts on some of the improvements: [1](https://godotengine.org/article/improvements-shaders-visual-shaders-godot-4), [2](https://godotengine.org/article/godot-40-gets-global-and-instance-shader-uniforms).
+
+Other exciting additions to shaders include support for [uniform arrays](https://github.com/godotengine/godot/pull/62513) and [fragment-to-light varyings](https://github.com/godotengine/godot/pull/44698), as well as new syntax features, such as [structs](https://github.com/godotengine/godot/pull/35249), [preprocessor macros and shader includes](https://github.com/godotengine/godot/pull/62513).
+
+
+
+For the photography-minded users, we have added support for using physical light units in Godot 4.0 which allow you to use realistic units for the intensity of lights as well as use standard camera settings (like aperture, shutter speed, and ISO) to control the brightness of the final scene. Physical light units are turned off by default but can be enabled in the project settings.
+
+Don't worry, though, you will be able to reap the benefits of these new features without sacrificing your game's performance. Several new optimization techniques are also at your disposal, such as [occlusion culling](https://github.com/godotengine/godot/pull/48050), [automatic mesh LOD](https://github.com/godotengine/godot/pull/44468), and manual HLOD using [visibility ranges](https://github.com/godotengine/godot/pull/48847), made possible by Joan Fons ([JFonS](https://github.com/JFonS)), and Juan.
+
+Similarly support for AMD’s [Fidelity FX Super Resolution 1.0](https://github.com/godotengine/godot/pull/51679) (FSR 1.0) has been added by [Je06jm](https://github.com/Je06jm). Support for FSR 2.1 is planned for a future beta release.
+
+If you are using Godot to develop apps, you should be pleased to learn that Godot 4 supports multiple windows per running application. You will notice it with the editor itself, and you can enable the same behavior in your projects, globally or per sub-viewport.
+
+We haven’t forgotten about 2D. The 2D canvas renderer has been updated to support Canvas Groups which allow complex blending of multiple overlapping CanvasItems (for example, you can stack a bunch of CanvasItems together and have them blend with the background as if they are a single item). 4.0 also brings support for 2D directional lights with shadows and 2D SDFs that can be used for custom effects. For more information see Juan’s [blog post](https://godotengine.org/article/godots-2d-engine-gets-several-improvements-upcoming-40).
+
+## Physics and Navigation {#physics-and-navigation}
+
+Godot 4 marks a big return of Godot's in-house 3D physics engine, **Godot Physics**. For years, Godot has relied on the **Bullet** engine to provide a solid foundation for your 3D projects. We felt, however, that a bespoke solution would give us more flexibility when implementing new features and fixing issues.
+
+But first, we needed to bring Godot Physics on-par with Bullet feature-wise, and improve performance and precision of these features along the way. This included adding new collision shapes, [cylinder](https://github.com/godotengine/godot/pull/45854) and [heightmap](https://github.com/godotengine/godot/pull/47347), as well as re-implementing [SoftBody nodes](https://github.com/godotengine/godot/pull/46937). In addition to feature-specific improvements, general optimization techniques, such as broadphase optimization and multithreading support, were implemented for both 2D and 3D environments. Some of these improvements can also be found in recent Godot 3 releases.
+
+
+
+With that done, it was time to improve the user side of things. We took the opportunity to carry out [a major reorganization of physics nodes](https://github.com/godotengine/godot/pull/48908) and improve many APIs/behaviors to make the experience more user-friendly ([collision layers logic](https://github.com/godotengine/godot/pull/50625), [RigidBodies](https://github.com/godotengine/godot/pull/55736), etc.). A lot of properties previously unique to specific body types are now available to all **PhysicsBody** nodes. This allows us to introduce the new **CharacterBody** node to replace old kinematic bodies, which provide a more advanced behavior in [2D](https://github.com/godotengine/godot/pull/51027/files) and [3D](https://github.com/godotengine/godot/pull/52889), allowing you to have an advanced character controller ready to use with new configurable properties for flexibility. Scripting them is simpler now as well. In previous versions of the engine properties related to moving, sliding, and colliding had to be passed to `move_and_slide()` manually. They can now be set up using scenes, on the nodes themselves reducing code needed to have desired physical interactions.
+
+But a new release is not just new big features. A significant effort was put to fix various issues causing jitters and imprecise computations. You can read more about all this work by contributors Camille Mohr-Daurat ([pouleyKetchoupp](https://github.com/pouleyKetchoupp)), [lawnjelly](https://github.com/lawnjelly), and Fabrice Cipolla ([fabriceci](https://github.com/fabriceci)) in [this blog post](https://godotengine.org/article/physics-progress-report-1).
+
+To breathe more life into physical bodies, the next major version of Godot also introduces a new navigation system. Previous versions of the navigation were entirely node-based, which limited their usability and performance. Thanks to work initiated by [Andrea Catania](https://github.com/AndreaCatania) and continued by [smix8](https://github.com/smix8), Godot 4 features a server-based approach to navigation.
+
+The new **NavigationServer** supports fully dynamic environments and on-the-fly navigation mesh baking. You can stream regions, which makes the system applicable to large open spaces. Physics bodies can be marked as obstacles for automatic collision avoidance, and it all works much faster than before thanks to multithreading support. [Navigation links](https://github.com/godotengine/godot/pull/63479) are also supported to configure jump points, teleports, etc.
+
+Andrea described the new system with a great practical example in a [dedicated article](https://godotengine.org/article/navigation-server-godot-4-0), and we recommend you give it a read.
+
+## Animation {#animation}
+
+3D animations have seen an internal overhaul, allowing for compression to reduce memory usage, as well as individual position, rotation, and scale tracks in place of united transforms. Read more about animation changes in [this blog post](https://godotengine.org/article/animation-data-redesign-40) by Juan.
+
+Juan also implemented Animation Libraries which allow importing scenes containing only animations and streamline animation reuse in a project, read more in the original [proposal](https://github.com/godotengine/godot-proposals/issues/4296).
+
+K. S. Ernest Lee ([fire](https://github.com/fire)) [revived](https://github.com/godotengine/godot/pull/61196) an earlier pull request made by Juan and implemented the ability to use an expression as the state machine condition for transition in AnimationTree. This provides greater flexibility for creating complex state machines.
+
+
+
+Silc 'Tokage' Renew ([Tokage](https://github.com/TokageItLab)) has been hard at work fixing animation bugs and making enhancements and new features. Among them is the new [animation retargeting system](https://github.com/godotengine/godot-proposals/issues/4510). Animation retargeting allows users to map animations to other assets at import time, allowing multiple models to share animations in a convenient and easy to use way.
+
+## Scripting {#scripting}
+
+### GDScript {#gdscript}
+
+With **GDScript** being the most used language among current Godot users, we wanted to really improve the coding experience in Godot 4 with some of the most requested and long-awaited language features. You can now reap the benefits of first-class functions and lambdas, new property syntax, the `await` and `super` keywords, and typed arrays. New built-in annotations make the language clearer and improve syntax for exported properties. And to top it off, your scripts can now automatically generate documentation that can be studied with the built-in help and the Inspector dock tooltips.
+
+
+
+Despite growing in features, the GDScript runtime is only faster and more stable in Godot 4. This was achieved by a complete rewrite of the language backend by our main scripting maintainer George Marques ([vnen](https://github.com/vnen)). If you are interested in further reading George has provided several detailed reports on the new language features ([1](https://godotengine.org/article/gdscript-progress-report-new-gdscript-now-merged), [2](https://godotengine.org/article/gdscript-progress-report-feature-complete-40)), as well as on the decision-making process for the new language parser and runtime ([1](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer), [2](https://godotengine.org/article/gdscript-progress-report-writing-new-parser), [3](https://godotengine.org/article/gdscript-progress-report-type-checking-back), [4](https://godotengine.org/article/gdscript-progress-report-typed-instructions)). The documentation feature was implemented by a student, Thakee Nathees ([ThakeeNathees](https://github.com/ThakeeNathees)), during the last year's Google Summer of Code. You can read their report [here](https://godotengine.org/article/gsoc-2020-progress-report-1#gdscript-doc).
+
+
C#
+
+There is, of course, great news for those waiting on C# support to return to the engine, as it was noticeably missing from alpha builds throughout 2022. The much anticipated port to .NET 6 has been mostly [completed](https://github.com/godotengine/godot/pull/64089)! It was added relatively recently and so has not been tested in the alphas as much as other features. Please be cautious in your testing and report any issues that you face.
+
+With the move to **.NET 6**, users can now target a newer framework that brings optimizations and new APIs. With .NET 6, projects use C# 10 by default and all features are available.
+
+Godot 4 moves away from reflection, instead relying on source generators to improve performance, moving a lot of the work that we used to do at runtime to compile time. This also allows us to find and report errors when building the project instead of failing when running the game, such as using unsupported types in exported properties. We hope the new analyzers will help users avoid common pitfalls and write better code.
+
+Of course, the 4.0 release is also a great opportunity to break compatibility to try and make the API better. Anything that changed in core APIs is also reflected in the .NET APIs and one of the most notable changes is the use of 64-bit types as scalar values, this means many APIs that used `int` or `float` now use `long` and `double` with the most noticeable being the `_Process` method. A `Variant` type is also now implemented that is used in every API that takes variants where we were using `System.Object` in the past. This brings some improvements such as avoiding boxing the values and you can read more about it in [this proposal](https://github.com/godotengine/godot-proposals/issues/3837).
+
+Another change worth mentioning is the ability to declare signals as C# events. Declaring signals is done by writing a delegate with the `[Signal]` attribute like in the past, but now the delegate name must end with the `EventHandler` suffix and an event will be generated, which can be used to connect to and disconnect from the signal. Emitting a signal is currently done with the `EmitSignal` method but that may change in the future:
+
+```cs
+[Signal]
+delegate void ValueChangedEventHandler(string newValue);
+
+// The compiler generates the following event
+public event ValueChangedEventHandler ValueChanged;
+
+// Connect
+ValueChanged += Foo;
+
+// Disconnect
+ValueChanged -= Foo;
+
+// Emit
+EmitSignal(SignalName.ValueChanged);
+```
+
+There's still more work to be done in the .NET module, some of which will likely still break compatibility even during the beta so make sure to keep backups and clear the `.godot` directory on updates to ensure a clean build.
+
+One of the big changes that we are still working on is support for writing GDExtensions in C#. With GDExtension, C# classes will be registered in the engine and work as the built-in classes do, which should improve the support of C# nodes and resources throughout the engine.
+
+Currently, the .NET version of Godot still requires a separate build of Godot, just as in Godot 3. However, we are planning on unifying the editor so there won't be a standard and a .NET build anymore but a single editor that will download the necessary additional components when .NET is used.
+
+Stay tuned for a deeper dive in the new features and upcoming changes in future progress reports!
+
+**Important remarks:**
+
+- The Godot editor requires the .NET 6.0 SDK to be installed in order to use C#.
+- Godot 4 doesn't support C# projects imported from Godot 3. It may be possible to edit your project file manually, but otherwise it's recommended to let Godot generate a new one.
+- Currently, mobile and web platforms are not available, with support likely coming in Godot 4.1.
+
+### GDExtension {#gdextension}
+
+Sometimes user-level scripting is not enough, though. Being an open source project, Godot has always valued extensibility. With the existing *GDNative* API layer, you don't even have to fork the engine to extend it. But it was our first attempt at making a nice abstraction layer for engine internals that you could plug-and-play into. And so for all its benefits, GDNative didn't feel quite there yet.
+
+This is why with Godot 4, we introduce a new system called **GDExtension**. By design, it takes the best parts of creating GDNative extensions and writing custom engine modules. The code that you make can be ported into the engine if need be, and, vice versa, some engine parts can be made into a GDExtension library, reducing engine bloat. All this still without having to recompile the engine.
+
+The new GDExtension system was implemented by Juan and George, and further improved by many contributors, especially while porting the [official godot-cpp C++ bindings](https://github.com/godotengine/godot-cpp). Resident XR enthusiast and Godot contributor Bastiaan Olij ([BastiaanOlij](https://github.com/BastiaanOlij)) took time to make a blog post to [introduce GDExtensions](https://godotengine.org/article/introducing-gd-extensions).
+
+## Gui and Text {#gui-and-text}
+
+
+
+Localization is probably the most straightforward way to allow more people to experience your game or use your tool efficiently. However, translating your project is often just half the battle. Most software can handle Latin or Cyrillic characters well enough, but when it comes to Arabic scripts or logograms of East Asian languages, text rendering quickly becomes tricky.
+
+Defying the odds of this difficult task, our talented contributor Pāvels Nadtočajevs ([bruvzg](https://github.com/bruvzg)) has reimplemented Godot's text rendering systems under an umbrella of the **TextServer**. That backend solution does the heavy lifting for everything related to displaying textual information on screen. It also enables right-to-left languages to work just as their users expect them — ligatures, complex graphemes and all. Read Pāvels' detailed reports on the improvements made: [1](https://godotengine.org/article/complex-text-layouts-progress-report-1), [2](https://godotengine.org/article/complex-text-layouts-progress-report-2), [3](https://godotengine.org/article/complex-text-layouts-progress-report-3).
+
+Your localization efforts are further assisted by a built-in pseudolocalization tool. Implemented by Angad Kambli ([angad-k](https://github.com/angad-k)), a Google Summer of Code 2021 student, it allows to easily test the effects of diacritics and other font permutations on your GUI without having to rely on actual translations to stress test your project. You can learn more about pseudolocalization features in the student's report [here](https://godotengine.org/article/gsoc-2021-progress-report-1#pseudolocalization).
+
+Text rendering changes couldn't have happened without an overhaul in how fonts are handled by the engine. Besides supporting ligatures and other OpenType features, font resources have two more important differences from Godot 3. First of all, fonts now have proper multilevel fallback logic, which helps to cover a wider range of characters than would be possible with a single font resource. Second of all, the size of the font is no longer tied to the font itself, which means it can be easily changed on the fly. In fact, all Control nodes that have configurable fonts now have separate configurable font sizes in their theme properties.
+
+Speaking of themes, the default project theme has been modernized to provide a cleaner look and get rid of embedded images, which should slightly reduce the size of exported projects. You can thank our core contributor Hugo Locurcio ([Calinou](https://github.com/Calinou)) for that.
+
+## Audio {#audio}
+
+Sound design and music is another area that is important to get right. It is also the area that requires a lot of specialized knowledge to properly support in the engine. Luckily, our contributor Ellen Poe ([ellenhp](https://github.com/ellenhp)) has exactly what it takes, and her work on Godot 4 helped to fix a large amount of withstanding issues with the audio system.
+
+The new release takes full advantage of the existing **AudioServer** as a [significant chunk of audio processing logic](https://github.com/godotengine/godot/pull/51296) has been moved there. This change aims to address various popping issues, race conditions, and overall poor resampling behavior. It also paves the road for future improvements to make Godot's audio system more flexible and feature-rich. Such as [built-in polyphony support](https://github.com/godotengine/godot/pull/52237), allowing you to repeat the same sound multiple times on top of itself using a single AudioStreamPlayer node. This leads to more satisfying audio effects, such as gunfire.
+
+## Multiplayer {#multiplayer}
+
+We've spent a lot of time and effort on the foundations for our networking systems and their reliability for Godot 4.0 — be it DNS, HTTP, TCP, UDP, ENet, or Websockets: all core components were refactored, improved and many bugs and edge cases fixed and handled.
+Whether it's DNS now resolving multiple IP addresses correctly, connections being more stable and less prone to being interrupted or hanging, large downloads working as they should or countless other tiny improvements under the hood — networking in Godot 4.0 should be an altogether more pleasant and reliable experience thanks to Fabio Alessandrelli ([Faless](https://github.com/Faless)), Max Hilbrunner ([mhilbrunner](https://github.com/mhilbrunner)), Haoyu Qiu ([timothyqiu](https://github.com/timothyqiu)), David Snopek ([dsnopek](https://github.com/dsnopek)), Jordan Schidlowsky ([jordo](https://github.com/jordo)), [sarchar](https://github.com/sarchar) and many other contributors. New features and bigger improvements require you to try out our latest and greatest, but passionate Godot contributors have done tremendous work backporting a lot of the fixes to Godot 3 as well.
+
+With the GDScript 2.0 changes, RPCs can now be configured using the new annotations. Godot 4.0 also comes with a fully working headless mode (no rendering or audio output, supported on all platforms!), which is great for multiplayer server hosting, CI/CD and many other things and Godot now also supports [mesh or peer to peer networking](https://github.com/godotengine/godot/pull/50710) as an alternative to the trusty client-server model. You have Fabio in particular to thank for all of these!
+
+And finally, this vastly more stable and improved foundation now allows us to build exciting higher level features on top.
+
+If you want to read more on all of the above, [this series of posts](https://godotengine.org/article/multiplayer-changes-godot-4-0-report-1) is a good place to start.
+
+## Importing/Exporting {#importing-exporting}
+
+
+
+When you start working on a new 3D scene in Godot 4, you won't be able to miss a leaping change in the importing workflow. Previous versions of the engine provided users with a powerful, but obscured mechanism for preparing imported 3D assets. You could automate and enhance your models and scenes with an import script and a few import settings, but we were sure we could do better than that. Godot 4 comes with a [dedicated import dialog](https://github.com/godotengine/godot/pull/47166) that allows you to preview and customize every part of the imported scene, its materials and physical properties. Scripts can still be used for additional tweaks, thanks to the [new plugin interface](https://github.com/godotengine/godot/pull/53813).
+
+You should also notice a [significant bump](https://github.com/godotengine/godot/pull/47370) in textures import speed thanks to the etcpak library, and the new multi-threaded importer. Additionally, you can now [import your glTF files](https://github.com/godotengine/godot/pull/52541) at runtime, allowing for more modular 3D projects as well as tools made with the engine. Give it up for K. S. Ernest Lee ([fire](https://github.com/fire)), who worked on these and a myriad of other features as an importing and usability specialist.
+
+There are new CPU architecture options in the export dialog for exporting a game. This comes together with first-class build system support for multiple CPU architectures. If you have the builds compiled, you can now target devices such as Raspberry Pi, Microsoft Volterra, Surface Pro X, Pine Phone, VisionFive, ARM Chromebooks, and Asahi Linux without much manual hassle. This is in addition to the existing support Godot has for x86 Windows & Linux, and various architectures on Android, iOS, and macOS.
+
+## Editor and usability {#editor-and-usability}
+
+Of course, none of the aforementioned changes would be worth it if you couldn't access them or if they were uncomfortable to use. We improve the Godot editor in big and small ways all the time, and you may have already seen some of the new features from their ports and counterparts added to Godot 3.3 and Godot 3.4.
+
+However, with a new major release, we can make some radical changes to the tools and the editor accessibility – changes that would be impossible without breaking compatibility. Probably the biggest improvement relying on that is the new Tiles editor, which has been reimagined based on your requests and reports. Our 2D editor maintainer Gilles Roudière ([groud](https://github.com/groud)) has united the workflow for `TileSet`s and `TileMap`s, providing various ways to organize and place tiles, to supply them with metadata and animations. You can probably build half a game with tiles alone!
+
+
+
+Read Gilles' multiple detailed reports on the progress made over several months of development: [1](https://godotengine.org/article/tiles-editor-rework), [2](https://godotengine.org/article/tiles-editor-progress-report-2), [3](https://godotengine.org/article/tiles-editor-progress-3), [4](https://godotengine.org/article/tiles-editor-progress-4), [5](https://godotengine.org/article/tiles-editor-progress-report-5).
+
+Another major tool that is seeing a lot of love in Godot 4 is the animation editor. With input from Juan, Gilles, as well as contributions by François Belair ([Razoric480](https://github.com/Razoric480)) and Nathan Lovato ([NathanLovato](https://github.com/NathanLovato)), the Animation editor receives support for blend shape tracks, dedicated position, rotation, and scale tracks, and improved Bezier curve workflow.
+
+Overall editor usability is also always improving, and you will likely see a few new tricks the closer we get to the stable release of Godot 4. One great usability booster that you can try already is the new command palette, added by a student during Godot Summer of Code this year. This tool provides quick access to a lot of editor operations for keyboard-proficient users. Read a report by Bhuvaneshwar ([Bhu1-V](https://github.com/Bhu1-V)) [here](https://godotengine.org/article/gsoc-2021-progress-report-1#command-palette) to learn more about this feature. Another big time saver has got to be new and improved script templates, which can now be [customized per node type](https://github.com/godotengine/godot/pull/53957). The editor even comes with some handy physics body templates, courtesy of Fabrice.
+
+The editor will store the editor version last used to edit a project inside the `project.godot` file. This way you will be able to quickly check what version of Godot a project is created with. Additionally, the project manager will show a warning if you try to edit a project made with a different version of Godot, or a project made using unavailable engine features.
+
+The much loved “default_env.tres” which added a fallback environment to all projects has been removed in favor of having an in-editor default DirectionalLight3D and WorldEnvironment. This makes it easy to tweak lighting and effects for previewing assets in the editor without the hassle of having to remember to manually disable your in-editor nodes at runtime. For more information, see the
+[blog post](https://godotengine.org/article/editor-improvements-godot-40).
+
+And finally, a new release doesn't feel new without an updated look for the editor. Just like the new project theme, the [new editor theme](https://github.com/godotengine/godot/pull/45607) was made by Hugo to give it a more modern feeling and improve color schemes for better accessibility. The editor also benefits from the improved text rendering and right-to-left support, which should open the doors of gamedev for developers from many more regions.
+
+## Web platform {#web-platform}
+
+Among many other improvements to the web platform, Fabio has added the necessary tooling to allow [remote profiling of HTML5 exports](https://godotengine.org/article/html5-export-profiling). That means you will be able to run the debugger/profiler on web exports as you would on the desktop platform making it much easier to polish and optimize your web-based games.
+
+## Should I upgrade my project now?
+
+Right now, it is still a bit risky to upgrade projects that are in the late-stages of development. We anticipate that all users will face bugs that make development more challenging than it should be and may even face engine crashes. However, as we do not anticipate making many more breaking changes, the API should be relatively stable from this point on. That means now is a good time to try out the engine and maybe even try porting a small side-project to see how the process goes.
+
+During the alphas we introduced a Godot 3 to 4 project upgrader tool which is now available in the Project Manager. Please try it out and report back any issues you face.
+
+As always, if you plan on upgrading your project, please make a backup copy of your project before you attempt the upgrade. We don’t anticipate that anything will break your project, but it pays to be safe.
+
+## Downloads {#downloads}
+
+The downloads for this beta can be found directly on our repository:
+
+- [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/beta1) (GDScript, GDExtension).
+- [.NET 6 build](https://downloads.tuxfamily.org/godotengine/4.0/beta1/mono) (C#, GDScript, GDExtension).
+
+## Known issues {#known-issues}
+
+As this is the first beta we anticipate that there will be many bugs.
+See the Github issue tracker for a [list of bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+Some noteworthy issues you might run into in this beta 1:
+
+- GDScript `preload()` fails in standalone build for imported resources and scenes converted to binary formats on export ([GH-56343](https://github.com/godotengine/godot/issues/56343)).
+ * We already have a fix for this but it didn't make it in time for beta 1. It will be in beta 2. In the meantime use `load()` instead of `preload()` if you want to export a project with beta 1.
+- Exporting a Web build fails on Windows due to some file locking issue ([GH-65660](https://github.com/godotengine/godot/issues/65660)).
+ * See the issue for a potential workaround.
+
+## Bug reports {#bug-reports}
+
+As a tester, you are encouraged to open bug reports if you experience issues with 4.0 beta 1. Please check first the existing issues on GitHub, using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support {#support}
+
+Godot is a non-profit, open source game engine developed by hundreds of contributors in their free time, and a handful of part or full-time developers, hired thanks to [donations from the Godot community](https://godotengine.org/donate). A big thank you to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-beta-10.md b/collections/_article/dev-snapshot-godot-4-0-beta-10.md
new file mode 100644
index 0000000000..5188aac6c0
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-beta-10.md
@@ -0,0 +1,99 @@
+---
+title: "Dev snapshot: Godot 4.0 beta 10"
+excerpt: "Happy holidays! After 3 months of frequent beta builds, we're taking a short break for the end of the year - and we leave you with 4.0 beta 10, with notable improvements to Animation, Navigation, Rendering, GDScript... a well-rounded snapshot for the holidays!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/63a/5cb/0f4/63a5cb0f48e88945485049.jpg
+image_caption_title: cave (working title)
+image_caption_description: A game by bitbrain
+date: 2022-12-23 16:04:50
+---
+
+Happy holidays! We have been enjoing Godot 4.0 betas for [over three months](/article/dev-snapshot-godot-4-0-beta-1) now, and we are glad to see it get more stable and usable every week. Every beta release so far has included a lot of fixes in one or more key areas, and the next major version of the engine starts to finally look complete.
+
+Beta 10 will be the last dev snapshot of the year 2022, as a lot of our contributors will no doubt be slowing down for the end of year celebrations and some quality family time. We will continue our work on the engine and will release a new snapshot every week in the upcoming year, just as before, to get fast feedback on bugfixes, and potential regressions they may introduce. Thank you for being an integral part of the dev process with your rigorous testing and timely reports!
+
+This beta includes a few big changes which may interest a lot of users:
+
+- A lot of bug fixes and improvements in these areas particularly, check out the PRs listed below: Animation, Navigation, GDScript, Rendering.
+- A new configuration dialog has been added to help set up the editor to work with FBX files. In this dialog you will also find a link to an [instruction](https://godotengine.org/fbx-import) on our website. ([GH-59810](https://github.com/godotengine/godot/pull/59810)).
+- We previously removed `*_degrees` properties from 2D and 3D objects in favor of making editing degrees easier in the Inspector. However, many of you still used these properties in code, preferring degrees to radians. So with this beta release `*_degrees` properties are restored for use in code and animations ([GH-70263](https://github.com/godotengine/godot/pull/70263)).
+
+[Jump to the **Downloads** section.](#downloads)
+
+You can also [try the Web editor](https://editor.godotengine.org/releases/4.0.beta10/godot.editor.html) (early testing, it's still slow and unstable).
+
+*The illustration picture for this article is from an unnamed RPG by developer [bitbrain](https://www.youtube.com/bitbraindev) (working title "cave"). The game started development with Godot 3.x, and was recently ported to 4.0 beta, with the process covered [in this devlog](https://www.youtube.com/watch?v=CFEZyQDSSNE). Follow bitbrain on [Twitter](https://twitter.com/bitbrain), [Mastodon](https://mastodon.gamedev.place/@bitbraindev), and [YouTube](https://www.youtube.com/bitbraindev) where they also have Godot tutorials.*
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 beta in general, have a look at the detailed release notes for [4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1). In this blog post, we will only cover the main changes since the previous beta release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/e780dc332a0a3f642a6daf8548cb211d79a2cc45...d0398f62f08ce0cfba80990b21c6af4181f93fe9), or the [**list of merged PRs**](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-12-19..2022-12-23+is%3Amerged+sort%3Acreated-asc+milestone%3A4.0), for an overview of all changes since 4.0 beta 9 (90 commits – excluding merge commits ― from 40 contributors).
+
+While we do our best to minimize compatibility breaking changes for existing beta users, there are still occasional changes in the API which may impact your Godot 4 projects. See the list of PRs with the [`breaks compat` label](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-12-19..2022-12-23+is%3Amerged+sort%3Acreated-asc+milestone%3A4.0+label%3A%22breaks+compat%22) for details.
+
+Some of the most notables feature changes in this update are:
+
+- 2D: Simplify isometric tile shape polygon in `TileSet` to 4 vertices ([GH-70238](https://github.com/godotengine/godot/pull/70238)).
+- Animation: Fix for short animation blend taking too long when played during a long animation blend ([GH-37001](https://github.com/godotengine/godot/pull/37001)).
+- Animation: Make auto-advance flag a requirement for conditional/expression evaluation ([GH-65312](https://github.com/godotengine/godot/pull/65312)).
+- Animation: Add inspector plugin for key time edit & change `track_find_key()` argument to find key with approximate ([GH-69797](https://github.com/godotengine/godot/pull/69797)).
+- Animation: Add `animation_started`/`finished` signals to AnimationTree and fix time accuracy in StateMachine ([GH-70278](https://github.com/godotengine/godot/pull/70278)).
+- AssetLib: Add support for svg images in the asset lib ([GH-70317](https://github.com/godotengine/godot/pull/70317)).
+- Audio: Add optional stream argument to `AudioStreamRandomizer.add_stream` ([GH-67922](https://github.com/godotengine/godot/pull/67922)).
+- Core: Allow to specify a default value in `ProjectSettings.get_setting()` ([GH-62029](https://github.com/godotengine/godot/pull/62029)).
+- Core: Restore `rotation_degrees` properties ([GH-70263](https://github.com/godotengine/godot/pull/70263)).
+- Editor: Fix Profiler and Visual Profiler start/stop state inconsistency ([GH-70151](https://github.com/godotengine/godot/pull/70151)).
+- GDExtension: Expose in builtins' members internal type & size (on top of offset) in `extension_api.json` ([GH-65990](https://github.com/godotengine/godot/pull/65990)).
+- GDScript: Add MethodInfo to signal datatype ([GH-70138](https://github.com/godotengine/godot/pull/70138)).
+- GDScript: Fix external enums not assignable as constants ([GH-70220](https://github.com/godotengine/godot/pull/70220)).
+- GDScript: Fix resource picker regression with custom resources using the `@tool` hint ([GH-70277](https://github.com/godotengine/godot/pull/70277)).
+- GDScript: Unify GDScriptAnalyzer in-editor and runtime autoload checks ([GH-70331](https://github.com/godotengine/godot/pull/70331)).
+- GDScript: Fix GDScript analyzer null literal ([GH-70440](https://github.com/godotengine/godot/pull/70440)).
+- GUI: Add configuration warning when ButtonGroup is used with non-toggleable buttons ([GH-70334](https://github.com/godotengine/godot/pull/70334)).
+- GUI: Fix RichTextLabel `push_bold`/`italics` not using `bold_italics_font` when required ([GH-70407](https://github.com/godotengine/godot/pull/70407)).
+- GUI: Rename `remove_line()` in RichTextLabel to `remove_paragraph()` for naming consistency ([GH-70413](https://github.com/godotengine/godot/pull/70413)).
+- Import: Add a dialog for customizing FBX import ([GH-59810](https://github.com/godotengine/godot/pull/59810)).
+- Input: Include the follow-viewport-transform into `CanvasLayer` transform calculations ([GH-59682](https://github.com/godotengine/godot/pull/59682)).
+- Navigation: Add signal to NavigationAgent when entering a link ([GH-67111](https://github.com/godotengine/godot/pull/67111)).
+- Navigation: Change `GridMap` `navigation_layers` to per `mesh_library` item ([GH-69351](https://github.com/godotengine/godot/pull/69351)).
+- Navigation: Use `TileSet` navigation layer layers when `TileMap` generates navigation polygons
+([GH-69349](https://github.com/godotengine/godot/pull/69349)).
+- Navigation: Stop `NavigationAgents` without a target from moving to world origin ([GH-69688](https://github.com/godotengine/godot/pull/69688)).
+- Navigation: Fix typo and ensure backwards compatibility for changed property names ([GH-70244](https://github.com/godotengine/godot/pull/70244)).
+- Navigation: Restore weight scale for `AStarGrid2D` (partially) ([GH-70339](https://github.com/godotengine/godot/pull/70339)).
+- Physics: Add `GridMap` `collision_priority` ([GH-70309](https://github.com/godotengine/godot/pull/70309)).
+- Rendering: Implement basic ASTC support ([GH-65376](https://github.com/godotengine/godot/pull/65376)).
+- Rendering: Added options for sorting transparent objects ([GH-69998](https://github.com/godotengine/godot/pull/69998)).
+- Rendering: Ensure that particles are processed at least once before being used ([GH-70418](https://github.com/godotengine/godot/pull/70418)).
+- Rendering: Disable particle trails particles when parent parent is not active ([GH-70422](https://github.com/godotengine/godot/pull/70422)).
+- Shaders: Fix shader crash when using boolean type for vertex->fragment varyings ([GH-70460](https://github.com/godotengine/godot/pull/70460)).
+- VCS plugins: Add a stern confirmation dialog before discarding all changes ([GH-70374](https://github.com/godotengine/godot/pull/70374)).
+
+This release is built from commit [d0398f62f](https://github.com/godotengine/godot/commit/d0398f62f08ce0cfba80990b21c6af4181f93fe9).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/beta10/) (GDScript, GDExtension).
+* [.NET 6 build](https://downloads.tuxfamily.org/godotengine/4.0/beta10/mono) (C#, GDScript, GDExtension).
+ - Requires [.NET SDK 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) installed in a standard location. .NET 7.0 is not supported yet, so make sure to install .NET 6.0 specifically.
+
+## Known issues
+
+As we are still in the early beta phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-beta-2.md b/collections/_article/dev-snapshot-godot-4-0-beta-2.md
new file mode 100644
index 0000000000..51434cdc43
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-beta-2.md
@@ -0,0 +1,170 @@
+---
+title: "Dev snapshot: Godot 4.0 beta 2"
+excerpt: "We released Godot 4.0 beta 1 two weeks ago! That was a big milestone on our journey to finalize our next major release. But the \"1\" in beta 1 means that it's only the first step of the journey, so we're going to release new beta snapshots roughly every other week. So here's beta 2!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: ["/storage/app/uploads/public/633/69f/d37/63369fd37cc17811993052.jpg"]
+image_caption_title: Penitent
+image_caption_description: A game by devmar
+date: 2022-09-29 18:20:56
+---
+
+We released [Godot 4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1) two weeks ago! That was a big milestone on our journey to finalize our next major release – be sure to check out that blog post if you haven't yet, for an overview of some of the main highlight of Godot 4.0.
+
+But the "1" in beta 1 means that it's only the first step of the journey, and like for the alpha phase, we're going to release new beta snapshots roughly every other week. So here's beta 2!
+
+The reception of beta 1 was surprisingly good – we're happy to see the community tinker with the beta, report bugs and provide feedback on the new features. Many bugs have been fixed in just two weeks, with close to [250 PRs merged](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-09-15..2022-09-29+milestone%3A4.0+is%3Amerged+), many of which fixed bugs reported by beta testers.
+
+[Jump to the **Downloads** section.](#downloads)
+
+*The illustration picture for this article is a screenshot of [devmar](https://twitter.com/devinthewater)'s game* **Penitent**, *which is being developed with Godot 4.0. Check out devmar's amazing devlogs and tutorials [on YouTube](https://www.youtube.com/channel/UCc25HR6YVwwA0lFkvqXBtGA/featured)!*
+
+## Major changes
+
+This beta 2 is not only bugfixes though! There were a few very important features that we didn't manage to review in time for beta 1, and which have now been implemented in beta 2.
+
+### Exporting custom resources
+
+Most notably a much improved support for exporting user-defined custom resources ([GH-62411](https://github.com/godotengine/godot/pull/62411)), which used to be our [#1 most requested feature](https://github.com/godotengine/godot-proposals/issues/18)!
+
+You can now export your custom resources (named with `class_name`) using `@export var some_res: MyCustomRes`, and the Inspector will let you create and load instances of that resource type easily. There's still more work needed to integrate this properly in e.g. the Quick Load menu, for which we need to solve performance issues with the parsing of global classes.
+
+This is all thanks to Will Nations ([willnationsdev](https://github.com/willnationsdev)) whom we can't thank enough for his dedication and perseverance with this feature. It's been in the pipeline for a long time and went through multiple iterations until we finally merged the current one. And there's more work pending to improve the underlying core components to make things more performant and easier to integrate in various parts of the editor and plugins.
+
+### File/Directory wrappers replaced by FileAccess/DirAccess
+
+Thanks to the combined work of Tomasz Chabora ([KoBeWi](https://github.com/KoBeWi)) and Pāvels Nadtočajevs ([bruvzg](https://github.com/bruvzg)), we could replace the `File` and `Directory` wrappers that we had to use to expose underlying `FileAccess` and `DirAccess` APIs, which are the ones Godot uses internally ([GH-65271](https://github.com/godotengine/godot/pull/65271)). `FileAccess` and `DirAccess` were made reference counted, and given a lot of convenient static methods.
+
+Check the `FileAccess` and `DirAccess` documentation in the editor for details, but to get you started, you should replace this kind of code:
+
+```gdscript
+var file = File.new()
+if not file.file_exists("user://save_game.dat"):
+ file.open("user://save_game.dat", File.WRITE)
+ file.store_var(user_data)
+ file.close()
+```
+
+With this, using the new static method and class name:
+```gdscript
+if not FileAccess.file_exists("user://save_game.dat"):
+ var file = FileAccess.open("user://save_game.dat", FileAccess.WRITE)
+ file.store_var(user_data)
+ # No need for close(), `file` is reference counted and will be closed when going out of scope.
+```
+
+### XR improvements all around
+
+Contributors in the XR area have been busy, and a lot of their work got merged these past two weeks!
+
+While XR maintainer Bastiaan Olij ([BastiaanOlij](https://github.com/BastiaanOlij)) was busy finalizing OpenXR hand tracking ([GH-60313](https://github.com/godotengine/godot/pull/60313)) and palm pose extension support ([GH-66282](https://github.com/godotengine/godot/pull/66282)), other contributors have been working magic:
+- Gergely Kis ([kisg](https://github.com/kisg)) and [korompg](https://github.com/korompg) implemented support for dynamically loading the OpenXR loader on Android ([GH-65798](https://github.com/godotengine/godot/pull/65798)). This makes it possible to load the Meta Quest OpenXR loader on Meta devices.
+- David Snopek ([dsnopek](https://github.com/dsnopek)) got WebXR minimally working again ([GH-64514](https://github.com/godotengine/godot/pull/64514)) using the WebGL 2 renderer implemented by Clay John ([clayjohn](https://github.com/clayjohn)).
+- [konczg](https://github.com/konczg) implemented the OpenXR passthrough extension wrapper ([GH-65898](https://github.com/godotengine/godot/pull/65898)).
+
+### And more!
+
+And there's a lot more, but I'm running out of time to describe it and I want to release this beta today :P so please read on and check the PRs referenced below for details.
+
+One thing worth noting though: With the beta phase, we're mostly done with feature implementation and we're doing our best to preserve compatibility so that beta users can easily move to future betas and stable builds. That being said, there are still occasions where changing an API before committing to it for the whole 4.x lifetime is worth it (e.g. the File/FileAccess change above), so some minor porting from beta to beta might still be needed.
+
+We're trying to be reasonable with it and it shouldn't take more than a few minutes each time, if and when there are compat breaking changes. We're going to carefully apply the `breaks compat` label to PRs which do break compatibility from now on, so you can always review that list to see if any change impacts your projects. Here's the list of [`breaks compat` changes made between beta 1 and beta 2](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-09-15..2022-09-28+is%3Amerged+milestone%3A4.0+label%3A%22breaks+compat%22).
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 beta in general, have a look at the detailed release notes for [4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1). In this beta 2 blog post, we will only cover the main changes since the previous beta release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/4ba934bf3d1e697d8f332b5e8cfd694cdf49a7ba...f8745f2f71c79972df66f17a3da75f6e328bc55d) for an overview of all changes since 4.0 beta 1 (236 commits – excluding merge commits ― from 67 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- Animation: Allow negative `speed_scale` in AnimatedSprite2D & 3D ([GH-65148](https://github.com/godotengine/godot/pull/65148)).
+- Buildsystem: Refactor handling of `production` flag and per-platform LTO defaults ([GH-65745](https://github.com/godotengine/godot/pull/65745)).
+- C#: Don't marshal multidimensional arrays ([GH-65946](https://github.com/godotengine/godot/pull/65946)).
+- C#: Guard against null assemblies ([GH-66253](https://github.com/godotengine/godot/pull/66253)).
+- Core: Introduce more static methods to directory API ([GH-60408](https://github.com/godotengine/godot/pull/60408)).
+- Core: Make ImageFormatLoader extensible ([GH-63594](https://github.com/godotengine/godot/pull/63594)).
+- Core: Replace File/Directory with FileAccess/DirAccess ([GH-65271](https://github.com/godotengine/godot/pull/65271)).
+- Core: Treat JSON as resource files ([GH-65295](https://github.com/godotengine/godot/pull/65295)).
+- Core: Use variadic template in `vformat()` (allow more than 5 arguments) ([GH-65760](https://github.com/godotengine/godot/pull/65760)).
+- Core: Add missing initial window flags and window mode to the project settings ([GH-65816](https://github.com/godotengine/godot/pull/65816)).
+- Core: Add QuadMesh back as a subclass of PlaneMesh ([GH-65918](https://github.com/godotengine/godot/pull/65918)).
+- Core: Change UndoRedo to use Callables ([GH-66070](https://github.com/godotengine/godot/pull/66070)).
+- Core: Add `Callable.callv` method ([GH-66177](https://github.com/godotengine/godot/pull/66177)).
+- Editor: Reorganize connection dialog ([GH-60478](https://github.com/godotengine/godot/pull/60478)).
+- Editor: Script-class-aware Inspector & related controls ([GH-62413](https://github.com/godotengine/godot/pull/62413)).
+- Editor: Show override icon in script editor gutter ([GH-65535](https://github.com/godotengine/godot/pull/65535)).
+- Editor: Rename editor run/pause/stop shortcuts and tooltips for consistency ([GH-64756](https://github.com/godotengine/godot/pull/64756)).
+- Editor: Print an error if trying to run a self-contained editor in a project folder ([GH-66200](https://github.com/godotengine/godot/pull/66200)).
+- Export: Fix sub-scene root nodes not getting the correct inheritance chain when exporting ([GH-66289](https://github.com/godotengine/godot/pull/66289)).
+- GDExtension: Implement support for typed arrays ([GH-65817](https://github.com/godotengine/godot/pull/65817)).
+- GDExtension: Add macros to generate wrappers for module functions ([GH-66492](https://github.com/godotengine/godot/pull/66492)).
+- GDScript: Add support for exportign user-defined resource types ([GH-62411](https://github.com/godotengine/godot/pull/62411)).
+- GDScript: Fix `preload` fails in standalone builds unless files are present in directory ([GH-65152](https://github.com/godotengine/godot/pull/65152)).
+- GDScript: Fix loading/updating scripts after external changes on disk (manually or via LSP) ([GH-63224](https://github.com/godotengine/godot/pull/63224), [GH-66405](https://github.com/godotengine/godot/pull/66405)).
+- GUI: Implement Tree recursive folding (like SceneTreeDock) ([GH-62666](https://github.com/godotengine/godot/pull/62666)).
+- GUI: Use embedding viewport instead of parent viewport to determine popup rect ([GH-65550](https://github.com/godotengine/godot/pull/65550)).
+- GUI: Fix minimum size calculation for TabContainer ([GH-66012](https://github.com/godotengine/godot/pull/66012)).
+- GUI: Add option to apply built-in RichTextLabel effects to the individual connected glyphs ([GH-66068](https://github.com/godotengine/godot/pull/66068)).
+- Import: Add 16-bits TGA support ([GH-65717](https://github.com/godotengine/godot/pull/65717)).
+- Input: Fix `MOUSE_MODE_CAPTURED` not working correctly with popups ([GH-65496](https://github.com/godotengine/godot/pull/65496)).
+- macOS: Fix redraw lag at the edge of the resizing window ([GH-65831](https://github.com/godotengine/godot/pull/65831)).
+- macOS: Add scene/project name to the editor title, improve window button placement ([GH-66152](https://github.com/godotengine/godot/pull/66152), [GH-66254](https://github.com/godotengine/godot/pull/66254)).
+- macOS: Process menu callback after event processing step to avoid event queue corruption ([GH-66377](https://github.com/godotengine/godot/pull/66377)).
+- Navigation: Add NavigationPathQuery objects and NavigationServer `query_path()` ([GH-62429](https://github.com/godotengine/godot/pull/62429)).
+- Networking: HTTP: Implement streaming decompression ([GH-63740](https://github.com/godotengine/godot/pull/63740)).
+- Physics: Turn on recovery as collisions only for floor snapping ([GH-64728](https://github.com/godotengine/godot/pull/64728)).
+- Physics: Add recovery as collision in `move_and_collide`/`test_move` ([GH-65931](https://github.com/godotengine/godot/pull/65931)).
+- Rendering: Split rendering driver project setting into `rendering_method` and `rendering/*/driver` ([GH-65541](https://github.com/godotengine/godot/pull/65541)).
+- Rendering: Fix/restore BackBufferCopy ([GH-65794](https://github.com/godotengine/godot/pull/65794)).
+- Rendering: Restore fog in the Vulkan mobile renderer ([GH-65915](https://github.com/godotengine/godot/pull/65915)).
+- Rendering: Fix SpotLight3D and OmniLight3D project not working ([GH-66065](https://github.com/godotengine/godot/pull/66065)).
+- Rendering: Move deband to end of tonemapping ([GH-66317](https://github.com/godotengine/godot/pull/66317)).
+- Rendering: Fix broken 2D light blending ([GH-66370](https://github.com/godotengine/godot/pull/66370)).
+- Rendering: Fix unshaded CanvasItem mode for Vulkan ([GH-66394](https://github.com/godotengine/godot/pull/66394)).
+- Rendering: Take FXAA samples from half-pixel coordinates to improve quality ([GH-66466](https://github.com/godotengine/godot/pull/66466)).
+- TextServer: Always prefer main font over fallbacks, regardless of script/language support ([GH-66418](https://github.com/godotengine/godot/pull/66418)).
+- Web: Add feature detection helpers to JS Engine class ([GH-65975](https://github.com/godotengine/godot/pull/65975)).
+- Windows: Fix `WM_CHAR` processing code using Unicode char instead of Virtual key ([GH-66295](https://github.com/godotengine/godot/pull/66295)).
+- Windows: Fix `make_dir()` choking on ".." ([GH-66467](https://github.com/godotengine/godot/pull/66467)).
+- XR: Add OpenXR hand tracking support ([GH-60313](https://github.com/godotengine/godot/pull/60313)).
+- XR: Get WebXR minimally working again in Godot 4 ([GH-64514](https://github.com/godotengine/godot/pull/64514), [GH-65800](https://github.com/godotengine/godot/pull/65800)).
+- XR: Dynamic loading of OpenXR Loader on Android ([GH-65798](https://github.com/godotengine/godot/pull/65798)).
+- XR: Add passthrough extension wrapper ([GH-65898](https://github.com/godotengine/godot/pull/65898)).
+- XR: Add OpenXR palm pose extension support ([GH-66282](https://github.com/godotengine/godot/pull/66282)).
+- Thirdparty libraries: libpng 1.6.38.
+
+This release is built from commit [f8745f2f7](https://github.com/godotengine/godot/commit/f8745f2f71c79972df66f17a3da75f6e328bc55d).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/beta2/) (GDScript, GDExtension).
+* [.NET 6 build](https://downloads.tuxfamily.org/godotengine/4.0/beta2/mono) (C#, GDScript, GDExtension).
+ - Requires [.NET SDK 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) installed in a standard location.
+
+## Known issues
+
+As we are still in the early beta phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+Some noteworthy issues you might run into in this beta 2:
+
+- Exporting a Web build fails on Windows due to some file locking issue ([GH-65660](https://github.com/godotengine/godot/issues/65660)).
+ * See the issue for a potential workaround.
+- Following [GH-65541](https://github.com/godotengine/godot/pull/65541), the `rendering/renderer/rendering_method.mobile` project setting wrongly defaults to `forward_plus`, which means using the high-end forward+ rendering method on mobile. Change it to `mobile` if you want to export projects to Android or iOS.
+- LightmapGI and VoxelGI are reported to be broken in this beta ([GH-66618](https://github.com/godotengine/godot/issues/66618), [GH-66639](https://github.com/godotengine/godot/issues/66639)).
+
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-beta-3.md b/collections/_article/dev-snapshot-godot-4-0-beta-3.md
new file mode 100644
index 0000000000..537b6a4cce
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-beta-3.md
@@ -0,0 +1,151 @@
+---
+title: "Dev snapshot: Godot 4.0 beta 3"
+excerpt: "Progress continues on Godot 4.0 development while the community is busy testing our beta builds and reporting bugs. This is now the 3rd beta release, fixing a lot of bugs reported in the previous releases and continuing the implementation of some key features."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/634/94d/db5/63494ddb52303196548493.jpg
+image_caption_title: Black Pellet
+image_caption_description: A game by Raisel Edwards
+date: 2022-10-14 12:07:27
+---
+
+We released [Godot 4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1) one month ago! That was a big milestone on our journey to finalize our next major release – be sure to check out that blog post if you haven't yet, for an overview of some of the main highlight of Godot 4.0.
+
+But the "1" in beta 1 means that it's only the first step of the journey, and like for the alpha phase, we're going to release new beta snapshots roughly every other week.
+
+We're now at beta 3, making good progress on fixing the issues that testers are reporting. In the past two weeks since beta 2, we had over [250 PRs merged](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-09-29..2022-10-13+milestone%3A4.0+is%3Amerged+), many of which fixed bugs reported by beta testers.
+
+[Jump to the **Downloads** section.](#downloads)
+
+*The illustration picture for this article is a screenshot of* [**Black Pellet**](https://twitter.com/blackpelletgame), *an upcoming claymation-style Western adventure by [Raisel Edwards](https://twitter.com/RaiselEdwards), which is being developed with Godot 4.0. Check out their recent [story trailer on YouTube](https://www.youtube.com/watch?v=vjLu8J3sagU), and subscribe to their upcoming [Kickstarter](https://www.kickstarter.com/projects/raiseledwards/black-pellet)!*
+
+## Major changes
+
+This beta 3 is not only bugfixes though! There were a few very important features that we didn't manage to review in time for previous betas, and which have now been implemented in beta 3.
+
+### Multi-caret support in TextEdit and script editors ([GH-61902](https://github.com/godotengine/godot/pull/61902))
+
+Our script editor maintainer, Paul Batty ([Paulb23](https://github.com/Paulb23)), implemented initial support for multi-caret editing in TextEdit, which is therefore usable in the GDScript and shader editors, as well as any other multi-line text field in the editor.
+
+This can be quite handy to insert, select, copy and paste text on several different locations at the same time. See this demonstration made by [MewPurPur](https://github.com/MewPurPur/):
+
+
+
+### Improved ColorPicker UX ([GH-62910](https://github.com/godotengine/godot/pull/62910))
+
+Vitika Soni ([Vitika9](https://github.com/Vitika9/)) reworked the features and user experience of Godot's ColorPicker during Google Summer of Code 2022. The second part of her work has just been merged, and should significantly improve the ColorPicker's UX. You can read more about it in the [GSoC 2022 progress report](/article/gsoc-2022-progress-report-1#colorpicker). This implementation was [based on wireframes](https://github.com/godotengine/godot-proposals/issues/4353#issuecomment-1098934700) contributed by Taylor Wright ([redlamp](https://github.com/redlamp)).
+
+
+
+### Refactored WebSocket module ([GH-66594](https://github.com/godotengine/godot/pull/66594))
+
+Networking maintainer Fabio Alessandrelli ([Faless](https://github.com/Faless)) finalized a complete refactor of the WebSocket module, to modernize its API and re-evaluate some of the earlier design choices made for it. Note that this change **breaks compatibility** - it couldn't be done in time for 4.0 beta 1, but the maintainers agreed that it was still worth changing now before the 4.0 release.
+
+The multiplayer demos [have been updated](https://github.com/godotengine/godot-demo-projects/pull/781) with this change, and you'll find a new [reference implementation for WebSocketServer and WebSocketClient nodes](https://github.com/Faless/gd-websocket-nodes) in GDScript that should ease the transition to the new API.
+
+### Lots of rendering changes
+
+Our rendering contributors keep working on finalizing the implementation of all expected features for Godot 4.0, notably with the following major changes by Clay John ([clayjohn](https://github.com/clayjohn)) and Bastiaan Olij ([BastiaanOlij](https://github.com/BastiaanOlij)):
+- Emulate double precision for regular rendering operation when `REAL_T_IS_DOUBLE` ([GH-66178](https://github.com/godotengine/godot/pull/66178)).
+- Default CanvasItem materials to use sRGB space for uniform colors ([GH-66683](https://github.com/godotengine/godot/pull/66683)).
+- Fix self reflection and roughness quality artifacts in SSR ([GH-66756](https://github.com/godotengine/godot/pull/66756)).
+- OpenGL3: Use a giant UBO to optimize performance in 2D ([GH-66861](https://github.com/godotengine/godot/pull/66861)).
+- OpenGL3: Add 2D lights to canvas renderer ([GH-67335](https://github.com/godotengine/godot/pull/67335)).
+
+### Buildsystem: Unify `tools`/`target` build type configuration ([GH-66242](https://github.com/godotengine/godot/pull/66242))
+
+This doesn't affect most users directly, but for anyone compiling Godot from source, we've refactored the way we define what to build. Our SCons setup used to have `tools` and `target` options that were combined to build either the editor or the export templates, and define whether it's a "release" or "debug" build. The "debug" term in that setup was quite ambiguous however and the source of a lot of confusion, as described in [godot-proposals#3371](https://github.com/godotengine/godot-proposals/issues/3371).
+
+So we refactored all this to have a single `target` option for the main three supported configurations which should be familiar to Godot users:
+- `target=editor`: Editor build, optimized, with debugging code
+- `target=template_debug`: Debug template, optimized, with debugging code
+- `target=template_release`: Release template, optimized
+
+And for people doing engine development, there's a new `dev_build` option which can be used together with `target` to enable dev-specific code and also affects a few presets. It's _still_ somewhat confusing, but better than it used to be - check the PR for details. We'll soon have updated docs to clarify the new options and go in depth on all relevant customization options.
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 beta in general, have a look at the detailed release notes for [4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1). In this beta 3 blog post, we will only cover the main changes since the previous beta release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/f8745f2f71c79972df66f17a3da75f6e328bc55d...01ae26d31befb6679ecd92cd3c73aa5a76162e95) for an overview of all changes since 4.0 beta 2 (274 commits – excluding merge commits ― from 88 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- 2D: Add `debug_color` property to CollisionShape2D ([GH-39072](https://github.com/godotengine/godot/pull/39072)).
+- 2D: Add rotation smoothing to Camera2D ([GH-65776](https://github.com/godotengine/godot/pull/65776)).
+- 3D: Fix bug in CylinderMesh when computing normals ([GH-67336](https://github.com/godotengine/godot/pull/67336)).
+- Animation: Add animation slices for individual animations ([GH-40274](https://github.com/godotengine/godot/pull/40274)).
+- Buildsystem: Add `serve` and `run` SCons targets to test Web editor builds ([GH-64886](https://github.com/godotengine/godot/pull/64886), [GH-67325](https://github.com/godotengine/godot/pull/67325)).
+- Buildsystem: Unify `tools`/`target` build type configuration ([GH-66242](https://github.com/godotengine/godot/pull/66242)).
+ * If you compile Godot from source, be sure to read the description of that PR to know what changed.
+- C#: Fix macOS .NET export ([GH-66952](https://github.com/godotengine/godot/pull/66952)).
+- C#: Generate symbols packages ([GH-67074](https://github.com/godotengine/godot/pull/67074)).
+- Core: Add `is_finite()` method for checking built-in types ([GH-64268](https://github.com/godotengine/godot/pull/64268)).
+- Core: Improve dictionary printing to avoid confusion with arrays ([GH-64577](https://github.com/godotengine/godot/pull/64577)).
+- Core: Expose `OS.read_string_from_stdin()` to scripting ([GH-65751](https://github.com/godotengine/godot/pull/65751)).
+- Core: Add autocompletion to several Object methods ([GH-66427](https://github.com/godotengine/godot/pull/66427)).
+- Core: Various fixes to UID loading and caching ([GH-67124](https://github.com/godotengine/godot/pull/67124)). ([GH-67128](https://github.com/godotengine/godot/pull/67128), [GH-67131](https://github.com/godotengine/godot/pull/67131)).
+- Editor: Add multi-caret support to TextEdit (and the script/shader editors) ([GH-61902](https://github.com/godotengine/godot/pull/61902)).
+- Editor: Add ability to rename groups in the GroupsEditor ([GH-62659](https://github.com/godotengine/godot/pull/62659)).
+- Editor: Define bold, italics and mono fonts in editor log for print_rich() ([GH-62860](https://github.com/godotengine/godot/pull/62860)).
+- Editor: Allow right-click to erase TileSet terrains and TileMap autotiles ([GH-65903](https://github.com/godotengine/godot/pull/65903), [GH-66656](https://github.com/godotengine/godot/pull/66656)).
+- Editor: Add searching by event in Editor Settings shortcuts and Project Settings input map ([GH-66770](https://github.com/godotengine/godot/pull/66770)).
+- Editor: Fix node name casing issues in Scene Tree dock ([GH-67219](https://github.com/godotengine/godot/pull/67219)).
+- Editor: Add empty state to enum properties ([GH-67344](https://github.com/godotengine/godot/pull/67344)).
+- GUI: Improve ColorPicker UX ([GH-62910](https://github.com/godotengine/godot/pull/62910)).
+- GUI: Fix ScrollContainer touch-scrolling not working ([GH-66559](https://github.com/godotengine/godot/pull/66559)).
+- GUI: Add Spritesheet support to RichTextLabel BBCode ([GH-67201](https://github.com/godotengine/godot/pull/67201)).
+- Import: Respect texture filtering when importing glTF ([GH-59481](https://github.com/godotengine/godot/pull/59481)).
+- Input: Allow shortcut input to be JoypadButton ([GH-66750](https://github.com/godotengine/godot/pull/66750)).
+- Linux: Properly handle directional numpad keys when NumLock is off ([GH-66773](https://github.com/godotengine/godot/pull/66773)).
+- Multiplayer: Allow multiple synchronizers per node ([GH-66794](https://github.com/godotengine/godot/pull/66794)).
+- Networking: Refactor websocket module ([GH-66594](https://github.com/godotengine/godot/pull/66594)).
+- Particles: Adds amount property to collision sub particles ([GH-66349](https://github.com/godotengine/godot/pull/66349)).
+- Rendering: Emulate double precision for regular rendering operation when `REAL_T_IS_DOUBLE` ([GH-66178](https://github.com/godotengine/godot/pull/66178)).
+- Rendering: Default CanvasItem materials to use sRGB space for uniform colors ([GH-66683](https://github.com/godotengine/godot/pull/66683)).
+- Rendering: Fix self reflection and roughness quality artifacts in SSR ([GH-66756](https://github.com/godotengine/godot/pull/66756)).
+- Rendering: OpenGL3: Use a giant UBO to optimize performance in 2D ([GH-66861](https://github.com/godotengine/godot/pull/66861)).
+- Rendering: Add a project setting to make the root viewport transparent ([GH-67104](https://github.com/godotengine/godot/pull/67104)).
+- Rendering: Vulkan: Fix culling of negatively-scaled objects ([GH-67176](https://github.com/godotengine/godot/pull/67176)).
+- Rendering: Vulkan: Added fallback to `vkCreateRenderPass` when `VK_KHR_create_renderpass2` is not available ([GH-67227](https://github.com/godotengine/godot/pull/67227)).
+ * This should fix crash-on-start issues for some users using old Vulkan drivers.
+- Rendering: Use radial distance for making LOD decisions ([GH-67307](https://github.com/godotengine/godot/pull/67307)).
+- Rendering: Fix volumetric fog not rendering at densities lower than or equal to 0.001 ([GH-67320](https://github.com/godotengine/godot/pull/67320)).
+- Rendering: OpenGL3: Add 2D lights to canvas renderer ([GH-67335](https://github.com/godotengine/godot/pull/67335)).
+- Web: Fix `Object` type in GodotJSWrapper https://github.com/godotengine/godot/pull/67184
+- Web: Fix file locked issue on Windows when exporting to Web ([GH-67252](https://github.com/godotengine/godot/pull/67252)).
+- XR: Implementing override functionality for XR ([GH-65227](https://github.com/godotengine/godot/pull/65227)).
+
+This release is built from commit [01ae26d31](https://github.com/godotengine/godot/commit/01ae26d31befb6679ecd92cd3c73aa5a76162e95).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/beta3/) (GDScript, GDExtension).
+* [.NET 6 build](https://downloads.tuxfamily.org/godotengine/4.0/beta3/mono) (C#, GDScript, GDExtension).
+ - Requires [.NET SDK 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) installed in a standard location.
+
+## Known issues
+
+As we are still in the early beta phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+Some noteworthy issues in this beta:
+
+- Opening a project prints `ERROR: Condition "font.is_null()" is true at: _shape (scene/gui/line_edit.cpp:2202)`. This is a harmless error which you can ignore ([GH-67388](https://github.com/godotengine/godot/issues/67388)).
+- 2D rendering on Web exports seems to have regressed when implementing 2D lights in the OpenGL3 renderer ([GH-67392](https://github.com/godotengine/godot/issues/67392)).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-beta-4.md b/collections/_article/dev-snapshot-godot-4-0-beta-4.md
new file mode 100644
index 0000000000..743892dcf1
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-beta-4.md
@@ -0,0 +1,87 @@
+---
+title: "Dev snapshot: Godot 4.0 beta 4"
+excerpt: "We're now at 4.0 beta 4, slightly delayed as I was on holiday, but all the more interesting to try out. It adds less new features than previous beta snapshots did, but instead has more focus on bugfixing and stabilization, which should make it a much nicer experience than previous betas."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/636/537/ac4/636537ac48c8e789384743.jpg
+image_caption_title: Godot 4 Beginners
+image_caption_description: An interactive course by Bramwell
+date: 2022-11-04 16:02:54
+---
+
+We released [Godot 4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1) in September, and that was a big milestone on our journey to finalize our next major release – be sure to check out that blog post if you haven't yet, for an overview of some of the main highlight of Godot 4.0.
+
+But the "1" in beta 1 means that it's only the first step of the journey, and like for the alpha phase, we're going to release new beta snapshots roughly every other week.
+
+We're now at beta 4, slightly delayed as I was on holiday, but all the more interesting to try out. It adds less new features than previous beta snapshots did, but instead has more focus on bugfixing and stabilization, which should make it a much nicer experience than previous betas.
+
+[Jump to the **Downloads** section.](#downloads)
+
+*The illustration picture for this article is a screenshot of* [**Godot 4 Beginners**](https://bramwell.itch.io/godot-4-beginners), *an Early Access interactive course for Godot 4, made with Godot 4, developed by [Bramwell](https://www.youtube.com/c/BramwellWilliams). You can check out a [demo on itch.io](https://bramwell.itch.io/godot-4-beginners), and follow Bram on [YouTube](https://www.youtube.com/c/BramwellWilliams) and [Twitter](https://twitter.com/bramreth) for updates and free video tutorials.*
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 beta in general, have a look at the detailed release notes for [4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1). In this beta 4 blog post, we will only cover the main changes since the previous beta release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/01ae26d31befb6679ecd92cd3c73aa5a76162e95...e6751549cf7247965d1744b8c464f5e901006f21), or the [**list of merged PRs**](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-10-14..2022-11-01+is%3Amerged+sort%3Acreated-asc+milestone%3A4.0), for an overview of all changes since 4.0 beta 3 (209 commits – excluding merge commits ― from 78 contributors).
+
+Some of the most notables feature changes in this update are:
+- Android: Use proper types for converting Java float/double arrays ([GH-67581](https://github.com/godotengine/godot/pull/67581)).
+- 2D: Make TileMap terrain painting not change neighbors centers bits ([GH-67390](https://github.com/godotengine/godot/pull/67390)).
+- C#: Reflection-less delegate callables and nested generic Godot collections ([GH-67987](https://github.com/godotengine/godot/pull/67987)).
+- Core: Make some Image methods static ([GH-63332](https://github.com/godotengine/godot/pull/63332)).
+- Core: Expose minizip API to allow creating zips using scripts ([GH-65281](https://github.com/godotengine/godot/pull/65281)).
+- Core: Add ability to pick random value from array ([GH-67444](https://github.com/godotengine/godot/pull/67444)).
+- Editor: Reorganize script editor menu ([GH-64277](https://github.com/godotengine/godot/pull/64277)).
+- Editor: Add "Scene" and "Visibility" buttons in Remote Scene Tree ([GH-65118](https://github.com/godotengine/godot/pull/65118)).
+- Editor: Added custom Node export ([GH-67055](https://github.com/godotengine/godot/pull/67055)).
+- Editor: Make Camera3D gizmo clickable ([GH-68003](https://github.com/godotengine/godot/pull/68003)).
+- Editor: Make texture preview filter setting content aware ([GH-67426](https://github.com/godotengine/godot/pull/67426)).
+- Editor: Add script editor shortcut to add selection and caret for next occurrence of current selection ([GH-67644](https://github.com/godotengine/godot/pull/67644)).
+- Export: Fix exporting with 2GB+ export templates ([GH-67577](https://github.com/godotengine/godot/pull/67577)).
+- GDExtension: Add support for registering virtual and abstract classes ([GH-66979](https://github.com/godotengine/godot/pull/66979)).
+- GDExtension: Implement a way to dump the `gdnative_interface.h` file from the executable ([GH-67309](https://github.com/godotengine/godot/pull/67309)).
+- GDScript: Allow non-constant string message for assert ([GH-62695](https://github.com/godotengine/godot/pull/62695)).
+- GDScript: Implement `RETURN_VALUE_DISCARDED` warning ([GH-67361](https://github.com/godotengine/godot/pull/67361)).
+- GUI: Support AtlasTexture in radial modes of TextureProgressBar ([GH-66352](https://github.com/godotengine/godot/pull/66352)).
+- GUI: Add support for OEM encoded bitmap fonts ([GH-67486](https://github.com/godotengine/godot/pull/67486)).
+- macOS: Ensure Vulkan subgroups are disabled for MoltenVK ([GH-67915](https://github.com/godotengine/godot/pull/67915)).
+- Multiplayer: Move packet relay and peer signaling code to SceneMultiplayer ([GH-67094](https://github.com/godotengine/godot/pull/67094)).
+- Multiplayer: Add MultiplayerPeer `disconnect_peer`, `close` ([GH-67982](https://github.com/godotengine/godot/pull/67982)).
+- Physics: Optimized support function for large meshes ([GH-64382](https://github.com/godotengine/godot/pull/64382)).
+- Rendering: Add OpenGL timer queries to OpenGL3 backend ([GH-67032](https://github.com/godotengine/godot/pull/67032)).
+- Rendering: Improve behaviour of `clip_children` by clipping to parent alpha value but still retaining parent color ([GH-67043](https://github.com/godotengine/godot/pull/67043)).
+- Rendering: Fix drawing of 2D primitives in OpenGL3 renderer ([GH-67416](https://github.com/godotengine/godot/pull/67416)).
+- Rendering: Check for a Vulkan extension before checking its features ([GH-67729](https://github.com/godotengine/godot/pull/67729)).
+- Visual Shader: Add math operators to node names for easier and simpler searching ([GH-67905](https://github.com/godotengine/godot/pull/67905)).
+- Web: Fix error resulting in 2D objects not drawing in the WebGL2 backend ([GH-67402](https://github.com/godotengine/godot/pull/67402)).
+- Windows: Detect Wine and disable unsupported IAudioClient3 interface ([GH-67381](https://github.com/godotengine/godot/pull/67381)).
+- XR: Add multiview to the OpenGL3 driver ([GH-65334](https://github.com/godotengine/godot/pull/65334)).
+- XR: Adding support for the OpenXR Display Refresh Rate extension ([GH-67179](https://github.com/godotengine/godot/pull/67179)).
+
+This release is built from commit [e6751549c](https://github.com/godotengine/godot/commit/e6751549cf7247965d1744b8c464f5e901006f21).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/beta4/) (GDScript, GDExtension).
+* [.NET 6 build](https://downloads.tuxfamily.org/godotengine/4.0/beta4/mono) (C#, GDScript, GDExtension).
+ - Requires [.NET SDK 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) installed in a standard location.
+
+## Known issues
+
+As we are still in the early beta phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-beta-5.md b/collections/_article/dev-snapshot-godot-4-0-beta-5.md
new file mode 100644
index 0000000000..3f7fbbc38f
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-beta-5.md
@@ -0,0 +1,116 @@
+---
+title: "Dev snapshot: Godot 4.0 beta 5"
+excerpt: "Another beta release on the way to Godot 4.0, with a lot of interesting changes! Undo/redo history dock, many GDScript bugs fixed with inner classes, SVG support in OpenType fonts, a lot of rendering fixes and new OpenGL3 features, and a first very early usable version of the Web editor!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: ["/storage/app/uploads/public/637/517/5b5/6375175b5be6f234103652.jpg"]
+image_caption_title: Object Wars
+image_caption_description: A game by Vedg Studio / NoirosL
+date: 2022-11-16 16:38:34
+---
+
+We released [Godot 4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1) in September, and that was a big milestone on our journey to finalize our next major release – be sure to check out that blog post if you haven't yet, for an overview of some of the main highlight of Godot 4.0.
+
+Since then, we've been releasing new beta snapshots every other week, and this is now the 5th beta.
+Some of the most notable changes in this update include:
+
+- Editor: Add undo/redo history dock ([GH-65012](https://github.com/godotengine/godot/pull/65012)).
+- GDScript: Fix countless errors with inner class in GDScript compiler ([GH-68374](https://github.com/godotengine/godot/pull/68374)).
+- GUI: Implement SVG in OT support, enabling SVG emoji fonts ([GH-64530](https://github.com/godotengine/godot/pull/64530)).
+- Rendering: A ton of fixes for all rendering backends, and missing features implemented for the OpenGL3 one.
+- Web: The [**Web editor**](https://editor.godotengine.org/releases/4.0.beta5/godot.editor.html) is now somewhat functional for the first time! It's fairly slow and there are still a lot of issues to iron out, but you should be able to start it, edit a project and run it. It is not yet usable in production.
+
+[Jump to the **Downloads** section.](#downloads)
+
+*The illustration picture for this article is a screenshot of* [**Object Wars**](https://store.steampowered.com/app/1936800/Object_Wars/), *an upcoming multiplayer third person shooter in a cute, homey environment where everyday objects fight it off in battle royale or team deathmatch. The game is developed by Vedg Studio / [NoirosL](https://twitter.com/NoirosL/) and was recently ported to Godot 4.0 beta. [Wishlist it on Steam!](https://store.steampowered.com/app/1936800/Object_Wars/)*
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 beta in general, have a look at the detailed release notes for [4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1). In this beta 5 blog post, we will only cover the main changes since the previous beta release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/e6751549cf7247965d1744b8c464f5e901006f21...89a33d28f00fec579184fb7193790d40aa09b45b), or the [**list of merged PRs**](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-11-02..2022-11-16+is%3Amerged+sort%3Acreated-asc+milestone%3A4.0), for an overview of all changes since 4.0 beta 4 (227 commits – excluding merge commits ― from 70 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- Android: Upgrade Android gradle plugin to version 7.2.1 ([GH-68497](https://github.com/godotengine/godot/pull/68497)).
+- C#: Add implicit conversion from arrays to Variant ([GH-68092](https://github.com/godotengine/godot/pull/68092)).
+- Core: Restore numeric from String constructors ([GH-62814](https://github.com/godotengine/godot/pull/62814)).
+- Core: Add support for empty delimiter in `String.split()` ([GH-64321](https://github.com/godotengine/godot/pull/64321)).
+- Core: Unexpose confusing `String + int` and `int + String` operations ([GH-66361](https://github.com/godotengine/godot/pull/66361)).
+- Core: Add `call_deferred()` method to Callable ([GH-67730](https://github.com/godotengine/godot/pull/67730)).
+- Editor: Add undo/redo history dock ([GH-65012](https://github.com/godotengine/godot/pull/65012)).
+- Editor: Make uids of duplicated items unique in FileSystemDock ([GH-66706](https://github.com/godotengine/godot/pull/66706)).
+- Editor: Better expose editor debugger plugins, use it in the multiplayer module ([GH-66938](https://github.com/godotengine/godot/pull/66938)).
+- Editor: Don't allow instancing virtual node types in the Create New Node dialog ([GH-67614](https://github.com/godotengine/godot/pull/67614)).
+- Editor: Fix multiple issues with region editor ([GH-67810](https://github.com/godotengine/godot/pull/67810)).
+- Editor: Improve dragging scene into 3D viewport ([GH-68020](https://github.com/godotengine/godot/pull/68020)).
+- Editor: Load and use system emoji font in the editor ([GH-68090](https://github.com/godotengine/godot/pull/68090)).
+- Editor: Various style and usability improvements to the in-editor documentation ([GH-68132](https://github.com/godotengine/godot/pull/68132), [GH-68159](https://github.com/godotengine/godot/pull/68159)).
+- Editor: Fix reload scripts error after saving in external editor ([GH-68203](https://github.com/godotengine/godot/pull/68203)).
+- Editor: Fix pathological corner case in drawing tileset editor ([GH-68270](https://github.com/godotengine/godot/pull/68270)).
+- Editor: Disable code font ligatures by default in the editor ([GH-68571](https://github.com/godotengine/godot/pull/68571)).
+- Export: Rename `--export` command line argument to `--export-release` ([GH-60273](https://github.com/godotengine/godot/pull/60273)).
+- GDExtension: Use StringName in GDExtension perf critical instance creation & method/properties setter/getter ([GH-67750](https://github.com/godotengine/godot/pull/67750)).
+- GDExtension: Fix Android extensions export and loading ([GH-68362](https://github.com/godotengine/godot/pull/68362)).
+- GDScript: Fix type mismatch in optimized single arg range ([GH-68125](https://github.com/godotengine/godot/pull/68125)).
+- GDScript: Fix countless errors with inner class in GDScript compiler ([GH-68374](https://github.com/godotengine/godot/pull/68374)).
+- GUI: Implement SVG in OT support, enabling SVG emoji fonts ([GH-64530](https://github.com/godotengine/godot/pull/64530)).
+- GUI: Add a separate hue gradient for ColorPicker OKHSL mode ([GH-67540](https://github.com/godotengine/godot/pull/67540)).
+- GUI: Modularize the Color Picker via properties and new picker mode ([GH-67741](https://github.com/godotengine/godot/pull/67741)).
+- GUI: Add alignment options to FlowContainer ([GH-67788](https://github.com/godotengine/godot/pull/67788)).
+- GUI: Add a Font import option to pre-render all glyphs required for the translation ([GH-68448](https://github.com/godotengine/godot/pull/68448)).
+- Import: Overhaul WebP packer and split compression options ([GH-67948](https://github.com/godotengine/godot/pull/67948)).
+- Import: Improve BoneRenamer to avoid conflicting with original bone name ([GH-68725](https://github.com/godotengine/godot/pull/68725)).
+- Linux: Load GLX dynamically with GLAD ([GH-68586](https://github.com/godotengine/godot/pull/68586)).
+- macOS: Add exclusive fullscreen mode with Dock and Menu disabled ([GH-68257](https://github.com/godotengine/godot/pull/68257)).
+- Multiplayer: Add peer authentication support to the default MultiplayerAPI([GH-67917](https://github.com/godotengine/godot/pull/67917)).
+- Physics: Implement adjusting the maximum number of physics steps per rendered frame ([GH-65836](https://github.com/godotengine/godot/pull/65836)).
+- Rendering: Added Viewport canvas cull mask feature ([GH-52350](https://github.com/godotengine/godot/pull/52350)).
+- Rendering: Use opaque rendering pipeline for alpha hash materials ([GH-61884](https://github.com/godotengine/godot/pull/61884)).
+- Rendering: Default to OpenGL3 driver when using the project manager ([GH-67593](https://github.com/godotengine/godot/pull/67593)).
+- Rendering: Add 2D shadows and canvas SDF to OpenGL3 renderer ([GH-67639](https://github.com/godotengine/godot/pull/67639)).
+- Rendering: Fix `cluster_render.glsl` failing on some Macs ([GH-67746](https://github.com/godotengine/godot/pull/67746)).
+- Rendering: Add optional UV2 logic for lightmapping to primitive shapes ([GH-67975](https://github.com/godotengine/godot/pull/67975)).
+- Rendering: Fix several render issues found while debugging XR ([GH-68102](https://github.com/godotengine/godot/pull/68102)).
+- Rendering: Add texture reading code to OpenGL3 renderer for web and mobile ([GH-68138](https://github.com/godotengine/godot/pull/68138)).
+- Rendering: Scale light shadow bias by soft_shadow_scale to reduce shadow acne ([GH-68339](https://github.com/godotengine/godot/pull/68339)).
+- Rendering: Add GPUParticles to the OpenGL3 renderer ([GH-68426](https://github.com/godotengine/godot/pull/68426)).
+- Rendering: Enable mipmaps in cubemap roughness shader ([GH-68511](https://github.com/godotengine/godot/pull/68511)).
+- Rendering: Properly set `TIME` shader uniform when rendering shadows ([GH-68574](https://github.com/godotengine/godot/pull/68574)).
+- Rendering: Implement OpenGL3 SceneShaderData `is_animated` and `casts_shadows` ([GH-68628](https://github.com/godotengine/godot/pull/68628)).
+- Rendering: Fix alpha hash by correcting typos and doing calculations in object space ([GH-68673](https://github.com/godotengine/godot/pull/68673)).
+- Rendering: Set vsync on window creation when using GLES3 ([GH-68700](https://github.com/godotengine/godot/pull/68700)).
+- Thirdparty: Update libtheora to latest Git (2020.10) ([GH-66516](https://github.com/godotengine/godot/pull/66516)).
+- Thirdparty: Update all Vulkan components to SDK 1.3.231.1 ([GH-68080](https://github.com/godotengine/godot/pull/68080)).
+- Thirdparty: Regenerate GL loader code with GLAD 2 ([GH-68372](https://github.com/godotengine/godot/pull/68372)).
+- Web: Fix shutdown, force WebGL2, fix editor run args ([GH-68292](https://github.com/godotengine/godot/pull/68292)).
+- Web: Fix viewport auto-resize on Web ([GH-68406](https://github.com/godotengine/godot/pull/68406)).
+- Windows: Add console wrapper app to handle console i/o redirection on Windows ([GH-67434](https://github.com/godotengine/godot/pull/67434)).
+- XR: Add support for OpenGL to OpenXR ([GH-67775](https://github.com/godotengine/godot/pull/67775)).
+
+This release is built from commit [89a33d28f](https://github.com/godotengine/godot/commit/89a33d28f00fec579184fb7193790d40aa09b45b).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/beta5/) (GDScript, GDExtension).
+* [.NET 6 build](https://downloads.tuxfamily.org/godotengine/4.0/beta5/mono) (C#, GDScript, GDExtension).
+ - Requires [.NET SDK 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) installed in a standard location.
+
+## Known issues
+
+As we are still in the early beta phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-beta-6.md b/collections/_article/dev-snapshot-godot-4-0-beta-6.md
new file mode 100644
index 0000000000..1cc3ad364d
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-beta-6.md
@@ -0,0 +1,81 @@
+---
+title: "Dev snapshot: Godot 4.0 beta 6"
+excerpt: "After biweekly Godot 4.0 beta snapshots, we've decided to accelerate the cadence to release a new snapshot every week, to get even faster feedback on our bugfixes and potential regressions. Beta 6 fixes infamous issues around cyclic dependencies in GDScript, as well as other nice goodies!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/637/e52/f4e/637e52f4ea8c3720079853.jpg
+image_caption_description: An island scene by HungryProton
+date: 2022-11-23 17:45:59
+---
+
+Godot 4.0 has been in beta for [a little over two months](/article/dev-snapshot-godot-4-0-beta-1), and the overall feature completeness, stability and usability have improved a lot during that time.
+
+We've had beta snapshots every other week, and now we've decided to accelerate the cadence to release a new snapshot every week, to get even faster feedback on our bugfixes, and the potential regressions they may introduce.
+
+This beta 6 includes a few big changes which may interest a lot of users:
+
+- GDScript cyclic reference issues begone! Or so we hope, with the amazing work done by [Adam Scott](https://github.com/adamscott/) in [GH-66714](https://github.com/godotengine/godot/pull/67714). It has been tested thoroughly before merging, but the real trial starts now, with users trying out beta 6 on existing big GDScript codebases. Some regressions are to be expected, so please report any issue and mention differences in behavior between betas.
+- Lots of improvements to the Multiplayer features, and notably the editor tooling. With all this, [Fabio](https://github.com/Faless/) expects this API to be feature complete, so please test the new features and report any issue!
+- Beta testers were starting to be vocal about the missing implementation of the Canvas Enviroment background mode, so [Clay](https://github.com/clayjohn/) went ahead and fixed it! ([GH-68805](https://github.com/godotengine/godot/pull/68805)).
+- [Tokage](https://github.com/TokageItLab) greatly optimized the animation blend tree process, which should give a nice performance boost on complex animations ([GH-68593](https://github.com/godotengine/godot/pull/68593)).
+
+[Jump to the **Downloads** section.](#downloads)
+
+You can also [try the Web editor](https://editor.godotengine.org/releases/4.0.beta6/godot.editor.html) (early testing, it's still slow and unstable).
+
+*The illustration picture for this article is a screenshot of an island scene by [HungryProton](https://twitter.com/HungryProton), made in Godot 4.0 beta with their [Scatter addon](https://github.com/HungryProton/scatter/tree/v4). You can follow HungryProton on [Twitter](https://twitter.com/HungryProton) or [Mastodon](https://mastodon.gamedev.place/@HungryProton), and try out the Scatter addon for [Godot 3.x](https://github.com/HungryProton/scatter) or [4.0 beta](https://github.com/HungryProton/scatter/tree/v4).*
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 beta in general, have a look at the detailed release notes for [4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1). In this beta 6 blog post, we will only cover the main changes since the previous beta release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/89a33d28f00fec579184fb7193790d40aa09b45b...7f8ecffa56834dce3ccbd736738b613d51133dea), or the [**list of merged PRs**](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-11-16..2022-11-22+is%3Amerged+sort%3Acreated-asc+milestone%3A4.0), for an overview of all changes since 4.0 beta 5 (105 commits – excluding merge commits ― from 46 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- Animation: Optimize animation blend tree process ([GH-68593](https://github.com/godotengine/godot/pull/68593)).
+- Core: Fix Image `rotate_90`/`rotate_180` methods ([GH-64284](https://github.com/godotengine/godot/pull/64284)).
+- Core: Fix polygon generation in BitMap ([GH-68732](https://github.com/godotengine/godot/pull/68732)).
+- GDScript: Fix cyclic references in GDScript 2.0 ([GH-67714](https://github.com/godotengine/godot/pull/67714)).
+- GDScript: Fix autoload scenes implicit types ([GH-68987](https://github.com/godotengine/godot/pull/68987)).
+- GDScript: Fix setting to disable all warnings ([GH-68926](https://github.com/godotengine/godot/pull/68926)), don't warn about `RETURN_VALUE_DISCARDED` by default ([GH-69002](https://github.com/godotengine/godot/pull/69002)).
+- Import: Change the way GLTFDocumentExtension classes are registered ([GH-66026](https://github.com/godotengine/godot/pull/66026)).
+- iOS: Various export improvements ([GH-68778](https://github.com/godotengine/godot/pull/68778)).
+- macOS: Update activation hack to work on Ventura ([GH-68777](https://github.com/godotengine/godot/pull/68777)).
+- Multiplayer: RPC visibility ([GH-68678](https://github.com/godotengine/godot/pull/68678)).
+- Multiplayer: New default `multiplayer_peer` acting as server ([GH-68689](https://github.com/godotengine/godot/pull/68689)).
+- Multiplayer: Improve network profiler ([GH-68758](https://github.com/godotengine/godot/pull/68758)).
+- Multiplayer: Initial Replication profiler ([GH-68835](https://github.com/godotengine/godot/pull/68835)).
+- Rendering: Fix Variable Rate Shading issues ([GH-68710](https://github.com/godotengine/godot/pull/68710)).
+- Rendering: Finish implementing Canvas Background mode ([GH-68805](https://github.com/godotengine/godot/pull/68805)).
+- Rendering: Fix drawing of 2D skeletons in the RD renderer ([GH-68863](https://github.com/godotengine/godot/pull/68863)).
+- Windows: Icon export improvements ([GH-68828](https://github.com/godotengine/godot/pull/68828)).
+
+This release is built from commit [7f8ecffa5](https://github.com/godotengine/godot/commit/7f8ecffa56834dce3ccbd736738b613d51133dea).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/beta6/) (GDScript, GDExtension).
+* [.NET 6 build](https://downloads.tuxfamily.org/godotengine/4.0/beta6/mono) (C#, GDScript, GDExtension).
+ - Requires [.NET SDK 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) installed in a standard location. .NET 7.0 is not supported yet, so make sure to install .NET 6.0 specifically.
+
+## Known issues
+
+* Animation: AnimationTree forces properties to be at value in RESET track in `UPDATE_DISCRETE` and `UPDATE_TRIGGER` mode ([GH-69066](https://github.com/godotengine/godot/pull/69066)). *Will be fixed by ([GH-68993](https://github.com/godotengine/godot/pull/68993)) in beta 7.*
+
+As we are still in the early beta phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-beta-7.md b/collections/_article/dev-snapshot-godot-4-0-beta-7.md
new file mode 100644
index 0000000000..a33019b323
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-beta-7.md
@@ -0,0 +1,82 @@
+---
+title: "Dev snapshot: Godot 4.0 beta 7"
+excerpt: "Another weekly beta snapshot on the road to Godot 4.0! Includes Android GLES3 support, Z index and Y sort are now available in Controls, and both C# and GDScript got a ton of fixes."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/638/8d9/a60/6388d9a60ac95864295672.jpg
+image_caption_title: Disinfection
+image_caption_description: A game by Evil Turtle Productions
+date: 2022-12-01 16:47:59
+---
+
+Godot 4.0 has been in beta for [over two months](/article/dev-snapshot-godot-4-0-beta-1), and the overall feature completeness, stability and usability have improved a lot during that time.
+
+We've had beta snapshots every other week, and now we've decided to accelerate the cadence to release a new snapshot every week, to get even faster feedback on our bugfixes, and the potential regressions they may introduce.
+
+Some big changes in this beta:
+- Android: Enable GLES3 support ([GH-69355](https://github.com/godotengine/godot/pull/69355)).
+- Core: Move `z_index`, `z_as_relative` and `y_sort_enabled` from Node2D to CanvasItem ([GH-68070](https://github.com/godotengine/godot/pull/68070)).
+- C#: Tons of improvements!
+- GDScript: Loads of follow-up improvements to recent fixes in beta 5 and 6.
+
+[Jump to the **Downloads** section.](#downloads)
+
+You can also [try the Web editor](https://editor.godotengine.org/releases/4.0.beta7/godot.editor.html) (early testing, it's still slow and unstable).
+
+*The illustration picture for this article is a screenshot of* [**Disinfection**](https://store.steampowered.com/app/1921130/Disinfection/), *a space horror game by indie duo [Evil Turtle Productions](https://twitter.com/EvilTurtleGames) which is currently being ported to Godot 4.0 beta. You can follow the developers on [Twitter](https://twitter.com/EvilTurtleGames) and [Mastodon](https://mastodon.gamedev.place/@evilturtle), and wishlist the game on [Steam](https://store.steampowered.com/app/1921130/Disinfection/).*
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 beta in general, have a look at the detailed release notes for [4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1). In this beta 6 blog post, we will only cover the main changes since the previous beta release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/7f8ecffa56834dce3ccbd736738b613d51133dea...0ff8742919af72c7412e63ef0f646cb4e7bd7d8f), or the [**list of merged PRs**](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-11-22..2022-11-30+is%3Amerged+sort%3Acreated-asc+milestone%3A4.0), for an overview of all changes since 4.0 beta 6 (136 commits – excluding merge commits ― from 56 contributors).
+
+Some of the most notables feature changes in this update are:
+
+- Android: Bump the minimum Android target API to 21 (Android Lollipop) ([GH-67610](https://github.com/godotengine/godot/pull/67610)).
+- Android: Enable GLES3 support ([GH-69355](https://github.com/godotengine/godot/pull/69355)).
+- Animation: Add "Trimming" option to cut un-keyed timeline before first key in glTF animation ([GH-68665](https://github.com/godotengine/godot/pull/68665)).
+- Core: Move `z_index`, `z_as_relative` and `y_sort_enabled` from Node2D to CanvasItem ([GH-68070](https://github.com/godotengine/godot/pull/68070)).
+- C#: Fix marshaling generic Godot collections ([GH-65905](https://github.com/godotengine/godot/pull/65905)).
+- C#: Cleanup and sync StringExtensions with core ([GH-67031](https://github.com/godotengine/godot/pull/67031)).
+- C#: Load assemblies as collectible only in the Godot editor ([GH-67511](https://github.com/godotengine/godot/pull/67511)).
+- C#: Optimize Variant conversion callbacks ([GH-68310](https://github.com/godotengine/godot/pull/68310)).
+- C#: Remove VariantSpanDisposer and use constants in stackalloc ([GH-69194](https://github.com/godotengine/godot/pull/69194)).
+- Editor: Fixes and improvements to Search Results dock ([GH-66574](https://github.com/godotengine/godot/pull/66574)).
+- Editor: Add Black (OLED) editor theme preset ([GH-67871](https://github.com/godotengine/godot/pull/67871)).
+- Editor: Allow directly instantiate scripts in scene tree ([GH-68648](https://github.com/godotengine/godot/pull/68648)).
+- Editor: Add button to keep the debug server open ([GH-69164](https://github.com/godotengine/godot/pull/69164)).
+- GDScript: Fix singleton scene cyclic loading ([GH-69079](https://github.com/godotengine/godot/pull/69079)).
+- GDScript: Fix cyclic reference base being loaded but not valid (which is ok) ([GH-69259](https://github.com/godotengine/godot/pull/69259)).
+- iOS: Fix getting Unicode executable path, fix error spam on start ([GH-68740](https://github.com/godotengine/godot/pull/68740)).
+- Physics: Fix `physics/3d/run_on_separate_thread` race condition in WorkerThreadPool ([GH-67680](https://github.com/godotengine/godot/pull/67680)).
+- Rendering: Vulkan: Improve logic for detecting and tracking extensions ([GH-68833](https://github.com/godotengine/godot/pull/68833)).
+- Rendering: OpenGL: Fix drawing of Mesh2D ([GH-69135](https://github.com/godotengine/godot/pull/69135)).
+- XR: Add partial support for Pico 4 ([GH-68023](https://github.com/godotengine/godot/pull/68023)).
+
+This release is built from commit [0ff874291](https://github.com/godotengine/godot/commit/0ff8742919af72c7412e63ef0f646cb4e7bd7d8f).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/beta7/) (GDScript, GDExtension).
+* [.NET 6 build](https://downloads.tuxfamily.org/godotengine/4.0/beta7/mono) (C#, GDScript, GDExtension).
+ - Requires [.NET SDK 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) installed in a standard location. .NET 7.0 is not supported yet, so make sure to install .NET 6.0 specifically.
+
+## Known issues
+
+As we are still in the early beta phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-beta-8.md b/collections/_article/dev-snapshot-godot-4-0-beta-8.md
new file mode 100644
index 0000000000..611ac42ecc
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-beta-8.md
@@ -0,0 +1,98 @@
+---
+title: "Dev snapshot: Godot 4.0 beta 8"
+excerpt: "Another weekly beta snapshot for Godot 4.0! And on a Friday, because that's the best day for releasing software!"
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/639/34f/741/63934f741900a568331508.jpg
+image_caption_title: Sandfire
+image_caption_description: A game by Kmitt
+date: 2022-12-09 16:04:53
+---
+
+Godot 4.0 has been in beta for [over two months](/article/dev-snapshot-godot-4-0-beta-1), and the overall feature completeness, stability and usability have improved a lot during that time.
+
+We initially had beta snapshots every other week, and now we've decided to accelerate the cadence to release a new snapshot every week, to get even faster feedback on our bugfixes, and the potential regressions they may introduce.
+
+[Jump to the **Downloads** section.](#downloads)
+
+You can also [try the Web editor](https://editor.godotengine.org/releases/4.0.beta8/godot.editor.html) (early testing, it's still slow and unstable).
+
+*The illustration picture for this article is a screenshot of* **Sandfire**, *an upcoming 3D person action-adventure game by [Kmitt](https://twitter.com/kmitt91/). The game was recently ported to Godot 4, see [Kmitt's YouTube channel](https://youtube.com/channel/UCbf7bKRX6aTr1Tix1nTJo1Q) and [Twitter](https://twitter.com/kmitt91/) for devlogs and updates.*
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 beta in general, have a look at the detailed release notes for [4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1). In this blog post, we will only cover the main changes since the previous beta release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/0ff8742919af72c7412e63ef0f646cb4e7bd7d8f...c6e40e1c01200052450df10d9126f8ea7f57de30), or the [**list of merged PRs**](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-11-30..2022-12-08+is%3Amerged+sort%3Acreated-asc+milestone%3A4.0), for an overview of all changes since 4.0 beta 7 (149 commits – excluding merge commits ― from 49 contributors).
+
+While we do our best to minimize compatibility breaking changes for existing beta users, there are still occasional changes in the API which may impact your Godot 4 projects. See the list of PRs with the [`breaks compat` label](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-12-01..2022-12-08+is%3Amerged+sort%3Acreated-asc+milestone%3A4.0+label%3A%22breaks+compat%22) for details.
+
+Some of the most notables feature changes in this update are:
+
+- Animation: Add track validator to AnimationPlayerEditor to detect tracks which have error ([GH-68770](https://github.com/godotengine/godot/pull/68770)).
+- Animation: Refactor process of animation to retrive keys more exactly ([GH-69336](https://github.com/godotengine/godot/pull/69336)).
+- Animation: Remove `UPDATE_TRIGGER` mode from `ValueTrack::UpdateMode` & match behaviors between AnimationTree and AnimationPlayer ([GH-69357](https://github.com/godotengine/godot/pull/69357)).
+- C#: Fix signature of generated signal callbacks ([GH-67023](https://github.com/godotengine/godot/pull/67023)).
+- C#: Fix C# solution directory project setting ([GH-69391](https://github.com/godotengine/godot/pull/69391)).
+- Core: Add readahead to VariantParser ([GH-69119](https://github.com/godotengine/godot/pull/69119)).
+- Core: Fix `ResourceLoader::thread_load_tasks` crash ([GH-69679](https://github.com/godotengine/godot/pull/69679)).
+- Editor: Draw fish bones for Path3D and Path2D in the editor ([GH-68860](https://github.com/godotengine/godot/pull/68860)).
+- Editor: Add touch-friendly navigation control to the 3D editor viewport ([GH-69364](https://github.com/godotengine/godot/pull/69364)).
+- GDExtension: Remove unnecessary checks when exporting gdextension binaries and allow using a prefix to auto-detect files ([GH-67906](https://github.com/godotengine/godot/pull/67906)).
+- GDScript: Fix LSP crash by keeping GDScriptAnalyzer alive for whole `parse()` ([GH-69606](https://github.com/godotengine/godot/pull/69606)).
+- GUI: Use system fonts as fallback ([GH-68995](https://github.com/godotengine/godot/pull/68995)).
+- Import: Fix group reimport bug affecting AtlasTexture ([GH-68324](https://github.com/godotengine/godot/pull/68324)).
+- Import: Fix swapped color channels in ETC1/ETC2 textures, etcpak expects BGRA data ([GH-69448](https://github.com/godotengine/godot/pull/69448)).
+- Import: Fix crash on old glTF scene reimport ([GH-69627](https://github.com/godotengine/godot/pull/69627)).
+- Input: Fix routing of InputEventScreenDrag events to Control nodes ([GH-68632](https://github.com/godotengine/godot/pull/68632)).
+- Linux: Load X11 dynamically ([GH-69449](https://github.com/godotengine/godot/pull/69449)).
+- Linux: Split fullscreen mode into `WINDOW_MODE_EXCLUSIVE_FULLSCREEN` and `WINDOW_MODE_FULLSCREEN` to improve multi-window handling ([GH-69707](https://github.com/godotengine/godot/pull/69707)).
+- macOS: Add support for Xcode notarytool ([GH-69638](https://github.com/godotengine/godot/pull/69638)).
+- Physics: Fix collision detection for degenerate capsules ([GH-69657](https://github.com/godotengine/godot/pull/69657)).
+- Porting: Enable raycast/embree module build for Web and Windows x86_32 ([GH-69169](https://github.com/godotengine/godot/pull/69169)).
+- Rendering: Use circular fade instead of linear fade for distance fade ([GH-50294](https://github.com/godotengine/godot/pull/50294)).
+- Rendering: Tweak shadow bias defaults for DirectionalLight3D and OmniLight3D ([GH-55757](https://github.com/godotengine/godot/pull/55757)).
+- Rendering: Fix AABB errors on meshes with bones on multiple surfaces ([GH-65035](https://github.com/godotengine/godot/pull/65035)).
+- Rendering: Implement `CAMERA_VISIBLE_LAYERS` as built-in shader variable ([GH-67387](https://github.com/godotengine/godot/pull/67387)).
+- Rendering: Properly remap roughness when reading from radiance map ([GH-69514](https://github.com/godotengine/godot/pull/69514)).
+- Rendering: Allow black metallic materials to reflect IBL ([GH-69522](https://github.com/godotengine/godot/pull/69522)).
+- Rendering: Fix mobile and gl_compatibility renderers `sky_transform` operations ([GH-69636](https://github.com/godotengine/godot/pull/69636)).
+- Rendering: Vulkan: Fix incorrect handling of various Vulkan version numbers ([GH-69322](https://github.com/godotengine/godot/pull/69322)).
+- Rendering: OpenGL: Implement Skeletons and Blend Shapes ([GH-69325](https://github.com/godotengine/godot/pull/69325)).
+- Rendering: OpenGL: Expose emulated `*Unorm4x8` GLSL functions in non-Android builds ([GH-69521](https://github.com/godotengine/godot/pull/69521)).
+- Rendering: OpenGL: Use internal texture name when setting texture uniform location ([GH-69633](https://github.com/godotengine/godot/pull/69633)).
+- Visual Shader: Make custom visual shader nodes automatically updates from script ([GH-69738](https://github.com/godotengine/godot/pull/69738)).
+- XR: WebXR is now fully working in Godot 4! ([GH-68870](https://github.com/godotengine/godot/pull/68870)).
+- XR: Make submitting depth buffer in OpenXR optional ([GH-69654](https://github.com/godotengine/godot/pull/69654)).
+
+This release is built from commit [c6e40e1c0](https://github.com/godotengine/godot/commit/c6e40e1c01200052450df10d9126f8ea7f57de30).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/beta8/) (GDScript, GDExtension).
+* [.NET 6 build](https://downloads.tuxfamily.org/godotengine/4.0/beta8/mono) (C#, GDScript, GDExtension).
+ - Requires [.NET SDK 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) installed in a standard location. .NET 7.0 is not supported yet, so make sure to install .NET 6.0 specifically.
+
+## Known issues
+
+As we are still in the early beta phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+Some notable regressions in this build:
+
+- Moving/renaming resources cause unopened/unused tscn/res files to become corrupted ([GH-69794](https://github.com/godotengine/godot/pull/69794)).
+- OpenGL: Project crashes when there's an OmniLight3D or a SpotLight3D in the scene, but not both ([GH-69886](https://github.com/godotengine/godot/issues/69886)).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dev-snapshot-godot-4-0-beta-9.md b/collections/_article/dev-snapshot-godot-4-0-beta-9.md
new file mode 100644
index 0000000000..c9f285d0a6
--- /dev/null
+++ b/collections/_article/dev-snapshot-godot-4-0-beta-9.md
@@ -0,0 +1,101 @@
+---
+title: "Dev snapshot: Godot 4.0 beta 9"
+excerpt: "Another weekly beta snapshot for Godot 4.0! Notable changes: String/StringName unification, out of order member resolution in GDScript, OpenGL 3 renderer selectable in the Project Manager, and with improved performance and compatibility on lower end devices."
+categories: ["pre-release"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/63a/070/ed6/63a070ed63208559579129.jpg
+image_caption_title: FRANZ FURY car scene
+image_caption_description: 3D model by Raffaele Picca
+date: 2022-12-19 14:26:01
+---
+
+Godot 4.0 has been in beta for [over three months](/article/dev-snapshot-godot-4-0-beta-1), and the overall feature completeness, stability and usability have improved a lot during that time.
+
+We continue to release a new snapshot every week to get fast feedback on our bugfixes, and potential regressions they may introduce. Thank you for your rigorous testing and timely reports!
+
+This beta includes a few big changes which may interest a lot of users:
+
+- `String` and `StringName` are now mostly cross-compatible throughout the engine API, as well as in various GDScript-specific expressions and statements ([GH-68747](https://github.com/godotengine/godot/pull/68747)).
+- GDScript now fully supports out of order member resolution ([GH-69471](https://github.com/godotengine/godot/pull/69471)).
+- Every supported renderer option is now selectable from the project creation screen, which means you can create OpenGL 3 ("Compatibility") projects without using the command line ([GH-70028](https://github.com/godotengine/godot/pull/70028)).
+- The OpenGL renderer now use an instanced array buffer instead of UBO for canvas item batching, increasing performance and compatibility on low-end devices, including Intel Macs ([GH-70065](https://github.com/godotengine/godot/pull/70065)).
+
+[Jump to the **Downloads** section.](#downloads)
+
+You can also [try the Web editor](https://editor.godotengine.org/releases/4.0.beta9/godot.editor.html) (early testing, it's still slow and unstable).
+
+*The illustration picture for this article is from [Raffaele Picca](https://campsite.bio/raffa)'s [car scene](https://twitter.com/MV_Raffa/status/1603697398920118272), rendered in Godot 4.0 using the [Movie Maker mode](/article/movie-maker-mode-arrives-in-godot-4), for the main menu of the upcoming* [**FRANZ FURY**](https://store.steampowered.com/app/1513960/FRANZ_FURY/) *game (made with Godot 3.x). Also check out Raffaele's* [**Beat Invaders**](https://store.steampowered.com/app/1863080/Beat_Invaders/) *released earlier this year.*
+
+## What's new
+
+If you're interested in an overview of what's new in Godot 4.0 beta in general, have a look at the detailed release notes for [4.0 beta 1](/article/dev-snapshot-godot-4-0-beta-1). In this blog post, we will only cover the main changes since the previous beta release.
+
+See the [**changelog on GitHub**](https://github.com/godotengine/godot/compare/c6e40e1c01200052450df10d9126f8ea7f57de30...e780dc332a0a3f642a6daf8548cb211d79a2cc45), or the [**list of merged PRs**](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-12-09..2022-12-18+is%3Amerged+sort%3Acreated-asc+milestone%3A4.0), for an overview of all changes since 4.0 beta 8 (178 commits – excluding merge commits ― from 63 contributors).
+
+While we do our best to minimize compatibility breaking changes for existing beta users, there are still occasional changes in the API which may impact your Godot 4 projects. See the list of PRs with the [`breaks compat` label](https://github.com/godotengine/godot/pulls?q=is%3Apr+merged%3A2022-12-09..2022-12-18+is%3Amerged+sort%3Acreated-asc+milestone%3A4.0+label%3A%22breaks+compat%22) for details.
+
+Some of the most notables feature changes in this update are:
+
+- 3D: Switch Mesh surface indexing to start at 0 so string name matches integer index ([GH-70176](https://github.com/godotengine/godot/pull/70176)).
+- Buildsystem: Rename `float=64` SCons option to `precision=double` ([GH-67399](https://github.com/godotengine/godot/pull/67399)).
+- C#: Rename SignalInfo to Signal and make awaitable ([GH-69968](https://github.com/godotengine/godot/pull/69968)).
+- Core: Add feature tags to signify engine float precision ([GH-69538](https://github.com/godotengine/godot/pull/69538)).
+- Core: Handle corner cases for curve baking ([GH-69726](https://github.com/godotengine/godot/pull/69726)).
+- Core: Make VariantParser readahead optional, fixing scene corruption when renaming dependencies ([GH-69961](https://github.com/godotengine/godot/pull/69961)).
+- Editor: Add one-way indicator to tile collision editor ([GH-67283](https://github.com/godotengine/godot/pull/67283)).
+- Editor: Add open scene button in Inspector for PackedScene resource ([GH-69938](https://github.com/godotengine/godot/pull/69938)).
+- Editor: Add remote history to EditorUndoRedoManager ([GH-69732](https://github.com/godotengine/godot/pull/69732)).
+- Editor: Add `gl_compatibility` as an option to the project creation screen ([GH-70028](https://github.com/godotengine/godot/pull/70028)).
+- Editor: Fix autocomplete on functions returning variants ([GH-69897](https://github.com/godotengine/godot/pull/69897)).
+- Editor: Improve tile editor selection appearance ([GH-60892](https://github.com/godotengine/godot/pull/60892)).
+- Editor: Improve TileSetAtlasSourceEditor UI ([GH-69300](https://github.com/godotengine/godot/pull/69300)).
+- Editor: Restore AudioStreamEditor class to fix playable sound previews ([GH-70074](https://github.com/godotengine/godot/pull/70074)).
+- GDExtension: Rename all gdnative occurences to gdextension ([GH-69718](https://github.com/godotengine/godot/pull/69718)).
+- GDExtension: Improve logic around using `Ref` with GDExtension virtual functions ([GH-69902](https://github.com/godotengine/godot/pull/69902)).
+- GDScript: Add implicit type conversion for member variables with initializers ([GH-69416](https://github.com/godotengine/godot/pull/69416)).
+- GDScript: Out of order member resolution ([GH-69471](https://github.com/godotengine/godot/pull/69471)).
+- GDScript: Unify StringName and String ([GH-68747](https://github.com/godotengine/godot/pull/68747)).
+- GUI: Copy local theme overrides from `Control` to `Window` ([GH-69353](https://github.com/godotengine/godot/pull/69353)).
+- GUI: RichTextLabel: Add baseline inline alignment mode for objects and tables ([GH-69776](https://github.com/godotengine/godot/pull/69776)).
+- Import: Add a dialog for customizing FBX import ([GH-59810](https://github.com/godotengine/godot/pull/59810)).
+- Navigation: Enable assigning an owner to navigation regions and links ([GH-66729](https://github.com/godotengine/godot/pull/66729)).
+- Navigation: Rename some methods and properties in the API for consistency ([GH-69331](https://github.com/godotengine/godot/pull/69931)).
+ * **Note:** This breaks compatibility intentionally, but we missed merging relevant transition code in this beta ([GH-70244](https://github.com/godotengine/godot/pull/70244)). If you have existing scenes and resources with navigation polygons and meshes, you might want to skip beta 9 and wait for beta 10 in a few days so that your scenes and resources are ported seamlessly.
+- Navigation: Mark navigation classes and nodes as experimental ([GH-70230](https://github.com/godotengine/godot/pull/70230)).
+- Physics: Fix 2D & 3D Continuous Collision Detection sometimes adjusting velocity too much ([GH-69934](https://github.com/godotengine/godot/pull/69934)).
+- Rendering: Detect and report if 2D particles use the screen SDF ([GH-69735](https://github.com/godotengine/godot/pull/69735)).
+- Rendering: Various fixes and documentation for CanvasGroup ([GH-70003](https://github.com/godotengine/godot/pull/70003)).
+- Rendering: Remove high quality glow as it is not any higher quality than regular glow ([GH-70009](https://github.com/godotengine/godot/pull/70009)).
+- Rendering: Implement `render_target_was_used` API so that Viewports can properly check if they have been used ([GH-70132](https://github.com/godotengine/godot/pull/70132)).
+- Rendering: OpenGL: Fix scene shader error when using Omni or Spot but not both ([GH-69901](https://github.com/godotengine/godot/pull/69901)).
+- Rendering: OpenGL: Use instanced array buffer instead of UBO for canvas item batching ([GH-70065](https://github.com/godotengine/godot/pull/70065)).
+- Rendering: OpenGL: Implement missing boot image feature ([GH-70169](https://github.com/godotengine/godot/pull/70169)).
+- Shaders: Fix the sorting of shader uniforms ([GH-70016](https://github.com/godotengine/godot/pull/70016)).
+- Shaders: Optimize code generation of visual shader particles ([GH-69900](https://github.com/godotengine/godot/pull/69900)).
+
+This release is built from commit [e780dc332](https://github.com/godotengine/godot/commit/e780dc332a0a3f642a6daf8548cb211d79a2cc45).
+
+
+## Downloads
+
+The downloads for this dev snapshot can be found directly on our repository:
+
+* [Standard build](https://downloads.tuxfamily.org/godotengine/4.0/beta9/) (GDScript, GDExtension).
+* [.NET 6 build](https://downloads.tuxfamily.org/godotengine/4.0/beta9/mono) (C#, GDScript, GDExtension).
+ - Requires [.NET SDK 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) installed in a standard location. .NET 7.0 is not supported yet, so make sure to install .NET 6.0 specifically.
+
+## Known issues
+
+As we are still in the early beta phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of [known bugs in the 4.0 milestone](https://github.com/godotengine/godot/issues?q=is%3Aissue+is%3Aopen+milestone%3A4.0+label%3Abug+).
+
+## Bug reports
+
+As a tester, you are encouraged to [open bug reports](https://github.com/godotengine/godot/issues) if you experience issues with this release. Please check first the [existing issues on GitHub](https://github.com/godotengine/godot/issues), using the search function with relevant keywords, to ensure that the bug you experience is not known already.
+
+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.
+
+## Support
+
+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](https://godotengine.org/donate). A big thankyou to everyone who has contributed [their time](https://github.com/godotengine/godot/blob/master/AUTHORS.md) or [financial support](https://github.com/godotengine/godot/blob/master/DONORS.md) to the project!
+
+If you'd like to support the project financially and help us secure our future hires, you can do so on [Patreon](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/dlscript-here.md b/collections/_article/dlscript-here.md
new file mode 100644
index 0000000000..8a7ea0ee96
--- /dev/null
+++ b/collections/_article/dlscript-here.md
@@ -0,0 +1,189 @@
+---
+title: "GDNative is here!"
+excerpt: "A short introduction to the new GDNative module (formerly DLScript) and how to use it in a project. This is a very early version, but the overall process will stay the same."
+categories: ["progress-report"]
+author: karroffel
+image: /storage/app/uploads/public/58e/4eb/cb6/58e4ebcb63d98659868573.png
+date: 2017-04-05 00:00:00
+---
+
+**Edit:** Based on community feedback and to avoid confusion (DLScript is not yet another domain specific language), the module was renamed to *GDNative*.
+
+----------
+
+... at least the first usable version, there's still work to do, *but* it's usable!
+
+As some of you might have heard, we were working on a module that lets you use shared libraries as scripts.
+
+I'll explain what GDNative exactly is, what it is *not*, what you can use it for and lastly show you *how* to use it.
+
+## So what is GDNative?
+
+It is a module for Godot that adds a new "scripting language" to it. I put "scripting language" in quotes because it's not a language.
+
+A "script" in Godot is defined as something that has methods, properties and signals.
+It also offers a way to use these things (calling methods, get and set properties...).
+Instead of having a text file representing these things (like a GDScript file for example),
+GDNative uses shared libraries, which can be attached to nodes via *Native* "scripts".
+
+In some ways, shared libraries have things in common with scripts.
+
+ - you can load them
+ - you can unload them
+ - you can load function symbols
+ - you can call functions
+
+A method in a Native script is just native machine code. You can call third party libraries from that code as well.
+You can call GDScript functions from a Native script and vice versa. When C# will be supported optionally, you'll be able to call C# code as well.
+
+## So what is GDNative not?
+
+I want to keep this section short. A Native script is not a module.
+Modules have access to all the C++ classes available in Godot and can extend engine functionality.
+You want a different renderer? Module. You want to add networking capabilities to all nodes ([*ahem*](/article/godots-new-high-level-networking-preview))? Modules.
+
+"A Native script", as in "a script you're writing", is just a script, just like a GDScript file, so it doesn't have access to those classes, it also can't extend engine functionality.
+But it has access to the whole script API (aka the class API you know from the [docs](http://docs.godotengine.org/en/latest/classes/)).
+
+This is one way of communication. A Native script can access the class API and can register methods and properties.
+
+
+
+The other way is like the opposite direction: a Native script can also access code from third party libraries.
+
+
+
+Methods that are registered to the scripting system can call third party code, but a Native script can't integrate something into the engine - it can only "proxy" direct calls.
+
+So Native scripts can't "hack the engine", but you can build some nice scripts that enable you to use the steamworks API, or Google Play Services **without recompiling the engine**.
+
+## What can you use GDNative for?
+
+There are basically two big use cases:
+
+ - **performance critical code**. GDScript is an excellent language for making games and quick prototyping. It was designed with simplicity in mind, not performance. Some users report that they reached GDScript's limits while e.g. procedurally generating terrain. Since GDNative runs native code it has literally *zero* overhead when it comes to raw computation power (provided you don't make calls into the script system all the time).
+
+ - **binding third party code to Godot**. The nature of dynamic linking allows Native scripts to load other libraries as well - and use those. Like explained above, Native scripts are not a replacement for modules, but for binding an independent library (for example steamworks) it's a much better choice than developing a module.
+
+## How to use GDNative?
+
+This part is like a little tutorial to get you started.
+
+I mentioned that GDNative is not a *language*. It loads shared libraries. These shared libraries can be written in any language you want. Godot just needs to know how to use them.
+Because of that, there's no code editor for GDNative in the Godot editor. Because *there is no source code*. There only is a shared library, nothing more, nothing less.
+So you have to write your code outside of the editor.
+
+The GDNative API is a C API. Because writing code in C (especially more "high level code" like you'd write for Godot) can get very messy very fast I wrote C++ bindings.
+I'll show how to use these C++ bindings to write a script for a node.
+
+You'll need a relatively fresh build of Godot (for example from [here](https://github.com/GodotBuilder/godot-builds/releases/tag/master_20170405), or you can build it yourself (or wait for 3.0)).
+Like I said, the GDNative API is a C API, so you'll need headers to access this C API. Additionally you want C++ headers to use the C++ bindings. You can download a *starter kit* [here](https://github.com/GodotNativeTools/cpp_bindings/releases/download/starter_kit/godot_cpp_starter_kit.zip).
+
+This starter kit is just to get you started. It'll probably be outdated very soon. New versions of the C++ bindings and the C Headers can be found [here](https://github.com/GodotNativeTools/cpp_bindings) and [here](https://github.com/GodotNativeTools/godot_headers). Since this is all very WIP, it's possible that there are no recent uploaded binaries for you on these repos. Just be patient or get in touch with me (you can find out how on the bottom of this blog).
+
+Just leave the starter kit alone for now. We'll create a project and a very basic scene first.
+(If you are not familiar with making scenes and setting up nodes you should check out the [step by step tutorial](http://docs.godotengine.org/en/latest/learning/step_by_step/))
+
+### Setting up the scene
+
+Create a project and set up the scene. I just created a Node2D as the root node, added a KinematicBody2D and a Sprite using the lovely default icon.
+
+
+
+I saved the scene in the project root with the name `main.tscn`.
+
+Okay, for now that's all we do with the scene. Now we'll set up the code for the library. For that you should unpack the zip file you downloaded earlier in your project root.
+Your project directory should now look like this. (and two .dll files lying around there too)
+
+
+
+### Building the library
+
+The `include` directory contains all the needed headers. The `lib` directory contains the C++ binding implementation. We'll also compile our game code library into that directory. The `src` directory will contain the source code from which we'll build the library for our game. It contains a simple build script. Fill in the name of the project (into the variable `project_name`) in the SConstruct file.
+
+For this example, we'll create a class called `Player` that will move the KinematicBody2D.
+
+Add a file `src/init.cpp`. For simplicity we'll have all the code in this file. For a more serious project you'd want to split the code in headers and implementations.
+
+Write following code into the `src/init.cpp` file:
+
+
+ #include
+
+ #include
+ #include
+
+ using namespace godot;
+
+ class Player : public KinematicBody2D {
+ GODOT_CLASS(Player, KinematicBody2D)
+
+ float speed = 200; // pixel/second
+
+ public:
+
+ void _fixed_process(float delta)
+ {
+ Vector2 input;
+
+ if (Input::is_action_pressed("ui_up")) {
+ input.y -= 1;
+ }
+ if (Input::is_action_pressed("ui_down")) {
+ input.y += 1;
+ }
+ if (Input::is_action_pressed("ui_left")) {
+ input.x -= 1;
+ }
+ if (Input::is_action_pressed("ui_right")) {
+ input.x += 1;
+ }
+
+ self->move(input.normalized() * speed * delta);
+ }
+
+ static void _register_methods()
+ {
+ register_method("_fixed_process", &Player::_fixed_process);
+ }
+
+ };
+
+ GODOT_DLSCRIPT_INIT(godot_dlscript_init_options *options)
+ {
+ register_class();
+ }
+
+
+If you open a terminal in `src/` and execute `scons p=linux` (or `scons p=windows` for windows) then you should see it successfully compile the code into a library in `lib/`.
+
+Ok, now we only need to do two more things.
+ - add a Native script to the KinematicBody2D
+ - tell Godot where it can find our library
+
+To add a Native script to the node you attach a script as always *but select Native and type in "Player" for the class name*. Also I'm going to use a built-in-script.
+
+
+
+*Edit:* Since DLScript was renamed to GDNative, the above screenshot is now slightly inaccurate, but should give the idea.
+
+This was the "add a Native script to the node" part. Now we need to tell Godot in which library it can find our class definition.
+
+
+
+Then click the small arrow to the right, fill in path to (`lib/` + projectname) for your OS.
+Then save it under `lib/library.tres`.
+
+
+
+If you play the scene now, you should be able to control the icon with your arrow keys.
+
+## Further notes
+
+This C++ binding is subject to change. It's more low level and most stuff is still undocumented (did you notice the `self->move(...)`? You need to use `self` to refer to the node the current class is attached to).
+I'll write documentation for the C++ bindings. I'll also write documentation for the C API so the community can create their own language bindings.
+
+I also mentioned that the GDNative module still needs some work. For example in-editor initialization of libraries is currently disabled. This feature is required to have exported properties and signals. This doesn't really make sense without proper reloading of libraries. This is on my TODO list, but everyone is welcome to help with that task.
+If you're interested, message me (*karroffel*) on IRC or Discord.
+
+Thanks for reading this and happy waiting for Godot!
\ No newline at end of file
diff --git a/collections/_article/donation-changes.md b/collections/_article/donation-changes.md
new file mode 100644
index 0000000000..d2a3f5b91d
--- /dev/null
+++ b/collections/_article/donation-changes.md
@@ -0,0 +1,84 @@
+---
+title: "Donation changes"
+excerpt: "The project situation changed a lot for the better in the past few months, with a steady growth in the amount of users and contributors, and a nice boost to our funding situation, freeing donation funds for new purposes. Therefore, we discussed with core contributors that this is a good time to change how the project manages donations, and give our whole crowdfunding a much-needed update."
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5f0/611/604/5f06116044778216695928.png
+date: 2020-07-08 00:01:00
+---
+
+## Status
+
+The project situation changed a lot for the better in the past few months, with a steady growth in the amount of users and contributors, and a nice boost to our funding situation thanks to an [Epic MegaGrant](https://godotengine.org/article/godot-engine-was-awarded-epic-megagrant) which will cover my (Juan) and George's work for the next two years, freeing donation funds for new purposes. Therefore, we discussed with core contributors that this is a good time to change how the project manages donations, and give our whole crowdfunding a much-needed update.
+
+## Goals changed
+
+We are no longer going to have named goals with contributor names. This became a problem for us because contributors may not be immediately available, their situation may suddenly change, or they may not want to have their name listed to avoid conflicts with their current employers. Likewise, we may also wait a bit to hire after reaching a goal, to ensure we have enough savings to give the new paid contributor peace of mind that we can guarantee at least one year of employment. And finally, since some of us have their pay covered through external funding which is not reflected on Patreon (Epic MegaGrant, grants and corporate sponsoring), the Patreon goals did not reflect our current payroll.
+
+Similar to how Blender is now doing, we will be changing goals to increments of USD 5000 for every contributor that we plan to hire. In the end, some contributors may be paid more or less depending on their experience, responsibility, contract length, amount of work hours, etc. This number will only reflect an average and we may eventually modify it according to our ongoing experience. Also keep in mind that Conservancy as a charity keeps 10% of all donations for operating costs (and in exchange, as any charity of this type, they ensure transparency in usage of funds and provide accounting, legal and fiscal services to the project), so this number does not accurately represent what individual contributors will be paid.
+
+## Profiles
+
+In May, we had [a first budget meeting](https://godotengine.org/article/godot-core-budget-meeting-report-1) with core contributors to discuss what future work we want to fund using project donations, be it full-time contracts for area maintainers or project-specific work packages. Some of those will be covered by funds which we already accumulated from previous months of excess funding, while others are dependent on reach a sustainable level of monthly income through Patreon and corporate sponsorship.
+
+Listing the names of the contributors who we intend to hire is difficult for the reasons mentioned before, but we will instead post the profiles of those who we are looking forward to hire. If you want to guess who the person may be from there on it's up to you :) So far, the profiles we will be putting up will be:
+
+* General usability, 2D editor, website
+* Contributor for networking, HTML5
+* Mono/C#, GDNative
+* Junior rendering contributor
+* VR/AR/Mobile rendering contributor
+* More contributors
+
+Again, keep in mind we will only hire contributors who have proven to be of enormous value to the project over the years. If we can't find contributors for a specific area, we will most likely not open the position. We prefer to keep the donations until someone who can make the best use of them is available.
+Once we reach the goal and have cleared all the hurdles of the hire, we will announce who they are. Stay tuned for our next hire announcement soon :)
+
+There may be small exceptions to this, like doing one-time hires for people experienced for specific tasks, like improving documentation, adding RTL support, doing fixes to X11 (which is very difficult to find contributors for due to the extreme complexity), etc.
+
+## Tiers
+
+The Patreon tiers and perks will be reworked. They made sense when we were started out with the sole expectation to hire me full-time while allocating some of my time to Patreon perks, but as the project grew exponentially, it became increasingly hard to dedicate time to our complex poll system, and to fit its results in our schedule for the engine, docs and demos. Both Rémi and I moved to positions where we spend most of our time managing other contributors, working on urgent codebase-wide changes, releasing new versions of the engine, etc.
+
+Additionally, we've noticed from the feedback of many patrons that most of you are here to support a project you believe in with your donation, more than for the extra little perks a given tier may provide. As a result, we will reduce the number of tiers for a better overview, and offer rewards that we hope offer some interesting community interaction, while not having too high of a time cost for us.
+
+Also, we'd like to acknowledge the fact that we haven't yet organized any live video Q&A as we promised initially, and we'd like to apologize to patrons who had been pledging while looking forward to that. Yet, we still think that it is a great way to provide the community with insights into Godot development, and now that we have more full-time developers hired or soon-to-be hired, we think it's a good time to start delivering on this old promise.
+
+To help us prepare those live Q&As to be packed with interesting content, we'll propose to the higher Patreon tiers to pre-submit questions or topics that will be discussed by core devs in the Q&A.
+
+Here is our new list of tiers:
+* $5 - Discord role
+* $10 - Your name in the credits
+* $14 - Name further up in the credits
+* $26 - Ability to submit questions or topics to discuss to a monthly Live Q&A
+* $48 - Mini Sponsor: Name on godotengine.org/donate page and in Godot's About dialog
+* $99 - Bronze Sponsor: Name and URL to your site in godotengine.org/donate page and in Godot's About dialog
+
+**Important**: We removed the $18 and $32 tiers to simplify the lineup, but this means that current patrons at those tiers will be switched to a "No reward" status by Patreon. We encourage patrons at those tiers to update the pledge whenever they see fit to ensure that they select one of the above pledge levels (e.g. $14, $26 or $48). See how to update your Patreon membership.
+
+If you have ideas and feedback of perks and rewards you think could be good for us to offer, please let us know.
+Note that during a transition period, we'll process those "No reward" pledges manually to attribute them the perks they're due (unless you specifically ask us not to do it).
+
+As you can see, we're adding a "Bronze Sponsor" tier between the pre-existing "Mini Sponsor" and the corporate sponsorships. This was requested several times by patrons here and on Twitter who want to give even more, so here we are!
+
+## Corporate sponsoring
+
+We initially had two corporate sponsorship tiers on Patreon for companies to have their logo on our website and (for Platinum) splash screen. As the project grows and our funding needs do too, we're updating this and we'll handle the higher sponsoring tiers (Gold, Platinum) outside Patreon to simplify the p
+rocess.
+
+Corporate sponsoring categories will change as follows:
+
+* $500 - Silver Sponsor: Small logo on homepage and name + URL in Godot's About dialog
+* $1500 - Gold Sponsor (outside Patreon, min. 6 months invoice): Small logo (icon size) on splash screen, medium logo on homepage
+* $3000 - Platinum Sponsor (outside Patreon, min. 6 months invoice): Logo + name on splash screen (like now), big logo on homepage
+
+## Combined funding sources
+
+We constantly get requests to use alternative funding sources to Patreon and to show our total donation/grant income combined on the Godot website. This requires a significant amount of work and it will be among our priorities when we can hire someone to do this website work (let's hope soon) - in the meantime, Rémi will put together a simple overview and update it regularly to provide more transparency on our budget and current hires.
+
+We'll work on a visualization that properly reflects the different natures of our funding sources, such as one-time grants which provide us for funds for a limited amount of time. Our policy is to always stay cash flow positive (i.e. we get more donation income than we use) - with a few exceptions for occasional project-specific temporary contracts - so this visualization should reflect it.
+
+## Thank you!
+
+Finally, thanks so much to all of you, current, former, and [future patrons](https://www.patreon.com/godotengine), for your amazing support. When we joined Patreon three years ago, we never imagined reaching such a high level of funding in support of such a rapidly growing project!
+
+Godot is developed by more than a thousand contributors, and coordinating this massive community requires a full-time involvement of several of us (and hopefully soon even more full-timers), which your generosity enables.
\ No newline at end of file
diff --git a/collections/_article/dtls-report-1.md b/collections/_article/dtls-report-1.md
new file mode 100644
index 0000000000..e293709c5d
--- /dev/null
+++ b/collections/_article/dtls-report-1.md
@@ -0,0 +1,100 @@
+---
+title: "DTLS progress report #1"
+excerpt: "A sneak peak at DTLS support in Godot 4.0 ."
+categories: ["progress-report"]
+author: Fabio Alessandrelli
+image: /storage/app/uploads/public/5db/87c/7eb/5db87c7eb83ec156927495.png
+date: 2019-10-29 17:30:00
+---
+
+Hello Godotters, as part of my August work (sponsored, as always, [by Mozilla](https://godotengine.org/article/godot-engine-awarded-50000-mozilla-open-source-support-program)) I've been working on integrating DTLS in Godot.
+Sadly, the work is not yet finished (although usable), and since it requires some API changes in `PacketPeerUDP` to make it performs well (avoiding extra buffering) it will be pushed to the `4.0` release.
+But what is DTLS? Why is it important to have? And how will users benefit from it?
+
+DTLS
+====
+
+DTLS stands for Datagram Transport Layer Security, you can think of it as TLS/SSL but for UDP packets.
+This is very important, because it allows you to use transparent encryption in real-time applications (like fast-paced multiplayer games).
+
+It prevents abusers from being able to disrupt your match by claiming to be some other players (which is not easy to do, and not always possible, but is something that needs to be considered when using UDP, and thus the `NetworkedMultiplayerENet` class).
+
+It also allows you to validate that the user connects to the right server when you use a client/server architecture and thus prevent man-in-the-middle attacks (someone faking to be the server, that replay all the data to the real server, but can read/change everything you send).
+
+DTLS in Godot
+=============
+
+This first part of the work adds three new classes:
+
+- `UDPServer`: Yep, you got it right, a "server" for UDP. It's quite different from a `TCPServer`, keep reading for more.
+- `DTLSServer`: This is a class used to keep the state for DTLS, specifically its cookies (again, keep reading for more).
+- `PacketPeerDTLS`: The actual DTLS connection peer, that can be used as a regular packet peer (and will in the future be used by `NetworkedMultiplayerENet` to provide transparent encryption for the high level multiplayer).
+
+UDPServer
+---------
+
+
+
+`UDPServer` can listen to a specific port/address and accept "connections" as soon as they arrive.
+This can be achieved thanks to the fact that UDP can be, in a way, "connected" to a specific address.
+It's not a connection like a TCP one (where you can potentially know if the other peer exists), this is more like a filter, that tells the operating system to ignore all the packets that do not come from a specific address. Each packet received from a new peer will result in a new connection, from that moment on, all the packets coming from the same source will be received by the "connected" peer and not the server.
+Simply call `take_connection()` when `is_connection_available()` is true to get the connected `PacketPeerUDP`.
+
+DTLSServer
+----------
+
+
+
+As mentioned, the `DTLSServer` class is used to store the DTLS state. DTLS must use a thing called cookies, to avoid amplification attacks.
+
+In simple terms, for the way UDP works, anyone can send you UDP packets (without the need for a connection), and since one can fake its source (by spoofing, i.e. altering the source filed in the IP protocol), one can force a server to send the reply of the received packet to a different address than the original sender. This is very bad when a protocol has the reply message which is much bigger than the original packet, as this will allow a simple client with low bandwidth to amplify their bandwidth capabilities by exploiting the server.
+
+Imagine this:
+- `A` has limited bandwidth of 1 Mb/s.
+- `A` sends a spoofed packet (masquerading as `B`) to the server `Z` (which has a bandwidth of 100Mb/s).
+- The server `Z` sends the reply to `B`, but the reply is much bigger (e.g. 10 times bigger) than the data sent by `A`.
+- Thus `A` can, with its 1 Mb/s, force server `Z` to flood `B` of packets with a 10 Mb/s bandwidth (1 Mb/s from `A` times 10 for the reply size).
+
+To avoid this, DTLS uses cookies. When the client sends data for the first time to the server, the server will reply with a smaller packet that assigns it a cookie (e.g. a random number) and stores the cookie/client association in a state.
+
+Only when the clients sends their requests with the received cookie, will the server start to send bigger packets.
+
+This way, when `A` sends the spoofed packet, it will not receive the cookie (which `B` will receive instead) and will not be able to amplify its bandwidth exploiting `Z` (since the cookie packet is smaller than the packet sent by `A`).
+
+If this seems a bit confusing, it's because it's actually a pretty twisted kind of attack. But you don't have to worry about it, because the `DTLSServer` class does the job for you :)
+
+This class has 2 interesting methods: `setup`, to generate the state (and where you set the RSA key and certificate), and `take_connection` that accepts a connected PacketPeerUDP (from `UDPServer`) and will return a `PacketPeerDTLS` in the "connecting" state when the cookie is correct, or in the "error" state when the cookie is missing or not known.
+
+PacketPeerDLTS
+--------------
+
+
+
+`PacketPeerDTLS` is the core class of the whole DTLS implementation in Godot, the one that provides access to the actual data transfer functionalities.
+
+There are two ways of getting a working `PacketPeerDLTS`:
+
+1. Use `DTLSServer` as explained above.
+2. Call `connect_to_host` on a `PacketPeerUDP` and then pass it to the `PacketPeerDTLS.connect_to_peer`.
+
+Remember to call `PacketPeerDTLS.poll` frequently, and at some point it will reach the "connected" state. At that point, you can start transfer data and it will be automatically encrypted.
+
+Consideration, further work
+---------------------------
+
+First of all, I'm sorry it took me so long to publish this report. It has been a crazy few months between the upcoming `3.2` release, the Godot Sprint, GodotCon, and the nerd flu that got us there.
+
+I had stopped working on this feature to focus on improvements and fixes for `3.2` but I will get on it again in the coming month (November) working on the integration with `NetworkedMultiplayerENet` so that the high level multiplayer can benefit from this technology.
+
+Stay tuned for more on DTLS, and for the report on September/October work (some merged already, some still in the process of being merged).
+
+I will try to speed up my reporting capabilities ;-)
+
+References
+----------
+
+[DTLS work done so far](https://github.com/godotengine/godot/tree/dtls_report1)
+
+[Small project to demo/test the work done so far](https://github.com/Faless/gd-udp-dtls-example)
+
+[Wiki on amplification attacks](https://en.wikipedia.org/wiki/Denial-of-service_attack#Amplification)
\ No newline at end of file
diff --git a/collections/_article/editor-improvements-godot-40.md b/collections/_article/editor-improvements-godot-40.md
new file mode 100644
index 0000000000..e6aa380793
--- /dev/null
+++ b/collections/_article/editor-improvements-godot-40.md
@@ -0,0 +1,102 @@
+---
+title: "Editor improvements for Godot 4.0"
+excerpt: "If you are following my progress, you might have noticed that I took a two month break from rendering to work on many long standing editor improvements and features."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/606/23c/e43/60623ce430cfe148969930.jpeg
+date: 2021-03-29 00:00:00
+---
+
+If you are following me on [Twitter](https://twitter.com/reduzio) (where I post my progress on different Godot features I work on), you might have noticed that I took a two month break from rendering to work on many long standing editor improvements and features.
+
+While I am far from being the only contributor working on editor-related tasks, I put together a list of everything I have been working for the past two months!
+
+### Improved Subresource Editing
+
+With the new inspector in Godot 3.1, a lot of new possibilities opened, including the ability to open sub-resources in the same inspector tab. Before this, users had to go back and forth in the list of properties of each sub-resource, which was very confusing.
+
+The new inspector worked well, but on the visual side we never really managed to nail how to deal with sub-resources. After asking the community for help and ideas, some work as put into it which hugely improved usability.
+
+
+
+The final version does a bit less color shifting by default so it's a bit more homogeneous. Also, the new layout makes it much clearer where each subresource begins and ends.
+
+### Improved and reorganized Project Settings
+
+The Project Settings dialog has seen a makeover. The categories have been reorganized to make more sense and reduce bloat and a new "advanced" mode has been introduced.
+
+This new mode removes most project settings other than the basic ones to ensure that new users don't feel overwhelmed by the huge amount of options and flexibility and can learn their way through the most important customization options available.
+
+Once confident enough, the "advanced" tab is set, which allows for editing of the rest of the settings as well as the extra customization options.
+
+
+
+Once enabled, the "advanced" setting is remembered for the current project.
+
+### Improved Process/Pause mode
+
+While not entirely an editor feature, Godot 4.0 unifies the process and pause settings into a single menu. This allows for disabling of nodes in a tree fashion. This was one of the most user-requested features, as Godot allows for easily hiding nodes but not disabling them.
+
+
+
+Additionally, as can be seen above the scene tree editor will show the disabled nodes in a more grayed out fashion.
+
+### Preview Sun and Sky
+
+Another very requested feature was also implemented, which is the ability to have a preview light and preview sun in the 3D editor. The new dialog was created mainly with two goals:
+
+* Allow to have a quick frame of reference regarding to lighting when importing or editing 3D scenes stand-alone.
+* Give new Godot users the ability to visualize their assets with a default set of high quality settings, as it is always a common source of confusion that, when just imported, assets look too plain in Godot.
+
+
+
+As these settings are only meant for preview, they won't be visible when running the game but both have a quick way to create the _actual_ nodes based on these settings with just a button press at the bottom.
+
+When either nodes (DirectionalLight3D or WorldEnvironment) exist in a scene, the preview setting also disables automatically, ensuring consistency and ease of use.
+
+### Default Importer Settings
+
+Another common problem Godot users run into is that setting default values for certain types of imported assets was confusing. This is resolved by the new "Default Importer Settings" tab in the Project Settings dialog.
+
+
+
+
+Thew new tab allows to precisely customize importer options for each type of resource. This feature was also back-ported to Godot 3 and will be available on the upcoming Godot 3.3 release.
+
+### New 3D asset import workflow
+
+Importing 3D assets was a hit or miss experience in Godot. Import options were limited to a tiny "Import" menu that attempted to do too much and fell short.
+
+The new importer has an "Advanced" mode, which allows to precisely customize every individual node, mesh, material and animation.
+
+
+
+Additionally, handling of external assets was re-thought. In Godot 3.x, assets are simply saved to file by name, which can be very confusing or create chaotic situations when overwriting files.
+
+In the new importer, this process is done via manual steps, so the user has more control on which assets are moved to external files, which paths are used, etc.
+
+
+
+As a result, it's more obvious where everything goes and what's happening during the import process.
+
+The new system also solves the problem of assigning external materials to replace the ones in the imported file in a very elegant way, allowing to either make the materials that come with the asset external, or just replace them by existing external ones.
+
+### Ability to "keep" files
+
+Often, users would prefer that Godot does not import some files (like PNG, CSV, etc) and deal with them manually during the game run-time.
+
+This is now possible with the "keep" option. When selected, the assets will be kept and put in the game export "as-is".
+
+
+
+### Threaded importing
+
+Another very common problem users face in Godot is the long time it takes to import large amounts of images. To aid this, the new importer has been reworked to operate using multiple threads.
+
+This results in a performance improvement of over ten times (if you have a modern computer with multiple cores).
+
+### Future
+
+With the editor work done, I will now go back to working on rendering for the next month to finalize the missing bits and pieces pending in my TODO list. Afterwards, it will be time to start working towards our first Godot 4.0 alpha! And again, remember we do this out of love for you and the game development community so you can have the best possible engine we can make with the same freedom as if you made it yourself.
+
+If you are not, please consider [becoming our patron](https://www.patreon.com/godotengine)!
\ No newline at end of file
diff --git a/collections/_article/emulating-double-precision-gpu-render-large-worlds.md b/collections/_article/emulating-double-precision-gpu-render-large-worlds.md
new file mode 100644
index 0000000000..22572616fe
--- /dev/null
+++ b/collections/_article/emulating-double-precision-gpu-render-large-worlds.md
@@ -0,0 +1,133 @@
+---
+title: "Emulating Double Precision on the GPU to Render Large Worlds"
+excerpt: "One of the problems with developing games with large game worlds is that objects start to jitter and teleport around as you move away from the world origin. This post is about how we overcame one challenge in particular and what we did."
+categories: ["progress-report"]
+author: Clay John
+image: /storage/app/uploads/public/634/d8d/43e/634d8d43e5bd4838492470.png
+date: 2022-10-17 17:31:04
+---
+
+One of the problems with developing games with large game worlds is that objects start to jitter and teleport around as you move away from the world origin. This post is about how we overcame one challenge in particular and what we did.
+
+### The Problem
+
+By default Godot uses single-precision floating point numbers to store things like object positions. While GDScript typically allows users to do user-space calculations with double precision, those calculations get truncated as soon as they are stored in Godot internal objects (like Vector3’s).
+
+This has been a problem for users who want to do things like make games that take place in a to-scale solar system. Users quickly hit floating point precision errors and noticed that movement becomes jittery and objects become scattered.
+
+As an example, take a look at this simple scene, we have a bunch of Godot's scattered randomly and a person running back and forth across the screen.
+
+
+
+_The character asset and animation are from GDQuest's "godot-3d-mannequin" [project](https://github.com/GDQuest/godot-3d-mannequin) and the ground texture is from Kenney's "Prototype Textures" [bundle](https://www.kenney.nl/assets/prototype-textures)._
+
+Close to the scene origin this looks totally fine, but once we move this same scene 10,000 kilometers away something terrible happens. The Godots clump together and the character teleports from point to point. The diameter of the earth is 12,742 km for reference.
+
+
+
+10,000 km is 10 million units away from the origin. At 10 million units we have about [1 unit of precision](https://blog.demofox.org/2017/11/21/). That means that there is about 1 meter between each position our Vector3 can store. As you can see in the video above, the clumps are centered on each meter. At 1,000 km we still only have 6.25 cm of precision, which is still not enough for even a simple scene like this.
+
+### The Solution
+
+I said above that the problem came from using single-precision in Godot’s internal classes, so the solution should be to use double precision instead. Right?
+
+In Godot 4.0 we introduced the ability to compile the engine with double precision floats instead so that all these calculations happen with much higher precision.
+
+Let’s switch to a doubles build and see what happens to our scene.
+
+
+
+Despite all our calculations using fancy double-precision floats, this looks the exact same. What is going on?
+
+What is happening here is that the positions are being downcast into single-precision floats before being sent to the GPU for rendering. So on the GPU we are still using single-precision and the end result as far as rendering goes is the same as if we were using single-precision.
+
+The solution should be easy, let’s just use doubles in all of our shaders!
+
+### Doubles in Shaders
+
+First of all, we don’t need _all_ calculations to be in doubles, most of the work done by the GPU only requires single-precision floats. Additionally, GPUs still pay a performance premium when using doubles. So we can restrict our use of doubles to only those operations that need to be in doubles.
+
+We actually only need doubles in the calculation of our ``MODELVIEW_MATRIX``.
+
+As a reminder, the ``MODELVIEW_MATRIX`` combines two operations:
+1. The transformation from object space to world space, and
+2. The transformation from world space to camera space
+
+Both of these operations need double precision because we are using a large world. We don’t need double precision in object space or camera space because our models are not large and nothing is very far from the camera. The rest of the shader is in camera space, so we don’t need the extra precision.
+
+The ``MODELVIEW_MATRIX`` is assembled in the vertex shader by combining the object’s ``MODEL_MATRIX`` and the camera’s ``VIEW_MATRIX``.
+
+***Can we get away with just passing those two matrices in as doubles?***
+
+**NO**
+
+For starters, Metal (the graphics API used on all Apple devices) doesn’t support using doubles in shaders, so this wouldn’t work on Apple devices.
+
+***How about we just don’t support this on Apple devices?***
+
+**NO**
+
+Many non-Apple devices still struggle with double precision on the GPU. For example, when running on the Intel integrated graphics GPU on my laptop, Godot crashes whenever a shader using double precision is used.
+
+***Okay, how about we restrict this to dedicated GPUs only?***
+
+**NO**
+
+Restricting this feature to dedicated GPUs is not suitable as it leaves our user base in a lurch. Typical Godot users want to create a game on their hardware and trust that the game will work on most devices. We try to avoid features that come with a long list of exceptions. Further, we would also end up adding significant complexibility to user-space shaders. Users would have to reason about whether the built-in ``MODEL_MATRIX`` and ``VIEW_MATRIX`` are exposed as doubles or floats.
+
+In developing Godot we aim for a user experience where things “just work”. At times this involves making difficult judgment calls with respect to performance/usability tradeoffs. This was a case where we just can’t accept a tradeoff that leaves the feature useless to a significant portion of users.
+
+So in the end, we can't simply "turn" on doubles and have everything magically work. But perhaps we can still get things to "just work" another way.
+
+### The Real Solution
+
+The solution we ultimately went with was Juan’s (reduz) idea. He noted that:
+1. We don’t need doubles to do an operation with high precision, instead we can emulate double precision using two-single precision floating point numbers, and
+2. We don’t have to calculate the full ``MODELVIEW_MATRIX`` in double precision, we can separate out the rotation/scale transform from the translation transform and only do the translation in double precision.
+
+[Smarter people](http://andrewthall.org/papers/df64_qf128.pdf) than me have already worked out how to do many ordinary operations in near double precision using just a pair of single precision floats. The same basic trick can even be used to create arbitrary precision out of floats or doubles. For example, libraries like [LibQuadMath](https://github.com/gcc-mirror/gcc/tree/master/libquadmath) emulate 128 bits of precision using two doubles.
+
+
+***So how does it work?***
+
+First, outside of the shader we split the double into two floats like so:
+
+```
+float some_float1 = float(some_double); // This truncates the double to the nearest float.
+
+// The second float is the difference between double and the truncated value.
+float some_float2 = float(some_double - double(some_float1));
+```
+
+This relies on the fact that doubles are a superset of floats. I.e. all floats can be converted to doubles without losing precision. Because the second float is much closer to 0, it has way more precision than the first float and together they are pretty close to the original double.
+
+Since we only need this for the translation operation, we just have to pass in an extra ``Vector3`` with the camera matrix and an extra ``Vector3`` with the model matrix. Then, when doing the model to camera space transformation instead of calculating the ``MODELVIEW_MATRIX``, we separate the transformation into individual components and do the rotation/scale separately from the translation.
+
+With this added, the scene looks the same as it did at the world origin.
+
+
+
+***Are we done?***
+
+Yes, this is the solution we settled on and we are happy with the tradeoffs we ended up with. This solution should work on all our supported hardware and should only reduce performance by a small amount. However, there are a couple limitations:
+1. It doesn’t work with the ``skip_vertex_transform`` render mode: In other words, users have to use the default path where Godot handles your model to view space transformation,
+2. Users can’t do shader math in world space: User shaders will still be limited by single-precision floating point, so world space calculations will still be subject to low-precision artifacts,
+3. This only applies to precision issues from object positions. In other words, it won't fix your earth-sized sphere, for model vertex positions, you still need to work around single-precision floating point limitations.
+
+Overall, we are quite happy with how this solution turned out. We think it is the closest to "just works" that we can get.
+
+Note: This change has already been merged into the engine, however it is only available in the "doubles" version of the engine, so to take advantage of it, you will still have to build the engine yourself using the compile flag `precision=double` (formerly `float=64`).
+
+## Support
+
+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](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/enet-dtls-encryption.md b/collections/_article/enet-dtls-encryption.md
new file mode 100644
index 0000000000..db900d4e33
--- /dev/null
+++ b/collections/_article/enet-dtls-encryption.md
@@ -0,0 +1,116 @@
+---
+title: "ENet with DTLS encryption in 4.0"
+excerpt: "Easy ENet high-level-multiplayer encryption via DTLS is coming in Godot 4.0."
+categories: ["progress-report"]
+author: Fabio Alessandrelli
+image: /storage/app/uploads/public/5e5/166/6a0/5e51666a0d8b2890019310.png
+date: 2020-02-25 15:40:15
+---
+
+Hello Godotters, as part of my November work (sponsored, as always, by [Mozilla](/article/godot-engine-awarded-50000-mozilla-open-source-support-program)) I've been working on finalizing DTLS support I wrote about in a [previous report](/article/dtls-report-1), and implementing a custom ENet socket layer that uses it.
+
+This allows for optional, transparent, easy-to-use encryption of the high level Multiplayer API when using the ENet peer (`NetworkedMultiplayerENet`). If you want to try these features in 3.2, and don't mind compiling the engine yourself, check out the end of this post.
+
+DTLS support
+============
+
+DTLS support is now merged in the `master` branch. To know more about DTLS support in Godot 4.0 and DTLS in general you can read the [previous blog post on the subject](/article/dtls-report-1).
+
+Additionally, documentation for all the new classes with small code samples has been added, the documentation is not yet synced with the online version, so here is a simple script (included in the docs) that shows how to make a DTLS server and client:
+
+```
+# server.gd
+extends Node
+
+var dtls := DTLSServer.new()
+var server := UDPServer.new()
+var peers = []
+
+func _ready():
+ server.listen(4242)
+ var key = load("key.key") # Your private key.
+ var cert = load("cert.crt") # Your X509 certificate.
+ dtls.setup(key, cert)
+
+func _process(_delta):
+ while server.is_connection_available():
+ var peer : PacketPeerUDP = server.take_connection()
+ var dtls_peer : PacketPeerDTLS = dtls.take_connection(peer)
+ if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:
+ continue # It is normal that 50% of the connections fails due to cookie exchange.
+ print("Peer connected!")
+ peers.append(dtls_peer)
+ for p in peers:
+ p.poll() # Must poll to update the state.
+ if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:
+ while p.get_available_packet_count() > 0:
+ print("Received message from client: %s" % p.get_packet().get_string_from_utf8())
+ p.put_packet("Hello DTLS client".to_utf8())
+```
+
+```
+# client.gd
+extends Node
+
+var dtls := PacketPeerDTLS.new()
+var udp := PacketPeerUDP.new()
+var connected = false
+
+func _ready():
+ udp.connect_to_host("127.0.0.1", 4242)
+ dtls.connect_to_peer(udp, false) # Use true in production for certificate validation!
+
+func _process(_delta):
+ dtls.poll()
+ if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:
+ if !connected:
+ # Try to contact server.
+ dtls.put_packet("The answer is... 42!".to_utf8())
+ while dtls.get_available_packet_count() > 0:
+ print("Connected: %s" % dtls.get_packet().get_string_from_utf8())
+ connected = true
+```
+
+ENet DTLS support
+=================
+
+With the new DTLS interface laid out, our custom ENet implementation has been updated to optionally use it to wrap all the ENet packets. This meant a lot of work under the hood (which actually took me most of December too), but with a very pleasing result for the end user. Now, the only thing to do to enable DTLS encryption on the ENet peer is setting the `use_dtls` property to `true`, and calling `set_dtls_certificate()` with the appropriate server certificate (plus `set_dtls_key()` for servers).
+
+```
+extends Node
+
+# Your DTLS server key (secret to the server).
+var key = load("key.key")
+# Your DTLS certificate (shared between server and clients).
+var cert = load("cert.crt")
+
+func start_server():
+ var peer = NetworkedMultiplayerENet.new()
+ peer.use_dtls = true
+ peer.set_dtls_key(key)
+ peer.set_dtls_certificate(cert)
+ peer.create_server(8092)
+ multiplayer.set_network_peer(peer)
+
+func start_client():
+ var peer = NetworkedMultiplayerENet.new()
+ peer.use_dtls = true
+ # Optionally disable this to skip certificate verification (unsecure).
+ peer.dtls_verify = true
+ peer.set_dtls_certificate(cert)
+ peer.create_client("localhost", 8092)
+ multiplayer.set_network_peer(peer)
+```
+
+Here you can see a screenshot of the result of sending an RPC with and without DTLS enabled:
+
+
+
+
+
+Reference Work
+==============
+
+[The pull request for this work](https://github.com/godotengine/godot/pull/36296) (merged in `master`).
+
+If you want to try the new DTLS features, and you don't mind compiling the engine, you can check out this [3.2 PR](https://github.com/godotengine/godot/pull/35091).
\ No newline at end of file
diff --git a/collections/_article/enjin-coin-supports-godot-and-announces-upcoming-module.md b/collections/_article/enjin-coin-supports-godot-and-announces-upcoming-module.md
new file mode 100644
index 0000000000..cf2e6d546f
--- /dev/null
+++ b/collections/_article/enjin-coin-supports-godot-and-announces-upcoming-module.md
@@ -0,0 +1,34 @@
+---
+title: "Enjin Coin supports Godot and announces upcoming module"
+excerpt: "Godot just got its first platinum sponsor, and we're thrilled to announce that it's Enjin Coin, a smart cryptocurrency designed for virtual goods in games! They are working on a module to integrate their open source framework in Godot 3."
+categories: ["news"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5a1/8a8/a92/5a18a8a92779a993178386.png
+date: 2017-11-24 23:30:00
+---
+
+Right after [our announcement](/article/please-help-us-reach-our-second-patreon-goal-so-we-can-hire-thomas-part-time) that we want to hire a second contributor part-time, our [Patreon campaign](https://patreon.com/godotengine) got a huge boost beyond that goal and towards the next.
+
+It was in fact due to arrival of our first Platinum sponsor, [Enjin Coin](https://enjincoin.io/), bringing us an additional USD 1,500 of funding every month!
+
+On top of this sponsorship, [they announced their support](https://medium.com/enjin-coin/enjin-coin-joins-forces-with-godot-5596bfd07e41) of our project and intent to develop a Godot module to make their open source framework available for Godot developers.
+
+### About Enjin Coin
+
+Enjin Coin (ENJ) is a "smart cryptocurrency for gaming" coupled to the Enjin gaming platform. This cryptocurrency can be used as a backend for in-game virtual goods, which can therefore be traded and transfered between different games relying on Enjin Coin. You can check [their detailed whitepaper](https://enjincoin.io/enjincoin_whitepaper.pdf) and [website](https://enjincoin.io) for more details on this blockchain-based technology.
+
+As mentioned, they intend to make their platform available for Godot games by developing an official module for Godot 3, and they will likely get help from experienced Godot developers(*) to ensure that the module works out of the box.
+
+*“Godot is an incredible game engine and the Enjin Coin integration will open up true gameplay innovation. We look forward to supporting game developers using Enjin Coin based virtual goods in Godot powered games”*, says Maxim Blagov, Enjin Coin's CEO.
+
+We are thrilled to see such companies take an interest in our engine, and are looking forward to the opportunities that it may offer to our community.
+
+### Support our development!
+
+Enjin Coin is our first Platinum sponsor, but not the first company to show their interest in our engine via financial support. Since the [Patreon campaign](https://patreon.com/godotengine) started, two other companies became Gold sponsors: [Gamblify](https://www.gamblify.com) and [GameDev.tv](http://gamedev.tv). We will soon post new blogs about each of them to thank them properly and tell you about their interest in Godot Engine!
+
+If you are interested in becoming a sponsor of the Godot project, head over to [Patreon](https://patreon.com/godotengine) to see our sponsoring tiers and corresponding perks. Stay tuned for more details about our sponsoring plans this blog!
+
+-----
+
+(*) As per Godot's non-profit structure and charity backing, as well as our SDK agnostic development philosophy, this work cannot be carried out by core Godot Engine developers directly as part of the project's roadmap. Still, any company is allowed and welcome to propose work for hire to Godot contributors if they want help proposing thirdparty modules for their technology.
\ No newline at end of file
diff --git a/collections/_article/fbx-importer-rewritten-for-godot-3-2-4.md b/collections/_article/fbx-importer-rewritten-for-godot-3-2-4.md
new file mode 100644
index 0000000000..d59fde4d6f
--- /dev/null
+++ b/collections/_article/fbx-importer-rewritten-for-godot-3-2-4.md
@@ -0,0 +1,128 @@
+---
+title: "FBX importer rewritten for Godot 3.2.4 and later"
+excerpt: "Gordon MacPherson authored the new rewrite of the FBX importer in Godot 3.2. We had originally added alpha FBX support but this first version had many limitations for complex, commercial-grade models, especially around animations.
+After a lot of debugging and research, the importer has been fully rewritten to better implement FBX support in Godot specifically, and vastly increase the compatibility with commercial FBX assets. This new importer will be available in the upcoming Godot 3.2.4, as well as Godot 4.0."
+categories: ["progress-report"]
+author: Gordon MacPherson
+image: /storage/app/uploads/public/5fa/3f1/fd2/5fa3f1fd29135851685419.jpg
+date: 2020-11-05 12:37:50
+---
+
+I'm Gordon MacPherson ([RevoluPowered](https://github.com/RevoluPowered)), a C++ contractor from the United Kingdom. I've worked in games for a while now, building upon general software development experience from electronics and RF equipment. I found Godot while working on personal game projects, and started being involved as a contributor a bit over a year ago. In particular, I was very lucky to work as a consultant at [Prehensile Tales](https://prehensile-tales.com/) for [IMVU](https://about.imvu.com/)'s Godot projects. This work involved adding support for the FBX 3D asset exchange format to Godot.
+
+## First importer in 3.2, now rewritten
+
+The first version of our FBX importer was [added in Godot 3.2](https://godotengine.org/article/here-comes-godot-3-2#3d-assets), and relied on the Open Asset Importer library ([Assimp](https://github.com/assimp/assimp/)). A lot of work was done at that time directly in the upstream Assimp project to improve the FBX support, but we hit roadblocks with the compatibility with Maya's FBX exports. Maya is one of the most used 3D assets creation tools in the game industry, and IMVU needed good support for its FBX files.
+
+Due to these roadblocks, we decided to rewrite the importer fully and tailor it to Godot, instead of trying to keep things generic as done in Assimp - Assimp can importer dozens of file formats, which is great, but imposes many restrictions on the support of individual complex formats like FBX, especially for animations. In the game industry, a lot of people assume that FBX works with traditional animation algorithms but we found that it is simply not the case. FBX has its own standard for handling animations which has not been fully reverse engineered correctly by *any* open source importer/exporter, so we had to start from scratch and only keep the FBX file parser from Assimp.
+
+We removed 70,000 lines of code and our new FBX importer comes in around 12,000 lines of code. The new code has been commented and documented with the things we learned about FBX along the way. It's made so we can make changes easily and improve behaviour on a per-file basis along the road. We expect bugs with the beta, even some regressions which we have seen already, but we are working on fixes to the reported problems to be ready for the 3.2.4 stable release.
+
+It took us about 14 months to get a proper FBX importer working fully, since we had to engineer everything again:
+
+- We rewrote all the mesh code to support all formats of FBX meshes correctly.
+- We built an entire abstraction for the FBX transform information, which was a very complex and convoluted undertaking to get working properly.
+- We designed a better handler for the animations which can compensate for the complex transform information, which means that we can handle animations correctly.
+
+Our ethos for the importer ended up being: When you import a FBX file, it should import flawlessly like you intended it to be when exporting. This was the new design goal of the importer to ensure we had SOLID importing ability for commercial FBX files and for your own files too!
+
+This complete rewrite has now been merged in the `3.2` branch with [GH-42941](https://github.com/godotengine/godot/pull/42941). We'll focus first on fixing reported issues with the new importer so that it's ready for release in Godot 3.2.4 stable (it will soon be available for testing in 3.2.4 beta 2). Once fixes have been made, we'll also update the foward port to the `master` branch to ensure that the new importer is also available in Godot 4.0.
+
+## So, for the uninitiated, what is FBX?
+
+FBX is the industry-standard 3D asset exchange file format for games. It is developed by Autodesk as a proprietary format and thus not a great philosophical match for Godot, but given its widespread use, we want to support it nevertheless. We're also [hyped about and support glTF 2.0](/article/we-should-all-use-gltf-20-export-3d-assets-game-engines), which is the open source new kid on the block, and thus brilliant for our engine (and especially the Blender pipeline). But a caveat of glTF 2.0 is that it's not officially supported by Autodesk software, which many use for content creation in the game industry.
+
+**FBX has been through 24 years of usage in the game industry.** With its [first revision being back in 1996](
+https://en.wikipedia.org/wiki/FBX), this means it's super well tested and pretty much available everywhere by default.
+
+Supporting it is a must, for compatibility with the big wigs but also with the software you might want to try out.
+
+## Whoa, it's been over a year. Why did it take so long?
+
+Reverse engineering a lot of the functionality required to make FBX work properly was very hard. For 2 months we were stuck understanding how pivots mattered in the file format, why they were used internally and where they are supposed to be applied in the animations. Most FOSS tooling could not properly import FBX files or had horrible bugs.
+
+We found the available information to being completely wrong in some cases for determining the skin, bind pose and skeleton information along with animations. It was a nightmare initially, and turned out to be quite time consuming. But we got through and sorted it out, persistence was key.
+
+At some stages we were unsure how the project would get completed and had doubts but we kept hammering away, and eventually, we found a path through in March 2020. Slowly but surely functionality started working bit by bit.
+
+The main problem FBX is that it's closed source, and therefore the official FBX SDK is a black box. It just gives you values and you don't know why it is that value, you just have to trust that it's correct. This means that for some functionality, we literally had to use trial and error to figure out the implementation. Looking at what other importers did was also a serious help.
+
+## Some cool things about FBX
+
+* It does partial updates like a database and won't rewrite the entire file when you make a small change. This is good when you don't want to accidentally break an exported file.
+* It handles bones, with a truly robust ID and targeting system which can work easily without relying on path information for bones.
+* It supports various unit formats.
+* Images can be embedded in the FBX file.
+* It's supported by default in most packages for 3D modelling.
+
+## Why did you decide not to use the FBX SDK?
+
+In short, we wanted to add official support directly in the engine, and Godot being open source, it can not (and should not!) depend on any proprietary component. Integrating the proprietary FBX SDK could have been done as a thirdparty plugin, but it would not be officially maintained by the Godot team. It's not just licensing though, here's what motivated the decision not use the Autodesk FBX SDK:
+
+* It's not open source, which is a deal-breaker as mentioned above.
+* It's much larger than our importer, we only net 12,000 lines of code (the FBX SDK is over 50 MB - that's bigger than Godot!).
+* We can't modify the behaviour to improve performance or increase flexibility.
+* Our importer is faster than the official SDK.
+* It requires a lot of work. Much like the work we have done with FBX we'd just be repeating work for example with mesh conversion.
+* It's a bad move to support it if we don't know what the code is doing, especially when we care about importing things optimally, especially for creating a reliable 3D workflow.
+* We have already added proper support for complex features like Segment Scale Compensation, which e.g. [Unity currently does not support directly into the engine](https://knowledge.autodesk.com/support/maya/troubleshooting/caas/simplecontent/content/turning-segment-scale-compensate-maya-how-to-make-maya-rigs-play-nice-unity.html).
+
+## Research & development
+
+How much coding went into this? Less coding than you would think. A lot of the time was establishing why standard algorithms do not solve FBX problems, and in this process we came to the conclusion that FBX does things in a different way to most other formats. For good reasons though, the linear skinning method used in the format is in short absolutely genius. Most of the work was learning about FBX and how it worked, and cross comparing the results across many many many versions of the importer.
+
+Pivots are hard. The formula is simple but their application in the correct places required months of reverse engineering, especially when dealing with animations
+
+We rewrote the importer approximately 4 times during my work on it. Before my involvement, it was rewritten twice by Ernest Lee ([fire](https://github.com/fire)) with help from Juan Linietsky ([reduz](https://github.com/reduz/)), and Assimp had done an astounding job at learning what they did with the time and resources they had.
+
+## Testing & validation
+
+[IMVU](https://about.imvu.com/), who sponsored this work, had a validation team confirming that their Maya models were working correctly, and testing and helping me fix bugs. This means that we know it's good enough for animators and modellers to use in a Maya environment.
+
+Thousands of models we use have been validated in Maya, mostly with default export settings in the application. If you find something which doesn't work, please [file a bug report](https://github.com/godotengine/godot/issues) so we evaluate if we can add support for it.
+
+## Funding
+
+[IMVU](https://about.imvu.com/) not only paid for me to work on this for a year or more but paid for hundreds of hours from various teams internally. Some of the QA engineers also validated the FBX importer in the engine in multiple Godot projects using FBX assets.
+
+Even when the project was stagnated due to research walls (pivot applications) and proprietary information (secret sauce), they continued to support the project. We had many people in the community at our workplace make test assets and validate a lot of models. It was a huge undertaking for them.
+
+Be sure to give [@imvu a follow](https://twitter.com/imvu). We are working in house on some projects in Godot Engine and you can follow us on our journey.
+
+## My personal journey
+
+During this project I had gaps in my knowledge which were filled in with time and experience. Many talented people helped me fill these gaps quickly, and learning from trial and error helped a lot in those cases where things were done "the FBX way", instead of the usual way.
+
+In some cases, FBX did not do what people would consider reasonable.
+
+After researching these methods for pivots and various parts of the skinning, I have found them to improve the behaviour in most cases. Now the differences make a lot of sense to me, even if they are complex.
+
+## Future plans
+
+* Finish porting the rewrite to Godot 4.0 (we use the `3.2` branch in production, so that's where this was developed and quality controlled by many users).
+* Locator bones. Right now, you need to bake your animation before exporting.
+* Improve material mappings (most are supported, some need mapping).
+* Fix bugs in the beta phase, we expect them.
+
+## Known issues
+
+* Sometimes skins will inflate larger than they should be due to ‘remove unused influences setting' in Maya, for now, disable this option in Maya, or you can go to Mesh -> Skin -> Clear temporarily, I expect a fix to land in the next week or so for this problem.
+* Some materials might have some properties needing to be fine-tuned, but can be easily fixed.
+* It's going to be in the beta release, we will test this and resolve regressions we find with existing projects.
+
+## Huge thanks to:
+
+* Everyone at [IMVU Inc](https://about.imvu.com/), you did an amazing job helping with FBX and ensuring its success. You made Godot have a commercial-grade FBX importer, thank you so much for spending the time and money getting this to be a reality for 2020.
+* All the people who helped me debug issues, who helped with various logic and also to the Godot core development team.
+* A big shoutout to [Prehensile Tales](https://prehensile-tales.com/) for helping me through the tough FBX project, especially Hein-Pieter van Braam-Stewart who has been an amazing employer and great person to me personally and professionally.
+* Andrea Catania for his amazing work improving our mesh creation code and helping fix hard to find bugs.
+* Ernest Lee for his continued support and information, along with helping me get to grips with Godot codebase and many many other things, including the first prototype for the importer :)
+* Juan Linietsky for being there when I needed to ask complex questions on his time.
+* Rémi Verschelde for helping with the review process and being super helpful.
+* [Assimp](https://github.com/assimp/assimp/) for providing an amazing template of a MVP importer which we could improve drastically, Kim Kulling and the various developers who worked on the FBX parser.
+* Clay John for helping fix the Z-fighting issue with transparent layers from FBX in the NVIDIA bistro, and for doing the fix in the upstream engine <3
+* Ilaria Cislaghi for being a massive help when finding bugs which are hard to spot.
+* Everyone who helped on the various PRs with memory leaks and issues.
+* I guess my cat too ;)
+
+That's it! As a reminder, the code for the new importer is in [GH-42941](https://github.com/godotengine/godot/pull/42941), and it will be available for testing in Godot 3.2.4 beta 2 in coming days. We're looking forward to your testing results and bug reports!
\ No newline at end of file
diff --git a/collections/_article/fill-blank-class-reference.md b/collections/_article/fill-blank-class-reference.md
new file mode 100644
index 0000000000..63a07555a4
--- /dev/null
+++ b/collections/_article/fill-blank-class-reference.md
@@ -0,0 +1,43 @@
+---
+title: "Fill in the blank in the class reference"
+excerpt: "Godot's API reference is far from complete, but it's an effort to which every member of the community can partake! We organise a class reference writing campaign to aim towards 100% completion for Godot 2.1!"
+categories: ["news"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/572/070/c22/572070c227996527491135.png
+date: 2016-04-27 00:00:00
+---
+
+In the Godot community, we all love *waiting*. Waiting for Vulkan, waiting for WebAssembly, waiting for C#, waiting for advanced 3D editor features... waiting for Godot!
+
+But there's one thing that we should not be idly waiting for: [API documentation](http://docs.godotengine.org/en/latest/classes/_classes.html). It won't just happen that hundreds of lines of class descriptions are written by the core devs; their time is much better spent developing the great features we are all so fond of waiting for.
+
+The good news is, contributing to the class reference is quite easy; it's a (partly boring, but also rewarding) game that most of us played as kids: fill in the blank. The whole reference is in one XML file in Godot's source repository, used both by the editor for the offline help feature and by the [online documentation](http://docs.godotengine.org/en/latest/classes/_classes.html).
+
+## Current status
+
+So that's where [we need YOU](http://docs.godotengine.org/en/latest/contributing/updating_the_class_reference.html). There was already an important effort before 2.0 to complete the class reference, but the work is far from finished. As of today, the class reference has 369 classes, 4420 methods, 1763 constants, 152 member variables and 142 signals. Out of which only 34% have proper descriptions so far. (You can get a nice overview for yourself using bojidar\_bg's awesome script in ``doc/tools/doc_status.py``)
+
+You can also see the detailed status in [this collaborative pad](https://etherpad.net/p/godot-classref-status) that we use to coordinate the contribution effort.
+
+## How to help?
+
+Everything is described in the docs page [Updating the class reference](http://docs.godotengine.org/en/latest/contributing/updating_the_class_reference.html). Basically the workflow is to fork and clone Godot's source repository, edit the ``doc/base/classes.xml`` file and make a pull request for your changes.
+
+For more efficiency, and because it's funnier to work on such things together (especially when you have questions about what a given method does), you are very welcome to join the [#godotengine-doc](http://webchat.freenode.net/?channels=#godotengine-doc) IRC channel on Freenode to discuss live with the rest of the documentation team.
+
+Our objective: have the class reference 100% complete for the upcoming 2.1 release!
+
+## What's next in the pipeline?
+
+Once this task is done, it will be the time for a thorough review of the rest of the online documentation. Most of the tutorials were written in the early days of Godot's open source existence, and though they have seen improvements here and there, there are many new features that were added over the last two years and that are not well documented (e.g. light baking, networking, plugins, pathfinding, etc.). That's why we plan to make a complete review of the existing content, reorganise it and start a coordinated effort to, again, fill in the blank. This will be another big task, but with the help of the community we will make Godot Engine even easier to learn, for newcomers and experienced users alike!
+
+A similar effort will be done for the demos; most of them were also designed to showcase the usage of early Godot versions. Since then, many new features and usability improvements have been done, so some of those demos might have become obsolete, or might need to be modernized a bit. Many cool new concepts are not showcased yet in demos either, such as scene inheritance or navigation polygons. We are also thinking about writing tutorials attached to each of them for you to learn how they work. But of course, this will be done *only* once the class reference has been sufficiently enhanced...
+
+So don't wait, and help us give Godot the documentation it deserves!
+
+## Useful links
+
+- [Online class reference](http://docs.godotengine.org/en/latest/classes/_classes.html)
+- [Contributing to the class reference](http://docs.godotengine.org/en/latest/contributing/updating_the_class_reference.html)
+- [Collaborative pad](https://etherpad.net/p/godot-classref-status)
+- [Recent class reference changes](https://github.com/godotengine/godot/commits/master/doc)
\ No newline at end of file
diff --git a/collections/_article/first-godot-3-docs-sprint-sept-9.md b/collections/_article/first-godot-3-docs-sprint-sept-9.md
new file mode 100644
index 0000000000..e2a6146525
--- /dev/null
+++ b/collections/_article/first-godot-3-docs-sprint-sept-9.md
@@ -0,0 +1,65 @@
+---
+title: "Let's build great docs for 3.0! Write the Docs every week-end"
+excerpt: "Godot 3's API reference is 60% incomplete. With so many changes since 2.0, we must review classes and their descriptions. The engine can only grow and attract tons of users if it has great docs. And this cannot happen without you. Join us this Saturday for the first Godot 3.0 docs Sprint!"
+categories: ["events"]
+author: Nathan GDQuest
+image: /storage/app/uploads/public/59e/850/b39/59e850b39e220163403707.png
+date: 2017-09-06 08:00:00
+---
+
+## Update: one month later
+
+After 5 docs sprints, the class reference **went up from 35% to 60% complete**! We run Write the Docs events every week-end on the #documentation channel [on Discord](https://discord.gg/8FE9RmX)
+
+**3 steps to become a Contributor**
+
+1. Read the **[Contributor's Guide](http://docs.godotengine.org/en/latest/community/contributing/updating_the_class_reference.html)**
+2. Follow the **[Writer's Guidelines](http://docs.godotengine.org/en/latest/community/contributing/docs_writing_guidelines.html)**
+3. Use the shared pad to **[tell us what you're working on](https://hackmd.io/s/H1es51Oeqb)**
+
+
+
+## Original post
+
+Godot 3's API reference is [only 40% complete](https://hackmd.io/s/H1es51Oeqb). With so many changes since 2.0, we must review classes and their descriptions. The engine can only grow and attract tons of users if it has great docs. And this cannot happen without you.
+
+**Next Saturday, on September 9**, we're teaming up with Julian StraTon and Chris, a.k.a. [KidsCanCode](https://www.youtube.com/channel/UCNaPQ5uLX5iIEHUCLmfAgKg), for Godot 3.0's first Docs Sprint!
+
+## Godot needs you
+
+Anyone is welcome to give a hand, especially:
+
+1. **Experienced 3d users to focus on 3d**. There is no documentation yet.
+2. **Seasoned users** to contribute to everything related to 2d, the User Interface nodes, the new Audio system...
+3. **Native English speakers** to review both existing and new descriptions. Make sure they follow the guidelines and they're clear and precise.
+
+
+
+*Godot 3.0's 3d API has close to no documentation for now. Let's write it!*
+
+## Writing the docs is a rewarding job
+
+**Good documentation is as important as new features** for any open source project. It's a rewarding job:
+
+1. Help *thousands* of new users to better learn Godot!
+1. Get to learn how to better use the engine, discover tricks and subtleties nobody else knows.
+1. Become a contributor, give back to the project.
+1. Hang out together with the community, get to know fellow contributors better.
+
+You'll explore Godot's source code, and understand how experienced developers built the engine.
+
+**Together, we have the power to write great docs**. To make them better than ever! Better than that of proprietary engines out there.
+
+
+## Join us on Discord
+
+The sprint will happen on the [ official Discord server ](https://discordapp.com/invite/zH7NUgz). Chris, Julian and I will take turns and be around for most of the day. Other contributors will join too.
+
+Click here to [Join the #documentation channel](https://discord.gg/8FE9RmX)
+
+
+## Every little bit helps!
+
+Drop by anytime and spend as little or as much time as you'd like. Every little bit helps. It doesn't matter if it's just a class or a few functions.
+
+We're looking forward to seeing you next Saturday!
\ No newline at end of file
diff --git a/collections/_article/first-public-release.md b/collections/_article/first-public-release.md
new file mode 100644
index 0000000000..248afa999b
--- /dev/null
+++ b/collections/_article/first-public-release.md
@@ -0,0 +1,18 @@
+---
+title: "First public release!"
+excerpt: "Writing a game engine is a really difficult process which takes a long time and we realize a life is not enough to add every single feature we’d like to it. Godot has been an in-house engine for a long time and the priority of new features were always linked to what was needed for each game and the priorities of our clients.
+
+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."
+categories: ["release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/57f/218/5f6/57f2185f638af084238366.svg
+date: 2014-01-14 00:00:00
+---
+
+Writing a game engine is a really difficult process which takes a long time and we realize a life is not enough to add every single feature we’d like to it. Godot has been an in-house engine for a long time and the priority of new features were always linked to what was needed for each game and the priorities of our clients.
+
+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.
+
+We understand that for developers to gain interest, releasing incomplete software is not enough, so we are publishing, for this first version, a fully featured beta. At this point, the engine is stable and everything works, but we need the feedback and input from the “real users” to complete adjusting the experience to make it perfectly smooth.
+
+So, thanks for your interest in Godot Engine! With your help, we want it to become the most amazing game engine the world has ever seen!
\ No newline at end of file
diff --git a/collections/_article/first-steps-towards-1-2.md b/collections/_article/first-steps-towards-1-2.md
new file mode 100644
index 0000000000..ca1abd8f09
--- /dev/null
+++ b/collections/_article/first-steps-towards-1-2.md
@@ -0,0 +1,44 @@
+---
+title: "First steps towards 1.2"
+excerpt: "As many of you know, Vulkan will be the next open and multi platform rendering 2D and 3D API. While many claim it will just be an additional API, those of us who have been in the industry for long enough know well that Vulkan will make other APIs obsolete."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/56c/d7f/bae/56cd7fbae6495309340594.jpg
+date: 2015-06-06 00:00:00
+---
+
+## Waiting for Vulkan
+
+As many of you know, Vulkan will be the next open and multi platform rendering 2D and 3D API. While many claim it will just be an additional API, those of us who have been in the industry for long enough know well that Vulkan will make other APIs obsolete.
+
+CAD and 3D DCC applications will most likely continue to using OpenGL, but for anything related to games OpenGL will be no more.
+
+Vulkan will work on all PC platforms: Windows, OSX and Linux. It will also work on any modern mobile devices, iOS and Android. Vulkan will run in so many platforms that even the idea of using DirectX in the future is starting to look unfamiliar for large studios. It also fixes most of the gripes everyone has with modern OpenGL: Better drivers (due to much less intrinsic complexity) and much larger industry backing. Industry backing for Vulkan is, in fact, so big that everyone but Microsoft is on board.
+
+As this will be undoubtedly the new, de facto, 3D API for games, all work on improving the current 3D renderer has been halted until drivers and API reference are published (which will be this year at some point).
+
+Godot developers love 3D programming, and can’t wait to begin working on a new, awesome backend, with support for physically based rendering, modern global illumination, etc. But this will have to be sometime later this year or beginning of next, otherwise all the work will go to the trashbin once Vulkan comes out.
+
+## Next goal: usability
+
+The next version of Godot (1.2) will, then, focus almost exclusively on usability. Godot has a great underlying architecture which has proven to be rock solid during the past years, but the user interface still needs more work to be as friendly as possible. Other (commercial) game engines have set the bar high in this area. Current work is already underway and showing nice progress:
+
+
+
+*New animation editor.*
+
+
+
+*New file selector, with thumbnails, favorites and recent folders.*
+
+## New website, documentation and asset DB
+
+The community is also working on a new website, which will allow more open access to adding documentation to the wiki. An asset database where you can share or search for assets, templates, etc. is also planned.
+
+## Legal status
+
+We are looking for a way to officialise Godot as a non profit so it can stand on it’s own and not rely or belong to anyone. Effort towards this is in the works, so expect exciting news in the near future!
+
+## Participate and make noise!
+
+If you are using Godot, plan to use Godot or are you just interested about it and want to support it, make sure to join our [amazing community](/community)! The [Facebook group](https://www.facebook.com/groups/godotengine/) and [IRC](irc://irc.freenode.net/#godotengine) are always active, as well as the forum (*Edit:* replaced by [Q&A](/qa) in the new website). Remember that we don’t have millions to spend in marketing and PR, so we rely on you to talk about Godot and spread the love!
\ No newline at end of file
diff --git a/collections/_article/fixing-godot-games-published-google-play.md b/collections/_article/fixing-godot-games-published-google-play.md
new file mode 100644
index 0000000000..d52b8481f0
--- /dev/null
+++ b/collections/_article/fixing-godot-games-published-google-play.md
@@ -0,0 +1,250 @@
+---
+title: "Fixing Godot games published in Google Play"
+excerpt: "After games being published using Godot on Google Play for almost 8 years with no problems, Google decided they don't like the format we use for exporting any more and is suspending many published games. Here's how to fix your APK to upload it again."
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5b0/801/a45/5b0801a4507a7324391341.png
+date: 2018-05-25 00:00:00
+---
+
+After games being published using Godot on Google Play for almost 8 years with no problems, Google decided they don't like the format we use for exporting any more and is suspending many published games.
+
+The problem comes from Godot using placeholder permissions in the APK, which are replaced by real permissions on export. Google never really had a problem with this approach, and I made sure to talk to Google representatives years ago to make sure this was not a problem.
+
+At some point, it seems they changed their mind and started removing already published games. We got in contact with them to see if it can be solved from their end, but in the meantime we are publishing this guide that explains how to solve the problem manually.
+
+## How to fix it
+
+A new 2.1 release is coming along to fix this problem (and Godot 3.1 will use a different approach to exporting which should comply more with Google). In the meantime, we'll give you the necessary steps to fix your game in two possible situations:
+
+- A) You use Godot 2.1.x and don't need any specific Android permissions: We've built a new 2.1.4-stable template with all placeholder permissions removed, so you can use it as custom template to export your game.
+- B) You need specific Android permissions, you usually build your own template to include thirdparty modules, or you are using Godot 3.0 or later: You will have to build from source and edit the Android manifest yourself.
+- C) Use our [Godot APK fixer tool](https://godotengine.org/article/godot-apk-fixer-tool) on an already exported game. This will work for 2.x and 3.x exported APKs.
+
+Details for each situation are given below.
+
+### A) Using a custom "no permissions" template
+
+If your game does not require any specific permissions from Android, and you don't need to build your own template for thirdparty modules, you can simply reexport your game using the new "no permissions" template that we uploaded today for Godot 2.1.4-stable:
+
+- Release "no-perms" template: https://download.tuxfamily.org/godotengine/2.1.4/android_release-no_perms.apk
+- Debug "no-perms" template: https://download.tuxfamily.org/godotengine/2.1.4/android_debug-no_perms.apk
+
+You can download those APKs and set them as "Custom Package" in the export manager. They will be used as templates when exporting your project.
+
+
+
+Note: If you *do* tick some specific permissions in the export manager while using this template, they will be ignored.
+
+### B) Building from source and editing the manifest
+
+##### 1. Download Godot source code from [GitHub](https://github.com/godotengine/godot)
+
+If your game uses Godot 2.1 or 3.0 stable, make sure to change the branch accordingly:
+
+
+
+##### 2. Modify the manifest template
+
+Edit the manifest template, which is at:
+
+`godot/platform/android/AndroidManifest.xml.template`
+
+
+Remove the permission placeholders:
+
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+Replace them by the actual permissions used by your game: [https://developer.android.com/guide/topics/permissions/overview](https://developer.android.com/guide/topics/permissions/overview)
+
+
+##### 3. Compile the android templates
+
+There are instructions on how to do this for [Godot 2](http://docs.godotengine.org/en/2.1/development/compiling/compiling_for_android.html) and [Godot 3](http://docs.godotengine.org/en/3.0/development/compiling/compiling_for_android.html).
+
+
+##### 4. Set your new APKs as custom export templates
+
+In the export settings for Android, set the custom debug and release APKs generated by Gradle and use those. This should fix the problem.
+
+
+##### 5. If needed, add a privacy policy
+
+The reason why Google removed Godot games from their store is that they were using placeholder permissions *looking like* normal permissions, without having a privacy policy telling users how potentially collected data is being used.
+
+If you don't add any permission that justifies it, you don't need a privacy policy, but if you do, make sure to write one. Refer to the Google documentation/emails they might have sent you for details about this.
+
+
+## Future
+
+[Hein-Pieter/TMM](https://github.com/hpvb) is working on a fix to to be integrated in Godot 2.1.5 and Godot 3.0.3 so that you can continue setting the permissions you want without having those leftover placeholders.
+
+Godot 3.1 will use a different export approach where you will have more control over the manifest file.
+
+Apologies for the inconvenience.
\ No newline at end of file
diff --git a/collections/_article/fixing-tangents-accurate-normal-maps.md b/collections/_article/fixing-tangents-accurate-normal-maps.md
new file mode 100644
index 0000000000..2346c709c3
--- /dev/null
+++ b/collections/_article/fixing-tangents-accurate-normal-maps.md
@@ -0,0 +1,26 @@
+---
+title: "Fixing tangents for accurate normal maps"
+excerpt: "Correct tangents and bi-tangents are required for applying normal maps and newer effects such as the depth/parallax effect in the shader. Support for this has been spotty so we took the time out to fill in the gaps. These changes do have some consequences."
+categories: ["progress-report"]
+author: Bastiaan Olij
+image: /storage/app/uploads/public/5bf/2ab/9f6/5bf2ab9f6f810514785264.png
+date: 2018-11-21 12:19:14
+---
+
+While normal maps have been a staple of the Godot render engine for years, new capabilities of the render engine introduced in Godot 3.1 also require the generation of tangents and bi-tangents (often refered to as binormals in engines' documentation) to function correctly.
+
+Tangents and bi-tangents are two vectors that together with the normal vector give enough orientation detail of a face to provide correct lighting. To save on space Godot uses the approach where only the tangents are store and bi-tangents are calculated by combining them with the normal vector. For this a direction flag is also included with each tangent.
+
+Support for these so far has been spotty. The new CSG nodes lacked support for generating the tangents, there were orientation issues when importing Collada or glTF files, and the new primitive meshes reversed the direction of these.
+
+We spent a great deal of time over the last week going through all these issues [and correcting them](https://github.com/godotengine/godot/pull/23760). All primitive meshes now generate correct tangents, all CSG nodes now support tangents, Sprite3D now supports tangents and the importers have been fixed.
+
+
+
+This does mean that if you've worked around the existing issues by inverting your normal maps on one or both axes, or by using the "flip tangent" or "flip binormal" settings within materials, you may need to undo these changes when you upgrade to the current master build or the upcoming 3.1 alpha 3.
+
+---
+
+**Note**: on December 11th a further change was merged that ensures Godot can directly use normal maps, tangents and bi-tangents as generated by Blender and other modeling software following the same orientation rules.
+
+*Header picture derived from [fracteed](https://twitter.com/fracteed)'s *[Parallax Heads](http://fracteed.com/godot.html)* demo (CC-BY 4.0).*
\ No newline at end of file
diff --git a/collections/_article/fog-volumes-arrive-in-godot-4.md b/collections/_article/fog-volumes-arrive-in-godot-4.md
new file mode 100644
index 0000000000..15b6ab5c09
--- /dev/null
+++ b/collections/_article/fog-volumes-arrive-in-godot-4.md
@@ -0,0 +1,194 @@
+---
+title: "Fog Volumes arrive in Godot 4.0"
+excerpt: "On top of the existing fixed-function fog, Godot 4.0 introduces a new type of fog: Volumetric Fog. For the 4.0 release, we decided to take Volumetric Fog one step further with the addition of FogVolumes. These allow users to dynamically place fog and control complex fog effects with shaders."
+categories: ["progress-report"]
+author: Clay John
+image: /storage/app/uploads/public/62c/5b0/068/62c5b0068cc8e524432998.png
+date: 2022-07-06 09:00:00
+---
+
+***Note:** FogVolumes are available in 4.0 alpha 1 and later. This post provides a technical overview for a feature that is already available in the current 4.0 alphas.*
+
+___
+
+On top of the existing non-volumetric fog, Godot 4.0 introduces a new type of fog: Volumetric Fog. For the 4.0 release, we decided to take Volumetric Fog one step further with the addition of FogVolumes. These allow users to dynamically place fog and control complex fog effects with shaders.
+
+This post starts off with a high-level description of what FogVolumes are and how to use them, and then includes some technical details about what is going on under the hood and how we get them to render so fast.
+
+
+
+## Volumetric fog
+
+Volumetric Fog uses a 3-dimensional buffer to calculate and store fog density values allowing fog to interact with light and shadows in a way that the previous non-volumetric fog never could. Volumetric Fog adds a new dimension of realism to 3D scenes.
+
+For example, here is a view of Crytek's popular Sponza scene (well, popular among graphics developers).
+
+
+
+Turning on Volumetric Fog, we can instantly make it a little more interesting!
+
+
+
+As you can see, Volumetric Fog responds to both light and shadow automatically. It also updates in real time!
+
+
+
+By default, Volumetric Fog covers the entire scene with a uniform density, but sometimes specific effects call for having fog in only one portion of a scene (like in the above video). For that, you need FogVolumes.
+
+## FogVolume nodes
+
+FogVolumes come in many different shapes, they can either be *boxes*, *ellipsoids*, *cones*, *cylinders*, or they can cover the whole ``world``. Naturally, it is more efficient to use a *box*, *ellipsoid*, *cone*, or *cylinder* shape as they limit the region over which the fog is calculated.
+
+By default, FogVolumes add fog into the scene. The fog model we use internally is based on density, albedo, and emission which are all additive properties. This means that when FogVolumes overlap, we need only add the density, albedo, and emission from the respective FogVolumes and the results will look correct.
+
+The same goes for subtraction. You can use a negative density to subtract one volume from another to create more complex shapes if you need to, or if you need to keep fog from accumulating somewhere like in a house or other building.
+
+
+
+FogVolumes are 3D nodes that can be placed in the scene like other nodes and they immediately react to the existing lighting conditions and other objects in the scene. The only restriction is that Volumetric Fog must be enabled in the Environment for the FogVolumes to be visible.
+If you wish to disable global volumetric fog but still want to have volumetric fog constrained within specific areas, enable Volumetric Fog and decrease its density to `0.0`.
+
+Pictured below is a FogVolume partially intersecting a light beam. As you can see, the beam of light penetrates through the volume in a plausible way.
+
+
+
+If you crank up the detail (not recommended for performance reasons), you can acheive very sharp-looking light shafts in a constrained area. You can also choose to decrease the maximum volumetric fog rendering distance to improve volumetric fog detail without incurring a performance cost.
+
+
+
+At the default settings, the light still looks plausible, but not nearly as detailed. On the bright side, at default settings, Volumetric Fog and FogVolumes are efficient even on integrated GPUs.
+
+
+
+FogVolumes come with a built-in FogMaterial which allows users to quickly and easily set basic properties like, albedo (color), density, emission, and height falloff.
+
+
+
+Perhaps the most exciting part about FogVolumes is the introduction of the `fog` shader type. FogVolumes can be controlled with custom Fog shaders to add detail or to shape them however you want. For example, you can vary fog density according to an animated noise pattern.
+
+
+
+
+
+FogVolumes respond to lighting in real time, the exact same way that Volumetric Fog does.
+
+
+
+## Technical details
+
+When starting to work on FogVolumes, we wanted to ensure that users could be creative with them without running into performance barriers. In particular, we wanted users to be able to have a large number of FogVolumes present in the scene without incurring a large performance penalty. Similarly, we wanted to allow users to combine and overlap FogVolumes without restriction.
+
+Volumetric Fog uses an optimized algorithm to calculate fog based on the approach described by Bart Wronski in his [2014 SIGGRAPH presentation](https://advances.realtimerendering.com/s2014/index.html) *"Volumetric Fog: Unified Compute Shader-Based Solution To Atmospheric Scattering"*.
+
+The Wronski approach to volumetric scattering is widely used by many engines, so we won't go into depth into it. The important thing to take away is that we calculate the volumetric lighting in a large 3-dimensional buffer called a "froxel buffer". Froxels are **fr**ustum-aligned v**oxels**. Another way to think about it is grid-aligned and scaled with the camera's frustum. Therefore, cells close to the camera are quite small and the cells grow larger as they get further from the camera due to perspective projection. By default, we use a 64×64×64 froxel buffer, but this can be adjusted in the Project Settings. What makes the approach so fast is that you only calculate lighting for the cells in the froxel buffer and then, when drawing meshes, you only need to look up the fog value from the froxel buffer.
+
+To make rendering FogVolumes efficient, we render them to the froxel buffer used for Volumetric Fog instead of rendering each volume independently.
+
+This allows us to detach light rendering from FogVolume rendering and support huge numbers of lights, independent from the number of FogVolumes.
+
+
+
+In doing so, we run into a small problem: accessing the same piece of memory on the GPU can result in problems with rendering. To resolve those problems, each rendering command needs to wait for the one before it to complete and you end up in a situation where your GPU spends most of its time waiting for more work instead of actually doing work. For only a few volumes that are spread apart, this isn't a problem. However, we want to be able to support scenes with hundreds of volumes or more!
+
+Let's take a step back to understand why it can be a problem to render multiple volumes at the same time by looking at a single froxel in the buffer.
+
+```
+density = 0
+```
+
+The `density` starts at 0.
+
+```
+// First, we draw a single primitive with a density of 1.
+density += 1
+
+// What the code is really doing is essentially:
+temp = density
+density = temp + 1 // Density is now 1.
+```
+
+To add to density, we actually need to do three operations:
+
+1. copy the value of density,
+2. add 1 to our local copy of density, and
+3. write back that data to density.
+
+Let's look at what can happen if two volumes try to draw at the same time.
+
+```
+temp1 = density
+temp2 = density // Uh oh.
+density = temp1 + 1 // Density is 1.
+density = temp2 + 1 // Density is still 1.
+```
+
+What went wrong here is that one GPU operation overwrote the result of the other. In the end, the density of that cell ends up being half of what it should be. To the end user, this would look like a chunk of the scene with missing fog.
+
+We clearly need to do something to avoid this issue. One approach that many engines adopt is to render volumes using geometry shaders to generate and render slices. This works well because each "slice" of the volume can be rendered independently with "additive" blending directly into the target froxel buffer. Using additive blending in a fragment shader allows the GPU to draw the fog slices in a way where it doesn't matter in what order they are drawn. This allows the GPU to draw everything as fast as it can without waiting on other rendering operations.
+
+We wanted to avoid using geometry shaders as they are poorly supported on a lot of hardware, especially integrated graphics and mobile. Instead, we went with a different solution based on compute shaders. To avoid stalling the GPU between draw calls, we use atomic operations in the shader. Atomic operations are special versions of common operations (`add`, `or`, `min`, `max`) that can operate on the same memory without running into the problem described above. In our case, this allows the GPU to draw multiple volumes at the same time, and doesn't risk the volumes overwriting each other.
+
+In order to take advantage of atomic operations, we needed to make many changes to how we store the fog information. In particular, GLSL only supports atomic operations on integers. The values we are working with (density, albedo, emission) are all floating-point (and albedo and emission each contain 3 channels!). The first step was to encode the floating-point values into integers in a way where they could still be additively blended. In the end, we settled on using 3 textures the size of the froxel buffer each with a single 32 bit unsigned integer per cell.
+
+- **Density** is encoded as a signed 32-bit integer by multipling the floating-point density by 1024. This allows a range of -64 to 64 for density. In particular, the negative range is necessary to allow for subtracting volumes.
+- **Albedo** is encoded as a "scattering" which is to say that it is multiplied by density and clamped to the 0 to 1 range before being stored. Then, it's packed into 32 bits as follows: `uint(red * 2047.0) << 21 | uint(green * 2047.0) << 10 | uint(blue * 1023.0);`. This gives red and green twice as much precision as blue as they receive 11 bits each, while blue only receives 10 bits. Blue is the least visible color to the human eye, so red and green were chosen to receive higher precision.
+- **Emission** is encoded similarly to Albedo. We multiply it with density, but then we clamp to the 0 to 4 range. This way, emission is able to add a little bit of dynamic range. 4 was chosen as a reasonable range to allow some dynamic range but maintain some precision. The exact range can be adjusted at a later date based on user feedback.
+
+We use such simple linear scaling of values so that the fog properties can be simply added together in their unsigned integer format. If we used a non-linear encoding of values, we wouldn't be able to add them together without running into other artifacts.
+
+Using such a simple approach creates another interesting problem: individual color channels can overflow and bleed into their neighbors. A little bit of color bleeding is acceptable as it only impacts the least signfificant bit (for Albedo it would add `1 / 2043`, for Emission it would add `1 / 512`), but a color overflowing is a huge problem.
+
+Let's look at an example. Suppose one cell's blue albedo channel reached 1.0 (in binary: `11 1111 1111`), and then suppose another FogVolume overlaps that cell with a blue value of at least `0.00097` (in binary: `00 0000 0001`) after adding them, 1 bit will be added to green and blue will turn to `0.0` (in binary: `00 0000 0000`). This is, of course, a huge problem for us.
+
+The solution we settled on rests on one key behaviour of GLSL's `atomicAdd()` function. When adding a given value to value stored in memory, `atomicAdd()` is guaranteed to return the value of the memory immediated before the addition. Accordingly, we can replay the addition locally and check if any color channel overflows. If it does, we take the `atomicOr()` of that color channel with the same number of bits set to 1 to force it to its maximum value (1 in the case of Albedo, or 4 in the case of emission). Of course, the `atomicOr()` is only necessary when we detect an overflow.
+
+In practice, here's how that might look:
+
+```
+// Albedo from the current Fog Volume.
+new_albedo = 0000 0000 000 0 0000 0010 00 00 1000 0101 // R = 0.0, G = 0.0039, B = 0.13
+
+// `current_albedo` is returned by our call to `atomicAdd()`.
+current_albedo = 0011 1111 010 1 1111 1110 00 01 0011 1010 // R = 0.247; G = 0.9966; B = 0.307
+
+// Manually adding `new_albedo` to `current_albedo` in the shader (not using `atomicAdd()`).
+local_add = 0011 1111 011 0 000 0000 00 01 1011 1111 // R = 0.248; G = 0.0; B = 0.437
+
+// We detect that green is now lower than it was before; that's not supposed to happen.
+// So we create an overflow factor.
+overflow_factor = 0000 0000 000 1 1111 1111 11 00 0000 0000 // R = 0.0; G = 1.0; B = 0.0
+
+// We then call `atomicOr()` with the albedo and overflow factor to obtain a final result.
+final_albedo = 0011 1111 011 1 111 1111 11 01 1011 1111 // R = 0.248; G = 1.0; B = 0.437
+
+```
+
+While the results aren't perfect (we added too much red), the results are close enough and we are able to do this validation very quickly. On top of that, this avoids any memory synchronization issues as all the writes to albedo are done with atomic operations. There's a gap between the two atomic calls where other `atomicAdd()`s may modify the memory, but since we're essentially clamping the value with the overflow factor, we can trust that the other `atomicAdd()`s won't hurt anything.
+
+An alternative solution we explored (which was suggested to me by my brother while on a camping trip) was to add a padding bit between each color channel. In binary, our Albedo then looked like ``RRRR RRRR RRPG GGGG GGGG GPBB BBBB BBBB``. This allowed us to avoid the problem of the single bit bleeding, as we could use an `atomicAdd()` to clear the padding bits, but it still required us to "replay" the addition to avoid the rest of the impact of the overflow. In the end, we decided keeping the extra bit of precision in the red and green channels was preferable to protecting ourselves against the overflow.
+
+Below is one of the test scenes I used while stress testing FogVolumes. It contains 96 simple volumes which each inject a little bit of density and color into a small area.
+
+
+
+Now for the interesting part. Below is a screen capture of a page from [AMD Radeon GPU Profiler](https://gpuopen.com/rgp/) showing a zoomed in section of the rendering frame. The top bars represent how much work the GPU is doing and the bottom bars show individual commands that have been sent to the GPU and how long they take.
+
+
+
+As you can see, the FogVolumes are mostly rendered at the same time, and even then, they can't saturate the GPU – of course this changes when using larger or more complex fog shaders. To the right, you can see that the lighting calculations are able to saturate the GPU and keep it busy.
+
+Overall, we're quite happy with the results and are confident that users will be too.
+
+That was just the tip of the iceberg. In adding FogVolumes, we overcame a few interesting technical challenges and faced a number of tradeoffs in designing a system we hope is fast, flexible, and friendly for users. For more details about the implementation, please see the [pull request on Github](https://github.com/godotengine/godot/pull/53353).
+
+## Support
+
+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](https://www.patreon.com/godotengine) or [PayPal](https://godotengine.org/donate).
\ No newline at end of file
diff --git a/collections/_article/future-patreon-and-donations.md b/collections/_article/future-patreon-and-donations.md
new file mode 100644
index 0000000000..abc861784e
--- /dev/null
+++ b/collections/_article/future-patreon-and-donations.md
@@ -0,0 +1,76 @@
+---
+title: "Godot Patreon and goals updated, help us hire Pedro Estébanez"
+excerpt: "It has been a year since we started actively asking for donations. Thanks to that, I could work paid for an entire year so far (which has resultend in dozens of new features and helping a huge amount of contributors)."
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5bf/830/34b/5bf83034b703a356470749.png
+date: 2018-11-23 00:00:00
+---
+
+It has been a year since we started actively [asking for donations](https://www.patreon.com/godotengine) on Patreon (and other means). Thanks to that, I could work paid for an entire year so far (which has resulted in dozens of new features and me helping a huge amount of contributors).
+
+Thanks to that, also, Rémi could also work full time since March and help ease the big chaos of our large number of contributors, as well as many of his dedicated project manager tasks which, as you can see, keep growing and growing:
+
+
+
+And we could also hire karroffel to work heavily on both GDNative and OpenGL ES 2.0, which allowed us to lift a huge amount of work from our shoulders. The OpenGL ES 2.0 port is now almost complete and will be ready by the time 3.1 comes out.
+
+You can read more about own past year on Patreon in [Rémi's recent retrospective](https://www.patreon.com/posts/our-patreon-so-22847235).
+
+Thanks to our very generous patrons, Godot 3.1 will be an amazing release, further closing the feature gap with the main commercial game engines and improving enormously on usability.
+
+But it's time to keep growing, so we have updated the [Patreon Goals](https://www.patreon.com/posts/patreon-and-help-22885945). Please keep reading to find out more about this!
+
+## Managing the money
+
+So far, each time we proposed something, our community has been very generous matching the Patreon goals within weeks. We and everyone using Godot are very thankful. We always tried to be responsible and always ask only for the money we need.
+
+The few times there was excess money, we tried to use it to help contributors cover their travel expenses every time we meet (usually one or two times a year during GodotCons, we mostly live far away from each other). Being able to meet face to face is incredibly productive as we can fix issues together, do improvements, and plan features in a much more efficient way. Many of the features implemented this year were planned during GodotCon 2018 in February. (BTW, the dates of GodotCon 2019 have been announced, [check details here](https://godotengine.org/article/meet-community-fosdem-and-godotcon-2019).)
+
+As always, we do everything through the [Software Freedom Conservancy](https://sfconservancy.org/), to ensure everyone that money is used transparently and for the benefit of the project. There is zero discretionary fund management with our donations.
+
+## Making better use of donations
+
+We discussed all this year how we could make better use of donations (as in, besides hiring me and Rémi). We are always careful with asking for more (even though our community keeps growing) because we want to warrant that the money will be used efficiently and fairly.
+
+While doing part-time hires worked well up to now, we don't feel that this is fair to the community as a regular Patreon goal, as these hires don't always work in areas that benefit everyone who is donating.
+
+At the same time, we are still short on developers who can work more as generalists, diving into most Godot subsystems to do fixes and improvements. This can be evidenced by the large amount of issues [assigned to me](https://github.com/godotengine/godot/issues/21855). As many of our contributors come and go (as in, for different life reasons they can contribute only for a limited amount of time or at a limited time of the year), we lack more time from veteran developers who can do work as needed in the many different engine areas. This often makes me and the other generalists the bottleneck when fixing issues for stabilizing the engine for new releases.
+
+Added to this, Godot 3.1 will be a release that covers a much wider surface area of what our users expect, so we are not that much in need of new features any longer. The only really big feature planned after 3.1 is porting the rendering to Vulkan, due to the evidenced decay in OpenGL support (deprecated on Apple, constantly worsening driver support, etc.). Other than that, Godot needs mostly polish, smaller features, optimization and improving what is already there the most.
+
+As a result, we believe it will be in the best interest of the project and community to change the focus and instead aim to hire some of our more veteran contributors full-time. Given their industry experience and the fact that they will quit a very well paying job to work for us all day, the cost will be considerably higher. Still, we believe this will be very worthy and should help speed up the project development a lot (especially all the polish and fixing most of the complex issues remaining).
+
+## Asking for a raise
+
+Besides the above, both Rémi and I will be asking you, the community, for a small raise. We are currently at USD 3000/month (though you have to consider the high income taxes and cost of living in our respective countries, our families, and that Conservancy -like any charity- takes a 10% cut of the gross donation income too). We included that 10% share in the Patreon goals to clarify the numbers.
+
+On paper, our contract is for 6-hour workdays. In reality, we work close to twice that much.
+
+We work weekdays like any regular job, and we also tend to work on evenings and/or weekends (because this is when most Godot contributors have free time and we need to be there to help them the most), thus, devoting a big part of our life to the project. As soon as funds are available, we will ask Conservancy to raise our work hours on paper from 6 to 8 (so from USD 3000 to 4000/month) and not ask for further raises unless project funds grow considerably and we can hire a good amount of other full-time contributors.
+
+## Funding for new features
+
+We will try to make sure that donations go to finance general development, bug fixing and polish. Still, the community may still be interested in funding work on specific features (e.g. support for the latest VR headset, ray-tracing, latest C# version or tool, etc.), which are generaly not of so much priority in our roadmap.
+
+Many Godot features are already financed by third parties directly. Companies like Gamblify, Microsoft or Mozilla continue to hire or fund our contributors to work on them. Following this logic, in case some part of our community really wants to focus on a specific feature and wants to pay for it, we were thinking that separate crowdfunds could be set up if enough interest exists. This could allow hiring a contributor or setting up a bounty and would go via a separate funding channel than the main one.
+
+## Help us hire Pedro Estébanez!
+
+We now want to hire Pedro J. Estébanez ([RandomShaper](https://github.com/RandomShaper)), a long time contributor who has worked on everything, from mobile support to rendering and onion skinning. Pedro is an experienced and versatile engineer, so he can maintain and improve areas of Godot that currently lack a dedicated maintainer. We need him to build a bug-free engine on all platforms and across our supported features. Help us reach the next goal to hire him full-time!
+
+## Funding demo projects
+
+The Blender project has successfully crowdfunded many open movies, where they use the donations to make an open source high quality movie for everyone to see and learn how it is made. In the same vein (though probably a bit more in the future when Godot's feature set is more stable and we are focusing even more on polish and usability), we thought it could be really cool to explore this venue.
+
+Seeing the source code and asset workflow of big commercial games is a rarity, so opening up this process more to Godot users (and at the same time, ensuring Godot works as best as possible in these workflows) would definitely be fantastic.
+
+## Corporate sponsors
+
+Godot is always open to corporate sponsors, as we believe that high quality, free and open source game technology is a vital asset to the game development world. Otherwise, a handful of companies would control who and how everyone makes games and then, the whole industry would have to pay them a tax in order to create content.
+
+Even if your company does not currently use Godot, or only plans to use it in the future, don't hesitate to become our sponsor and help make game development a place with more freedom for everyone.
+
+## Future
+
+As always, thank you infinitely for your support. If you aren't yet, and it's within your possibilities, consider [becoming our patron](https://www.patreon.com/godotengine) and help make Godot better, faster.
\ No newline at end of file
diff --git a/collections/_article/gdquest-kickstarter-learn-2d-and-3d-game-creation-godot.md b/collections/_article/gdquest-kickstarter-learn-2d-and-3d-game-creation-godot.md
new file mode 100644
index 0000000000..7433a57939
--- /dev/null
+++ b/collections/_article/gdquest-kickstarter-learn-2d-and-3d-game-creation-godot.md
@@ -0,0 +1,76 @@
+---
+title: "GDquest Kickstarter: learn 2d and 3d game creation with Godot"
+excerpt: "We are crowdfunding 2d and 3d training series for Godot once again!
+With our last campaign, we made both paid and free tutorials, contributed to the official documentation, and to Godot's demos.
+We want to do more, but for that, we need your help."
+categories: ["news"]
+author: Nathan GDQuest
+image: /storage/app/uploads/public/5c3/ebd/56b/5c3ebd56b7fc9728379239.jpg
+date: 2019-01-18 06:02:00
+---
+
+After a first successful crowdfunding to create a Godot course in 2017, we are back with a new project in collaboration with the Godot team!
+
+
+
+We're going to create:
+
+1. **Two complementary courses about 2d and 3d game creation**, based around a platform/adventure game inspired by Metroidvanias
+2. **Two beginner-friendly video series for the official documentation** about 2d and 3d
+3. Two **Free and Open Source game demos**
+
+However, for that, we need your help.
+
+Interested? You can find all the details on the **[Kickstarter campaign's page](https://www.kickstarter.com/projects/gdquest/create-your-own-games-with-godot-the-free-game-eng)**
+
+In short, we are raising 14,000 € to hire Guilherme, Pigdev, and Razvan, to create great tutorials together. And I will keep working alongside them full-time.
+
+
+
+This time, we are releasing all our code as Free Software from day one! Both during and after the campaign.
+
+We are also publishing new free tutorials every day during the Kickstarter! So make sure to subscribe to [GDquest's YoUTube channel](https://www.youtube.com/c/gdquest/).
+
+
+
+*Our [Open RPG engine](https://github.com/GDquest/godot-open-rpg) is available for anyone to study, distribute, and reuse freely.*
+
+## Questions and answers
+
+### Who are you and why should I support you? ###
+
+We're a small team and company that teaches, uses, and contributes to Free Software. Our ambition is to bring people together to become better game developers and help the projects that we love to grow.
+
+Thanks to the money from the previous Kickstarter, we:
+
+- Contributed long tutorials to the official manual's Getting Started guide
+- Released dozens of Free tutorials on our YouTube channel
+- Open sourced all of our Godot projects in 2018 on [GDquest's GitHub](https://github.com/GDquest/)
+- Organized 7 Write the Docs events to bring Godot's built-in reference from 30% to 70% complete before the 3.0 release
+- Created the official demos for pathfinding, grid movement, Finite State Machines
+- Made a [presentation and slideshow system](https://github.com/GDquest/godot-slides) in Godot to give talks about the engine, translated in 14 languages!
+- Created an [intermediate-level Godot 3 course](https://gumroad.com/l/godot-tutorial-make-professional-2d-games) with over 100 video tutorials
+
+
+
+### Why not just raise funds for Free content? ###
+
+Open RPG, the increase in tutorial releases on GDquest, contributions to the official docs, giving talks, everything we shared was made possible by our last crowdfunding campaigns and the courses' sales.
+
+Unlike other training companies, we produce equal amounts of free and paid content. As our revenue grows, our contributions to Free Software grow as well. This model allows us to stay consistent.
+
+Then the amount we could hope to raise with donations only is way smaller than what we need. People are a lot more likely to support you financially if they get *some* exclusive content in return. That's part of the reason why so many Free Software projects struggle to get a budget and people full-time, even when they have tens or hundreds of thousands of users.
+
+### Why crowdfunding? ###
+
+We need the budget to hire Guilherme to work on the course full-time. With some good budget, we can get Razvan and Henrique involved as well, and produce even better content!
+
+## I've got more questions
+
+If you haven't already, check the [Kickstarter campaign's page](https://www.kickstarter.com/projects/gdquest/create-your-own-games-with-godot-the-free-game-eng). You will find more details there.
+
+Then, I'm here to help. You can reach me [on Twitter](https://twitter.com/NathanGDquest), leave comments [on YouTube](https://www.youtube.com/c/gdquest/), or come chat with the community on the [GDquest Discord server](https://discord.gg/CHYVgar).
+
+Even if you can't back us, a successful campaign will allow us to create more content for the official documentation, and more Free resources. So please consider sharing the word! It's essential for us to keep going.
+
+Thank you kindly for your time.
\ No newline at end of file
diff --git a/collections/_article/gdquest-kickstarter-stretch-goals-free-tutorials-godot-demos.md b/collections/_article/gdquest-kickstarter-stretch-goals-free-tutorials-godot-demos.md
new file mode 100644
index 0000000000..a444e24290
--- /dev/null
+++ b/collections/_article/gdquest-kickstarter-stretch-goals-free-tutorials-godot-demos.md
@@ -0,0 +1,96 @@
+---
+title: "GDquest Kickstarter Stretch Goals, Free Tutorials and Demos"
+excerpt: "The Kickstarter got funded in 4 days! We're hard at work on new tutorials and demos you can get right now. We've also announced 3 stretch goals to contribute more Free content for the entire community."
+categories: ["news"]
+author: Nathan GDQuest
+image: /storage/app/uploads/public/5c5/2c6/f92/5c52c6f92b52f124565436.png
+date: 2019-01-31 06:00:00
+---
+
+Our new **[Godot course Kickstarter](https://www.kickstarter.com/projects/gdquest/create-your-own-games-with-godot-the-free-game-eng)** campaign was funded in less than four days! Thank you kindly for your support. :)
+
+Since then, we kept working hard on:
+
+1. [Game creation tutorials](https://www.youtube.com/playlist?list=PLhqJJNjsQ7KEHh1pfBLVnLftf0of-tHQu)
+1. [Godot demos](https://github.com/GDquest/kickstarter-quest-3/)
+1. [Free tools](https://github.com/GDquest/GDquest-art-tools).
+
+More on that below. We're looking to fund **three stretch goals** to bring more content to everyone. But first, let's briefly talk about 3d in Godot.
+
+## 3d tutorials
+
+You've asked for them; we promised we'd bring you some quality tutorials about 3d in Godot. There you go! There are seven right now, with more to come, and you can find them all in our [3d tutorials playlist](https://www.youtube.com/playlist?list=PLhqJJNjsQ7KHGd_Zuf_Yx6XQ6BazFyoLh).
+
+
+
+*Banner and video thumbnail: [Littlest Tokyo](https://sketchfab.com/models/94b24a60dc1b48248de50bf087c0f042), CC-By glenatron*
+
+## The Three Stretch Goals
+
+
+
+
+
+
+We have **three stretch goals** for the project. They're all about extra contributions to Godot, available for everyone in the community!
+
+On top of everything else, we're looking to create:
+
+1. Two detailed **Godot learning paths**, for beginners and experienced game developers
+1. Great **3d prototyping assets** to help you develop games faster
+1. A Free video tutorial series covering the **new features in Godot 3.1**, for the official docs
+
+If you want to get excellent learning material and help us bring more Free educational resources to the community, you can [back us now on Kickstarter](https://www.kickstarter.com/projects/gdquest/create-your-own-games-with-godot-the-free-game-eng)!
+
+You can now also [support the project via PayPal](https://www.gdquest.com/post/2019/01/kickstarter-paypal/).
+
+Here are some details about the goals.
+
+### 2 Godot learning guides for beginners and developers
+
+We are going to create two learning paths for Godot. Two curated and polished guides to help you get started and build up solid skills with the engine. One for beginners and hobbyists, and one for developers. Only with free resources! Resources that might be hard to find when you're just discovering the engine.
+
+This first goal is **already funded**, with over €21,000 at the time of writing. I think we can get all three of them.
+
+
+
+
+
+
+*We took inspiration from CGCookie's Learning Paths.*
+
+### Professional 3d character and modular level prototyping kit
+
+The second goal, at **€24,000** is a set of **professional 3d assets** to prototype all sorts of games, inspired by the Unreal mannequin and the look of levels made with Pro-Builder for Unity. We're going to provide you with:
+
+1. An animated character with its controller, animation tree, and camera set up in Godot. We are
+1. A modular level-design kit to efficiently design and prototype 3d gameplay.
+
+We got in touch with the guys working on Open Mannequin, a similar project. They're already a team we're looking to help them if they want us to. Otherwise, we'll roll our character based on the MIT-licensed Bony (*but with modified proportions*). We're working with the film and game animator [Luciano Munoz](http://pintamonos.cl/) on this one.
+
+
+
+### Official Godot 3.1 new features tutorials
+
+Lastly, if we reach **€28,000** we will contribute an official tutorial series that covers the new features in Godot 3.1.
+
+Visual shader editor, animation tools, changes in the interface, tileset editor, 2d and 3d physics improvements, typed GDscript... we will cover all the main features, and release all the videos and companion demos under a permissive license.
+
+## GDScript experiments and Code Guidelines
+
+There's a request that keeps coming in the community. You've been asking us to teach the *best practices* with the engine.
+
+Godot's node system is flexible. The engine doesn't impose a project structure or design patterns on you. It does work best when you have general systems at the top of the tree and specialized nodes at the tip of branches, but you're not forced to use a specific architecture like [Model-View-Controller](https://developer.mozilla.org/en-US/docs/Web/Apps/Fundamentals/Modern_web_app_architecture/MVC_architecture).
+
+Using powerful features like signals too much can lead to spaghetti code if you're not careful. That's why we keep experimenting with new solutions, to avoid issues we've faced with our projects until now.
+
+
+
+
+We're doing much work there, and we're working on guidelines to help everyone write accessible, clean, and scalable GDScript. As we figure out ways to better decouple our code, we will update them.
+
+Razvan has been rewriting Open RPG to test new ideas, improve the code's structure, and experiment with a few ways to structure entire projects and assets. Until we add it to the main project, you can look at his work [on his fork](https://github.com/razcore-art/godot-open-rpg/tree/rebuild).
+
+The Work in Progress guidelines are already on the [Kickstarter project's repository](https://github.com/GDquest/kickstarter-quest-3/), along with ten other open source demos! As usual, feedback is welcome.
+
+However, that said, it's time to get back to creating more content. Thank you for your time, and see you soon for more!
\ No newline at end of file
diff --git a/collections/_article/gdscript-progress-report-feature-complete-40.md b/collections/_article/gdscript-progress-report-feature-complete-40.md
new file mode 100644
index 0000000000..bae3d3a746
--- /dev/null
+++ b/collections/_article/gdscript-progress-report-feature-complete-40.md
@@ -0,0 +1,109 @@
+---
+title: "GDScript progress report: Feature-complete for 4.0"
+excerpt: "GDScript is now feature-complete for the upcoming Godot 4.0 version. This article goes through the last bits that were added: typed arrays, lambda functions, builtin static methods, plus a few extra changes for optimization and bug-fixing."
+categories: ["progress-report"]
+author: George Marques
+image: /storage/app/uploads/public/60b/4f2/b0a/60b4f2b0a8130694314324.png
+date: 2021-06-02 00:00:00
+---
+
+It has been a while since my last report. In my [last post](https://godotengine.org/article/gdscript-progress-report-typed-instructions), I've mentioned GDNative, but since I've done only a bunch of "boring" stuff, I ended up not writing anything about it. Work on GDNative is not completed yet, so maybe I'll have something interesting to report later on. For now, let me show what was done on GDScript.
+
+*See other articles in this Godot 4.0 GDScript series:*
+
+1. [GDScript progress report: Writing a tokenizer](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer)
+2. [GDScript progress report: Writing a new parser](https://godotengine.org/article/gdscript-progress-report-writing-new-parser)
+3. [GDScript progress report: Type checking is back](https://godotengine.org/article/gdscript-progress-report-type-checking-back)
+4. [GDScript progress report: New GDScript is now merged](https://godotengine.org/article/gdscript-progress-report-new-gdscript-now-merged)
+5. [GDScript progress report: Typed instructions](https://godotengine.org/article/gdscript-progress-report-typed-instructions)
+6. (you are here) [GDScript progress report: Feature-complete for 4.0](https://godotengine.org/article/gdscript-progress-report-feature-complete-40)
+
+### Typed arrays
+
+One of the most requested features of GDScript is now implemented: [typed arrays](https://github.com/godotengine/godot/pull/46830). Now you can set the element type and let it be validated by the engine. That allows you to do safe operations with homogeneous arrays and also allow the language to optimize a few more code paths.
+
+The syntax is inspired by Python, like most of the type system:
+
+```gdscript
+var my_array: Array[int] = [1, 2, 3]
+```
+
+This allows you to easily change a regular array to typed and vice-versa without changing much code. You can also rely on type inference. If the array has elements of the same type, it will be inferred as typed:
+
+```gdscript
+var inferred_array := [1, 2, 3] # This is Array[int].
+```
+
+Note that types that can't be validated at compile-time (when they are dynamic) will be validated at runtime, which might impact performance slightly if done regularly.
+
+## Lambda functions
+
+Improving the functional side of GDScript, now you can use [lambda functions](https://github.com/godotengine/godot/pull/47454) (or, more specifically, *function literals*). Those are inline functions that are assigned directly to an expression instead of being defined in the class. This is great for functions used only in a small context – like sorting an array or connecting to a signal – without polluting the class scope with those.
+
+The syntax is pretty much the same as a regular function, only that it is placed where an expression should be:
+
+```gdscript
+func _ready():
+ var my_lambda = func(x):
+ print(x)
+ my_lambda.call("hello")
+```
+
+Note that the `.call()` is needed because lambdas are of type Callable.
+
+You can also pass them as function arguments:
+
+```gdscript
+func _ready():
+ button_down.connect(func(): print("button was pressed"))
+```
+
+Lambdas can optionally have a name, which is used when viewing stack traces. They are also not limited to a single statement:
+
+```gdscript
+func _ready():
+ var my_lambda = func this_is_lambda(x):
+ print("Hello")
+ print("This is %s" % x)
+```
+
+Last but not least, lambdas can capture variables from the scope they are defined in. This means you can use variables from the outer function or the outer class inside the lambda. Those will be copied when the lambda is created at runtime and passed to function when it's called:
+
+```gdscript
+func _ready():
+ var x = 42
+ var my_lambda = func(): print(x)
+ my_lambda.call() # Prints "42".
+```
+
+The documentation will be updated to explain this in detail in the future.
+
+### Static methods in built-in types
+
+A while back, Juan added support for [static methods on built-in types](https://github.com/godotengine/godot/pull/46378). Now I've [added](https://github.com/godotengine/godot/pull/48767) this change to GDScript so these static methods can actually be called.
+
+This is quite interesting because many times, we had to construct a value just to call a function on it. Now, the function can be called directly:
+
+```gdscript
+var x = Color.html_is_valid("00ffff") # true
+```
+
+Note that in 3.x, you already can use this syntax for some cases (such as `Color.from_hsv()`) but it only works with `const` functions that return the same type as the base and that is actually constructing a value at runtime. In 4.0, this won't be valid anymore for these cases, but we can have actual static functions.
+
+### Further optimizations
+
+I've implemented a couple of things that will help improving GDScript performance (not directly, but we still plan to work on the VM performance before 4.0). Those are internal changes that won't affect the way you code, but I'll mention them here for completeness.
+
+One of those is [reducing the number of addressing modes](https://github.com/godotengine/godot/pull/47727), which will help us eventually have instructions with addressing modes baked in. This will reduce branching in the code which is something CPUs enjoy. Having less modes means we can have less permutations of each instruction, reducing the complexity and code size.
+
+The other is [using a special stack space for typed temporaries](https://github.com/godotengine/godot/pull/47956). This means that results of sub-expressions that are typed can be stored on the stack in a Variant without changing its type nor re-initializing it. This is particularly helpful on types that require memory allocation, such as Transform, since the allocation can be done only once per call.
+
+### Test suite
+
+To improve the quality of the GDScript code and avoid regressions over time, I've [added a test runner](https://github.com/godotengine/godot/pull/47701) that verifies if the language code is performing as intended. I've had some help from [Andrii Doroshenko](https://github.com/Xrayez) who ported my suite to use the new doctest integration, effectively making the tests for GDScript part of the general test for the engine.
+
+We don't have a lot of test cases for now, but the number of tests will increase over time as tests are added together with bug fixes to avoid regressions.
+
+### Bug fixing
+
+I've now shifted the focus to bringing GDScript to a more usable state even before 4.0-alpha, so more users can test it to verify how it's working. For now, my focus are in the game-breaking bugs that stops people from even using GDScript. The small things can wait a bit longer to when we reach the bugfixing round after alpha is released.
\ No newline at end of file
diff --git a/collections/_article/gdscript-progress-report-new-gdscript-now-merged.md b/collections/_article/gdscript-progress-report-new-gdscript-now-merged.md
new file mode 100644
index 0000000000..47a0a3722e
--- /dev/null
+++ b/collections/_article/gdscript-progress-report-new-gdscript-now-merged.md
@@ -0,0 +1,71 @@
+---
+title: "GDScript progress report: New GDScript is now merged"
+excerpt: "New GDScript code is now merged. Here I talk a bit of what has changed, report what else I did this month and talk a bit about my current work and plans for the future."
+categories: ["progress-report"]
+author: George Marques
+image: /storage/app/uploads/public/5f2/966/b6d/5f2966b6dca1a217164497.png
+date: 2020-08-04 00:00:00
+---
+
+As some of you might be aware, the refactor that I have been working on lately is now [merged](https://github.com/godotengine/godot/pull/40598) into the `master` branch. This is the work explained in previous progress reports.
+
+*See other articles in this Godot 4.0 GDScript series:*
+
+1. [GDScript progress report: Writing a tokenizer](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer)
+2. [GDScript progress report: Writing a new parser](https://godotengine.org/article/gdscript-progress-report-writing-new-parser)
+3. [GDScript progress report: Type checking is back](https://godotengine.org/article/gdscript-progress-report-type-checking-back)
+4. (you are here) [GDScript progress report: New GDScript is now merged](https://godotengine.org/article/gdscript-progress-report-new-gdscript-now-merged)
+5. [GDScript progress report: Typed instructions](https://godotengine.org/article/gdscript-progress-report-typed-instructions)
+6. [GDScript progress report: Feature-complete for 4.0](https://godotengine.org/article/gdscript-progress-report-feature-complete-40)
+
+## Main changes
+
+While I did already open a pull request to [update the documentation](https://github.com/godotengine/godot-docs/pull/3623), I'll put here a short description of what have changed.
+
+### Annotations
+
+We now have annotation support and that is used to replace a few of the keywords that were introduced along the way. This includes the RPC keywords, such as `@master`, `@puppet`, and `@remote`.
+
+The previous `export` keyword is now replaced by a list of specialized annotations for each case. For example, if you want a range, you can use the `@export_range` annotation. There's no need to set the type as an argument anymore, since it can be retrieved from the variable's type specifier (e.g. `@export var my_number: int`).
+
+This has an added benefit because those annotations feature code completion and hints for their arguments, which makes them much easier to use without having to remember all the possible combinations like before.
+
+This also includes an `@icon` annotation that must be used instead of adding after the `class_name` like before.
+
+### Properties
+
+The previous `setget` syntax was removed in favor of [properties](https://github.com/godotengine/godot-proposals/issues/844). It is meant to be more tied to the variable declaration and avoid you having to create dedicated functions (though you still can if you prefer). Another change is that, unlike `setget` properties always call their setter/getter even inside the same class. This gives users a consistent behavior which won't cause confusion or lead to potential mistakes during a refactor.
+
+### `await` instead of `yield`
+
+As you might already know, the `yield` keyword is removed in favor of `await`. It not only have a more meaningful name but it also takes advantage of first-class signals that were introduced in the `master` branch of Godot. The syntax is easier to understand and have less boilerplate (you don't need to write the `"completed"` signal when waiting coroutines.
+
+It is also more transparent if the function you called doesn't always work as a coroutine (you don't need to treat the special case), and it's type-safe since you can't receive a function state when you were expecting the return value.
+
+### `super` keyword
+
+Instead of prefixing the function name with a period (`.`) now you must use the `super` keyword to call a function defined in the superclass instead of the overridden version. This also applies to constructors, making it more consistent in general and improving the flexibility.
+
+Calling `super()` on its own will call the same function you are in but using the superclass implementation. If you need to call a different function you can use `super.function_name()`.
+
+## Code completion
+
+As mentioned in the previous report, code completion was a working in progress. Now it is essentially complete. I am aware that it could use some quality-of-life improvements, but this will be worked on later. For now it should be the same as it was before. If something is missing feel free to report an issue.
+
+## Remove multi-level calls
+
+Another common source of confusion was [removed](https://github.com/godotengine/godot/pull/40670). If you create an override of some lifecycle functions (such as `_process` or `_ready`) it still called the superclass implementation implicitly. Worse yet: some functions called the superclass before the subclass, and some went on the other direction.
+
+This behavior is now completely removed. If you need to call the parent implementation, you can use the `super` keyword as mentioned above. This is common in OOP languages, so it should be more aligned to what user expects (which is evidenced by multiple issues reporting this behavior in the past). It also gives users control of _when_ the super implementation should be called.
+
+Note that methods defined in the C++ code are still called. This is needed to make sure engine behavior is correct (like the button `_gui_input` which is needed to execute the pressing behavior).
+
+## Testing
+
+I spent a good chunk of the time testing GDScript implementation and fixed an amount of bugs and crashes along the way. If you find crashes or issues don't be afraid to [report it](https://github.com/godotengine/godot/issues) (if it wasn't reported before). Eventually I'll do a big round of bug fixes to stabilize it for release, but for now I'll try to keep GDScript in a workable state and especially without crashes.
+
+## Future
+
+Currently I'm working on an abstraction for the code generation interface. This will be helpful to create an ability to change the target backend language (which currently is only the GDScript VM itself) without having to change the compiler, eventually paving way to code optimization as well. More details on this will come in the next progress report.
+
+After that I'll start adding typed instructions to the VM which should increase the speed massively for when you use static typing in the script.
\ No newline at end of file
diff --git a/collections/_article/gdscript-progress-report-type-checking-back.md b/collections/_article/gdscript-progress-report-type-checking-back.md
new file mode 100644
index 0000000000..ff8aefad15
--- /dev/null
+++ b/collections/_article/gdscript-progress-report-type-checking-back.md
@@ -0,0 +1,75 @@
+---
+title: "GDScript progress report: Type checking is back"
+excerpt: "Report on the new GDScript code featuring the new type checking, warnings, code completion and a few more details."
+categories: ["progress-report"]
+author: George Marques
+image: /storage/app/uploads/public/5f0/390/8aa/5f03908aa71d6900240172.png
+date: 2020-07-06 00:00:00
+---
+
+After completing the new [tokenizer](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer) and [parser](https://godotengine.org/article/gdscript-progress-report-writing-new-parser) as mentioned in the previous reports, I started working on the code analyzer, which is responsible for type checking and also for used for other features like warnings and some optimizations.
+
+This was done before as a second pass inside the parser but it was now moved to another class to make it clear that it doesn't happen at the same pass thus avoiding issues with functions being called out of order (which happened by a few contributions that missed this detail).
+
+*See other articles in this Godot 4.0 GDScript series:*
+
+1. [GDScript progress report: Writing a tokenizer](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer)
+2. [GDScript progress report: Writing a new parser](https://godotengine.org/article/gdscript-progress-report-writing-new-parser)
+3. (you are here) [GDScript progress report: Type checking is back](https://godotengine.org/article/gdscript-progress-report-type-checking-back)
+4. [GDScript progress report: New GDScript is now merged](https://godotengine.org/article/gdscript-progress-report-new-gdscript-now-merged)
+5. [GDScript progress report: Typed instructions](https://godotengine.org/article/gdscript-progress-report-typed-instructions)
+6. [GDScript progress report: Feature-complete for 4.0](https://godotengine.org/article/gdscript-progress-report-feature-complete-40)
+
+## Inferred by default
+
+One of the main changes in the new type checker is that it always infer the type of expressions and variables. It does not force the variable type unless explicitly stated by the user, as it was before, but it's now able to catch type errors in these cases, and potentially optimize based on types.
+
+This also means that it's easier to get safe lines (the ones colored in green) even without adding types to everything and more errors can be detected at the editor.
+
+## Enums can be used as types
+
+A long requested feature is that enums should be also possible types. They are considered regular integers in general, but for type checking purposes they are considered a specific type. For example, setting an integer to a variable with an enum type is okay but setting from a different enumeration gives an error.
+
+
+
+## Warnings are back
+
+The code was moved to a different file to avoid issues with circular includes. It also helps uncluttering the main `gdscript.cpp` file which is already long enough.
+
+Some warnings were removed since they don't apply to the new GDScript syntax, such as the one about the possibility of a `yield` which is not a concern anymore since the keyword is replaced by `await`. Some were added to cover new ground, like a warning for unused local constants, since those are now added.
+
+
+
+Local identifiers are now better checked for usages and shadowing. So the iterator variable from a `for` loop or the binds in a `match` statement are treated like local variables and have the checks applied to them as well. This means that if you try to declare a variable with the same name as a `match` binding, you'll get an error and if you don't use the binding you'll get a warning.
+
+## Better constant folding
+
+The process of analyzing constant expressions and processing their result at compile time is commonly called "constant folding". The old parser did that in the first pass (since it dated from back when GDScript had a single parser pass) but now it is done by the analyzer.
+
+This means that now it's possible to resolve constant names as well in all cases. For instance, if you type `PI * 2` in your code, the analyzer will compute the multiplication at compile time, increasing a bit of performance at runtime. This also applies to user-defined constants, which reduces the burden of using those to replace common values.
+
+## GDScript cache singleton for mediating loading of scripts
+
+Last year I've come up with an idea to cache scripts in order to fix the problems with cyclic dependencies in GDScript. I've made a [pull request](https://github.com/godotengine/godot/pull/38118) for the 3.2 branch but unfortunately it's still lacking in some regards.
+
+The idea is to allow only parsing the scripts without using the Resource Loader from Godot itself. This makes possible for the code to do type checking from dependencies without creating a loading loop. It also creates "shallow scripts" (that is, scripts that still don't have the code compiled) so they can be referenced before being actually compiled.
+
+I'm now integrating this idea with the new GDScript code to solve the problem from the root. Once it's working I'll also port it back to 3.2, as long as we can test it thoroughly to avoid regressions.
+
+## Properties syntax
+
+As mentioned in the previous report, my intention is to remove `setget` and provide a more straightforward [property declaration](https://github.com/godotengine/godot-proposals/issues/844) instead. This is now done with the addendum that lets users still use regular functions as setter and getter if so they wish.
+
+## Code completion
+
+The code completion relies on the parser code, so the old version was removed. I'm now working on porting it to the new parser while adding extra completion needed in some cases, like enums in type hints, and completion for annotations names and arguments. This is still a work in progress so far.
+
+
+
+
+
+## Future
+
+As mentioned, I still need to finish code completion. After that I'll make a new PR since the code will be in a usable status, with GDScript having the same level of features as before (or more in some areas). This will allow the users to begin testing and we can fix potential bugs that I missed in my tests.
+
+Afterwards I'll start working on the interpreter to start doing performance optimizations.
\ No newline at end of file
diff --git a/collections/_article/gdscript-progress-report-typed-instructions.md b/collections/_article/gdscript-progress-report-typed-instructions.md
new file mode 100644
index 0000000000..75c828451f
--- /dev/null
+++ b/collections/_article/gdscript-progress-report-typed-instructions.md
@@ -0,0 +1,84 @@
+---
+title: "GDScript progress report: Typed instructions"
+excerpt: "GDScript now has specific instructions for typed code, allowing a faster execution when types are known at compile time. This is the beginning of optimization in GDScript and the article shows a few details on how it was done and why it's faster."
+categories: ["progress-report"]
+author: George Marques
+image: /storage/app/uploads/public/5f9/17e/9ec/5f917e9ecf2a2049515486.png
+date: 2020-10-22 00:00:00
+---
+
+It's been a while since [my last report](https://godotengine.org/article/gdscript-progress-report-new-gdscript-now-merged) because this particular task took me more time than I anticipated. GDScript now got a much needed [optimization](https://github.com/godotengine/godot/pull/43004).
+
+*See other articles in this Godot 4.0 GDScript series:*
+
+1. [GDScript progress report: Writing a tokenizer](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer)
+2. [GDScript progress report: Writing a new parser](https://godotengine.org/article/gdscript-progress-report-writing-new-parser)
+3. [GDScript progress report: Type checking is back](https://godotengine.org/article/gdscript-progress-report-type-checking-back)
+4. [GDScript progress report: New GDScript is now merged](https://godotengine.org/article/gdscript-progress-report-new-gdscript-now-merged)
+5. (you are here) [GDScript progress report: Typed instructions](https://godotengine.org/article/gdscript-progress-report-typed-instructions)
+6. [GDScript progress report: Feature-complete for 4.0](https://godotengine.org/article/gdscript-progress-report-feature-complete-40)
+
+## Bug fixes
+
+Between my last report and this one I've [been](https://github.com/godotengine/godot/pull/41359) [fixing](https://github.com/godotengine/godot/pull/41381) [many](https://github.com/godotengine/godot/pull/41547) [bugs](https://github.com/godotengine/godot/pull/41674) in the new GDScript. While not thorough, it should be stable enough to not crash all the time. I am aware that a lot of bugs remain, but I'll iron them out when the features are complete.
+
+As I said before, if you found a bug not yet reported make sure to open a new [issue](https://github.com/godotengine/godot/issues) so I can be aware of it.
+
+## Code generation abstraction
+
+Before I delved into the interpreter, I [created another class](https://github.com/godotengine/godot/pull/41338) for abstracting the code generation process in the compiler. This allows new targets to be added without messing with the compiler itself by just adding a new implementation of that abstraction.
+
+That should allow us later on to more easily add new targets like compiling to LLVM or C (note that those ideas are not settled, we still need to investigate the best way to do it). It also might simplify how we apply an optimization phase to GDScript code.
+
+This doesn't yet have a pluggable interface, so it's hardcoded for the single target that we have for now (the GDScript interpreter itself) but once we have new targets we can easily adapt to our needs.
+
+## Typed instructions
+
+I know many of you have been waiting for this. GDScript has had optional typing for quite a while, but so far it had only been for validation in the compilation phase. Now we're finally getting some performance boost at runtime.
+
+Note that some optimized instructions are applied with type inference but to enjoy the most benefit you have to use static typing for everything (you also get safer code, so it's a plus).
+
+So what kinds of instructions do we have? Here's a short list:
+
+* Operations (such as `+`, `or`, `&`, etc.), when the type of the operands are known.
+* Subscript/attribute access (like `a[b]` and `a.b`), when the types of both the base and index are known.
+* Function calls for built-in and native (C++) types, when the base type is known.
+ * Those get special cases when argument types are also known.
+* Built-in function calls (like `sin()`, `randi()`), when the type of the arguments are known.
+ * Note that arguments that require conversion might not get a faster path.
+* Iteration (use of `for` loop) when the type of the iterated value is known.
+
+Doesn't sound like a lot but since those got a lot of variations for the type combinations, the number of instructions got quite a bit larger. Those are the most used and where performance matters more.
+
+### Why is this faster?
+
+Having specific instructions for when type is known allows us to take shortcuts in the interpreter. For example, if we know we are adding two integer values, we can take the pointer for the integer values from the Variants and just add them (literally a `+` in the C++ source code). Before we had to not only look up the types of the operands but also the operation itself at runtime which takes a while.
+
+Function calls for native types are also a very special case since we can take a pointer to the function and call it directly when the arguments are already validated. This is what is used in GDNative and C# for instance, since they have static typing by default.
+
+### How faster is it?
+
+I have made a few synthetic benchmarks to test how faster a typed instruction was than a regular untyped one. This consisted in running all in a loop and measuring the time it took. Assuming the loop takes the same amount of time in both cases, the difference in time should be the instruction itself. Typed instructions are consistently faster in all tests.
+
+* Subscript/attribute: about 5-7% faster
+* Operations: about 25-50% faster
+* Function calls in built-in types (without pre-validated arguments): about 30% faster
+* Function calls in built-in types (with pre-validated arguments): about 70% faster
+* Function calls in native classes (without pre-validated arguments): about 70-80% faster
+* Function calls in native classes (with pre-validated arguments): about 120-150% faster
+* Built-in function calls: about 25-50% faster
+* Iteration: about 10-50% faster (dictionaries and strings have a lesser performance gain)
+
+Those were measured with a debug build. It should perform better with release builds.
+
+### Can it be more optimized?
+
+Yes, there are still room for further optimization. But since it can get quite complicated we left this for a later review. There are some inner working in the VM that could be better. For instance, we could reduce the type changes in the stack (when they are attributed a new value) which reduce the operations needed to perform the instructions, making them faster. We could also improve type inference to rely less on static typing and allow simpler code to still get a speed boost.
+
+Also, code in GDScript is not yet optimized by the compiler. Once we reach that it'll certainly improve overall speed of execution of the scripts.
+
+I want to point out GDScript is not as slow as some imagine. Much of what you do is leveraged to the engine internals, which are built in C++ and optimized already. In my tests I had loops of 100,000 iterations and even the function calls (which are generally slower) were hitting about 70ms for running the whole loop (sure I do have a somewhat good CPU, but this is running single-threaded in debug mode). While it might be a bit slower than other languages, it's definitely up for the task at hand (that is, making game logic).
+
+## Future
+
+Now that this first optimization of the VM is complete, I'll be a bit away from GDScript to focus on GDNative. Since it doesn't have a dedicated maintainer anymore and it needs many improvements, especially on the usability side. We'll meet with coredevs familiar with GDNative to decide what needs to be done and start working on it.
\ No newline at end of file
diff --git a/collections/_article/gdscript-progress-report-writing-new-parser.md b/collections/_article/gdscript-progress-report-writing-new-parser.md
new file mode 100644
index 0000000000..988ddaf892
--- /dev/null
+++ b/collections/_article/gdscript-progress-report-writing-new-parser.md
@@ -0,0 +1,132 @@
+---
+title: "GDScript progress report: Writing a new parser"
+excerpt: "Showing the work for the new GDScript parser, why it is done and how it improves over the old one. Also show a bit of new features."
+categories: ["progress-report"]
+author: George Marques
+image: /storage/app/uploads/public/5ed/43c/e24/5ed43ce245f10218039510.png
+date: 2020-06-01 11:37:58
+---
+
+As you might be aware right now I'm currently working on revamping the GDScript compiler. After finishing the tokenizer in the last report, I've been working on the new parser.
+
+The main point to bring in this rewrite is to make a bit more "textbook-like" as mentioned in the previous article, so I split grammar production in different functions. Before we had big `switch` statements with many cases to parse the code, now we delegate the work to specific functions. This makes it easier to find where a particular piece of code is.
+
+*See other articles in this Godot 4.0 GDScript series:*
+
+1. [GDScript progress report: Writing a tokenizer](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer)
+2. (you are here) [GDScript progress report: Writing a new parser](https://godotengine.org/article/gdscript-progress-report-writing-new-parser)
+3. [GDScript progress report: Type checking is back](https://godotengine.org/article/gdscript-progress-report-type-checking-back)
+4. [GDScript progress report: New GDScript is now merged](https://godotengine.org/article/gdscript-progress-report-new-gdscript-now-merged)
+5. [GDScript progress report: Typed instructions](https://godotengine.org/article/gdscript-progress-report-typed-instructions)
+6. [GDScript progress report: Feature-complete for 4.0](https://godotengine.org/article/gdscript-progress-report-feature-complete-40)
+
+## Less lookahead
+
+The previous parser relied on the tokenizer ability to buffer tokens to ask for a few the next (and sometimes the previous) tokens in order to decide what the code means. The new tokenizer lacks this ability on purpose to make sure we can use the bare minimum of a lookahead to parse the code.
+
+Minimizing lookahead means the code is easier to parse. If we were to introduce a new syntax for a feature, now we have to make sure it does not increase the complexity of the parser by demanding too much tokens at once.
+
+The new parser only stores the current and previous token (or the current and the next if you look it in another way). It means that GDScript only needs one token of lookahead to be fully parsed. This takes us to a simpler language design and implementation.
+
+
+## A Pratt parser for expressions
+
+Those who are familiar with programming language implementation will know that parsing expressions is always tricky. When you consider precedence of operators, and that an arbitrary expression can be left operand of a, say, `+` operator, it can get very tricky to decide how to build the parse tree.
+
+There are different solutions to this but I like the [Pratt parsing](https://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/) for its simplicity. It consists in a function table in which the index is the token type. This means that deciding which parser function to call is just a lookup based on the current token.
+
+
+
+This makes it very easy to see—and change—the precedence of every operators. The functions do have to share the signature, but it's usually not a big deal since most of them aren't called outside the expression parser.
+
+## Multiple error detection
+
+Also mentioned in the previous article, the idea is to show multiple errors at once so you don't need to fix one to discover the next. The new parser has support to store an arbitrary number of errors.
+
+When it finds something unexpected, the parser enters *"panic mode"*. While in this mode, it will ignore every token until it finds one that can only be the beginning of a statement. At this point, it can leave the panic mode and go back to regular parsing. While this can cause cascading errors due to missing or extra token, it can show errors in different parts of the file at once.
+
+This will also help completion since the parser won't need to stop on the first error and can check what's next in the file to also suggest.
+
+## Pretty tree printer
+
+As I did with the tokenizer, I added a print mode to replace the old `gd_parser` test. It prints the tree in an unambiguous readable way so problems with parsing can be detected.
+
+So a script like this:
+
+```gdscript
+class_name MyClass extends Node2D
+
+const SPEED = 200
+@export var player_name = "Vladimir"
+
+func _ready():
+ $Button.button_up.connect(_on_button_pressed)
+ print("Ready!")
+
+func _on_button_pressed():
+ print("Player is \"%s\"" % player_name)
+
+func _process(delta):
+ $Body.move(delta * SPEED)
+```
+
+Will be printed like this:
+
+```
+Class MyClass Extends Node2D :
+| Constant SPEED
+| | = 200
+| @export ()
+| Variable player_name
+| | = "Vladimir"
+| Function _ready( ) :
+| | $Button.button_up.connect( _on_button_pressed )
+| | print( "Ready!" )
+| Function _on_button_pressed( ) :
+| | print( ("Player is "%s"" % player_name) )
+| Function _process( delta ) :
+| | $Body.move( (delta * SPEED) )
+```
+
+## Annotations
+
+Shown briefly in the previous example, I implemented annotations as outlined in [GIP #828](https://github.com/godotengine/godot-proposals/issues/828). Those are meant to replace a few keywords and improve the ability to add new integrations without having to create new keywords and big changes in the parser.
+
+This also means that the old `export` syntax is now extinct in favor of specific annotations. This makes it in general easy to remember and understand and don't require much effort in the GDScript implementation, since their arguments are the same as expected in the internal hint strings.
+
+There will be an [update to the documentation](https://github.com/godotengine/godot-docs/pull/3623) to explain the new way.
+
+## `await` replaces `yield`
+
+The old `yield` syntax was a bit convoluted complicated to understand, forcing you to deal with function states. It was especially harder to understand given it did the opposite of other languages do with the same keyword.
+
+The `await` syntax can be used to wait for signals or coroutines alike:
+
+```gdscript
+func coroutine():
+ await $Button.button_up # Will suspend the function and resume when the button is pressed.
+ return true
+
+func _ready():
+ var result = await coroutine() # Will suspend the function and wait for the coroutine result.
+ print(result) # true
+```
+
+## Breaking things to make them anew
+
+I wanted to make this new parser working with the current system sooner rather than later. So I amended the dependencies on the old parser and tokenizer to use the new one. Since this is rather time consuming, a lot of things were disabled in the meantime.
+
+I do mention what's missing in my [initial Pull Request](https://github.com/godotengine/godot/pull/39093) but here is a shortlist:
+
+* Type checking.
+* Code completion.
+* Warnings.
+* Language server.
+* `setget` (will be replaced by [properties](https://github.com/godotengine/godot-proposals/issues/844)).
+* Some optimizations.
+
+This will be fixed in the next steps
+
+## Future
+
+There's still a long road ahead to make GDScript a better language in general. The next step is to read the type checks so the systems that depend on it can also be reactivated. Hopefully the new type checker will be more precise than the previous one (I learned a lot since then). And it will allow use of some new features like typed arrays.
\ No newline at end of file
diff --git a/collections/_article/gdscript-progress-report-writing-tokenizer.md b/collections/_article/gdscript-progress-report-writing-tokenizer.md
new file mode 100644
index 0000000000..4043ecab8e
--- /dev/null
+++ b/collections/_article/gdscript-progress-report-writing-tokenizer.md
@@ -0,0 +1,288 @@
+---
+title: "GDScript progress report: Writing a tokenizer"
+excerpt: "GDScript is being rewritten. In this article we talk about the new tokenizer—the first step in the compilation process."
+categories: ["progress-report"]
+author: George Marques
+image: /storage/app/uploads/public/5eb/018/a65/5eb018a659a8f843228718.png
+date: 2020-05-04 11:00:00
+---
+
+Some of you may not be aware, but I'm currently rewriting GDScript. It was discussed during the last Godot Sprint in Brussels and the core developers approved the idea.
+
+The main rationale to rewrite the GDScript implementation is that it has been changed so much that it's gotten quite hard to understand after receiving so many new features. This is also an opportunity to clean up, tidy up, and modernize the code, like it happened for some other parts of the engine that got rewritten in the past years.
+
+The objective is to have a more "textbook-like" compiler, which will help maintenance both by those already acquainted with the Godot source and by new faces who saw something about writing compilers in the past. Hopefully this will make it harder to mess something up, given this is critical code for the engine users.
+
+*See other articles in this Godot 4.0 GDScript series:*
+
+1. (you are here) [GDScript progress report: Writing a tokenizer](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer)
+2. [GDScript progress report: Writing a new parser](https://godotengine.org/article/gdscript-progress-report-writing-new-parser)
+3. [GDScript progress report: Type checking is back](https://godotengine.org/article/gdscript-progress-report-type-checking-back)
+4. [GDScript progress report: New GDScript is now merged](https://godotengine.org/article/gdscript-progress-report-new-gdscript-now-merged)
+5. [GDScript progress report: Typed instructions](https://godotengine.org/article/gdscript-progress-report-typed-instructions)
+6. [GDScript progress report: Feature-complete for 4.0](https://godotengine.org/article/gdscript-progress-report-feature-complete-40)
+
+## Why not a parser generator?
+
+I've seen this question more than once: why can't we use a parser generator? Then we would just need to write a grammar specification and the generator makes the whole parser for us.
+
+The main problem with parser generators—and the main reason modern language compilers don't use them—is that it is incredibly hard to provide meaningful error messages to the users of the language. With hand-made parsers we can inject checks, such as properly validating the path you put in a `preload` statement, among other things.
+
+The GDScript grammar is also pretty much settled (except maybe for a few of the new features) so we don't benefit from prototyping and iterating on a grammar definition, which is the main selling point of parser generators.
+
+## Rewriting the tokenizer
+
+The first step when writing a compiler is to make the *tokenizer* (also called *scanner* by some authors). It has the responsibility of reading the characters of the source code and bundling them together as meaningful chunks which are called *tokens*. Tokens contain information about what they mean and where they occured. This makes the following compilation steps easier to manage as they don't have to deal with minutiae such as comments and whitespace, which are not meaningful for the final execution.
+
+I'm taking this opportunity to make the tokenizer a bit smarter (and maybe a bit dumber in some regards) in order to make the parsing simpler (I'll write about the parser when I get there). The new tokenizer will emit special tokens when it detects there's an indentation change and also a newline. Since GDScript is indentation based, this helps the parser identify the start and end of blocks. This approach is also used by Python, so I'm not being revolutionary here.
+
+I'm also rewriting the `--test gd*` commands so they work with the new code. Those are very useful during this rewrite since they allow me test the steps of the compiler without needing to have everything ready. I can make sure the tokenizer is working properly before moving on to the parser.
+
+
+## What is a token?
+
+A **token** is a data container which describes the characters in the source code as something meaningful for the programming language. The main thing to store is the token type (e.g. a symbol, an identifier, a keyword, etc.), which is a value taken from an enum, since there are limited variety. This is used by the parser to understand which statement to expect.
+
+Another thing is the potential associated data. If it's, say, a `+` sign it doesn't matter since the type `Token::PLUS` is enough to recognize it, but a `Token::IDENTIFIER` needs to have the actual identifier to be referred. Literal values, such as numbers and strings, also need to be stored. The new tokenizer uses a single Variant to store this.
+
+It's also useful to store positional information about the token: line/column where it starts and ends. This is not useful for interpreting the code, but is incredibly valuable for creating readable error messages.
+
+## Features of the new tokenizer
+
+As mentioned, the main reason for the rewrite is to make it smarter, so let me show off some of the new features.
+
+### Storing correct positional data
+
+The old tokenizer stored only line and column, but there are many tokens that span across many columns and some across multiple lines. For example, a snippet like this one:
+
+```gdscript
+var x = "string"
+x += """\
+Multiline String
+"""
+```
+
+Can now be tokenized like this:
+
+```
+0001 var x = "string"
+ ^^^
+ --> var
+-------------------------------------------------------
+0001 var x = "string"
+ ^
+ --> Identifier(StringName) x
+-------------------------------------------------------
+0001 var x = "string"
+ ^
+ --> =
+-------------------------------------------------------
+0001 var x = "string"
+ ^^^^^^^^
+ --> Literal(String) string
+-------------------------------------------------------
+0001 var x = "string"
+ ^
+ --> Newline
+-------------------------------------------------------
+0002 x += """\
+ ^
+ --> Identifier(StringName) x
+-------------------------------------------------------
+0002 x += """\
+ ^^
+ --> +=
+-------------------------------------------------------
+0002 x += """\
+0003 Multiline String
+0004 """
+ ^^^^^^^^^^^^^^^^
+ --> Literal(String) Multiline String
+
+-------------------------------------------------------
+0004 """
+ ^
+ --> Newline
+-------------------------------------------------------
+EOF
+```
+
+This is actually the output of the new tokenizer test. It rewrites the lines and points to the whole span of the token. This is meant to improve error messages by pointing the user to the exact spot.
+
+### Creating indentation and newline tokens
+
+While the previous tokenizer kept track of indentation characters and newlines, it let the parser decide the current indentation level, and whether or not a newline was relevant. The new one only generates a newline token when it's not empty, and also emits tokens for indentation. For example:
+
+```gdscript
+"start"
+
+ "indent"
+ "more indent"
+"two dedents"
+```
+
+Is tokenized like this:
+
+```
+0001 "start"
+ ^^^^^^^
+ --> Literal(String) start
+-------------------------------------------------------
+0001 "start"
+ ^
+ --> Newline
+-------------------------------------------------------
+0003 "indent"
+ ^^^^
+ --> Indent
+-------------------------------------------------------
+0003 "indent"
+ ^^^^^^^^
+ --> Literal(String) indent
+-------------------------------------------------------
+0003 "indent"
+ ^
+ --> Newline
+-------------------------------------------------------
+0004 "more indent"
+ ^^^^^^^^
+ --> Indent
+-------------------------------------------------------
+0004 "more indent"
+ ^^^^^^^^^^^^^
+ --> Literal(String) more indent
+-------------------------------------------------------
+0004 "more indent"
+ ^
+ --> Newline
+-------------------------------------------------------
+0005 "two dedents"
+ ^
+ --> Dedent
+-------------------------------------------------------
+0005 "two dedents"
+ ^
+ --> Dedent
+-------------------------------------------------------
+0005 "two dedents"
+ ^^^^^^^^^^^^^
+ --> Literal(String) two dedents
+-------------------------------------------------------
+0005 "two dedents"
+ ^
+ --> Newline
+-------------------------------------------------------
+EOF
+```
+
+You can see that it detects a decrease in two levels by emitting two `dedent` tokens. It also doesn't emit a newline on line 2 because it's empty.
+
+### Error reporting and leniency
+
+The old tokenizer only allowed for one error, after which it would only return the same error if you asked for a new token. Now it returns the error but keeps going through the process so you can detect many errors at once. So this:
+
+```gdscript
+"invalid escape \h <- here"
+ "indent"
+ "mismatched unindent"
+```
+
+Gives this:
+
+```
+0001 "invalid escape \h <- here"
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ --> Literal(String) invalid escape <- here
+-------------------------------------------------------
+0001 "invalid escape \h <- here"
+ ^^
+ --> Error(String) Invalid escape in string.
+-------------------------------------------------------
+0001 "invalid escape \h <- here"
+ ^
+ --> Newline
+-------------------------------------------------------
+0002 "indent"
+ ^^^^^^^^
+ --> Indent
+-------------------------------------------------------
+0002 "indent"
+ ^^^^^^^^
+ --> Literal(String) indent
+-------------------------------------------------------
+0002 "indent"
+ ^
+ --> Newline
+-------------------------------------------------------
+0003 "mismatched unindent"
+ ^^^^^
+ --> Error(String) Unindent doesn't match the previous indentation level.
+-------------------------------------------------------
+0003 "mismatched unindent"
+ ^^^^^
+ --> Dedent
+-------------------------------------------------------
+0003 "mismatched unindent"
+ ^^^^^^^^^^^^^^^^^^^^^
+ --> Literal(String) mismatched unindent
+-------------------------------------------------------
+0003 "mismatched unindent"
+ ^
+ --> Newline
+-------------------------------------------------------
+0004
+ ^
+ --> Dedent
+-------------------------------------------------------
+EOF
+```
+
+You can notice that the error in the string comes after the string token. That's okay because the parser will report all errors at once and they will be sorted by position.
+
+Indentation level is also correctly maintained even in case of a mismatch (that's why there's two dedents for one indent). This is helpful to keep the parsing lenient in some special cases, which I'll talk more about when I write about the parser.
+
+### Recognizing extra tokens
+
+Some characters and sequences aren't allowed in the source code but they can be tokenized so a better error message can be provided. Example:
+
+```
+? ` <<<<<<< ======= >>>>>>>
+```
+
+Result:
+
+```
+0001 ? ` <<<<<<< ======= >>>>>>>
+ ^
+ --> ?
+-------------------------------------------------------
+0001 ? ` <<<<<<< ======= >>>>>>>
+ ^
+ --> `
+-------------------------------------------------------
+0001 ? ` <<<<<<< ======= >>>>>>>
+ ^^^^^^^
+ --> VCS conflict marker
+-------------------------------------------------------
+0001 ? ` <<<<<<< ======= >>>>>>>
+ ^^^^^^^
+ --> VCS conflict marker
+-------------------------------------------------------
+0001 ? ` <<<<<<< ======= >>>>>>>
+ ^^^^^^^
+ --> VCS conflict marker
+-------------------------------------------------------
+0001 ? ` <<<<<<< ======= >>>>>>>
+ ^
+ --> Newline
+-------------------------------------------------------
+EOF
+```
+
+The question mark can be recognized as an attempt to use the C-style ternary conditional operator, so we can show the user the correct operator for GDScript.
+
+We also recognize conflict markers so you can easily notice that you have a merge conflict in the file.
+
+## What comes next
+
+Now that the tokenizer is pretty much done, I'll start rewriting the parser, which is responsible for reading the sequence of tokens and making sense out of them, deciding if it's a function, variable, expression, etc. I'll write more about it when I have something to show.
\ No newline at end of file
diff --git a/collections/_article/george-marques-will-be-working-full-time-project.md b/collections/_article/george-marques-will-be-working-full-time-project.md
new file mode 100644
index 0000000000..12e301f4fe
--- /dev/null
+++ b/collections/_article/george-marques-will-be-working-full-time-project.md
@@ -0,0 +1,35 @@
+---
+title: "George Marques will be working full time for the project"
+excerpt: "After some months, the project has received enough funding to be able to do a new full time hire! Thanks hugely to everyone who is supporting us, as your help has allowed us reaching this far!"
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5d8/25c/62c/5d825c62cc1e4431380963.png
+date: 2019-09-18 00:00:00
+---
+
+### Goal Met!
+
+After some months, the project has received enough funding to be able to do a new full time hire! Thanks hugely to everyone who is supporting us, as your help has allowed us reaching this far!
+
+### Pedro Estebanez is still on track
+
+Unfortunately, it was difficult for us (and him) to predict when the goal would be met so, due to timing issues, he recently got into a new paid contract with a client (Pedro has been the first of our contributors who became a professional Godot consultant, and works with many companies using the engine). This makes it impossible to for him to work with us for the time being. He still wishes from the bottom of his heart to eventually work full time for the project, so the next Patreon goal is still reserved for him.
+
+
+### George Marques
+
+Some months ago, due to the growing amount of potential sponsors and donations, we had to discuss potential hires. The project is blessed with a large amount of absolutely brilliant contributors and it is our wish that as Godot keeps growing and securing more funding sources, we will be able to have more of them on board working full time. Hope this comes true in the coming years.
+
+George is from Sao Paulo, Brazil. I had the pleasure of meeting him some months ago during the Big Festival (to where I was invited). He is part of the Godot project leadership comitee, along with me, Ariel Manzur, Rémi Verschelde, Julian Murgia and Hein-Pieter van Braam.
+
+He is one of the longest standing and most reliable contributors and an excellent generalist. He is responsible for the UWP port, as well as a lot of improvements and fixes across the engine. He is the main contributor behind the GDScript rewrite for Godot 3.1, which now includes optional typing and a several quality of life improvements (he is the current GDSCript maintainer, along with Bojidar Marinov). Together with Rémi, George has also managed our activities related to Google Summer of Code, and has been present last year during the mentor summit. Thanks to their fantastic work on this area the project has managed to get more student slots granted this year.
+
+Besides continued work on GDScript (on his schedule is the addition of typed instructions, which will massively improve run-time performance, and eventually compilation of scripts to C), he will work together with Rémi, our project manager, doing general bug-fixing and code reviews, helping alleviate our large bottleneck in this area.
+
+On a side note, please remember that for C# support, Ignacio Roldán is [already working full time](https://godotengine.org/article/csharp-android-support) for the project thanks to a generous grant from Microsoft.
+
+### Future
+
+The bureaucratic part of the hire (he needs to sign with Software Freedom Conservancy) will take around a month or two, so he will effectively begin working in November. Meanwhile, we hope the level of donations stabilizes over the goal.
+
+Our next Patreon goal is to be able to hire yet another generalist, so we added a new goal for this task, hoping we can finally hire Pedro this time. If you are not yet, please help us reach this goal by [becoming a patron](https://www.patreon.com/godotengine)!
\ No newline at end of file
diff --git a/collections/_article/georgemjesus@gmail.com.md b/collections/_article/georgemjesus@gmail.com.md
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/collections/_article/get-ready-fosdem-and-godotcon-2018.md b/collections/_article/get-ready-fosdem-and-godotcon-2018.md
new file mode 100644
index 0000000000..dc139e8661
--- /dev/null
+++ b/collections/_article/get-ready-fosdem-and-godotcon-2018.md
@@ -0,0 +1,52 @@
+---
+title: "Get ready for FOSDEM and GodotCon 2018!"
+excerpt: "In February 2018, the Godot Engine community invites you to meet together at the FOSDEM (3 & 4 Feb) and the GodotCon (5 & 6 Feb), both in Brussels, Belgium and with dozens of Godot users and contributors, including our lead developer Juan Linietsky coming all the way from Buenos Aires. FOSDEM is a huge free and open source software-focused event with over 8000 attendees. Coming right after FOSDEM in the same city, GodotCon is a small but Godot-focused event with talks, workshops and many activities around our favourite engine."
+categories: ["events"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5a2/eed/6e1/5a2eed6e1cc88595174491.png
+date: 2017-12-11 20:44:35
+---
+
+[Last year in February](/article/meet-us-fosdem-2017-and-godotcon), we attended the [FOSDEM](https://fosdem.org/) and organized our very own **GodotCon** (a.k.a. *GDC*, the GoDot Convention), and it was a great community time for all who could attend in Brussels, Belgium.
+
+For the coming year, we are lucky to be selected again to have a [Godot stand](https://fosdem.org/2018/stands/) at the [FOSDEM 2018](https://fosdem.org/2018/) on **3 & 4 February 2018** in Brussels, and we will organize another bigger [GodotCon](/events) on **5 & 6 February 2018**, also in Brussels.
+
+And it gets better: our lead developer Juan "reduz" Linietsky is coming all the way from Buenos Aires to Europe to spend those four days with the community, so it's a great opportunity to meet one of the minds behind Godot Engine!
+
+## TL;DR: Where do I sign up?
+
+Both events are free of charge for everyone, and for the FOSDEM you do not even need to register: just show up and say hi at the Godot stand!
+
+For GodotCon however, **registration is mandatory** as we need to know how many persons will be there to find an appropriate venue in Brussels. To help us with the organization, we ask that you register as soon as possible, and **before 31 December 2017**.
+
+**Register here:** [https://framaforms.org/registration-for-godotcon-2018-1512567025](https://framaforms.org/registration-for-godotcon-2018-1512567025)
+
+You can also indicate on that form if you plan to attend FOSDEM, so that we know who to expect.
+
+## FOSDEM 2018
+
+[FOSDEM](https://fosdem.org) is the major European event focusing on Free and Open Source Software (FOSS). Godot will have a stand there ([Building K, level 2](https://fosdem.org/2018/stands/)) where we will be distributing and selling some goodies (T-Shirts, stickers) and most importantly presenting our favourite engine and some games to the FOSDEM visitors. More than 8,000 visitors are awaited, and we hope that many will be impressed by our Godot 3.0 demos!
+
+There *might* be some Godot-related talks, but we are still waiting for a confirmation from the FOSDEM organizers (the event is increasingly popular and they have hundreds of talk proposals to choose from).
+
+The FOSDEM is a great opportunity to discover new projects ([see the stands](https://fosdem.org/2018/stands/)) and attend great talks ([see the schedule](https://fosdem.org/2018/schedule/) - still in progress) from top-notch free software contributors. It will also be the occasion to meet other Godot users and contributors, at our stand or around a few Belgian beers :)
+
+**Practical infos** (location, schedule, etc.): See [FOSDEM.org](https://fosdem.org) and our [Events](/events) page.
+
+## GodotCon 2018
+
+*Update 10.01.2018:* [See this blog post](/article/godotcon-2018-venue-and-call-proposals) for information about the GodotCon venue as well as our Call for Proposals.
+
+
+
+Two days in a crowded event is not enough! To get more time together to actually discuss our projects, learn new things and work together on games and on the engine, we are organizing a 2-day event focused on Godot right after the FOSDEM (on Monday 5 and Tuesday 6).
+
+[Registrations are still ongoing](https://framaforms.org/registration-for-godotcon-2018-1512567025), but given the recent growth of the community we expect between 40 and 100 attendees; we'll size things accordingly so we need you to register as fast as possible to help us with the organization.
+
+There will soon be a **Call for Proposals** so that everyone can propose a talk, a workshop or any kind of activity that we could do during those two days. Last year was a big success, and we expect the new GodotCon to be even better, both due to the higher number of attendees and the presence of our lead developer Juan!
+
+The exact venue is still to be determined, as soon as we have a good overview about our numbers.
+
+**Practical infos:** See our [Events](/events) page.
+
+Looking forward to meeting some of you in Brussels!
\ No newline at end of file
diff --git a/collections/_article/get-ready-github-gameoff-godot.md b/collections/_article/get-ready-github-gameoff-godot.md
new file mode 100644
index 0000000000..caf2e6fd41
--- /dev/null
+++ b/collections/_article/get-ready-github-gameoff-godot.md
@@ -0,0 +1,71 @@
+---
+title: "Get ready for the GitHub Game Off with Godot"
+excerpt: "GitHub is hosting the 5th edition of its #GameOff jam focused on free and open source tools. As a leading libre 2D and 3D game engine, Godot is a perfect for that jam and it's a great opportunity to give it a try and fall in love with its intuitive yet powerful workflow!"
+categories: ["events"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/59f/71e/c9b/59f71ec9b35b2590240155.png
+date: 2017-10-30 13:48:37
+---
+
+GitHub [has announced](https://github.com/blog/2451-game-off-our-annual-game-jam-returns-in-november) the 5th edition of its *Game Off* game jam, [hosted on itch.io](https://itch.io/jam/game-off-2017) from **November 1st to December 1st 2017**.
+
+The main feature of Game Off is its focus on **free and open source** tools for game development, and this is obviously something that we consider highly in the Godot Engine community, as a fully libre 2D and 3D game engine.
+
+We encourage all existing and aspiring game developers to participate in this jam using our current stable release [Godot 2.1.4](/download). For newcomers, this blog post lists some of the great learning resources created by the community to help you get started with Godot.
+
+This is also a great opportunity to discover new FOSS tools such as [Blender](https://www.blender.org), [Krita](https://krita.org), [Inkscape](https://inkscape.org), [GIMP](https://www.gimp.org), [Audacity](http://www.audacityteam.org), [LMMS](https://lmms.io/)... or any of the hundreds of libre tools listed on [awesome-gamedev](https://github.com/Calinou/awesome-gamedev).
+
+Feel free to experiment with other games engines or frameworks too, such as [Phaser](http://phaser.io/news/2017/10/game-off), [LibGDX](https://libgdx.badlogicgames.com) or [LÖVE](https://love2d.org), but of course we are hoping to see a high percentage of the Game Off entries made with Godot!
+
+When you share screenshots or videos of your game on social media, please use the [#GitHubGameOff](https://twitter.com/hashtag/GitHubGameOff) hashtag as well as [#GodotEngine](https://twitter.com/hashtag/GodotEngine), to show the community what great projects are being worked on!
+
+
+
+*Kudos to the first Godot user publishing an open source shader to achieve such an effect on our [Asset Library](https://godotengine.org/asset-library) :)*
+
+## Getting started with Godot
+
+If you're new to Godot, or started only recently, you might be looking for good resources to learn how to make games with our engine. The following is a short list of recommended resources, but feel free to use different ones from the wealth of video tutorials and demos that have been produced by the Godot community over the years.
+
+### Official documentation
+
+The main resource is Godot's [official documentation](http://docs.godotengine.org/en/stable/).
+
+It contains many tutorials about the different features of the engine, including a [step by step tutorial](http://docs.godotengine.org/en/stable/learning/step_by_step/index.html) which should give you a good introduction to the core concepts of the engine such as nodes, scenes, instancing and scripting.
+
+The official documentation also includes the [Class Reference](http://docs.godotengine.org/en/stable/classes/index.html), where the API of the various nodes is documented. It's also included directly in the editor when you press the "Classes" and "Search Help" buttons in the script editor.
+
+
+
+### Community tutorials
+
+Community members have produced a great number of video tutorials for Godot 2.1, as well as quite a few text-based tutorials for those who prefer that. Some are standalone tutorials about a given feature or concept, while others are series that will lead you through making a simple game from A to Z. Here's a selection:
+
+- [KidsCanCode's *Godot 101*](https://www.youtube.com/playlist?list=PLsk-HSGFjnaFISfGRTXxp65FXOa9UkYc5) is a Godot learner's favorite and will teach you all the concepts you need to know to get started in about 3 hours of video content. Don't be fooled by Chris' tutor name, the series is a great fit for kids but also very suitable for grown-ups... and among game devs, we're all still children at heart, aren't we? :)
+- [Angega Studio's *Make a Space Shooter Game*](https://www.youtube.com/playlist?list=PLv3l-oZCXaqkUEqrLsKJIAhAxK_Im6Qew) is another series that will learn you through the conception of a 2D space shooter from start to finish, in about 2 hours of video content.
+- [GDquest's *30 Tutorials in 30 Days*](https://www.youtube.com/playlist?list=PLhqJJNjsQ7KEr_YlibZ3SBuzfw9xwGduK) series offers short and well-edited tutorials that will introduce you to a given feature. It's perfect for users with some development experience either from Godot or from another engine, and that want to quickly learn how to do something specific.
+- [GameFromScratch's Godot tutorial series](http://www.gamefromscratch.com/page/Godot-Game-Engine-tutorial-series.aspx) offers both video and text versions of great tutorials covering many aspects of the engine. The earlier ones were for Godot 1.x, but the concept they cover are still the same in today's 2.1.x, it's mostly the UI that was enhanced a bit.
+
+### Official demos and community projects
+
+There are many official demos included in [this archive](https://downloads.tuxfamily.org/godotengine/demos/2.1/Godot-Demos-2.1.4-stable.zip), such as a simple Pong game, 2D and 3D platformers, a space shooter, and many small demos meant to showcase how to use a given feature, such as particles, screen space shaders, lights, navigation meshes, etc.
+
+Next to those, there are many free and open source community projects that you can learn from, such as those made for our previous Godot community game jams ([first](https://itch.io/jam/godotjam032016), [second](https://itch.io/jam/godotjam062016) and [third](https://itch.io/jam/godotjam122016)). You can use GitHub's Explore feature to find repositories tagged with [Godot](https://github.com/topics/godot), or [GDScript](https://github.com/topics/gdscript), or search for [trending GDScript projects](https://github.com/trending/gdscript?since=monthly).
+
+### Community communication platforms
+
+And of course you are not alone to learn how to use Godot! We have many [community platforms](https://godotengine.org/community) where you can discuss with other users and learn from them. You can pick the one(s) you like best and should always find nice users to interact with.
+
+Don't miss the Godot [Questions & Answers](https://godotengine.org/qa), which likely already has answers for some of the questions you might be asking yourselves. If not, don't hesitate to ask your question, being both concise and specific, and you should quickly get some help.
+
+Finally, if you think that you hit a bug in the engine, please report it on [GitHub](http://github.com/godotengine/godot). Make sure to follow the proposed issue template (filled in automatically) to help us help you.
+
+## Can I use Godot 3.0?
+
+Yes and no :)
+
+You might have seen [videos](https://www.youtube.com/watch?v=XptlVErsL-o) about Godot 3.0's upcoming features, and be eager to test it, but it is not yet released officially. We will soon (a couple days at most) release a development snapshot, Godot 3.0 alpha 2, which you *can* use if you want, but you should be ready to face bugs and difficulties exporting games (for example exporting games using C# is not possible at this time, and should be fixed in the coming weeks).
+
+If you feel adventurous, don't hesitate and have fun with the development snapshot, but check beforehand that you'll be able to distribute your game in a playable manner for the jam. If you are new to Godot, we really recommend to stick to the stable version for which you will find a lot more learning resources.
+
+Have fun, and make us proud of our engine!
\ No newline at end of file
diff --git a/collections/_article/github-game-off-and-godot-are-winning-combination.md b/collections/_article/github-game-off-and-godot-are-winning-combination.md
new file mode 100644
index 0000000000..f9418b76cb
--- /dev/null
+++ b/collections/_article/github-game-off-and-godot-are-winning-combination.md
@@ -0,0 +1,66 @@
+---
+title: "GitHub Game Off and Godot are a winning combination"
+excerpt: "GitHub Game Off, the month-long jam putting forward free and open source gamedev tools is back for its 2018 edition starting on November 1st! It's a great opportunity to make a game with Godot and many other great FOSS tools. And as Securas showed it last year with Daemon vs Demon, you can also win the Game Off jam with your Godot game!"
+categories: ["events"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5bd/b64/613/5bdb64613262d644014666.png
+date: 2018-10-29 16:01:25
+---
+
+And this bold statement is not (only) marketing speak, the winner of [GitHub Game Off 2017](https://blog.github.com/2017-12-22-game-off-2017-winners/) was indeed a Godot-made game by Securas, [Daemon vs Demon](https://securas.itch.io/daemon-vs-demon).
+
+The [2018 edition](https://gameoff.github.com/) of the month-long jam focusing on **free and open source** game development tools is about to start again on **November 1st**. Check the details on itch.io: [**Game Off 2018**](https://gameoff.github.com/).
+
+**Edit:** The Game Off 2018 theme is **HYBRID**! Have fun!
+
+This is a great opportunity to discover Godot if you're not familiar with it yet, get some more experience if you know it already, or get to know some of the other awesome free and open source game engines or frameworks out there such as [Phaser](https://phaser.io/), [LÖVE](https://www.love2d.org/) or [LibGDX](https://libgdx.badlogicgames.com/).
+
+And make sure to review the tons of available free and open source tools that could be useful for your project, such as [Blender](https://www.blender.org/), [Krita](https://krita.org/), [GIMP](https://www.gimp.org/), [LMMS](https://lmms.io/)... and many more! Our contributor Calinou maintains a very useful list of FOSS game development tools and resources, [awesome-gamedev](https://notabug.org/Calinou/awesome-gamedev/).
+
+When you share screenshots or videos of your game on social media, please use the [#GitHubGameOff](https://twitter.com/hashtag/GitHubGameOff) hashtag as well as [#GodotEngine](https://twitter.com/hashtag/GodotEngine), to show the community what great projects are being worked on!
+
+We hope that many Godot users will take part in the jam, and maybe, like in 2017, win it! At the very least we wish you all the best of luck and a lot of fun :)
+
+## Getting started with Godot
+
+If you're new to Godot, or started only recently, you might be looking for good resources to learn how to make games with our engine. The following is a short list of recommended resources, but feel free to use different ones from the wealth of video tutorials and demos that have been produced by the Godot community over the years.
+
+### Installing the engine
+
+First of all, head over to the [**Download**](/download) page to get the latest stable version of Godot – you can also install it from [itch.io](https://godotengine.itch.io/godot) or [Steam](https://store.steampowered.com/app/404790/Godot_Engine/).
+
+For new users, we recommend the "classical" build (as opposed to the "Mono" build with C# support, currently in alpha) and the GDScript language, which you should be able to learn very fast. Experienced C# users are of course welcome to try their hand at the Mono build, just make sure to have the Mono SDK in version 5.12.x installed.
+
+Experienced Godot users may also want to try the [nightly builds](https://hugo.pro/projects/godot-builds/) of the upcoming Godot 3.1, currently at the alpha stage. An official 3.1 alpha 2 build should be published in coming days. Keep in mind that it's software in development and that bugs could hinder your productivity or capacity to export stable builds to submit to the jam, so proceed with caution :)
+
+### Official documentation
+
+The main resource is Godot's [official documentation](https://docs.godotengine.org/en/stable/).
+
+It contains many tutorials about the different features of the engine, including a [step by step tutorial](https://docs.godotengine.org/en/stable/learning/step_by_step/index.html) which should give you a good introduction to the core concepts of the engine such as nodes, scenes, instancing and scripting.
+
+The official documentation also includes the [Class Reference](https://docs.godotengine.org/en/stable/classes/index.html), where the API of the various nodes is documented. It's also included directly in the editor when you press the "Classes" and "Search Help" buttons in the script editor.
+
+
+
+### Community tutorials
+
+Community members have produced a great number of video tutorials for Godot 3.0, as well as quite a few text-based tutorials for those who prefer that. Some are standalone tutorials about a given feature or concept, while others are series that will lead you through making a simple game from A to Z.
+
+Have a look at [this page](http://docs.godotengine.org/en/latest/community/tutorials.html) for a list of recommended resources - but make sure to use the official documentation too, especially as many of these tutorial makers are contributing to the docs.
+
+### Official demos and community projects
+
+There are many official demos included in [this repository](https://github.com/godotengine/godot-demo-projects), and also available directly from the Asset Library when you start Godot. There are simple games such as Pong, Dodge the Creeps (from the docs), 2D and 3D platformers, a space shooter, an RPG, etc., as well as many small demos meant to showcase how to use a given feature, such as particles, screen space shaders, lights, navigation meshes, etc.
+
+Next to those, there are many free and open source community projects that you can learn from, such as those made for our previous [Godot jam in June 2018](https://itch.io/jam/godotjam062018). Check also games made for the [first](https://itch.io/jam/godot-wild-jam) [two](https://itch.io/jam/godot-wild-jam-2) Godot Wild Jams as many come with source included. You can use GitHub's Explore feature to find repositories tagged with [Godot](https://github.com/topics/godot), or [GDScript](https://github.com/topics/gdscript), or search for [trending GDScript projects](https://github.com/trending/gdscript?since=monthly).
+
+### Community communication platforms
+
+And of course you are not alone to learn how to use Godot! We have many [community platforms](https://godotengine.org/community) where you can discuss with other users and learn from them. You can pick the one(s) you like best and should always find nice users to interact with.
+
+Don't miss the Godot [Questions & Answers](https://godotengine.org/qa), which likely already has answers for some of the questions you might be asking yourselves. If not, don't hesitate to ask your question, being both concise and specific, and you should quickly get some help.
+
+Finally, if you think that you hit a bug in the engine, please report it on [GitHub](http://github.com/godotengine/godot). Make sure to follow the proposed issue template (filled in automatically) to help us help you.
+
+Have a lot of fun with GitHub Game Off 2018!
\ No newline at end of file
diff --git a/collections/_article/gles2-and-gdnative-progress-report-1.md b/collections/_article/gles2-and-gdnative-progress-report-1.md
new file mode 100644
index 0000000000..d39489c2f6
--- /dev/null
+++ b/collections/_article/gles2-and-gdnative-progress-report-1.md
@@ -0,0 +1,153 @@
+---
+title: "GLES2 and GDNative, progress report #1"
+excerpt: "Thanks to our very supporting patrons I have the opportunity to work part-time on Godot! My work will be mostly about implementing an OpenGL ES 2.0 compatible rendering backend for Godot 3.1, as well as maintaining the GDNative system and bindings.
+
+The first month I spent on getting started and familiar with the rendering in Godot."
+categories: ["progress-report"]
+author: karroffel
+image: /storage/app/uploads/public/5a6/7a3/a28/5a67a3a28fbaf611207753.png
+date: 2018-01-23 21:08:21
+---
+
+## Introduction
+
+Thanks to our very supporting patrons I have the opportunity to work part-time on Godot! My work will be mostly about implementing an OpenGL ES 2.0 compatible rendering backend for Godot 3.1, as well as maintaining the GDNative system and bindings.
+
+The first month I spent on getting started and familiar with the rendering in Godot.
+
+Since I want to be able to help out with more rendering related tasks in the future, in places where existing code could be re-used, I am rewriting those parts myself to get a better understanding of the code.
+
+## Roadmap
+
+Because I am still new to the rendering system in Godot, I might not be experienced enough to make good estimates of what can be achieved, but the rough roadmap looks like this.
+
+#### Done December 2017
+- reading the OpenGL ES 2.0 and GLSL ES 2.0 specifications
+- enable use of OpenGL 2.1 / GLES 2.0 context
+- create an empty implementation of rasterizer interface
+- implement basic texture loading
+- implement render targets
+- generate C++ classes for GLSL shaders at compile time
+- show splash screen
+- basics of 2D item rendering
+- some GDNative related assistance
+
+
+#### Planned for January 2018
+- implement more 2D items
+- editor working with GLES 2.0
+- adapt shader compiler to work with GLSL ES 2.0
+- ~~2D lighting~~ *postponed*
+- finalize GDNative C API as much as possible
+- improve GDNative C++ bindings
+
+
+#### Planned for February 2018
+- meet with other developers at FOSDEM and GodotCon
+- load meshes
+- render meshes
+- implement basic PBR
+- directional lights
+
+
+## Details about work in December 2017
+
+### reading the OpenGL ES 2.0 and GLSL ES 2.0 specifications
+
+The first few days I spend reading the GLSL ES 2.0 and OpenGL ES 2.0 specifications to get a more specific idea of what can and cannot be done using that API.
+
+Even thought I didn't try to learn it like a school textbook, it was worth it since I now know where I can go back to in case of any ambiguities.
+
+### enable use of OpenGL 2.1 / GLES 2.0 context
+
+The `OS` implementations for each platform decide how to create an OpenGL context. For the X11 platform (which I am currently developing on) it is hardcoded to create an [OpenGL 3.3 context](https://github.com/godotengine/godot/blob/59e83af201af5a93c7a13750d781c050c2275c07/platform/x11/context_gl_x11.cpp#L153-L158).
+
+An enum was added that specifies which context to create specifically, but for now it simply points to the "old style" way of creating the context.
+
+After this is done, OpenGL 2.1 functions can be used.
+
+### create an empty implementation of rasterizer interface
+
+Juan's work on the GLES 3.0 renderer a little bit over a year ago contained changes to the class architecture used for the rendering backends. With Godot 2.1 and before, all the rendering related code was contained in one [`RasterizerGLES2`](https://github.com/godotengine/godot/blob/2.1/drivers/gles2/rasterizer_gles2.h) class.
+
+In 3.0 this architecture has been revisited and split up over multiple classes, as explained in [Juan's first progress report](https://godotengine.org/article/godots-new-renderer-progress-report-1).
+
+Because of that it's not possible to re-use much of the 2.1 rendering code (although a lot of it is still relevant and helpful as a reference).
+
+The first step towards creating a new rendering backend is to create classes that implement those new interfaces. The goal here was just to make the new code compile properly.
+
+### implement basic texture loading
+
+The `RasterizerStorage` interface has methods for creating and modifying various resources such as textures, shaders, materials, meshes and many more.
+
+The first step towards getting the 2D engine working was to have proper texture loading.
+
+Textures in OpenGL are server-side (so usually a GPU or depending on your hardware also a CPU) chunks of memory that contain image data.
+
+Much of the texture loading code could be taken from the GLES 3.0 code as well as the 2.1 rendering code.
+
+
+### implement render targets
+
+In Godot, render targets are resources that can be used as the destination of draw calls. A very famous Godot Node named `Viewport` makes use of that.
+
+Render targets are implemented using OpenGL framebuffer objects. The OpenGL specification defines two types of framebuffer objects: window manager created and application created.
+
+The window manager created framebuffer (there only exists one double buffered one) is the one that is used to display things in the associated window. Application created framebuffers can be used to issue render commands that won't be displayed on the screen.
+
+So the render targets in Godot are implemented using application created framebuffers. The buffers of a framebuffer (for example the color buffer - the pixel colors that can be displayed on screens) can also be used as textures if set up accordingly. This is how `ViewportSprite`s are implemented.
+
+### generate C++ classes for GLSL shaders at compile time
+
+The [programmable graphics pipeline](https://en.wikipedia.org/wiki/Graphics_pipeline) uses special programs that might run on specialized hardware - called shaders.
+
+Those shaders are written in GLSL, the GL shading language. In Godot, the shaders are in separate files containing the GLSL source code, as well as some special annotations.
+
+Godot's build system, scons, uses python which we use to create C++ source code generated at compile time. In this specific case, a python function parses the GLSL code and creates [C++ classes](https://github.com/karroffel/godot/blob/59cf7c375b8b7aba513f17414ead0be7fd3080bc/drivers/gles2/shader_gles2.h#L47-L366) wrapping the shaders.
+
+The GLES3 backend already uses this with a bit of added functionality, so for the GLES2 backend a few minor modifications had to be made.
+
+### show splash screen
+
+After many days of coding in the dark, the sight of this first rectangle was quite relieving.
+
+
+
+A few changes in the [canvas shader](https://github.com/karroffel/godot/blob/149a16bfb7276850b142688d6c275efeea53845f/drivers/gles2/shaders/canvas.glsl) and this lovely face showed up on the screen.
+
+
+
+
+### basics of 2D item rendering
+
+When 2D elements get rendered on the screen, the method [`RasterizerCanvas::canvas_render_items`](https://github.com/karroffel/godot/blob/d3c7b0c0da2f7443440bef8f0c2b08ae76cbc0ea/drivers/gles2/rasterizer_canvas_gles2.cpp#L298) gets called for every Z layer.
+
+A list of *commands* describes what, how and where should be drawn on the current render target. These commands can be as simple as "draw a rectangle with this texture at this position". The shader used when drawing those commands is the previously mentioned [canvas shader](https://github.com/karroffel/godot/blob/8d342db866b3edbb24ea221244ce611d9f4d95b7/drivers/gles2/shaders/canvas.glsl).
+
+Just rectangles are enough to show text and some other things used in GUIs.
+
+
+
+
+
+
+
+### some GDNative related assistance
+
+Apart from the work on the GLES2 backend there were also some changes related to GDNative. I assisted the contributors when working on these features.
+
+Bastiaan Olij submitted a nice GDNative/NativeScript tutorial for the docs. After giving some feedback, the [Pull Request](https://github.com/godotengine/godot-docs/pull/832) was ready to be merged and can now be found in the [online docs](http://docs.godotengine.org/en/latest/community/tutorials/gdnative/gdnative-c-example.html)!
+
+Another great contribution from [Geequlim](https://github.com/Geequlim) found its way into the Godot editor: an [editor plugin](https://github.com/godotengine/godot/pull/14699) for creating GDNativeLibrary resources.
+
+
+
+
+## Future
+
+Stay tuned for the next progress report for the month of January. This report was a little bit delayed, so you can expect the next one early February.
+
+
+## Seeing the code
+
+If you are interested in the GLES2 related code, you can see all the commits in my [fork](https://github.com/karroffel/godot/tree/gles2) on GitHub.
\ No newline at end of file
diff --git a/collections/_article/gles2-and-gdnative-progress-report-2.md b/collections/_article/gles2-and-gdnative-progress-report-2.md
new file mode 100644
index 0000000000..7df5c77285
--- /dev/null
+++ b/collections/_article/gles2-and-gdnative-progress-report-2.md
@@ -0,0 +1,178 @@
+---
+title: "GLES2 and GDNative, progress report #2"
+excerpt: "Because of the big release there have been many GDNative related tasks that needed to be addressed. Apart from that, the month was mostly spent on implementing more 2D items in the renderer as well as working on getting custom shaders running."
+categories: ["progress-report"]
+author: karroffel
+image: /storage/app/uploads/public/5a8/20c/237/5a820c237c611332498492.png
+date: 2018-02-12 21:50:59
+---
+
+## Introduction
+
+Almost one month has passed since the last [progress report](https://godotengine.org/article/gles2-and-gdnative-progress-report-1) and the month of January happens to be the month in which [Godot 3.0 got released](https://godotengine.org/article/godot-3-0-released)!
+
+Because of the big release there have been many GDNative related tasks that needed to be addressed. Apart from that, the month was mostly spent on implementing more 2D items in the renderer as well as working on getting custom shaders running.
+
+## Roadmap
+
+#### Done January 2018
+
+- bring GDNative API into stable state
+- improve C++ bindings
+- add simple C++ GDNative demo
+- add line rendering
+- add ninepatch rendering
+- add polygon and GUI primitive rendering
+- start work on shader compiler
+- add circle rendering
+
+#### Planned February 2018
+
+- meet with other developers at FOSDEM and GodotCon
+- implement more shader features
+- NativeScript 1.1 extension
+- Rust binding guidance
+- load meshes
+- render meshes
+- implement basic PBR
+- directional lights
+
+
+## Details about work in January 2018
+
+### bring GDNative API into stable state
+
+With the release of Godot 3.0 being very close, the GDNative C API needed to be revisited one last time before any modifications would need to be done in a backwards-compatible way.
+
+As the result of this revisiting a few things have changed in the API, most significant ones being:
+ - changing String API to reduce memory allocations
+ - adding read and write lock objects for PoolVector types
+
+### improve C++ bindings
+
+The C++ bindings to GDNative make some use of templates to do various things. NativeScript requires, since it's a C API, that all methods registered to Godot from a library are implemented by [a function with C linkage](https://github.com/godotengine/godot/blob/e4213e66b2dd8f5a87d8cf5015ac83ba3143279d/modules/gdnative/include/nativescript/godot_nativescript.h#L142-L149). The C++ bindings however use classes and instance-methods for increased usability.
+
+So one of the use cases for templates is the creation of functions with C linkage at compile that, which wrap the actual C++ method pointer (not to be confused with function pointers...), unwrap the arguments that are passed in as `godot_variant`s to the appropriate types and then call the actual C++ method with the associated object. (All of this happens [here](https://github.com/GodotNativeTools/godot-cpp/blob/7dde412e26315447edf2f46661143082b5becf32/include/core/Godot.hpp#L192-L245) and [here](https://github.com/GodotNativeTools/godot-cpp/blob/7dde412e26315447edf2f46661143082b5becf32/include/core/Godot.hpp#L63-L85))
+
+Previously, only basic Godot types were supported to be used as method parameters, making it harder to pass around and use objects with C++ classes attached to them. A change in the `_ArgCast` templates allows each pointer type to construct the object the way it wants, enabling the use of custom classes as parameters.
+
+One kind of Object has special semantics in Godot, the [`Reference`](https://github.com/godotengine/godot/blob/e4213e6/core/reference.h#L42-L61) class. All classes inheriting from it can be reference counted. This is Godot's main mechanism for memory management.
+To increase or decrease the reference count, the methods `reference()` and `unreference()` need to be called manually. Since this is bothersome, Godot has its own [smart-pointer](https://en.wikipedia.org/wiki/Smart_pointer) type called [`Ref`](https://github.com/godotengine/godot/blob/e4213e6/core/reference.h#L63-L64), which references on copy and automatically dereferences when the smart pointer goes out of scope.
+
+This functionality was replicated in the C++ bindings, but the translation from Godot-intern code into the external bindings had some unexpected problems - causing memory leaks.
+
+With the work of [Zylann](https://github.com/Zylann), those issues were resolved quickly.
+
+### add simple C++ GDNative demo
+
+Because GDNative is a C API, the minimal example demo to see if things are actually working is [implemented in C](https://github.com/GodotNativeTools/GDNative-demos/tree/386f6571eba1b5a2986660fbbb54ebf2348c0b53/c/SimpleDemo).
+
+The GDNative and NativeScript APIs are rather verbose, so many people seemed to wish for a simpler C++ demo. Hence a [new demo was added](https://github.com/GodotNativeTools/GDNative-demos/tree/8b3c2ee96b26b538248556cff9de5b4d2c85fe8d/cpp/SimpleDemo), which does exactly the same as the C demo, but is much simpler.
+
+The whole demo pretty much boils down to the following code.
+
+```cpp
+class Simple : public godot::GodotScript {
+ GODOT_CLASS(Simple)
+
+ godot::String data;
+public:
+
+ static void _register_methods() {
+ godot::register_method("get_data", &Simple::get_data);
+ }
+
+ void _init() {
+ data = "Hello World from C++";
+ }
+
+ godot::String get_data() const {
+ return data;
+ }
+};
+```
+
+
+### add line rendering
+
+As mentioned in the [last progress report](https://godotengine.org/article/gles2-and-gdnative-progress-report-1), 2D rendering is done by processing a series of "items" that tell the rendering backend which kind of 2D element should be rendered and in what way.
+
+There were still quite a few item rendering implementations missing, one of them is basic line rendering.
+
+The most obvious use case: underlining text.
+
+
+
+2D Editor gizmos are another place where simple lines are used.
+
+### add ninepatch rendering
+
+As seen in the previous screenshot, many UI elements looked "washed out" and stretched. The rendering command used by such an item is the [`CommandNinePatch`](https://github.com/karroffel/godot/blob/c82c9f73fc7f9880678482769f6c3b13143ef737/servers/visual/rasterizer.h#L700-L715).
+
+A Ninepatch element is a (usually textured) rectangle that has a fixed margin for the borders. That's how the borders of a button look equally smooth when resizing the button - only the center gets freely scaled, the corners stay the same and the other parts of the border get only scaled in one dimension.
+
+It's called Ninepatch because the rectangle gets split into nine sub-rectangles.
+
+The GLES3 renderer only renders a single rectangle but feeds the fragment shader with the needed margin information. The fragment shader then calculates the associated UV coordinate for each fragment. The same approach shouldn't be used in GLES2, since some drivers work a lot better if no dependent texture reads are performed. (layman explanation: the UVs of a texture for a fragment should be known before the fragment shader actually executes)
+
+Previously Godot issued 8 or 9 render calls for each sub-rectangle (8 if the center doesn't get rendered).
+In the new GLES2 backened I decided to use a vertex + index array buffer instead to reduce the number of draw calls. For each vertex the fitting UVs get calculated before the draw call. Because of some stupid typos I had a hard time getting this right, but at least I got a nice UV-debug screenshot out of it.
+
+
+
+Once this was all working, the elements rendered correctly.
+
+
+
+
+A nice consequence of using a element array buffer for rendering instead of different draw calls is that the center rect rendering can be [disabled and enabled](https://github.com/karroffel/godot/blob/c82c9f73fc7f9880678482769f6c3b13143ef737/drivers/gles2/rasterizer_canvas_gles2.cpp#L502) with very little overhead.
+
+
+
+
+
+
+### add polygon and GUI primitive rendering
+
+Even with Ninepatch elements rendering the Godot editor didn't really look like it should yet.
+
+
+
+This is because the editor uses `Item`s that use [`CommandPrimitive` commands](https://github.com/karroffel/godot/blob/d0211f137464614e05d2dc590b5ad9b6ab5ae674/drivers/gles2/rasterizer_canvas_gles2.cpp#L647), which can be used to draw lines, triangles or rectangles with easy to set up custom UVs and colors.
+
+With that done, the editor almost rendered correctly, except for some incorrect clipping. (which got fixed shortly after this screenshot got taken)
+
+
+
+
+### start work on shader compiler
+
+As written about in a past dev-blog, the Godot [shader language got reworked completely](https://godotengine.org/article/making-shaders-more-accessible) for the 3.0 release, meaning that the new GLES2 renderer needs to support that language as well.
+
+This is done by using the Godot built-in shader parser and compiler which outputs an [abstract syntax tree (AST)](https://en.wikipedia.org/wiki/Abstract_syntax_tree) which can be used for further processing.
+
+To support the Godot shader lanuage, the abstract syntax tree needs to be translated into the appropriate target language, in this case GLSL ES 2.0. This is done in the [`ShaderCompilerGLES2` class](https://github.com/karroffel/godot/blob/37208c890337894519cf1d1e943a5c381f79dcc0/drivers/gles2/shader_compiler_gles2.h#L40).
+
+The [`_dump_node_code`](https://github.com/karroffel/godot/blob/37208c890337894519cf1d1e943a5c381f79dcc0/drivers/gles2/shader_compiler_gles2.cpp#L268) method is used to output a String for each kind of node in the AST. Recursively, this method is used to generate the GLSL code for the whole shader.
+
+Because GLSL ES 2.0 is more limited than GLSL ES 3.0, some features need workarounds or just won't be supported.
+
+For example, unsigned integers are not supported in GLSL ES 2.0, so as a workaround they will be converted to signed ints.
+
+Many functions supported by GLSL ES 3.0 can't be used, such as the `inverse()` function for matrices, so either they will have to be re-implemented manually in code (without possible hardware support) or be plainly not supported at all, but this is still up for discussion.
+
+Custom shaders are still in an early stage, but they already work inside the editor and in games and support hot-reloading just like with the GLES3 backend.
+
+
+
+### add circle rendering
+
+One of the last few item command types unimplemented for 2D rendering was the `CommandCircle`. While the initial implementation had a fatal bug, it helped uncover a more hidden bug that caused problems in the editor UI later on.
+
+## Future
+
+The big milestone of basic 3D rendering is still ahead and I'm very excited to get my hands dirty. A few things in the 2D rendering still need to be implemented, but overall the 2D experience should be pretty decent by now.
+
+## Seeing the code
+
+If you are interested in the GLES2 related code, you can see all the commits in my [fork](https://github.com/karroffel/godot/tree/gles2) on GitHub.
\ No newline at end of file
diff --git a/collections/_article/gles2-and-gdnative-progress-report-3.md b/collections/_article/gles2-and-gdnative-progress-report-3.md
new file mode 100644
index 0000000000..a50370e62d
--- /dev/null
+++ b/collections/_article/gles2-and-gdnative-progress-report-3.md
@@ -0,0 +1,144 @@
+---
+title: "GLES2 and GDNative, progress report #3"
+excerpt: "Another month, another progress report! This time with the early beginnings of 3D rendering in GLES2 and some GDNative ecosystem updates."
+categories: ["progress-report"]
+author: karroffel
+image: /storage/app/uploads/public/5ab/2db/729/5ab2db729bee7065606296.png
+date: 2018-03-21 22:21:27
+---
+
+## Introduction
+
+Another month, another progress report! This time with the early beginnings of 3D rendering in GLES2 and some GDNative ecosystem updates.
+
+## Roadmap
+
+#### Done February 2018
+
+- meet with other developers at FOSDEM and GodotCon
+- 2D rendering stabilized
+- 2D engine merged into master branch
+- NativeScript 1.1 extension
+- Rust binding guidance
+- 3D viewport drawing
+- mesh loading
+- basic mesh drawing
+
+#### Planned March 2018
+
+- NativeScript 1.1 integration for C++
+- fix material implementation
+- implement spatial shaders
+- skeletal animations
+
+
+## Details about work in February 2018
+
+### meet with other developers at FOSDEM and GodotCon
+
+As announced in an earlier blog post, the [GodotCon](https://godotengine.org/article/get-ready-fosdem-and-godotcon-2018) took place in Brussels (right after the FOSDEM), where a lot of cool and interesting people showed up. It was a joy to be there and talk with other people about things we love - free and open source software and game development!
+
+As this is a progress report and not an event report I'll keep this section short, but I had a great time hacking with other people and getting to know more Godot users.
+
+### 2D rendering stabilized
+
+While a most of the 2D engine was already working, some bugs kept the editor from being fully usable and also caused problems in regular game projects.
+
+The main bug that was keeping me busy *for weeks* was related to a shader bind that was not descriptive enough when blitting a viewport to the screen. "What does this mean?" you might ask.
+
+Everytime Godot draws something it has to draw that something *somewhere*. Godot calls these "things" **viewports**. (That's why the root node of any SceneTree is always a Viewport!) Internally, viewports are implemented by "[framebuffer objects](https://en.wikipedia.org/wiki/Framebuffer_object)" in OpenGL, which are basically just a set of buffers or images that can be used to draw to.
+
+The root node viewport in Godot is special, because everything that gets drawn into it will be displayed in the actual window. The drawing to the window happens by using a viewport as a texture and then displaying that in the correct position in the window. This act is called "[blitting](https://en.wikipedia.org/wiki/Bit_blit)". The shader code used for blitting is the same as for drawing rectangles with textures - only the texture is the content of another viewport.
+
+OpenGL works by creating a context for the running process/thread, which is a state machine that gets modified by OpenGL function calls. If some state is set then it stays that way until it gets set to a different state.
+
+This was a lot of explanation for this bug fix, but what it boiled down to is that the editor would sometimes become unresponsive if certain actions or popups would be triggered. The error occured when something that is **not a rectangle** got drawn last before the blitting happened. The blitting didn't set up its own state completely, so a previous draw call would leave the OpenGL context in a non-working state for blitting.
+
+Once this mistake was spotted it was a fix as easy as adding a few lines, but I didn't know what was happening for weeks, so I just wrote this much about it to get rid of some frustration :P..... Anyway, 2D is working pretty well now!
+
+### 2D engine merged into master branch
+
+Because of the previously mentioned fixes it was considered useful to merge the current 2D engine into the master branch, so other contributors can look through the code and can try to make it run on more platforms and uncover bugs and errors (which were found thanks to multiple people!).
+
+Before the pull request could be opened, the selection of the rendering would have to be decidable at runtime (more specifically, engine startup) and not require a compile time change. If you are using a Godot master branch build you can test the 2D (and report bugs later on) by switching the rendering backend in the project settings under `rendering/quality`.
+
+The (by now merged) pull request can be found [here](https://github.com/godotengine/godot/pull/16687).
+
+Many people helped since to make the renderer work better and on more platforms! Thanks go to [Emanuele Fornara](https://github.com/efornara), [bruvzg](https://github.com/bruvzg), and possibly other people I forgot to mention, I'm sorry :D
+
+### NativeScript 1.1 extension
+
+After talking to [Juan](https://github.com/reduz) and [Marc](https://github.com/Zylann) at GodotCon I realized, that some part of GDNative can be enhanced - instance binding data!
+
+So far in NativeScript the fact that Godot scripts are making use of delegation instead of actual inheritance (I'm sorry GDScript/C# users that didn't know) wasn't hidden from the programmer. When calling methods of a base class some indirection through an `owner` of the script had to be made. This isn't too much of a problem in practice, but it isn't as "programmer friendly" as hiding those things behind inheritance.
+
+GDScript hides the delegation by actually calling the owner in every "self-call". So it is dealt with in the bytecode to do the correct call.
+
+C# faced the same problems, as inheriting a Godot base class would mean that those are already valid to use, with or without a "script class" inheriting from them. For that matter so called "instance binding data" fields have been added to the core [`Object`](https://github.com/godotengine/godot/blob/f2df8c94b2e5ba6c4eee3515d1d30f36194ca803/core/object.h#L487) class, which can be used to store data for language bindings for each object.
+
+In practice, the most common use case is to create wrapper objects (which contain a field that points to the actualy object) in the langauge binding, then Godot will keep track of the objects lifetime and will notify the scripting language when the Object gets destroyed. This makes for nicer code for the programmer.
+
+The PR implementing the API for this for NativeScript can be found [here](https://github.com/godotengine/godot/pull/16514).
+
+### Rust binding guidance
+
+Also at GodotCon I got to talk to [Nicolas Silva](https://github.com/nical), a webrender (Firefox rendering engine) programmer and Rust enthusiast!
+
+We were talking about the state of the Rust bindings for Godot's NativeScript and how the current situation should be best dealt with.
+
+As not many people actually know, Rust bindings were the first attempt to bind **any** language to "DLScript". [vurpo](https://github.com/vurpo) worked on the first implementation with me at FOSDEM last year. Since then there hasn't been much time for her to continue working on them.
+
+Even though there has not been much development at the time, there has been a lot of community request for Rust bindings, so much that multiple people started working on bindings.
+
+So now I'm happy that Nicolas tries to bring the community to one place with one "official" language binding, where he tries to do as much work as is possible for him (but because he has a lot of other cool projects he can't devote too much time to the bindings), so any people interested in using Rust with Godot should definitely check out [the language bindings](https://github.com/GodotNativeTools/godot-rust) and, if possible, report bugs and contribute :)
+
+### 3D viewport drawing
+
+Now that most of the 2D rendering is mostly stable, it's time to move on the 3D to get *something* showing. For that a new shader has to be used, the *scene shader*, as it can be found [here](https://github.com/karroffel/godot/blob/ed544cabaa13d604d4caac21299b32a6b7b5f4af/drivers/gles2/shaders/scene.glsl). This first shader does basically not much but fill the entire draw area with one color - not very interesting.
+
+The new 3D rendering and viewport gets handled in the [`rasterizer_scene_gles2.cpp` file](https://github.com/karroffel/godot/blob/ed544cabaa13d604d4caac21299b32a6b7b5f4af/drivers/gles2/rasterizer_scene_gles2.cpp#L219-L274).
+
+After some confusion with the proper viewport clearing order this beautiful view was to be seen.
+
+
+
+
+
+### mesh loading
+
+As mentioned previously, all graphics related "resources" are handled in the [`rasterizer_storage_gles2.cpp` file](https://github.com/karroffel/godot/blob/ed544cabaa13d604d4caac21299b32a6b7b5f4af/drivers/gles2/rasterizer_storage_gles2.cpp#L1088), where the `mesh` API has to be implemented in order to get the mesh data in a renderable format.
+
+Most of the code could be re-used from the GLES3 implementation (except for things like VAOs).
+
+Pretty much all that gets displayed in the 3D viewport are meshes - the gizmos, the grid, the camera symbol etc.
+
+So with this in place the previous shader will generate images like this
+
+
+
+
+
+This is the gizmo for an object, but without proper perspective added to it.
+
+
+### basic mesh drawing
+
+The next step was to respect the perspective for each draw call. With the shader taking care of [that](https://github.com/karroffel/godot/blob/50911a0b8bc0c8ded8c5181d065433674207d3c3/drivers/gles2/shaders/scene.glsl#L30) the pictures start to resemble something more correct.
+
+
+
+
+
+
+
+
+Unfortunately, the way the drawing was done and the OpenGL state caused not all meshes to render properly, so the view of all elements in the scene rendering properly has to wait for the next progress report :)
+
+
+## Future
+
+3D rendering is quite fun, but there are still many things I need to learn, as well as improving my understanding of the control flow in some more crowded parts of the renderer. Overall I can say that I'm excited to do more of these things that look scary from the outside, but once you find your way in aren't magic at all.
+
+## Seeing the code
+
+If you are interested in the GLES2 related code, you can see all the commits in my [fork](https://github.com/karroffel/godot/tree/gles2) on GitHub. Other contributions are linked in the sections above.
\ No newline at end of file
diff --git a/collections/_article/gles2-and-gdnative-progress-report-4.md b/collections/_article/gles2-and-gdnative-progress-report-4.md
new file mode 100644
index 0000000000..e2e2344d5e
--- /dev/null
+++ b/collections/_article/gles2-and-gdnative-progress-report-4.md
@@ -0,0 +1,191 @@
+---
+title: "GLES2 and GDNative, progress report #4"
+excerpt: "Latest update on the GLES2 and GDNative developments. This month, a lot of time has been spend on refactoring the way materials work together with shaders, but also the C++ bindings got some nice new make-up!"
+categories: ["progress-report"]
+author: karroffel
+image: /storage/app/uploads/public/5ad/505/3b6/5ad5053b6e0ad093497368.png
+date: 2018-04-16 20:19:20
+---
+
+## Introduction
+
+This project report falls a little bit shorter, as much of the work was less "fruitful" but nonetheless important and a good learning experience. In this case I'm talking about a rather big *refactoring* of how materials are handled in the GLES2 renderer. Still there were some improvements on the GDNative side of things!
+
+## Roadmap
+
+#### Done March 2018
+
+- C++ bindings for NativeScript 1.1
+- WIP godot-rust low level improvements
+- perspective rendering
+- material API refactor
+- material passes and renderlist
+- basics for skeletal animations
+
+#### Planned April 2018
+
+- finish up skeletal animations (- blend shapes)
+- stabilize 3D rendering (unshaded workflow)
+- implement backbuffer copy
+- learning about PBR
+- cubemap filter
+
+
+## Details about work in March 2018
+
+### C++ bindings for NativeScript 1.1
+
+As talked about in the [last progress report](https://godotengine.org/article/gles2-and-gdnative-progress-report-3), a new extension to the NativeScript API has been added. Now it was time to make use of those new functions in the [C++ bindings](https://github.com/GodotNativeTools/godot-cpp).
+
+The biggest user-facing change in the bindings is, that user-created classes can now directly inherit from engine types. This is being implemented by facilitating object *instance binding data*.
+
+Until the new NativeScript 1.1 extension will be more widely used, a system of [delegation](https://en.wikipedia.org/wiki/Delegation_(object-oriented_programming)) is used in the bindings to access "parent class" functionality. The [`GodotScript` template class](https://github.com/GodotNativeTools/godot-cpp/blob/68ba815bc5c9ffa9494511f9feb8ea36a95369d7/include/core/Godot.hpp#L30-L33) includes a field `owner`, which refers to the `Object` that the current script is attached to.
+
+Even though Godot's scripting languages try to make you believe that you can "extend" or "inherit" engine types, all that is done is actually *delegation*. Most GDNative language bindings make that explicit, but after receiving some user feedback it was time to *fake inheritance* in the C++ bindings as well.
+
+Before, every C++ bindings wrapper class was actually more like a wrapper interface with nice syntactic sugar. (I don't want to say how it is done, I want to keep the little reputation that I have. If you really want to know, all I'm saying is: you can re-use the this pointer "safely" (putting more quotes looks dumb) as long as you don't have any virtual methods to call...)
+
+That meant, that you couldn't inherit directely, but now that it's possible to create per-object binding data, it is possible to create wrapper classes that are *proper classes*, which can be inherited!
+
+A lot of text and no code so far, so here you go!
+
+Old way:
+
+```cpp
+class MovingSprite : public GodotScript {
+ GODOT_CLASS(MovingSprite)
+
+ Vector2 direction = Vector2(1.0, 0.0);
+ float speed = 50.0; // pixels per second
+public:
+
+ void _init() {}
+
+ void _process(float delta) {
+ Vector2 motion = direction * speed * delta;
+ owner->set_position(owner->get_position() + motion);
+ }
+
+ static void _register_methods() {
+ register_method("_process", &MovingSprite::_process);
+ }
+};
+```
+
+New way:
+```cpp
+class MovingSprite : public Sprite {
+ GODOT_CLASS(MovingSprite, Sprite)
+
+ Vector2 direction = Vector2(1.0, 0.0);
+ float speed = 50.0; // pixels per second
+public:
+
+ void _init() {}
+
+ void _process(float delta) {
+ Vector2 motion = direction * speed * delta;
+ set_position(get_position() + motion);
+ }
+
+ static void _register_methods() {
+ register_method("_process", &MovingSprite::_process);
+ }
+
+};
+```
+
+To test those things (and some others, work from April is already available), check out the `nativescript-1.1` branch of the C++ bindings [here](https://github.com/GodotNativeTools/godot-cpp/tree/nativescript-1.1), as well as an updated version of the C++ SimpleDemo on the `cpp-nativescript-1.1` branch of the GDNative-demos repository [here](https://github.com/GodotNativeTools/GDNative-demos/tree/cpp-nativescript-1-1/cpp/SimpleDemo).
+
+
+### WIP godot-rust low level improvements
+
+Steadily gaining more popularity, the [godot-rust](https://github.com/GodotNativeTools/godot-rust) bindings are getting more attention from new contributors. I tried to check out the new bindings and notices some problems in the workflow for testing the bindings, so I added small complete [godot projects to the repository](https://github.com/GodotNativeTools/godot-rust/tree/b707692a63a157b990ccb25371af3160a9be800f/examples), so things can be reasoned about in context, with all the scenes and environment in place.
+
+Further, the Rust bindings make heavy use of macros for the "script-class" definition, some users said that the heavy use of custom syntax can be distracting and makes things less clear. This is tracked in an [issue](https://github.com/GodotNativeTools/godot-rust/issues/49), but I thought it could be a fun way to get more into the current and new codebase.
+
+Most of my efforts have been focused on being able to define script classes without *needing* macros, while still offering some useful macros that are completely optional.
+
+Here is a [link](https://github.com/karroffel/godot-rust/blob/0dce8bef80322afcce77abcf8323e9941c3281bc/examples/low_level_registering/src/lib.rs) to a file to show what "low level class registering" might look like in future (this is already working code).
+
+NativeScript classes expose some function pointers with C linkage with a certain signature. To ease the "connecting" of the C-compatible function and the actual Rust function, a macro has been added that generates said C function which will automatically call the Rust code. This is completely optional, the C function can be created manually, but this is generally not a nice thing to spend your dev-time on. The same has been done for constructors and destructors.
+
+The *work-in-progress* commit can be found [here](https://github.com/karroffel/godot-rust/commit/0dce8bef80322afcce77abcf8323e9941c3281bc), I plan to open a pull request as soon as I finish up the commits properly.
+
+
+### perspective rendering
+
+Now finally the more visual part of the progress report! Last time I promised more fancy screenshots, here some perspective-correct renderings of some meshes.
+
+
+
+
+No color, no grid on the ground...? Yes, some more invalid OpenGL state was fixed and a first attempt to get spatial shaders working and then this could be seen.
+
+
+
+
+Getting there, slow but steadily :D
+
+
+### material API refactor
+
+This point actually took most of the development time this month, it was a rather frustrating and iterative process to find out how to best handle materials and shaders.
+
+Some background on materials first!
+
+In Godot, a material basically consists of a shader and a list of parameters (`name => value` pairs) that get passed into the shader. Materials also include other things, like blend modes but the problematic part were the material parameters.
+
+Since OpenGL 3.1, [*Uniform Buffer Objects*](https://www.khronos.org/opengl/wiki/Uniform_Buffer_Object), short UBOs, can be used. UBOs are chunks of memory that contain data that is available "globally" and immutably in every shader stage.
+
+The `TIME` variable in shaders? [Part of a UBO](https://github.com/godotengine/godot/blob/7b5703bc41460c5c8b955f879190625da85a2a81/drivers/gles3/shaders/canvas.glsl#L35-L39). Texture handles? UBO. Camera projection matrix? Also UBO. Those things don't change in a single draw pass, so they get grouped into a buffer which can then be updated all at once.
+
+In the GLES3 renderer, material parameters get assigned an offset in a UBO, then that UBO can be [filled](https://github.com/godotengine/godot/blob/7b5703bc41460c5c8b955f879190625da85a2a81/drivers/gles3/rasterizer_storage_gles3.cpp#L2545-L2585) and used for a draw call.
+
+In GLES2 however, UBOs do not exist. Every *uniform* (a "global" value accessible in all shaders) has to be set individually for each shader.
+
+This is where many iteration and refactoring have been focussed on. Do those values get set when the material changes? No, drawing might happen later in time and the uniform value lost. Do the values get saved in the shader and the shader sets them up when needed? This is rather complex when user-defined shaders come into play, it's possible, but it doesn't feel right and caused many bugs.
+
+After all those iterations, I settled for an approach where the shader gets a reference to the material that will be used, and then, only when the shader will be used for drawing, the shader will set all uniform values accordingly.
+
+Some type-system hacks are needed because C++ doesn't like forward declared inner classes (if someone knows how to do it, please, tell me :D ), and I came up with this [code](https://github.com/karroffel/godot/blob/b1a5ea20a54c9904714218ed21f19be64fca1b5b/drivers/gles2/shader_gles2.cpp#L686). There is a lot of [code](https://github.com/karroffel/godot/blob/b1a5ea20a54c9904714218ed21f19be64fca1b5b/drivers/gles2/shader_gles2.cpp#L709-L895) that deals with getting and selecting the right uniform type/call, but this way the information from custom shaders can be used more efficiently. With UBOs, this comes natural, and very similar code exists in the [GLES3 renderer](https://github.com/godotengine/godot/blob/7b5703bc41460c5c8b955f879190625da85a2a81/drivers/gles3/rasterizer_storage_gles3.cpp#L2009-L2262).
+
+In the end, this approach works pretty well and seems very clear to me, and after all those refactoring I can safely say: UBOs are missed. :D
+
+
+
+
+
+
+### material passes and renderlist
+
+Up until that point (well, the refactorings and this kind of blend together, but I hope it's clear what I mean) the drawing was very straighforward.
+
+ - Get the next available thing to draw
+ - if you can draw it, set the GL state up properly
+ - render.
+
+The code was [relatively small](https://github.com/karroffel/godot/blob/68d06a1ecc5653f9ceabca10c4a4eb2c2d78134f/drivers/gles2/rasterizer_scene_gles2.cpp#L241) and rather simple to understand and get an overview over, because it was so straighforward. But as with many things, this simplicity becomes problematic at some point. In this case no optimization was done *at all*. Material passes weren't possible and dealing with shader state became a pain, so it was time to move to a more flexible implementation: the **renderlist**!
+
+The RenderList is an [array of elements](https://github.com/karroffel/godot/blob/29fc8fc9ec9e4cac1a6505914679dee91f83619d/drivers/gles2/rasterizer_scene_gles2.h#L298-L299) and a list of pointers to those elements which need to be drawn.
+
+The cool thing is, that each element can get an index assigned on which they can be sorted. So things in the front will be drawn before things in the back, that helps to [reduce overdraw](https://en.wikipedia.org/wiki/Z-buffering) by making use of the depth-buffer. Meshes with similar shaders can be grouped together so that shaders don't need to be unloaded and loaded again, and many other cool things.
+
+While filling this list, it is very easy to add in a [second draw pass](https://github.com/karroffel/godot/blob/29fc8fc9ec9e4cac1a6505914679dee91f83619d/drivers/gles2/rasterizer_scene_gles2.cpp#L236-L245) for a surface with a different material. This is how the `Next Pass` in materials is implemented.
+
+The RenderList gives much flexibility while also making simple optimizations very easy to set up.
+
+### basics for skeletal animations
+
+Another under-the-hood development was the initial work on Skeleton resources. At that point, a skeleton could not deform a mesh yet and wasn't very useful, but the basic storage for [bone transforms](https://en.wikipedia.org/wiki/Skeletal_animation) was already in place. Depending on the hardware that Godot is running on, the bone information might be stored in different ways, so the skeleton resource might be handled in different ways.
+
+Because the GLES2 renderer will run on a lot of low-end hardware, I chose a more software-oriented than hardware/GPU-oriented approach to store the bone transforms, but more on that in the next
+
+## Future
+
+In the next progress report I will talk about how the new renderer handles skeletal animations differently than the 2.1 renderer, also I will share my then newly-gained knowledge of physically based rendering! Interesting times ahead!
+
+
+## Seeing the code
+
+If you are interested in the GLES2 related code, you can see all the commits in my [fork](https://github.com/karroffel/godot/tree/gles2) on GitHub. Other contributions are linked in the sections above.
\ No newline at end of file
diff --git a/collections/_article/gles2-and-gdnative-progress-report-5.md b/collections/_article/gles2-and-gdnative-progress-report-5.md
new file mode 100644
index 0000000000..1df033dbfa
--- /dev/null
+++ b/collections/_article/gles2-and-gdnative-progress-report-5.md
@@ -0,0 +1,139 @@
+---
+title: "GLES2 and GDNative, progress report #5"
+excerpt: "The progress of last month was largely defined by stabilizing the 3D renderer with many smaller fixes, but work on the PRB side of things has begun and the GDNative system also saw some quality-of-life changes again, with improvements to the GDNativeLibrary resource as well as an API to provide safe type-casting in NativeScript."
+categories: ["progress-report"]
+author: karroffel
+image: /storage/app/uploads/public/5af/0e5/72b/5af0e572bcfa6454445114.png
+date: 2018-05-07 00:00:00
+---
+
+## Introduction
+
+The progress of last month was largely defined by stabilizing the 3D renderer with many smaller fixes, but work on the PRB side of things has begun and the GDNative system also saw some quality-of-life changes again, with improvements to the GDNativeLibrary resource as well as an API to provide safe type-casting in NativeScript.
+
+## Roadmap
+
+#### Done April 2018
+
+- CPU-calculated skeletal animations
+- stabilize 3D rendering (unshaded workflow)
+- implement skybox rendering
+- NativeScript global typetags for safe casts
+- GDNativeLibrary improvements
+- godot-rust low-level registering PR
+
+#### Planned May 2018
+
+- enviroment relections + roughness
+- implement BRDF
+- add hardware support for skeletal animations
+- C++ bindings method argument checking
+- improve C++ bindings compilation workflow
+- resolve binary compatibility breakage issue with GDNative
+
+
+## Details about work in April 2018
+
+### CPU-calculated skeletal animations
+
+A skeleton in computer graphics is usually a tree-structure of bones, where each bone is either a root bone without a parent, or it has a parent. Each bone can also have a transform. A configuration of bone transforms creates a *pose*.
+
+In order to deform the mesh according to the bone transforms, each vertex (generally "point of a triangle") can be influenced by up to 4 bones. The actual deformation usually happens in the *vertex shader*, where the bone transforms get looked up from a *texture*. (In rendering, textures are used for sooo many things. Everything is a texture if you're brave enough)
+
+Because the new OpenGL ES 2.0 backend is supposed to run on old hardware, there are some problems with hardware support for that: not all GPUs allow textures to be used in vertex shaders.
+
+In Godot 2.1, [this was solved](https://github.com/godotengine/godot/blob/f8c36e226686dd5c8c95bfeca2dd8b6a118b40d2/drivers/gles2/rasterizer_gles2.cpp#L5136) by having copies of the meshdata, then modifying the mesh itself with the bone transform information.
+
+I chose to go a different route that uses less memory (but might cause more cache misses in the vertex shader):
+the bone transforms for each vertex are stored in a [separate buffer](https://github.com/karroffel/godot/blob/a0d0404cf397362152fe75d3aa221ac1c80a0e0d/drivers/gles2/rasterizer_storage_gles2.cpp#L3179), this buffer gets [filled](https://github.com/karroffel/godot/blob/gles2/drivers/gles2/rasterizer_scene_gles2.cpp#L548) with the new transforms before the element gets drawn.
+
+So instead of looking up the transforms in the vertex shader from a texture, the final, already correctly interpolated transposed transform gets passed as 3 `vec4` to the shader and then [applied to the local model matrix](https://github.com/karroffel/godot/blob/a0d0404cf397362152fe75d3aa221ac1c80a0e0d/drivers/gles2/shaders/scene.glsl#L99-L107) (The model matrix does things like translation, rotation and scale of the object).
+
+This approach of dealing with skeletons works on all relevant hardware, but it is quite CPU intensive, so in future, a runtime check will be made to check if vertex shader texture lookup is supported, in that case a faster, hardware accelerated version will be used.
+
+
+
+
+
+### stabilize 3D rendering (unshaded workflow)
+
+I spent quite a lot of days fixing up things to make the existing 3D rendering more stable and usable. Those things were usually quite small, but it did add up in the end. Because it's all relatively minor stuff, here's short list of the things I did instead of detailed destriptions:
+
+ - make shaders more lightweight by using more preprocessor defines
+ - added TIME uniform to all "scriptable" shaders
+ - added ALPHA_SCISSOR support for spatial shaders
+ - made separate alpha pass use custom blending modes
+ - shader language compatibility fixes
+ - SCREEN_UV support for both canvas and spatial shaders
+ - use S3TC compression when available
+ - use ETC1 compression when available
+
+I could say more things about those changes, but for sake of brevity (and laziness o.o) I will keep this section a bit shorter. If there's interest in how those things are implemented, most of those changes are in separate commits, so a look through the git log should be enough to get you to the code.
+
+### implement skybox rendering
+
+The first step I take towards implement physically based rendering is to get enviromental reflections showing on objects. Environmental reflections are visible the most with non-rough materials that reflect how the world around the object looks like. Examples could be metal spoons, plastic mugs, things like that.
+
+Example of environmental reflections (not Godot GLES2, taken from [wikipedia](https://upload.wikimedia.org/wikipedia/commons/1/19/Cube_mapped_reflection_example_2.JPG))
+
+
+The image type used for such a texture is a [cube map](https://en.wikipedia.org/wiki/Cube_mapping). A cube map consist of 6 sub-images, each representing what could be described as what would be seen on each side of a glass cube out of which inside the observer looks. Or shot: it can be used for 360° images.
+
+If an object is 100% reflective, the image of the surrounding sky will be projected onto its surface. If the material is more *rough* then a more blurred version fo the sky will be used. This is how the very basics of roughness in PBR can be implemented.
+
+On the quest of achieving this, a sky texture has to be loaded first, then it has to be displayed as the actual sky (not a necessity, but it looks weird if you have a reflection without a sky), after that it can be mapped onto object's surfaces.
+
+With the GLES2 backend I reached the "display as sky" part, which looks like this:
+
+
+
+
+I already started work on mapping the sky on object's surfaces, but that's for the next progress report :)
+
+### NativeScript global typetags for safe casts
+
+One cruicial missing feature in the NativeScript API was the ability to perform proper type checks of Objects and script classes.
+
+In the initial [NativeScript 1.1 extension](https://github.com/godotengine/godot/pull/16514) support for script type-tags was added. Those could be used to ensure that a given script is actually from the same library/language and class you expected it to be. The problem is that this functionality stopped there: it can only test for script classes.
+
+The functionality of adding *global type tags* [was added](https://github.com/godotengine/godot/pull/17980) so that *every* object can be asked for a type and can be safely checked and casted.
+
+The [C++ bindings](https://github.com/GodotNativeTools/godot-cpp/tree/nativescript-1.1) already implement this on the `nativescript-1.1` branch, so following code will now work:
+
+```cpp
+Object *o = get_the_object();
+
+Reference *r = Object::cast_to(o);
+
+if (r) {
+ Godot::print("I got a reference!");
+} else {
+ Godot::print("The object was not a reference :(");
+}
+
+```
+
+
+### GDNativeLibrary improvements
+
+A `GDNativeLibrary` is a resource that contains the needed information about a native library. It is backed by a [`ConfigFile`](http://docs.godotengine.org/en/3.0/classes/class_configfile.html) which is nice for manual editing. Until lately, a GDNativeLibrary could only be properly created by loading it from a file stored on disk, which made *programmatically* creating them a lot more confusing and not-nice.
+
+Another **huge** problem that was caused by this behavior is that GDNativeLibrary resources could not properly be embedded in other resources causing many problems with the existing Godot workflow.
+
+This problem was solved by adding proper de-/serialization so that it can be used as a sub-resource, as well as adding a way to set a ConfigFile directly, without having to store it on disk.
+
+The PR for that can be found [here](https://github.com/godotengine/godot/pull/17965), it's rather small but an immense improvement to the usability of many GDNative applications.
+
+### godot-rust low-level registering PR
+
+As mentioned in the [last progress report](https://godotengine.org/article/gles2-and-gdnative-progress-report-4), some work on the [`godot-rust`](https://github.com/GodotNativeTools/godot-rust) repository has been prepared but not PR'd to the main repository yet. This is what I did, so [here's the PR](https://github.com/GodotNativeTools/godot-rust/pull/81) which got merged recently! This wasn't too big of a change, but I hope that the bindings, which are under more active development (but help is still appreciated :P ), will become more transparent.
+
+## Future
+
+The C++ bindings are getting to a place where they are more safe to use and resemble code as you would find it in the engine a lot more. As there seems to be a lot of community interest in the Rust bindings, I will try to get more involved with those.
+
+For the graphics side of things, I can't wait to get roughness working properly, along with other things that I learned more about in the last few weeks. PBR is a pretty interesting topic and it's awesome to have the opportunity to explore this in depth thanks to all the Patrons <3
+
+## Seeing the code
+
+If you are interested in the GLES2 related code, you can see all the commits in my [fork](https://github.com/karroffel/godot/tree/gles2) on GitHub. Other contributions are linked in the sections above.
\ No newline at end of file
diff --git a/collections/_article/gles2-and-gdnative-progress-report-6.md b/collections/_article/gles2-and-gdnative-progress-report-6.md
new file mode 100644
index 0000000000..423d1d51fe
--- /dev/null
+++ b/collections/_article/gles2-and-gdnative-progress-report-6.md
@@ -0,0 +1,223 @@
+---
+title: "GLES2 and GDNative, progress report #6"
+excerpt: "The GLES2 backend is getting closer and closer to completion, this progress report shows a detailed overview of the steps taken to implement PBR."
+categories: ["progress-report"]
+author: karroffel
+image: /storage/app/uploads/public/5b1/817/ac2/5b1817ac23235651080146.png
+date: 2018-06-06 00:00:00
+---
+
+## Introduction
+
+The GLES2 backend is getting closer and closer to completion, this progress report shows a detailed overview of the steps taken to implement PBR.
+
+## Roadmap
+
+#### Done May 2018
+
+- enviroment relections
+- cubemap filtering
+- implement BRDF
+- omni lights
+- lambert+phong
+- normal maps
+- rewrite OAHashMap to use RobinHood hashing
+- improved C++ bindings compilation workflow
+- fixed a GDNative binary compatibility bug
+
+#### Planned June 2018
+
+- finish lights
+- shadow mapping
+- reflection probes
+- lightmaps
+- particles
+- get NativeScript 1.1 and the C++ bindings release ready
+
+
+## Details about work in May 2018
+
+### environment reflections
+
+At the end of [last month](https://godotengine.org/article/gles2-and-gdnative-progress-report-5) I was able to load and show a skybox as a background. The next step is to get reflecting materials to show that sky. Or more specifically: the light reflected from a surface should include radiance from the sky.
+
+The first step to getting something like that shown is to know where in the world you actually are. This is a screenshot that displays the object-space position of each pixel as the color.
+
+
+
+
+That's not really that interesting to look at, so let's try to use SOME MATH!!! (but mostly just the `textureCube()` function in GLSL)
+
+
+
+Heyyy, this pretty much looks like the sky projected onto the meshes, that's better!
+
+At that point of development, the sky reflection didn't respond to the camera position, so it basically looked like the sky was painted ontop of the mesh. That was fixed by [*reflecting*](https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/reflect.xhtml) the view-vector with the normal of the current pixel.
+
+The next step is to do proper cubemap filtering.
+
+### cubemap filtering
+
+A polished metal-ball doesn't reflect light in the same way as a rubber-ball or piece of wood does. To implement these different behaviors we could do some complex operations **per pixel** and possibly index pixels of the skymap and surrounding objects *multiple times*, but because graphic programmers are very empathic creatures we don't want the PC to do more work than necessary to achieve a believable effect.
+
+So instead the sky gets blurred with different "intensities" and that's what will be used for different "roughness" values of the materials.
+
+This blurring is the "cubemap filtering".
+
+Because blurry images need less detail than non-blurry images it would be handy to store those blurred versions in a *mipmap*.
+
+A [mipmap](https://en.wikipedia.org/wiki/Mipmap) is a smaller version of the original texture, usually filtered in a special way to make them look nicer when they are viewed from an angle or far away. OpenGL usually generates those for you. It *halves* the resolution of the image until there's only one pixel left.
+
+( This is why for pixel-art games you often either change the filtering mode of textures or need to disable mipmaps to make the game look nice and sharp. )
+
+For the sky some custom custom filtering is wanted, in this case a *blur*. So the lower-resolution images need to be generated manually and OpenGL needs to know that it should use those images instead of using its own method.
+
+This is done [here](https://github.com/karroffel/godot/blob/9320ea98b7f575dd80a171e5c0e6d76d4b6f7120/drivers/gles2/rasterizer_storage_gles2.cpp#L910-L931) in the code.
+
+Because now the mipmap-level (the amount of "small-ness" of the texture) has a different use case we need to access it manually in the shaders rather than letting OpenGL handle that for us automatically. (This is done using the `textureCubeLod()` function, where the "level of detail" - so the mipmap level - can be specified explicitly)
+
+So for the beginning I didn't actually do any blurring, I just gradually made the sky more white to see if it actually works.
+
+
+
+...
+
+
+
+And of course it didn't, but here are some screenshots that look cool.
+
+
+
+
+
+
+
+After all this was working properly the actual *blurring* had to be implemented. This actually turned out to be quite a problem.
+
+The blurring is done by selecting a few mostly-evenly-distributed points on the image. Then those points are mixed in a way that calculates a color that looks cool basically.
+
+The problem I was facing was that the algorithm to distribute points on the texture runs in the fragment shader, and the function used in the GLES3 backend is using a Hammersley distribution. The implementation is based on [this post](http://holger.dammertz.org/stuff/notes_HammersleyOnHemisphere.html) and uses bit-shifting. Bitshifting operations are not supported in GLSL ES 1.0.
+
+I tried to play around a bit to see if I can find a good distribution with some number-crunching. I got interesting and almost okay-ish results.
+
+
+
+
+
+
+
+This was the closest I could get, but it was all very hacky.
+
+
+For the lack of a better and proven alternative I chose to generate those values on the CPU and writing them into a texture.
+
+The results of that were quite nice (as expected).
+
+
+
+
+
+(Also having a proper skymap makes a really huge difference on quality, so just as a side tip: search for good environment maps, they shape the perception of graphics quality a lot!)
+
+With all that in place, all meterials where behaving as if they had metallic = 1 but a variable roughness.
+
+The cubemap filtering shader can be found [here](https://github.com/karroffel/godot/blob/9320ea98b7f575dd80a171e5c0e6d76d4b6f7120/drivers/gles2/shaders/cubemap_filter.glsl).
+
+There are still some things to iron out (like cubemap seams), but this is a good starting point.
+
+### implement BRDF
+
+To properly (in a PBR sense) support metalness and roughness, a [Bidirectional reflectance distribution function](https://en.wikipedia.org/wiki/Bidirectional_reflectance_distribution_function), short BRDF, is needed.
+
+There are some great references and materials out there that can go into detail a lot better than I can, so I will just plug [some](https://academy.allegorithmic.com/courses/b6377358ad36c444f45e2deaa0626e65) [of](https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf) [them](https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf).
+
+So metallic and dielectric materials work now!
+
+
+
+(for some reason dielectric materials are darker than they should be, I'll have to fix that...)
+
+
+
+
+
+### omni lights
+
+With basic materials working and environment mapping in place, the next task on the list is lighting.
+
+The GLES2 backend is a forward renderer, that means each gets shaded once. The counter-part - deferred rendering - renders each of the objects properties into a separate framebuffer. Lights then combine those properties dependeing on their parameters.
+
+Because the GLES2 specification is quite limiting in some parts, the lighting uses a "multi-pass" approach. This means that all the objects that are affected by a light have to be rendered again and the "light difference" will be blended over the "base rendering" of the object.
+
+This happens for all objects for all lights. The GLES3 backend can render all lights for each object in one pass, unfortunately I can't go down that route :(
+
+The first thing I tackled were OmniLights, which are like points that illuminate the area around them.
+
+The strength of the light depends on the normal of the object and the distance to the light.
+
+
+
+
+
+
+
+### lambert+phong
+
+The above pictures where achieved by blindly blending the color of the light over the object. It didn't take into account the metalness or roughness, as well as the "specular blob".
+
+So the next step was making sure that the material parameters would be respected properly.
+
+With PBR, light reflection is divided into two categories: specular reflection and diffuse reflection.
+
+The "big" part (diffuse reflection) of a light influence on an object is achieved by ["lambert" shading](https://en.wikipedia.org/wiki/Lambertian_reflectance). This only affects rough surfaces.
+
+The specular blob (here through specular reflection) part is done with ["phong shading"](https://en.wikipedia.org/wiki/Phong_shading).
+
+They are both [pretty simple to implement](https://github.com/karroffel/godot/blob/9320ea98b7f575dd80a171e5c0e6d76d4b6f7120/drivers/gles2/shaders/scene.glsl#L301-L321), but the lambert model has been modified to be in-line with PBR and energy conservation.
+
+### normal maps
+
+Until then I didn't implement normal maps properly as they require some special care in the shader, but it was about time, and with that in place things are starting to look pretty good!
+
+
+
+
+
+
+### rewrite OAHashMap to use RobinHood hashing
+
+I was working on a small hashmap implementation in my freetime and read more about RobinHood hashing, which is a pretty nifty addition to regular open adressing hash maps.
+
+A while ago, I implemented a new hashmap type for Godot that should be more cache friendly for situations where high performance is critical (for example CSG).
+
+The main HashMap implementation in Godot uses chaining and many dynamic memory allocations. If a hash collision occurs then the elements will be chained in a linked-list kind of manner. This is pretty bad for cache misses but in most cases it's not a problem that you need to deal with.
+
+Open adressing uses flat arrays and use the hash as an index into the array. If a collision occurs then the next free spot will be used. This makes lookups more memory local.
+
+One downside to that is that if the hashmap becomes more and more filled, the average time to find the entry you are looking for grows bigger and bigger.
+
+RobinHood hashing enhances that system by "stealing from the rich and giving to the poor". Basically it shifts elements around to average out the distance of the place where an entry should be and where it actually is. This means that lookups can be aborted a lot faster and in general the lookup times are much faster. Also they can be used with way higher fill factors than regular open adressing.
+
+This is all pretty technical, but if you are interested, the code can be found [here](https://github.com/godotengine/godot/blob/af15a1f10e9928d545065952b123b3eaa6f4b036/core/oa_hash_map.h).
+
+### improved C++ bindings compilation workflow
+
+Until now, compiling the C++ bindings was a multi-step process that required setting up paths correctly and having a Godot tool-binary around.
+
+I added the dependencies as git submodules and files so that the project is now compilable in one command.
+
+This should hopefully lower the entry of barrier to get started with C++ projects and Godot.
+
+### fixed a GDNative binary compatibility bug
+
+Recently a [compatibility bug was found](https://github.com/godotengine/godot/pull/18125) with the way the Godot API struct was constructed. This has been unnoticed for a while and caused problems when cross compiling libraries. This has been resolved now and shouldn't cause any issues from now on.
+
+## Future
+
+The GLES2 backend is getting closer to completion and the major things missing are shadows, reflection probes and light mapping. The 3.1 alpha is planned to be soon, so those features will hopefully be ready to test by then.
+
+As always, thanks for the support on Patreon and also thanks to all the people that are interested in Godot and spread the word around!
+
+## Seeing the code
+
+If you are interested in the GLES2 related code, you can see all the commits in my [fork](https://github.com/karroffel/godot/tree/gles2) on GitHub. Other contributions are linked in the sections above.
\ No newline at end of file
diff --git a/collections/_article/gles2-and-gdnative-progress-report-7.md b/collections/_article/gles2-and-gdnative-progress-report-7.md
new file mode 100644
index 0000000000..ea6705e341
--- /dev/null
+++ b/collections/_article/gles2-and-gdnative-progress-report-7.md
@@ -0,0 +1,168 @@
+---
+title: "GLES2 and GDNative, progress report #7"
+excerpt: "After all the light types are implemented, the next step is to implement shadow mapping, with all its frustrating implementation details ;)"
+categories: ["progress-report"]
+author: karroffel
+image: /storage/app/uploads/public/5b5/59c/e48/5b559ce4849ad017013962.png
+date: 2018-07-23 00:00:00
+---
+
+## Introduction
+
+After all the light types are implemented, the next step is to implement shadow mapping, with all its frustrating implementation details ;)
+
+
+## Roadmap
+
+#### Done June 2018
+
+- finish lights
+- implement shadow atlas
+- depth rendering for shadow mapping
+- spot light shadows
+- omni light shadows
+- billboard support in shaders and editor fixes
+- BlendSpace1D
+
+#### Planned July 2018
+
+- directional shadows
+- reflection probes
+- lightmaps
+- particles
+- implement immediate geometry
+- merge into master branch
+
+
+## Details about work in June 2018
+
+### finish lights
+
+At the end of May, `OmniLight`s were already working, so the other types of light sources need to be implemented as well.
+
+The first thing I tackled were `SpotLight`s. A SpotLight is pretty much just an OmniLight (so it just emits light in a circular way around it) but the light is restricted to a cone.
+
+
+
+
+The last light type missing was `DirectionalLight`, which is usually used to emulate a star or a very far away light source.
+All this light needs to be described is the direction of the light, no position is needed.
+
+
+
+
+
+The shader code for the lights can be found [here](https://github.com/karroffel/godot/blob/157da9a7c36eeaf1326708ed7432a2311a28032f/drivers/gles2/shaders/scene.glsl#L474-L614).
+
+
+### implement shadow atlas
+
+With that, simple illumination was working, but there were no shadows yet!
+
+I will go more in-depth about shadow-mapping later, for now just know that in order to show shadows, the scene needs to be rendered from the perspective of each light and the result has to be saved.
+
+Different lights need different storage types.
+
+Since directional lights span **the whole scene**, they need their own separate storage that's big enough for all this.
+
+`SpotLight`s have a restriction on the angle of the cone, so it can never span more than a half-circle. This means all it needs is a single "image" that shows the space that the light can reach. The higher the angle the more stretched by perspective it will be, but this works just fine.
+
+`OmniLight`s need more information than just a single view. They reach around in a spherical way, so what the GLES2 backend does is render into a [cubemap](https://en.wikipedia.org/wiki/Cube_mapping) (6 images, arranged like the faces of a cube). Because using 6 images would take quite a lot of storage space, the cubemap gets converted into a *"dual paraboloid"*, which is essentially like two fish-eye-lens pictures.
+
+A `DirectionalLight` needs their own space, but using single textures for each other light would be pretty wasteful, so what is used as an optimization is a *Shadow Atlas*. Using a ShadowAtlas lets us pack multiple images into one, and even give them more or less space depending on distance from the camera to achieve better detail.
+
+There is a nice article about lights and shadows on the documentation pages, you can find it [here](http://docs.godotengine.org/en/3.0/tutorials/3d/lights_and_shadows.html#shadow-atlas).
+
+For the GLES2 renderer, I had to implement the interface for those shadow atlases. This was mostly coding in "the dark", so there is not much to show *yet*. The code is located [here](https://github.com/karroffel/godot/blob/157da9a7c36eeaf1326708ed7432a2311a28032f/drivers/gles2/rasterizer_scene_gles2.cpp#L55-L389).
+
+
+### depth rendering for shadow mapping
+
+As mentioned before, in order to know which pixels are "in a shadow" and which are lit, the scene has to be rendered from the viewpoint of the light.
+
+But this is not a regular render pass, we are only interested in the [*depth buffer*](https://en.wikipedia.org/wiki/Z-buffering).
+
+When the `VisualServer` (the high level render abstraction) calls the renderer, it passes a flag if this draw pass is depth only or a regular call.
+
+A few adjustments and optimizations had to be done to support this properly without wasting computation power.
+
+The result of these draw calls get rendered directly into a shadow atlas or the directional shadow storage.
+
+So now the shadow atlas can actually be visualized!
+
+
+
+
+I zoomed out and in when taking this picture, so I could see that the allocation works correctly. But for now everything is white? Shouldn't there be the sphere in greyscale? The problem here is that the depth buffer wasn't *linearized*, so in order to see if the rendering was actually working I needed to bring the light **veeeeeery** close.
+
+
+
+So after coding in the dark for quite a while, the darkness is finally visualized :)
+
+### spot light shadows
+
+Next on the list - actually do something with those depth renderings.
+
+Each pixel that gets *potentially* illuminated by the light source has to check if it's in a shadow or not. How is that done?
+
+If there's a transformation that brings us from object's coordinates into screen-coordinates, then there's an inverse that lets us calculate the object-coordinates from the screen-coordinates. Then we can apply the shadow transform to see where that point would end up in the depth rendering.
+
+If the "light depth" of that pixel is "behind" the thing that we rendered, we know that it's in a shadow.
+
+That's a lot of *transforms* and coordinates and all that. The basic principle is that there is a check to see if something is between the light and the current pixel or not. That's all :)
+
+Sounds easy enough, but in practice it took me maaaaany hours of debugging and guesswork. But, as usual, it made for some nice screenshots.
+
+
+
+Eventually it worked out... more or less.
+
+
+
+
+I solved this problem too but didn't take a screenshot afterwards. Just believe me that it was a relief after so many hours of debugging :D
+
+
+### omni light shadows
+
+As mentioned, `OmniLight`s use a different way of storing the depth information, but really only the transforms change a little. So after all those countless hours getting the `SpotLight`s working, making `OmniLight`s work was pretty fast.
+
+
+
+
+
+(In the ShadowAtlas debug view you can see the fish-eye projection for `OmniLight`s)
+
+
+All together it works pretty nicely, some things still need some ironing (mostly "shadowmap filtering"), but the biggest step was taken :)
+
+
+
+
+### billboard support in shaders and editor fixes
+
+Since Godot's goal is to be as flexible as possible without comprimising usability there are a lot of knobs and switches to take care of in the rendering code.
+One of those things was support for "billboard modes" and for the vertex shader to skip the vertex transform so the user can do it manually.
+
+This made many more gizmos in the editor show up, so now it is almost as complete as the GLES3 version of the editor, with the exception for things that use `ImmediateGeometry`, like some handles on light gizmos. Implementing this is planned for next month :)
+
+### BlendSpace1D
+
+To catch some breath after all this debugging madness, I took a shot at implementing `BlendSpace1D` for the new animation system since I needed that in one of my side-projects.
+
+
+
+
+You can read more about the new animation system [here](https://godotengine.org/article/godot-gets-new-animation-tree-state-machine)!
+
+The code for that can be found [here](https://github.com/godotengine/godot/blob/17b44e44b9a34e540cf48ee0a7335ecefcd0c3b7/scene/animation/animation_blend_space_1d.cpp).
+
+## Future
+
+The way the lighting is done currently is very bad for the i-cache of the GPU, so some refactoring will be needed to increase performance.
+
+Also the branch will soon be merged into the Godot `master` branch, so some cleanup will be done for that as well.
+
+## Seeing the code
+
+If you are interested in the GLES2 related code, you can see all the commits in my [fork](https://github.com/karroffel/godot/tree/gles2) on GitHub. Other contributions are linked in the sections above.
\ No newline at end of file
diff --git a/collections/_article/gles2-renderer-optimization-2d-batching.md b/collections/_article/gles2-renderer-optimization-2d-batching.md
new file mode 100644
index 0000000000..94742d99db
--- /dev/null
+++ b/collections/_article/gles2-renderer-optimization-2d-batching.md
@@ -0,0 +1,57 @@
+---
+title: "GLES2 renderer optimization - 2D batching"
+excerpt: "While Juan's work on the Vulkan rendering backend is ongoing in the master branch, the rest of the rendering team have not been idle. They have been working on many bug fixes and some improvements to the OpenGL rendering in the 3.x branch, and one of the most awaited is the addition of batching of 2D primitives in the GLES2 renderer, which should significantly increase performance in a lot of 2D games."
+categories: ["progress-report"]
+author: Bartleby Lawnjelly
+image: /storage/app/uploads/public/5e8/e58/0c6/5e8e580c63d1e981395802.png
+date: 2020-04-09 11:42:21
+---
+
+While Juan ([reduz](https://github.com/reduz)) has been busily working on Vulkan, the rest of the rendering team have not been idle. They have been working on many bug fixes and some improvements to the OpenGL rendering in the 3.x branch.
+
+One of the most eagerly awaited 2D features has been batching of drawcalls, and it is something myself ([lawnjelly](https://github.com/lawnjelly)) and Clay ([clayjohn](https://github.com/clayjohn)) have spent several weeks researching and coming up with a reasonable implementation, that should hopefully significantly increase performance in a lot of 2D games.
+
+Soon we will be migrating this work to the 4.0 branch, but for now at least some of the improvements will be available in 3.2.x.
+
+## How it works
+
+Up until now, the GLES2 2D renderer has been drawing primitives (such as rectangles) on an individual basis. Each rectangle, polygon, line, etc., has been causing a drawcall to OpenGL. While GPUs can cope with this method, they don't work at peak efficiency because they are optimized to handle larger numbers of primitives in each drawcall.
+
+In order to better take advantage of GPU horsepower, we organise these primitives into batches at the beginning of each frame. Each batch is made as large as possible so that we can reduce the number of drawcalls and the number of state changes between drawcalls, which are also expensive in performance terms.
+
+After trying various approaches we have settled with a multi-pass approach:
+1. The first pass identifies similar items and groups them into batches.
+2. The second pass draws each batch using a single drawcall.
+
+Right now batching has only been implemented for rectangle primitives (which includes tilemaps, text, sprites, and many GUI nodes). Scenes making heavy use of polygons, meshes, or other non-rect primitives will not benefit from the current work, batching will be extended to those other types once the current rendition of batching is properly tested.
+
+To best take advantage of batching, group similar nodes together in the scene tree as batching cannot extend across scene layers and Z indices. Similarly, batches must share a texture, material, blend mode, shader, and skeleton.
+
+## Results
+
+As predicted, even with the small added housekeeping costs, batching greatly reduced drawcall bottlenecks. Highly specific benchmarks focusing on drawcalls show large improvements in performance.
+
+In real world games however, the speedup will depend on to what extent drawcalls are your bottleneck. Games drawing a lot of rects, particularly with high density or multiple tilemaps, or text, are likely to see the largest speedup. Let us know your results!
+
+Even if you don't make large gains because your bottlenecks are elsewhere, note that you can often effectively bump up the amount of detail without adversely affecting performance.
+
+*Left is without batching, right is with. Can you spot the difference?*
+
+
+
+*Top: 10,000 Sprites with a randomized modulate and position.*
+*Bottom: 8 layers of a screen full of "A"s with two Sprites intermixed.*
+
+Let the above example images teach you all a lesson that us graphics programmers don't stare at beautiful images all day, often times we work with images like these.
+
+## How to try out the new build
+
+Rémi ([Akien](https://github.com/akien-mga)) has kindly been making a series of test builds which we are trying to test as widely as possible before we merge into the main 3.2.x branch.
+
+Please try these changes out yourself, they are linked from the PR with many more details:
+
+https://github.com/godotengine/godot/pull/37349
+
+Let us know if it worked okay for your project, and also let us know if you discover any problems so we get onto fixing them. :)
+
+*The banner image is using the Godot bunnymark bunny from [godot3-bunnymark](https://github.com/cart/godot3-bunnymark). Thank you to [cart](https://github.com/cart) for making such a great profiling tool. Consider this a warning that all your bunnymark scores have become outdated.*
\ No newline at end of file
diff --git a/collections/_article/godot-1-1-beta1-out.md b/collections/_article/godot-1-1-beta1-out.md
new file mode 100644
index 0000000000..373b9b8b9d
--- /dev/null
+++ b/collections/_article/godot-1-1-beta1-out.md
@@ -0,0 +1,40 @@
+---
+title: "Godot 1.1 beta1 is out!"
+excerpt: "After three months of hard work, our first new release is out! This beta prepares the road for the 1.1 release, expected sometime in late April."
+categories: ["pre-release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/56c/315/11c/56c31511c9034056347215.png
+date: 2015-04-02 00:00:00
+---
+
+Time to get serious again!
+
+After three months of hard work, our first new release is out! This beta prepares the road for the 1.1 release, expected sometime in late April.
+
+New features include:
+
+* Rewritten Auto-Completion in the Code-Editor. Supports a lot of scenarios and perform smart-completion of node types if a scene where the script is being used is open.
+* Visual Shader Editor (Edit shaders connecting nodes)
+* New API in OS for managing the screens and window, with multi-monitor support.
+* Largely rewritten 2D engine, with support for:
+ - Shaders (Visual and Code)
+ - 2D Materials
+ - 2D Independent Z ordering per-node.
+ - 2D Lights
+ - 2D Shadows with Polygonal Occluders
+ - 2D Normal Mapping
+ - Back-Buffer compositing for shaders that read from screen (allows all sorts of post-processing effects).
+ - Improved Isometric TileMap Support (proper Z ordering of tiles and children nodes).
+ - Distance-Field font support.
+* New 2D Navigation Polygon support, for efficient 2D pathfinding. Navigation Polygons can be edited visually and combined, disabled, etc.
+* Improved Usability in 2D Physics API:
+ - Area2D and RigidBody2D can receive input events
+ - Area2D can detect overlap with another Area2D
+* New Dark Theme
+* Large amount of bug fixes and smaller improvements.
+
+Please remember that this new version is BETA, so this is your time to report everything that doesn’t work to GitHub as Issues, contribute PRs with fixes or annoy Juan and Ariel to fix what is not working for you.
+
+Godot 1.1 Beta1 can be obtained in the [Download](/download) section, or source cloned at [GitHub](https://github.com/godotengine/godot).
+
+Happy Testing!
\ No newline at end of file
diff --git a/collections/_article/godot-1-1-out.md b/collections/_article/godot-1-1-out.md
new file mode 100644
index 0000000000..1f5e2e60f5
--- /dev/null
+++ b/collections/_article/godot-1-1-out.md
@@ -0,0 +1,56 @@
+---
+title: "Godot 1.1 is out!"
+excerpt: "After many months of hard work (and many more of bug fixing), Godot 1.1 is out!! This release brings a completely new 2D engine and more features (feature list below). At this point Godot is one of the most advanced 2D engines out there."
+categories: ["release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/56c/317/b3c/56c317b3ce725271162621.png
+date: 2015-05-21 00:00:00
+---
+
+## Brand new 2D engine and more!
+
+After many months of hard work (and many more of bug fixing), Godot 1.1 is out!! This release brings a completely new 2D engine and more features (feature list below). At this point Godot is one of the most advanced 2D engines out there. Check out (and share!) this video with the new feature showcase!
+
+
+
+## Full list of features
+
+* Rewritten Auto-Completion in the Code-Editor. Supports a lot of scenarios and perform smart-completion of node types if a scene where the script is being used is open.
+* Visual Shader Editor (Edit shaders connecting nodes)
+* New API in OS for managing the screens and window, with multi-monitor support.
+* Largely rewritten 2D engine, with support for:
+ - Shaders (Visual and Code)
+ - 2D Materials
+ - 2D Independent Z ordering per-node.
+ - 2D Lights
+ - 2D Shadows with Polygonal Occluders
+ - 2D Normal Mapping
+ - Back-Buffer compositing for shaders that read from screen (allows all sorts of post-processing effects).
+ - Improved Isometric TileMap Support (proper Z ordering of tiles and children nodes).
+ - Distance-Field font support.
+* New 2D Navigation Polygon support, for efficient 2D pathfinding. Navigation Polygons can be edited visually and combined, disabled, etc.
+* Improved Usability in 2D Physics API:
+ - Area2D and RigidBody2D can receive input events
+ - Area2D can detect overlap with another Area2D
+* New Dark Theme
+* Much Improved Blender Collada Exporter (BetterCollada).
+* Large amount of bug fixes and smaller improvements.
+* [Full (enormous) changelog since 1.0](https://web.archive.org/web/20150623064151/http://pastebin.com/fU3TDRin).
+
+## Download
+
+Godot 1.1 can be obtained at the [Download](/download) section.
+
+## Future
+
+With this release, Godot becomes one of the best options out there to develop modern 2D games. While the community is eagerly waiting for the same work on modernizing the 3D side of engine, the developers are waiting for more news on the newly announced Vulkan API, as it would be ideal to adopt it instead of OpenGL3/4 or OpenGL ES3. Meanwhile, the focus for 1.2 will be on modernizing the editor UI for better usability. There is a long list the community has put together on this and we are still welcoming feedback. As always, Godot is developed with the community and for the community.
+
+There will also soon be:
+
+1. A new website, more community oriented, developed by Theo Hallenius, where everyone will be able to create documentation and content.
+2. An asset sharing section, so the community can better share the content it creates and help each other.
+3. A diffusion section, where you will be able to find material, talks, etc that you can use to help spread the world and teach others about Godot.
+
+## Make Noise!!
+
+Godot does not have millions of dollars in investment for PR, so it relies on **you** in order for the rest of the world to find out about it. **Talk about it, tweet about it, write articles, organize talks, and share this news!!**
\ No newline at end of file
diff --git a/collections/_article/godot-1-1-rc1.md b/collections/_article/godot-1-1-rc1.md
new file mode 100644
index 0000000000..b6a8192861
--- /dev/null
+++ b/collections/_article/godot-1-1-rc1.md
@@ -0,0 +1,14 @@
+---
+title: "Godot 1.1 RC1"
+excerpt: "After 1.1 Beta a month ago, our first release candidate is here. A huge amount of issues were fixed."
+categories: ["pre-release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5c2/b4e/d97/5c2b4ed97851f986256536.jpg
+date: 2015-05-01 00:00:00
+---
+
+After 1.1 Beta a month ago, our first release candidate is here. A huge amount of issues were fixed ([full changelog](https://web.archive.org/web/20150705162445/http://pastebin.com/G9yK5mhR)).
+
+If you didn’t report your favorite bugs, this is the time before it’s too late! If you reported them and they were not fixed yet, it’s your chance to pester the developers (just add comments to the issues you want fixed reminding them). If nothing comes up, this will become 1.1 stable.
+
+Get the binaries at the [Download](/download) section!
\ No newline at end of file
diff --git a/collections/_article/godot-1-1-rc2.md b/collections/_article/godot-1-1-rc2.md
new file mode 100644
index 0000000000..b44293229c
--- /dev/null
+++ b/collections/_article/godot-1-1-rc2.md
@@ -0,0 +1,12 @@
+---
+title: "Godot 1.1 RC2"
+excerpt: "The second release candidate is out, with a large amount of fixes. Let’s hope this is the last one and becomes stable!"
+categories: ["pre-release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5c2/b4e/efe/5c2b4eefec8e1414325294.png
+date: 2015-05-05 00:00:00
+---
+
+The second release candidate is out, with a large amount of fixes. Let’s hope this is the last one and becomes stable!
+
+It is recommended to migrate to this version if you are using RC1, because a serious bug was fixed when saving animations in xml format that can end up in a corrupted scene.
\ No newline at end of file
diff --git a/collections/_article/godot-1-1-rc3.md b/collections/_article/godot-1-1-rc3.md
new file mode 100644
index 0000000000..665704b2cc
--- /dev/null
+++ b/collections/_article/godot-1-1-rc3.md
@@ -0,0 +1,12 @@
+---
+title: "Godot 1.1 RC3"
+excerpt: "Many more issues were reported issues after RC2, so we’ll be releasing one more candidate."
+categories: ["pre-release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5c2/b4e/fd9/5c2b4efd9c609153795934.png
+date: 2015-05-17 00:00:00
+---
+
+Many more issues were reported issues after RC2 ([changelog](https://web.archive.org/web/20150720151014/http://pastebin.com/AfsgAGy1)), so we’ll be releasing one more candidate. This time, we’ll raise the bar so if nothing really serious is reported, this should go as 1.1 Stable!
+
+New release in the [Download](/download) section, or at [GitHub](https://github.com/godotengine/godot/tree/1.1-rc3).
\ No newline at end of file
diff --git a/collections/_article/godot-10-rc1-here.md b/collections/_article/godot-10-rc1-here.md
new file mode 100644
index 0000000000..81e2180690
--- /dev/null
+++ b/collections/_article/godot-10-rc1-here.md
@@ -0,0 +1,14 @@
+---
+title: "Godot 1.0 RC1 is here!"
+excerpt: "A long time in the baking, but the first release candidate is here. This does not mean Godot is now without bugs, but that nothing should be too serious to affect your productivity. After stable release, we’ll keep fixing issues and then head over to 1.1 (see roadmap!)."
+categories: ["pre-release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/56c/31d/5fd/56c31d5fdcbc7419338592.png
+date: 2014-12-02 00:00:00
+---
+
+*Edit:* Release Candidate 2 is now up.
+
+A long time in the baking, but the first release candidate is here. This does not mean Godot is now without bugs, but that nothing should be too serious to affect your productivity. After stable release, we’ll keep fixing issues and then head over to 1.1 (see [roadmap](https://github.com/godotengine/godot/wiki/devel_roadmap)!).
+
+If nothing too serious is found in this build this week, it will become 1.0 stable, so make sure to test well with your projects!
\ No newline at end of file
diff --git a/collections/_article/godot-2-0-now-beta.md b/collections/_article/godot-2-0-now-beta.md
new file mode 100644
index 0000000000..8e7d80678f
--- /dev/null
+++ b/collections/_article/godot-2-0-now-beta.md
@@ -0,0 +1,16 @@
+---
+title: "Godot 2.0 is now beta!"
+excerpt: "After a long, long time in development Godot 2.0 is now in beta!"
+categories: ["pre-release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/56c/329/d53/56c329d53bbca269077842.jpg
+date: 2016-01-26 00:00:00
+---
+
+After a long, long time in development Godot 2.0 is now in beta!
+
+Godot 2.0 Beta features a new interface, and a huge amount of usability improvements. It is also more stable than ever, with hundreds of bug fixes and small enhacements.
+
+Please test this version out heavily and report any bugs you find! If your favorite bug has not been fixed, please post it to GitHub or (if already there) update it expressing your desire for it getting fixed for 2.0 stable.
+
+Give it a try in the [Download](/download) section!
\ No newline at end of file
diff --git a/collections/_article/godot-2-0-rc1-released.md b/collections/_article/godot-2-0-rc1-released.md
new file mode 100644
index 0000000000..c810dc1bda
--- /dev/null
+++ b/collections/_article/godot-2-0-rc1-released.md
@@ -0,0 +1,12 @@
+---
+title: "Godot 2.0 RC1 released!"
+excerpt: "Finally, a couple of weeks (and hundreds of fixes) after the Beta, we are proud to present our first Release Candidate! This engine version should be much more stable and, if no serious bugs are found, will become 2.0 stable."
+categories: ["pre-release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/56b/c83/5a6/56bc835a68672307835902.jpg
+date: 2016-02-09 00:00:00
+---
+
+Finally, a couple of weeks (and hundreds of fixes) after the Beta, we are proud to present our first Release Candidate! This engine version should be much more stable and, if no serious bugs are found, will become 2.0 stable.
+
+Please [download](/download) and test thoroughly!
\ No newline at end of file
diff --git a/collections/_article/godot-2-1-rc1-out.md b/collections/_article/godot-2-1-rc1-out.md
new file mode 100644
index 0000000000..52ce5f1947
--- /dev/null
+++ b/collections/_article/godot-2-1-rc1-out.md
@@ -0,0 +1,35 @@
+---
+title: "Godot 2.1 RC1 is out!"
+excerpt: "Our first Release Candidate for Godot 2.1 is here! If you don't find enough bugs, this will be our final candidate, so better get testing!"
+categories: ["pre-release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/62e/949/5ee/62e9495eee18d883052090.jpg
+date: 2016-07-24 21:40:26
+---
+
+Our first release candidate is out! This means, if nothing important changes, that this build will become Godot 2.1.
+
+Godot 2.1 continues to improve on the usability trend, taking care of several aspects that were left out of 2.0 due to time constraints. [Grab it now](/download) while you read on the list of new features below (short version!).
+
+Same as in Beta, a quick and incomplete list of new features follows (a proper post will be written for the stable release):
+
+* **New asset sharing platform**: Godot has a new platform for sharing assets between users. It's still rough, but it will improve with time. As of now there is almost no content to test it with, but we will upload some plugins and the demos there in the coming days.
+* **New plugin API**: Downloaded assets can be used as plugins to extend the editor functionalities. Our first attempt at offering an API for this is still probably incomplete, so help us improve it with your feedback.
+* **Support for dynamic fonts**: Load TTF and OTF font files directly into your projects. This aids enormously with internationalization.
+* **Fully internationalized editor UI**: Godot can now be used in several languages and displays all unicode characters properly (including CJK). Right-to-left language support is still unimplemented though.
+* **Editor visual customization**: Change font sizes or set custom fonts, set custom themes, etc.
+* **Customizable keybindings**: Most keybindings can now be customized and there is a new binding editor in the editor settings.
+* **Live script reloading**: Saved scripts in the editor will be reloaded in the running game automatically, and tool scripts will also be automatically reloaded.
+* **Profiler & frame profiler**: Godot has a fully featured profiler (with graph plotting), which allows going back in time and see the performance numbers and most used functions frame by frame.
+* **Remote scene inspector**: Inspect the scene tree of the running game live, including nodes and resources.
+* **HiDPI/Retina support**: Godot detects high resolution monitors and offers the editor UI with native resolution. All Godot icons were redone in vector graphics for the occasion, thanks a lot to [@drjm](https://github.com/djrm) who did almost all of them!
+* **Drag & drop support**: Godot now supports drag & drop editor-wide. Dragging assets from filesystem explorer to Godot will also open the relevant import dialogs.
+* **Contextual menus**: Godot now also supports contextual menus where relevant.
+* **Script editor usability improvements**: Incremental search, better highlighting, smart function matching in code-completion, etc.
+* **Improved asset pipeline**: Automatic re-import and reload of assets and scenes when changed.
+* **Improved thumbnailer**: Previews are updated in real-time, and thumbnails of resources will appear in the inspector.
+* **New AnimatedSprite features**: Labelled animations, and the ability to play animations without an AnimationPlayer.
+
+With these changes, Godot has become a true joy to use. [Please help us with testing](/download) so we can make sure 2.1 is a solid release! This is the time to [report your favorite bugs](https://github.com/godotengine/godot/issues/), or add a comment to existing ones so we give them more priority.
+
+For the most adventurous, you can check the [complete git changelog](http://download.tuxfamily.org/godotengine/2.1-dev/rc1/Godot_v2.1_rc1_changelog_from_2.0.txt) of the more than 1,200 commits (excluding merge commits) that were done so far for this new release! If you've tried the betas already, you can also consult the (much shorter) [git changelog since the previous beta build](http://download.tuxfamily.org/godotengine/2.1-dev/rc1/Godot_v2.1_rc1_changelog_from_beta.txt).
\ No newline at end of file
diff --git a/collections/_article/godot-2-1-reaches-beta-ready-for-testing.md b/collections/_article/godot-2-1-reaches-beta-ready-for-testing.md
new file mode 100644
index 0000000000..546f6f9ea9
--- /dev/null
+++ b/collections/_article/godot-2-1-reaches-beta-ready-for-testing.md
@@ -0,0 +1,39 @@
+---
+title: "Godot 2.1 reaches beta, ready for testing!"
+excerpt: "After 5 months of development and more than 1,600 commits, we are pretty happy with the state of the upcoming 2.1 version, and therefore release a beta for the community to test and give feedback upon! This new releases had again an important focus on usability, making Godot a very convenient and pleasing engine to use!"
+categories: ["pre-release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/578/568/145/5785681454bd4264168994.png
+date: 2016-07-12 00:00:00
+---
+
+**Edit:** A new beta build has been published, [dated 2016-07-21](https://downloads.tuxfamily.org/godotengine/2.1-dev/20160721/). See the [changelog](https://downloads.tuxfamily.org/godotengine/2.1-dev/20160721/Godot_v2.1_beta_20160721_changelog.txt) since the 2016-07-12 build.
+
+Today, after several months of hard work, we have reached a new milestone in the development of the upcoming version 2.1! We are now pretty happy with the feature set and the overall stability, and therefore provide [beta binaries](/download) for you to test and [report issues/suggest improvements](https://github.com/godotengine/godot/issues).
+
+Godot 2.1 continues to improve on the usability trend, taking care of several aspects that were left out of 2.0 due to time constraints. [Grab it now](/download) while you read on the list of new features below (short version!).
+
+
+
+A quick and incomplete list of new features follows (a proper post will be written for the stable release):
+
+* **New asset sharing platform**: Godot has a new platform for sharing assets between users. It's still rough, but it will improve with time. As of now there is almost no content to test it with, but we will upload some plugins and the demos there in the coming days.
+* **New plugin API**: Downloaded assets can be used as plugins to extend the editor functionalities. Our first attempt at offering an API for this is still probably incomplete, so help us improve it with your feedback.
+* **Support for dynamic fonts**: Load TTF and OTF font files directly into your projects. This aids enormously with internationalization.
+* **Fully internationalized editor UI**: Godot can now be used in several languages and displays all unicode characters properly (including CJK). Right-to-left language support is still unimplemented though.
+* **Editor visual customization**: Change font sizes or set custom fonts, set custom themes, etc.
+* **Customizable keybindings**: Most keybindings can now be customized and there is a new binding editor in the editor settings.
+* **Live script reloading**: Saved scripts in the editor will be reloaded in the running game automatically, and tool scripts will also be automatically reloaded.
+* **Profiler & frame profiler**: Godot has a fully featured profiler (with graph plotting), which allows going back in time and see the performance numbers and most used functions frame by frame.
+* **Remote scene inspector**: Inspect the scene tree of the running game live, including nodes and resources.
+* **HiDPI/Retina support**: Godot detects high resolution monitors and offers the editor UI with native resolution. All Godot icons were redone in vector graphics for the occasion, thanks a lot to [@drjm](https://github.com/djrm) who did almost all of them!
+* **Drag & drop support**: Godot now supports drag & drop editor-wide. Dragging assets from filesystem explorer to Godot will also open the relevant import dialogs.
+* **Contextual menus**: Godot now also supports contextual menus where relevant.
+* **Script editor usability improvements**: Incremental search, better highlighting, smart function matching in code-completion, etc.
+* **Improved asset pipeline**: Automatic re-import and reload of assets and scenes when changed.
+* **Improved thumbnailer**: Previews are updated in real-time, and thumbnails of resources will appear in the inspector.
+* **New AnimatedSprite features**: Labelled animations, and the ability to play animations without an AnimationPlayer.
+
+With these changes, Godot has become a true joy to use. [Please help us with testing](/download) so we can make sure 2.1 is a solid release! This is the time to [report your favorite bugs](https://github.com/godotengine/godot/issues/), or add a comment to existing ones so we give them more priority.
+
+For the most adventurous, you can check the [complete git changelog](http://download.tuxfamily.org/godotengine/2.1-dev/Godot_v2.1_beta_20160712_changelog.txt) of the more than 1,600 commits that were done so far for this new release!
\ No newline at end of file
diff --git a/collections/_article/godot-2019-showreel.md b/collections/_article/godot-2019-showreel.md
new file mode 100644
index 0000000000..fc519b59f9
--- /dev/null
+++ b/collections/_article/godot-2019-showreel.md
@@ -0,0 +1,34 @@
+---
+title: "Announcing the Godot 2019 showreel"
+excerpt: "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)."
+categories: ["showcase"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5cb/370/921/5cb370921c397488950248.png
+date: 2019-04-16 00:00:00
+---
+
+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).
+
+## Submissions
+
+The idea of the reel is to include games both published and in development.
+
+We got well over a hundred submissions this year, 3 or 4 more times than last year. Most of them are fantastic, but it became impossible to put all of them in the official reel, not even in the extended one.
+
+After discussing, we decided to split into two, one for Mobile and one for Desktop/Console games, so have a seat, grab a drink and enjoy the 2019 showreels!
+
+### Desktop / Console showreel
+
+
+
+### Mobile showreel
+
+
+
+## Future
+
+In some days we will also put up the extended showreel, including significantly more games.
+
+As always, big thanks to [Hubert Lamontagne](https://soundcloud.com/madbr) for supplying music to the reel and to [Hugo Locurcio](https://twitter.com/hugolocurcio?lang=en) for the editing.
+
+Remember that, as always, Godot is Open Source and community developed. The core contributors have decided to dedicate their lives to this project, rejecting very juicy offers by the biggest companies in the world. But this can only happen thanks to donations so, if you are not yet, please consider [becoming our patron](https://www.patreon.com/godotengine), and help Godot development remain free and open. Even a small donation is enormously helpful.
\ No newline at end of file
diff --git a/collections/_article/godot-2020-year-in-review-video.md b/collections/_article/godot-2020-year-in-review-video.md
new file mode 100644
index 0000000000..6b7cecb7ca
--- /dev/null
+++ b/collections/_article/godot-2020-year-in-review-video.md
@@ -0,0 +1,18 @@
+---
+title: "Godot 2020 Year in Review video"
+excerpt: "While 2020 was a difficult year for most of us, it's been a great year for Godot development! In the spirit of last year's retrospective article, we made a video showcasing various features that have been developed in 2020."
+categories: ["news"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/5fe/e21/1c7/5fee211c7e4eb714359827.jpg
+date: 2020-12-31 18:00:00
+---
+
+While 2020 was a difficult year for most of us, it's been a great year for Godot development! A lot of new features were implemented for both 4.0 and 3.2.x, from Vulkan rendering to HTML5 export improvements. Many long-requested features are now available in the `master` branch, such as support for right-to-left typesetting and complex scripts (which are required to display text in Arabic, Hebrew, …). On top of that, GDScript has been rewritten from scratch and C# has received continuous improvements and fixes throughout the year.
+
+In the spirit of [last year's retrospective article](https://godotengine.org/article/retrospective-and-future), we made a [**video showcasing various features that have been developed in 2020**](https://www.youtube.com/watch?v=3lm-veva15g).
+
+
+
+## Thanks
+
+We would like to thank the Godot contributors for their tireless work on the engine. Also, thanks to the Godot community for [supporting development](https://patreon.com/godotengine), Hugo Locurcio for editing, and thanks to Hubert Lamontagne for providing their music!
\ No newline at end of file
diff --git a/collections/_article/godot-3-0-released.md b/collections/_article/godot-3-0-released.md
new file mode 100644
index 0000000000..58f79538a1
--- /dev/null
+++ b/collections/_article/godot-3-0-released.md
@@ -0,0 +1,430 @@
+---
+title: "Godot 3.0 is out and ready for the big leagues"
+excerpt: "After more than 18 months of development, all Godot Engine contributors are proud to present our biggest release so far, Godot 3.0! It brings a brand new rendering engine with state-of-the-art PBR workflow for 3D, an improved assets pipeline, GDNative to load native code as plugins, C# 7.0 support, and many other features!"
+categories: ["release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5a6/f92/d3f/5a6f92d3f0d1d382442473.jpg
+date: 2018-01-29 22:54:34
+---
+
+After more than 18 months of development, all Godot Engine contributors are proud to present our biggest release so far, Godot 3.0! It brings a brand new rendering engine with state-of-the-art PBR workflow for 3D, an improved assets pipeline, GDNative to load native code as plugins, C# 7.0 support, Bullet as the 3D physics engine, and many other features which are described in depth below.
+
+Impatient users can put an end to 18 months of waiting by jumping directly to our [Download](/download) page and start playing with Godot 3.0!
+
+# The long road to 3.0
+
+Godot 3.0 ended up being a much, much bigger release than we initially expected. Originally, we planned to just add a new renderer, rework the 3D workflow and boost the major version to indicate compatibility breakage (as the new renderer would be PBR and old one is not).
+
+A year ago, we decided to skip the release of Godot 2.2 (which would have included new multiplayer networking, visual scripting and many other improvements) because we realized that projects using the new features would no longer work in 3.0, and that we'd better focus fully on 3.0 instead of spending 3 months stabilizing the 2.2 work.
+
+Afterwards, as we realized that we were going to fully break compatibility with the 3.0 release, we decided to take the chance to look at our long list of features and bug fixes that could not be implemented because it involved breaking compatibility. We decided to just give it a go and fix everything that had to be fixed.
+
+This also become a perfect opportunity for contributors to propose (and submit) deep changes and improvements to how Godot works, as this was not possible since Godot was open-sourced in our aim to preserve compatibility.
+
+The result of this work was overwhelmingly positive. Godot 3.0 has an almost entirely new core as well as several top notch brand new features. It is the culmination of all our contributors' efforts and our most advanced and complete release yet. With 3.0, we lay the foundation for even more rapid improvements in the future!
+
+We hope you really enjoy this new release and keep tuned for the new ones that will come after!
+
+## Patreon
+
+Even though we didn't roll any major release over the last 18 months, the Godot community kept growing at a lightning pace. This led us to think that we should take Godot even more seriously and [look for funding](https://www.patreon.com/godotengine) to have more work time dedicated to the project.
+
+Patreon has proven to be an excellent solution for funding the project and allow me ([Juan](https://github.com/reduz)) to work on it full-time. This allowed me to spend more time helping other contributors. As a result, the number of core developers and occasional contributions has grown considerably:
+
+
+
+As we always want to be crystal clear with how donations are handled and used, we registered on Patreon via our fiscal sponsor, the [Software Freedom Conservancy](https://sfconservancy.org) (which is the high-profile, US-based non-profit charity which handles our finances and legal questions).
+
+After meeting the initial goal, we hired [karroffel](https://github.com/karroffel) to continue her work on GDNative (more about this below) and work on a new rendering backend.
+
+We are currently aiming to hire Rémi Verschelde ([Akien](https://github.com/akien-mga)), our project manager, as full time project manger and representative (you can read more about this [here](/article/next-patreon-goal-help-us-hire-remi-verschelde-akien-full-time)). We need your help, as we are more than halfway there!
+
+If you haven't yet, please help us reach this goal by [becoming our patron](https://www.patreon.com/godotengine)! Even a bit is a tremendous help to the project.
+
+We thank all users who support our project so far on Patreon or via direct donations, as well as the companies who generously sponsor us (Enjin Coin, Gamblify and GameDev.TV). Last but not least, a big thank you to Mozilla and Microsoft for their grants which funded a big part of the work on 3.0.
+
+## Documentation
+
+Thanks to the fantastic work done by Nathan Lovato ([GDquest](https://github.com/GDquest)), Chris Bradfield ([KidsCanCode](https://github.com/KidsCanCode)) and many other contributors, Godot 3.0 also comes with brand new documentation (which is to be expected, as most APIs changed considerably). Our built-in docs are more complete and of much better quality than ever, and our [online docs](http://docs.godotengine.org/en/3.0/) now cover many new topics in depth (such as 3D features).
+
+
+
+Most non-official tutorials online are for the 2.1 version, so they will need to be remade for 3.x. Now that Godot is stable again, this is a great chance for everyone to start working on this.
+
+
+# New features of Godot 3.0
+
+As mentioned above, 3.0 has been 18 months in the making and is a *huge* release. Listing all its features is virtually impossible, but we'll try to give an extensive overview of what changed since Godot 2.1.
+
+It's a long read, so here's a table of contents to easily get to a specific section:
+
+- New physically based 3D renderer
+ * Full principled BSDF
+ * Global illumination (GI)
+ * Mid- and post-processing
+ * Materials and shaders
+ * GPU particles
+- New asset workflow
+ * glTF 2.0 support
+ * Improved OBJ support
+ * SVG support
+- GDNative
+- Mono / C# support
+- Visual Scripting
+- GDScript
+- New audio engine
+- VR support
+- Bullet Physics backend
+- New networked multiplayer API
+- Rewritten export system
+- IPv6 support
+- WebAssembly and WebGL 2.0 support
+- New editor theme and customization
+- Auto-tiling in tile maps
+- Improved flat style box
+- Font oversampling
+- Custom hardware cursor
+- Greatly improved 3D editor viewport
+- Console support
+- And hundreds of other improvements
+
+
+## New physically based 3D renderer
+
+
+
+Godot 3.0 comes with a brand new renderer. For many years, when you read about Godot on the Internet, usual comments were along the lines of:
+
+*"The 2D engine is very good, but 3D is still basic, lacking and nowhere comparable to XXX 3D or YYY Engine".*
+
+Fortunately, this is no more. The new 3D engine is outstanding, with many features out-of-the-box that are still not common in other mainstream engines. Added to this, Godot's ease of use allows reaching the best quality with much less effort.
+
+The new 3D renderer is state-of-the-art, with features rarely see in game engines today, such as:
+
+
+#### Full principled BSDF
+
+Godot is the first engine to offer the full range of Disney's principled BSDF for physically-based rendering. Due to its [innovative rendering architecture](/article/godot-3-renderer-design-explained), it can offer very complex materials at no extra cost.
+
+This means that besides the typical Albedo, Metalness, Ambient Occlusion and Roughness features, Godot offers Rim, Anisotropy, Subsurface Scattering, Clearcoat, Refraction and Transmission. They are all ready to use out-of-the-box and tightly integrated to the render pipeline.
+
+
+
+Other engines force you to either choose only one of those parameters at a time, apply them in a forward pass (thus leaving them out of post-processing, global illumination or making them inefficient with a high numbers of lights), or pay for them. In Godot they are built-in, work without hacks, efficiently and can be combined together.
+
+
+#### Global illumination (GI)
+
+Besides materials, lighting is very important. Godot 3.0 provides two alternative workflows for global illumination.
+
+
+
+The first one is GI Probes, which act like reflection probes (they affect an area and can be blended) but provide global illumination instead. GI Probes are real-time, which means that light changes take effect immediately and objects passing by the probe will also get GI from it.
+
+Both indirect light and voxel reflections are provided by this technique. It's also very easy to use. Just set up the probe bounds and do a fast pre-bake of static objects. No lightmaps or anything of the sort are required, providing a very quick and efficient workflow.
+
+
+
+The only downside is that it requires medium to high-end hardware to work. Even on the lowest quality settings, rendering at an halved resolution may be required on low-end systems.
+
+For low-end systems or mobile devices, we provide a more classical lightmapping workflow. Still, this workflow is easy and efficient as 3D objects get a second set of UVs generated on import, and baking works with instantiated meshes, scenes and even GridMaps.
+
+Godot also uses a light octree system together with lightmaps, which allows dynamic objects to get light from the scene without having to resort to manually-placed light probes, which are a real hassle to set up.
+
+
+
+
+#### Mid- and post-processing
+
+Together with the new rendering capabilities, a new set of mid- and post-processing options are supported.
+
+There is a new tonemapper, with support for HDR, multiple standard curves and auto exposure:
+
+
+
+The most standard effects such as screen-space reflections, fog, depth of field, etc. are supported now.
+
+
+
+There is also a powerful SSAO implementation, which has many useful settings like light affect (how much direct light is affected), or ignoring objects with an ambient occlusion map.
+
+
+
+
+#### Materials and shaders
+
+Unfortunately, the visual material editor from Godot 2.1 was removed in the compatibility breakage, but it will come back in 3.1. Still, Godot 3.0 makes up for it by providing an extremely powerful default material (which supports detail textures, triplanar mapping and other nice features) and an extremely easy-to-use shader language.
+
+
+
+In other engines, you have to provide many shader variants, mix HLSL with a metalanguage, error reporting is terrible and writing shaders is difficult in general. In Godot 3.0, writing shaders is very easy! It uses a custom language that supports most of the GLSL specification. It parses your code and automatically understands what you are trying to do (such as writing to alpha for transparency, reading from screen, etc.) and it generates internal shader variants for all rendering methods automatically and transparently (forward, clustered, vertex-lit, depth-pass, etc.).
+
+All this within a convenient editor supporting full auto-completion!
+
+
+#### GPU particles
+
+Particle systems in Godot (both 2D and 3D) are processed in the GPU. This allows for millions of particles per frame and really cool effects.
+
+
+
+As particles are processed on the GPU, it is also possible to create particle shaders for custom behaviors. Even converting regular particles to shaders for further tweaking is possible:
+
+
+
+
+## New asset workflow
+
+Godot 3.0 has changed how the assets pipeline work. We now use the more familiar scheme of automatically importing assets. Simply drop an asset into the project folder and it will automatically be imported with configurable default parameters. Options can be changed afterwards after importing.
+
+
+
+One interesting point about how this works is that copying the import folder between computers works perfectly, the editor will not attempt reimporting something until it has really changed.
+
+Another big plus of this new system, besides improved ease of use, is that running on a device with a networked filesystem (for very fast testing times) works much better than before. Godot will pick the right compression for textures when importing for mobile, and supply them over the network.
+
+The 3D asset workflow has also seen great improvements. It is possible to either import a scene as a single file, or to split it into multiple instantiated subscenes, keep materials, meshes and animations external, etc. Changes to resources can also be merged.
+
+
+#### glTF 2.0 support
+
+Godot now supports importing glTF 2.0 scenes. This is a new open standard by Khronos which we [encourage you](/article/we-should-all-use-gltf-20-export-3d-assets-game-engines) to use and support.
+
+
+
+The importer is new and likely not as mature as the Collada importer, but it will get better over time.
+
+
+#### Improved OBJ support
+
+The venerable OBJ format is now much better supported. Materials can be read from it and importing as a full scene is now also possible.
+
+
+#### SVG support
+
+Daniel Ramirez ([djrm](https://github.com/djrm)) implemented importing SVG as bitmaps (with customizable resolution). This functionality is also used to better support HiDPI modes, as editor icons are converted to native resolution when the editor starts up.
+
+This does not let you use SVGs directly as 2D meshes yet, but it's on the roadmap for future releases.
+
+
+## GDNative
+
+
+
+GDNative is our new framework for extending Godot via external libraries. It was mostly developed by [karroffel](https://github.com/karroffel), and it's truly amazing.
+
+Using GDNative, it's possible to easily extend Godot in C/C++ without recompiling the engine, and that for any platform. This also means that it's easy to bundle external libraries (such as OpenVR, Steam, Kinect, SQLite, etc.), or provide support for video/audio codecs, VR, etc. as pluggable libraries.
+
+But that's not all. GDNative allows setting up extra scripting languages and using them on the fly without recompiling the engine, with pretty much native performance. Currently, work is in an advanced state for community-maintained [Python](https://github.com/touilleMan/godot-python) (via the PluginScript interface), [Nim](https://pragmagic.github.io/godot-nim/master/index.html) and [D](https://github.com/GodotNativeTools/godot-d) support, as well of course as official [C++](https://github.com/GodotNativeTools/godot-cpp) bindings; others might follow if community members are interested in working on it.
+
+You can read more about it on its [original announcement](/article/dlscript-here) and a later [in-depth look at its architecture](/article/look-gdnative-architecture).
+
+
+## Mono / C# support
+
+
+
+Thanks to a generous grant from Microsoft, Ignacio Roldán Etcheverry ([neikeq](https://github.com/neikeq)) did a fantastic job and implemented Mono support in Godot.
+
+It is now possible to fully script [Godot using C#](/article/introducing-csharp-godot), using your favorite IDE and the latest version of the language.
+
+Due to popular demand, we also implemented an API mostly conformant with the C# conventions, so for C# users, the API is mostly PascalCase (instead of snake_case). The generated C# code API includes the full documentation embedded, so code completion works very well with it.
+
+**Note:** The language support is mostly complete and it's fully usable, but it will continue improving over the next months - the main missing feature as of 3.0 is the ability to export games coded in C#, as such it's not fully usable in production yet. There's not much left to implement for this to work though, and it will be available in Godot 3.0.1 within a few weeks.
+
+So as not to impose the additional dependency on the Mono SDK to users of other scripting languages such as GDScript or VisualScript, the C# support comes in a separate build of Godot (labeled the "mono" build).
+
+
+## Visual Scripting
+
+Godot 3.0 also comes with a brand new visual scripting language (originally named VisualScript), in the typical "boxes and connections" fashion. The default implementation is rather low-level, but is extensible enough for users to create more high-level behaviors.
+
+
+
+Visual scripting is ideal for non-programmers, or for programmers exposing behaviors to game designers, artists, etc.
+One of the nice features of our implementation is that it's possible to drag elements from most Godot panels (filesystem, scene, properties, etc.) to the canvas, greatly improving usability.
+
+Since this is the first stable release shipping with VisualScript, we are looking forward to your feedback to continue improving it further in future releases.
+
+
+## GDScript
+
+GDScript has seen many improvements since 2.1. The main one is that the API has changed mostly from using functions to properties. This makes it less verbose, easier for newcomers and for finding the right property in the documentation.
+
+The `get_node()` function also got syntactic sugar to obtain nodes in the local scene tree by writing less code, using the `$` alias.
+
+
+
+GDScript has also seen a huge performance boost thanks to the work of Hein-Pieter van Braam ([hpvb/TMM](https://github.com/hpvb)), which makes its execution much faster.
+
+A new pattern matching API is also available, courtesy of [karroffel](https://github.com/karroffel).
+
+Code completion has also seen a great increase in accuracy.
+
+
+## New audio engine
+
+Godot 3.0 comes with a brand new audio engine; the old one has been completely wiped out. This version is entirely focused on AudioStreams (samples are no longer supported). Streams (supported as .wav and .ogg files) can be played in real-time.
+
+Stream players can now send their output to buses in a rack, allowing very high efficiency and freedom in game sound design:
+
+
+
+There is also a large library of built-in sound effects than can be put in each channel:
+
+
+
+Positional audio is also now fully supported, including stereo, 5.1 and 7.1 speaker configurations. 3D audio can be sent to any channel, but also areas will capture it and send it to custom channels (with split reverb).
+
+This allows different areas to have different reverberation and effects (reverb is not the same in small and large rooms), without having to tweak snapshots like other engines do. Here is an example using the older 3D platformer demo:
+
+
+
+
+## VR support
+
+Godot 3.0 has also seen the introduction of the ARVRServer implementation (as the name says, for AR and VR support), thanks to the great work of Bastiaan Olij ([Mux213](http://github.com/BastiaanOlij)). While the current AR implementations that are being worked on have been moved to the 3.1 release, for VR there are now two options that are ready to be used, with more backends in the works:
+
+- A built-in Cardboard-ish mobile VR solution that uses the embedded sensors for basic 3DOF head tracking.
+- A GDNative-based [implementation of the OpenVR API](https://github.com/BastiaanOlij/godot_openvr) making Godot fully compatible with SteamVR. Pre-compiled binaries for Windows are provided via the [Asset Library](https://godotengine.org/asset-library/asset/150), with other platforms coming soon.
+
+
+
+The GDNative ARVR framework is tightly knit and allows support for other VR platforms to be developed independently of the core game engine.
+
+
+## Bullet Physics backend
+
+The Bullet physics engine can now be used in Godot and comes enabled by default (it's configurable, the old Godot 3D physics backend can be selected in the project settings). Andrea Catania ([Odino](https://github.com/AndreaCatania)) made an amazing job adapting Bullet to Godot and keeping the API mostly intact.
+
+
+
+Apart from a big gain in performance and correctness of the physics, this will allow, in future Godot versions, to implement features such as soft bodies.
+
+
+## New networked multiplayer API
+
+A new API for networked multiplayer was added to Godot 3.0. It's based on remote procedure calls (using ENet for communication) and it makes it very easy to synchronize multiple peers.
+
+
+
+On the script language front, some keywords were added, such as `master`, `slave`, `sync` and `rpc`. This way functions can only be called by the right peer, allowing different levels of authoritativeness and simple game synchronization. Keywords can be added to both functions and properties.
+
+
+
+
+## Rewritten export system
+
+The export system in Godot has been entirely rewritten. Exporting works based on presets, so it's possible to have two presets targeting the same platform, but with different configuration values (such as Android ARM and x86, demo and full game presets, etc.).
+
+
+
+Together with this system, a new "feature tags" system was implemented. Different OS, platform and export features are exposed to Godot as special "tags". The tags can be used for multiple purposes, from overriding in each platform to changing export values:
+
+
+
+Mobile, for example, comes with many predefined feature tags, to aid on reducing graphics requirements on these platforms:
+
+
+
+
+## IPv6 support
+
+
+
+Godot is now fully compliant with IPv6, thanks to Ariel Manzur ([punto](http://github.com/punto-)) and Fabio Alessandrelli ([Faless](https://github.com/Faless)).
+
+
+## WebAssembly and WebGL 2.0 support
+
+
+
+Thanks to the great work carried out by Leon Krause ([eska](https://github.com/eska014)), the HTML5 exporter has greatly improved, including WebAssembly support! WebGL 2.0 has also been added together with the new physically-based renderer (WebGL 1.0 will come back in 3.1).
+
+
+## New editor theme and customization
+
+Our main designer, Daniel Ramirez ([djrm](https://github.com/djrm)), with the help of [volzhs](https://github.com/volzhs) and Timo ([toger5](https://github.com/toger5)), put together a fantastic new theme system. It has much better HiDPI support and allows easily changing colors and contrast levels, as well as alternating between light and dark themes.
+
+
+
+Customize Godot the way you like it! (Without having to pay for it...)
+
+
+## Auto-tiling in tile maps
+
+Godot now supports auto-tiling in TileMap, authored by Mariano Suligoy ([MarianoGNU](https://github.com/MarianoGNU)) and enhanced by [Damar Indra](https://github.com/damarindra). This new implementation is based on [Tiled Editor](https://www.mapeditor.org)'s Terrains and is fully compatible with previous TileSets. It has built-in collision, occlusion and navigation polygon editors, together with the possibility to extend the resource using a tool script to have control over what subtiles do.
+
+
+
+
+## Improved flat style box
+
+The vector-based style box (StyleBoxFlat) has been greatly improved by Timo ([toger5](https://github.com/toger5)), adding support for rounded corners. Customize your game UI components with slick vector looks and soft drop shadows (which are also resolution-independent), without having to create any image!
+
+
+
+
+## Font oversampling
+
+To continue on the resolution-independent trend, Godot also now supports font oversampling. This makes sure your fonts always use the native resolution even if your UI is scaled.
+
+
+
+
+## Custom hardware cursor
+
+
+
+Thanks to Xavier Sellier ([xsellier](https://github.com/xsellier)) and Guilherme Felipe de C. G. da Silva ([guilhermefelipecgs](https://github.com/guilhermefelipecgs)), it is finally possible to change the hardware mouse cursor on desktop platforms. Set any image as cursor and it will work, with reduced latency compared to a software cursor.
+
+
+## Greatly improved 3D editor viewport
+
+
+
+* Support for free look and fly mode, thanks to Marc Gilleron ([Zylann](https://github.com/Zylann))
+* Improved 3D manipulation gizmos (multiple-axis editing and scale), thanks to the work of Przemysław Gołąb ([n-pigeon](https://github.com/n-pigeon))
+* Interpolation on motion and view change
+* Improved selection support on instanced scenes
+* Exposed grid snap and local axis transform in toolbar
+* Information display on rendered geometry
+* Half-resolution viewport rendering for better performance on HiDPI displays
+
+
+## Console support
+
+While, due to legal and practical reasons, we can't provide ports to consoles (save for XBox One via UWP), this does not mean that separate private companies can't. Godot's open license allows any company to port the engine to consoles and offer it as a product.
+
+This is the case of [Lone Wolf Technology](http://www.lonewolftechnology.com/), a company created by original Godot co-author Ariel Manzur, who offers to get your game running on any console. A Nintendo Switch port has been recently completed, allowing Godot to run on their latest console.
+
+
+
+We have a new section listing the providers in the [official documentation](http://docs.godotengine.org/en/latest/tutorials/platform/consoles.html).
+
+
+## And hundreds of other improvements
+
+This post is already too long and it's impossible to list all the hundreds of features and bug fixes that have been implemented by Godot contributors over the last year and a half.
+
+Contributors are working on a [human-readable changelog](https://gist.github.com/Calinou/15b7b48abc0c3a22fbb2993b39a0ae99) which should give you some more details. You can also browse and filter the list of [GitHub pull requests](https://github.com/godotengine/godot/issues?q=is%3Apr+milestone%3A3.0+-label%3Aarchived) of almost 3000 contributions (and the corresponding list for [GitHub issues](https://github.com/godotengine/godot/issues?q=is%3Aissue+milestone%3A3.0+-label%3Aarchived)), as well as review the raw Git changelogs since Godot 2.1 (sorted [chronogically](https://downloads.tuxfamily.org/godotengine/3.0/Godot_v3.0-stable_changelog_chrono.txt) or [by author](https://downloads.tuxfamily.org/godotengine/3.0/Godot_v3.0-stable_changelog_authors.txt)).
+
+# Future
+
+Godot 3.0 lays the foundation of a fantastic engine. Over the course of the next months, the plan is to keep adding the missing features and fix known issues, as well as further improving documentation and tutorials.
+
+Godot 3.1 will bring a new and more powerful animation tree, modern occlusion culling, improved rendering and a GLES 2.0 backend (for mobile and low-end desktop compatibility), as well as many other pending features.
+
+# Help make Godot better!
+
+You can greatly help us improve Godot, as well as make it faster and better. Besides contributing code (if you are a programmer), you can help us a lot by [becoming our patron](https://www.patreon.com/godotengine). Additionally, spreading the word will always benefit us, as most game developers still have never tried (or even heard of) Godot. Finally, the best contribution might be to use Godot to develop and publish awesome games!
+
+See our [community documentation](http://docs.godotengine.org/en/latest/community/contributing/ways_to_contribute.html) for a description of all the ways you can contribute to Godot and how.
+
+Have fun with this long-awaited release!
+
+*Trivia:* Today's also the anniversary date of the writing of our namesake play by Samuel Beckett, [*Waiting for Godot*](https://en.wikipedia.org/wiki/Waiting_for_Godot), whose French text was completed on 29 January 1949.
+
+*The illustration picture is courtesy of James Redmond ([@fracteed](https://twitter.com/fracteed)) who helped a lot during the development of 3.0 by stress-testing the engine with great PBR assets and reporting the issues he found doing so.*
\ No newline at end of file
diff --git a/collections/_article/godot-3-1-released.md b/collections/_article/godot-3-1-released.md
new file mode 100644
index 0000000000..4baa6793d1
--- /dev/null
+++ b/collections/_article/godot-3-1-released.md
@@ -0,0 +1,341 @@
+---
+title: "Godot 3.1 is out, improving usability and features"
+excerpt: "After a bit more than one year of work, the Godot developers and contributors are delighted to get their new release out the door, Godot 3.1!
+It brings much-requested improvements to usability and many important features. Godot 3.1 is more mature and easy to use, and it does away with many hurdles introduced in the previous versions."
+categories: ["release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5c3/f7a/c66/5c3f7ac66e008154491407.png
+date: 2019-03-13 16:25:30
+---
+
+After [a bit more than one year](/article/godot-3-0-released) of work, the Godot developers and contributors are delighted to get their new release out the door, **Godot 3.1**! It brings much-requested improvements to usability and many important features.
+
+Godot 3.0 was a massive release, which required large rewrites of the engine codebase and breaking backwards compatibility significantly. This new version builds upon it by improving it and finishing the pending work.
+
+As a result, Godot 3.1 feels more mature and easy to use, and it does away with many hurdles introduced in the previous versions.
+
+[**Download Godot 3.1**](/download) now and keep on reading about the great features added in this version.
+
+
+## Patreon
+
+As always, please remember that we are a not-for-profit organization dedicated to providing the world with the best possible free and open source game technology. Donations have played a vital role in enabling us to develop Godot at this sustained pace. Thanks to all of you patrons from the bottom of our hearts!
+
+If you use and enjoy Godot, plan to use it, or want support the cause of having a mature, high quality free and open source game engine, then please [consider becoming our patron](https://patreon.com/godotengine). If you represent a company and want to let our vast community know that you support our cause, then please [consider becoming our sponsor](https://godotengine.org/donate). Additional funding will enable us to hire more core developers to work full-time on the engine, and thus further improve its development pace and stability.
+
+
+## Documentation
+
+While this article focuses mostly on the new features of the engine, it's worth mentioning that [Godot's documentation](https://docs.godotengine.org) has seen a lot of work from dozens of contributors. A detailed changelog is being worked on, you can see the current draft [on GitHub](https://github.com/godotengine/godot-docs/issues/2199#issuecomment-467710369).
+
+
+## New features
+
+
+*Release trailer by Nathan Lovato ([GDquest](https://github.com/GDquest)) showcasing the outstanding new features of Godot 3.1.*
+
+Here's an index of the outstanding features described in this post:
+
+- [OpenGL ES 2.0 renderer](#gles2)
+- [Optional typing in GDScript](#gdscript-typing)
+- [Revamped inspector](#inspector)
+- [Revamped 2D editor](#2d-editor)
+- [New TileSet editor](#tileset)
+- [Revamped filesystem dock](#filesystem)
+- [KinematicBody2D (and 3D) improvements](#kinematicbody)
+- [Revamped animation editor](#animation-editor)
+- [Revamped AnimationTree](#animationtree)
+- [New axis handling system](#axis-handling)
+- [Visual shader editor](#visual-shader)
+- [2D skeletons](#2d-skeletons)
+- [2D meshes](#2d-meshes)
+- [Improved 3D editor](#3d-editor)
+- [3D softbody support](#softbody)
+- [Ragdolls and Skeleton IK](#ragdoll)
+- [Constructive Solid Geometry (CSG)](#csg)
+- [OpenSimplex and NoiseTexture](#opensimplex)
+- [CPU-based particle system](#cpu-particles)
+- [Greatly improved C# support](#csharp)
+- [Networking improvements](#networking)
+- [Custom classes registration](#class-name)
+- [MIDI and microphone input](#audio-input)
+- [More VCS friendliness](#vcs-friendliness)
+- [Many more changes](#changelog)
+
+
+
+### OpenGL ES 2.0 renderer
+
+
+
+The Godot 2.x branch used OpenGL ES 2.0 / OpenGL 2.1 (*GLES2*) as its rendering API. This worked well, but had many limitations preventing us to use more modern rendering techniques.
+
+In Godot 3.0, all rendering code was rewritten to use the more modern OpenGL ES 3.0 / OpenGL 3.3 specifications (*GLES3*) and the OpenGL ES 2.0 renderer was removed. This seemed like a great idea at the beginning, but ended up giving us many problems, such as:
+
+* Bad performance on old mobile/desktop hardware which wasn't designed for the more modern rendering techniques being used.
+* Incompatibility with older mobile devices which do not support OpenGL ES 3.0.
+* Incompatibilities in the HTML5 platform, as not all browsers support WebGL 2.0 (the equivalent specification for OpenGL ES 3.0).
+* Lots and lots of driver bugs in mobile and desktop. On desktop, it seems that modern OpenGL is not well supported by various driver vendors, and regressions keep coming up in new drivers on macOS and Windows. On mobile, as OpenGL ES 3.0 is comparatively new, there is a range of many years where devices with very buggy drivers came out. Even modern flagship devices still ship with crippling driver bugs.
+
+Due to this, we were forced to bring back the OpenGL ES 2.0 / OpenGL 2.1 renderer. This work was done by [karroffel](https://github.com/karroffel) and I ([reduz](https://github.com/reduz)).
+
+On the 2D side, this new renderer is feature complete. On the 3D side, a simpler approach to rendering was done that is intended to be more limited, but more compatible. It has the following features and limitations:
+
+* Rendering is done entirely on sRGB color space (the GLES3 renderer uses linear color space). This is much more efficient and compatible, but it means that HDR will not be supported. Lighting looks a bit different too.
+* Some advanced PBR features are not supported, such as subsurface scattering. Unsupported features will not be visible when editing materials.
+* Some shader features will not work and throw an error when used (which is to be expected when using an older OpenGL version).
+* Some post processing effects are not present either. Unsupported features will not be visible when editing environments.
+* As this back-end is intended to run on the lowest end hardware possible, shaders need to be kept very small. As such all lighting is done by using a forward multi-pass approach.
+* GIProbes of course don't work. Use baked lightmaps instead.
+* GPU-based Particles will not work as there is no transform feedback support. Use the new CPUParticles node instead (more on this later).
+
+From the points above, it must be clear that OpenGL ES 2.0 is not a fallback but a different platform you should target your game for. It looks different and has different limitations. If your game aims for absolute maximum compatibility, use this backend instead of the GLES3 one. If you aim for modern features at the cost of compatibility, don't use it.
+
+
+
+### Optional typing in GDScript
+
+
+
+This has been one of the most requested Godot features from day one. GDScript allows to write code in a quick way within a controlled environment. As any dynamically typed language, it allows churning out large amount of code at a high speed.
+
+However, dynamically typed languages have some limitations that can be a hassle:
+
+* Code completion is not always possible.
+* Performance is constrained to the interpreter.
+* Does not always catch errors during compile (or write) time.
+* Code can be less readable and difficult to refactor.
+
+Our contributor George Marques ([vnen](https://github.com/vnen)) did a fantastic job [implementing optional typing](/article/optional-typing-gdscript) in GDScript to tackle these problems. For Godot 3.1, optional typing is a parser-only feature. The plan is, afterwards, to include typed instructions in the state machine to greatly optimize performance.
+
+One nice implementation detail is that the code editor will now show which lines are safe with a slight highlight of the line number. This will be vital in the future to optimize small pieces of code which may require more performance.
+
+This work also enabled GDScript warnings, which will now be raised by the parser. You can toggle which warnings you want to see in the Project Settings.
+
+
+
+### Revamped inspector
+
+
+
+The Godot inspector has been [rewritten from scratch](/article/godot-gets-new-inspector). It is now a lot more comfortable to use. Among some of the nice new features are proper vector field editing, sub-inspectors for resource editing (no longer needed to switch to a separate one when editing resources), better custom visual editors for many types of objects, very comfortable to use spin-slider controls, better array and dictionary editing and many many more features.
+
+
+
+### Revamped 2D editor
+
+
+
+The Godot 2D editor has seen a serious rewrite by Gilles Roudiere ([Groud](https://github.com/groud)). There is a much better use of gizmos, as well as showing small crosses where generic nodes exist. In particular, it solves a major pain point for new Godot users by no longer offering scaling handles for collision shapes, but letting you directly change their size instead.
+
+
+
+### New TileSet editor
+
+
+
+The tileset creation workflow in Godot had always been a major pain point for users due to its tediousness. Mariano Suligoy ([MarianoGnu](https://github.com/MarianoGnu)) wrote a whole new TileSet editor with many features familiar from other tileset creation software, and a much better support for the autotile feature added in 3.0.
+
+
+
+### Revamped filesystem dock
+
+
+
+Another fine piece of work by contributor Gilles Roudiere ([Groud](https://github.com/groud)) and sponsored by [Gamblify](https://www.gamblify.com). The [new filesystem dock](/article/godot-gets-new-filesystem-dock-3-1) has been rewritten and now supports a single tree + files view by default, with thumbnails for the files. It makes it easy to navigate projects and understand where everything is.
+
+
+
+### KinematicBody2D (and 3D) improvements
+
+
+
+Kinematic bodies are among Godot's most useful nodes. They allow creating very game-like character motion with little effort. For Godot 3.1 they have been [considerably improved](/article/godot-31-will-get-many-improvements-kinematicbody):
+
+* Support for snapping the body to the floor.
+* Support for RayCast shapes in kinematic bodies.
+* Support for synchronizing kinematic movement to physics, avoiding a one-frame delay.
+
+
+
+### Revamped animation editor
+
+
+
+The animation editor has also been [completely rewritten](/article/godot-gets-brand-new-animation-editor-cinematic-support) to ensure a much better experience. Some of the more outstanding features are:
+
+* Friendlier layout, with less clutter.
+* Key previews for most types of keys allow seeing the key values within the track.
+* Ability to group tracks by node.
+* Key editing in inspector.
+* Copying and pasting tracks.
+* Capture tracks, which interpolate from existing values.
+* Ability to create custom track editor plugins.
+* New track type: Bezier.
+* New track type: Animation (play animations of sub-animation player, allowing complex cinematics).
+* New track type: Audio (play audio on StreamPlayers, including 2D and 3D).
+
+
+
+### Revamped AnimationTree
+
+
+
+The old `AnimationTreePlayer` has been deprecated in favor of the [new `AnimationTree` node](/article/godot-gets-new-animation-tree-state-machine). Besides improving the blend tree, it also supports blend spaces (1D and 2D), a state machine, and a modular approach that allows you to combine all modes hierarchially to better reflect your gameplay.
+
+Support for *root motion* as well as the ability to write your own custom blend nodes has also been added.
+
+
+
+### New axis handling system
+
+After several months of deliberation and prototypes, we settled on a really good approach to [axis mapping](/article/handling-axis-godot), courtesy of Gilles Roudiere ([Groud](https://github.com/groud)). Instead of going the way other game engines do it with axis definitions, Godot 3.1 uses the novel concept of "action strength".
+
+While it may take a bit of time to sink in, this approach allows using actions for all use cases and it makes it very easy to create in-game customizable mappings and customization screens.
+
+
+
+### Visual shader editor
+
+
+
+The visual shader editor has made a comeback. This was a pending feature to re-implement in Godot 3.0, but it couldn't be done in time back then. The new version has a [lot of niceties](/article/visual-shader-editor-back), such as PBR outputs, port previews, and easier to use mapping to inputs.
+
+
+
+### 2D skeletons
+
+
+
+It is now possible to [create 2D skeletons](https://docs.godotengine.org/en/3.1/tutorials/animation/2d_skeletons.html) with the new `Skeleton2D` and `Bone2D` nodes. Additionally `Polygon2D` vertices can be assigned bones and weight painted. Adding internal vertices for better deformation is also supported.
+
+
+
+### 2D meshes
+
+
+
+Godot now [supports 2D meshes](https://docs.godotengine.org/en/3.1/tutorials/2d/2d_meshes.html), which can be used from code or converted from sprites to avoid drawing large transparent areas.
+
+
+
+### Improved 3D editor
+
+
+
+Just like the 2D editor, the 3D editor has also been considerably improved. Joan Fons Sanchez ([JFons](https://github.com/JFonS)) did a magnificent job by improving how selection works and entirely rewriting the gizmo system.
+
+
+
+### 3D softbody support
+
+
+
+Andrea Catania ([Odino](https://github.com/AndreaCatania)), who integrated Bullet to Godot 3.0, has added support for [soft bodies](/article/soft-body) in Godot 3.1. This is a very easy to use implementation supporting many nice features.
+
+
+
+### Ragdolls and Skeleton IK
+
+
+
+Also by Andrea Catania ([Odino](https://github.com/AndreaCatania)), there is a new [PhysicalBone](/article/godot-ragdoll-system) node used for easy ragdoll setups, as well as a [SkeletonIK system](/article/skeleton-inverse-kinematic) which allows creating simple Inverse Kinematics (IK) chains for existing skeletons and toggling bones from regular to IK mode.
+
+
+
+### Constructive Solid Geometry (CSG)
+
+
+
+[CSG tools have been added](/article/godot-gets-csg-support) for fast level prototyping, allowing generic primitives and custom meshes to be combined via boolean operations to generate more complex shapes. They can also become colliders to test together with physics.
+
+
+
+### OpenSimplex and NoiseTexture
+
+
+
+Support [has been added for OpenSimplex](/article/simplex-noise-lands-godot-31) (another very requested feature from users) by Joan Fons Sanchez ([JFonS](https://github.com/JFonS)). Additionally, a noise texture can now be used as a resource, which generates noise on the fly.
+
+
+
+### CPU-based particle system
+
+Godot 3.0 integrated a GPU-based particle system, which allows emitting millions of particles at little performance cost. As OpenGL ES 2.0 support was added, this feature could not be supported there, so we added alternative `CPUParticles` and `CPUParticles2D` nodes.
+
+These nodes do particle processing using the CPU (and draw using the MultiMesh API). They are quite efficient for lesser amounts of particles and work on all hardware. Additionally, these nodes open the window for adding features such as physics interaction, sub-emitters or manual emission... which are not possible using the GPU.
+
+
+
+### Greatly improved C# support
+
+Ignacio Etcheverry ([neikeq](https://github.com)) and other contributors have done a tremendous work since Godot 3.0 to improve the C# integration in Godot. As of 3.1, C# projects can be exported to Linux, macOS and Windows. Support for Android, iOS and HTML5 will come further down the road, with Android being the current priority.
+
+Both Ignacio and Hein-Pieter van Braam ([hpvb](https://github.com/hpvb)) did great work to improve our Mono builds and remove some of its previous hurdles, such as being tied to a specific Mono version. The relevant bits from the Mono SDK are now included directly with the editor binary, and you only need to install MSBuild to build and ship C# games.
+
+
+
+### Networking improvements
+
+Fabio Alessandrelli ([Fales](https://github.com/Faless)) did a number of improvements to Godot's low-level networking APIs and [high-level multiplayer API](https://docs.godotengine.org/en/3.1/tutorials/networking/high_level_multiplayer.html). He also implemented support for WebSockets, and Max Hilbrunner ([mhilbrunner](github.com/mhilbrunner)) helped him with various fixes and adding support for UPnP.
+
+
+
+### Custom classes registration
+
+Will Nations ([willnationsdev](https://github.com/willnationsdev/)) implemented a way to register GDScript classes (and thus scenes/nodes) as custom classes that can be added directly from the "Add Node" dialog as if they were built-in nodes. This is done with the `class_name` keyword, which also allows defining a custom icon for the node.
+
+
+
+### MIDI and microphone input
+
+Marcelo Fernandez ([marcelofg55](http://github.com/marcelofg55/)) added support for using MIDI devices as input devices. Together with [SaracenOne](https://github.com/SaracenOne), they also added support for capture microphone audio.
+
+
+
+### More VCS friendliness
+
+Godot is already unrivalled with regards to being friendly to version control systems (VCS). The new 3.1 version includes some very requested enhancements such as:
+
+* Folded properties are no longer saved in scenes, avoiding unnecesary history pollution.
+* Non-modified properties are no longer saved. This worked up to some extent before with properties that were not zero but it now applies universally. This reduces text files considerably and makes history even more readable.
+
+
+
+### Many more changes
+
+The above are only the most outstanding features. Hundreds of other changes have been made since Godot 3.0. You can read about them in the [release changelog](https://github.com/godotengine/godot/blob/3.1-stable/CHANGELOG.md).
+
+A heartfelt **Thank You** to all the contributors who worked on Godot 3.1!
+
+
+## Compatibility with 3.0
+
+Godot 3.1 strives to maintain compatibility with Godot 3.0.x, so your projects should be easy to port over to the new version. There have been *some* compatibility changes though, especially in GDScript due to the new optional typing changes, but they should be easy to adapt to in a couple of hours at most. Refer to the [changelog](https://github.com/godotengine/godot/blob/3.1-stable/CHANGELOG.md) for details on what changed exactly.
+
+
+## Future
+
+After so much work on improving usability and compatibility, the main focus will move into further improving rendering. The current GLES3 renderer will be deprecated in favor of a Vulkan-based one and 3D rendering will once again become the priority. The goal is to release Godot 4.0 one year from now (or less, I hope) with a top notch modern renderer capable of everything the other big engines can do.
+
+In parallel, other contributors will continue working on other areas and usability will keep improving. We plan to release Godot 3.2 in the second half of 2019 with those improvements (the Vulkan work towards Godot 4.0 will be done in a separate feature branch). Some of the areas we want to focus on are:
+
+* Adding typed instructions to GDScript to improve performance of typed code.
+* Adding FBX support, either via Assimp or OpenFBX (the official Autodesk library cannot be used due to their restrictive licensing terms).
+* Improve the Android and iOS export workflow, in particular adding a simpler way to integrate mobile SDKs such as AdMob, without having to recompile the whole engine.
+* Getting the Godot editor to run on a web browser (ideal for public teaching institutions).
+* Improving networking to better support dedicated servers and modern protocols.
+
+And many, many more features. Of course, always keeping priority on stability and usability.
+
+Finally, we will also have patch releases for Godot 3.1.x to fix some more bugs and improve usability in a backward compatible way. In particular, some of the new features in 3.1 might still have issues preventing their use in some scenarios. We know for example of yet-unresolved OpenGL ES 2.0 issues on some lower end mobile devices, which will be addressed soon in 3.1.x maintenance releases.
+
+
+## Help us reach our next funding goal and speed up Godot development!
+
+We are looking to get enough funding to hire a dedicated generalist. This will significantly reduce the time between adding features and new releases, which is currently our biggest bottleneck. Having a dedicated generalist will help us work constantly on fixing issues and improving usability even while new features are being added, reducing the time required to wrap up a new release.
+
+Again, if you use and enjoy Godot, plan to use it, or want support the cause of having a mature, high quality free and open source game engine, then please [consider becoming our patron](https://patreon.com/godotengine). If you represent a company and want to let our vast community that you support our cause, then please [consider becoming our sponsor](https://godotengine.org/donate).
+
+
+And now, have fun with Godot 3.1's new features!
\ No newline at end of file
diff --git a/collections/_article/godot-3-2-adds-support-convex-decomposition.md b/collections/_article/godot-3-2-adds-support-convex-decomposition.md
new file mode 100644
index 0000000000..d575c80cdf
--- /dev/null
+++ b/collections/_article/godot-3-2-adds-support-convex-decomposition.md
@@ -0,0 +1,57 @@
+---
+title: "Godot 3.2 adds support for convex decomposition"
+excerpt: "Another long awaited feature makes it for Godot 3.2. This makes the workflow for 3D games considerably easier, by allowing conversion of concave meshes of any form into a set of convex shapes."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5ca/e78/fa3/5cae78fa3280b961363999.png
+date: 2019-04-10 00:00:00
+---
+
+Another long awaited feature makes it for Godot 3.2. This makes the workflow for 3D games considerably easier, by allowing conversion of concave meshes of any form into a set of convex shapes.
+
+## The *convex* problem
+
+To explain as simple as possible, this feature does not add anything new, but *improves* the existing workflow.
+
+Triangle mesh shapes ([ConcavePolygonShape](https://docs.godotengine.org/ko/latest/classes/class_concavepolygonshape.html)) work very well as static colliders, but they are useless for rigid bodies or areas, as they have no internal volume. To work around this limitation, *convex* shapes must be used.
+
+The obvious problem with them is that they only really work well for *convex geometry*. When geometry is not convex, the usual workflow is to create more than one shape to cover the desired concave area. Doing this is tedious and the results are often not great (specially for complex geometry).
+
+Here is an example of adding collision shapes to Suzanne by using standard shapes (two capsules, a sphere and a box):
+
+
+
+
+
+It works and it will collide more or less OK, but it's tedious to build and far from perfect.
+
+## Convex Decomposition
+
+So, what if this process could be automatic? Imagine that, with the press of a button, any mesh is divided into N number of convex shapes that cover the surface of the geometry as best as possible.
+
+This is pretty much what *convex decomposition* is. It's now available via the MeshInstance menu:
+
+
+
+Using this option makes the most sense when the edited *MeshInstance* is child of a *RigidBody*, *KinematicBody* or *Area* (as we mentioned before, for static bodies, triangle mesh works fine and is the recommended workflow). For anything dynamic, based on actual geometry, *convex decomposition* is the way to go.
+
+This option existed before, but it only generated a single convex shape based on QuickHull. This was imprecise and inefficient. The new version uses de [VHACD](https://github.com/kmammou/v-hacd) algorithm, and generates very precise (and simplified) convex geometry:
+
+
+
+
+Thanks to this, it's possible to effortlessly add collision to any concave shape and increase the physics realism of games:
+
+
+
+## Generating convex shapes on import
+
+When importing data from 3D content creation tools such as Blender or Maya, Godot already supports generating collision objects or rigid bodies from the scene via the [special hints](https://docs.godotengine.org/en/3.1/getting_started/workflow/assets/importing_scenes.html#import-hints) added to the names of objects.
+
+From now on, existing hints (such as **-convcol**,**-convcolonly** and **-rigid**) will generate convex shapes via decomposition (instead of the old QuickHull-based approach). This will finally allow creating rigid bodies directly in the 3D scene.
+
+## Future
+
+Please give us feedback and test well, to ensure this feature works as best as possible in upcoming Godot 3.2!
+
+And as always, if you are not yet, consider becoming [our patron](https://www.patreon.com/godotengine). This ensures that Godot development remains free from the control of any company and we can keep working like now, with the freedom to listen to everyone equally.
\ No newline at end of file
diff --git a/collections/_article/godot-3-2-arvr-update.md b/collections/_article/godot-3-2-arvr-update.md
new file mode 100644
index 0000000000..c79ae8e8da
--- /dev/null
+++ b/collections/_article/godot-3-2-arvr-update.md
@@ -0,0 +1,47 @@
+---
+title: "Godot 3.2 ARVR update"
+excerpt: "Godot 3.2 will see ARKit and Oculus Go/Quest support coming to Godot. ARCore and Valve Index support is not far behind."
+categories: ["progress-report"]
+author: Bastiaan Olij
+image: /storage/app/uploads/public/5d2/713/c8f/5d2713c8f26e6377170736.png
+date: 2019-07-11 11:30:00
+---
+
+The past few weeks have been very exciting on the ARVR front. It looks like Godot 3.2 will have at least two major additions.
+
+### ARKit
+
+Work on ARKit had been going on for well over 1.5 years. Most of the functionality was already working in Godot 3.0 and in use by several developers. Earlier in the year we finally made a push to tie off a number of loose ends and the functionality was merged into the `master` branch.
+Godot currently supports the ARKit 1.0 specification and some of the functionality introduced with ARKit 2.0.
+Work will continue on expanding the capability of this logic.
+
+
+
+
+### Gear VR/Oculus Go/Quest
+
+I suspect many will have been waiting for this news. Yes Gear VR/Oculus Go/Oculus Quest support is going to be part of the Godot 3.2 release. All the enhancements in the core have already been merged. Support for this, as with other headsets, comes in the form of a plugin that will eventually be made available through the asset library. You can compile the latest version of the driver here: [GodotVR Oculus mobile plugin](https://github.com/GodotVR/godot_oculus_mobile).
+
+Performance is still being worked on and a full-featured game will likely require the new Vulkan renderer to get the most out of the platform but games with less demanding graphics are definitely possible already.
+
+Godot user Christoph made a cool video of the plugin in action:
+
– Alyosha Stalin, Chief Business Development Officer, Kefir
+
+Like all grants, sponsoring and [donations](/donate) given to the not-for-profit Godot project, these funds are managed by our legal and fiscal sponsor [Software Freedom Conservancy](https://sfconservancy.org), and will be used to accelerate development of our free and open source game engine.
+
+Such funding enables us to hire more contributors to work on the areas which need it most, as well as renew contracts for the currently hired contractors – always with the guarantee that all the work done by contractors is under Godot's MIT license and beneficial to the community as a whole.
+
+We’re thankful to all users and companies in the Godot community who take part in making this open source game engine, be it with code, documentation, user support, bug reports, or funding.
\ No newline at end of file
diff --git a/collections/_article/godot-engine-receiving-new-grant-meta-reality-labs.md b/collections/_article/godot-engine-receiving-new-grant-meta-reality-labs.md
new file mode 100644
index 0000000000..c28787927b
--- /dev/null
+++ b/collections/_article/godot-engine-receiving-new-grant-meta-reality-labs.md
@@ -0,0 +1,56 @@
+---
+title: "Godot Engine receiving a new grant from Meta's Reality Labs"
+excerpt: "We are delighted to announce that the Godot Engine project is receiving a new grant from Meta's Reality Labs to support our work on the XR capabilities of the engine."
+categories: ["news"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/61c/334/684/61c3346840ff8863294393.png
+date: 2021-12-22 16:00:35
+---
+
+We are delighted to announce that the Godot Engine project is receiving a new grant from [Meta's Reality Labs](https://about.facebook.com/realitylabs/) to support our work on the XR capabilities of the engine.
+
+This renews Reality Labs' engagement to support the free and open source Godot game engine, [after a first grant in December 2020](/article/godot-engine-receiving-support-funded-facebook-reality-labs). This grant will enable us to continue our efforts in providing a high quality, free and open source all-in-one solution for AR and VR applications.
+
+We designed an XR work package for 2022 which is funded thanks to this generous grant. Like all Godot [donations and corporate sponsoring](https://godotengine.org/donate), this grant is administered by our legal and fiscal sponsor [Software Freedom Conservancy](https://sfconservancy.org/), a not-for-profit charity that promotes software freedom.
+
+## Looking back at 2021
+
+The previous grant allowed Bastiaan Olij to dedicate his time working on XR support in Godot.
+
+During the year he worked on a new mobile version of the Vulkan renderer, added stereoscopic rendering support through Multiview and rewrote a large part of the core of the XR system in Godot 4 ([devblog](/article/godot-xr-progress-update-june-2021)).
+
+During the year we also introduced a new implementation of GDNative called GDExtension. As Godot's XR support heavily relies on this plugin architecture, this became a big focus of development ([devblog](/article/introducing-gd-extensions)).
+
+Most importantly, changing conditions in the XR market led us to bring development of the OpenXR capabilities of Godot forward, adding full OpenGL-based OpenXR support to Godot 3 ([devblog](/article/godot-openxr-support)).
+
+With the [OpenXR plugin 1.1.0](https://github.com/GodotVR/godot_openxr/releases/tag/1.1.0) release Godot 3 now supports the Meta Quest 1 and 2, Meta Desktop XR (including Link) on Windows, and SteamVR on both Windows and Linux. The upcoming OpenXR plugin 1.1.1 release sees added support for the much anticipated passthrough mode on the Quest alongside various fixes and quality of life improvements.
+
+A [recent informal poll](https://twitter.com/reduzio/status/1450967662620778501) done by lead developer Juan Linietsky showed that over 5% of those responding are already working on XR projects with Godot. According to this poll over a third of the Godot community is either planning to use, or are already using Godot for XR projects.
+
+In recent weeks we've seen an uptick in new faces joining the #xr channel on [Godot's Discord](https://discord.gg/4JBkykG) as people are discovering Godot's XR capabilities.
+
+## Looking forward to 2022
+
+The new grant from Meta's Reality Labs allows us to keep our commitment going forward to making Godot a great choice as an XR platform.
+
+The work package we put together for the coming year divides the work into two major sections.
+
+About half of the funds are dedicated to continue the work on XR support itself. This includes:
+- Working on several areas identified during the previous year as requiring improvements.
+- Working on making the OpenXR functionality support more devices.
+- Implementing various new features announced in recent months such as those announced by Meta during their keynotes session.
+
+We're even more excited to announce what we're planning to do with the other half!
+As is well known within the Godot community, the Godot editor in essence is a Godot game in itself. We are planning on building upon this functionality by bringing the Godot editing experience into XR. There are two main objectives here:
+1) Working on XR games means constantly switching between desktop and wearing a headset, this will alleviate part of that frustration.
+2) The improved spatial awareness that XR offers makes authoring scenes and levels inside of XR an appealing choice, we believe that even level designers who are working on non XR 3D games may find this workflow productive.
+
+Finally, just like Godot is now able to run the editor in a browser, we are aiming to have this functionality run on stand alone devices such as the Meta Quest.
+
+All this work will of course be fully free and open source like the rest of Godot Engine, and will be made available in future Godot releases, either built-in or as first-party plugins.
+
+## Supporting Godot development
+
+Godot is a fully not-for-profit open source game engine, and all development happens thanks to the dedication of hundreds of contributors, including a handful of paid developers.
+These paid developers could be hired thanks to user donations (Patreon) and corporate sponsoring, as well as grants such as the one given by Meta's Reality Labs.
+We're thankful to all users and companies in the Godot community who take part in making this game engine, be it with code, documentation, user support, bug reports, or funding.
\ No newline at end of file
diff --git a/collections/_article/godot-engine-receiving-support-funded-facebook-reality-labs.md b/collections/_article/godot-engine-receiving-support-funded-facebook-reality-labs.md
new file mode 100644
index 0000000000..f04bac5d54
--- /dev/null
+++ b/collections/_article/godot-engine-receiving-support-funded-facebook-reality-labs.md
@@ -0,0 +1,49 @@
+---
+title: "Godot Engine receiving support funded by Facebook Reality Labs"
+excerpt: "It is with great excitement that we announce that the Godot Engine project is receiving support funded by a grant from Facebook Reality Labs to further the development of Virtual Reality (VR) features within Godot."
+categories: ["news"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5fd/3d8/93c/5fd3d893cc1bb743932204.png
+date: 2020-12-11 20:36:52
+---
+
+It is with great excitement that we announce that the **[Godot Engine](https://godotengine.org) project is receiving support funded by a grant from [Facebook Reality Labs](https://about.fb.com/realitylabs/)** to further the development of Virtual Reality (VR) features within Godot.
+
+Godot is a not-for-profit free and open source game engine which aims at empowering all users in their 2D and 3D game development projects. This grant will enable us to accelerate our efforts in providing first-class support for VR technologies. This includes cross-platform OpenXR support, an extended input action system for VR, Vulkan rendering and optimizations on mobile, and more!
+
+We designed a work package for VR and mobile rendering which we are now able to fund thanks to this generous grant. Like all Godot [donations and corporate sponsoring](https://godotengine.org/donate), this grant is administered by our legal and fiscal sponsor [Software Freedom Conservancy](https://sfconservancy.org/), a not-for-profit charity that promotes software freedom.
+
+## VR support in Godot
+
+Godot has had initial VR support since [version 3.0 in 2018](https://godotengine.org/article/godot-3-0-released#vr), thanks to the dedication of our contributor [Bastiaan Olij](https://github.com/BastiaanOlij) who implemented all AR and VR features in the engine. As of Godot 3.2, many VR devices are supported through the official [OpenVR](https://godotengine.org/asset-library/asset/150), [Oculus VR](https://godotengine.org/asset-library/asset/164) and [Oculus Mobile VR](https://godotengine.org/asset-library/asset/500) implementations. A vibrant community of VR developers is now actively working with Godot on VR titles for most platforms.
+
+## VR work package for 2021
+
+Bastiaan and the growing Godot VR community have created a great ecosystem, and this grant will enable us to go further and faster. We will now be able to **hire Bastiaan Olij full-time** starting in February 2021!
+
+Bastiaan is a senior generalist developer who has been one of our top contributors since 2016, working primarily on AR and VR support, but also on [GDNative](https://docs.godotengine.org/en/latest/tutorials/scripting/gdnative/what_is_gdnative.html), mobile platform ports (Android and iOS) as well as rendering features. Having him available full-time for Godot work will be greatly beneficial to the project and to the contributors he will be able to help on the way.
+
+Bastiaan’s main tasks in 2021 will be related to VR and rendering:
+
+- **OpenXR implementation for desktop and mobile.** OpenXR is the new open standard for XR (Extended Reality, encompasses Augmented Reality (AR) and Virtual Reality (VR)). The OpenXR specification reached version 1.0 in 2019, and now has [**multiple conformant implementations by major XR players**](https://www.khronos.org/news/press/multiple-conformant-openxr-implementations-ship-bringing-to-life-the-dream-of-portable-xr-applications) (Oculus, Microsoft, Valve, and more!). As an open source, cross-platform and vendor neutral game engine, we’re thrilled by the support that IHVs are giving to OpenXR and want to rely on it as our main interface.
+- **Extending Godot’s input action system to support VR specific actions** across all devices based on their respective capabilities (hand tracking, controller sensors, buttons).
+- Adapt the XR plugin system to the new Vulkan renderer design. While Godot 3.2’s XR support is functional, the upcoming Godot 4.0 release changes all the rendering backend and needs work to make XR functional again.
+- Implement **Vulkan rendering on Android**. This is necessary for mobile VR devices such as Oculus Quest 2, and will benefit all Godot users who want to make Android games.
+- Various rendering optimizations:
+
+ * Stereoscopic rendering enhancements, providing details about the eye for which an image is rendered.
+ * Support for compositor layers, which make it possible to render e.g. UI as an overlay without going through the eye buffer with lens distortion, allowing for sharper and more stable UI.
+ * Support for variable rate shading in Vulkan, providing performance gains with techniques such as foveated rendering.
+ * Rendering optimizations for mobile, implementing alternative techniques to the ones suitable on desktop platforms for better mobile performance.
+
+As you can see, there’s a lot of work ahead for Bastiaan, and it will benefit both XR and traditional Godot games.
+
+All this work will of course be fully **free and open source** like the rest of Godot Engine, and will be made available in Godot 4.0, either built-in or as first-party plugins.
+
+## Supporting Godot development
+
+Godot is a fully not-for-profit open source game engine, and all development happens thanks to the dedication of hundreds of contributors, including a handful of paid developers.
+
+These paid developers could be hired thanks to user donations ([Patreon](https://patreon.com/godotengine)) and corporate sponsoring, as well as grants such as the one given by Facebook Reality Labs.
+
+We’re thankful to all users and companies in the Godot community who take part in making this game engine, be it with code, documentation, user support, bug reports, or funding.
\ No newline at end of file
diff --git a/collections/_article/godot-engine-was-awarded-epic-megagrant.md b/collections/_article/godot-engine-was-awarded-epic-megagrant.md
new file mode 100644
index 0000000000..c889c55c77
--- /dev/null
+++ b/collections/_article/godot-engine-was-awarded-epic-megagrant.md
@@ -0,0 +1,26 @@
+---
+title: "Godot Engine was awarded an Epic MegaGrant"
+excerpt: "With great excitement, today we want to officially announce the great honor of having been awarded an Epic MegaGrant!"
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5e3/86b/c31/5e386bc31db0b649571269.png
+date: 2020-02-03 00:00:00
+---
+
+With great excitement, today we want to officially announce the great honor of having been awarded an Epic MegaGrant!
+
+This is a huge honor for us and greatly helps to keep on improving Godot development at an even greater pace. We want to personally thank Tim Sweeney for the encouragement and support, and for sharing the belief that open source software makes the world a better place.
+
+## The grant
+
+Godot applied for a $250k usd grant for the category of open source graphics software, (which does not have the necessary requirement to be related to Unreal Engine), and expressed the wish to use the grant to improve graphics rendering as well as our built-in- game development language, GDScript.
+
+Both are areas where the Godot contributor community consistently innovates and we believe this effort, together with the very permissive license, can eventually be used to benefit the industry as a whole.
+
+The grant was awarded at the beginning of this month and we are still discussing the next steps to follow.
+
+## Future
+
+We are still discussing how the budget will be used and allocated so expect announcements (and many improved features) soon thanks to it.
+
+Stay tuned for more news!
\ No newline at end of file
diff --git a/collections/_article/godot-gamejam-dec-2016-jan-2017.md b/collections/_article/godot-gamejam-dec-2016-jan-2017.md
new file mode 100644
index 0000000000..a071367a34
--- /dev/null
+++ b/collections/_article/godot-gamejam-dec-2016-jan-2017.md
@@ -0,0 +1,40 @@
+---
+title: "Godot Community Game Jam - Dec 2016 / Jan 2017"
+excerpt: "After the success of the previous game jams in March and June, we launch a new community game jam for the new year, with the theme \"Two buttons\". Go to https://itch.io/jam/godotjam122016 to partake in the jam, alone or in a team with other community members!"
+categories: ["events"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/585/28c/770/58528c770b44a828339905.png
+date: 2016-12-15 12:30:02
+---
+
+After the success of our previous games jams in [March 2016](/article/godot-gamejam-march-2016) and [June 2016](/article/godot-gamejam-june-2016), and since the community seemed pretty motivated for a new one, we are organizing a new Godot Community Game Jam that will run from **16 December 2016 to 31 January 2017**.
+
+As the previous one, it is an informal jam with relatively loose rules, and not much to gain apart from international fame within the Godot community and more experience with using our great engine! This is why this jam will run for a month and a half, giving everyone plenty of time to experiment with the engine to create something new, beginners and experienced users alike.
+
+Check the game jam's page on itch.io: https://itch.io/jam/godotjam122016
+
+## Jam theme and rules
+
+The jam will take place from Friday, December 16th 2016 to Tuesday, January 31st 2017, i.e. for one month and a half. [It is hosted on itch.io](https://itch.io/jam/godotjam122016).
+
+The guys from the [Discord channel](https://discord.gg/qZtf8) took the initiative and gathered some theme proposals, which were then submitted to the vote of the community. The proposal that received the most votes is **Two buttons**, and it will therefore be the main theme of the jam. The other proposals were *Demake*, *No-death*, *Rust / decay* and *Round-based* - those are not part of the voting criteria, but you are free to take them as an additional source of inspiration for your games.
+
+Contestants are free to interpret the theme as they want, but keep in mind that your interpretation should be understandable if you want voters to give you many points for it.
+
+Contestants can partake alone or as a team. Reusing existing code and assets is allowed.
+
+## Open source and educational
+
+We see this jam as an opportunity for each community member to share their knowledge with other users, which is why we ask that all games developed for this jam are published with their source code and assets under [open source licenses](http://choosealicense.org/), thus helping build quality examples for new Godot users.
+
+Of course jam participants are free to continue their game after the jam as a proprietary project if they want - only the jam version should be open source for the whole community to learn from it.
+
+The minimum requirement for a valid jam entry is thus to provide the full source code to play the game; you are of course welcome to also post exported binaries for players that might not be familiar with running Godot projects from source.
+
+## Have fun!
+
+The main purpose of this jam is to have fun together as a community of Godot users. If you are beginning with Godot, don't hesitate to ask any question [on our various community channels](/community); there are no silly questions, so go ahead!
+
+If you are more experienced, why not take this opportunity to try to discover new [features](/features) of Godot that you might not be using yet (e.g. shaders, particles)? You may also use the current development version of Godot 3.0 (no GLES 3 support yet in the master branch though) to do some alpha-testing while working on your jam game.
+
+Good luck everyone, and enjoy the jam!
\ No newline at end of file
diff --git a/collections/_article/godot-gamejam-june-2016.md b/collections/_article/godot-gamejam-june-2016.md
new file mode 100644
index 0000000000..ae35052484
--- /dev/null
+++ b/collections/_article/godot-gamejam-june-2016.md
@@ -0,0 +1,40 @@
+---
+title: "Godot Community Game Jam - June 2016"
+excerpt: "After the success of the previous game jam in March, we launch a new community game jam for the month of June 2016, with the theme \"Procedural\". Go to https://itch.io/jam/godotjam062016 to partake in the jam, alone or in a team with other community members!"
+categories: ["events"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/575/1f9/6f2/5751f96f2d777586519643.png
+date: 2016-06-03 00:00:00
+---
+
+After the success of [our previous game jam](https://itch.io/jam/godotjam032016/results), which had been spontaneously organized by community members, we decided to [start a new game jam](https://itch.io/jam/godotjam062016) for this month of June 2016.
+
+As the previous one, it is an informal jam with relatively loose rules, and not much to gain apart from international fame within the Godot community and more experience with using our great engine! This is why this jam will run over three weeks, giving everyone plenty of time to expriment with the engine to create something new, beginners and experienced users alike.
+
+Check the game jam's page on itch.io: https://itch.io/jam/godotjam062016
+
+## Jam theme and rules
+
+The jam will take place from **Saturday, June 4th 0:00 UTC** to **Monday, June 27th 23:59 UTC**, i.e. for a bit more than three weeks (and four week-ends). [It is hosted on itch.io](https://itch.io/jam/godotjam062016).
+
+After an [intense consultation with the community](/storage/app/uploads/public/575/1f1/78d/5751f178dc70a813162546.jpg), we settled on **Procedural** as the jam's main theme. Contestants are free to interpret it as they want, but keep in mind that your interpretation should be understandable if you want to get points for it.
+
+We also propose an *optional* bonus theme, **Only two colors**, which can also be interpreted freely. You can decide to use this bonus theme together with the main theme if you want, but it is not mandatory. The contestants that use both themes will have a small bonus, but which shouldn't create a strong disadvantage for contestants that did not use the optional theme.
+
+Contestants can partake alone or as a team. Reusing existing code and assets is allowed.
+
+## Open source and educational
+
+We see this jam as an opportunity for each community member to share their knowledge with other users, which is why we ask that all games developed for this jam are published with their source code and assets under [open source licenses](http://choosealicense.org/), thus helping build quality examples for new Godot users.
+
+Of course jam participants are free to continue their game after the jam as a proprietary project if they want - only the jam version should be open source for the whole community to learn from it.
+
+The minimum requirement for a valid jam entry is thus to provide the full source code to play the game; you are of course welcome to also post exported binaries for players that might not be familiar with running Godot projects from source.
+
+## Have fun!
+
+The main purpose of this jam is to have fun together as a community of Godot users. If you are beginning with Godot, don't hesitate to ask any question [on our various community channels](/community); there are no silly questions, so go ahead!
+
+If you are more experienced, why not take this opportunity to try to discover new [features](/features) of Godot that you might not be using yet (e.g. shaders, particles)? You may also use the [current development version of Godot 2.1](https://github.com/godotengine/godot) to do some alpha-testing while working on your jam game.
+
+Good luck everyone, and enjoy the jam!
\ No newline at end of file
diff --git a/collections/_article/godot-games-steam-next-fest-oct-2021.md b/collections/_article/godot-games-steam-next-fest-oct-2021.md
new file mode 100644
index 0000000000..1f9f0f7192
--- /dev/null
+++ b/collections/_article/godot-games-steam-next-fest-oct-2021.md
@@ -0,0 +1,298 @@
+---
+title: "Godot games in the Steam Next Fest (October 2021)"
+excerpt: "As the days passes and the team and contributors work hard to deliver Godot 4.x and Godot 3.4, we want to shine a light on the amazing projects that are made using Godot."
+categories: ["news"]
+author: Ilaria Cislaghi
+image: /storage/app/uploads/public/615/c8d/d24/615c8dd245136034621315.png
+date: 2021-10-05 15:00:00
+---
+
+Hello Godotters!
+
+As the days passes and the team and contributors work hard to deliver Godot 4.x and Godot 3.4, we want to shine a light on the amazing projects that are made using Godot.
+
+Our project manager Rémi already collected all of them in a [Twitter thread](https://twitter.com/Akien/status/1444052705820004353). The list of games is reproduced below.
+
+### The Steam Next Fest
+
+Steam organises a recurring event called the *[Steam Next Fest](https://partner.steamgames.com/doc/marketing/steamnextfest/2021oct)*:
+
+> Steam Next Fest is a multi-day celebration where fans can try out demos, chat with developers, watch livestreams, and learn about upcoming games on Steam. For developers, Steam Next Fest is an opportunity to get early feedback from players and build an audience for a future launch on Steam.
+
+**You have until the 7th of October 2021 @ 17:00 UTC to test the games!**
+
+### Godot games at October's Steam Next Fest
+
+#### [TailQuest Defense](https://store.steampowered.com/app/824090/TailQuest_Defense/)
+
+Starting with TailQuest Defense by [Kivano Software](https://twitter.com/KivanoSoftware).
+You may recognize the (by now fairly old!) banner picture of the Godot website :)
+
+[](https://store.steampowered.com/app/824090/TailQuest_Defense/)
+
+___
+
+#### [The Garden Path](https://store.steampowered.com/app/1638500/The_Garden_Path/)
+
+Enjoy a relaxing time in the nature with The Garden Path by [Louis Durrant](https://twitter.com/LouisDurrant)!
+
+[](https://store.steampowered.com/app/1638500/The_Garden_Path/)
+
+___
+
+#### [NeJ](https://store.steampowered.com/app/1626620/NeJ/)
+
+Adventure in a much darker forest this time with [Ben Lega](https://twitter.com/Ben_Lega_Vidya)'s Nej.
+
+[](https://store.steampowered.com/app/1626620/NeJ/)
+
+___
+
+#### [Lumencraft](https://store.steampowered.com/app/1713810/Lumencraft/)
+
+Recently revealed but going strongly, here's
+[Lumencraft](https://twitter.com/Lumencraft_game) by Godot contributor [@KoBeWi_](https://twitter.com/KoBeWi_) together with [@lrzepecki](https://twitter.com/lrzepecki) [@JohnMeadow3](https://twitter.com/JohnMeadow3) [@PawelMogila](https://twitter.com/PawelMogila) [@DamianWiech](https://twitter.com/DamianWiech).
+
+[](https://store.steampowered.com/app/1713810/Lumencraft/)
+
+___
+
+#### [Galactic Chef](https://store.steampowered.com/app/1156790/Galactic_Chef/)
+
+Galactic Chef by [@ThoughtQuake](https://twitter.com/Thoughtquake) lets you become the best cook of the universe (well at least of the Interstellar Culinary Alliance®)!
+
+[](https://store.steampowered.com/app/1156790/Galactic_Chef/)
+
+___
+
+#### [The Zone: Stalker Stories](https://store.steampowered.com/app/1299540/The_Zone_Stalker_Stories/)
+
+The Zone: Stalker Stories by [@IlluminatedGms](https://twitter.com/IlluminatedGms) is a story-rich card battler in a post-apocalyptic setting – what's not to love‽
+
+[](https://store.steampowered.com/app/1299540/The_Zone_Stalker_Stories/)
+
+___
+
+#### [Martial Law](https://store.steampowered.com/app/1712390/Martial_Law/)
+
+Martial Law by [@GroupFixer](https://twitter.com/GroupFixer) tells a story about Poland in the communist era, family, and making choices – all with gorgeous pixel art.
+
+[](https://store.steampowered.com/app/1712390/Martial_Law/)
+
+___
+
+#### [Ex-Zodiac](https://store.steampowered.com/app/1249480/ExZodiac/)
+
+Ex-Zodiac by [@BenHickling](https://twitter.com/BenHickling) bears a strong similarity to a certain furry on-rails shooter, but we're all longing to scratch this SNES itch so it's very welcome! And it definitely goes beyond that inspiration to be its own very modern arcade shooter.
+
+[](https://store.steampowered.com/app/1249480/ExZodiac/)
+
+___
+
+#### [Seedlings](https://store.steampowered.com/app/1575510/Seedlings/)
+
+Bardsley Creative's [@Seedlings_Game](https://twitter.com/Seedlings_Game) is probably the game featuring the most realistic nature graphics you've seen in a while - as they're all derived from photos of the beautiful Aotearoa New Zealand Bird.
+
+[](https://store.steampowered.com/app/1575510/Seedlings/)
+
+___
+
+#### [RUN: The World In-Between](https://store.steampowered.com/app/1548940/RUN_The_world_inbetween/)
+
+*Run, boy, run! Running is a victory.* It probably doesn't include Woodkid songs, but [@RunTheVideoGame](https://twitter.com/RunTheVideoGame)
+'s soundtrack seems pretty fitting anyway for this fast-paced "die and retry" runner with a beautiful art direction!
+
+[
+](https://store.steampowered.com/app/1548940/RUN_The_world_inbetween/)
+
+___
+
+#### [Birb Café](https://store.steampowered.com/app/1579300/Birb_Caf/)
+
+Birb Café by [@birbgames](https://twitter.com/birbgames) has you, a birb, make coffee for furry and feathery customers (who would have guessed)! It's a visual novel with branching paths and multiple endings. We don't know yet if it features skating birbs, we'll see!
+
+[](https://store.steampowered.com/app/1579300/Birb_Caf/)
+
+___
+
+#### [Woodland Empire](https://store.steampowered.com/app/1419150/Woodland_Empire/)
+
+Woodland Empire by [@obvlong](https://twitter.com/obvlong) describes itself as an ANTI-citybuilder – control the elements and help your forest grow with thriving fauna and flora.
+
+[](https://store.steampowered.com/app/1419150/Woodland_Empire/)
+
+___
+
+#### [Smelted Kin: Inhuman Impact](https://store.steampowered.com/app/1604050/Smelted_Kin_Inhuman_Impact/)
+
+Smelted Kin: Inhuman Impact by [@MicrobatStudio](https://twitter.com/MicrobatStudio) is a 2D shooter in a sci-fi environment, which has you play both a human character and an armored vehicle.
+
+[](https://store.steampowered.com/app/1604050/Smelted_Kin_Inhuman_Impact/)
+
+___
+
+#### [《文字遊戲》(Word game)](https://store.steampowered.com/app/1109570/_/)
+
+It's only in Chinese for now, but [@Team9Games](https://twitter.com/Team9Games)'《文字遊戲》 is looking pretty sweet! If we understand correctly, its prequel is "Word Game: Episode 0", which is one of the most popular Godot-made games on Steam (2500 reviews, 99% positive!).
+
+[](https://store.steampowered.com/app/1109570/_/)
+
+___
+
+#### [Dark Crypt](https://store.steampowered.com/app/1706170/Dark_Crypt/)
+
+Dark Crypt by [@DaisyGames3](https://twitter.com/DaisyGames3) is a puzzle game with a horror setting, well on topic for the spooky season!
+
+[](https://store.steampowered.com/app/1706170/Dark_Crypt/)
+
+___
+
+#### [TOCOViX](https://store.steampowered.com/app/1711990/TOCOViX/)
+
+TOCOViX by [@maxfox21](https://twitter.com/maxfox21) is a colorful strategy game which looks a bit like a board game, playable in singleplayer, local multiplayer or online!
+
+[](https://store.steampowered.com/app/1711990/TOCOViX/)
+
+___
+
+#### [Tokyo Rogue](https://store.steampowered.com/app/1646090/Tokyo_Rogue/)
+
+More fast-paced runners you said? Have a go at [@lunaticgames_ca](https://twitter.com/lunaticgames_ca)'s Tokyo Rogue and show your best parkour moves!
+
+[](https://store.steampowered.com/app/1646090/Tokyo_Rogue/)
+
+___
+
+#### [Spinstar](https://store.steampowered.com/app/1669850/Spinstar/)
+
+Manipulate gravity in Spinstar, [@PixyDevs](https://twitter.com/PixyDevs)'s precision puzzle platformer with great pixel art and music!
+
+[](https://store.steampowered.com/app/1669850/Spinstar/)
+
+___
+
+#### [Terra Ventura](https://store.steampowered.com/app/1664580/Terra_Ventura/)
+
+Terra Ventura by [@LogicalProgres3](https://twitter.com/LogicalProgres3) is a classic isometric action RPG with a ton of content!
+
+[](https://store.steampowered.com/app/1664580/Terra_Ventura/)
+
+___
+
+#### [The Ballad of Bonky](https://store.steampowered.com/app/1619870/The_Ballad_of_Bonky/)
+
+Don't miss The Ballad of Bonky by [@knutselco](https://twitter.com/knutselco) and its delightful hand-crafted clay art. This "bouncy arcade adventure" also includes local multiplayer.
+
+[](https://store.steampowered.com/app/1619870/The_Ballad_of_Bonky/)
+
+___
+
+#### [The Case of the Golden Idol](https://store.steampowered.com/app/1677770/The_Case_of_the_Golden_Idol/)
+
+Investigate an 18th century murder mystery in The Case of the Golden Idol by [@ColorGray7](https://twitter.com/ColorGray7), with hand-drawn dithered pixel artwork.
+
+[](https://store.steampowered.com/app/1677770/The_Case_of_the_Golden_Idol/)
+
+___
+
+#### [Longphort](https://store.steampowered.com/app/1683680/Longphort/)
+
+Let's go further back in time with [@Priory_Games](https://twitter.com/Priory_Games)'s Longphort, a Viking crew management game! Interesting premise? Check it out!
+
+[](https://store.steampowered.com/app/1683680/Longphort/)
+
+___
+
+#### [Striving for Light](https://store.steampowered.com/app/1646790/Striving_for_Light/)
+
+Igniting Spark Games' [@StrivingLight](https://twitter.com/StrivingLight) is a rogue-lite ARPG with an "infinite expanding skilltree".
+
+[](https://store.steampowered.com/app/1646790/Striving_for_Light/)
+
+___
+
+#### [Hashi: Light](https://store.steampowered.com/app/1703650/Hashi_Light/)
+
+Hashi: Light by amiksemo is a minimalist and casual puzzle game with a ton of puzzles to solve.
+
+[](https://store.steampowered.com/app/1703650/Hashi_Light/)
+
+___
+
+#### [Long Tail](https://store.steampowered.com/app/1678100/Long_Tail/)
+
+Long Tail by Kamil Rams is Snake with a twist (a knot?) - adds in route planning based puzzle solving. It's tagged as relaxing so after checking all these cool but content heavy demos, that might be a good one to chill.
+
+[](https://store.steampowered.com/app/1678100/Long_Tail/)
+
+___
+
+#### [Genetic Fluff](https://store.steampowered.com/app/1403270/Genetic_Fluff/)
+
+Growing Brains' Genetic Fluff has a lot to unpack, action beat 'em up RPG creature collection adventure game with local split screen multiplayer.
+
+[](https://store.steampowered.com/app/1403270/Genetic_Fluff/)
+
+___
+
+#### [Ari's Journey](https://store.steampowered.com/app/1721240/Aris_Journey/)
+
+HackBerry Studio's [@aris_journey](https://twitter.com/aris_journey) is a precision platformer without any platforms. Time your moves well to navigate narrow corridors and collect stars.
+
+[](https://store.steampowered.com/app/1721240/Aris_Journey/)
+
+___
+
+#### [Cloaks and Capes](https://store.steampowered.com/app/1637950/Cloaks_and_Capes/)
+
+[CloaksAndCapes](https://twitter.com/CloaksAndCapes) is a side-scroller with a dark theme and rage-inducing bosses!
+
+[](https://store.steampowered.com/app/1637950/Cloaks_and_Capes/)
+
+___
+
+#### [VoxStory](https://store.steampowered.com/app/1339730/VoxStory__The_Cinematic_TTRPG/)
+
+[@VoxStoryRPG](https://twitter.com/VoxStoryRPG) by Current Year Gaming brings 3D digital content to tabletop roleplaying. The Game Master creates a 3D voxel world as support for the good old pen and paper roleplaying.
+
+[](https://store.steampowered.com/app/1339730/VoxStory__The_Cinematic_TTRPG/)
+
+___
+
+#### [Reef Rumble](https://store.steampowered.com/app/1678980/Reef_Rumble/)
+
+[@ReefRumbleGame](https://twitter.com/ReefRumbleGame) by [@Paul_N_Leduc](https://twitter.com/Paul_N_Leduc) and Maxime Martens is a cartoony fighting/party game for 2 to 8 players, locally or online!
+
+[](https://store.steampowered.com/app/1678980/Reef_Rumble/)
+
+___
+
+#### [Move Dodge and Kill](https://store.steampowered.com/app/1699500/Move_Dodge_and_Kill/)
+
+Move Dodge and Kill by [@DjokaGames](https://twitter.com/DjokaGames) is a top-down roguelite shooter in a minimalist neon dungeon.
+
+[](https://store.steampowered.com/app/1699500/Move_Dodge_and_Kill/)
+
+___
+
+#### [System Under Surveillance](https://store.steampowered.com/app/1655800/System_Under_Surveillance/)
+
+System Under Surveillance by [@to_pixels](https://twitter.com/to_pixels), a stealth adventure with an adorable robot sidekick!
+
+[](https://store.steampowered.com/app/1655800/System_Under_Surveillance/)
+
+___
+
+#### [Mechanic 8230](https://store.steampowered.com/app/1432680/Mechanic_8230/)
+
+[Mechanic 8230](https://twitter.com/Mechanic8230) by Nudiventra is a point and click adventure with a wonderful art direction!
+
+[](https://store.steampowered.com/app/1432680/Mechanic_8230/)
+
+___
+
+#### [TD Worlds](https://store.steampowered.com/app/1659180/TD_Worlds/)
+
+And finally, [@TDWorlds_game](https://twitter.com/TDWorlds_game) by MAKSIM VOLKAU is a roguelite strategy game and dynamic storytelling.
+
+[](https://store.steampowered.com/app/1659180/TD_Worlds/)
\ No newline at end of file
diff --git a/collections/_article/godot-gdc-2016-aftermath.md b/collections/_article/godot-gdc-2016-aftermath.md
new file mode 100644
index 0000000000..2557b7adea
--- /dev/null
+++ b/collections/_article/godot-gdc-2016-aftermath.md
@@ -0,0 +1,42 @@
+---
+title: "Godot at GDC 2016, aftermath"
+excerpt: "GDC (or Game Developer's Conference) is an event hosted every year in San Francisco at some point of March. The point of GDC is to reunite as much as possible of the videogame development industry in a single week. The past week, we took Godot to this event!"
+categories: ["events"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/57f/215/1eb/57f2151eb9807140516214.jpg
+date: 2016-03-19 00:00:00
+---
+
+#### What is that?
+
+GDC (or Game Developer's Conference) is an event hosted every year in San Francisco at some point in March. The point of GDC is to reunite as much as possible of the video game develoment industry in a single week. The event is used for conferences (educational mostly), business, mixers, award ceremonies (IGF), technology showcases and partying hard with fellow developers.
+
+It is without a doubt a fantastic time of the year if you are a video game developer and you can attend to it.
+
+#### Godot at GDC
+
+We took Godot to GDC with a number of goals, mainly to see the industry feedback to it (see how we can improve) and to find sponsoring for its development by the big companies.
+
+We spent most of the week meeting with programmers, artists, designers, company representatives, etc. Went to parties, talks and more.
+
+On the sponsoring side, we have many promising leads but it's probably too early to write about it.
+
+On the feedback side, what we found, however, was not what we were expecting. The sad truth is that, even after two years of being open source...
+
+#### No one knows about Godot
+
+It's as simple as that. Developers and companies are enthusiastic and amazed when we show them Godot, the games that the community is making, the maturity of the engine, etc. Yet, they simply had no idea it existed and never heard about it.
+
+This GDC, organizers estimated that the number of attendees was over 70.000. One could argue that most of the developers attending GDC are not video game technology enthusiasts so they don't bother looking beyond what the companies ask them to learn (Unity likely). Our problem is not that users dislike Godot, but that developers do not bother to find out if there are alternatives to what they use.
+
+Amazon, on the other hand, set up an enormous booth for Lumberyard (very fitting to its 40 GB install size :P) and you could see developers surprised there was a new engine around.
+
+#### We need visibility
+
+At this point, I think it's becoming quite clear that Godot needs better visibility industry wide, so we should start thinking about ways to achieve that. Some things that come to mind are:
+
+* We should start contacting company CTOs or technical directors and offer them to do a private showcase of Godot.
+* We could actually try to crowdfund a booth at GDC, which would definitely give us visibility in the chunk of the industry that attends the event. A decent booth is quite expensive though (15-25k USD), but we might actually share it with other popular open source software that is used for games such as Blender or Krita.
+* It could be interesting to create sets of training materials, so other Godot users could use them to set up jams, workshops, etc. in their local regions too.
+
+Any ideas are welcome, and this is an issue we'll most definitely be going to be working on during the year.
\ No newline at end of file
diff --git a/collections/_article/godot-gets-2d-skeletal-deform.md b/collections/_article/godot-gets-2d-skeletal-deform.md
new file mode 100644
index 0000000000..153e39d821
--- /dev/null
+++ b/collections/_article/godot-gets-2d-skeletal-deform.md
@@ -0,0 +1,140 @@
+---
+title: "Godot gets 2D skeletal deform"
+excerpt: "Currently, Godot is pretty comfortable for doing 2D cutout animation, with several games in development making use of this feature.
+
+A very common request, though, was the ability to do custom mesh deformation based on the same bones used to animate separate parts. This would allow deforming such parts, for a more organic animation feel."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5ae/c8f/8c1/5aec8f8c19c0b515935183.gif
+date: 2018-05-04 00:00:00
+---
+
+Currently, Godot is pretty comfortable for doing [2D cutout animation](http://docs.godotengine.org/en/3.0/tutorials/animation/cutout_animation.html), with several games in development making use of this feature.
+
+A very common request, though, was the ability to do custom mesh deformation based on the same bones used to animate separate parts. This would allow deforming such parts, for a more organic animation feel.
+
+This was recently added to GitHub head and, while overall 2D editing is a bit unstable right now (due to a massive reorganization of the 2D editor), it will be soon be possible to fully make use of this feature.
+
+As always, please remember Godot is made out of love, so please consider [becoming our patron](https://www.patreon.com/godotengine)!
+
+### How it works
+
+Two new types of nodes were added: **Skeleton2D** and **Bone2D**. The former is the reference skeleton (much similar to the existing **Skeleton** node for 3D), while the later is actually used to build a bone hierarchy on top of it:
+
+
+
+For editing, the workflow is the same as cutout, bones are laid out in a tree then marked as visual bones for editing (they are not visible by default). This is a bit more of a hassle than with dedicated software, but fortunately the process is done only once.
+
+Of course, compared to dedicated software, this workflow has the huge advantage that nodes are fully accessible within the engine, allowing to mix them up with particles, shaders, other nodes (i.e. swap a sword), and other visual effects built-in to Godot.
+
+
+### Using with MeshInstance2D
+
+Although the recently added MeshInstance2D node now supports skeletal deforms, it can't be created with such property within the editor.
+
+This allows, however for the community to write importers for tools such as [Spine](http://esotericsoftware.com/) or [CoaTools](https://github.com/ndee85/coa_tools) that become actual Godot scenes instead of an opaque node.
+
+### Using with Polygon2D
+
+The **Polygon2D** node has gained many new features to make working with skeletons easier. Here's a short tutorial on how to use it:
+
+**Note:** This tutorial is already outdated, endpoints are no longer required and bone editing creates visible bones automatically now, thus making working with skeletons in Godot as easy as in any other software.
+
+
+##### 1-Draw a polygon outline around the image:
+
+Normally for 2D animation, it's still more convenient to split the object into parts and then use bones on specific parts of them (as they handle overlap better) so actual use of this feature will be more of an extension to the existing cutout workflow. Still, for brevity, this tutorial will show how to do it on a single object.
+
+Create a *Polygon2D* node, then immediately assign an image to it (otherwise UV editing won't open).
+
+
+
+Open the UV editing window (again, without an image assigned, this won't open)
+
+
+
+Once open, go to the newly added *Polygon* section of he editor. Once there, click the **+** button to add points.
+
+
+
+Draw a close polygon outline around the object:
+
+
+Finally, this will become your actual polygon when editing the scene:
+
+
+
+
+##### 2-Create a skeleton to match the polygon
+
+Starting from a **Skeleton2D**, add a hierarchy of **Bone2D** nodes to match the desired skeleton. Remember that each **Bone2D** must be placed where the bone *Starts*. To have a reference where the hierearchy ends, just add a **Position2D** node at the end.
+
+
+
+Once you have a chain of bones, you can make them visible in the Bone menu. Just select all bones (except the base, as this acts on a node towards the parent node), and create visual bones:
+
+
+
+They will now appear visually and can be manipulated more easily, including setting up IK chains:
+
+
+
+
+Repeat this process to have a full skeleton. For skeleton points where two bones emerge (as in, the base position for left and right shoulders), having them both in the same position is fine. In fact, in this example, base, left_hip and right_hip share the position and hierarchy level as 3 root bones.
+
+
+
+Ok, skeleton is complete! You might have noticed that nodes are showing warnings. This is because they need a *rest* pose. This is the default reference pose for the skeleton, and it must exist before bones are animated (so Godot knows how to rotate or move the points based on how rotated the or moved the bones is).
+
+Create the rest pose (once the skeleton is complete) by selecting the **Skeleton2D** node and the *Skeleton* menu:
+
+
+
+
+##### 3-Create splits to improve triangulation
+
+As polygons are converted to triangles for drawing internally, this process may need some help in order to created less unexpected deformations. Select the **Polygon2D** node and enter the UV menu again. This time go to the *Splits* mode. From there, to the Add Split mode:
+
+
+
+Finally, connect sets of two points near bone unions, indicating that you dont want triangles to be generated across such splits:
+
+
+
+This process may demand some trial an error, as for complex polygons it may need to be re-adjusted a bit after the process is done.
+
+
+##### 4-Setup polygon for painting
+
+Exit the UV editor and re-select the **Polygon2D** node. From there go to the *Skeleton* property. Assign the **Skeleton2D** node to it.
+
+
+
+Go back to the UV editor and select the *Bones* section, and from there the *Paint* mode:
+
+
+
+While the skeleton is visible over the image now, the bones are still not available for painting.
+
+The **Polygon2D** node needs to store bone painting information. To create this, push the *"Sync Bones to Polygon"* button. If you later add, remove or reparent nodes, you will need to push this button again. This will ensure that the minimum possible paint information is lost each time the skeleton hierarchy is modified.
+
+
+
+##### 5-Painting bone weights
+
+Everything is now ready for weight painting!! Now select bones fromt he list, and paint the area they affect. When a point is fully white, it's fully affected by the bone. When black, it's not affected at all.
+
+A point may be affected by multiple bones. When this happens, the bone will try to satisfy both bones as best as possible, by averaging their influence. This makes deformation look *soft*.
+
+Here are some examples on how weights are painted for different bones:
+
+
+
+
+
+
+##### 6-Animate!!
+
+Now have fun animating deformable polygons!
+
+
\ No newline at end of file
diff --git a/collections/_article/godot-gets-brand-new-animation-editor-cinematic-support.md b/collections/_article/godot-gets-brand-new-animation-editor-cinematic-support.md
new file mode 100644
index 0000000000..87e13d10f2
--- /dev/null
+++ b/collections/_article/godot-gets-brand-new-animation-editor-cinematic-support.md
@@ -0,0 +1,172 @@
+---
+title: "Godot gets a brand new animation editor (with cinematic support)"
+excerpt: "The existing animation system in Godot was already one of the most powerful of any game engine, but its age was starting to show (it was written 10 years ago and barely improved). The new one builds upon the strengths of the previous one but does massive improvements to features and usability."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5b1/96c/a95/5b196ca9551b7541693881.png
+date: 2018-06-07 12:00:00
+---
+
+The existing animation system in Godot was already one of the most powerful of any game engine, but its age was starting to show (it was written 10 years ago and barely improved). The new one builds upon the strengths of the previous one but does massive improvements to features and usability.
+
+
+### A bit of history
+
+Animation editing was one of the first distinctive Godot features. If you are familiar with Godot, you may already know that *any property* from *any object* can be animated or tweened. Changing sprite textures, colors, animation frames, calling functions, playing animations in other animation players, playing sounds, etc. All is done transparently by simply animating property states.
+
+Although this approach works really well, it started showing its age as it was not improved very much in almost 8 years. The reason for this is that the code behind animation editing was too hard-coded in general, which made it difficult to add new features or improvements. In the image below, the animation editor can be shown as it was in 2010. Nothing much has changed since:
+
+
+
+
+### Rewriting from scratch
+
+As it has been the trend the past months, with the rewrite of the 2D editor, inspector, etc., the time has come for a new animation editor to come forward. The new code is more modular, and allows extending track editing to show custom visualization. It also has a plethora of new features that will indeed be very useful.
+
+With the new trend of cinematic tools and timelines coming recently to the big engines, this workflow (which was already possible) was cleaned up and made much easier and visual.
+
+Following is the long list of changes and improvements included in the new animation editor!
+
+
+### New layout
+
+First of all, there is a new layout (keep in mind the visuals are not final, and will be further refined by our UI styling contributors before 3.1).
+
+The old layout wasted a lot of horizontal space in buttons that were seldom used. Buttons in large groups are, in general, not a very helpful usability convention so the whole layout was confusing. Some useful menus (such as add track) were hidden in the clutter, and the animation name had only a bit of space to show itself.
+
+Some buttons were unnecesary, such as move up/down, which remained from the ages when Godot did not support drag and drop.
+
+
+
+
+The new layout is much simpler and has moved most functions to menus. Only the really important buttons remain visible. The animation length and loop options are now together in the timeline, as well as the button to add tracks.
+
+
+
+
+The step field was confusing, so it was renamed to a snap button. Snapping can now be toggled on or off.
+
+### New track workflow
+
+Besides the usual workflow of inserting keys (and creating tracks) from the inspector, new tracks can be created directly from the Add Track menu. This not only provides an alternative workflow, but works much better for non-property tracks, such as *Call* tracks and the new *Bezier*, *Audio* and *Animation* tracks.
+
+
+
+
+
+
+Keys can also be inserted at any position in the timeline by simply right-clicking over the track at a given position in time.
+
+Adding a Call track and calling a function, as an example, is a lot more intuitive:
+
+
+
+Just trust this new menu, as it will always lead you through the right dialogs to get your tracks set up in no time!
+
+### Key editing in inspector
+
+The old layout had a small sub-window where key values as well as transition curves could be edited for each key. Most users did not even know this feature existed due to the huge amount of clutter.
+
+In the new animation editor, just clicking a key will allow editing it in the inspector:
+
+
+
+
+
+### Key previews
+
+Most types of keys can have their values previewed directly in the track, thanks to track editor plugins. Godot comes with a bunch of built-in ones for most key types.
+
+As an example, editing animation frames is a lot more friendly now:
+
+
+
+As well as many other key types, such as:
+
+* Boolean tracks
+* Color tracks (which show colors and transitions)
+* Call tracks (which show the function and arguments)
+* Stream playback (shows a stream preview)
+* Volume DB (shows a gradient with the volume)
+
+
+
+
+
+### Bezier Tracks
+
+To be more in line with other software and thanks to the work done by Bojidar Marinov on set/get indexing for tweens, it is now possible to create Bezier tracks.
+
+These are normal tracks and look like regular tracks that edit a single float component:
+
+
+
+
+But with the push of a button, it is possible to edit the Bezier curves directly in the integrated bezier editor!
+
+
+
+
+Related tracks in the same object will appear in the background for reference, and switching between them is easy with the menu on the left.
+
+
+### Animation and Audio tracks
+
+Two new track types were added: *Animation* and *Audio*. Animation tracks need to point their path to an *AnimationPlayer* node (must be different from the current one). Audio tracks need to point to an *AudioStreamPlayer* node (can be *AudioStreamPlayer*, *AudioStreamPlayer2D* or *AudioStreamPlayer3D*).
+
+Audio tracks work very similar to a DAW. Just draw audio resources into the animation track and it will play them back. Editing their start and end offset is allowed, to better adjust the sound to the rest of the animation.
+
+
+
+This workflow is very smooth, and previews of the audio are rendered in a thread to not obstruct your work, just like in a real DAW!
+
+For animations, just insert current animation keys in the same way as before, but now they will be previewed with full length on the timeline.
+
+Added to that, the new tracks are designed to work better with seeking, so you can seek (via code or editing) to any point of the master animation, and both audio and sub-animations will start from the right offset:
+
+
+
+
+To also help with this workflow, the currently pinned animation editor is displayed in the Scene Tree:
+
+
+
+
+
+
+All this together makes Godot's built-in animation support the most powerful tool for in-game cinematic creation and editing. This goes in-line with Godot's philosophy of having a single, powerful and well designed tool instead of several ones duct taped, like in other engines.
+
+
+### Track grouping and filtering
+
+This has been a long-standing request. It is now possible to see tracks grouped together by object. This makes complex animations with lots of tracks much less confusing.
+
+
+
+
+It is also possible to filter tracks with the push of a button. When filtering is enabled, only tracks selected in the Scene Tree dock will appear editable.
+
+### Track copying and pasting
+
+Another long standing request is the ability to copy and paste tracks between animations. this has been made much easier with the new copy/paste menu:
+
+
+
+
+### Capture Mode
+
+The last significant feature introduced in the animation editor is *capture* mode for property tracks. When these tracks are set to *capture*, the current property value in the object is remembered. From there onward, it will blend with the first animation key found:
+
+
+
+
+The main use of this feature is for animating UI components (as in, menus sliding in an out, buttons becoming bigger or smaller, etc.) without having to resort to tweens. Still, it can be used with anything else, so I'm sure that other creative uses will arise.
+
+
+### Future
+
+Please test this code well (it's now available on GitHub HEAD) so all the bugs can be ironed out before Godot 3.1 is out!
+
+Some features were left out due to lack of time, but may be implemented later, such as a global track (for ease of selecting long list of keys). Others are still in the works (like proper auto-keying).
+
+And again, please remember that Godot is made with love for everyone! If you haven't yet, please consider [donating and becoming our Patron](https://www.patreon.com/godotengine)!
\ No newline at end of file
diff --git a/collections/_article/godot-gets-csg-support.md b/collections/_article/godot-gets-csg-support.md
new file mode 100644
index 0000000000..f1a3e0b045
--- /dev/null
+++ b/collections/_article/godot-gets-csg-support.md
@@ -0,0 +1,105 @@
+---
+title: "Godot gets CSG support"
+excerpt: "After years of discussion on how to implement CSG, Godot finally gets suport for it. This implementation is simple, but makes use of Godot's amazing architecture to shine."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5ae/4d0/8c6/5ae4d08c674b5082905650.png
+date: 2018-04-28 00:00:00
+---
+
+After years of discussion on how to implement CSG, Godot finally gets suport for it. This implementation is simple, but makes use of Godot's advanced architecture to shine.
+
+### Wait, what is CSG?
+
+CSG stands for "Construtive Solid Geometry", and is a tool to combine basic (and not so basic) shapes to create more complex shapes. In the 3D modelling software, CSG is mostly known as "Boolean Operators".
+
+
+
+### Why is CSG relevant?
+
+The aim of CSG in Godot is for it to be used in level prototyping. This technique allows to create simple versions of most common shapes by combining primitives. Interior environments can be created by using inverted primitives instead.
+
+CSG is a vital tool for level design (and level designers in companies) as it allows to test gameplay environments without modelling a single triangle. Unreal has always offered similar boolean CSG, while Unity has recently acquired ProBuilder (which is a different type of tool, but still aimed at prototyping level geometry).
+
+For developers, creating 3D art is a time consuming process. For indies or small companies, it may even involve outsourcing to third party artists. With CSG, a game can be developed almost entirely without relying on 3D environment artists, only for that content to be filled in the end when gameplay is already working.
+
+
+
+### How does it work?
+
+Godot provides a bunch of Primitive nodes:
+
+* **Sphere**
+* **Box**
+* **Cylinder** (can be used as Cone)
+* **Torus** (donut shape)
+* **Polygon** (can be drawn in 2D and then extruded)
+* **Mesh** (can use any custom geometry)
+
+
+
+
+
+Each of these operates on the parent CSG node, in order. Supported operations are:
+
+* **Union**: Geometry of both primitives is merged, intersecting geometry is removed
+* **Intersection**: Only intersecting geometry remains, the rest is removed
+* **Subtraction**: The second shape is susbtracted from the first, leaving a dent with it's shape.
+
+
+
+
+##### Process order
+
+Every CSG node will first process it's children nodes (an their operation: union, intersection substraction), in tree order and apply them to itself one after the other.
+
+There is a special CSGCombiner node that is pretty much an empty shape. It will only combine children nodes. It's used for organization mostly.
+
+##### Polygon and lofting
+
+The CSGPolygon node is very convenient, a Polygon is drawn in 2D (in X,Y coordinates), and it can be extruded in the following ways:
+
+* **Depth**: Extruded back a given amount
+* **Spin**: Extruded while spinning aroud it's origin.
+* **Path**: Extruded along a Path node. This operation is commonly called *lofting*.
+
+
+
+##### Custom meshes
+
+Any mesh can be used for CSG, this makes it easier to implement some types of custom shapes. Even multiple materials will be properly supported. There are some restrictions for geometry, though:
+
+* It must be closed
+* It must not self-intersect
+* Is must not contain internal faces
+* Every edge must connect to only two other faces
+
+
+
+Make sure CSG geometry remains relatively simple, as complex meshes can take a while to process.
+
+##### A note on performance
+
+If adding objects together (such as table and room objects). It's better if this is done as separate CSG trees. Forcing too many objects in a single tree will eventually start affecting performance. Only use binary operations where you actually need them.
+
+### Godot CSG Implementation
+
+As many libraries seemed to exist for this, I decided to pick one and put it in Godot and implement it over a weekend. Of course, this unfortunately did not work well. A few things stopped me. Pretty much every library I found was:
+
+* Under GNU GPL or GPL, making it incompatible with Godot
+* Using really crappy algorithms such as voxel or BSP, making them inefficient.
+* Designed for 3D modelling or mathematics, so they used very tuned algorithms dealing with avoiding precision errors.
+
+Nothing was really meant for games. This led me to write a custom one for Godot, with focus exclusively on performance.
+
+The current implementation is really simple. It does brute force clipping of triangles without relying on vertex IDs, or isolating edges to detect interior faces. Instead the implementation in Godot does triangle-triangle raytracing to detect which halves ended up inside the intersection.
+
+This is expensive per se, but it's optimized by doing a pre-aabb intersection and balanced binary trees to minimize the amount of ray tests. As a result, the performance is really good.
+
+As the implementation is pure brute force, some visual artifacts may rarely appear in some cases if you look well, but truth is that they don't have any practical impact as CSG in Godot is mostly meant for level prototyping. In fact I'm sure for some types of game CSG could easily be usable in production.
+
+### Future
+
+The main missing feature now is the ability to export the scene to a 3D modelling software (likely via GLTF2), so the process of replacing CSG art by final art can be done by a professional artist. This will be added soon.
+
+Please test well! And remember that we make Godot with love for everyone. If you are not already, please consider [becoming our patron](https://www.patreon.com/godotengine), so we can continue doing this for you!
\ No newline at end of file
diff --git a/collections/_article/godot-gets-mobile-vulkan-renderer.md b/collections/_article/godot-gets-mobile-vulkan-renderer.md
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/collections/_article/godot-gets-new-animation-tree-state-machine.md b/collections/_article/godot-gets-new-animation-tree-state-machine.md
new file mode 100644
index 0000000000..92065acf38
--- /dev/null
+++ b/collections/_article/godot-gets-new-animation-tree-state-machine.md
@@ -0,0 +1,94 @@
+---
+title: "Godot gets new Animation Tree + State Machine"
+excerpt: "After a long time coming, and as part of this trend of modernizing many old godot subsystems, the animation tree has been rewritten from scratch and it's now brand new, with plenty of new features."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5b3/2ca/354/5b32ca3546bbf512292209.png
+date: 2018-06-26 00:00:00
+---
+
+After a long time coming, and as part of the trend of modernizing many old Godot subsystems, the animation tree has been rewritten from scratch and it's now brand new, with plenty of new features.
+
+This was one of the main missing features in Godot, which makes it now much more apt for complex 3D games.
+
+### Completely modular design
+
+There is a new node, AnimationTree. It does nothing by itself, so a tree root needs to be set to it:
+
+
+
+
+There are plenty of nodes to put in the tree, but only a few root nodes are valid by default:
+
+* **Animation** (a regular animation)
+* **BlendTree** (A blend tree, similar to the previous AnimationTreePlayer)
+* **BlendSpace1D** and **BlendSpace2D**, for visual blend spaces.
+* **StateMachine** (a state machine)
+
+Save for animation, any of those nodes can contain other types of nodes. Detail is as follows:
+
+### Blend Tree
+
+This node is similar to the old AnimationTreePlayer. It's a run of the mill animation blend tree. Nodes
+have inputs and outputs and can be blended. This new implementation has a lot of visual feedback, though:
+
+
+
+Animations show their progress with a proper bar, and active wires become blue.
+
+It is also possible to use blend spaces, state machines and even other blend tree as sub-nodes. In the example below, two state machines are blended via a Blend2 node, with filters set. This way, a functionality similar to state machine layers (from other engines) can be achieved easily.
+
+
+
+
+
+### Blend Space 1D and 2D
+
+With the help of karroffel, both 1D and 2D blend spaces are supported in Godot.
+
+
+
+
+
+
+For the 2D version, an automatic triangulation option is set by default (which can be changed to manual if required). Other engines hide it by default, but we believe it should be better that users see how blending happens behind the scenes (As well as having the freedom to change it ):
+
+
+
+
+
+
+### State Machine
+
+Finally, Godot introduces a state machine. This state machine is rather simple but very efficient, and relies on the concept of travel.
+
+
+
+
+
+Conditions to change states are not supported, but can be easily scripted by adding scripted transitions (we'll see in the future whether this is worth adding to the core or can remain an extension).
+
+### Custom Blend Nodes
+
+You can add your own custom blending logic with the new Godot API, even writing your own state machine. The new API is very easy to extend and use:
+
+
+
+### Root Motion
+
+It is also easy to set a track as root motion. If set as such, a transform with the motion for the frame can be obtained and used as well. A new node RootMotionView was added to aid in debugging root motion.
+
+
+
+
+
+
+### Compatibility
+
+The old animation system (AnimationTreePlayer) has now been deprecated and will be removed in future versions. By the time, we will add a compatibility API so they get converted to the new system.
+
+### Future
+
+This lays the foundation for a new animation system, which will hopefully keep being worked on and improved over time.
+
+As always, everything is done for everyone with love, so again please consider becoming [our patron](https://www.patreon.com/godotengine)!
\ No newline at end of file
diff --git a/collections/_article/godot-gets-new-filesystem-dock-3-1.md b/collections/_article/godot-gets-new-filesystem-dock-3-1.md
new file mode 100644
index 0000000000..62436c4453
--- /dev/null
+++ b/collections/_article/godot-gets-new-filesystem-dock-3-1.md
@@ -0,0 +1,37 @@
+---
+title: "Godot gets a new FileSystem dock for 3.1"
+excerpt: "Godot's FileSystem dock gets an improved tree view mode with files included in the tree, with thumbnails. This makes it much easier to go through project files from a single dock. Various improvements are also done to the favorites usability, right-click menu and the split view mode."
+categories: ["progress-report"]
+author: Gilles Roudiere
+image: /storage/app/uploads/public/5ba/4cd/937/5ba4cd9370adf233240214.png
+date: 2018-09-21 10:53:56
+---
+
+Before anything else, we would like to thank our long-time sponsor [Gamblify](https://www.gamblify.com) for having donated this new feature to the community. Their involvement and their constant support to make this engine better are deeply appreciated.
+
+For the upcoming 3.1 release, Godot gets a brand new FileSystem dock. Files, not only folders, are now displayed directly in the tree view :
+
+
+
+This new display, which can be switched with the older one with a button on the top of the dock, avoids splitting the dock in two areas. This allows a more compact interface, which also lead us to reconsider the default layout for the editor. As you can see, more space is now available to the inspector, reducing the scrolling needed there:
+
+
+
+## Features
+
+Amongst a set of more minimal improvements, this new FileSystem dock features several things:
+
+- Files can now be marked as favorites, not only folders.
+- Complete drag & drop support, including dragging files and folders into the favorites section:
+
+- Type icons next to each file name. For textures and materials, this icon is replaced by a mini-thumbnail of the resource:
+
+- A search field, to filter entries in the tree:
+
+- A right-click menu, to handle files exactly as in the file list.
+- The "Mark as favorite" button has been moved to a menu entry, found when you right-click files or folders.
+- The "Find current scene in files" button has been moved to a menu entry, when right-clicking on a scene tab.
+
+We hope you will enjoy this new FileSystem dock. We are waiting for your feedback!
+
+*Note: this new feature is outside the scope of the current feature freeze, since it has been on the roadmap and worked on since before the feature freeze took effect.*
\ No newline at end of file
diff --git a/collections/_article/godot-gets-new-inspector.md b/collections/_article/godot-gets-new-inspector.md
new file mode 100644
index 0000000000..5794a2c544
--- /dev/null
+++ b/collections/_article/godot-gets-new-inspector.md
@@ -0,0 +1,97 @@
+---
+title: "Godot gets a new Inspector"
+excerpt: "Work is ongoing to completely overhaul Godot inspector. This was a pending assignment for me since even before Godot was open sourced but, as always, other issued had priority."
+categories: ["progress-report"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/5b0/09e/0c2/5b009e0c2cabd079105425.png
+date: 2018-05-19 00:00:00
+---
+
+Work is ongoing to completely overhaul Godot inspector. This was a pending assignment for me since even before Godot was open sourced but, as always, other issued had priority.
+
+Most of the work is currently done, only pending bugfixes and visual improvements by our design focused contributors.
+
+## The old inspector
+
+Godot grew organically. At the beginning, it made sense to make the inspector using the Tree control. For the few special types, a pop-up would be used instead. For sub-resources, editing would also go into a separate view.
+
+There was not much of anything and it more or less did the job, so it kind of made sense at the time (image below: Godot circa 2008):
+
+
+
+The inspector grew and became more complex over time, but it always remained tree-based (image below: Godot circa 2011):
+
+
+
+## And now.. the NEW inspector!
+
+After a long wait of almost 10 years, there is now a new inspector. Functionality-wise it's complete. It just needs polish and love from the visual design contributors until 3.1 is out. It solves several old problems and introduces several new features!
+
+
+
+Here's all the new features that come with it:
+
+#### Control-based instead of Tree
+
+The new inspector is Control based. All editing is done via controls instead of tree cells. This allows for much finer grained improvements in usability. It also allows writing custom plugins to customize the looks, like in the image below:
+
+
+
+
+#### New Spin-Slider for numerical editing
+
+A new Spin-Slider (mix of SpinBox and Slider) was added for numerical entry. It alows:
+
+* Editing values in absolute range (via slider)
+* Editing values in relative range (via spin, just drag it from left to right)
+* Editing values numerically (simply click it and enter a numer)
+
+
+
+When in integer editing mode, the slider disappears and the classical up-down arrows will appear:
+
+
+#### Multiple field editing for vector types
+
+Properties of types such as Vector3, Vector3, Transform, etc. can now edited and visualized directly. Many fields are exposed as a single property.
+
+
+
+
+#### Sub-Resource editing within the same inspector
+
+One of the biggest usability hurdles in Godot was the fact that sub-resources would go to a separate inspector. In many types of nodes (Mesh, Particles, etc), editing sub-resources was truly a hassle.
+
+This no longer applies to the new inspector. Sub-Resources wil open within the same list of edited properties:
+
+
+
+It also makes animation easier, as any sub-resource property can be animated transparently.
+
+#### Named layers
+
+Besides the boxes, the list of layers now appears in a proper drop down, making it easier to select them by name:
+
+
+
+
+#### Proper Array and Dictionary editing
+
+With the old inspector, editing arrays and dictionaries was more or less a hack. A new proxy object was created that would edit it, which requiered going into a separate inspector. Undo and Redo also did not work well on it, given the hacky nature.
+
+Currently, editing them is done properly and without even going to a sub-inspector. Here is an example of two arrays, of different types, being edited at the same time. Arrays can be collapsed to save vertical space.
+
+
+
+Same goes for dictionaries, which can be visualized and edited within their parent objects:
+
+
+
+
+## Future
+
+The new inspector will also result in many improvements on current features, such as animation editing, visual scripting, visual shader editing, etc. Many of those are being reworked for 3.1 and will see their usability and features improved.
+
+Make sure to test well and report all the issues you can, so the new inspector is as stable as possible for the upcoming Godot 3.1.
+
+As always, remember that Godot is done with love for everyone who enjoy making games. If you are not already, please consider becoming [our patron](https://www.patreon.com/godotengine).
\ No newline at end of file
diff --git a/collections/_article/godot-getting-more-languages.md b/collections/_article/godot-getting-more-languages.md
new file mode 100644
index 0000000000..838c0b146b
--- /dev/null
+++ b/collections/_article/godot-getting-more-languages.md
@@ -0,0 +1,68 @@
+---
+title: "More programming languages in Godot, want to help?"
+excerpt: "There is a common misundertanding in the industry about us, Godot devs, trying to reinvent the wheel because we like it. This could not be further away from the truth."
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/57a/b73/701/57ab73701f653339027447.jpg
+date: 2016-08-10 00:00:00
+---
+
+## Why more languages, isn't GDScript enough?
+
+There is a common misundertanding about us in the industry: Godot devs, always trying to reinvent the wheel because we like it. This could not be further away from the truth.
+
+The reality is that we are extremely demanding with our requirements from third party solutions and it just happens that very often, even if a library, language, etc. is very popular, it does not satisfy our needs. This was the case of third party scripting languages such as Lua, Python, Squirrel, etc.
+
+When we originally made Godot, we were completely certain that we wanted our main scripting language to be dynamically typed due to the high accessibility this provides. We understood that most of the code written for a game is not performance critical, and that the C++ part of the engine already covers most of the critical parts, so we originally went for Lua, and then for Squirrel (while trying Python in the process).
+
+Unfortunately, we had many problems with those languages. Binding code was always large, complex and prone to bugs. True multi-threading (with a stack per thread, but sharing memory) was not supported, and vector types had to be created with custom userpointers, which provided much slower performance than built-in types. Added to that, we could never completely eliminate the stalls related to the garbage collector.
+
+GDScript was born as a way to make all these problems go away. When users write code in GDScript within the IDE, everything simply "just works" and you have the added value of live code completion. None of this could have been made with a third party language. We tried, we became experts at it, but it just didn't work out.
+
+Because of this, **GDScript will always be the main supported language**, and our recommended choice for all Godot users.
+
+
+## Why other languages, then?
+
+Even though we will always recommend new users to go the GDScript route, because we know it's the least hassle option, we understand that developers have different needs and experiences, and that believing in "one size fits all" is a mistake. That's why we are working on the support of C# and visual scripting for the upcoming Godot 2.2.
+
+### Why C#?
+
+In the case of **C#**, there is a huge amount of love towards this programming language, which is expected due to the main designer being the same guy who created Object Pascal (which was very popular in the 90s with Borland Pascal and later through Delphi).
+
+Truth is that Mono is very well made, has excellent, modern binding extensions (the complete opposite to Java/JNI) and supports multi-threading just fine. As a result, it should integrate smoothly into Godot. The only reason we did not want to go this route in the past was due to license restrictions, but this ceased to be a problem a few months ago when Microsoft acquired Xamarin and relicensed Mono under the MIT license.
+
+The main benefit of supporting C# is that, all of a sudden, Godot will become a more-than-tempting option to the indie and corporate cultures who are used to products supporting this language. This should greatly help us reach potential users who might have been initially puzzled by having to *learn* GDScript (though we still guarantee that any programmer can pick up GDScript in less than an hour).
+
+This is, however, not the main reason behind our intention to support this language. As always, we want to implement the features that our community wants the most, and C# support is definitely one of the most recurrent topics. We also believe that it will provide a high performance alternative to GDScript without having to compile Godot manually for C++, and a statically typed language for the developers allergic to duck typing.
+
+To clarify things: since the Mono runtime is relatively heavy, and many Godot users will prefer to stick to GDScript, we intend to provide the Mono-enabled version of Godot as a **separate download**. This means that users will have the choice to use Godot with GDScript only, or GDScript and Mono.
+
+### Why Visual Scripting?
+
+Another language currently being added to Godot is **VisualScript**, our take on visual programming. We are using an approach similar on the surface to Unreal's Blueprint, but pretty different under the hood.
+
+As we have seen so far many Godot users and other developers puzzled about Godot adding this functionality, we want to make very clear that it is not our intention to replace GDScript or traditional programming for a visual approach.
+
+To make it clearer, it is *not* our belief that forcing programmers to write code with visual blocks will result in a more efficient workflow. We know other game engines and solutions try to sell you this point of view, but rest assured that this is not our view or intention. We stand by programming and still believe it's the best.
+
+So then, again, why visual scripting? Our goals with it are the following:
+
+* Provide a way for non-programmers to experience what developing in Godot feels like, by ensuring they have a way to manipulate their game's logic.
+* Allow programmers to set up their scenes, AI, etc. in a way they can expose the coarse parameters and logic to level designers or game designers. This way, they can do tweaks without bothering programmers.
+* Allow programmers to expose how data is organized in a visual way. Godot's VisualScript has so much flexibility in how the graph flows that it allows creating dialogue trees, coarse game flow, event handling, etc. with small effort.
+
+Please understand it as just an extra tool, not as a replacement to programming. It will be possible to use both GDScript and VisualScript as complementary tool in a same project.
+
+## Binding new languages
+
+There currently is a lot of demand for additional languages, such as Java, Haxe, Swift, Object Pascal, etc. As Godot 2.2 will focus on new languages, this a great time to help us develop and improve the binding API. Of course it may seem like a challenging effort.
+
+Officially, our supported languages for now will be GDScript, Mono, VisualScript and C++. If you want to help integrate another language, you should first of all contact us (see contact info at the bottom of the site or use IRC: [#godotengine-devel on Freenode](https://webchat.freenode.net/?channels=godotengine-devel)). The process to add new languages is more or less the following:
+
+1. **Re-create Godot's basic types in your new language**: These are types such as `Vector3`, `int`, `float`, `String`, etc. Many of these are usually provided already.
+2. **Create a module**: A C++ module that creates binding code needs to be done ([creating modules in C++ is well documented](http://docs.godotengine.org/en/latest/reference/custom_modules_in_c++.html)). The entire exposed Godot API can be accessed via the static functions in `ObjectTypeDB`.
+3. **Generate binding code** in your new language that accesses the exposed functions in the `MethodBind` class (there is one for each exposed method).
+4. **Create a `ScriptLanguage`** class and supply the neccesary methods exposed for debugging, profiling, etc. You can supply symbols, code completion helpers, etc. if this language is meant to be edited inside Godot.
+
+Again, as this process is not fully streamlined yet, we encourage you to get in touch with us if you want to do this effort.
\ No newline at end of file
diff --git a/collections/_article/godot-google-summer-code-2018.md b/collections/_article/godot-google-summer-code-2018.md
new file mode 100644
index 0000000000..9209a88ca1
--- /dev/null
+++ b/collections/_article/godot-google-summer-code-2018.md
@@ -0,0 +1,44 @@
+---
+title: "Godot in Google Summer of Code 2018"
+excerpt: "Godot has been accepted into the Google Summer of Code program in 2018. This summer we will have 5 students working on new features to the engine."
+categories: ["progress-report"]
+author: George Marques
+image: /storage/app/uploads/public/5ad/f38/7a8/5adf387a8d4f0692142419.png
+date: 2018-04-24 11:04:00
+---
+
+For those who might not be aware, the Google Summer of Code is a yearly program that brings students from all over the world into open source projects. The students have the opportunity to get involved into a real software development process, while the organizations can welcome a new contributor working on a valuable feature, potentially becoming a regular after the summer is over.
+
+We developed a [list of ideas](https://github.com/godotengine/godot-roadmap/blob/master/GSOC-2018.md) to apply to the program (though students are free to come with their own proposals). Everything was made in a bit of a rush and without many announcements since we were quite busy with Godot 3.0 release and a few big events in the schedule. In February 12 we [got the good news](https://twitter.com/reduzio/status/963113170301865985) that Godot was accepted as participant organization.
+
+This is the first year Godot is participating in the program and we got the chance to accept five student projects that will be developed from May to August. The projects were just announced publicly and we are looking forward to see the development of the features.
+
+We hope that the Godot community will give a warm welcome for these new contributors that will be working with us during the summer. I'm sure that if the students feel the good vibes from the community they'll hang around and keep contributing to our engine.
+
+Without further ado, let's go through the list of accepted proposals:
+
+## Support for video decoder modules with GDNative
+
+This project will be about creating an interface into GDNative so custom video decoders can be added without the need of recompiling the engine. It'll enable Godot to support several video formats that are hard to integrate because of patents or licenses, while also avoiding the bloat in the base engine for those who don't need it.
+
+[Anish Bhobe (KidRigger)](https://github.com/KidRigger) will work on this project with the help of [karroffel](https://github.com/karroffel) and [Hein-Pieter van Braam (TMM/hpvb)](https://github.com/hpvb).
+
+## WebRTC support for multiplayer games
+
+The proposal by Brandon Michael Makin will add support for the WebRTC protocol into Godot's high-level network layer. This will make possible to create multiplayer games in the HTML5 platform among other benefits. [Max Hilbrunner (mhilbrunner)](https://github.com/mhilbrunner) and [Fabio Alessandrelli (faless)](https://github.com/faless) will help him in this endeavor.
+
+## GearVR and Daydream support
+
+With the help of [Bastiaan Olij (Mux213)](https://github.com/BastiaanOlij), who added the AR/VR system into Godot, [Paritosh Sharma](https://github.com/Paritosh97) will extend the system to support two mobile VR platforms: Samsung's GearVR and Google's Daydream.
+
+## Support for MIDI playback
+
+Daniel Matarov proposal's include the development of a MIDI bus, similar to Godot's audio buses, along with a sampler to allow the playback of MIDI songs. He'll be mentored by [Gilles Roudiere (Groud)](https://github.com/groud), [Marcelo Fernandez (marcelofg55)](https://github.com/marcelofg55), and [myself](https://github.com/vnen).
+
+## TSCN exporter for Blender
+
+While [already in development](https://github.com/godotengine/godot-blender-exporter), the plugin that exports Godot scenes directly from Blender is still in its infancy. With the help of [Geoff (sdfgeoff)](https://github.com/sdfgeoff), who's already improving the plugin, and [Juan Linietsky (reduz)](https://github.com/reduz), the student [Jiacheng Lu](https://github.com/Jason0214) will further work on it to get into a fully usable state. The exporter will help the workflow by removing the intermediary formats, such as Collada and glTF, so the output can be specifically tailored for Godot's needs.
+
+----
+
+We from the Godot team want to thank Google for this great program that bridges the connection from universities to open source projects. We also want to give a big welcome for the students and wish them the best of luck. Hopefully we all will get great things from this experience. Now let the work begin!
\ No newline at end of file
diff --git a/collections/_article/godot-google-summer-code-2019.md b/collections/_article/godot-google-summer-code-2019.md
new file mode 100644
index 0000000000..1e7eed3c91
--- /dev/null
+++ b/collections/_article/godot-google-summer-code-2019.md
@@ -0,0 +1,18 @@
+---
+title: "Godot in Google Summer of Code 2019"
+excerpt: "Godot will take part in the Google Summer of Code for the second time in a row, and we are thrilled at the opportunity to mentor students to work on interesting projects for the Godot community."
+categories: ["progress-report"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5c7/67d/8c6/5c767d8c62621713488685.png
+date: 2019-02-27 12:08:27
+---
+
+Google has accepted our application as participant organization in [Google Summer of Code](https://summerofcode.withgoogle.com) (GSoC) 2019! It's our second participation in the programme, after [GSoC 2018](/article/godot-google-summer-code-2018) where we had 5 students working on [exciting topics](/article/gsoc-2018-progress-report-1). Here's our **[organization page](https://summerofcode.withgoogle.com/organizations/6553848640962560/)** for 2019, and our [list of ideas for potential projects](https://github.com/godotengine/godot-roadmap/blob/master/GSoC/GSoC-2019.md). This list is not exhaustive, students are encourage to come with their own proposals (after having their relevance validated by core developers).
+
+Google Summer of Code is a yearly program that brings students from all over the world into open source projects. The students have the opportunity to get involved into a real software development process, while the organizations can welcome a new contributor working on a valuable feature, potentially becoming a regular after the summer is over. (Note: The program is called "Summer" of Code, but in the Southern hemisphere it happens during Winter. See the [timeline](https://summerofcode.withgoogle.com/how-it-works/#timeline) for exact dates.)
+
+Now's the time for interested students to become familiar with the engine's source code and our development workflow, get in touch with developers on IRC and use these contacts to define or refine their project proposal.
+
+We strongly encourage prospective students to try to start contributing on junior bug reports before the actual application deadline: we'll be more likely to pick students who have demonstrated that they can fit into our workflow. The application period goes from **March 25 to April 9**.
+
+See our **[organization page](https://summerofcode.withgoogle.com/organizations/6553848640962560/)** for more details on the process, how to get started contributing to Godot and how to prepare your application.
\ No newline at end of file
diff --git a/collections/_article/godot-has-been-renamed-godette-engine.md b/collections/_article/godot-has-been-renamed-godette-engine.md
new file mode 100644
index 0000000000..35a5ce0692
--- /dev/null
+++ b/collections/_article/godot-has-been-renamed-godette-engine.md
@@ -0,0 +1,56 @@
+---
+title: "Godot has been renamed to Godette Engine"
+excerpt: "After months of internal debate, we have decided to deal once and for all with a hot topic and the source of much criticism. Godot is being rebranded in order to gain wider appeal and acceptance."
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/606/4fb/1b9/6064fb1b9a8b5692034114.png
+date: 2021-04-01 00:10:00
+---
+
+***Edit:** We have seen many comments on our April Fool's joke. We strive to make the Godot community, and game development in general, a welcoming place for everyone. By not understanding the various ways in which our joke could be interpreted we have failed in this goal.*
+
+*The Godette character was made [years ago](https://twitter.com/reduzio/status/958305883976536064). It was not created for this joke. The joke itself was intended to poke fun at a very vocal minority of users who think that our robot logo isn't "professional", thus the joke was us pretending to be switching to an even more playful character.*
+
+*Having said that: our intention does not matter if so many people interpreted the article in the way they did. We apologize for the oversight. We strive to do better in the future.*
+
+----
+
+After months of internal debate, we have decided to deal once and for all with a hot topic and the source of much criticism. Godot is being rebranded in order to gain wider commercial appeal.
+
+### Epiphany
+
+It may have taken us a long time, but we finally understood and accept that Godot is about reaching *wider audiences*, about making something ***ultimate***, about going be beyond what ***any other game engine*** has ever attempted.
+
+We thought we had ***everything***. Passionate contributors, an amazing community, and dedicated leadership. Yet, something ***kept getting in our way*** and we could not figure what it was. Sleepless nights and months of ~~watching anime during lockd~~heated debate were required for us to achieve epiphany, the realization that something had to change.
+
+### The Godot name
+
+How are we supposed to work on something ~~the English speak~~no one knows how to pronounce? Is it Go-Dot, Go-DOUGH? GOH-do? Robot? Not even the original authors have a clue when you ask them.
+
+Additionally, we realized that a big problem of Godot as a project name is that it's simply ***not cute***. To attract wider audiences, a different name must be found, a more marketable one which speaks to a broader public.
+
+### The Godot logo
+
+Since Godot was open sourced, we received countless amount of criticism from a ~~small vocal min~~majority of the community, pointing out the lack of professionalism of the Godot logo. Have you ever read comments from community members like these?
+
+- It doesn't look like the logo of a commercial game engine.
+- I would not pay for something with this logo.
+- The robot scares me; I can't sleep at night.
+- Uh, I thought the original logo was a guy's head popping out of a castle tower, now the new one does not even make sense.
+- I'm afraid of clowns.
+
+Yes, we did too. They are all over the place. They are the writing on the wall we would refuse to see.
+
+### The NEW branding
+
+After weeks of consultation with ~~Reddit users~~[**professional marketing experts**](https://twitter.com/reduzio/status/1367975083562655745), it was decided to rebrand both Godot and its logo to convey a more professional branding. From now on, the project will be known as **Godette Engine** and the new logo will reflect this:
+
+
+
+We'll now use this branding for the engine, and our website is hosted at [**https://godetteengine.org**](https://godetteengine.org).
+
+Our official Twitter account has also been moved over to [@godetteengine](https://twitter.com/godetteengine) so make sure to give it a follow.
+
+### More changes coming
+
+Also, in order to make the engine more commercially appealing, we are evaluating other changes, such as moving the engine to a premium *shared revenue* model, *increasing* the download size to a few gigabytes, and making any kind of help or support *paid*. A bright future is coming for our ~~sharehold~~community. We hope to be able to tell you more very soon (probably on April 2, since it's now April 1).
\ No newline at end of file
diff --git a/collections/_article/godot-history-images.md b/collections/_article/godot-history-images.md
new file mode 100644
index 0000000000..4242f386b7
--- /dev/null
+++ b/collections/_article/godot-history-images.md
@@ -0,0 +1,32 @@
+---
+title: "Godot history in images!"
+excerpt: "How does more than a decade of engine development look like?"
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/57f/215/a0e/57f215a0e3c2a359176299.png
+date: 2014-01-15 00:00:00
+---
+
+## A trip down Godot Memory Lane
+
+Godot was not always called Godot, it went through many (horrible) names, in the following order:
+
+* Larvotor
+* Legacy
+* NG3D
+* Larvita
+* Larvita2
+* Larvita3
+* Godot
+
+In fact, Godot was just a code-name for what would be something else, a more general purpose engine with a proper UI instead of a set of assorted tools. We knew it would take a long time, so we used a name based on a play by Samuel Becket to represent that feeling. Eventually the name would change to something with a connection to our home country, Argentina.
+
+In a bizarre twist of fate, at some point and well into the development of the engine, we played a video game with a character that formed that connection (bonus points to anyone who figures it out), so the engine is also named in honor to that. This is good, because the original Godot was never supposed to arrive (well, that’s one interpretation...).
+
+## History in pictures
+
+Enough talk. So, how does more than a decade of engine development look like? Like a mess, obviously! (wait for images to load if it’s taking too long!)
+
+
+
+We hope that future screens in the next years will be of your games, not ours!
\ No newline at end of file
diff --git a/collections/_article/godot-jam-starts-now-theme-temperature.md b/collections/_article/godot-jam-starts-now-theme-temperature.md
new file mode 100644
index 0000000000..b042cc9fbb
--- /dev/null
+++ b/collections/_article/godot-jam-starts-now-theme-temperature.md
@@ -0,0 +1,46 @@
+---
+title: "The Godot Jam starts now, theme: Temperature"
+excerpt: "With a slight delay, the Godot Community Game Jam is now starting and we can announce the theme that was elected by the community: TEMPERATURE!
+
+The jam starts today (Friday 15 June) at 19:30 UTC and will end on Monday 18 June at 23:59:59 UTC. Have fun and good luck!"
+categories: ["events"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5b2/41b/605/5b241b605209f362633139.png
+date: 2018-06-15 19:30:00
+---
+
+With a slight delay(1), the [**Godot Community Game Jam**](https://itch.io/jam/godotjam062018) is now starting and we can announce the theme that was elected by the community:
+
+**TEMPERATURE**
+
+That's it! The jam starts today (Friday 15 June) at 19:30 UTC and will end on **Monday 18 June at 23:59:59 UTC**.
+
+## Rules
+
+The rules are detailed on the [jam page](https://itch.io/jam/godotjam062018), but let's mention them here too for clarity:
+
+- Theme: **TEMPERATURE**
+- The theme can be interpreted freely, but keep in mind that your interpretation should be understandable if you want to get points for it.
+- The game should use Godot Engine :)
+- Contestants can partake alone or as a team. Reusing existing code and assets is allowed.
+- Source code under [proper open source licenses](https://choosealicense.com/) should be provided for each game
+
+## Rating
+
+Once the jam ends, everyone with an [itch.io](https://itch.io) account will be able to play and rate the games. The categories used for evaluating games will be:
+
+- *Theme interpretation*
+- *Gameplay*
+- *Graphics and sound*
+
+Those three criteria are averaged into the *Overall* criterion, which is used to determine the jam winners. The winners in each category will also get their spotlight :)
+
+## Prizes
+
+Like many jams, the main purpose of the Godot Jam is to encourage users to actually make games and be proud of their achievement. And like many jams, the main outcome of Godot Jam is *exposure* \o/ and experience (and a wealth of open source projects to play with and learn from).
+
+But we may have some goodies for the jam winner and category winners, and maybe some more... Stay tuned for a later announcement :)
+
+Have fun and good luck!
+
+
(1) Reportedly due to some project manager enjoying a leisurely real-life time and completely forgetting that he had to announce the jam theme, only to discover one hour too late the panic that roared on the Discord group in the meantime... But those alternative facts could not be confirmed, and it's unlikely that an organization as serious as Godot Engine would have a single point of failure for such an event.
\ No newline at end of file
diff --git a/collections/_article/godot-joins-software-freedom-conservancy.md b/collections/_article/godot-joins-software-freedom-conservancy.md
new file mode 100644
index 0000000000..e44b0668fc
--- /dev/null
+++ b/collections/_article/godot-joins-software-freedom-conservancy.md
@@ -0,0 +1,20 @@
+---
+title: "Godot joins Software Freedom Conservancy"
+excerpt: "Godot is the newest member of Software Freedom Conservancy!"
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/56c/326/ef2/56c326ef24792179061082.png
+date: 2015-11-04 00:00:00
+---
+
+Godot is the newest member of Software Freedom Conservancy!
+
+Today we want to publicly announce that [Godot has joined Software Freedom Conservancy](https://sfconservancy.org/news/2015/nov/04/godot-joins) as a member! Conservancy is now our non-profit corporate home.
+
+Conservancy is a non-profit public charity that provides a home to its member projects that develop Free, Libre, and Open Source Software (FLOSS). Conservancy's assistance allows software developers and documenters to enjoy the benefits of nonprofit incorporation and expertise without having to independently undertake all of the effort to do it on their own. Joining Conservancy allows projects to collect donations, hold assets, and provide some liability protection for their lead developers' project-related activities. Software Freedom Conservancy, Inc. is a tax-exempt 501(c)(3) organization, incorporated in New York State.
+
+Ariel Manzur, core Godot developer, commented, “This is a huge step for us towards becoming a more open, rooted, and long lasting organization, to provide a more meaningful and robust contribution to the game development community, and software in general, and we're honored to have the support of Conservancy to achieve this.“
+
+“We're thrilled to have Godot join Conservancy's projects,“ said Karen Sandler, Executive Director of Conservancy. “Games are an important part of the software ecosystem and freedom in this area is essential as they are often the first entry point for people to learn about software and how it works.“
+
+As a result, we will soon be able to offer the possibility to ask for donations and get corporate sponsoring programs. Stay tuned!
\ No newline at end of file
diff --git a/collections/_article/godot-leap-motion-support.md b/collections/_article/godot-leap-motion-support.md
new file mode 100644
index 0000000000..f1c494fa9b
--- /dev/null
+++ b/collections/_article/godot-leap-motion-support.md
@@ -0,0 +1,25 @@
+---
+title: "Godot Leap Motion Support"
+excerpt: "Leap Motion hand tracking support arrives with Godot 3.0.3"
+categories: ["news"]
+author: Bastiaan Olij
+image: /storage/app/uploads/public/5b2/78c/51c/5b278c51c79b7843614393.jpg
+date: 2018-06-19 12:35:32
+---
+
+Support for the [Leap Motion](http://www.leapmotion.com/) sensor was added as a [GDNative plugin](https://godotengine.org/asset-library/asset/215) a few months back however full support for this sensor required changes made in Godot 3.0.3.
+
+With Godot 3.0.3 officially released we can now announce support for this wonderful device. The module uses Leap Motions latest LeapC libraries which are a big improvement on their older API. This new API has only been released for Windows at this point in time so there is no support for Linux and Mac yet.
+
+The Leap Motion sensor tracks hand and finger movement and in such offers a very natural interface. Leap Motion made the change to using their technology in the AR and VR space a year or two ago and it is a wonderful fit. Being able to use your hands directly in virtual reality is a great experience.
+
+**Using the Leap Motion**
+
+To use the Leap Motion in Godot couldn't be simpler. Just download the [Leap Motion asset](https://godotengine.org/asset-library/asset/215) from the asset library into your project. You will find several scenes inside this module that you can add that immediately set up the device.
+
+In a non-VR application just place the sensor node somewhere in your scene and the hands will magically appear in relation to that node.
+For a VR application you should place the sensor node as a child node of your `ARVROrigin` node and turn the ARVR mode of the sensor on. It will automatically take into account that the Leap Motion sensor is attached to your HMD.
+
+When you select your sensor node you will see that all the properties to configure the sensor are shown:
+
+
\ No newline at end of file
diff --git a/collections/_article/godot-now-really-free.md b/collections/_article/godot-now-really-free.md
new file mode 100644
index 0000000000..44dff17c6f
--- /dev/null
+++ b/collections/_article/godot-now-really-free.md
@@ -0,0 +1,50 @@
+---
+title: "Godot is now really free!"
+excerpt: "APRIL FOOLS' DAY JOKE! -- Godot goes fully FREE to follow the standards of the game development industry, including a mandatory Splash Screen of Pride, the removable of scripting languages support and of course very interesting conditions to share the profit of your work with your beloved engine developers!"
+categories: ["news"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/56f/d20/248/56fd202489c27661475944.png
+date: 2015-04-01 00:00:00
+---
+
+**Edit: This was of course a light-hearted joke for April Fools' Day 2015 :)**
+
+## Free Godot
+
+We have noticed a happy new industry trend amongst the major video game engines. In the interest of keeping hip with the trend, we decided to also follow suit. As of 12:01am CST today, we are very excited and overwhelmingly proud to announce that the entire Godot Engine is now **FREE**!
+
+You must be wondering what has changed. Truth is, Godot’s license allowed users to do anything, so it wasn’t really following the true definition of “free” which was adopted by the industry leaders. To make Godot a more viable choice in the eyes of developers, we have decided to attach strings to its freedom.
+
+Finally, Godot now has usage restrictions more fitting of a real-world game engine. What follows is a brief introduction to the changes we have implemented, effective immediately:
+
+### Splash screen of pride
+
+We know you are too poor to afford professional software, so we are following industry leaders and Free Godot is adding an unchangeable, mandatory splash screen. This way you can let your customers know how proud you are to be poor.
+
+
+
+### No scripting language
+
+You have a lot of complaints about GDScript. We hear you! Loud and clear. Every few days someone is asking for Lua, C#, *real* Python, or some other kind of scripting language that isn’t the one that we had so tightly integrated into the engine.
+
+Effective immediately, Godot has no scripting language. Just download the Free Godot Engine source code program directly in C++! Or better yet, you can integrate your favorite VM!
+
+
+
+### Sharing your success
+
+We want you to be successful, and we want to be successful right there with you. But only if you succeed. In other words, your success will never be 100% completely yours. If your game makes money, we want a small part of it. If you go out for drinks, we want a beer. The same way if you purchase a new house, we want a room there. Some kinds of success are priceless; in such cases you are not required to share. An example of this is having success with a romantic partner (as long as you don’t pay for it).
+
+We feel that a 10% cut of all sales is not unreasonable to ask for. Think of it as a tithe to Lord Godot. True, you don’t have a choice in the matter. But remember, the Lord Godot loveth a cheerful giver!
+
+
+
+### Democratizing development
+
+We also want to democratize game development. As you know, Godot Engine developers and other members of the community have always listened to your concerns, troubleshot your problems, fixed bugs you reported, implemented many of your suggestions and merged untold numbers of pull requests. This may have sufficed at one point in our history, but can continue no longer, as it’s clearly a greivous form of communism, and communism is the enemy of democracy.
+
+From now on, you will be free to continue sending improvements, reporting bugs, and suggesting improvements, however, we will not act of any of it without first receiving the appropriate payment (we accept cash, checque, money order, and beer). As the core development team, we will only do asmall, fixed amount of work, and then sit on our asses drinking beer until we are re-elec^H^H publish a new major version – just like real democracy.
+
+
+
+To make it clear, the new terms will being applying at 12:01am CST of **April 1st**. Of course, you can always ignore all this and keep using the MIT license, which gives you complete and absolute freedom, without any strings attached, even if it’s not trendy!
\ No newline at end of file
diff --git a/collections/_article/godot-oculus-quest-support.md b/collections/_article/godot-oculus-quest-support.md
new file mode 100644
index 0000000000..cd717be949
--- /dev/null
+++ b/collections/_article/godot-oculus-quest-support.md
@@ -0,0 +1,113 @@
+---
+title: "Godot Oculus Quest support"
+excerpt: "Godot works on the Oculus Quest, find out more about getting up and running if you want to play around with it early."
+categories: ["progress-report"]
+author: Bastiaan Olij
+image: /storage/app/uploads/public/5e0/038/931/5e00389316ad1115387831.png
+date: 2019-12-23 03:52:02
+---
+
+Godot has been running on the Oculus Quest since early this year. We've been hard at work improving support for this amazing device.
+
+Late last year a new team member joined who has taken Quest support under his wing, so a special shout out to Fredia Huya-Kouadio ([m4gr3d](https://github.com/m4gr3d)), all credit goes to him. Also a quick shout out to Holger Dammertz ([NeoSpark314](https://github.com/NeoSpark314)) who has been doing a lot of testing, building examples and really pushing the limits of what Godot can do on the Quest.
+
+Oculus themselves started showing an interest in the work as well and have been very supportive of our efforts including providing hardware to core team members.
+
+The Quest seems uniquely positioned for those who enjoy working with Godot. Due to the stand alone nature of the device and it building ontop of Android you don't need a lot more to get going. Whether you are on Windows, macOS or Linux, if your machine runs Godot you can develop for the Quest.
+
+## Getting started
+
+You do need Godot 3.2 or later as various enhancements were made to the Android platform. As 3.2 is still in beta at this time download the latest beta. Keep an eye out for the announcement blog posts as you want the latest release. Also make sure to install the export templates that go with the version you download.
+
+Next follow the instructions in the help pages:
+[Exporting for Android](https://docs.godotengine.org/en/latest/getting_started/workflow/export/exporting_for_android.html).
+This leads you through installing the toolset that Godot needs to export to Android devices.
+
+Last but not least you will need the Quest plugin. Once Godot 3.2 is officially released we will make this plugin available in the Asset Library but to prevent confusion it is a manual download for now: [GodotVR/godot-oculus-mobile-asset](https://github.com/GodotVR/godot-oculus-mobile-asset)
+
+Open up Godot and create a new project.
+
+
+
+Make sure to chose the **GLES2** renderer. Due to optimisations in the Quest's GPU this backend is far better suited for the Quest.
+
+Copy the addons folder from the Oculus Mobile asset into your Godot project. Your project tree should looks something like this:
+
+
+
+
+Now we can start building our main scene. To keep things simple we'll stick to the bare minimum.
+
+* We add an `ARVROrigin` node first.
+* Then we add three child nodes to the origin node, one `ARVRCamera` and two `ARVRControllers`.
+* Assign controller id 1 to the first `ARVRController` and rename that to `LeftHand`.
+* Assign controller id 2 to the second `ARVRController` and rename that to `RightHand`.
+* Finally we'll add a `MeshInstance` as a child node to our first `ARVRController` and create a box shape, resize the box so each side is set to 0.1. Now duplicate the `MeshInstance` and move it to the second `ARVRController` node. These will stand in for our controllers, we're keeping things really simple.
+
+
+
+Now add a script to the main node and add the following code:
+
+```
+extends Spatial
+
+onready var ovr_init_config = preload("res://addons/godot_ovrmobile/OvrInitConfig.gdns").new()
+onready var ovr_performance = preload("res://addons/godot_ovrmobile/OvrPerformance.gdns").new()
+
+var perform_runtime_config = false
+
+func _ready():
+ var interface = ARVRServer.find_interface("OVRMobile")
+ if interface:
+ ovr_init_config.set_render_target_size_multiplier(1)
+
+ if interface.initialize():
+ get_viewport().arvr = true
+
+func _process(_delta):
+ if !perform_runtime_config:
+ ovr_performance.set_clock_levels(1, 1)
+ ovr_performance.set_extra_latency_mode(1)
+ perform_runtime_config = true
+```
+
+Before we can export our project to our Quest we need to do three more things.
+
+First go into the project settings for our project and make sure that our main scene is the scene we run. Godot does not ask you to set this on export.
+
+
+
+Then go into the export menu and configure a new Android export. Now I'm assuming you followed the instructions in the "Exporting for Android" page I refered to at the start. If you didn't you'll have some red messages on this screen and I highly recommend you revisit that page.
+
+If you did we can forge ahead and make a few small changes to the export settings.
+First we change the XR Mode to "Oculus Mobile VR".
+Then we change our Degrees of Freedom mode to "6DOF".
+
+
+
+Now save and close the export window.
+
+Finally wip out your phone, when you got your Quest you needed to install an Oculus app on it and link it up to your Quest. Start the Oculus app. Press the settings cogwheel on the bottom right hand side. Select your Quest:
+
+
+
+Select "More Settings", and select "Developer Mode":
+
+
+
+Now turn developer mode on:
+
+
+
+This allows us to deploy our games to the Quest.
+
+Connect the Quest to your PC with the provided USB cable. Put the Quest on, it may give a few dialogs to give the PC permission to deploy apps.
+Now hit the little Android button that should be visible in the top right hand side of your Godot window. It should build your game and export it to the Quest.
+
+The above does the bare minimum to get your project running on the Quest, it's not very exciting. Holger Dammertz has made a great toolkit for the quest that contains a lot of scenes to get help you on your way including really nice controller meshes.
+
+You can find his toolkit here: [NeoSpark314/godot_oculus_quest_toolkit](https://github.com/NeoSpark314/godot_oculus_quest_toolkit).
+
+If you want to help out with improving the plugin please join us here: [GodotVR/godot_oculus_mobile](https://github.com/GodotVR/godot_oculus_mobile).
+
+Last but not least, Android C# support for Godot has been added and is being tested in Godot 3.2 beta 4. We will be doing a getting started tutorial on that soon.
\ No newline at end of file
diff --git a/collections/_article/godot-openxr-111-plugin-release.md b/collections/_article/godot-openxr-111-plugin-release.md
new file mode 100644
index 0000000000..1ed936ba63
--- /dev/null
+++ b/collections/_article/godot-openxr-111-plugin-release.md
@@ -0,0 +1,62 @@
+---
+title: "Godot OpenXR 1.1.1 Plugin Release"
+excerpt: "Announcement for the release of the 1.1.1 Godot OpenXR plugin. The release includes several features including updated XR documentation, support for Meta Passthrough api and support for OpenXR hand tracking api."
+categories: ["release"]
+author: Fredia Huya-Kouadio
+image: /storage/app/uploads/public/61f/18c/b23/61f18cb23063a771877721.png
+date: 2022-01-26 11:15:00
+---
+
+The [Godot XR contributors](https://github.com/GodotVR/godot_openxr/blob/e4af8c7b7168a7748a4e4929bc6779bb422baca7/CONTRIBUTORS.md) are delighted to release our latest version of the Godot OpenXR plugin!
+
+This release contains several updates to provide Godot XR developers access to the latest and greatest XR APIs and features.
+
+
+# Download
+The plugin can be retrieved from the [asset library](https://godotengine.org/asset-library/asset/986).
+
+**Requires Godot 3.4 or higher.**
+
+# Highlights
+## [Updated XR Documentation](https://docs.godotengine.org/en/stable/tutorials/vr/index.html)
+The [Godot XR documentation](https://docs.godotengine.org/en/stable/tutorials/vr/index.html) has been updated to better reflect the level of support that Godot provides for XR projects and consolidate the information in one location.
+
+We now have separate landing points for each XR API supported by the Godot Engine.
+
+### [OpenXR plugin](https://docs.godotengine.org/en/stable/tutorials/vr/openxr/index.html)
+This plugin leverages the [Khronos OpenXR spec](https://www.khronos.org/openxr/) and is the recommended path to use when developing Godot XR games and applications. This plugin is cross-platform (e.g: Meta Quest, Valve Index, etc).
+
+### [Meta VrApi plugin (deprecated)](https://docs.godotengine.org/en/stable/tutorials/vr/oculus_mobile/index.html)
+This plugin leverages Meta’s [VrApi api](https://developer.oculus.com/documentation/native/android/mobile-vrapi/) and only supports the Meta Quest line of devices. The VrApi api has been [deprecated in favor of OpenXR](https://developer.oculus.com/blog/oculus-all-in-on-openxr-deprecates-proprietary-apis/), and as such development on this plugin has stopped.
+
+Users of this plugin are recommended to migrate to the Godot OpenXR plugin.
+
+### [OpenVR plugin](https://docs.godotengine.org/en/stable/tutorials/vr/openvr/index.html)
+This plugin leverages [Valve’s OpenVR api](https://en.wikipedia.org/wiki/OpenVR) and supports almost all PC based headsets, targeting both the Windows and Linux operating system.
+
+Valve has not officially deprecated the OpenVR api but is also showing a commitment to moving to OpenXR as their primary interface to SteamVR and as such users of this plugin are recommended to migrate to the Godot OpenXR plugin.
+
+We are however committed to maintaining this plugin.
+
+## Passthrough Support
+This release adds support for [Meta’s Passthrough api](https://developer.oculus.com/blog/mixed-reality-with-passthrough/) enabling Godot XR developers the ability to create mixed reality games and apps for the **Meta Quest** and **Meta Quest 2**.
+The documentation has been updated to provide [instructions for how to leverage this capability](https://docs.godotengine.org/en/stable/tutorials/vr/openxr/passthrough.html)!
+
+We’re planning to expose more capabilities of the Passthrough api in future releases, so don’t hesitate to provide feedback on desired features!
+
+## Meta Quest Hand Tracking Support
+This release adds support for OpenXR’s hand tracking api on the **Meta Quest** and **Meta Quest 2**.
+
+Support for this api was already enabled for other platforms and devices, but a bug prevented it from working correctly on the Quest. The issue has been resolved in this release, making the feature available to use across all supported devices.
+
+The documentation will be updated shortly with instructions for how to better leverage this capability.
+
+## And more!
+In addition to these features, this release contains several bug fixes and QoL improvements to improve the experience of Godot XR developers!
+
+For more details on the other changes, please consult our [curated changelog](https://github.com/GodotVR/godot_openxr/releases/tag/1.1.1).
+
+# Reporting Issues
+For any issues encountered while using the Godot OpenXR plugin, or for any clarifications/improvements to the Godot XR documentation, feel free to open a [github issue under the Godot OpenXR github page](https://github.com/GodotVR/godot_openxr/issues)!
+
+**The list of current known issues can be found [here](https://github.com/GodotVR/godot_openxr/issues?q=is%3Aopen+is%3Aissue+label%3Abug).**
\ No newline at end of file
diff --git a/collections/_article/godot-openxr-support.md b/collections/_article/godot-openxr-support.md
new file mode 100644
index 0000000000..734cabc950
--- /dev/null
+++ b/collections/_article/godot-openxr-support.md
@@ -0,0 +1,50 @@
+---
+title: "Godot OpenXR support"
+excerpt: "An update on the current work being rounded off adding OpenXR support to Godot 3 through a plugin and the planned work for Godot 4."
+categories: ["progress-report"]
+author: Bastiaan Olij
+image: /storage/app/uploads/public/605/33d/fed/60533dfed520d231708447.jpg
+date: 2021-03-18 11:57:39
+---
+
+[OpenXR](https://www.khronos.org/openxr/) is a new open standard for interacting with XR hardware by the wonderful people at Khronos. This has been one of these rare cases where all the industry leaders have come together and come up with a standard that combines all the best practices of the different solutions available so far.
+
+With the announcement of the 0.9 specification roughly two years ago Microsoft showed off their runtime as well as [Collabora](https://www.collabora.com) with their open source Linux based OpenXR runtime called Monado.
+Last year both Oculus and Valve introduced their runtimes and while still officially in beta they are fully functional at the time of writing this blog post.
+
+## Godot 3.3 OpenXR plugin
+
+It has flown under the radar somewhat but Godot was one of the first game engines to show off OpenXR support. Thanks to the wonderful work of Christoph Haag in porting the [OpenHMD](http://www.openhmd.net/) Godot plugin to OpenXR, Collabora was able to show off Godot running Calinou's port of the [Sponza demo](https://github.com/Calinou/godot-sponza) on Linux using a Vive headset back in early 2019. You can read their news article [here](https://www.collabora.com/news-and-blog/news-and-events/introducing-monado.html).
+
+Last year Bastiaan Olij started collaborating with Christoph Haag and helped add Windows support to the plugin, setting up automatic builds of the plugin, implemented a first version of the OpenXR action system with a focus on making it compatible with Godot's current controller approach, and added finger tracking support.
+
+Christoph is currently working on the still experimental Android support for OpenXR.
+
+The plugin has been tested to work well both within the Oculus and SteamXR ecosystems on Windows, and SteamXR and Monado on Linux.
+
+It is not yet available through the asset library but the latest build can be downloaded from [the releases page](https://github.com/GodotVR/godot_openxr/releases) on the [GodotVR GitHub repository](https://github.com/GodotVR).
+
+We've also made a start on documentation for the plugin [here](https://github.com/GodotVR/godot_openxr/wiki). It will tell you how to get going with the plugin.
+
+## Microsoft? Can we use Godot for the Hololens?
+
+Microsoft was one of the first to have a fully functioning OpenXR runtime, however it currently only supports DirectX. As Godot is an OpenGL based engine this has proven to be a stumbling block.
+
+Godot can work with DirectX and can run on UWP using the Angle OpenGL → DirectX library, so in theory this could be made to work.
+However with Angle no longer being maintained by Microsoft and not having access to the required hardware, work on this has stalled.
+
+If anyone with experience in this area is willing to give it a go, please contact us!
+
+We don't know yet how thing will progress regarding Vulkan, whether Microsoft will introduce native Vulkan support or if any good Vulkan → DirectX library similar to MoltenVK for Vulkan → Metal will become available.
+
+## Godot 4 and OpenXR
+
+And that brings us to today. XR support on Godot 4 has stalled throughout 2020 due to the ongoing rewrite of the rendering backend, however with Bastiaan Olij being hired by the Godot organisation through a grant provided by [Facebook Reality Labs](https://godotengine.org/article/godot-engine-receiving-support-funded-facebook-reality-labs) specifically to focus on OpenXR support, the future is looking bright.
+
+February was used to round off a number of things in the Godot 3.2 OpenXR plugin and to work our ideas out further. This is a project that will take several months as we're not just bringing OpenXR support to Godot 4, we're also looking into specific optimisations in the render engine for mobile rendering and XR-specific needs, but we expect to be able to show some real progress soon!
+The focus for March lies with getting the Vulkan renderer working on Android after which we'll start making changes to the rendering engine to support a better way of doing stereoscopic rendering then we had in Godot 3.
+
+
+---
+
+*The image is courtesy of* [**VRWorkout**](https://vrworkout.at/)*, a popular VR workout game made with Godot and available on SideQuest and Steam for free.*
\ No newline at end of file
diff --git a/collections/_article/godot-project-management-101.md b/collections/_article/godot-project-management-101.md
new file mode 100644
index 0000000000..bb3f0c276e
--- /dev/null
+++ b/collections/_article/godot-project-management-101.md
@@ -0,0 +1,122 @@
+---
+title: "Godot project management 101"
+excerpt: "As we just reached our third goal on Patreon, we are now able to hire Rémi Verschelde (Akien) as full-time project manager and representative! In this article, he gives some insights on what brought him to Godot, how he helped organize the teamwork and became the de facto project manager, as well as plans for the future."
+categories: ["news"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5ab/a37/9bc/5aba379bcde42258374818.jpg
+date: 2018-03-27 12:24:07
+---
+
+If you are eagerly watching our [Patreon page](https://www.patreon.com/godotengine) for news or following [Juan on Twitter](https://twitter.com/reduzio/status/978288010117529600), you might have seen that we just reached our third Patreon goal at a very generous USD 7,500 per month!
+
+After hiring our lead developer [Juan Linietsky](https://github.com/reduz) full-time in [September 2017](/article/patreon-first-goal-achieved), and our GDNative and GLES 2 developer [karroffel](https://github.com/karroffel) part-time in [December 2017](/article/please-help-us-reach-our-second-patreon-goal), we can now hire myself ([Rémi Verschelde](https://github.com/akien-mga)) full-time too as project manager, release manager, and representative!
+
+Given the good progress of our Patreon campaign, we actually anticipated this goal and I have been working full-time since early March (after quitting my previous job in February). Reaching the goal means that we'll be able to honor our payroll without having to eat into our limited pre-existing assets, which is more sustainable :)
+
+In this post I will try to highlight a bit what those three "positions" mean, to shed some light on the less glamorous but very needed management and public relations of a community-led FOSS project like Godot. For those interested, I'll start by a ~~quick~~ history of how I came to Godot and my involvement so far, which can give you a "real life" illustration of what community-led project management means. You can also skip directly to the "What now?" section if it's TL;DR for you ;)
+
+## From user to contributor and project manager
+
+I first heard of Godot in December 2014, [when version 1.0 was released](/article/godot-engine-reaches-1-0) (note that author information on those old blog posts is incorrect, I was not posting articles at that time :)). I was (and still am) quite fond of Free Software, including libre games, and a free and open source engine that runs natively on Linux was very appealing to me. My first interest was actually to package Godot for my Linux distribution [Mageia](https://www.mageia.org), which was the first one with an official Godot package. Like Godot, it's a community-led not-for-profit free and open source project, so I could eventually reuse my Mageia experience to help improve Godot's development.
+
+I read some of the documentation and tried demos, but only started learning and using the engine for real mid 2015 with [version 1.1](/article/godot-1-1-out). Since I was familiar with open source projects, I quickly found my way to the GitHub repository to report a few bugs and enhancement requests.
+
+I saw that there was a great momentum and that Juan was a very friendly and caring project maintainer, but that there were some things hindering the project's full potential:
+
+1. The issues repository was a mess. Most issues lacked the information that could actually be of use to developers (detailed bug description, steps to reproduce, affected version and platform, etc.), and a big part of the issues were actually fixed already in released versions of Godot, but nobody had taken care to close them. Juan (and [Ariel](https://github.com/punto-) too to a lesser extent) was the only one able to manage the issue tracker, and did not have time nor bug triage experience to do it efficiently.
+
+2. Similar story for pull requests (PRs). Most PRs had inconsistent code quality and style, and a relatively messy git history (e.g. 3 or 4 merge commits in the same PR for a simple change in one file). Here again Juan was the only one "in charge" of reviewing PRs, and that showed. Worse for the momentum of the project: Juan likes to stay focused when developing features, so he would not check PRs often. He would usually check all PRs at the same time once a month, and merge most of them after a quick glance, then do fixes himself for what was problematic in some of the merged PRs. This had two negative effects:
+
+ * No real code review was done, and good features with not-so-good code were merged, slightly increasing the technical debt.
+ * Most contributors had to wait for weeks if not months to get feedback on their PRs. Since most of those were first-time contributors, they would eventually stop caring about the project and move to something else.
+
+3. It was almost impossible to contribute to the documentation. We were using the GitHub wiki feature at that time, which meant that only users with write access to the git repo could modify documentation. At that time, that meant only Juan and Ariel, since they were understably not willing to give full permissions on the repo to new contributors.
+
+4. Release cycles for minor versions were long (6 months from 1.0 to 1.1, 8 months from 1.1 to 2.0), and in the meantime some users were stuck on an outdated stable versions while others were putting up with the occasional post-mass-merge instability in the *master* branch.
+
+Back then I did not formalize those issues as clearly, but I saw that stuff needed to be done and that I had experience with it thanks to my involvement in Mageia as a packager, QA tester and bug triager. As a jack of all trades and master of none, I started working on a bit of everything that seemed necessary for the project to continue growing and be successful.
+
+### Bugsquad
+
+So I started with the most pressing issue: developers (be it Juan or any other contributor) can't work efficiently if they don't know what are the bugs users are experiencing in the engine, and how to reproduce them. I started by going through issues, asking reporters for more details or to check if their issue was still valid in Godot 1.1 or the master branch... it was tedious work but helped us close some obsolete issues and prioritize some valid ones. I still wasn't able to press the "Close" button on issues myself though, due to GitHub's restriction that only people with write access to the repo (i.e. able to push commits live without making PRs) could triage issues, though I was still dependent on the issue reporter or Juan closing the fixed issues.
+
+Eventually I harassed Juan so much that he agreed to give me write access to the repo, as well as to a couple other trustworthy contributors, to organize the "Bugsquad" or bug triage team. Its role was (and still is) to assign labels to issues (bug report, enhancement request, what platform does it affect, what part of the engine is it about, etc.) and pull requests, and ensure that fixed or invalid issues were actually closed and that open ones were descriptive enough to be useful. It took us several weeks of work to go through the backlog of 2,000 issues, but we could close about half of them and give more visibility to the still valid ones (leading to a much better user experience in Godot 2.0, since contributors could find and fix usability quirks much faster). I did a big part of that work initially, and little by little I encouraged more experienced Godot users to join the Bugsquad and help spread the workload.
+
+### Merging PRs
+
+In parallel, I started bugging Juan regularly about pull requests. It was hard for me to review them with very little experience with the engine's internals, but some were simple enough even for me to understand: typo fixes, documentation updates, compilation fixes (there was no CI and some platforms broke regularly), or usability improvements in the editor. It made no sense for such changes to wait in the limbo for the next "big merge" a month later, so I sent Juan links to PRs to review and merge in priority on IRC.
+
+Eventually, since I had full write access to the repo because of the Bugsquad's work, Juan told me that I could merge such PRs myself if I was confident enough. I was a bit impressed to have so much responsibility while being a quite average developer (I'm energy engineer initially, not engine programmer :)), and afraid to do mistakes. But I went ahead and merged some stuff, at first very conservatively, and later on a bit boldly. The first reverts when I merged something that I shouldn't have arrived quickly, but I got better at reviewing PRs and got more familiar with the engine itself.
+
+And what we saw happen was well worth the effort: in the months following the initial big Bugsquad triage of the issues backlog and the faster PR reviews, we saw a lot of new contributors come to the engine, and many existing ones staying and gradually becoming our first "core contributors", doing several PRs each month. In one month we doubled the number of monthly PRs, and it kept on increasing. Existing and new contributors were more motivated when seeing that contributions were valued, reviewed and merged (or refused, if need be) quickly.
+
+Eventually I spent so much of my (free) time reviewing and merging PRs that it was not sustainable in the long run, so with Juan we created a "PR mergers" team and invited some core contributors to it, so that they could review and merge PRs themselves (they could already review them without merge permissions, but it's more effective to get contributors to do work for free when they have a responsibility ;)).
+
+### Migrating the documentation to ReadTheDocs
+
+As mentioned, Godot's documentation was initially in a GitHub wiki, and could only be edited by developers with write access (so only Juan and Ariel initially, later on the Bugsquad too). It was a big issue as the docs were far from perfect, and many users wanted to contribute.
+
+Thanks to [Theo Hallenius](https://github.com/TheoXD), we migrated our Wordpress website, phpBB forum and GitHub wiki to a common [OpenProject](https://www.openproject.org) instance. Theo did a lot of work to convert the GitHub wiki (in Markdown) to the Textile markup format used by OpenProject, and it was great: we finally had a wiki that any logged user could edit, and we even had localized versions of the wiki (far from completion, but there were starts of Spanish, Chinese, French wiki, etc.). Sadly we quickly started to have big performance issues with OpenProject, making it often unreachable or very slow. After trying several things to fix those issues, we eventually decided to migrate everything again to a new modular setup (the current one): the website and blog on OctoberCMS, the forum outsourced to the nascent [GodotDevelopers](https://godotdevelopers.org/forum) community, a new Q&A to replace it in the main website and be more focused on a StackOverflow-like platform, and the docs moved to a git repository using [Sphinx](http://sphinx-doc.org/) and [ReadTheDocs](https://readthedocs.org).
+
+Understandably, Theo did not wish to work on yet another migration after we decided to abandon the work he had just did, so others had to take over. I naturally took on the "manager" hat and helped coordinate the work of our contributors (especially [Alket Rexhepi](https://github.com/alketii)) on the website's backend, design, etc.
+
+And on my end I looked into how to migrate the OpenProject wiki to something better. I was no happy with the wiki system as it typically lets anyone make edits, and you have to review edits afterwards and correct issues, if any. It seemed to me that using a GitHub repository for the documentation, with the same PR workflow as for the engine code, would be the most efficient. Sure, learning how to use git and our PR workflow would be a hindrance to some technical writers, but we found that the pros outweighed the cons.
+
+I settled on the Sphinx doc builder, which generates static HTML pages based on source files in the reStructured Text markup language (yet another conversion needed, [Julian Murgia](https://github.com/StraToN) and I became pretty good at regular expressions!), and the ReadTheDocs platforms, which provided hosting, automated builds on new commits, and a great looking theme. This is still the system that we're using today for the [official documentation](http://docs.godotengine.org/) and we are pretty happy about it!
+
+For the first year and a half or so Julian and I did our best with limited time to manage the [docs repository](https://github.com/godotengine/godot-docs). Then a year ago or so, we encouraged professional tutorial makers like Nathan Lovato ([GDquest](https://github.com/NathanLovato)) and Chris Bradfield ([KidsCanCode](https://github.com/KidsCanCode)) to help us, and they eventually completely took over, making our 3.0 documentation the most complete and well-written so far! And with "recent" contributors like [Max Hilbrunner](github.com/mhilbrunner), they are now reproducing the workflow that I outlined above, with a better issue triage and reviews of pull requests, so that the godot-docs repository is becoming a hive full of buzzing documentation bees working everyday to improve your learning experience!
+
+### Making stable and develpoment releases
+
+The last big issue I had noticed was the long release cycles and lack of bugfix/maintenance releases in the stable branches. Coming from the Free Software ecosystem, I knew the value of the *release early, release often* saying, and wanted more frequent releases for Godot.
+
+At the same time, we started running out of credits on the build server that Ariel was using to make the official binaries, so we needed to look into (cheap or free) alternatives.
+
+With the help of various contributors, we setup a full buildsystem (ab)using [Travis CI](https://travis-ci.org) to build Godot binaries for all platforms, and then upload them to a [GitHub repository](https://github.com/GodotBuilder/godot-builds) (since then we replaced the cross-compiled MinGW Windows builds on Travis by native Visual Studio builds on AppVeyor, but it's still the same idea). Though CI services are not designed for this, it allowed us to get binaries for a wide variety of platforms, including macOS and iOS without needing to buy/rent a macOS server ourselves.
+
+Using this new system, I could prepare official builds of Godot more often (still not in a nightly fashion, as the whole setup would still take 5 to 10 hours to build everything, and I didn't want to DoS Travis' infrastructure with Godot builds). We could publish frequent beta builds of Godot 2.0 to get more testing before the final release in [February 2017](/article/godot-engine-reaches-2-0-stable), which turned out pretty good!
+
+Once 2.0 was out, I decided to keep maintaining a stable 2.0 branch with bugfix releases, while development was ongoing for Godot 2.1. So I branched off at the 2.0 release commit, and started cherry-picking bugfixes and usability improvements to this stable 2.0 branch. We [released 2.0.1](/article/updates-on-the-release-cycle-and-godot-2-0-1) a couple of weeks after 2.0, and so on and so forth up to 2.0.4.1. And we did the same for the 2.1 branch.
+
+Now with [Godot 3.0 released in January 2018](/article/godot-3-0-released) and the huge community growth that we experienced over the last year, we decided that stable branches needed more guarantee of forward compatibility (you should be able to run your 3.0.1 project in Godot 3.0.4 for example). [Hein-Pieter van Braam](https://github.com/hpvb) proposed to offload me of this responsibility and to be the official maintainer of the 3.0 branch, which I gladly accepted. For now I'm still handling the buildsystem and helping review what should be backported to the stable branch, but he's taking on more and more of the work so that I can focus on the master branch.
+
+
+## What now?
+
+The above was meant to be a *quick* (haha) overview of how I came to Godot and what I helped setup for the project to be as successful and fast-growing as possible. It turned out to be a very detailed history (I hope not too boring, but as you can see I like talking of things I'm passionate about :)), but the conclusion of each part is: I set up and maintained a ton of stuff, and now I'm offloading more and more of this ever-increasing workload to new contributors.
+
+So what's next? What am I going to work on especially now that thanks to our generous patrons, I can work on Godot full-time?
+
+### Keep doing it
+
+Well the first part of my "new job" is not really revolutionary: I'll keep doing what I have been doing for 2.5 years. Even though I'm offloading more and more of those tasks to other contributors, the community is growing at a tremendous pace, and at each major or minor release that we have the workload basically doubles.
+
+So I'll continue working on sharing and even giving over more of my responsibilities to other contributors, but as I just wrote it, that's work too. And we still need someone to coordinate the work of the different teams.
+
+Moreover, I'm now working full-time on Godot as my paid job, but I was already basically working 30+ hours a week for free previously next to my normal full-time paid job (and partly overworking myself), so I don't have so much more time right now if I want to keep some more of my newly found free time for different healthy activities :)
+
+### Be Godot's representative for the industry
+
+Thankfully I haven't detailed it in my long history of all the Godot things I've been doing in the past, but I have also taken the role of communications manager (writing blog posts, managing social media accounts and Godot email addresses, etc.) and events organiser (FOSDEM, GodotCon, etc.), and I'll continue doing that.
+
+But now I have actual time that I can allocate to create and nurture Godot's relationships with the gamedev industry and the educational world, as the project's representative. As Juan mentioned in his [GDC 2018 review](/article/godot-doing-well-gdc-2018), with events such as GDC he has to spend a lot of time doing communication and relations work instead of writing code and (more importantly) help contributors write code. At the same time he lives in Argentina and many industry events take place in Europe, where I live.
+
+So the idea is that I should take over part of those tasks, and push them further: I'll give talks and workshops at universities, meet companies to talk to them about Godot (and sponsorship!), participate in industry events, etc.
+
+This also includes all kinds of administrative tasks needed for the project, such as applying for grants or programmes like the Google Summer of Code (GSoC), and then following up on them. For example I've spent most of the past week answering questions from prospective GSoC students and reviewing their draft applications, as well as encouraging fellow contributors to volunteer as mentors for the GSoC programme.
+
+Just like all the other things I've been working on in Godot, I'll also gradually find ways to offload more of this work to the community: that might include helping setup local communities which could organize events of their own in the town/region, collect and improve presentation and teaching material for users and teachers to use in their talks or curricula, etc.
+
+What it will all be *exactly* is still to be determined, but we definitely agree with Juan and other core contributors that Godot needs public figures who can do the link between our hardly-known yet awesome bundle of technology and the real world, with its needs and expectations. This should eventually help us gain more adoption, more contributions, more funding and more awesome features and – that part is yours – games!
+
+## Next goals
+
+With the impressive USD 7,500 milestone reached, we can now pay salaries for Juan and I (USD 3,000 each) and karroffel (who works part-time and as an intern, so she's exploited for USD 1,050 from us + USD 400 from a generous thirdparty interested in her work). That's actually slightly less than we needed for this payroll as we also give 10% of our donations to our fiscal and legal sponsor [Software Freedom Conservancy](https://sfconservancy.org), so strictly speaking we need over USD 7,800 per month. But 7,500 was a rounder symbolic value :)
+
+On top of that, we'd like to have some cash flow to pay for travel expenses, as when Juan goes to Europe for GodotCon or to the US for GDC 2018, plane tickets are pretty expensive. As the project representative, I'll also be travelling a lot in Europe to meet companies, universities and take part in industry events. In first approximation we're setting a goal at USD 9,000 that should reflect the monthly expenses we expect to have in the near future (if you've followed, that USD 8,100 for Godot, so ca. USD 1000 for variable expenses after paying salaries).
+
+Once we've secured that, we'll think about growing the team of paid contributors again, as we have quite a few very talented contributors who would welcome a part-time job to work on the engine.
+
+Another, simpler alternative to get more paid developer time on the engine is for thirdparty companies to hire Godot contributors themselves to work on what they need and contribute it upstream. That's what Pedro J. Estébanez [is doing with AdPotNet](/article/let-people-touch-godot) for example, and we want to encourage more companies to do the same, as it's much more flexible than going through Conservancy and donation-based income (and should also be more lucrative for contributors hired for such contracts! ;)).
+
+I hope this writeup helped shed some light on how the Godot project is managed, including how we handle donations and what we use them for. If you have any question, you can ping me on IRC or Discord (Akien).
\ No newline at end of file
diff --git a/collections/_article/godot-ragdoll-system.md b/collections/_article/godot-ragdoll-system.md
new file mode 100644
index 0000000000..2befef128f
--- /dev/null
+++ b/collections/_article/godot-ragdoll-system.md
@@ -0,0 +1,99 @@
+---
+title: "Godot's ragdoll system"
+excerpt: "Godot 3.1 is getting many improvements on the physics side, and one of those is the new ragdoll system. Physics maintainer Andrea Catania presents the work he did on this topic and how to get started with physical bones and ragdoll simulation."
+categories: ["progress-report"]
+author: Andrea Catania
+image: /storage/app/uploads/public/5af/c2e/449/5afc2e44937d1306025773.png
+date: 2018-05-16 13:18:30
+---
+
+Godot is getting more and more interesting features in this period, and one aspect on which we are focusing on is the Skeleton node.
+
+We are working on implementing some features like Inverse Kinematics, Ragdoll, a better animation player, and a state machine player. All these things will allow the developers and artists to apply some animations to their characters easily and at the same time with an awesome result.
+
+I'm [Andrea Catania](https://github.com/AndreaCatania), and in this article I will explain how to use the new Ragdoll feature available in Godot (in the *master* branch coming in Godot 3.1). But I'll start with a couple lines to introduce myself. I'm the contributor who integrated the [Bullet Physics](http://bulletphysics.org/wordpress/) engine in Godot 3.0, which was my first Pull Request about a year ago. I'm now taking care of most physics things and animation (like ragdoll, IK, SoftBody, etc.). I'm a computer graphics and physics passionate, and always looking to learn and discover new things.
+
+Now let's start!
+
+## How it works
+
+To show you how to use it, I will apply it to the Platformer3D demo that can be downloaded [on GitHub](https://github.com/godotengine/godot-demo-projects/tree/master/3d/platformer) or on the [Asset Library](https://godotengine.org/asset-library/asset/125).
+
+#### Create physical bones
+
+The first thing to do is to select the skeleton node (in the player scene of *Robi* the robot). You will notice that a skeleton button appears on the top bar menu:
+
+
+
+Click it and select the **Create physical skeleton** option. The engine will automatically generate physical bones (with their own shape) for each bone of the skeleton.
+
+
+
+#### Clean up the skeleton
+
+In the picture above, you can see that there are unnecessary physical bones like the MASTER bone, so the first thing to do is to clean up our skeleton by removing these physical bones.
+
+The rule is that you should remove all physical bones that are too small to make a difference in the simulation and all utility bones (like the MASTER bone in this case).
+
+> For example, if we take a humanoid skeleton where the hand is comprised of many bones, it's really useless and wasteful to maintain all bones of the hand. One important thing to do in this case is to remove all physical bones and replace them by one or two bones to simulate the hand.
+
+To clean up our Robi I chose to remove these physical bones: MASTER, waist, neck, headtracker.
+This step is not mandatory but it is recommend to clean up the generated skeleton, so that you end up with an easy to maintain and optimized skeleton structure.
+
+#### Collision shape adjustment
+
+After cleaning it up you will have to adjust the collision shape and/or the size of physical bones in order to match the part of body that each bone should simulate.
+
+
+
+#### Joints adjustment
+
+After the collision shapes adjustment your ragdoll is ready to be used, but before doing it I like to change the joint between each bone.
+
+The joint assigned by default is **Pin Joint** that doesn't has any constraint. To change it you should select the physical bone then change the type of constraint in the Joint section. It's possible to change the orientation of constraint and limits.
+
+
+
+Now Robi's head will move like a real head!
+
+My final result is this:
+
+
+
+#### Start and stop the simulation
+
+Now it's really simple to start the simulation by attaching a GDScript and writing down this code:
+
+```
+func _ready():
+ physical_bones_start_simulation()
+```
+
+To stop it you can call the function `physical_bones_stop_simulation()`.
+
+
+
+But what if I want to start the simulation for just a few parts of the body? Yes, it's simple enough to do by changing only one line of code: :P
+
+```
+func _ready():
+ physical_bones_start_simulation(["r-arm", "l-arm"])
+```
+
+With the code above, we are passing to the engine the names of bones for which we would like to simulate physics, and this is the result:
+
+
+
+## Collision Layer and Mask
+
+Last but not least you have to properly set layer and mask in a way that doesn't collide with kinematic capsule but collide with ground:
+
+
+
+
+
+## What's next?
+
+The next thing that I will implement is the active ragdolls that will allow us to influence the physical bone position. This mean that the body will tend to maintain a defined position while ragdoll is active.
+
+That's it for now, enjoy ragdolling!
\ No newline at end of file
diff --git a/collections/_article/godot-reaches-2-1-stable.md b/collections/_article/godot-reaches-2-1-stable.md
new file mode 100644
index 0000000000..cdfb71adb0
--- /dev/null
+++ b/collections/_article/godot-reaches-2-1-stable.md
@@ -0,0 +1,157 @@
+---
+title: "Godot reaches 2.1 stable!"
+excerpt: "After almost six months of hard work, we are proudly presenting you the marvellous Godot Engine 2.1. Just like 2.0, this version focuses almost exclusively on further improving usability and the editor interface."
+categories: ["release"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/57a/886/5d5/57a8865d5dc44195460713.png
+date: 2016-08-09 19:38:43
+---
+
+## Godot 2.1 stable is here!
+
+After almost six months of hard work, we are proudly presenting you [the marvellous Godot Engine 2.1](/download). [Just like 2.0](/article/godot-engine-reaches-2-0-stable), this version focuses almost exclusively on further improving usability and the editor interface.
+
+This release marks the conclusion of a series focusing on usability improvements. We have listened to and worked with our awesome community to make Godot one of the easiest game development environments to use. Our goal is and will always be to aim for the top in the *ease of use* vs *power* ratio.
+
+**[Download it now](/download)** while you read on!
+
+There are countless new features in this version (see the full changelog, [chronological](http://download.tuxfamily.org/godotengine/2.1/Godot_v2.1-stable_changelog_chrono.txt) or [listed by contributor](http://download.tuxfamily.org/godotengine/2.1/Godot_v2.1-stable_changelog_authors.txt)). The most important ones are:
+
+### New asset sharing platform
+
+Godot 2.1 comes with our new asset sharing platform, the Asset Library. It's still new and far from final, but it will continue evolving to satisfy everyone's needs. The idea is that users can post assets, scripts, addons, etc. online (for example hosted on GitHub or GitLab) while offering an easy user interface to download and install them. Your feedback to make the asset library awesome is vital!
+
+
+
+As of the 2.1 release, the asset library features only a handful of assets, which have been used to test the upcoming [open source web frontend](https://github.com/godotengine/asset-library) for submitting and managing assets. Thanks to the development work done by [Alket Rexhepi](https://github.com/alketii) and [Bojidar Marinov](https://github.com/bojidar-bg), this frontend will soon reach the alpha status and be announced officially, so that all community members can start submitting assets to the library.
+
+### New plugin API
+
+Together with the Asset Library, we have introduced an EditorPlugin API for Godot. Plugins can add a lot of different functionalities to the editor, and provide new node types and features to games. As this is our first attempt to a plugin API, we imagine that many useful functionalities might still be missing so, again, we are counting on your feedback to make this API as great as it can be.
+
+
+
+### Dynamic font support
+
+Godot is used all around the world and, while it always supported Unicode, its reliance on font textures made it pretty difficult to support some languages (especially Asian). This new version allows you to drop any TTF or OTF file in the project and use it directly in your games, at any size.
+
+Fallback fonts are also supported, so it is possible to work around the 64k character limit and use true multi-language text.
+
+
+
+### Fully internationalized editor UI
+
+Together with dynamic fonts, we are now able to offer you Godot in a large amount of languages. Many users from around the world who are not at ease with English can do their first steps in Godot in a way more familiar to them.
+
+
+
+As of the 2.1 release, the community has [contributed translations on our Weblate platform](https://hosted.weblate.org/projects/godot-engine/godot/) for an important number of languages. Italian, Korean, Brazilian Portuguese, Russian and Spanish are 100% complete; other languages like Chinese (Simplified), French, German and Polish should also offer a good level of translation already.
+
+### Editor visual customization
+
+Together with the above, we also added support to change the font styles and sizes, as well as creating custom editor themes. User-made themes should soon land on the Asset Library too for everyone to use as they wish.
+
+
+
+### Customizable keybindings
+
+One of the most requested features is finally here! Keybindings in Godot can now be fully customized in the editor settings! This also includes a number of features that previously had no default binding, and that you can now bind to a key if you use them often.
+
+
+
+### Live script reloading
+
+Tired of having to reload your game for each small little code change or fix? Godot now supports live script reloading! Simply save your script and it will be updated in the running game.
+
+If you are running your game on an external device (*e.g.* Android), and using "Deploy with Remote Debug", live script reloading will magically happen in there too.
+
+We have also cleaned up the remote menu for this version to make these options easier to understand and use.
+
+
+
+As a plus, tool scripts running in the editor will properly reload if you re-save them too, making it easier to develop them.
+
+### Profiler & frame profiler
+
+It is now possible to measure the time taken in each function call (both inclusive and self), while doing profiling runs (profiling can be turned on and off at any time). In addition, Godot will remember the time it spent in the most significant functions in the last 500 or more frames, which you can browse easily by scrubbing a pretty function plot.
+
+As with everything, if you are running Godot on an external device (Android, iOS) with remote debug enabled, you can profile the performance of that device from the editor in your PC.
+
+
+
+### Remote scene inspector
+
+The approach chosen by Godot for live editing makes it really easy to create content on the fly, have it replicated in the running game, and keep your changes when the game is done running. The disadvantage is that, unlike other engines, it's more difficult to see the values of scenes and nodes in the running game.
+
+As of 2.1 this is no longer true, as the debugger has a new field "Remote Inspector", which allows watching the scene tree of the executed game in real-time, as well as the properties of each node and resource. Editing such properties is possible too, but changes won't be saved (use regular live editing for this).
+
+
+
+### HiDPI/Retina support & hi-res icon theme
+
+Godot now supports HiDPI and Retina. For the editor, this is done via auto-detection of the monitor resolution (it no longer looks tiny on Linux and Windows with HiDPI). For the running game, you can toggle a flag in the project settings (make sure to enable it in OSX if you want your project to display in hi-res).
+
+There is also a beautiful new flat icon theme which supports HiDPI, courtesy of [Daniel Ramirez](https://github.com/djrm).
+
+
+
+### Drag & drop support
+
+The world has changed and some user interface conventions have evolved since Godot was made. New users used to find Godot a little rough due to not being able to drag around information.
+
+From this new version onwards, drag & drop is fully supported in the editor. You can drag resources from the inspector or filesystem, nodes to rearrange and reparent them, and in general all kinds of lists and previews. If you believe that some editor sections could further benefit from this functionality, let us know!
+
+
+
+### Contextual menus
+
+In the same vein as drag & drop support, Godot now supports contextual menus in many relevant places, such as the filesystem dock, the scene tree, etc. Right-clicking will bring up a menu in the expected places. Here again, feel free to suggest other places where contextual menus could be beneficial to the overall usability.
+
+
+
+### Script editor usability improvements
+
+The script editor has seen many usability improvements, including a find/replace bar, incremental search, better syntax highlighting, smart-matching in code completion and many other goodies thanks to the awesome work of [Paul Batty](https://github.com/Paulb23), [George Marques](https://github.com/vnen) and [Ignacio Etcheverry](https://github.com/neikeq).
+
+
+
+### Improved asset pipeline
+
+The way assets are handled in Godot changed a bit. We now enforce auto-import of assets that changed externally, and auto reload of assets that changed on disk. Dropping files from the OS native filesystem browser into Godot will also pop-up the corresponding import dialog into the selected folder.
+
+Importing 3D scenes also suffered some changes, as scenes will no longer be merged by default. Trying to keep track of what changed and how to merge it proved to be a lot of work, so instead, we now encourage users to try the scene inheritance feature to do local modifications to imported scenes. (Just import the scene, and inherit it into another scene to make the changes). It is now also possible to select the root base node type when importing 3D scenes.
+
+
+
+### Improved resource previews and thumbnailer
+
+As part of improving usability, we have made many enhancements to the thumbnailer. More resource types are supported and thumbnailing of internal scene resources is also supported, allowing previews of materials, meshes, etc.
+
+Added to that, we added a small resource previewer at the bottom of the inspector, which works for many resource types.
+
+
+
+
+### New AnimatedSprite features
+
+While using an AnimationPlayer to switch frames is a very powerful approach, we always felt AnimatedSprite could be a little more accessible to new users. To do this, we added multiple animation support to it, and the ability of simple auto-playing of animations at a given speed without the need of using an AnimationPlayer.
+
+Finally, we reworked the UI to make it more accessible, with full drag & drop support.
+
+
+
+## Future
+
+This has been a fun and exciting release, and we feel Godot is finally where we want it to be in terms of usability. It has been more than a year since 1.1 was released and not focusing on new core engine features for so long was difficult, yet we feel it was worthwhile as Godot is now much more accessible than it used to be.
+
+From now on, and for at least a few releases, we will focus on making Godot even more fabulous. Our next release is already in the works and will be 2.2 (which we hope to deliver in 2/3 months). It will include a new visual scripting language, support for Mono (C#), high level multiplayer networking and a more advanced audio engine. It should also feature many improvements to 2.1 features such as the Asset Library or plugin API, based on your feedback over the coming months.
+
+Meanwhile, work on Godot 3.0 is starting already (expected in 6/7 months from now), and will include a new reworked, modern renderer with support for Physically Based Shading, improved shader language, VR, and many other nice things, as well as a greatly improved HTML5 export platform with WebAssembly support.
+
+Our goal with 3.0 will be to have a game engine that can output really, really beautiful 3D visuals involving a lot less hassle than existing solutions. We know how difficult it is for artists and even programmers to make things look good with existing game engines, so our approach will be to give you every tool you need for your game to look great out of the box using built-in Godot features.
+
+## Spread the word!
+
+As always, we ask you from the bottom of our hearts to spread the word about Godot. We know how good this little engine we are making together (developers and community) is, but we are still little known in the game development world. With no marketing budget and 100% voluntary contributors, we need every member of the community to partake in the effort and spread the love of Godot by word of mouth, blog posts, press articles, game jams and events, published games, etc.
+
+Please make as much noise as you can so that more developers know about us and give a try to our professional-grade open source game engine! :)
\ No newline at end of file
diff --git a/collections/_article/godot-rmll-2015-france.md b/collections/_article/godot-rmll-2015-france.md
new file mode 100644
index 0000000000..d9116dcf7a
--- /dev/null
+++ b/collections/_article/godot-rmll-2015-france.md
@@ -0,0 +1,32 @@
+---
+title: "Godot at RMLL 2015, France"
+excerpt: "Juan Linietsky, one of the main developers of Godot Engine will be giving a talk and a workshop about Godot Engine at RMLL2015."
+categories: ["events"]
+author: Juan Linietsky
+image: /storage/app/uploads/public/56c/317/2a0/56c3172a03b59083821998.png
+date: 2015-06-11 00:00:00
+---
+
+## Godot at RMLL 2015
+
+Juan Linietsky, one of the main developers of Godot Engine will be giving a talk and a workshop about Godot Engine at RMLL 2015. As most of them reside in South America, this is a great opportunity for Europeans to learn about Godot, meet the developers and have the chance to go out for beers!
+
+RMLL takes place in Beauvais, a city a little north of Paris, from July 4 to July 10.
+
+The schedule will be:
+
+* **Tuesday 7 July, 15:20**: Introduction to Godot Engine (talk)
+*Edit:* The video recording of the talk can be [viewed online](http://video.rmll.info/videos/introduction-au-moteur-godot/).
+
+* The time and date of the workshop is TBA but should be the same or the next day.
+More information at the [RMLL website](https://2015.rmll.info).
+
+Thanks enormously to the organization of RMLL for this invitation!
+
+## Godot in Paris
+
+Juan will be having meetings in Paris the week from the 10 to the 17, so if you want to schedule a meeting with him (or just want to go out for beers), please contact him beforehand!
+
+## Spread the love!
+
+If you have contact or work in the organization of technology, video game development or libre software events, and would like to bring one of the main Godot developers, also contact us. We are also working hard so everyone willing to give a talk in their local community can have access to the materials we use in our talks and workshops (please help us translate them to your native language!).
\ No newline at end of file
diff --git a/collections/_article/godot-rmll-lsm-2018-strasbourg-july-7-12.md b/collections/_article/godot-rmll-lsm-2018-strasbourg-july-7-12.md
new file mode 100644
index 0000000000..f84c01c807
--- /dev/null
+++ b/collections/_article/godot-rmll-lsm-2018-strasbourg-july-7-12.md
@@ -0,0 +1,33 @@
+---
+title: "Godot at the RMLL / LSM 2018 in Strasbourg, July 7-12"
+excerpt: "Godot will be at the Libre Software Meeting 2018 (also known as RMLL – Rencontres Mondiales du Logiciel Libre) in Strasbourg, France from Saturday 7 July to Thursday 12 July. We will give a 1-hour talk, a 3-hour workshop and will have a Godot booth for the whole duration of the event."
+categories: ["events"]
+author: Rémi Verschelde
+image: /storage/app/uploads/public/5b3/392/f85/5b3392f852017497603465.png
+date: 2018-06-27 13:37:02
+---
+
+Godot will be at the [Libre Software Meeting 2018](https://2018.rmll.info/en) (also known as RMLL – *Rencontres Mondiales du Logiciel Libre*) in Strasbourg, France from **Saturday 7 July** to **Thursday 12 July**. We will give a 1-hour talk, a 3-hour game development workshop, and there will be a Godot stand with core developers to welcome you for the whole duration of the event.
+
+[LSM](https://2018.rmll.info/en) is a yearly community event in France focused on Free/Libre and Open Source Software, and we're looking forward to representing Godot there this year. At least three core developers will be there (Julian Murgia ([StraToN](https://github.com/StraToN)), Gilles Roudière ([Groud](https://github.com/Groud)), and myself ([Akien](https://github.com/akien-mga))), and we hope that some more as well as many Godot users will join us in Strasbourg. The location should make it relatively accessible for people from neighbouring regions of France, Germany, Switzerland, Belgium and Luxembourg.
+
+## Godot-related activities
+
+We have three Godot-related offers for visitors of the LSM. Note that they are all located in different buildings of the LSM venue, see the [venue map](https://2018.rmll.info/en/info/map) as well as each activity's page for details.
+
+- **Godot stand** in the [Libre Village](https://2018.rmll.info/en/program/calendar/list#saturday-village) during the whole event. We'll be there showcasing Godot, games made with it, and selling the awesome T-shirts designed by Daniel Ramirez ([djrm](https://github.com/djrm)) :) If you're coming to LSM, please come to our stand and say hi. You'll also be welcome to give us a hand manning the booth and talking about Godot to visitors :)
+ * *Location:*
+ - **Update:** Saturday 7 July: [Shadok](https://www.shadok.strasbourg.eu/) (25 Presqu'île André Malraux, 67100, Strasbourg)
+ - Sunday 8 July and following days: [Central Campus of the University of Strasbourg](https://2018.rmll.info/en/info/access), ESCARPE building (11, rue du Maréchal Juin, 67000 Strasbourg).
+- [1-hour presentation of Godot](https://2018.rmll.info/en/program/calendar/list#saturday-track16-0) on **Saturday 7 July at 11:00 CEST** with Julian and Gilles.
+ * *Location:* [Central Campus of the University of Strasbourg](https://2018.rmll.info/en/info/access), ESCARPE building, amphitheater 29 (11, rue du Maréchal Juin, 67000 Strasbourg).
+- [3-hour workshop to learn how to make games with Godot](https://2018.rmll.info/en/program/calendar/list#saturday-track16-2) on **Saturday 7 July at 14:30 CEST** with Julian, Gilles and myself.
+ * *Location:* [Central Campus of the University of Strasbourg](https://2018.rmll.info/en/info/access), PLATANE building, amphitheater 12 (allée René Capitant, 67000 Strasbourg).
+
+**[Indicative poll](https://framadate.org/godot-rmll-2018):** It's not mandatory, but to give us an idea of who to expect, you can [add yourself to this poll](https://framadate.org/godot-rmll-2018). We may plan a Godot dinner and/or a real-life meeting if we have many community members around, so you can send me your contact details (email in the poll description) if you want to be in the loop.
+
+## Other LSM / RMLL activities
+
+Check the event's [presentation](https://2018.rmll.info/en/program/presentation), calendar of activities [as a table](https://2018.rmll.info/en/program/calendar/table) and [as a list](https://2018.rmll.info/en/program/calendar/list).
+
+We're looking forward to seeing many new and old members of the Godot community in Strasbourg :)
\ No newline at end of file
diff --git a/collections/_article/godot-showcase-2dynamic-games-lumencraft.md b/collections/_article/godot-showcase-2dynamic-games-lumencraft.md
new file mode 100644
index 0000000000..181c9034f1
--- /dev/null
+++ b/collections/_article/godot-showcase-2dynamic-games-lumencraft.md
@@ -0,0 +1,83 @@
+---
+title: "Godot Showcase - Lumencraft developer talks about his experience"
+excerpt: "We interviewed Leszek Nowak from 2Dynamic Games about their game Lumencraft, which is made with Godot."
+categories: ["showcase"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/625/6ff/331/6256ff331f974859299358.jpg
+date: 2022-04-13 15:00:00
+---
+
+Welcome to another Godot showcase interview! This time, we interviewed Leszek Nowak from 2DynamicGames about their latest release Lumencraft.
+
+___
+
+### Introduce yourself (or your studio) in a few sentences.
+
+My name is [Leszek Nowak](https://twitter.com/JohnMeadow3) and I’m a part of independent studio 2Dynamic Games located in Kraków, Poland. We are a small team working on our first team project, Lumencraft, which is released as I'm writing this.
+
+### Introduce your project in a few sentences: description, supported platforms, release date, etc.
+
+Lumencraft is a top-down shooter with base-building elements where you're a lonely little digger sent into bug infested underground caves.
+The game is made in Godot Engine 3, with many custom-made technologies that enable a fully destructible environment, fluid simulation and dynamic lighting.
+
+The game releases into Early Access on April 13th, 2022 for Windows, Linux, Steam Deck, and in the near future macOS.
+You can find it on [Steam](https://store.steampowered.com/app/1713810/Lumencraft/) and [GOG](https://www.gog.com/en/game/lumencraft).
+
+### How did you discover Godot? When did you start using it? Do you have prior experience with other game engines?
+
+I have years of random experience in development with my first games made way back for Commodore 64. I used the most known game engines there were, and some of my obscure games were made in Pascal, and even Matlab.
+
+Since the path of a game developer is rarely straightforward, I ended up as an academic at the university doing PhD in skin cancer research, and as a part of not doing the PhD I started writing my own game engine. Luckily my students introduced me to Godot Engine and since 2014 it is my favorite tool. As of now, I have 40+ random free and open source games made in Godot, some can be found on [itch.io](https://johnmeadow.itch.io/) and [Global Game Jam](https://globalgamejam.org/users/john-meadow). You might find something that resembles Lumencraft in there.
+
+As it happens, the 2Dynamic core team had to deal with me as their teacher at some point in their university life, with me preaching Godot at any opportunity.
+One of the successful conversions to Godot was [Paweł Mogiła](https://twitter.com/PawelMogila) (szamq), the architect of Lumencraft. He published [Grimind](https://store.steampowered.com/app/265380/Grimind/) in his custom SDL-based engine and [Clinically Dead](https://store.steampowered.com/app/927840/Clinically_Dead/) using [Urho3D](https://urho3d.io/).
+
+Luckily, one of the core contributors of Godot Engine happened to end up in the same University and was persuaded to join the team. [Tomasz Chabora](https://twitter.com/KoBeWi_) (KoBeWi) is making all the things work properly.
+
+### Why did you choose Godot for your project?
+
+It comes down to Godot being Open Source. We knew that we needed custom modifications for destructible terrain, dynamic lightning, and support for thousands of swarm monsters. All this is rarely supported in any engine out of the box. Additionally most of our team was already familiar with Godot.
+Paweł and I are teaching classes on simulations and game dev that are heavily based on Godot Engine mostly due to Godot being perfect for fast prototyping.
+When you want to create a new feature for your game it might just take a few hours to see it will work.
+
+### Which parts of the game development process did you enjoy the most while working on your project?
+
+The most enjoyable part of the game development is of course implementing new features. We went over many iterations on all kinds of systems and elements. The process overall can get mundane sometimes, but once you finish your cool spear combo or flashy lava particles or extremely complex custom map editor that does wonders under-the-hood, looking at the final result and playing it is a very satisfying experience. Some of the features were added just because they were fun to code and have this “cool” factor about them.
+
+### Which parts of the game development process did you find the most difficult to apply in your project?
+
+The most difficult part is to decide what features should be implemented and resist the urge of adding new features. Because we want to keep our game simple, yet we have many ideas that standalone are cool, but mashed up together may result in something that is not working well. We still don't know if the game is balanced enough, which is why we are on Early Access to check what works right and what doesn’t. We will tweak things based on player feedback as we want to make the game as good as possible.
+
+### How has Godot helped you advance on your project? Which aspects of Godot do you consider to be its strength?
+
+GDScript is my favorite as you can do a lot with a little bit of code.
+
+The scene system gives much needed flexibility to create your own building blocks that create a level when brought together. Overriding properties like script variables, or sprite color via modulate property, allows to make asset variations easily.
+
+Another thing that was quite useful is the option to quickly test shaders. Being able to see the results of a shader the moment you change some code makes development so much better.
+
+And finally Lumencraft would not be possible without Godot being open source. Having the option to add custom modules is just wonderful.
+
+### How do you find Godot's multi-platform support, both for the editor and your final project?
+
+We launch on Windows and Linux for now. We got the game working on Mac as well. Also Linux build works almost out of the box on Steam Deck console.
+
+Most of us use Windows for development, but we have one Linux developer. Our experience was mostly seamless, with the only problems emerging at C++ level due to compiler quirks between platforms.
+
+### Which challenges have you encountered when using Godot?
+
+We struggled a lot with proper multiple resolution support. While this is mostly straight-forward and well-documented, Lumencraft required the ability to change fullscreen target resolution and that wasn’t obvious to achieve, especially when multiple in-game effects are full screen shaders that needed to match the screen size and resolution. Because of that we are still missing support for different aspect ratios (for now at least). Because we all had the same system specs and didn’t test different setups. When we realized there was a problem, it was too close to the release date.
+
+### Which features would you like to see in future versions of Godot?
+
+We would like to make use of compute shaders and array uniforms in shaders. Much of our custom tools needed tricks to pass the data around. One example is the debris particles interacting with 2D terrain. That one was tricky.
+An option to generate mipmaps from viewport textures is coming back regularly. Currently you can't do that and multiple VFX had to be dropped because of that.
+
+### Would you use Godot for a future project?
+
+We are actively waiting for the next Godot version. ;)
+We like the freedom to modify source code and implement features on top of C++ code base. We hope to upgrade Lumencraft to Godot 4 in the future.
+
+___
+
+*Lumencraft is available on [Steam](https://store.steampowered.com/app/1713810/Lumencraft/) and [GOG](https://www.gog.com/en/game/lumencraft) for Windows, Linux and Steam Deck.*
\ No newline at end of file
diff --git a/collections/_article/godot-showcase-ben-kurtin-fnf-vr.md b/collections/_article/godot-showcase-ben-kurtin-fnf-vr.md
new file mode 100644
index 0000000000..ca9d76ec64
--- /dev/null
+++ b/collections/_article/godot-showcase-ben-kurtin-fnf-vr.md
@@ -0,0 +1,77 @@
+---
+title: "Godot Showcase - Friday Night Funkin' VR developer talks about his experience"
+excerpt: "We interviewed Ben Kurtin about his VR recreation of the hit rhythm game Friday Night Funkin', which is made with Godot!"
+categories: ["showcase"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/61e/c59/4ad/61ec594adad2c161680389.png
+date: 2022-01-22 18:15:00
+---
+
+Welcome to a Godot showcase developer interview! This week, we interviewed Ben Kurtin about his experience developing and releasing a VR recreation of the hit rhythm game *Friday Night Funkin'*.
+
+___
+
+### Introduce yourself in a few sentences.
+
+Hi! I'm Ben Kurtin, better known as ThisIsBennyK on [YouTube](https://www.youtube.com/channel/UCu7zwXQxp4rHmGhW9Dmulkg), [Twitter](https://twitter.com/ThisIsBennyK), and [TikTok](https://www.tiktok.com/@this.is.bennyk). I've made several games in the past couple of years, with projects ranging from a simple 2D platformer to the very VR rhythm game being showcased here; and that was all done while I was self-taught. Now I'm currently going to college to, quite literally, learn how to make games. My secondary hobbies are graphic design and video creation, both of which are evident based on my social media.
+
+### Introduce your project in a few sentences: description, supported platforms, release date, etc.
+
+Friday Night Funkin' VR (FNFVR) is a VR recreation of Friday Night Funkin' (FNF). FNF is the most recent smash hit indie rhythm game (which is also open source!), and it's like if DDR had the style of PaRappa the Rapper. FNFVR lets you experience all the cartoony glory the game provides for yourself: you get to see all the wacky characters up close; you get to be in the stylized environments they're in; and, of course, you get to jam out to the awesome songs while you're fighting for your life to spend time with your girlfriend.
+
+FNFVR has already been released for Windows and both Quests on [Itch](https://thisisbennyk.itch.io/funkin-vr) and [SideQuest](https://sidequestvr.com/app/4089/friday-night-funkin-vr), but me and my team are consistently working on updates to it whenever we've got the chance. In fact, we're already working on the 6th week (or level) from the original game as we speak. I've also been making a better engine for both 2D and potential 3D mods for FNF using Godot, which we will be porting FNFVR to. As for when the next update comes up... well, no promises, but hopefully by the end of January!
+
+### Your game got [some traction on YouTube](https://www.youtube.com/watch?v=QpgxxARRqxI) such as on channels like Weegeepie. Can you tell us a little about that experience?
+
+It's been surreal to see how much traction FNFVR has gotten. I couldn't believe my eyes when the Week 2 preview I posted on TikTok garnered a million views in just a few days. And to see quite a number of respected YouTubers play and enjoy the game is astounding. I've even seen some YouTubers that I used to watch as a kid play the game, and that's just crazy to me. I feel like I have to pinch myself whenever that happens!
+I'm extremely thankful for anyone who's made a video about FNFVR. It means the world to me that you all wanted to play it and show it off. It's helped me kickstart a lot of opportunities, like my YouTube channel and quite a few new friends, and for that I'm eternally grateful!
+
+### How did you discover Godot? When did you start using it? Do you have prior experience with other game engines?
+
+All my life I've wanted to make video games, so I've dabbled in quite a few game engines, but most things I tried to make as a kid didn't get finished. I started trying to make complete game projects in high school with Unity, but I became frustrated using it. After graduating (around summer 2020), I decided to search for a game engine that was easier to use and still just as feature rich. That's when I happened to find Godot. Like with any new thing you try, it took me a little bit to understand the basics. But after completing my second game jam project with it and being actually satisfied with my results despite having only picked it up recently, I knew it was my engine of choice.
+
+### Why did you choose Godot for your project?
+
+Well, I had already been using Godot for around 6 months when I decided I was going to make FNFVR, so I figured it would be easier to work with an engine that I was already familiar with. Plus, this is actually my second VR game made in Godot, so I wanted to improve from my last VR project. And boy did I improve!
+In general, I chose Godot because, like I said before, I wanted something easy to work with. Maybe it was also for a bit of that counterculture feeling, since even when I picked up the engine in 2020, Godot was a niche engine. Of course, now I've been hearing lots of talk about it. In fact, I know a few professional software developers who have been using Godot for their game projects for the same reason: it's easy! While it does take away from the nicheness of the engine, that's not a change that I mind. I'm glad that more people are starting to use it.
+
+### How was your experience building a VR game specifically?
+
+It's a lot tougher than making a 2D or a non-VR 3D game, that's for sure. Not because it's necessarily harder to program or harder to make assets for, but it's much, much harder to debug. You have to put on the headset, wait for it to wake up, hit F5 awkwardly with the headset on, and then kind of peer through the nose gap to see the info you get on screen. And if you run into an error, you have to take off the headset, put it in a safe place, edit the code, and then rinse and repeat this process until you get it running stably. Simply put, it's tedious and a pain in the butt. Despite that, the satisfaction you get from seeing your work come to fruition when you put on the headset is incredible!
+
+### Which parts of the game development process did you enjoy the most while working on your project?
+
+Like many other game developers, I enjoy seeing the final product come together harmoniously. This effect has been magnified during the development of FNFVR, because there's something magical about seeing a game you enjoy from a different perspective. Besides that, however, FNFVR has given me deep insight on how to make a good rhythm game. Over several iterations, I've learned how to make an extremely accurate timekeeper (usually referred to as the Conductor, similar to the person who keeps tempo for an orchestra), as well as a highly flexible note and lane system. These revised components will be making their way into an upcoming update for the game. I'm very proud of the work I did for those and had a lot of fun making them! I hope they can be reused in other Godot rhythm game projects that I make or that others make (since the code will be open source, in the spirit of FNF).
+
+### Which parts of the game development process did you find the most difficult to apply in your project?
+
+I'm very new to 3D game development, and I only had a little experience prior to FNFVR. It was an arduous process figuring out how to get the player model right. At first, I was going to use inverse kinematics, similar to how VRChat works, but fortunately one of my fellow VR enthusiast friends guided me in the right direction and suggested floating hands. Not only that, but with a bit of hindsight, I've figured out that the game is extremely unoptimized in so many different ways. I'm going to be fixing this very shortly with my newfound knowledge (such as: it's actually a bad idea to make every model local since all the data of each model is duplicated into text).
+
+### How has Godot helped you advance on your project? Which aspects of Godot do you consider to be its strength?
+
+I've said this to others when talking about Godot, and I'll say it again: Godot is very good for making games quickly. The rapid and hotfix prototyping that Godot provides made it possible for me to learn the engine quickly and then make a VR game quickly. The first prototype of FNFVR was made in around two weeks if I remember correctly. Granted, I worked my butt off for those two weeks, but I guarantee you that trying to do the same thing in other VR-compatible game engines would have been a slog. Even besides FNFVR, almost every game in Godot has been made quickly and efficiently (even with my spaghetti code in earlier projects!), which is something I truly appreciate about the design of the engine and the editor.
+
+### Which challenges have you encountered when using Godot?
+
+I did encounter a few issues, mostly nitpicks, during the development of FNFVR:
+
+- Some documentation leaves something to be desired. For instance, the SkeletonIK node, a node that would be very useful for controlling a VR avatar, has zero documentation on it. Or the PCKPacker, which is useful for an upcoming update for FNFVR, does not have a great tutorial on how to use it, so I had to brute force my way into learning how it worked.
+- Blendshapes / shape keys simply don't work in the GLES2 renderer. For those reading who don't know, blendshapes, or shape keys, are parameters that morph a part of a 3D model to have a different shape. It's typically used for facial animations, like lip sync. This means the faces of every character in the game, which are controlled by these blendshapes, do not work on the Quest. There does seem to be an open request to fix this, which I would implement myself if I was confident enough to debug an entire game engine.
+- Animating 3D stuff in-engine. I had to write my own custom code just to be able to animate the 3D models myself. Fortunately, I now work with people who are better at animating than I am, but I did find it odd that 3D skeleton animation was not built-in like it was for 2D.
+- By far the biggest challenge of the project was learning how to properly use (and then promptly almost never using) `yield` statements. Because they can't be interrupted or destroyed (which is bad for pausing and quitting out of levels), I've decided to use signals for almost every event I need to handle. While this does produce uglier code, it makes it more flexible and ultimately allows us to be more creative with levels!
+
+### You ported your game to the Quest. How was that experience?
+
+While the Quests have been a major step up in affordable and accessible VR, it's not fun to develop for the standalone side of them. Having to switch renderers, design and manage levels so that they look the same on both platforms, debug across devices, and do operating-system specific set-up is a slow and tedious process. This process is so slow and tedious that I might've given up on developing for the Quests if they didn't happen to have the largest share of all personal VR users (and incidentally, the large share of our player base). I can only hope that the move to OpenXR and the eventual release of Godot 4.0 makes it easier to develop for the Quest platform.
+
+### Which features would you like to see in future versions of Godot?
+
+Most of the features I already wanted to see in Godot are actually coming in 4.0, which I'm pretty happy about. If possible, having those blendshapes work in GLES2 would be great to have (unless 4.0 is coming soon enough to fix that problem). However, my #1 request would be for AnimationPlayers to have the same easing options as Tweens do; that would be very useful. Otherwise, Godot already packs quite the punch with the features it has, and I can't wait to see what you guys are working on in future updates!
+
+### Would you use Godot for a future project?
+
+If you ask some of my friends what they know about me, a couple possible answers are: "Ben never shuts up about Godot" and "Ben sounds like he's sponsored by Godot." I think that's a sufficient enough way to say "yes, absolutely!"
+
+___
+
+*Friday Night Funkin' VR is available as a free download for Windows, Quest and Quest 2 on [Itch](https://thisisbennyk.itch.io/funkin-vr) and [SideQuest](https://sidequestvr.com/app/4089/friday-night-funkin-vr). The project's source code is also available on [GitHub](https://github.com/this-is-bennyk/Funkin-VR).*
\ No newline at end of file
diff --git a/collections/_article/godot-showcase-cheeseness-hive-time.md b/collections/_article/godot-showcase-cheeseness-hive-time.md
new file mode 100644
index 0000000000..d3ad684a34
--- /dev/null
+++ b/collections/_article/godot-showcase-cheeseness-hive-time.md
@@ -0,0 +1,80 @@
+---
+title: "Godot Showcase - Hive Time developer Cheeseness talks about his experience"
+excerpt: "We've invited Cheeseness to talk about his project, Hive Time. it was released in December 2019 and is available on Windows, macOS and Linux."
+categories: ["showcase"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/602/e98/120/602e98120ec23097807599.png
+date: 2021-02-18 15:30:00
+---
+
+Welcome to the third developer interview following the [introduction of the Godot Showcase page](https://godotengine.org/article/new-showcase-for-projects-made-with-godot)! This week, we've interviewed Cheeseness about his project [*Hive Time*](https://godotengine.org/showcase/hive-time).
+
+___
+
+### Introduce yourself in a few sentences.
+
+My name is Cheese, and I'm an Australian independent game developer/Linux porter/freelance generalist based in the small island of Tasmania. I've been making games in some form or another for over thirty years now.
+
+I like to contribute to Free/Open Source Software projects when I have time, and release my own work under F/OSS and open culture licences when appropriate. I've even made some small contributions to Godot itself. I enjoy photography, playing guitar, and long, long walks in the wilderness.
+
+### Introduce your project in a few sentences: description, supported platforms, release date, etc.
+
+[Hive Time](https://cheeseness.itch.io/hive-time) is a bee-themed management sim, which invites players to construct a generational bee hive and manage its population's diversity. It's cute, silly, and has a big heart.
+
+I released Hive Time for Linux, Mac, and Windows on the 12th of Beecember 2019, and shipped a [large update](https://cheeseness.itch.io/hive-time/devlog/147869/v11-the-informational-update) coinciding with World Bee Day on the 20th of May 2020.
+
+Hive Time is $10, but in the interests of making sure it's still accessible to people who aren't able to afford that and to explore the [dynamics of pay-what-you-want models](http://cheesetalks.net/hive-time-finances.php), I decided to release it with a minimum price of $0.
+
+### How did you discover Godot? When did you start using it? Do you have prior experience with other game engines?
+
+I first came across Godot when backing The Interactive Adventures of Dog Mendonça & Pizzaboy on Kickstarter back in 2014, but I think the first project I used the engine for was a prototype for [Super Happy Fun Sun](http://shfs.twolofbees.com/) developed as part of a game jam in 2015.
+
+Over the years, I've worked on projects that have used GoldSrc (Half- Life 1's engine), Serious Engine, Unity, SLUDGE, Adventure Game Studio, jMonkeyEngine, Blender Game Engine, and SCUMM/Remonkeyed Engine. I've also worked on games that have been built from scratch or use frameworks rather than general purpose engines like SDL, SFML, and Allegro.
+
+For the past six years, I've been writing my own game engine called [Icicle](http://icicle-engine.org/), which is written in C/C++, using SDL and OpenGL.
+
+### Why did you choose Godot for your project?
+
+I'd previously attempted to make a 3D game in Godot in 2015 (it would have been a third person plafomer about a ladybug), but my initial experiments before the jam I was planning to use it for weren't yielding the kind of results I was after.
+
+The next time I had the opportunity to try again, Godot had come a long way, and I was able to develop the initial [Hive Time prototype](https://cheeseness.itch.io/hive-time-prototype) during a 10 day game jam.
+
+### Which parts of the game development process did you enjoy the most while working on your project?
+
+For me, the most enjoyable part of both making and playing Hive Time is sitting back and watching my little bees bumble arund and go about their business.
+
+I also loved going out to local honey farms to record bees, and it was wonderful to see/hear Peter's work on the soundtrack breathe extra life into the game.
+
+### Which parts of the game development process did you find the most difficult to apply in your project?
+
+Broadly speaking though, the game came together with very few signficant design or production hurdles. I worked hard to lean on my existing development and project management experience and keep the game's development timeframes tight and overheads small.
+
+### How has Godot helped you advance on your project? Which aspects of Godot do you consider to be its strength?
+
+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.
+
+### How do you find Godot's multi-platform support, both for the editor and your final project?
+
+I pretty much exclusively developed Hive Time on Linux, so I didn't have much opportunity to expose myself to the editor tools' multi-platform support.
+
+I'm glad that Godot allows me to deploy builds for all my supported platforms from my Linux build server without having to involve other operating systems or set up cross-compiling pipelines.
+
+### Which challenges have you encountered when using Godot?
+
+I've struggled a little with performance optimisation, and the now-addressed dangling variants bug likely caused the majority of unidentifiable problems that had been reported in the wild.
+
+Unclear or incomplete documentation has been a long time friction point for me. Things have definitely improved on that front over the years, though there's always room for improvement. These kinds of hurdles are rarely significant and the option to fall back on reading engine code is always there, but cumulatively, these can add up to be a reasonable time sink across a large project.
+
+### Which features would you like to see in future versions of Godot?
+
+I'd love to see an option to treat underscores as punctuation for the purposes of text navigation. I run custom editor builds that already do this, but that applies to all string handling engine-wide rather than just the editor tools, so it's been difficult to formulate that into a patch that I can contribute upstream.
+
+### Would you use Godot for a future project?
+
+I plan to!
+
+___
+
+*Hive Time is available on [itch.io](https://cheeseness.itch.io/hive-time/) for Windows, macOS and Linux.*
\ No newline at end of file
diff --git a/collections/_article/godot-showcase-fat-gem-primal-light.md b/collections/_article/godot-showcase-fat-gem-primal-light.md
new file mode 100644
index 0000000000..284ea95234
--- /dev/null
+++ b/collections/_article/godot-showcase-fat-gem-primal-light.md
@@ -0,0 +1,81 @@
+---
+title: "Godot Showcase - Primal Light developer interview"
+excerpt: "We've interviewed Fat Gem about their first released project Primal Light. It was released in July 2020 and is available on Windows, macOS and Linux."
+categories: ["showcase"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/604/11f/d88/60411fd88eb88947959052.png
+date: 2021-03-04 17:00:00
+---
+
+Welcome to the fourth developer interview following the [introduction of the Godot Showcase page](https://godotengine.org/article/new-showcase-for-projects-made-with-godot)! This week, we are interviewing the studio Fat Gem about their first game *Primal Light*.
+
+___
+
+### Introduce your studio in a few sentences.
+
+Hi, I’m Shane Sicienski. My friend Jeff Nixon and I make games together under the name Fat Gem.
+
+### Introduce your project in a few sentences: description, supported platforms, release date, etc.
+
+Primal Light is a linear 2D action platformer for Windows, Mac, and Linux. It was released on July 09, 2020 and is available on [Steam](https://store.steampowered.com/app/771420/Primal_Light/).
+
+In the game, you play as Krog, a one-eyed blue caveman wearing a red loincloth, who is on a quest to save his tribe from an evil moon god.
+
+The game features 10 challenging levels with arcade-style combat reminiscent of the 16-bit era. As you progress, you acquire new acrobatic abilities which allow you to overcome obstacles and enemies. Each level ends with a gruesome boss.
+
+### How did you discover Godot? When did you start using it? Do you have prior experience with other game engines?
+
+Around 4 years ago, I was learning how to program (in order to do natural language processing) when it suddenly dawned on me that I had probably learned enough to be able to make a game. I prototyped a little top-down Zelda clone and showed it to my friend Jeff one night while we were hanging out at his apartment. We were so excited by the prospect of making a game that he dove headfirst into pixel art and I into programming. That was around August 2017.
+
+We started making Primal Light in Python (using the [PyGame](https://www.pygame.org/news) module), but when we started getting serious about the project, we decided to shift to a full-fledged engine.
+
+I had seen Godot come up in comments on [Game Development Stack Exchange](https://gamedev.stackexchange.com/) with people describing it as “Pythonic”, so it seemed like a natural candidate for me.
+
+At that time, I didn’t have experience with any engines outside of PyGame, but since then I’ve become proficient in GMS2 and Unity, in addition to Godot.
+
+### Why did you choose Godot for your project?
+
+When we were deliberating on moving to a full-fledged engine, I had seen Godot come up in comments on [Game Development Stack Exchange](https://gamedev.stackexchange.com/) with people describing it as “Pythonic”, so it seemed like a natural candidate for me. The fact that I am also a big fan of Samuel Beckett didn’t hurt Godot’s chances with me.
+
+### Which parts of the game development process did you enjoy the most while working on your project?
+
+Jeff and I both enjoyed designing bosses and boss battles.
+
+### Which parts of the game development process did you find the most difficult to apply in your project?
+
+Jeff and I were flying by the seat of our pants on this project, as it is our first game. We encountered difficulties all over the place, but our sheer excitement at making a game sustained us. We found level design intimidating at first, but, like lots of things, it becomes fun once you try to study it and learn its mysterious rules.
+
+### How has Godot helped you advance on your project? Which aspects of Godot do you consider to be its strength?
+
+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.
+
+### How do you find Godot's multi-platform support, both for the editor and your final project?
+
+We developed Primal Light on both Windows & Mac and had no issues whatsoever, even on old hardware (I started development on a 2008 MacBook). We built for Windows, Mac, & Linux, and found it a breeze, even accommodating Steam integration across all three platforms using the life-saving [GodotSteam](https://github.com/Gramps/GodotSteam) repo. Godot’s option to toggle between GLES2 and GLES3 also makes it easy to build for specific rendering architectures if needed.
+
+The only issues we encountered were some inconsistent capitalization in our filenames causing crashes on case-sensitive OSes, and using the same variable name in both a local and nested local context causing crashes on Mac (both easily fixed).
+
+### Which challenges have you encountered when using Godot?
+
+We had some thorny issues with pixel jitter when our camera would settle on the player, but I think that’s a cross-engine problem which plagues pixel art games in general.
+
+We tried to use Godot’s native Camera2D offset when implementing screenshake, but offset alone wouldn’t allow the viewport to traverse camera limits if the camera was adjacent to them. I filed that as a bug on GitHub and Godot devs fixed it in Godot 3.1 or thereabouts.
+
+We originally had Light2Ds littered throughout the game (for example, for candle effects), but it caused severe performance issues. This was a known issue for Light2Ds back then. I think I heard that Godot devs recently made strides in improving their performance, but I’m not certain.
+
+### Which features would you like to see in future versions of Godot?
+
+I think Godot has an excellent feature set as is, and I am typically a fan of minimalism. Some of the larger engines have bloat that irritates me aesthetically.
+
+I know some people would like to see a sprite editor in the engine (similar to what you have in GMS2), but I never encountered a use case for that in my own development.
+
+I recall a Twitter poll recently which asked Godot users what should be focused on in the near future. I voted for improvements to tilemap functionality, which was the frontrunner at least at that time.
+
+### Would you use Godot for a future project?
+
+One hundred times yes!
+
+___
+
+
+*Primal Light is available on [Steam](https://store.steampowered.com/app/771420/Primal_Light/) for Windows, macOS and Linux.*
\ No newline at end of file
diff --git a/collections/_article/godot-showcase-garden-path-developer-talks-about-his-experience.md b/collections/_article/godot-showcase-garden-path-developer-talks-about-his-experience.md
new file mode 100644
index 0000000000..16d799f254
--- /dev/null
+++ b/collections/_article/godot-showcase-garden-path-developer-talks-about-his-experience.md
@@ -0,0 +1,86 @@
+---
+title: "Godot Showcase - The Garden Path developer talks about his experience"
+excerpt: "This week, we are interviewing Louis Durrant about his game The Garden Path. It will be released in Autumn/Winter 2021 for Windows, macOS and Linux."
+categories: ["showcase"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/60f/9a7/b1e/60f9a7b1eb0ca060142976.jpg
+date: 2021-07-22 16:30:00
+---
+
+Welcome to another developer interview following the [introduction of the Godot Showcase page](https://godotengine.org/article/new-showcase-for-projects-made-with-godot)! This week, we are interviewing Louis Durrant about his game [*The Garden Path*](https://godotengine.org/showcase/the-garden-path).
+
+___
+
+
+### Introduce yourself in a few sentences.
+
+Hi, I'm Louis Durrant, and I make games under '[carrotcake](https://carrotcake.studio/)'. I'm an illustrator living in Bristol, UK. The studio was me in my parent's attic to start off, but now it's me in a home-office, so we're making inroads.
+
+### Introduce your project in a few sentences: description, supported platforms, release date, etc.
+
+'The Garden Path' is really just the relaxed, whimsical social-sim I've always wanted on PC. Something slow-spaced that you can put on a podcast alongside, or just soak in the atmosphere - you know?
+
+I want to keep things fairly low-key, as this is my first real release. I'm hoping to release the game this autumn or winter, but I'm not rushing myself. I'll be supporting the game with more content after it's released, but I want it to feel like a polished product worth the price tag on release day.
+
+It will be a PC game at heart, but it is built from the ground up with a controller in mind. When the time is right, I think it would be an ideal game for the Nintendo Switch.
+
+### How did you discover Godot? When did you start using it? Do you have prior experience with other game engines?
+
+I lurk around a number of forums for open source software and Godot was always in the back of my mind.
+
+I remember opening it up many years back and having no idea where to start.
+
+I introduced myself to game development during my time at university studying graphic design. It was an artsy enough course that you could go ahead and do things like that. I started with Visionaire Studio because you can build something pretty substantial without any code, but it helped me understand the fundamentals.
+
+After I graduated in 2017 I told myself I'd start learning code and start learning Godot.
+
+Nowadays working in the engine feels right at home.
+
+### Why did you choose Godot for your project?
+
+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.
+
+### Which parts of the game development process did you enjoy the most while working on your project?
+
+As ever the joy of game development is bringing each puzzle piece together and seeing the final result. I love art, animation, soundtracking and programming, and those are all tools to capture a certain mood I'll have in mind.
+
+It's when each of those elements comes together in the way you intended, or perhaps even in a way you hadn't, and it's like a toy springing to life with it's own quirks and character.
+
+### Which parts of the game development process did you find the most difficult to apply in your project?
+
+The raw maths. Not that there's an awful lot with a game like mine, but it's surprising how often you need a certain formula to return the number you're after.
+
+I spent most of my maths lessons watching crows out the window. I'm fortunate enough to have some pretty mathsy friends who I can ping my questions to. They'll tell me 'use modulo' or 'you want the absolute number for that' and I learn something new.
+
+### How has Godot helped you advance on your project? Which aspects of Godot do you consider to be its strength?
+
+I love how modular everything feels. Just in the last few months or so I've started to really appreciate how you can break everything down, and start building your own systems within the engine.
+
+Once I started understanding how you can make your own objects and resources, you can really start creating flexible methods tailored to your own game.
+
+### Which challenges have you encountered when using Godot?
+
+Godot is still young, which is part of its appeal, but there isn't always an easy solution for certain complex things you don't necessarily need. The community is great and it's growing, but it isn't as big as more established engines, so the answers aren't always out there when you go looking.
+
+I spent longer than I care to admit trying to get a white outline drawn over multiple sprites, but couldn't for the life of me get it to work. Something to do with a BackBufferCopy node, I got that far.
+
+### Which features would you like to see in future versions of Godot?
+
+Honestly I feel spoiled by the engine already, so I'd feel cheeky asking for much more. Directional shadows for 2D are already on the roadmap I believe, and that would be a big step up for my game's visuals.
+
+And hey, being able to adjust easing in the AnimationPlayer of multiple properties would be mint.
+
+Hat's off to everyone working on the engine, I wish I had an ounce of the mental wherewithal to build or contribute to a project like this. Keep up the great work, and keep keeping it real.
+
+### Would you use Godot for a future project?
+
+In a heartbeat.
+
+___
+
+
+*The Garden Path is expected to be released in Autumn/Winter 2021. It currently has an ongoing [Kickstarter campaign](https://www.kickstarter.com/projects/fromcarrotcake/the-garden-path-a-hand-illustrated-slice-of-life-sim-game) at the time of publishing this interview.*
\ No newline at end of file
diff --git a/collections/_article/godot-showcase-john-watson-gravity-ace.md b/collections/_article/godot-showcase-john-watson-gravity-ace.md
new file mode 100644
index 0000000000..de1c80f6e0
--- /dev/null
+++ b/collections/_article/godot-showcase-john-watson-gravity-ace.md
@@ -0,0 +1,63 @@
+---
+title: "Godot Showcase - Gravity Ace developer talks about his experience"
+excerpt: "This week, we are interviewing John Watson about Gravity Ace, a 2D multi-directional gravity shooter. It was released in October 2020 in early access and is available on Windows and Linux."
+categories: ["showcase"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/607/b66/7e9/607b667e93a46491184773.png
+date: 2021-04-18 14:50:00
+---
+
+Welcome to another developer interview following the [introduction of the Godot Showcase page](https://godotengine.org/article/new-showcase-for-projects-made-with-godot)! This week, we are interviewing John Watson about the game [*Gravity Ace*](https://godotengine.org/showcase/gravity-ace).
+
+___
+
+### Introduce yourself in a few sentences.
+
+Hi, I'm John, I'm a (mostly) solo game developer making games that I want to play. I've been making games as a hobby since 2013, mostly by participating in weekend or month-long game jams. My first game was for the One Game A Month challenge. Now I'm working on my first commercial project. My formal training is in programming but I've always been interested in art and music as well. Game development is fantastic because it allows me to bring all of that together into a single project.
+
+### Introduce your project in a few sentences: description, supported platforms, release date, etc.
+
+Gravity Ace is a 2D multi-directional gravity shooter (cave-flyer). It's a love letter to Thrust and Gravitar and all of the amazing games they inspired. Remember Thrust? Most people don't but I loved that game and I really wanted to play it again. Gravity Ace is inspired by Thrust but adds a lot of modern touches and generally brings the art, sound, and gameplay up to modern standards. It's currently in Early Access with an expected release date in 2021. Linux and Windows. You can wishlist or buy it on [Steam](https://store.steampowered.com/app/1003860/Gravity_Ace/) or [itch.io](https://jotson.itch.io/gravity).
+
+### How did you discover Godot? When did you start using it? Do you have prior experience with other game engines? Why did you choose Godot for your project?
+
+I've made games in a bunch of different engines and frameworks and languages over the years. Haxe, Lua, JavaScript, Java. Those experiences were great but they all fell a bit short in terms of ease of use or features or productivity. I think I discovered Godot not long after the project was open sourced. At the time I was looking for an engine with a built-in visual editor because I was tired of moving things around by typing coordinates in code. I needed something to speed up my workflow and make it less cumbersome to quickly prototype ideas.
+
+Of course I tried Unreal and Unity but as a full-time Linux user I was unsatisfied with their lack of official support. And those engines felt just so... massive. I chose Godot for a lot of reasons. It's small, fast, and has first-class support for Linux. It has all the features I need for the games I want to make. It's open source with great leadership and community. And I think it has a bright future.
+
+### Which parts of the game development process did you enjoy the most while working on your project?
+
+One of the reasons I like making games is because it allows me to combine several of my interests into one project. I enjoy programming. But I also enjoy making art and music. So I tend to bounce around between those things. That's one of the benefits of working on a game solo. I get to do everything. (That's also one of the drawbacks of working on a game solo.) So if I get tired of programming I can switch to animation or sound or music. It keeps things interesting.
+
+### Which parts of the game development process did you find the most difficult to apply in your project?
+
+I mean... My mind went immediately to the cliché answers to this question but really, when I think about it deeply, I can't think of anything about game development that is easy. It's all difficult and it's hard to pick one thing. Yesterday I was working on a bug that is caused by some combination of timers and bad math that I still haven't solved yet. I've thrown away more art than is in the actual game.
+
+Game development is hard, right? It's not the engine or the programming or anything like that... it's the process. Designing things, thinking deeply about how things should work, making interesting artwork, it's all hard. But it's the kind of struggle that's fun to do if you have a certain kind of personality. Like, I guess there are people who climb mountains? For fun? That's not easy and it's certainly not me but I get it. Would I make games if it was easy? Probably. Maybe. But it's hard to imagine.
+
+### How has Godot helped you advance on your project? Which aspects of Godot do you consider to be its strength?
+
+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.
+
+### How do you find Godot's multi-platform support, both for the editor and your final project?
+
+This is a huge selling point for me. Being able to build for multiple platforms from a single code base and all from a single machine is amazing. The fact that all of my builds finish in under a minute is icing on the cake.
+
+### Which challenges have you encountered when using Godot?
+
+Nothing out of the ordinary really. Every engine I've ever used has a few warts and bugs that you have to work around.
+
+### Which features would you like to see in future versions of Godot?
+
+Nice thing about an open source project is that you can see all of the open issues and the developers are very open about what they are working on. So I know better 3D support is coming, which I'm very excited about. I'm pretty happy with the 2D support as-is. New features are great but I'd almost like to see the devs focus on stability, performance, and improving the features that we already have rather than continue to work on new stuff. I'd love to be able to edit shaders in the main code editor instead of a dock. I'd also like to see better and more stable support for 2D lights.
+
+### Would you use Godot for a future project?
+
+Yes, absolutely. In fact, I already am.
+
+___
+
+
+*Gravity Ace is available on [Steam](https://store.steampowered.com/app/1003860/Gravity_Ace/) and [Itch.io](https://jotson.itch.io/gravity) for Windows and Linux. You can also follow its development on [Twitter](https://twitter.com/yafd).*
\ No newline at end of file
diff --git a/collections/_article/godot-showcase-justin-arnold-rpg-in-a-box.md b/collections/_article/godot-showcase-justin-arnold-rpg-in-a-box.md
new file mode 100644
index 0000000000..c891d423e4
--- /dev/null
+++ b/collections/_article/godot-showcase-justin-arnold-rpg-in-a-box.md
@@ -0,0 +1,63 @@
+---
+title: "Godot Showcase - RPG in a Box developer talks about his experience"
+excerpt: "We interviewed Justin Arnold about his project RPG in a Box, which is an engine made with Godot that lets you easily create 3D grid-based, voxel-style RPGs, adventure games, and more!"
+categories: ["showcase"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/61d/f21/37d/61df2137db710511123151.png
+date: 2022-01-12 17:30:00
+---
+
+Welcome to a new [Godot showcase](https://godotengine.org/showcase/) developer interview to start off the new year! This time, we asked Justin Arnold about his experience developing and releasing his project [*RPG in a Box*](https://godotengine.org/showcase/rpg-in-a-box). This "engine within an engine" demonstrates that Godot is not only capable for game development, but also for creating applications with complex user interfaces.
+
+___
+
+### Introduce yourself (or your studio) in a few sentences.
+
+Hello! My name is Justin Arnold and I'm a solo developer working on RPG in a Box. I've always loved programming since my dad got me interested in learning BASIC on our C64 as a child. As I got older I developed a strong desire to build an RPG-focused tool that would allow others to easily create their own worlds and adventures. This idea has gone through several iterations over the past two decades and I'm excited to finally be bringing it to fruition through RPG in a Box!
+
+### Introduce your project in a few sentences: description, supported platforms, release date, etc.
+
+RPG in a Box is an engine that lets you easily create 3D grid-based, voxel-style RPGs, adventure games, and more! I began developing it around the beginning of 2015. It was released into Early Access on August 12th, 2019 for Windows, Linux, and macOS. Games created with RPG in a Box can also be exported to these platforms. A free demo version is available on [Steam](https://store.steampowered.com/app/498310) and [Itch.io](https://zeromatrix.itch.io/rpginabox) if you'd like to check it out and get a feel for the current state of the engine! It includes all features found in the full version, with some limitations on map size/count and a splash screen on exported games.
+
+I also have a [Patreon](https://www.patreon.com/rpginabox) for those who are interested in supporting the development of RPG in a Box beyond a purchase of the software.
+
+### How did you discover Godot? When did you start using it? Do you have prior experience with other game engines?
+
+I first heard about Godot from a Slashdot article when the engine had reached its 1.0 stable version. I started playing around with it shortly after (around the beginning of 2015) as it seemed to be a great fit for what I wanted to create. I had some prior experience with Xith3D and jMonkeyEngine (alongside various UI frameworks like Swing and Eclipse RCP) while working on RPG Toolset, the Java-based predecessor to RPG in a Box.
+
+### Why did you choose Godot for your project?
+
+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.
+
+### Which parts of the game development process did you enjoy the most while working on your project?
+
+One of the most enjoyable and satisfying things has been getting to see the community bring their own game ideas to life through RPG in a Box. As programming has always been a passion of mine, coding new features and functionality into the tool and then seeing people use it to make something creative and imaginative is a wonderful part of the process!
+
+### Which parts of the game development process did you find the most difficult to apply in your project?
+
+Being a solo developer, I'd say the most difficult part is testing new functionality and changes to ensure they won't break something else, especially as the tool continues to grow.
+
+### How has Godot helped you advance on your project? Which aspects of Godot do you consider to be its strength?
+
+Having access to a large variety of built-in UI components that work seamlessly with the rest of the engine has been extremely helpful. I love the flexibility of the scene system and GDScript, and how the API seems to pretty much always have the specific functionality I'm looking for.
+
+### How do you find Godot's multi-platform support, both for the editor and your final project?
+
+Great! It's been simple and straightforward to compile the binaries and release the software for Windows, Linux, and MacOS. It's also convenient since it allows RPG in a Box users to easily export their created games to multiple platforms as well.
+
+### Which challenges have you encountered when using Godot?
+
+None that I can think of! Using Godot for my project has been a great experience overall.
+
+### Which features would you like to see in future versions of Godot?
+
+Nothing in particular at this time. I believe I will be more than happy with everything that Godot 4.0 is bringing!
+
+### Would you use Godot for a future project?
+
+I would definitely use Godot for any future projects! Of course, that's if I ever get around to it, as I'm quite sure I have enough ideas for RPG in a Box to last a lifetime, haha. And as Godot just keeps getting better and better, there will be even more opportunities to expand RPG in a Box further, which is really exciting!
+
+___
+
+
+*[RPG in a Box](https://www.rpginabox.com/) is available on [Steam](https://store.steampowered.com/app/498310/) and [Itch.io](https://zeromatrix.itch.io/rpginabox) for Windows, macOS and Linux.*
\ No newline at end of file
diff --git a/collections/_article/godot-showcase-leocesar3d-human-diaspora.md b/collections/_article/godot-showcase-leocesar3d-human-diaspora.md
new file mode 100644
index 0000000000..3bb00d63aa
--- /dev/null
+++ b/collections/_article/godot-showcase-leocesar3d-human-diaspora.md
@@ -0,0 +1,61 @@
+---
+title: "Godot Showcase - Human Diaspora developer interview"
+excerpt: "This week, we are interviewing Leonardo \"Leocesar3D\" Veloso about their game Human Diaspora. It was released in September 2020 in early access and is available on Windows and Linux."
+categories: ["showcase"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/604/a91/97d/604a9197d1523072023513.jpg
+date: 2021-03-11 21:00:00
+---
+
+Welcome to another developer interview following the [introduction of the Godot Showcase page](https://godotengine.org/article/new-showcase-for-projects-made-with-godot)! This week, we are interviewing Leonardo "Leocesar3D" Veloso about their game [*Human Diaspora*](https://godotengine.org/showcase/human-diaspora).
+
+___
+
+### Introduce yourself in a few sentences.
+
+My name is Leonardo Veloso and I am a 3D artist working on TV broadcasting in Brazil, in my spare time I am a hobbyist game developer.
+
+### Introduce your project in a few sentences: description, supported platforms, release date, etc.
+
+Human Diaspora is a First-Person Shooter where the player must conquer the colony planet to save humanity. It is available for Linux and Windows and I released it in September 2020. [You can find it as Early Access in Steam.](https://store.steampowered.com/app/1395420/Human_Diaspora)
+
+### How did you discover Godot? When did you start using it? Do you have prior experience with other game engines?
+
+I found Godot when I looked up for a FOSS alternative for Unity/Unreal and first used it in October 2019. I began making games with Game Maker 8, then switched to Unity to create my first 3D game and kept using it until I tried Godot. Now I use Godot as my only Game Engine tool.
+
+### Why did you choose Godot for your project?
+
+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.
+
+### Which parts of the game development process did you enjoy the most while working on your project?
+
+I just love to see my 3D models come to life inside the game engine, walk around, look at the details, and of course, generate interactivity for them is pure bliss and joy.
+
+### Which parts of the game development process did you find the most difficult to apply in your project?
+
+I am probably not alone on this one: Game Design. Creating a fun game is second nature to some people, but for me, it is the most challenging aspect of game creation. What is fun for me maybe is bad design, not fun, or lacking for most of the players?
+
+### How has Godot helped you advance on your project? Which aspects of Godot do you consider to be its strength?
+
+I love the iterative approach of Godot to test ideas as fast as possible: import a model, create a sub-scene for it with its associated specialized scripts, hit play and iterate over.
+
+### How do you find Godot’s multi-platform support, both for the editor and your final project?
+
+In my case, it is just a button press away to see my game running on Linux/Windows/Mac.
+
+### Which challenges have you encountered when using Godot?
+
+Debugging: some errors pop here and there, and it is really hard for me to trace its roots or if it is an engine bug. Sometimes their description is lackluster and confusing. I am staring at you shader compilation and parenting errors.
+
+### Which features would you like to see in future versions of Godot?
+
+I want the “Make it look beautiful” button implemented. Jokes apart, as a 3D artist I want hassle free look and feel configuration of 3D scenes. The PBR approach associated with groundbreaking dynamic/static global illumination, environmental effects as volumetric lighting, realistic post-processing effects, and of course, everything working together in an optimized and performant manner. Specially when 4K monitors may become the norm in the near future.
+
+### Would you use Godot for a future project?
+
+Of course, I’ll stick with it! I believe the game engine has a bright future and I want to be part of it. Showing off of what the tool is capable of and contributing to its growth through my own games, reporting and tutorials.
+
+___
+
+
+*Human Diaspora is available on [Steam](https://store.steampowered.com/app/1395420/Human_Diaspora/) for Windows and Linux. You can also follow its development on [Twitter](https://twitter.com/Leocesar3D).*
\ No newline at end of file
diff --git a/collections/_article/godot-showcase-little-red-dog-games.md b/collections/_article/godot-showcase-little-red-dog-games.md
new file mode 100644
index 0000000000..42645a36f0
--- /dev/null
+++ b/collections/_article/godot-showcase-little-red-dog-games.md
@@ -0,0 +1,60 @@
+---
+title: "Godot Showcase - Little Red Dog Games talk about their experience"
+excerpt: "This week, we've interviewed Little Red Dog Games' lead developer Ryan Hewer about their latest project, Rogue State Revolution."
+categories: ["showcase"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/5fd/8c9/92b/5fd8c992b68a7578144586.jpg
+date: 2020-12-15 14:30:00
+---
+
+Welcome to the first developer interview following the [introduction of the new Showcase page](https://godotengine.org/article/new-showcase-for-projects-made-with-godot)! This week, we've interviewed [Little Red Dog Games](https://www.littlereddoggames.com/)' lead developer Ryan Hewer about their latest project, [*Rogue State Revolution*](https://godotengine.org/showcase/rogue-state-revolution).
+
+___
+
+### Introduce your studio in a few sentences.
+
+We're [Little Red Dog Games](https://www.littlereddoggames.com/)! We're a commercial developer that has been developing deep strategy games with despotic roosters and snarky surveyor probes for almost a decade now.
+
+We'd love to show off [Rogue State Revolution](https://store.steampowered.com/app/1145340/Rogue_State_Revolution/), which will be debuting for Windows and Linux in late February 2021. As President of the People's Republic of Basenji, you must appoint ministers and make sure they stay loyal. Build roads, factories, nuclear power plants and more, if you can afford it. Anything can happen: meteor strike, a pandemic, a cane-toad infestation, a robot apocalypse... if you can imagine it, there's a good chance that it's hiding somewhere in this game, waiting to be discovered. Your role is to care for your society, but a growing rebellion threatens to remove you from power. The game has lots of FMV, beautiful 3D visuals and represents a huge creative effort over the past two years. [You can check it out on Steam](https://store.steampowered.com/app/1145340/Rogue_State_Revolution/).
+
+### How did you discover Godot? When did you start using it? Do you have prior experience with other game engines?
+
+We've worked with other engines and frameworks before, but we stumbled upon Godot while actively looking for new game engines to try out with strong Linux support in 2015. We started with version 2-point-something and have delighted to see the engine grow and mature at the same pace as our own ambitions.
+
+We published two games with Godot already, [Deep Sixed](https://store.steampowered.com/app/591000/Deep_Sixed/) in 2018 and [Precipice](https://store.steampowered.com/app/951670/Precipice/) in 2019.
+
+### Why did you choose Godot for your project?
+
+Well, we've been using Godot for years and have grown very familiar with every little nook and cranny of the engine. Whenever the topic of switching comes up, we look around and it's clear that this free, open-source, incredibly versatile engine meets all our needs and we can't think of a good reason why we would need to. The node and scene architecture lets us design our games based on what we think makes sense for development, rather than forcing us into how an engine would want us to structure things.
+
+### Which parts of the game development process did you enjoy the most while working on your project?
+
+I think most of us agree that the most fun is in the early stages when you're fleshing out the design basis, building the foundations and implementing the basic structure of the game code. This is the time that every little addition feels like a big step and the progress is measured in miles rather than inches. It's easy to see why people love to write tutorials and conceptual-proofs, it's so rewarding!
+
+### Which parts of the game development process did you find the most difficult to apply in your project?
+
+We've struggled a little with harmonizing the asset importation pipelines between Blender, Maya and other 3D tools software, and developing games with very large object counts has made optimizing for speed quite a challenge (though admittedly, that would also be a challenge regardless of what engine we were developing in).
+
+### How has Godot helped you advance on your project? Which aspects of Godot do you consider to be its strength?
+
+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.
+
+### How do you find Godot's multi-platform support, both for the editor and your final project?
+
+The platforms that Godot supports by default all work very well, especially the desktop platforms, where it shines. We've got a console partnership that we'll be excited to reveal soon that has gone very smoothly. We have very little experience with mobile or HTML5 development.
+
+### Which challenges have you encountered when using Godot?
+
+Importing 3D assets and animations can sometimes be a pain. Even though the compatibility with various formats has improved lately, we're still running into issues with UV maps or shape keys from time to time, which are typically resolved by trying different file formats until one of them does the job in the matter intended. We have also encountered difficult-to-trace crashes in our exports that are exceedingly difficult to debug because they are not captured in the release build.
+
+### Which features would you like to see in future versions of Godot?
+
+There's a short-list of GDScript optimizations we're looking forward to and improvements to the asset importation pipeline is welcome. Can we bring back particle attractors? Oh, and the themes system could use a bit of a restructuring. Like everybody else, we're extremely excited about what is coming with Godot 4.0 and the road is now paved for us to pursue some really beautiful 3D products in the future.
+
+### Would you use Godot for a future project?
+
+You can count on it and we have already broken ground on the next big thing in Godot. In our opinion, there are no perfect engines, just preferred tools for certain kinds of jobs. For us, Godot has always been our preferred tool for the kinds of games we like to develop.
+
+ ___
+
+*Rogue State Revolution can be wishlisted on [Steam](https://store.steampowered.com/app/1145340/Rogue_State_Revolution/) and will be available on Windows and Linux.*
\ No newline at end of file
diff --git a/collections/_article/godot-showcase-monolith-of-minds-resolutiion.md b/collections/_article/godot-showcase-monolith-of-minds-resolutiion.md
new file mode 100644
index 0000000000..be330ed297
--- /dev/null
+++ b/collections/_article/godot-showcase-monolith-of-minds-resolutiion.md
@@ -0,0 +1,64 @@
+---
+title: "Godot Showcase - Resolutiion developer Monolith of Minds talks about their experience"
+excerpt: "We've interviewed Monolith of Minds about their latest game Resolutiion. It was released in May 2020 and is available on Windows, macOS, Linux and Nintendo Switch."
+categories: ["showcase"]
+author: Hugo Locurcio
+image: /storage/app/uploads/public/600/74c/0ca/60074c0ca1012683594514.png
+date: 2021-01-19 20:30:00
+---
+
+Welcome to the second developer interview following the [introduction of the new Showcase page](https://godotengine.org/article/new-showcase-for-projects-made-with-godot)! This week, we've interviewed Monolith of Minds about their latest game [*Resolutiion*](https://godotengine.org/showcase/resolutiion).
+
+___
+
+### Introduce your studio in a few sentences.
+
+We’re Monolith of Minds, two brothers from Germany who set out to tell tall tales of stray heroes and kind monsters.
+
+### Introduce your project in a few sentences: description, supported platforms, release date, etc.
+
+Our first game “Resolutiion” was released in May 2020 on [Steam](https://store.steampowered.com/app/975150/Resolutiion/), [Good Old Games](https://www.gog.com/game/resolutiion) and [Nintendo Switch](https://www.nintendo.com/games/detail/resolutiion-switch/).
+
+Five years in development, Resolutiion tells the story of the soldier Valor and his AI Alibii’s journey through a 2D dreamworld of lovely pixels, dirty jokes and badassemotional tunes, inspired by classic Zelda and similar action-adventure-games.
+
+### How did you discover Godot? When did you start using it? Do you have prior experience with other game engines?
+
+We love to rummage in the software world, digging up tools that help us tell our stories better. While we explored some more or less popular engines earlier, we love Free and Open Source Software, so naturally we came across Godot and fell in love with it right from the start.
+
+### Why did you choose Godot for your project?
+
+Developing with Godot is very easy. The core functionality can be picked up quickly and the engine is powerful enough to accomplish everything we were looking for in our game. Also the community is awesome and creates plenty of valuable tutorials and guides.
+
+### Which parts of the game development process did you enjoy the most while working on your project?
+
+Since we had no previous experience in game-development, learning everything from scratch was the biggest challenge but also the greatest pleasure. Seeing all those tiny splashes of color coming together into forming a full picture certainly was an amazing experience.
+
+### Which parts of the game development process did you find the most difficult to apply in your project?
+
+I guess we struggled quite a bit with animation and cut-scenes: these things always seem so simple in your mind, but turn out to be an endless sequence of tiny steps, each one just leading into more uncertainty.
+
+While Godot’s animation editor hits a sweet-spot between accessibility and complexity, we tried to cut corners every time a new scene emerged. After blaming each other for the shitty job, eventually we took a deep breath and put in the handiwork every decent cut-scene demanded.
+
+### How has Godot helped you advance on your project? Which aspects of Godot do you consider to be its strength?
+
+We have a fable for Python, therefore can appreciate GDScript a lot. For an iterating workflow the scene-system and its flexibility is a master piece in software design.
+
+### How do you find Godot's multi-platform support, both for the editor and your final project?
+
+Having such a full fetched editor run on Linux was probably a big selling point for us when we started. Also being able to export to all PC platforms, iOS and Android is definitely one of Godot’s strengths.
+
+### Which challenges have you encountered when using Godot?
+
+None, haha.
+
+### Which features would you like to see in future versions of Godot?
+
+Porting the game to the Nintendo Switch worked out fine, since we had Lone Wolf Technology to back us up. However, so far we haven’t found a way to get the game running on any of the other big consoles, such as PlayStation and Xbox. Better console integration is definitely something we are looking forward to.
+
+### Would you use Godot for a future project?
+
+Definitely, yes. Godot’s open source philosophy, fast development cycle and indie-friendly community make it an obvious choice for us. We have already started work on our second video game, and hope to share some first glimpses in early 2021.
+
+___
+
+*Resolutiion is available on [Steam](https://store.steampowered.com/app/975150/Resolutiion/), [Good Old Games](https://www.gog.com/game/resolutiion) and [Nintendo Switch](https://www.nintendo.com/games/detail/resolutiion-switch/).*
\ No newline at end of file
diff --git a/collections/_article/godot-slides-gamified-slideshows-with-godot.md b/collections/_article/godot-slides-gamified-slideshows-with-godot.md
new file mode 100644
index 0000000000..2c80151e5b
--- /dev/null
+++ b/collections/_article/godot-slides-gamified-slideshows-with-godot.md
@@ -0,0 +1,61 @@
+---
+title: "Godot Slides: gamified slideshows made in Godot"
+excerpt: "Build beautiful and gamified presentations with Godot Slides 2.0! The project ships with a 10 minutes multilingual pitch for you to give at gamedev meetups and other events, to introduce students to the engine... It's all drag-and-drop and, as you'd expect, open source."
+categories: ["news"]
+author: Nathan GDQuest
+image: /storage/app/uploads/public/5bb/5f3/86b/5bb5f386bf45c464125655.png
+date: 2018-10-05 17:00:00
+---
+
+Last year, I was invited to present Godot 3 at a few venues in France:
+
+
+
+
+
+Making good presentations takes a **lot** of time, and I felt fellow teachers and in the community could reuse this one.
+
+As Godot has an international community, we would need to translate the slides and to use a technology that would allow us to improve it over time. Traditional slideshow programs are not designed for that, so they were out of the question.
+
+It turns out there's a mature technology that would allow us to create many translations with ease, to showcase interactive game demos, and lot more than that: **the Godot engine itself**. That is how [Godot Slides](https://github.com/GDquest/godot-slides) was born.
+
+Long story short, the first version was tricky to use. Although it was available in seven languages, the presentation was a little too long and technical. But some of you used it all around the globe, showing there was a need for it. So...
+
+## Better, Faster, Stronger: Godot Slides 2.0
+
+Slides 2.0 is a **complete makeover** of the slideshow system: it is now entirely **drag-and-drop**, it's **modular and extensible**, it uses Godot's built-in translation system, the engine's UI system, and it's easier than ever to insert game demos inside of your slides!
+
+
+
+You can even change the language in real time if, like me, you have to give it into two languages at the same time.
+
+
+
+
+## Godot Power pitch: a 10 minutes intro to the engine
+
+Slides ships with a 10 minutes introduction to Godot, a few of its flagship features, and information on how to get started with the engine:
+
+
+
+It's a short talk you can give at gamedev meetups, or for longer presentations, to get everyone on the same page before showcasing the editor for instance. The Power Pitch is still a little technical, with a few slides targeted at developers. But as it's short, it should not be too dull either.
+
+## New languages and better pictures: we need your help!
+
+At the time of writing, the presentation is already available in English, French, Japanese (written by me, so it needs proofing), and Spanish thanks to Antonio Torres Moríñigo.
+
+Here's a video guide to contribute a new language:
+
+
+
+Even if you're not familiar with Git, but you would still like to do translations, you can still contribute as explained in the tutorial, be part of the project history, and appear in the contributors' tab!
+
+Please help us translate it into new languages! It will help people in your community cover the engine in their native language. This contribution will count towards your Hacktoberfest progress as well.
+
+We're also [looking for beautiful pictures](https://github.com/GDquest/godot-slides/issues/33) of the editor with professional grade assets, to not only showcase some of the latest features in Godot 3.1 but to hopefully impress people.
+
+You can get [Slides 2.0 project on GitHub](https://github.com/GDquest/godot-slides) right now (please give it a star to help more people find it).
+
+When you give the presentation somewhere, feel free to ping me on Twitter [@Nathan_GDquest](https://twitter.com/NathanGDquest)! I'd love to know if people are using it!
+
+Thank you kindly for your time.
\ No newline at end of file
diff --git a/collections/_article/godot-sprint-and-user-meeting-barcelona-june-2022.md b/collections/_article/godot-sprint-and-user-meeting-barcelona-june-2022.md
new file mode 100644
index 0000000000..08a8075d4f
--- /dev/null
+++ b/collections/_article/godot-sprint-and-user-meeting-barcelona-june-2022.md
@@ -0,0 +1,46 @@
+---
+title: "Godot Sprint and User Meeting Barcelona June 2022"
+excerpt: "After a couple of years of online-only events, we are bringing back some in-person Godot events. More precisely, today we are announcing two events taking place at Barcelona: a Godot Sprint for contributors (June 2nd & 3rd) and a Godot User Meeting (June 4th). Both events will be free of charge."
+categories: ["events"]
+author: Joan Fons
+image: /storage/app/uploads/public/626/a6c/7d0/626a6c7d07e5f570805755.png
+date: 2022-04-28 11:52:45
+---
+
+After a couple of years of online-only events, we are bringing back some in-person Godot events. More precisely, today we are announcing two events taking place at Barcelona: a Godot Sprint for contributors (June 2nd & 3rd) and a Godot User Meeting (June 4th). Both events will be free of charge.
+
+**Please fill out [this form](https://forms.gle/mprhe1GHHThAWy9Z6) if you intend to join any of the two events.**
+
+
+## What are Godot Sprint and Godot User Meeting?
+
+### Godot Sprint - June 2 & 3, 2022 (10:00 to 19:30)
+
+The Godot Sprint is a two-day event dedicated to engine contributors. As we usually work together online and discuss via Rocket.Chat or GitHub, we use opportunities like Godot Sprint to finally talk together IRL, which lets us discuss a number of technical topics and reach consensus much faster.
+
+So this event is mostly meetings focusing on specific contribution-related topics, such as the development roadmap, how to improve our workflows, onboarding of new contributors, as well as many technical topics which are of interest to the attendees.
+
+And of course this is a great opportunity to get to know each other better, which also greatly improves our ability to contribute efficiently towards common goals and make Godot an ever greater engine.
+
+If you're not a contributor yet but would like to become one, or are curious about a community-driven FOSS project operates, you are welcome to attend the Godot Sprint too.
+
+The Godot Sprint will take place at the Lleialtat Santsenca space in Barcelona.
+
+### Godot User Meeting - June 4, 2022 (10:00 to 20:00)
+
+The first official Godot User Meeting will be a full day event, taking place on June 4th at the Lleialtat Santsenca space in Barcelona. It will be a meeting point for Godot users and engine contributors in which to share experiences and get to know each other.
+
+We mostly invite Godot users from Barcelona and the neighboring regions to join us for a day, meet each other and core contributors after the Sprint. There will be some space for game demos and a few talks by community members, which we will detail as the event gets closer.
+
+## Practical information
+
+### COVID precautions
+We will follow the requirements of the Spanish administration, as well as impose our own face mask and/or testing requirements for the safety of attendees. If COVID cases/ICU bed occupations were to spike before/around our event, it would be cancelled.
+
+### Venue's address
+La Lleialtat Santsenca
+C/ Olzinelles 31, Baixos
+08014 Barcelona
+
+### Car restrictions
+If you plan to come by car, be aware that the city of Barcelona has specific restrictions to limit traffic, more info [here](https://www.zbe.barcelona/en/zones-baixes-emissions/vehicles-afectats.html).
\ No newline at end of file
diff --git a/collections/_article/godot-web-export-progress-report-4.md b/collections/_article/godot-web-export-progress-report-4.md
new file mode 100644
index 0000000000..02af071456
--- /dev/null
+++ b/collections/_article/godot-web-export-progress-report-4.md
@@ -0,0 +1,83 @@
+---
+title: "Web Editor beta, AudioWorklet, GDNative and more!"
+excerpt: "The Web Editor reaches beta (3.2.4 beta 4), GDNative lands on the web, thread-enabled HTML5 builds now come with an improved audio driver using the AudioWorklet API."
+categories: ["progress-report"]
+author: Fabio Alessandrelli
+image: /storage/app/uploads/public/5fe/1bf/c80/5fe1bfc80c475551734903.png
+date: 2020-12-24 17:00:00
+---
+
+Howdy Godotters! The year is almost over and it's about time we give you some news about the Web Editor and the HTML5 export.
+
+It's been a very fruitful year for Godot on the Web since the announcement of the first [web editor prototype](https://godotengine.org/article/godot-editor-running-web-browser).
+As expected in the rationale of the original post, this has produced a lot of improvements to the HTML5 export in general, including support for threads, file drag and drop, LTO for smaller and faster builds, low-processor mode with optional lower framerate, and better control over audio output latency and mix rate. See the [second](https://godotengine.org/article/godot-web-progress-report-2) and [third](https://godotengine.org/article/godot-web-progress-report-3) reports for more details.
+
+With this new report, as you may know if you checked out the last [Godot Live Q&A](https://www.youtube.com/watch?v=zGmCbnE0UqA), we're happy to announce that we have added optional **GDNative support** in HTML5 exports, that the optional **Thread support** now comes with an improved audio driver using the **AudioWorklet API**, and that the **Web Editor has reached the beta stage**.
+
+Optional GDNative/Threads support
+=================================
+
+If you tried out Godot [3.2.4 beta 4](https://godotengine.org/article/dev-snapshot-godot-3-2-4-beta-4) you might have noticed that the HTML5 export now has a new option called `Export Type`, which allows you to select either the `Regular`, `Threads`, or `GDNative` build.
+Sadly, as of now, it is not possible to have an export that supports both GDNative and Threads. This is a [documentated limitation](https://github.com/emscripten-core/emscripten/wiki/Linking#pthreads-support) of the toolchain used to create the web export, and the WebAssembly specification itself. We are still investigating a workaround for that, but it's going to take some more time.
+
+
+
+Each export type has advantages and disadvantages, so you should choose depending on the scope and target of your game:
+
+- **Regular**: It is the most compatible acrosss browsers but does not support multithreading nor GDNative.
+- **Threads**: Supports multithreading via the [Thread](https://docs.godotengine.org/en/stable/classes/class_thread.html) and [Mutex](https://docs.godotengine.org/en/stable/classes/class_mutex.html) classes and comes with a low latency audio driver that runs off the main thread preventing it from stalling or crackling when framerate drops or when changing scenes. However, it is currently not supported by all browsers (notably, Safari and thus iOS does not support it yet). It also requires some [extra care when distributing](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#Security_requirements).
+- **GDNative**: Supports GDNative libraries, allowing to write your code in other languages (e.g. C++) so you can further optimize your game and speed up execution, or bind external libraries to add extra functionalities to the engine. On the downsides, it will result in a bigger build size, thus increasing the startup time and memory usage.
+
+In general, my suggestion if you are not interested in mobile browser support is to use the *Threads* build to get the best performance with the smallest effort.
+Hopefully, Safari's support for WebAssembly threads will ship next year thanks to the great work people are doing on the WebKit project, and even developers interested in HTML5 exports for mobile will be able to use the threaded version.
+
+Web Editor beta
+===============
+
+A new version of the web editor has been published at [this temporary address](https://godotengine.org/editor/).
+
+This is the first release tagged as "official" and based on the exact same sources of the other [3.2.4 beta 4](https://godotengine.org/article/dev-snapshot-godot-3-2-4-beta-4) builds. The goal is to keep the editor in sync with stable builds (starting from 3.2.4 stable). Old versions will still be available at dedicated locations.
+
+
+
+
+
+The highlights of the new version are:
+
+- A new improved look and feel of the HTML page that looks more integrated with the editor (special thanks to [Calinou](https://github.com/Calinou)).
+- All importing issues should have been fixed. Most notably, audio samples can now be imported correctly, so the demo project now contains audio too.
+- An old bug in the thirdparty Tween functions has been fixed that caused weird behaviors on HTML5 exports (and potentially other platforms too).
+- Few bugs have been fixed in the JavaScript code that interfaces HTML5 exports with the browser (that glue-code has been mostly rewritten).
+
+
+Honorable mentions
+==================
+
+I would like to give a shout-out to the amazing work done by [dsnopek](https://github.com/dsnopek) and [lawnjelly](https://github.com/lawnjelly) on [WebXR](https://github.com/godotengine/godot/pull/42397) and [GLES/WebGL in Godot 4.0](https://twitter.com/lawnjelly/status/1336767514227957761) respectively. You well deserve the Web export medal of honor.
+
+Future work
+===========
+
+We feel like the web editor is almost ready to become stable, and plan to release it as such when 3.2.4 is released, but there are still few things that needs to be improved for web exports before I can refocus my work on some other ideas I've been sketching for networking and server exports:
+
+The HTML5-related **documentation** needs some love to be more in sync with the current status.
+
+**Gamepad** support on HTML5 is in an abysmal state, this is for many reasons. First of all the W3C specification is incomplete and does not allow to easily identify devices in a unique way. Additionally, the sheer amount of work required to support all possible devices is too much for browser vendors.
+In an effort to improve the current situation, we plan to create a small addon that allows to remap the gamepad on the fly that you can bundle in your game, or send your generated mappings to us (so we can bundle them in future Godot versions). While this won't solve all the problems until the specification is improved and browser support gets better, it should allow for many more controller to work out of the box across different platforms.
+
+I've recently proposed a better way than `eval` to **communicate with JavaScript**, and that will need a tentative implementation.
+
+Stay tuned for the next announcement!
+
+References
+==========
+
+[GDNative support](https://github.com/godotengine/godot/pull/44076) [(3.2)](https://github.com/godotengine/godot/pull/44170)
+
+[Threads/AudioWorklet](https://github.com/godotengine/godot/pull/43443) [(3.2)](https://github.com/godotengine/godot/pull/43454)
+
+[Importing issues](https://github.com/godotengine/godot/pull/44161)
+
+[Tween bug](https://github.com/godotengine/godot/pull/44197)
+
+[Editor style](https://github.com/godotengine/godot/pull/44221) [(3.2)](https://github.com/godotengine/godot/pull/44256)
\ No newline at end of file
diff --git a/collections/_article/godot-web-progress-report-2.md b/collections/_article/godot-web-progress-report-2.md
new file mode 100644
index 0000000000..51a1a3d167
--- /dev/null
+++ b/collections/_article/godot-web-progress-report-2.md
@@ -0,0 +1,39 @@
+---
+title: "Godot web export progress report #2"
+excerpt: "Godot is getting better export for the Web. While web technologies are not always suited to provide bleeding edge experiences, we do our best to let you exported game run as smoothly as possible on every platform."
+categories: ["progress-report"]
+author: Fabio Alessandrelli
+image: /storage/app/uploads/public/5f4/8d5/175/5f48d51759192009283012.png
+date: 2020-08-28 12:00:00
+---
+
+Howdy Godotters! It's time for a long overdue update on the status of the HTML5 export and the web version of Godot in general.
+
+Many of the improvements made for the Web editor's [early prototype](/article/godot-editor-running-web-browser) have been merged in the `master` branch and backported to the `3.2` branch. Support for [`SceneTree.quit()`](https://docs.godotengine.org/en/stable/classes/class_scenetree.html#class-scenetree-method-quit) and drag and drop of files via the [`files_dropped`](https://docs.godotengine.org/en/stable/classes/class_scenetree.html#signals) signal are already in the upcoming 3.2.3 release.
+
+The HTML5 export is also getting further improvements in the upcoming point releases:
+
+- Support for low processor usage mode, and FPS limiting (via `Engine.target_fps`). This is especially useful for non-game apps.
+- Better control over the audio buffer size, to allow customizing the trade-off between audio delay and glitches on low-end devices (via the `audio/output_latency` and `audio/mix_rate` options in project settings and their overrides).
+- Better keyboard support (see [GH-39298](https://github.com/godotengine/godot/pull/39298)).
+- Link time optimization (LTO) for exported games (smaller size, shorter load).
+
+Along with these changes, I've been working to bring virtual keyboard support for the HTML5 export on mobile browsers. But this deserves a chapter of its own.
+
+Virtual Keyboards support
+---
+
+Sadly, web technologies do not allow us to directly show virtual keyboards on mobile devices. Like most of the time, when it comes to the web, one must (*sigh*) rely on hacks.
+
+To force the browser to show the keyboard, we need to rely on a hidden `` (or `
+ Ex-Zodiac is a fast-paced rail shooter with a stylized look reminiscent of
+ 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
+
\ No newline at end of file
diff --git a/themes/godotengine/pages/showcase/fist-of-the-forgotten.htm b/collections/_showcase/fist-of-the-forgotten.md
similarity index 53%
rename from themes/godotengine/pages/showcase/fist-of-the-forgotten.htm
rename to collections/_showcase/fist-of-the-forgotten.md
index 9e332d4106..dd9bc3d3b6 100644
--- a/themes/godotengine/pages/showcase/fist-of-the-forgotten.htm
+++ b/collections/_showcase/fist-of-the-forgotten.md
@@ -1,26 +1,31 @@
-title = "Showcase | Fist of the Forgotten"
-url = "/showcase/fist-of-the-forgotten"
-layout = "showcase-item"
-description = "Jump, punch, slide, and swing through the remnants of civilizations, facing powerful bosses to unlock new movement and combat abilities for your giant, mechanical fist as you seek out the remnants of humankind."
-is_hidden = 0
-==
-{##}
-{% put title %} Fist of the Forgotten {% endput %}
-{% put author %} Lone Wulf Studio {% endput %}
-{% put author_url %} https://lonewulfstudio.com/ {% endput %}
-{% put platforms %} windows, linux {% endput %}
+---
+description: "Jump, punch, slide, and swing through the remnants of civilizations, facing powerful bosses to unlock new movement and combat abilities for your giant, mechanical fist as you seek out the remnants of humankind."
+layout: "showcase-item"
+date: 2022-06-01 00:00:00 +0000
-{% put description %}
+title: Fist of the Forgotten
+author: Lone Wulf Studio
+website: https://lonewulfstudio.com/
+release_date: TBD
+
+image: "/assets/showcase/fist-of-the-forgotten.jpg"
+gallery: [
+ "/assets/showcase/fist-of-the-forgotten.jpg"
+]
+youtube_id: "j9sjKfFwfaM"
+
+windows: true
+linux: true
+
+
+steam: https://store.steampowered.com/app/1105470/Fist_of_the_Forgotten/
+
+
+featured_in_home: true
+---
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.
-
-{% endput %}
-
-{% put image %} fist-of-the-forgotten.jpg {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #5b0e73 2%, #412f82 24%, #41247e 86%, #5b0e73 97%) {% endput %}
-{% put youtube_embed_code %} j9sjKfFwfaM {% endput %}
-{% put link_steam %} https://store.steampowered.com/app/1105470/Fist_of_the_Forgotten/ {% endput %}
\ No newline at end of file
+
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/collections/_showcase/gravity-ace.md b/collections/_showcase/gravity-ace.md
new file mode 100644
index 0000000000..e25134065b
--- /dev/null
+++ b/collections/_showcase/gravity-ace.md
@@ -0,0 +1,51 @@
+---
+description: "Gravity Ace showcase page"
+layout: "showcase-item"
+date: 2020-09-01 00:00:00 +0000
+
+title: Gravity Ace
+author: John Watson
+website: https://gravityace.com/
+release_date: October 2020 (Early Access)
+
+image: "/assets/showcase/gravity-ace.png"
+gallery: [
+ "/assets/showcase/gravity-ace.png"
+]
+youtube_id: "wb0r83K3YBk"
+
+windows: true
+linux: true
+
+
+steam: https://store.steampowered.com/app/1003860/Gravity_Ace/
+itch: https://jotson.itch.io/gravity
+
+
+developer_interview:
+ title: "Why the developer chose Godot"
+ context: "— Godot Showcase - Gravity Ace developer talks about his experience"
+ url: "/article/godot-showcase-john-watson-gravity-ace"
+ text: "
+ 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.
+
"
+
+
+featured_in_home: false
+---
+
+
+ Gravity Ace is a 2D multi-directional gravity shooter (cave-flyer). It's a
+ love letter to Thrust and Gravitar and all of the amazing games they inspired.
+ 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.
+
\ No newline at end of file
diff --git a/themes/godotengine/pages/showcase/haiki.htm b/collections/_showcase/haiki.md
similarity index 63%
rename from themes/godotengine/pages/showcase/haiki.htm
rename to collections/_showcase/haiki.md
index 3277ed201a..b0b5a02d8c 100644
--- a/themes/godotengine/pages/showcase/haiki.htm
+++ b/collections/_showcase/haiki.md
@@ -1,17 +1,30 @@
-title = "Showcase | Haiki"
-url = "/showcase/haiki"
-layout = "showcase-item"
-description = "Haiki showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Haiki {% endput %}
-{% put author %} Richard Hörnig {% endput %}
-{% put author_url %} https://twitter.com/haiki_game {% endput %}
-{% put release_date %} June 2021 (Early Access) {% endput %}
-{% put platforms %} windows, macos, linux {% endput %}
+---
+description: "Haiki showcase page"
+layout: "showcase-item"
+date: 2021-05-01 00:00:00 +0000
+
+title: Haiki
+author: Richard Hörnig
+website: https://twitter.com/haiki_game
+release_date: June 2021 (Early Access)
+
+image: "/assets/showcase/haiki.png"
+gallery: [
+ "/assets/showcase/haiki.png"
+]
+youtube_id: "oJG80se4D_I"
+
+windows: true
+macos: true
+linux: true
+
+
+steam: https://store.steampowered.com/app/1395270/Haiki/
+
+
+featured_in_home: false
+---
-{% put description %}
A BRUTAL precision platformer where decapitation is just the beginning!
@@ -50,10 +63,4 @@ is_hidden = 0
A story that makes Shakespeare look like an idiot
Speedrun mode for the truly hardcore
Collectible hats for the truly awesome
-
-{% endput %}
-
-{% put image %} haiki.png {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #2d353f 4%, #749bbf 36%, #24232a 87%, #393139 94%) {% endput %}
-{% put youtube_embed_code %} oJG80se4D_I {% endput %}
-{% put link_steam %} https://store.steampowered.com/app/1395270/Haiki/ {% endput %}
+
\ No newline at end of file
diff --git a/themes/godotengine/pages/showcase/hive-time.htm b/collections/_showcase/hive-time.md
similarity index 52%
rename from themes/godotengine/pages/showcase/hive-time.htm
rename to collections/_showcase/hive-time.md
index 3f7fc88a13..bf3f1f6079 100644
--- a/themes/godotengine/pages/showcase/hive-time.htm
+++ b/collections/_showcase/hive-time.md
@@ -1,36 +1,32 @@
-title = "Showcase | Hive Time"
-url = "/showcase/hive-time"
-layout = "showcase-item"
-description = "Hive Time showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Hive Time {% endput %}
-{% put author %} Cheeseness {% endput %}
-{% put author_url %} https://hivetime.twolofbees.com/ {% endput %}
-{% put release_date %} December 2019 {% endput %}
-{% put platforms %} windows, macos, linux {% endput %}
+---
+description: "Hive Time showcase page"
+layout: "showcase-item"
+date: 2019-12-01 00:00:00 +0000
-{% put description %}
-
- Build a hive, make some honey! Hive Time is a small, bee themed
- management/base building sim. Harvest resources, grow your hive, and produce a
- new Queen before the current one dies. Manage different bee roles in a totally
- scientifically inaccurate depiction of hive dynamics. Send Foragers out to
- 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.
-
-{% endput %}
+title: Hive Time
+author: Cheeseness
+website: https://hivetime.twolofbees.com/
+release_date: December 2019
-{% put image %} hive-time.png {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #2f702e 1%, #849067 34%, #91975a 43%, #909759 47%) {% endput %}
-{% put youtube_embed_code %} w4M6-zkLN6Y {% endput %}
-{% put link_itch %} https://cheeseness.itch.io/hive-time {% endput %}
+image: "/assets/showcase/hive-time.png"
+gallery: [
+ "/assets/showcase/hive-time.png"
+]
+youtube_id: "w4M6-zkLN6Y"
-{% put developer_article_quote %}
-
+windows: true
+macos: true
+linux: true
+
+
+itch: https://cheeseness.itch.io/hive-time
+
+
+developer_interview:
+ title: "Why the developer chose Godot"
+ context: "— Godot Showcase - Hive Time developer Cheeseness talks about his experience"
+ url: "/article/godot-showcase-cheeseness-hive-time"
+ text: "
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
@@ -40,7 +36,19 @@ is_hidden = 0
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.
-
-{% endput %}
-{% put developer_article_title %} Godot Showcase - Hive Time developer Cheeseness talks about his experience {% endput %}
-{% put developer_article_url_slug %} godot-showcase-cheeseness-hive-time {% endput %}
+
"
+
+
+featured_in_home: false
+---
+
+
+ Build a hive, make some honey! Hive Time is a small, bee themed
+ management/base building sim. Harvest resources, grow your hive, and produce a
+ new Queen before the current one dies. Manage different bee roles in a totally
+ scientifically inaccurate depiction of hive dynamics. Send Foragers out to
+ 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.
+
\ No newline at end of file
diff --git a/themes/godotengine/pages/showcase/human-diaspora.htm b/collections/_showcase/human-diaspora.md
similarity index 53%
rename from themes/godotengine/pages/showcase/human-diaspora.htm
rename to collections/_showcase/human-diaspora.md
index 151cfa1ebc..5ac6b31b4a 100644
--- a/themes/godotengine/pages/showcase/human-diaspora.htm
+++ b/collections/_showcase/human-diaspora.md
@@ -1,17 +1,43 @@
-title = "Showcase | Human Diaspora"
-url = "/showcase/human-diaspora"
-layout = "showcase-item"
-description = "Human Diaspora showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Human Diaspora {% endput %}
-{% put author %} Leocesar3D {% endput %}
-{% put author_url %} https://twitter.com/Leocesar3D {% endput %}
-{% put release_date %} September 2020 (Early Access) {% endput %}
-{% put platforms %} windows, linux {% endput %}
+---
+description: "Human Diaspora showcase page"
+layout: "showcase-item"
+date: 2020-09-01 00:00:00 +0000
+
+title: Human Diaspora
+author: Leocesar3D
+website: https://twitter.com/Leocesar3D
+release_date: September 2020 (Early Access)
+
+image: "/assets/showcase/human-diaspora.jpg"
+gallery: [
+ "/assets/showcase/human-diaspora.jpg"
+]
+youtube_id: "NhPjTSAhFYM"
+
+windows: true
+linux: true
+
+
+steam: https://store.steampowered.com/app/1395420/Human_Diaspora/
+
+
+developer_interview:
+ title: "Why the developer chose Godot"
+ context: "— Godot Showcase - Human Diaspora developer interview"
+ url: "/article/godot-showcase-leocesar3d-human-diaspora"
+ text: '
+ 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.
+
'
+
+
+featured_in_home: false
+---
-{% put description %}
An action packed sci-fi First Person Shooter. Fight for humanity, conquer the
colony planet. Use your arsenal to fight enemy infantry and expand your
@@ -25,23 +51,4 @@ is_hidden = 0
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!
-
- 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.
-
-{% endput %}
-{% put developer_article_title %} Godot Showcase - Human Diaspora developer interview {% endput %}
-{% put developer_article_url_slug %} godot-showcase-leocesar3d-human-diaspora {% endput %}
+
\ No newline at end of file
diff --git a/collections/_showcase/kingdoms-of-the-dump.md b/collections/_showcase/kingdoms-of-the-dump.md
new file mode 100644
index 0000000000..cf6461a100
--- /dev/null
+++ b/collections/_showcase/kingdoms-of-the-dump.md
@@ -0,0 +1,39 @@
+---
+description: Kingdoms of the Dump showcase page
+layout: "showcase-item"
+date: 2019-09-01 00:00:00 +0000
+
+title: Kingdoms of the Dump
+author: Roach Games
+website: https://kingdomsofthedump.com/
+release_date: TBD
+
+image: "/assets/showcase/kingdoms-of-the-dump.png"
+gallery: [
+ "/assets/showcase/kingdoms-of-the-dump.png"
+]
+youtube_id: "swcFuuwHKFE"
+
+windows: true
+macos: true
+linux: true
+
+
+steam: https://store.steampowered.com/app/2159270/Kingdoms_of_the_Dump
+
+featured_in_home: false
+---
+
+
+ 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
+
\ No newline at end of file
diff --git a/collections/_showcase/material-maker.md b/collections/_showcase/material-maker.md
new file mode 100644
index 0000000000..9ac5bee053
--- /dev/null
+++ b/collections/_showcase/material-maker.md
@@ -0,0 +1,39 @@
+---
+description: Material Maker showcase page
+layout: "showcase-item"
+date: 2019-10-01 00:00:00 +0000
+
+title: Material Maker
+author: R0dZill4
+website: https://twitter.com/R0dZill4
+release_date: October 2019
+
+image: "/assets/showcase/material-maker.png"
+gallery: [
+ "/assets/showcase/material-maker.png"
+]
+youtube_id: "PY-fCt1j2Ag"
+
+windows: true
+linux: true
+
+
+github: https://github.com/RodZill4/material-maker
+itch: https://rodzilla.itch.io/material-maker
+
+featured_in_home: false
+---
+
+
+ Material Maker is a procedural materials authoring tool, based on the Godot
+ Engine. Materials are defined as graphs where nodes create or transform
+ 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.
+
\ No newline at end of file
diff --git a/themes/godotengine/pages/showcase/pingo-adventure.htm b/collections/_showcase/pingo-adventure.md
similarity index 56%
rename from themes/godotengine/pages/showcase/pingo-adventure.htm
rename to collections/_showcase/pingo-adventure.md
index b68c367a8d..7efaf23b98 100644
--- a/themes/godotengine/pages/showcase/pingo-adventure.htm
+++ b/collections/_showcase/pingo-adventure.md
@@ -1,16 +1,29 @@
-title = "Showcase | Pingo Adventure"
-url = "/showcase/pingo-adventure"
-layout = "showcase-item"
-description = "Pingo Adventure is a cute 3D platformer with interesting physics simulation. Follow Pingo to explore the world, solve puzzles, play mini games and even customize your Pingo with the costumes unlocked from the adventures!"
-is_hidden = 0
-==
-{##}
-{% put title %} Pingo Adventure {% endput %}
-{% put author %} Orb Square Studio {% endput %}
-{% put author_url %} https://orb-square.com {% endput %}
-{% put platforms %} windows, linux {% endput %}
+---
+description: "Pingo Adventure showcase page"
+layout: "showcase-item"
+date: 2022-06-01 00:00:00 +0000
+
+title: Pingo Adventure
+author: Orb Square Studio
+website: https://orb-square.com
+release_date: TBD
+
+image: "/assets/showcase/pingo-adventure.jpg"
+gallery: [
+ "/assets/showcase/pingo-adventure.jpg"
+]
+youtube_id: "H8x_SR623fw"
+
+windows: true
+linux: true
+
+
+steam: https://store.steampowered.com/app/2015830/Pingo_Adventure/
+itch: https://orb-square.itch.io/pingo-adventure
+
+featured_in_home: true
+---
-{% put description %}
Pingo Adventure is a cute 3D platformer in a physics simulated world with jiggly plants, bouncy bridge, springy rope etc.
@@ -31,11 +44,4 @@ is_hidden = 0
Mini Games - Collect replayable mini games from adventures
Camera Mode - Capture the cute moments of your adventures from different angles
Character Customization - Customize your own Pingo with various costumes that you can unlock from the adventures
-
-{% endput %}
-
-{% put link_steam %} https://store.steampowered.com/app/2015830/Pingo_Adventure/ {% endput %}
-{% put image %} pingo-adventure.jpg {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #b5c1d8 2%, #a8b5d5 9%, #707473 47%, #666a6a 57%) {% endput %}
-{% put youtube_embed_code %} H8x_SR623fw {% endput %}
-{% put link_itch %} https://orb-square.itch.io/pingo-adventure {% endput %}
+
\ No newline at end of file
diff --git a/themes/godotengine/pages/showcase/pixelorama.htm b/collections/_showcase/pixelorama.md
similarity index 65%
rename from themes/godotengine/pages/showcase/pixelorama.htm
rename to collections/_showcase/pixelorama.md
index 0c519e1272..7ff8794dfd 100644
--- a/themes/godotengine/pages/showcase/pixelorama.htm
+++ b/collections/_showcase/pixelorama.md
@@ -1,17 +1,31 @@
-title = "Showcase | Pixelorama"
-url = "/showcase/pixelorama"
-layout = "showcase-item"
-description = "Pixelorama showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Pixelorama {% endput %}
-{% put author %} Orama Interactive {% endput %}
-{% put author_url %} https://twitter.com/OramaInteractiv {% endput %}
-{% put release_date %} August 2019 {% endput %}
-{% put platforms %} windows, macos, linux, html5 {% endput %}
+---
+description: "Pixelorama showcase page"
+layout: "showcase-item"
+date: 2019-08-01 00:00:00 +0000
+
+title: Pixelorama
+author: Orama Interactive
+website: https://twitter.com/OramaInteractiv
+release_date: August 2019
+
+image: "/assets/showcase/pixelorama.png"
+gallery: [
+ "/assets/showcase/pixelorama.png"
+]
+youtube_id: "sM1v5uaBSrM"
+
+windows: true
+linux: true
+macos: true
+html5: true
+
+
+itch: https://orama-interactive.itch.io/pixelorama/
+github: https://github.com/Orama-Interactive/Pixelorama
+
+featured_in_home: false
+---
-{% put description %}
Pixelorama is a free & open source pixel art sprite editor, with animation
support. It is made entirely with the Godot Engine. Current features as of
@@ -33,11 +47,4 @@ is_hidden = 0
Rulers and guides.
Rectangular & isometric grid types.
Scale, crop, rotate, flip, color invert, HSV-adjust, desaturate and generate outlines and gradients in your images.
-
-{% endput %}
-
-{% put image %} pixelorama.png {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #1b1c1c 10%, #776b7e 31%, #98797c 55%, #1b1c1c 77%) {% endput %}
-{% put youtube_embed_code %} sM1v5uaBSrM {% endput %}
-{% put link_itch %} https://orama-interactive.itch.io/pixelorama/ {% endput %}
-{% put link_github %} https://github.com/Orama-Interactive/Pixelorama {% endput %}
+
\ No newline at end of file
diff --git a/themes/godotengine/pages/showcase/precipice.htm b/collections/_showcase/precipice.md
similarity index 62%
rename from themes/godotengine/pages/showcase/precipice.htm
rename to collections/_showcase/precipice.md
index 17c460d30d..f13687a7f4 100644
--- a/themes/godotengine/pages/showcase/precipice.htm
+++ b/collections/_showcase/precipice.md
@@ -1,17 +1,29 @@
-title = "Showcase | Precipice"
-url = "/showcase/precipice"
-layout = "showcase-item"
-description = "Precipice showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Precipice {% endput %}
-{% put author %} Little Red Dog Games {% endput %}
-{% put author_url %} https://www.littlereddoggames.com/ {% endput %}
-{% put release_date %} May 2019 {% endput %}
-{% put platforms %} windows, linux {% endput %}
+---
+description: "Precipice showcase page"
+layout: "showcase-item"
+date: 2019-05-01 00:00:00 +0000
+
+title: Precipice
+author: Little Red Dog Games
+website: https://www.littlereddoggames.com/
+release_date: May 2019
+
+image: "/assets/showcase/precipice.png"
+gallery: [
+ "/assets/showcase/precipice.png"
+]
+youtube_id: "Ri0Pc5xvJkM"
+
+windows: true
+linux: true
+
+
+steam: https://store.steampowered.com/app/951670/Precipice/
+
+
+featured_in_home: false
+---
-{% put description %}
Take control of the United States or Soviet Union and provide technical and
@@ -44,10 +56,4 @@ is_hidden = 0
possibilities are endless with simple, intuitive gameplay that is
simultaneously difficult to master.
+ 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.
+
"
+
+
+featured_in_home: true
+---
-{% put description %}
Primal Light is a linear 2D action platformer for Windows, Mac, Linux, and Nintendo Switch.
Inhabit Krog, a mysterious blue creature in a red loincloth, as he traverses a
@@ -26,25 +59,4 @@ is_hidden = 0
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.
- 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.
-
-{% endput %}
-{% put developer_article_title %} Godot Showcase - Primal Light developer interview {% endput %}
-{% put developer_article_url_slug %} godot-showcase-fat-gem-primal-light {% endput %}
+
\ No newline at end of file
diff --git a/themes/godotengine/pages/showcase/resolutiion.htm b/collections/_showcase/resolutiion.md
similarity index 57%
rename from themes/godotengine/pages/showcase/resolutiion.htm
rename to collections/_showcase/resolutiion.md
index 8c5ccf3ede..abda75cb16 100644
--- a/themes/godotengine/pages/showcase/resolutiion.htm
+++ b/collections/_showcase/resolutiion.md
@@ -1,17 +1,45 @@
-title = "Showcase | Resolutiion"
-url = "/showcase/resolutiion"
-layout = "showcase-item"
-description = "Resolutiion showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Resolutiion {% endput %}
-{% put author %} Monolith of Minds {% endput %}
-{% put author_url %} https://resolutiion.monolithofminds.com/ {% endput %}
-{% put release_date %} May 2020 {% endput %}
-{% put platforms %} windows, macos, linux, switch {% endput %}
+---
+description: "Resolutiion showcase page"
+layout: "showcase-item"
+date: 2021-06-01 00:00:00 +0000
+
+title: Resolutiion
+author: Monolith of Minds
+website: https://resolutiion.monolithofminds.com/
+release_date: May 2020
+
+image: "/assets/showcase/resolutiion-1.jpg"
+gallery: [
+ "/assets/showcase/resolutiion-1.jpg",
+ "/assets/showcase/resolutiion-2.png"
+]
+youtube_id: "7J9JR6iFzho"
+
+windows: true
+macos: true
+linux: true
+switch: true
+
+steam: https://store.steampowered.com/app/975150/Resolutiion/
+gog: https://www.gog.com/game/resolutiion/
+nintendo: https://www.nintendo.com/games/detail/resolutiion-switch/
+
+
+developer_interview:
+ title: "Why the developer chose Godot"
+ context: "— Godot Showcase - Resolutiion developer Monolith of Minds talks about their experience"
+ url: "/article/godot-showcase-monolith-of-minds-resolutiion"
+ text: "
+ Developing with Godot is very easy. The core functionality can be picked up
+ quickly and the engine is powerful enough to accomplish everything we were
+ looking for in our game. Also the community is awesome and creates plenty of
+ valuable tutorials and guides.
+
"
+
+
+featured_in_home: true
+---
-{% put description %}
An old killer escorts a curious AI through chaotic combat, puzzling secrets,
and unsettling calm in a dreamscape of madmen and sane animals.
@@ -43,23 +71,4 @@ is_hidden = 0
Here kitty-kitty…
-
-{% endput %}
-
-{% put image %} resolutiion.png {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #5b0e73 2%, #412f82 24%, #41247e 86%, #5b0e73 97%) {% endput %}
-{% put youtube_embed_code %} 7J9JR6iFzho {% endput %}
-{% put link_steam %} https://store.steampowered.com/app/975150/Resolutiion/ {% endput %}
-{% put link_gog %} https://www.gog.com/game/resolutiion/ {% endput %}
-{% put link_switch %} https://www.nintendo.com/games/detail/resolutiion-switch/ {% endput %}
-
-{% put developer_article_quote %}
-
- Developing with Godot is very easy. The core functionality can be picked up
- quickly and the engine is powerful enough to accomplish everything we were
- looking for in our game. Also the community is awesome and creates plenty of
- valuable tutorials and guides.
-
-{% endput %}
-{% put developer_article_title %} Godot Showcase - Resolutiion developer Monolith of Minds talks about their experience {% endput %}
-{% put developer_article_url_slug %} godot-showcase-monolith-of-minds-resolutiion {% endput %}
+
\ No newline at end of file
diff --git a/themes/godotengine/pages/showcase/rogue-state-revolution.htm b/collections/_showcase/rogue-state-revolution.md
similarity index 53%
rename from themes/godotengine/pages/showcase/rogue-state-revolution.htm
rename to collections/_showcase/rogue-state-revolution.md
index ae2dac2f6f..b81a70340d 100644
--- a/themes/godotengine/pages/showcase/rogue-state-revolution.htm
+++ b/collections/_showcase/rogue-state-revolution.md
@@ -1,17 +1,41 @@
-title = "Showcase | Rogue State Revolution"
-url = "/showcase/rogue-state-revolution"
-layout = "showcase-item"
-description = "Rogue State Revolution showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Rogue State Revolution {% endput %}
-{% put author %} Little Red Dog Games {% endput %}
-{% put author_url %} https://www.littlereddoggames.com/ {% endput %}
-{% put release_date %} February 2021 {% endput %}
-{% put platforms %} windows, linux {% endput %}
+---
+layout: "showcase-item"
+description: "Rogue State Revolution showcase page"
+date: 2021-06-01 00:00:00 +0000
+
+title: "Rogue State Revolution"
+author: "Little Red Dog Games"
+website: https://www.littlereddoggames.com/
+release_date: "February 2021"
+
+image: "/assets/showcase/rogue-state-revolution.jpg"
+gallery: [
+ "/assets/showcase/rogue-state-revolution.jpg"
+]
+youtube_id: "Vfz66iLuwzQ"
+
+windows: true
+linux: true
+
+steam: https://store.steampowered.com/app/1145340/Rogue_State_Revolution/
+
+
+developer_interview:
+ title: "Why the developer chose Godot"
+ context: "— Godot Showcase - Little Red Dog Games talk about their experience "
+ url: "/article/godot-showcase-little-red-dog-games"
+ text: "
+ 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.
+
"
+
+
+featured_in_home: false
+---
-{% put description %}
Assume control over Basenji, a recently democratized Middle Eastern republic.
@@ -30,22 +54,4 @@ is_hidden = 0
Steer the country in any manner you choose. Hundreds of events and an insane
number of policies make every experience unique to the player.
- 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.
-
-{% endput %}
-{% put developer_article_title %} Godot Showcase - Little Red Dog Games talk about their experience {% endput %}
-{% put developer_article_url_slug %} godot-showcase-little-red-dog-games {% endput %}
+
\ No newline at end of file
diff --git a/themes/godotengine/pages/showcase/rpg-in-a-box.htm b/collections/_showcase/rpg-in-a-box.md
similarity index 60%
rename from themes/godotengine/pages/showcase/rpg-in-a-box.htm
rename to collections/_showcase/rpg-in-a-box.md
index 91d810b4d4..543557c434 100644
--- a/themes/godotengine/pages/showcase/rpg-in-a-box.htm
+++ b/collections/_showcase/rpg-in-a-box.md
@@ -1,17 +1,45 @@
-title = "Showcase | RPG in a Box"
-url = "/showcase/rpg-in-a-box"
-layout = "showcase-item"
-description = "RPG in a Box showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} RPG in a Box {% endput %}
-{% put author %} Justin Arnold {% endput %}
-{% put author_url %} https://www.rpginabox.com/ {% endput %}
-{% put release_date %} May 2022 {% endput %}
-{% put platforms %} windows, macos, linux {% endput %}
+---
+layout: "showcase-item"
+description: "RPG in a Box showcase page"
+date: 2021-06-01 00:00:00 +0000
+
+title: "RPG in a Box"
+author: "Justin Arnold"
+website: https://www.rpginabox.com/
+release_date: "May 2022"
+
+image: "/assets/showcase/rpg-in-a-box.png"
+gallery: [
+ "/assets/showcase/rpg-in-a-box.png"
+]
+youtube_id: "Ea8OfjVqNz0"
+
+windows: true
+macos: true
+linux: true
+
+steam: https://store.steampowered.com/app/498310
+itch: https://zeromatrix.itch.io/rpginabox
+humble: https://www.humblebundle.com/store/rpg-in-a-box
+
+
+developer_interview:
+ title: "Why the developer chose Godot"
+ context: "— Godot Showcase - RPG in a Box developer talks about his experience "
+ url: "/article/godot-showcase-justin-arnold-rpg-in-a-box"
+ text: "
+ 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.
+
"
+
+
+featured_in_home: false
+---
-{% put description %}
RPG in a Box lets you easily create 3D grid-based, voxel-style RPGs and
adventure games! As its name suggests, it will contain every tool necessary
@@ -42,25 +70,4 @@ is_hidden = 0
Basic dialogue and item systems, multiple camera options, UI customization,
sound effect generator, and much more!
-
-{% endput %}
-
-{% put image %} rpg-in-a-box.png {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #2d343c 1%, #2d343c 10%, #174d3a 24%, #161e23 80%) {% endput %}
-{% put youtube_embed_code %} Ea8OfjVqNz0 {% endput %}
-{% put link_steam %} https://store.steampowered.com/app/498310 {% endput %}
-{% put link_itch %} https://zeromatrix.itch.io/rpginabox {% endput %}
-{% put link_humble %} https://www.humblebundle.com/store/rpg-in-a-box {% endput %}
-
-{% put developer_article_quote %}
-
- 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.
-
-{% endput %}
-{% put developer_article_title %} Godot Showcase - RPG in a Box developer talks about his experience {% endput %}
-{% put developer_article_url_slug %} godot-showcase-justin-arnold-rpg-in-a-box {% endput %}
+
\ No newline at end of file
diff --git a/collections/_showcase/tail-quest.md b/collections/_showcase/tail-quest.md
new file mode 100644
index 0000000000..54e19ea1bf
--- /dev/null
+++ b/collections/_showcase/tail-quest.md
@@ -0,0 +1,38 @@
+---
+description: "TailQuest: Defense showcase page"
+layout: "showcase-item"
+date: 2021-06-01 00:00:00 +0000
+
+title: "TailQuest: Defense"
+author: Kivano Games
+website: https://kivano.games/
+release_date: TBD
+
+image: "/assets/showcase/tail-quest.jpg"
+gallery: [
+ "/assets/showcase/tail-quest.jpg"
+]
+youtube_id: "4es8MqVO9SU"
+
+windows: true
+linux: true
+
+steam: https://store.steampowered.com/app/824090/TailQuest_Defense/
+
+featured_in_home: true
+---
+
+
+TailQuest Defense is an action packed tower defense game in which you play as Nell who tries to defend his world from the invasion of Nands - robots which are kidnapping fluffy inhabitants of the Riventail - a divided world floating in the sky.
+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/collections/_showcase/the-garden-path.md b/collections/_showcase/the-garden-path.md
new file mode 100644
index 0000000000..777d0151dd
--- /dev/null
+++ b/collections/_showcase/the-garden-path.md
@@ -0,0 +1,52 @@
+---
+layout: "showcase-item"
+description: "The Garden Path showcase page"
+date: 2021-06-01 00:00:00 +0000
+
+title: "The Garden Path"
+author: "carrotcake.studio"
+image: "/assets/showcase/the-garden-path.jpg"
+gallery: [
+ "/assets/showcase/the-garden-path.jpg"
+]
+website: https://carrotcakestudio.itch.io/
+release_date: "TBD"
+youtube_id: "E9SnpPXg8hw"
+
+windows: true
+macos: true
+linux: true
+
+steam: "https://store.steampowered.com/app/1638500/The_Garden_Path/"
+itch: "https://carrotcakestudio.itch.io/thegardenpath"
+
+
+developer_interview:
+ title: "Why the developer chose Godot"
+ context: "— Godot Showcase - The Garden Path developer talks about his experience"
+ url: "/article/godot-showcase-garden-path-developer-talks-about-his-experience"
+ text: "
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.
To report an issue with the website, please open an issue on GitHub.
+
+
\ No newline at end of file
diff --git a/pages/blog/blog.html b/pages/blog/blog.html
new file mode 100644
index 0000000000..54c8cbdf17
--- /dev/null
+++ b/pages/blog/blog.html
@@ -0,0 +1,14 @@
+---
+permalink: /blog
+title: Godot Engine - Blog
+layout: blog
+category: all
+pagination:
+ enabled: true
+ collection: article
+redirect_from:
+ - /devblog/index.html
+ - /news/index.html
+ - /news/default/1/index.html
+ - /news/default/2/index.html
+---
\ No newline at end of file
diff --git a/pages/blog/categories/events.html b/pages/blog/categories/events.html
new file mode 100644
index 0000000000..b025460022
--- /dev/null
+++ b/pages/blog/categories/events.html
@@ -0,0 +1,10 @@
+---
+permalink: /blog/events
+layout: blog
+category: events
+pagination:
+ enabled: true
+ collection: article
+ category: events
+ permalink: '/:num/'
+---
\ No newline at end of file
diff --git a/pages/blog/categories/news.html b/pages/blog/categories/news.html
new file mode 100644
index 0000000000..ce34062381
--- /dev/null
+++ b/pages/blog/categories/news.html
@@ -0,0 +1,11 @@
+---
+permalink: /blog/news
+title: Blog - News
+layout: blog
+category: news
+pagination:
+ enabled: true
+ collection: article
+ category: news
+ permalink: '/:num/'
+---
\ No newline at end of file
diff --git a/pages/blog/categories/pre-release.html b/pages/blog/categories/pre-release.html
new file mode 100644
index 0000000000..eeca3d9993
--- /dev/null
+++ b/pages/blog/categories/pre-release.html
@@ -0,0 +1,11 @@
+---
+permalink: /blog/pre-release
+title: Blog - Pre-release
+layout: blog
+category: pre-release
+pagination:
+ enabled: true
+ collection: article
+ category: pre-release
+ permalink: '/:num/'
+---
\ No newline at end of file
diff --git a/pages/blog/categories/progress-report.html b/pages/blog/categories/progress-report.html
new file mode 100644
index 0000000000..63aab6eac1
--- /dev/null
+++ b/pages/blog/categories/progress-report.html
@@ -0,0 +1,11 @@
+---
+permalink: /blog/progress-report
+title: Blog - Progress Report
+layout: blog
+category: progress-report
+pagination:
+ enabled: true
+ collection: article
+ category: progress-report
+ permalink: '/:num/'
+---
\ No newline at end of file
diff --git a/pages/blog/categories/release.html b/pages/blog/categories/release.html
new file mode 100644
index 0000000000..a0cd8b066c
--- /dev/null
+++ b/pages/blog/categories/release.html
@@ -0,0 +1,11 @@
+---
+permalink: /blog/release
+title: Blog - Release
+layout: blog
+category: release
+pagination:
+ enabled: true
+ collection: article
+ category: release
+ permalink: '/:num/'
+---
\ No newline at end of file
diff --git a/pages/blog/categories/showcase.html b/pages/blog/categories/showcase.html
new file mode 100644
index 0000000000..bf8c7c0024
--- /dev/null
+++ b/pages/blog/categories/showcase.html
@@ -0,0 +1,11 @@
+---
+permalink: /blog/showcase
+title: Blog - Showcase
+layout: blog
+category: showcase
+pagination:
+ enabled: true
+ collection: article
+ category: showcase
+ permalink: '/:num/'
+---
\ No newline at end of file
diff --git a/pages/code-of-conduct.html b/pages/code-of-conduct.html
new file mode 100644
index 0000000000..7f75965718
--- /dev/null
+++ b/pages/code-of-conduct.html
@@ -0,0 +1,146 @@
+---
+permalink: /code-of-conduct/index.html
+title: "Godot Engine - Code of Conduct"
+description: "Godot community's Code of Conduct."
+layout: more
+header_text: "Code of Conduct"
+current_tab: "code-of-conduct"
+---
+
+
+
+ The Godot project is an international community open to everyone without discrimination. We want this community to
+ be a safe and welcoming place for both newcomers and current members. Everyone should feel comfortable and accepted
+ regardless of their personal background and affiliation to the Godot project.
+
+
+
Philosophy
+
+
+ In the Godot community, participants from all over the world come together to create a Free and Open Source game
+ engine. This is made possible by the support, hard work, and enthusiasm of thousands of people who collaborate
+ towards the common goal of creating great technology and games. Cooperation at such a scale requires common
+ guidelines to ensure a positive and inspiring atmosphere in the community.
+
+
+
+ This is why we have this Code of Conduct: it explains the type of community we want to have. The rules below are not
+ applied to all interactions with a simple matching algorithm. Human interactions happen in context and are complex.
+ Perceived violations are evaluated by real humans who will try to interpret the interactions and the rules with
+ kindness. Accordingly, there is no need to hypothesize on how these rules would affect normal interactions. Be
+ reasonable, the Code of Conduct team surely will be as well.
+
+
+
Application
+
+
+ This Code of Conduct applies to all users and contributors who engage with the Godot project and its community
+ platforms, both online and at Godot-related events.
+
+
+
Expectations
+
+
+
Politeness is expected at all times. Be kind and courteous.
+
Always assume positive intent from others. Be aware that differences in culture and English proficiency make
+ written communication more difficult than face-to-face communication and that your interpretation of messages may
+ not be the one the author intended. Conversely, if someone asks you to rephrase something you said, be ready to do
+ so without feeling judged.
+
Feedback is always welcome but keep your criticism constructive. We encourage you to open discussions,
+ proposals, issues, and bug reports. Use the community platforms to discuss improvements, not to vent out
+ frustration. Similarly, when other users offer you feedback please accept it gracefully.
+
+
+
Restricted conduct
+
+
+ Participating in restricted conduct will lead to a warning from community moderators and/or the Code of Conduct team
+ and may lead to exclusion from the community in the form of a ban from one or all platforms.
+
+
+
+
The Godot project is committed to providing a friendly and safe environment for everyone, regardless of level of
+ experience, gender identity and expression, sexual orientation, disability, physical appearance, body size, race,
+ ethnicity, language proficiency, age, political orientation, nationality, religion, or other similar
+ characteristics. We do not tolerate harassment or discrimination of participants in any form.
+
In particular, we strive to be welcoming to all industry minorities and to ensure that they can take a more
+ active role in the community and the project. Targeted harassment of minorities is unacceptable.
+
As a community developed project, we strive for consensus among contributors before moving forward with a
+ proposed feature. If there is not enough support for your ideas, please don't continue insisting or trying to
+ force others into supporting your point. Features are not accepted through a voting process, so piling onto a
+ contentious feature proposal is not acceptable.
+
Aggressive or offensive behavior is not acceptable.
+
You will be excluded from participating in the community if you insult, demean, harass, intentionally make
+ others uncomfortable by any means, or participate in any other hateful conduct, either publicly or privately.
+
Likewise, any spamming, trolling, flaming, baiting, or other attention-stealing behavior is not welcome and will
+ result in exclusion from the community.
+
Any form of retaliation against a participant who contacts the Code of Conduct team is completely unacceptable,
+ regardless of the outcome of the complaint. Any such behavior will result in exclusion from the community.
+
For certainty, any conduct which could reasonably be considered inappropriate in a professional setting is not
+ 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)
+
+
+{% include footer.html %}
\ No newline at end of file
diff --git a/pages/community/user-groups.html b/pages/community/user-groups.html
new file mode 100644
index 0000000000..b0ff24888b
--- /dev/null
+++ b/pages/community/user-groups.html
@@ -0,0 +1,198 @@
+---
+permalink: /community/user-groups/index.html
+title: "User Groups"
+description: "Find local Godot user groups run by community members."
+layout: default
+---
+
+{% include header.html %}
+
+
+
+
+
+
User Groups
+
+ Some community members manage local Godot user groups.
+ Anyone is welcome to join or create a local community!
+
+
+
+
+
+
+
+
+
+
+
Community map
+
+ This map lists all physical venues and online community hosted by community members.
+ Scroll down to view a list of online communities.
+
+
+
+
+
+ Physical community
+
+ Online community
+
+
+
+ {% for country in site.data.communities %}
+
{{ country[0] }}
+
+ {% for community in country[1] %}
+
+ {{community.name }}
+ ({% for link in community.links %}{{ link.title }}{% unless
+ forloop.last %}, {% endunless %}{% endfor %})
+
+ {% endfor%}
+
+ {% endfor %}
+
+
+
+ If you run a local community and would like to have it listed here,
+ please send an email to webmaster at godotengine · org.
+
+
+
+{% include footer.html %}
\ No newline at end of file
diff --git a/pages/contact.html b/pages/contact.html
new file mode 100644
index 0000000000..31df2de75d
--- /dev/null
+++ b/pages/contact.html
@@ -0,0 +1,317 @@
+---
+permalink: /contact/index.html
+title: "Godot Engine - Contact"
+description: "Contact information for Godot's development team."
+layout: more
+header_text: "Contact us"
+current_tab: "contact"
+redirect_from:
+ - /more/index.html
+---
+
+
+
+
Support
+
+ If you have a problem learning Godot or need help, please first
+ use the various community channels.
+ Godot developers are busy working in making Godot better, so they can't
+ always answer questions. They will, however, be glad to assist you if
+ you can't get an answer from conventional means.
+
+
+
Commercial support
+
+ While we don't have a formal structure for offering commercial
+ support, many Godot developers can already help you, work per hour, or
+ relocate to your company. For such inquiries, contact
+ support@godotengine.org. Let us know about your needs and we'll try
+ to find the right person for you.
+
+
+
Reporting security vulnerabilities
+
+ If you've found a security vulnerability in Godot, please do not create an
+ issue on the GitHub issue tracker as issues are visible publicly.
+
+ If you would like your Godot Q&A
+ or Asset Library account
+ to be removed
+ along with all its associated data, follow the instructions in the
+ privacy policy.
+
+
+ Note that Godot Forums accounts are
+ managed by a third party. Therefore, account removal requests for the Godot Forums
+ must be directed to its administrators, not to us:
+ Godot Forums Contact
+
+
+
General inquiries
+
+ For other inquiries such as business, education, non-profit, promotion, etc.
+ Contact contact@godotengine.org.
+
+
+
+
+
Project Leadership Committee (PLC)
+
+ Information about the Project Leadership Committee was moved to the
+ Governance page.
+
+
+
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:
+
+
Juan Linietsky (reduz)
+
+
+
Project Manager:
+
+
Rémi Verschelde (akien-mga)
+
+
+
Developers:
+
+
Aaron Franke (aaronfranke)
+
Aaron Record (LightningAA)
+
Alexander Holland (AlexHolly)
+
Alexey Khoroshavin (allkhor)
+
Alket Rexhepi (alketii)
+
Andrea Catania (AndreaCatania)
+
Andrii Doroshenko (Xrayez)
+
Andy Moss (MillionOstrich)
+
Angad Kambli (angad-k)
+
Anilforextra (AnilBK)
+
Anish Bhobe (KidRigger)
+
Anton Yabchinskiy (a12n)
+
Anutrix
+
Aren Villanueva (kurikaesu)
+
Ariel Manzur (punto-)
+
Bartłomiej T. Listwon (Listwon)
+
Bastiaan Olij (BastiaanOlij)
+
Ben Brookshire (sheepandshepherd)
+
Benjamin Larsson (Nallebeorn)
+
Bernhard Liebl (poke1024)
+
Bhuvan Vemula (Bhu1-V)
+
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)
+
Chris Bradfield (cbscribe)
+
Clay John (clayjohn)
+
ConteZero
+
Dana Olson (adolson)
+
Daniel J. Ramirez (djrm)
+
Daniel Rakos (aqnuep)
+
Danil Alexeev (dalexeev)
+
dankan1890
+
David Cambré (Gallilus)
+
David Sichma (DavidSichma)
+
David Snopek (dsnopek)
+
Dharkael (lupoDharkael)
+
Dmitry Koteroff (Krakean)
+
Dominik Jasiński (dreamsComeTrue)
+
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)
+
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)
+
Hanif Bin Ariffin (hbina)
+
Haoyu Qiu (timothyqiu)
+
Hein-Pieter van Braam-Stewart (hpvb)
+
Hendrik Brucker (Geometror)
+
hilfazer
+
Hiroshi Ogawa (hi-ogawa)
+
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)
+
James Buck (jbuck3)
+
Jean-Michel Bernard (jmb462)
+
Jérôme Gully (Nutriz)
+
Jia Jun Chai (SkyLucilfer)
+
Joan Fons Sanchez (JFonS)
+
Johan Manuel (29jm)
+
Johannes Witt (HaSa1002)
+
Jordan Schidlowsky (winterpixelgames)
+
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)
+
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)
+
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)
+
Matthew (skyace65)
+
Matthias Hölzl (hoelzl)
+
Max Hilbrunner (mhilbrunner)
+
merumelu
+
Meru Patel (Janglee123)
+
Michael Alexsander (YeldhamDev)
+
Michał Iwańczuk (iwek7)
+
MichiRecRoom (LikeLakers2)
+
Morris "Tabor" Arroad (mortarroad)
+
mrezai
+
Muhammad Huri (CakHuri)
+
muiroc
+
Nathan Franke (nathanfranke)
+
Nathan Lovato (NathanLovato)
+
Nathan Warden (NathanWarden)
+
Nicholas Huelin (SirQuartz)
+
Nils André-Chang (NilsIrl)
+
Noah Beard (TwistedTwigleg)
+
Nuno Donato (nunodonato)
+
Omar El Sheikh (The-O-King)
+
Ovnuniarchos
+
Pascal Richter (ShyRed)
+
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)
+
Rafał Mikrut (qarmin)
+
Ralf Hölzemer (rollenrolm)
+
Ramesh Ravone (RameshRavone)
+
Raphael2048
+
Raul Santos (raulsntos)
+
Ray Koopa (RayKoopa)
+
Rémi Verschelde (akien-mga)
+
Rhody Lugo (rraallvv)
+
Ricardo Buring (rburing)
+
Ricardo Subtil (Ev1lbl0w)
+
Roberto F. Arroyo (robfram)
+
Robin Hübner (profan)
+
romulox-x
+
Ruslan Mustakov (endragor)
+
Ryan Roden-Corrent (rrcore)
+
Saniko (sanikoyes)
+
santouits
+
SaracenOne
+
Sergey Minakov (naithar)
+
sersoong
+
Shiqing (kawa-yoiko)
+
Silc 'Tokage' Renew (TokageItLab)
+
Simon Wenner (swenner)
+
smix8
+
Stijn Hinlopen (hinlopen)
+
Swarnim Arun (minraws)
+
TC (floppyhammer)
+
Thakee Nathees (ThakeeNathees)
+
thebestnom
+
Theo Hallenius (TheoXD)
+
Timo Schwarzer (timoschwarzer)
+
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)
+
yg2f (SuperUserNameMan)
+
Yuri Rubinsky (Chaosus)
+
Yuri Sizov (YuriSizov)
+
Zae Chao (zaevi)
+
Zak Stam (zaksnet)
+
Zher Huei Lee (leezh)
+
ZuBsPaCe
+
风青山 (Rindbee)
+
+
+
\ No newline at end of file
diff --git a/pages/donate.html b/pages/donate.html
new file mode 100644
index 0000000000..ef1438c546
--- /dev/null
+++ b/pages/donate.html
@@ -0,0 +1,76 @@
+---
+permalink: /donate/index.html
+layout: default
+---
+
+{% include header.html %}
+
+
+
+
+
Donate
+
+ Godot Engine is a not-for-profit, community-driven free and open source project.
+ It is legally represented by the Software Freedom Conservancy,
+ a USA-based charity that helps promote, improve, develop, and defend FLOSS projects.
+
+
+
+
+
+
+
User and company donations
+
+ The project is sustained by the free time of its contributors and donations from the community.
+ All our donations are processed by the Software Freedom Conservancy.
+
+
+
We use donations for:
+
+
Hiring developers so that they can work part-time or full-time on Godot Engine, making the project progress
+ faster.
+
Hiring artists to create high quality demo artwork under a permissive license.
+
Purchasing hardware required to develop Godot.
+
Paying for hosting of some web services.
+
Covering travel costs to some important industry events (e.g. GDC, Gamescom).
+
Producing merchandise for events (T-shirts, banners, stickers, etc.).
+
+
+
+ You can donate monthly via Patreon,
+ or directly via PayPal.
+
+
+
Patreon
+
+
+ Patreon is a platform for creators to crowdfund their work via monthly donations. Godot Engine launched a Patreon page with the aim to collect enough money each month to
+ hire
+ some of its developers part-time or full-time, starting with its lead developer Juan Linietsky
+
+
+
+
+
+ The Patreon donations are processed by Conservancy, which then uses them to hire developers based on contracts made
+ transparent to all supporters.
+
+
+
PayPal direct donation
+
Donations can be made to our PayPal account managed by Conservancy:
+
+
+ (If you cannot see the PayPal button, disable your ad blocker temporarily.)
+
+
+
+{% include footer.html %}
\ No newline at end of file
diff --git a/pages/download.html b/pages/download.html
new file mode 100644
index 0000000000..126723b712
--- /dev/null
+++ b/pages/download.html
@@ -0,0 +1,19 @@
+---
+permalink: /download/index.html
+---
+
+
+
+ Redirecting...
+
+
+
+
\ No newline at end of file
diff --git a/pages/education.html b/pages/education.html
new file mode 100644
index 0000000000..cdd2121d4e
--- /dev/null
+++ b/pages/education.html
@@ -0,0 +1,99 @@
+---
+permalink: /education/index.html
+layout: default
+---
+
+{% include header.html %}
+
+
+
+
+
+
+
Education
+
+ Godot is already being used in many classrooms across the world. If you are interested in including it in your
+ curriculum, you can find answers to some of the most common questions on this page.
+
+
+
+
+
+
+
+
Can I teach Godot in my classroom?
+
Godot Engine is free and open source
+ software released under the permissive MIT license.
+ You can use Godot in your classroom without any restrictions and with zero licensing
+ costs.
+
Will the Godot project sign a services agreement provided by my institution?
+
The Godot Engine project is unable to accept any terms and conditions outside of the MIT license, nor will it
+ provide warranties or representations about the Godot Engine outside those of the MIT
+ license.
+
As a free and open source project, Godot is not backed by a corporation or any individual. Accordingly, it
+ doesn't
+ have the legal capacity to enter into agreements, even if such agreements did not conflict with the MIT license.
+
+
+
+
+
What data does the Godot Engine collect from users?
+
When you use the Asset Library in the Godot Engine application, HTTPS requests are made to the Asset Library
+ website, and will contain: Godot Engine version, search query, selected assets, and the user's IP address. The
+ Asset
+ Library
+ processes this data without storing it, but our TuxFamily hosting's HTTP server may log these requests. Such logs
+ are subject to TuxFamily's privacy policy.
+ This is the only personal data collected by the Godot Engine application.
+
To be clear, the Godot Engine executable does not ask for or otherwise collect personally identifying information
+ from
+ its users. The network requests include the bare minimum amount of information required to do an online search and
+ transmit substantially less information than most internet browsing will.
I don't have permission to install software on my devices. How can I use Godot?
+
You can use the Godot Engine on the browser without the need to install it on your device. This is useful if
+ you
+ are restricted by your organization or limited by the device being used and you can't install software locally
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.
+
+
+
+{% include footer.html %}
\ No newline at end of file
diff --git a/pages/events.html b/pages/events.html
new file mode 100644
index 0000000000..b528d2ddc4
--- /dev/null
+++ b/pages/events.html
@@ -0,0 +1,844 @@
+---
+permalink: /events/index.html
+layout: default
+title: "Godot Engine - Events"
+description: "This page lists the upcoming and previous Godot community events."
+---
+
+{% include header.html %}
+
+
+
+
+
+
+
Events
+
+ You can meet Godot developers at various professional and casual events.
+ Sometimes our team also organizes meetups and conferences.
+
+
+
+
+
+
+
Upcoming events
+
+
+
+
+
+
2023
+
+
+
+ 20-24 March
+ Godot @ GDC
+ San Francisco, California
+
+
+
+
+
+
+
+
+
Godot @ GDC 2023
+
+
We are excited to announce that the Godot Engine will attend the 2023 Game
+ Developers Conference (GDC), on March 20-24.
+
+
W4 Games is sponsoring us this year, thanks to them, the Godot Engine will
+ have its own booth for the first time. We got in touch and teamed up with a selection of Godot developers from
+ all over the world to present their high-profile games at our booth, and share their Godot experience with
+ visitors. This is an excellent opportunity if you want to meet the people behind the engine, or other
+ like-minded folks, so come to hang out and play some of the fantastic games.
+
+
You might even get some free swag ;)
+
+
To visit the conference you must purchase a visitor pass. Access to the show floor is available starting with
+ the Expo Pass. Keep in mind that pass prices increase over time. Check the GDC website for more information.
The two days before Godot User Meeting 2022, we organize what we call the
+ Godot Sprint, with the intent for contributors to meet IRL and get some work done! This contributor
+ sprint will be primarily intended for existing engine and documentation contributors, so that we can work on
+ current topics together, review Pull Requests, discuss the roadmap, etc. We will also welcome users who aren't
+ contributors yet but would like to get involved, be it with C++ engine contributions, documentation writing or
+ the creation of other teaching materials (demos, courses, etc.). More information here
+
+
Entrance will be free.
+
+
+
Date: Thu 2 June & Fri 3 June 2022, 10 am - 19 pm both days
Registration:Mandatory. Please fill
+ this form ASAP so that we know who will be there and can organize the event accordingly.
+
+
+
+
+
+
Godot User Meeting 2022
+
+
+
+
Taking the opportunity that many contributors gather for the Godot Sprint, we
+ are organizing a Godot User Meeting. It will be great opportunity to meet some engine developers and other
+ users, bring a demo of your game and attend a couple of Godot-related talks. More information here
The two days before FOSDEM 2020 and GodotCon, we organize what
+ we
+ call the Godot Sprint, with the intent for contributors to meet IRL and get some work done! This
+ contributor sprint will be primarily intended for existing engine and documentation contributors, so that we
+ can
+ work on current topics together, review Pull Requests, discuss the roadmap, etc. We will also welcome users
+ who
+ aren't contributors yet but would like to get involved, be it with C++ engine contributions, documentation
+ writing or the creation of other teaching materials (demos, courses, etc.).
+
+
Entrance will be free.
+
+
+
Date: Thu 30 January & Fri 31 January 2020, 9 am - 6 pm both days
FOSDEM stands for Free and Open Source Developers' European Meeting and is
+ held every year in February at the Université Libre de Bruxelles (ULB) in Brussels, Belgium. It is arguably
+ the
+ biggest European event about free and open source software, with free entry and thousands of developers and
+ users of various projects attending.
+
+
+
Date: Sat 1 & Sun 2 February 2020
+
Location: Université Libre de Bruxelles (ULB), Brussels, Belgium (OpenStreetMap)
+
+
Entrance fee: Free
+
Registration: No registration needed, you can just show up at our stand and say hello :)
+
+
+
+
We will have a Godot stand at the event, with many engine contributors and users available to discuss with
+ visitors and showcase the engine.
+ We'll also have Godot T-shirts to sell, and stickers and metal pins to give away.
+
+
Some of us also organize the Game Development devroom, where talks will be given on Sat 1 February on various
+ topics related to both game development and Free and Open Source Software. Some talks will be about Godot, but
+ many others will cover different technology stacks and projects.
+
+
Refer to the FOSDEM 2020 website for more information on which projects
+ will be there, as well as talks that you might be interested in. (Note: The final schedule for FOSDEM usually
+ arrives quite late, so be patient. :))
+
+
+
+
+
GodotCon Brussels 2020
+
+
+
+
Like the past few years years, we're taking the opportunity that many community members flock to Brussels for
+ FOSDEM 2020 to organize our own Godot Conference right after it. There will be
+ talks and workshops given by engine users and developers, and plenty of time to discuss with each other and
+ play
+ Godot-made games.
+
+
+
A Call for Proposals has been posted, and
+ speakers will be announced in January.
+
+
This is an event for you (and us) to meet together and get to strengthen the existing bonds between Godot
+ contributors and users. Everyone is welcome to join, and the entrance will be free. Even if you aren't
+ familiar
+ with Godot Engine yet, this can be a nice opportunity to discover a great game engine and an even greater
+ community!
The two days before FOSDEM and GodotCon, we organize our first
+ Godot Sprint, with the intent for contributors to meet IRL and get some work done! This contributor
+ sprint will be primarily intended for existing engine and documentation contributors, so that we can work on
+ current topics together, review Pull Requests, discuss the roadmap, etc. We will also welcome users who aren't
+ contributors yet but would like to get involved, be it with C++ engine contributions, documentation writing or
+ the creation of other teaching materials (demos, courses, etc.).
+
+
Entrance will be free.
+
+
+
Date: Thu 31 January & Fri 1 February 2019, 9 am - 6 pm both days
FOSDEM stands for Free and Open Source Developers' European Meeting and is
+ held every year in February at the Université Libre de Bruxelles (ULB) in Brussels, Belgium. It is arguably
+ the
+ biggest European event about free and open source software, with free entry and thousands of developers and
+ users of various projects attending.
+
+
+
Date: 2 & 3 February 2019
+
Location: Université Libre de Bruxelles (ULB), Brussels, Belgium (OpenStreetMap)
+
+
Entrance fee: Free
+
Registration: No registration needed, you can just show up at our stand and say hello :)
+
+
+
+
We will have a Godot stand at the event, with many engine contributors and users available to discuss with
+ visitors and showcase the engine.
+ We'll also have Godot T-shirts to sell and stickers to give away.
+
+
We also proposed some talks, but we're awaiting a confirmation from FOSDEM organizers. We'll update this page
+ as soon as we know more.
+
+
Refer to the FOSDEM 2019 website for more information on which projects
+ will be there, as well as talks that you might be interested in. (Note: The final schedule for FOSDEM usually
+ arrives quite late, so be patient. :))
+
+
+
+
+
GodotCon Brussels 2019
+
+
+
+
Like the past two years, we're taking the opportunity that many community members flock to Brussels for FOSDEM 2019 to organize our own Godot Conference right after it. There will be
+ talks and workshops given by engine users and developers, and plenty of time to discuss with each other and
+ play
+ Godot-made games.
+
+
A Call for Proposals will be posted soon, and speakers will be announced in late December or January.
+
+
This is an event for you (and us) to meet together and get to strengthen the existing bonds between Godot
+ contributors and users. Everyone is welcome to join, and the entrance will be free. Even if you aren't
+ familiar
+ with Godot Engine yet, this can be a nice opportunity to discover a great game engine and an even greater
+ community!
FOSDEM stands for Free and Open Source Developers' European Meeting and is
+ held every year in February at the Université Libre de Bruxelles (ULB) in Brussels, Belgium.
+ It is arguably the biggest European event about free and open source software, with free entry and thousands
+ of
+ developers and users of various projects attending.
+
+
+
Date: 3 & 4 February 2018
+
Location: Université Libre de Bruxelles (ULB), Brussels, Belgium (OpenStreetMap)
+
Like last year, we will have a Godot Engine stand. It will
+ be located in Building K (Campus plan, OpenStreetMap).
+ We invite all Godot users and contributors from Europe and beyond to join us there and help us man the stand,
+ distribute goodies and talk to the other visitors about our engine.
+
+
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.
+
+
Our lead dev Juan Linietsky (from Buenos Aires) will also be present, so don't miss this opportunity to meet
+ him in Europe :)
+
+
+
+
+
+
GodotCon 2018
+
+
+
+
After last year's big success, we organize another GodotCon right after FOSDEM, and still in Brussels so that
+ you can attend both events at once.
+ GodotCon is the yearly meetup of the Godot Engine community, open to all interested users and
+ contributions, whether complete beginners/new users or core developers.
+
+
The entrance is free, and we will have various talks and workshops prepared by contributors and users of the
+ engine, as well as different related activities.
+ The main point is to all meet together with our laptops and hack at some Godot games or the engine itself,
+ while
+ getting to know the community in person and learn from experienced users.
+
+
Our lead developer Juan Linietsky will come from Argentina for the event, so it's a great opportunity for
+ Godot
+ users in Europe to meet him!
We are organising a Godot-focused event in Paris, France, on Saturday 22 April 2017. Many Godot developers
+ and
+ users will be there, including our lead dev Juan Linietsky (reduz).
+ The event will take place at the Mozilla Space in Paris (address below), from 9 am up to approximately 7 pm
+ (no
+ big keynote should be after 5 pm though).
+
+
The event will be partly talks from Godot developers about their current projects, engine features, etc., as
+ well as workshops. Both curious beginners and experienced developers should find something interesting to work
+ on, be it discovering the engine and make a simple game or hacking at the engine code and developing new
+ features.
+ Call for papers coming soon™ on the blog. Expect at least talks or workshop led by key developers such as Juan
+ Linietsky (reduz), Rémi Verschelde (Akien) and others.
+
+
+
+
+
+
+
FOSDEM 2017
+
+
FOSDEM stands for Free and Open Source Developers' European Meeting and is
+ held every year in February at the Université Libre de Bruxelles (ULB) in Brussels, Belgium.
+ It is arguably the biggest European event about free and open source software, with free entry and thousands
+ of
+ developers and users of various projects attending.
+
+
+
Date: Feb 4 and 5
+
Location: Université Libre de Bruxelles (ULB), Brussels, Belgium (OpenStreetMap)
+
This year will be Godot's first official participation with a Godot Engine stand. It will be located in Building H (Campus plan).
+ We invite all Godot users and contributors from Europe and beyond to join us there and help us man the stand,
+ distribute goodies and talk to the other visitors about our engine.
+
+
Want to help us with the stand, designing or ordering goodies and stand material (table cloth, kakemono,
+ etc.)?
+ Get in touch with us on one of the community channels (especially IRC ;)).
+
+
Escoria talk in the Open Game Development track
+
+
Julian Murgia (StraToN) and Rémi Verschelde (Akien) will be giving a 25 min talk about Godot and particularly
+ Escoria, the Godot-based open source framework for point'n'click adventure games that was released recently. For those who can't
+ attend, the talk should be recorded by FOSDEM volunteers and available online as soon as possible (can take a
+ few weeks though).
+
+
+
Date: Sunday, Feb 5 @ 16:30
+
Location: Room AW1.126 (come early, places are limited)
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.
+
+
+
+
+
+
GodotCon Europe 2017
+
+
Behind the pompous name of GodotCon (short for Godot Convention), you will mostly find the first
+ official IRL (*in real life*) meetup of the Godot community.
+ We decided to organize such an event right after the FOSDEM so that people coming to Brussels for the former
+ can
+ also stay a bit longer for GodotCon.
+
+
The entrance will of course be free, and the form that the event will take exactly will mostly depend upon
+ the
+ users and contributors who will be motivated in helping organizing it.
+ The base plan is: we have a venue in Brussels, do Godot stuff there, and enjoy ourselves.
There is no precise plan as of yet, but various things have been mentioned during community discussions.
+ Extending upon the above base plan, the idea is that some of us organize talks, crash courses, workshops, etc.
+ for all to benefit from and learn together.
+ The topics will include some advanced tips and tricks about using the engine, presentation and knowhow
+ transfer
+ from various published or WIP projects, etc.
+ If there is interest, we also consider having hacking sessions regarding developing the engine or writing
+ documentation, so that we can strengthen the community of co-developers.
+
+
More details on all this in the coming weeks, but the TL;DR is: It will be cool and will be tailor-made for
+ the
+ attendants, so join us!
+
+
+
+
+
+
+
+{% include footer.html %}
\ No newline at end of file
diff --git a/pages/features.html b/pages/features.html
new file mode 100644
index 0000000000..e035d0c313
--- /dev/null
+++ b/pages/features.html
@@ -0,0 +1,309 @@
+---
+permalink: /features/index.html
+title: "Godot Engine - Features"
+description: "Discover what Godot has to offer for 2D and 3D game development."
+layout: default
+---
+
+{% include header.html %}
+
+
+
+ Create games with ease using Godot's unique approach to game development.
+
+
Nodes for all your needs. Godot comes with hundreds of built-in nodes that make game design
+ a breeze. You can also create your own for custom behaviors, editors and much more.
+
Flexible scene system. Create node compositions with support for instancing and
+ inheritance.
+
Visual editor with all the tools you need packed into a beautiful and uncluttered
+ context-sensitive UI.
+
Friendly content creation pipeline for artists, level designers, animators and everyone in
+ between.
+
Persistent live editing where changes are not lost after stopping the game. It even works
+ on mobile devices!
+
Create your own custom tools with ease using the incredible tool system.
+
+ The physically-based renderer comes with a ton of features that will make your games look incredible.
+
+
+
+
+
+
Innovative architecture that combines the best of forward rendering with the efficiency of
+ deferred rendering.
+
Physically-based rendering with full MSAA and FXAA support.
+
Full principled BSDF with subsurface scattering, reflection, refraction, anisotropy,
+ clearcoat, transmittance and more.
+
+
+
Global illumination for real-time gorgeous graphics. It can also be pre-baked for beautiful
+ results even on low-end devices.
+
Mid- and Post-processing effects including a tonemapper that supports HDR, multiple standard
+ curves and auto exposure, screen-space reflections, fog, bloom, depth of field and much more.
+
Easy-to-use shader language based on GLSL, with built-in editor and code completion.
+ Additional
+ languages
+ with community-provided support for Rust, Nim, D and other languages.
+
+
Built-in editor with syntax highlighting, real-time parser and code completion.
+
Integrated documentation. Browse and search the whole API offline, without leaving the
+ editor.
+
+
+
+
+
+
+
Debug & Optimize
+
+ Solve bugs and performance bottlenecks with the
+ built-in
+ debugger.
+
+
+
Explore and modify your project while it's running, even on mobile devices.
+
Keeps changes by default after closing the project.
+
Built-in profiler with graph plotting and time seeking.
+
Video memory debugger.
+
Error logger with full stack traces.
+
Network profiler with per-node remote call tracking and bandwidth usage estimation.
+
+
+
+
+
+
+
+
+
Multi-platform editor
+ Create games on any desktop OS and Android.
+
+
Works on Windows, macOS, Linux, *BSD and Android (experimental). The
+ editor runs in 32-bit and 64-bit on all platforms, with native Apple Silicon support.
+
Small download (around 35 MB), and you are ready to go.
+
Easy to compile on any platform (no dependency hell).
+
+
+
+
+
+
+
Multi-platform deploy
+ Deploy games everywhere!
+
+
Export to desktop platforms: Windows, macOS, Linux, UWP, and *BSD.
+
Export to mobile platforms: iOS and Android.
+
+ Consoles: Nintendo Switch, PlayStation 4, Xbox One via third-party providers
+ (read more).
+
+
Export to the web using HTML5 and WebAssembly.
+
One-click deploy & export to most platforms. Easily create custom builds as well.
+
+
+
+
+
+
+
+
+
XR support
+
Godot makes cross-platform Augmented and Virtual Reality development easy.
+
+
+
Works with many headsets including the Meta Quest, Valve Index, HTC Vive, Oculus Rift, all
+ Microsoft MR headsets, and many more.
+
Support for OpenXR, an emerging open standard that most hardware vendors are moving to.
+
Plugins give access to various proprietary SDKs, such as OpenVR (SteamVR) and the legacy
+ Oculus SDKs.
+
WebXR can deliver AR/VR experiences via a web browser.
Godot is designed from the ground up for smooth teamwork.
+
+
+
Friendly filesystem usage that works great with version control systems like Git, Subversion,
+ Mercurial, you name it.
+
Scene instancing makes teamwork a breeze. Every team member can focus on their own scene, be
+ it a character, level, etc., and edit without stepping on each other's toes.
+
+
+{% include footer.html %}
\ No newline at end of file
diff --git a/pages/governance.html b/pages/governance.html
new file mode 100644
index 0000000000..459dde0c69
--- /dev/null
+++ b/pages/governance.html
@@ -0,0 +1,202 @@
+---
+permalink: /governance/index.html
+title: "Godot Engine - Governance"
+description: "Governance model."
+layout: more
+header_text: "Governance model"
+current_tab: "governance"
+---
+
+
+
Legal status
+
+ On its own, Godot has no legal status. Godot exists as a member project of
+ the Software Freedom Conservancy
+ (SFC). The SFC provides a home and infrastructure for Free, Libre, and Open
+ Source Software (FLOSS) projects by aggregating the work necessary for
+ running a non-profit organization including accounting and legal compliance.
+ For more information about what the SFC provides, please refer to their website.
+
+
+ As no company is behind Godot, it can't be sold or purchased by another company.
+
+
+ While the SFC provides the corporate infrastructure to support the Godot
+ project, it doesn't make decisions for the project. Instead it provides a
+ set of rules for how the member projects operate and provides financial
+ oversight to make sure that money is spent in a responsible way that
+ advances the project and fits with Conservancy's 501(c)(3) mission to
+ promote, advance, and defend software freedom. Each member project has a
+ Project Leadership Committee that instructs the SFC on how to spend that
+ project's funding.
+
+
+
The Project Leadership Committee
+
+ The Project Leadership Committee (PLC) is responsible for making all funding
+ and institutional decisions for the Godot project. The PLC is made of the
+ project founders (Ariel Manzur and Juan Linietsky) as well as trusted
+ contributors and community members. As spaces open up on the PLC, current
+ members may reach out to contributors and community members with a proven
+ track record and deep understanding of the project and ask them to join.
+
+
+ The PLC must be made of a balance of contributors with technical expertise,
+ and community members who bring the perspective of the community at large.
+ The PLC is subject to rules set by the Software Freedom Conservancy. For
+ more information about the PLC's policies please refer to the
+ Software Freedom
+ Conservancy's project policies.
+
+
+
+ The PLC currently consists of the following members:
+
+
+
Ariel Manzur — ariel@godotengine.org
+
Bastiaan Olij — bastiaan@godotengine.org
+
Clay John — clay@godotengine.org
+
George Marques — george@godotengine.org
+
Hein-Pieter van Braam-Stewart — hp@godotengine.org
+
Ilaria Cislaghi — ilaria@godotengine.org
+
Juan Linietsky — juan@godotengine.org
+
Julian Murgia — julian@godotengine.org
+
Rémi Verschelde — remi@godotengine.org
+
+
+
Advisors
+
+ The PLC has enlisted the help of its most trusted and veteran contributors
+ whom they call the advisors. The advisors are consulted on usage
+ of funds as well as institutional matters. It is important to note,
+ however, that while the advice of the advisory panel is weighed heavily,
+ the final authority on these matters remains with the PLC. In practice,
+ the PLC rarely makes an important decision without at least discussing it
+ with the advisors first.
+
+
+ Like the PLC, contributors do not apply to become advisors. Instead the
+ process of joining the advisors group is organic; trusted contributors may
+ be asked to join after showing dedication, expertise, and leadership
+ within the Godot community. As a result, the advisors are a diverse group
+ of individuals with expertise in all areas of Godot development.
+
+
+
Funding decisions
+
+ All donations and sponsorships go directly to the SFC. The Godot PLC makes
+ all decisions on how the funds are used, following rules established by
+ Software Freedom Conservancy. These rules dictate that funding can only be
+ used for the benefit of the project. Usage of funds generally includes:
+
+
+
Hiring contributors
+
Organizing events
+
Reimbursements for travelling to events
+
Purchasing hardware required for contributors to work on Godot
+
+
+ While the exact costs spent remain private, we do our best to publish how
+ much we get and how much we spend. All funding decisions are ultimately
+ approved by the Software Freedom Conservancy which has strict (but
+ reasonable) limits on spending,
+ hourly rates, and reimbursements.
+ As such, no one hired receives more than industry standard rates.
+
+
+
Technical decisions
+
+ Technical decisions are made by Area Owners and the project leaders.
+ Godot has the following established roles:
+
+
+
Leadership
+
+
Juan Linietsky — Technical and Project Lead
+
Rémi Verschelde — Project Manager
+
+
+ The project leaders have final say on all code merges. In theory, this means
+ the leaders will have the final say when maintainers cannot agree. In
+ practice, this authority rarely needs to be invoked because decisions are
+ made by maintainers in consultation with the community.
+
+
+
Teams and area owners
+
+ Engine teams are groups of contributors interested in
+ a specific area of the engine. Teams provide a way for contributors to have
+ focused discussions with other people with similar expertise and interests.
+ The opinion and expertise of team members is valued in discussions, but
+ ultimately the authority over an area of the engine belongs solely to the
+ area owner and the project leadership. Area owners are entrusted with final
+ say for code merges in their areas. Area owners are trusted contributors who
+ are chosen by the project leadership and have shown knowledge of the specific
+ area of the engine and the engine's philosophy as a whole.
+
+
+ In practice, area owners aim for consensus among contributors, especially
+ among the relevant team. The "rule of thumb" is to not merge code if
+ significant disputes exist over a change. However the final decision still
+ remains with the area owner. The Godot project strives for rich, public,
+ technical discussions where anyone can contribute and agree on the way to
+ move forward. Additionally, the leadership and area owners consult with
+ other contributors and the community as much as possible every time new
+ features and improvements are planned.
+
+
+
Community
+
+ We strive to make our relationship with the community as symbiotic as
+ possible within the limits of feasibility. The Godot community is made up of
+ users, contributors, maintainers, and project leadership. Godot exists
+ because its community trusts the work we do, so we try to entrust the
+ community with deciding the general direction of the project as much and as
+ openly as possible. This is how we see the process as community-driven:
+
+
+
+ Open development: All development (code that makes it
+ into the engine, docs, website, etc) is made via
+ Pull Requests.
+ They are open for anyone to see, review and comment on. From the
+ leadership to the new contributors, everyone is required to create them in
+ order 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.
+
+
+
\ No newline at end of file
diff --git a/pages/home.html b/pages/home.html
new file mode 100644
index 0000000000..4d4078c74e
--- /dev/null
+++ b/pages/home.html
@@ -0,0 +1,555 @@
+---
+permalink: /
+title: "Godot Engine - Free and open source 2D and 3D game engine"
+description: "Godot provides a huge set of common tools, so you can just focus on making your game without reinventing
+the wheel."
+layout: default
+---
+
+{% include header.html %}
+
+
+
+
+
+
+
+
The game engine you've been waiting for.
+
The Godot Engine is a free, all-in-one, cross-platform game engine that makes it easy for you to create 2D and
+ 3D games.
+ Documentation quality is essential in a game engine; help make it better by updating the API reference, writing
+ new guides or submitting corrections.
+
+
+
+
+
+
+{% include footer.html %}
\ No newline at end of file
diff --git a/pages/license.html b/pages/license.html
new file mode 100644
index 0000000000..2d6214b66f
--- /dev/null
+++ b/pages/license.html
@@ -0,0 +1,104 @@
+---
+permalink: /license/index.html
+title: "Godot Engine - License"
+description: "Godot Engine is free and open source software released under the permissive MIT license."
+layout: more
+header_text: "License"
+current_tab: "license"
+---
+
+
You can study how Godot Engine works and change it
+
You can distribute unmodified and changed versions of Godot Engine, even commercially and under a different
+ license (including proprietary)
+
+
+ The only restriction to that third freedom is that you need to distribute the copyright notice and license statement
+ of Godot Engine whenever you redistribute it.
+ So your derivative product may have a different license, but should still state in its documentation that it derives
+ from the MIT licensed Godot Engine (see below).
+
+
+
Your game
+
+ Godot Engine's license terms and copyright do not apply to the content you create with it; you are free to
+ license your games how you see best fit,
+ and will be their sole copyright owner(s).
+
+
+ Note however that the Godot Engine binary that you would distribute with your game is a copy of the "Software"
+ as defined in the license,
+ and you are therefore required to include the copyright notice and license statement somewhere in your
+ documentation.
+
+
+ The Godot Engine developers consider that a link to this page (godotengine.org/license)
+ in your game documentation or credits would be an
+ acceptable way to satisfy the license terms.
+
+ A plain text version of the license is available from Godot Engine's GitHub repository: LICENSE.txt.
+ A list of contributors is also available: AUTHORS.md.
+
+
+
+ Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
+ Copyright (c) 2014-2022 Godot Engine contributors.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+ -- Godot Engine <https://godotengine.org>
+
+
+
Third-party components
+
+ Godot Engine uses several third-party libraries and code snippets, which are distributed under their own
+ license and copyright statements.
+ All such components are compatible with the terms of Godot Engine's MIT license.
+ You can refer to this list
+ for a comprehensive overview of all third-party components used in Godot Engine and their respective licenses.
+
+
+
Disclaimer
+
+ The above explanations of Godot Engine's license terms and their implications for its users do not constitute
+ 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.
+
+
\ No newline at end of file
diff --git a/pages/maintenance.html b/pages/maintenance.html
new file mode 100644
index 0000000000..becedec287
--- /dev/null
+++ b/pages/maintenance.html
@@ -0,0 +1,37 @@
+---
+permalink: /maintenance/index.html
+---
+
+
+
+
+
+ Godot Engine - Website under maintenance
+
+
+
+
+
Godot Engine - Website under maintenance
+
The website is being currently down for maintenance as it's being upgraded. In the meantime, use these links:
+ The name Godot Engine should always be written in Title Case. Also,
+ Godot should be written with only one capital letter – it's not "GoDot".
+
+
+ Godot is named after the play Waiting for
+ Godot,
+ and is usually pronounced like in the play. Different languages have different
+ pronunciations for Godot and we find it beautiful.
+ For native English speakers, we recommend "GOD-oh"; the "t" is silent like in the
+ French original.
+
+
+
Logo and icon usage guidelines
+
+
+ Only use the logo and icon to represent Godot, not your own project.
+ You are allowed to include the Godot logo in your project's splash screen,
+ 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.
+
+{% include footer.html %}
\ No newline at end of file
diff --git a/pages/privacy-policy.html b/pages/privacy-policy.html
new file mode 100644
index 0000000000..939712350f
--- /dev/null
+++ b/pages/privacy-policy.html
@@ -0,0 +1,299 @@
+---
+permalink: /privacy-policy/index.html
+title: "Godot Engine - Privacy Policy"
+description: "Teams and engine areas overview."
+layout: more
+header_text: "Privacy policy"
+current_tab: "privacy-policy"
+---
+
+
+
+
Scope of This Notice
+
+
This Privacy Statement is intended to describe Godot Engine's privacy practices and provide information about the
+ choices you have regarding the ways in which information collected by Godot Engine is used and disclosed. Godot
+ Engine, a member project of the Software Freedom Conservancy, is referred
+ to in this document as "Godot".
+
+
It covers both online platforms of the Godot project and the use of the Godot Engine application.
+
+
Our Commitment to Privacy
+
+
Your privacy is important to Godot and Software Freedom Conservancy. To better protect your privacy and to comply
+ with various laws and regulations, we have provided this Statement explaining our information practices and the
+ choices you can make about the way your personal information is collected, used and disclosed. To make this
+ Statement easy to find, we have made it available on our homepage and at many of the
+ locations where personally-identifiable information may be requested.
+
+
The Information We Collect
+
+
This Privacy Statement applies to all information collected by or submitted to Godot, including personal data.
+ "Personal data" is data that can be used to identify an individual.
you sign up and log in to an account on the Godot Chat platform (https://chat.godotengine.org), and use it to participate in private and
+ public discussions;
+
you sign up and log in to an account on Godot's Q&A site (https://godotengine.org/qa), and use it to ask or answer questions;
you use one of Godot's publicly logged project IRC channels (#godotengine-atelier, #godotengine-devel,
+ #godotengine-meeting) on the Libera Chat IRC network;
+
you sign up for one of our public mailing lists hosted by TuxFamily;
+
you participate in surveys or evaluations;
+
you submit questions or comments to us.
+
+
+
When you use the Asset Library in the Godot Engine application, HTTPS requests are made to the Asset Library
+ website, and may contain: Godot Engine version, search query, selected assets, and user IP. The Asset Library
+ processes this data without storing it, but our TuxFamily hosting's HTTP server may log these requests. Such logs
+ are subject to TuxFamily's privacy policy (https://faq.tuxfamily.org/Privacy/En).
+ This is the only personal data collected by the Godot Engine application.
+
+
When you create an account on the Godot website (including the Godot Chat platform, the Q&A platform, the Asset
+ Library and October CMS), it collects your username and email address for authentication. Additional information may
+ be collected if you choose to fill in optional fields in your user profile (e.g. full name, location, profile
+ picture).
+
+
When you join or send messages to any of the IRC channels listed above, that activity is logged and published
+ publicly for others interested in the project. This logging includes the user nickname specified when connecting to
+ Libera Chat and your messages in those public channels.
Godot may also collect personal data from individuals (with their consent) at conventions, trade shows and
+ expositions. The types of personal data collected may include (but are not limited to):
+
+
+
your first and last name;
+
your title and your company's name;
+
your home, billing, or other physical address (including street name, name of a city or town, state/province);
+
+
your country code;
+
your e-mail address;
+
your telephone number;
+
any other identifier that permits Godot to make physical or online contact with you;
+
+
+
Using (Processing) Your Personal Data
+
+
Godot uses the personal data you provide to:
+
+
+
create and maintain your accounts;
+
identify and authenticate you;
+
attribute data and content you produce directly and indirectly in our public-facing services;
+
answer your questions;
+
send you information;
+
for research activities, including the production of statistical reports (such aggregated information is not
+ used to contact the subjects of the report);
+
send you surveys;
+
maintain our servers.
+
+
+
We also use this personal data to provide you with information related to your account and the educational
+ materials, software and services you acquire from us, to better understand your needs and interests, to improve what
+ we do for you and the public, to personalize communications, and to comply with or fulfill any contractual
+ obligations to you. It is in Godot’s legitimate business interests to provide you with the information,
+ communications, and services you request; to create a public record of the data and content produced by Godot’s
+ services; and to maintain the integrity of that data and content for historical, scientific, and research purposes.
+
+
+
Sharing Your Personal Data
+
+
Unless you consent, Godot will never process or share the personal data you provide to us except as described
+ below.
+
+
Godot may share your personal data with third parties under any of the following circumstances:
+
+
+
To attribute your contributions to source repositories, forums, and IRC channels.
+
As required to provide service, and for e-mail housing (as a consequence of uses already described in this
+ Privacy Statement). It is in Godot’s legitimate business interest to provide all users an accurate record of data
+ and content provided by Godot’s services, and to maintain the integrity of that data and content for historical,
+ scientific, and research purposes. This data and content may include but is not limited to email, code changes,
+ comments, and artifacts.
+
As required by law (such as responding to a valid subpoena, warrant, audit, or agency action, or to prevent
+ fraud).
+
For research activities, including the production of statistical reports (such aggregated information is used to
+ describe our services and is not used to contact the subjects of the report).
+
+
+
Donations
+
+
We receive personal information from third party services when you donate to us via online payment mechanisms. We
+ do not sell or distribute this information to third parties. Godot uses this information to acknowledge your
+ donation and send you occasional solicitations and newsletters. Donors can opt out of all contact by emailing privacy@godotengine.org. Donor names (as registered on Patreon) are
+ posted on https://github.com/godotengine/godot/blob/master/DONORS.md
+ and included in the Godot editor application's "About" dialog as a recognition of their support. At the time of the
+ donation, the donor can ask to be anonymous, so that their name will not be publicly recognized.
+
+
Receiving E-Mail
+
+
Godot may send you e-mail to authorize accounts you create on our site, to inform you of important upcoming Godot
+ events, to send occasional solicitations in connection with our donor programs as described above or in response to
+ your questions. For your protection, Godot may contact you in the event that we find an issue that requires your
+ immediate attention. Godot processes your personal data in these cases to fulfill and comply with its contractual
+ obligations to you, to provide the services you have requested, and to ensure the security of your account.
+
+
Cookies and Other Browser Information
+
+
Godot's online services automatically capture IP addresses. We use IP addresses to help diagnose problems with our
+ servers, to administer our website, and to help ensure the security of your interaction with our services.
+
+
As part of offering and providing customizable and personalized services, Godot uses cookies to store and sometimes
+ track information about you. A cookie is a small amount of data that is sent to your browser from a Web server and
+ stored on your computer's hard drive. All sections of godotengine.org where you are prompted to log in or that are
+ customizable require your browser to accept cookies.
+
+
Generally, we use cookies to remind us of who you are and to access your account information (stored on our
+ computers) in order to provide a better and more personalized service. This cookie is set when you register or "sign
+ in" and is modified when you "sign out" of our services.
+
+
If you do not want your personal information to be stored by cookies, you can configure your browser so that it
+ always rejects these cookies or asks you each time if you accept them or not. However, you must understand that the
+ use of cookies may be necessary to provide certain services, and choosing to reject cookies will reduce the
+ performance and functionality of the site. Your browser documentation includes instructions explaining how to
+ enable, disable or delete cookies at the browser level (usually located in the “Help”, “Tools” or “Edit” facility).
+
+
+
Our Commitment to Data Security
+
+
Godot trains its administrators on our privacy policy guidelines and makes our privacy policy available to our
+ partners. Our website uses Secure Socket Layer (SSL) technology, which encrypts your personal data when you send
+ your personal information on our website. In addition, Godot and its partners enter into confidentiality agreements
+ which require that care and precautions be taken to prevent loss, misuse, or disclosure of your personal data.
+
+
Public Forums Reminder
+
+
Godot often makes mailing lists, source repositories, issue trackers, Etherpads, forums, and IRC logs available to
+ the public. Please remember that any information that is disclosed in these areas becomes public information. Please
+ think carefully about your desired level of anonymity before you disclose personal information. Although we value
+ individual ideas and encourage free expression, Godot reserves the right to take necessary action to preserve the
+ integrity of these areas, such as removing any posting that is vulgar or inappropriate. It is in Godot’s legitimate
+ business interests to provide all users an accurate record of data and content provided in the public forums it
+ maintains and uses; to maintain the integrity of that data and content for historical, scientific, and research
+ purposes; and to provide an environment for the free exchange of ideas relevant and constructive to the development
+ and propagation of software freedom.
+
+
Our Commitment to Children's Online Privacy
+
+
Out of special concern for children's privacy, Godot does not knowingly accept online personal information from
+ children under the age of 13. Godot does not knowingly allow children under the age of 13 to become registered
+ members of our sites. Godot does not knowingly collect or solicit personal information about children under 13.
+
+
In the event that Godot ever decides to expand its intended site audience to include children under the age of 13,
+ those specific web pages will, in accordance with the requirements of the Children's Online Privacy Protection Act
+ (COPPA), be clearly identified and provide an explicit privacy notice addressed to children under 13. In addition,
+ Godot will provide an appropriate mechanism to obtain parental approval, allow parents to subsequently make changes
+ to or request removal of their children's personal information, and provide access to any other information as
+ required by law.
+
+
Additionally, EU residents under the age of 16 should not submit their personal data for subscribing to our email
+ solicitations and we will delete any such data if we become aware of it.
+
+
About Links to Other Sites
+
+
This site contains links to other sites. Godot does not control the information collection of sites that can be
+ reached through links from godotengine.org. If you have questions about the data collection procedures of linked
+ sites, please contact those sites directly.
+
+
Your Rights and Choices in the EEA and Around the World
+
+
Where the EU General Data Protection Regulation 2016/679 (“GDPR”) applies to the processing of your personal data,
+ especially when you access the website from a country in the European Economic Area (“EEA”), you have the following
+ rights, subject to some limitations, against Godot:
+
+
+
The right to access your personal data;
+
The right to rectify the personal data we hold about you;
+
The right to erase your personal data;
+
The right to restrict our use of your personal data;
+
The right to object to our use of your personal data;
+
The right to receive your personal data in a usable electronic format and transmit it to a third party (also
+ known as the right of data portability); and
+
The right to lodge a complaint with your local data protection authority.
+
+
+
If you would like to exercise any of these rights, you may do so by mailing privacy@godotengine.org. Please understand, however, the rights
+ enumerated above are not absolute in all cases.
+
+
Where the GDPR applies, you also have the right to withdraw any consent you have given to uses of your personal
+ data. If you wish to withdraw consent that you have previously provided to Godot, you may do so by mailing privacy@godotengine.org. However, the withdrawal of consent will not
+ affect the lawfulness of processing based on consent before its withdrawal.
+
+
Godot will undertake best efforts to provide these rights to people outside of the EEA as well.
+
+
How to Access, Modify or Update Your Information
+
+
Godot gives you the ability to access, modify or update your personal data at any time. On sites where you can
+ create accounts (Q&A, Asset Library), you may log in and make changes to your login information (change your
+ password), your contact information, your general preferences and your personalization settings. If necessary, you
+ may also contact us and describe the changes you want made to the personal data you have previously provided by
+ mailing privacy@godotengine.org.
+
+
If you wish to remove your personal data from Godot, you may contact us at privacy@godotengine.org and request that we remove this information from
+ the Godot System. Other locations where you may have used your personal data as an identifier (e.g. mailing list and
+ forum postings in the archives, repository changelogs, and IRC logs) will not be altered.
+
+
How to Contact Us
+
+
If you have any questions about any of these practices or Godot's use of your personal information, please feel
+ free to contact us by email at:
Godot will work with you to resolve any concerns you may have about this Statement.
+
+
Changes to this Privacy Statement
+
+
Godot reserves the right to change this policy from time to time. If we do make changes, the revised Privacy
+ 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.
\ No newline at end of file
diff --git a/pages/rss.xml b/pages/rss.xml
new file mode 100644
index 0000000000..26d55fe197
--- /dev/null
+++ b/pages/rss.xml
@@ -0,0 +1,25 @@
+---
+permalink: /rss.xml
+---
+
+
+
+
+
+ Godot Engine Official
+ https://godotengine.org
+ Godot is a 2D and 3D free and open source game engine developed by a community of contributors. It provides a huge set of common tools, so you can just focus on making your game without reinventing the wheel.
+
+
+ {% assign latest_posts = site.article | sort:"date" | reverse %}
+ {% for post in latest_posts limit:24 %}
+
+ {{ post.title }}
+ {{ post.url }}
+ {{ post.content | xml_escape }}
+ {{ post.date | date: "%a, %B %e %Y %X +0000" }}
+
+ {% endfor %}
+
+
+
\ No newline at end of file
diff --git a/pages/showcase.html b/pages/showcase.html
new file mode 100644
index 0000000000..77354ed07a
--- /dev/null
+++ b/pages/showcase.html
@@ -0,0 +1,127 @@
+---
+permalink: /showcase/index.html
+title: "Godot Engine - Showcase"
+description: "Games made with the Godot Engine."
+layout: default
+---
+
+{% include header.html %}
+
+
+
+{% include footer.html %}
\ No newline at end of file
diff --git a/pages/teams.html b/pages/teams.html
new file mode 100644
index 0000000000..1cbe1427b7
--- /dev/null
+++ b/pages/teams.html
@@ -0,0 +1,575 @@
+---
+permalink: /teams/index.html
+title: "Godot Engine - Teams"
+description: "Teams and engine areas overview."
+layout: more
+header_text: "Godot Engine teams"
+current_tab: "teams"
+---
+
+
+
+ This pages provides an overview of the various teams working on Godot Engine. If you want to know who works on
+ what, who to get in contact with on a topic,
+ which people should review a particular Pull Request or similar - this is a good first stop.
+
+
+
+ Engine teams are listed by engine area, with a few keywords describing what belongs to that area and a link to the
+ teams chat channel,
+ followed by a list of the members of that team (names and GitHub handles). For some larger areas, subteams exist for
+ parts of that area.
+ Names in bold with a ⭐ emoji are the main contributors in charge of a given area, who typically lead the team work
+ and can merge Pull Requests in their area of expertise.
+
+
+
+ If you want to get in touch, use the link to each team's chat channel on the Godot Engine Contributors chat
+ after the team's names (see Community).
+ For general development discussions which may not fit a specific team channel, use the general purpose #devel channel.
+ For general enquiries, private or security related matters, have a look at the Contact page.
+
+
+
+
General areas
+
+
+ Categorizing the engine development in discrete teams is not easy! This section includes some broad areas which have
+ an influence on all engine subsystems,
+ and where many contributors are active without necessarily being responsible for all the features that their team
+ encompasses.
+ Some more specialized teams are then listed in the Systems section.
+
+ Everything that inherits Control (everything under scene/gui)
+ and can be used to build Graphical User Interfaces (both game UI and editor tools).
+
+ Umbrella team for all the scripting languages usable with Godot. Encompasses some shared core components
+ (Object, ClassDB, MethodBind, ScriptLanguage, etc.)
+ and language specific implementations in dedicated subteams.
+
+
+
+ George Marques (@vnen),
+ Ignacio Roldán Etcheverry (@neikeq),
+ Juan Linietsky (@reduz)
+
+ Rendering server and RenderingDevice implementations (Vulkan, OpenGL), as well as the actual rendering
+ techniques implemented using those graphics APIs.
+
+ The following teams do not impact the engine code directly, but take care of all other important parts of the Godot
+ ecosystem such
+ as the documentation, demos, website, etc.
+
+ The communication team ensures that our platforms, from the website to our social media, are kept up to date
+ with current information about the engine and showcase other projects from the community.
+
+ If you work on Godot translations and contributors for your language have a dedicated communication channel for
+ coordination, let us know so we can link it here.
+
diff --git a/plugins/godotengine/utility/updates/version.yaml b/plugins/godotengine/utility/updates/version.yaml
deleted file mode 100644
index dab6250f31..0000000000
--- a/plugins/godotengine/utility/updates/version.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-v1.0.1: Initial version
-v1.0.2: Updated to provide migration management tools
diff --git a/storage/app/media/2.1/contextual.gif b/storage/app/media/2.1/contextual.gif
new file mode 100644
index 0000000000..4350dcd0b8
Binary files /dev/null and b/storage/app/media/2.1/contextual.gif differ
diff --git a/storage/app/media/2.1/drag_and_drop.gif b/storage/app/media/2.1/drag_and_drop.gif
new file mode 100644
index 0000000000..2c2d405ee1
Binary files /dev/null and b/storage/app/media/2.1/drag_and_drop.gif differ
diff --git a/storage/app/media/2.1/new_animsprite.png b/storage/app/media/2.1/new_animsprite.png
new file mode 100644
index 0000000000..93c54dc819
Binary files /dev/null and b/storage/app/media/2.1/new_animsprite.png differ
diff --git a/storage/app/media/2.1/new_feature_dynamicfont.png b/storage/app/media/2.1/new_feature_dynamicfont.png
new file mode 100644
index 0000000000..302f02d3fa
Binary files /dev/null and b/storage/app/media/2.1/new_feature_dynamicfont.png differ
diff --git a/storage/app/media/2.1/new_features_assetlib.png b/storage/app/media/2.1/new_features_assetlib.png
new file mode 100644
index 0000000000..8415005047
Binary files /dev/null and b/storage/app/media/2.1/new_features_assetlib.png differ
diff --git a/storage/app/media/2.1/new_features_custom_keybinds.png b/storage/app/media/2.1/new_features_custom_keybinds.png
new file mode 100644
index 0000000000..17bd795fe6
Binary files /dev/null and b/storage/app/media/2.1/new_features_custom_keybinds.png differ
diff --git a/storage/app/media/2.1/new_features_custom_theme.png b/storage/app/media/2.1/new_features_custom_theme.png
new file mode 100644
index 0000000000..94caa2df27
Binary files /dev/null and b/storage/app/media/2.1/new_features_custom_theme.png differ
diff --git a/storage/app/media/2.1/new_features_editor.png b/storage/app/media/2.1/new_features_editor.png
new file mode 100644
index 0000000000..cd1ea71180
Binary files /dev/null and b/storage/app/media/2.1/new_features_editor.png differ
diff --git a/storage/app/media/2.1/new_features_editor_langs.png b/storage/app/media/2.1/new_features_editor_langs.png
new file mode 100644
index 0000000000..02ffbc897a
Binary files /dev/null and b/storage/app/media/2.1/new_features_editor_langs.png differ
diff --git a/storage/app/media/2.1/new_features_hidpi.PNG b/storage/app/media/2.1/new_features_hidpi.PNG
new file mode 100644
index 0000000000..80cb19bbb5
Binary files /dev/null and b/storage/app/media/2.1/new_features_hidpi.PNG differ
diff --git a/storage/app/media/2.1/new_features_live_script_reload.png b/storage/app/media/2.1/new_features_live_script_reload.png
new file mode 100644
index 0000000000..34cda002f5
Binary files /dev/null and b/storage/app/media/2.1/new_features_live_script_reload.png differ
diff --git a/storage/app/media/2.1/new_features_profiler.png b/storage/app/media/2.1/new_features_profiler.png
new file mode 100644
index 0000000000..726078ec93
Binary files /dev/null and b/storage/app/media/2.1/new_features_profiler.png differ
diff --git a/storage/app/media/2.1/new_features_remote_inspector.png b/storage/app/media/2.1/new_features_remote_inspector.png
new file mode 100644
index 0000000000..4c223222dd
Binary files /dev/null and b/storage/app/media/2.1/new_features_remote_inspector.png differ
diff --git a/storage/app/media/2.1/new_features_res_preview.png b/storage/app/media/2.1/new_features_res_preview.png
new file mode 100644
index 0000000000..0c8acdf69f
Binary files /dev/null and b/storage/app/media/2.1/new_features_res_preview.png differ
diff --git a/storage/app/media/2.1/new_features_scene_import.png b/storage/app/media/2.1/new_features_scene_import.png
new file mode 100644
index 0000000000..38d4b063e6
Binary files /dev/null and b/storage/app/media/2.1/new_features_scene_import.png differ
diff --git a/storage/app/media/2.1/new_features_thumbnail.png b/storage/app/media/2.1/new_features_thumbnail.png
new file mode 100644
index 0000000000..b0853e9af2
Binary files /dev/null and b/storage/app/media/2.1/new_features_thumbnail.png differ
diff --git a/storage/app/media/3.0 release/3dgizmo.png b/storage/app/media/3.0 release/3dgizmo.png
new file mode 100644
index 0000000000..d1b0400355
Binary files /dev/null and b/storage/app/media/3.0 release/3dgizmo.png differ
diff --git a/storage/app/media/3.0 release/Sponza VR.png b/storage/app/media/3.0 release/Sponza VR.png
new file mode 100644
index 0000000000..08f0a64c6d
Binary files /dev/null and b/storage/app/media/3.0 release/Sponza VR.png differ
diff --git a/storage/app/media/3.0 release/audiorack.png b/storage/app/media/3.0 release/audiorack.png
new file mode 100644
index 0000000000..619a5b1482
Binary files /dev/null and b/storage/app/media/3.0 release/audiorack.png differ
diff --git a/storage/app/media/3.0 release/auto_exposure.gif b/storage/app/media/3.0 release/auto_exposure.gif
new file mode 100644
index 0000000000..f85196dca1
Binary files /dev/null and b/storage/app/media/3.0 release/auto_exposure.gif differ
diff --git a/storage/app/media/3.0 release/autotile-damarind.mp4 b/storage/app/media/3.0 release/autotile-damarind.mp4
new file mode 100644
index 0000000000..37dc608ab2
Binary files /dev/null and b/storage/app/media/3.0 release/autotile-damarind.mp4 differ
diff --git a/storage/app/media/3.0 release/builtinfx.png b/storage/app/media/3.0 release/builtinfx.png
new file mode 100644
index 0000000000..4827427325
Binary files /dev/null and b/storage/app/media/3.0 release/builtinfx.png differ
diff --git a/storage/app/media/3.0 release/bullet.png b/storage/app/media/3.0 release/bullet.png
new file mode 100644
index 0000000000..6bed9678e0
Binary files /dev/null and b/storage/app/media/3.0 release/bullet.png differ
diff --git a/storage/app/media/3.0 release/cursor.png b/storage/app/media/3.0 release/cursor.png
new file mode 100644
index 0000000000..351eb74330
Binary files /dev/null and b/storage/app/media/3.0 release/cursor.png differ
diff --git a/storage/app/media/3.0 release/editor_theme.png b/storage/app/media/3.0 release/editor_theme.png
new file mode 100644
index 0000000000..5f12cf1fee
Binary files /dev/null and b/storage/app/media/3.0 release/editor_theme.png differ
diff --git a/storage/app/media/3.0 release/environment_ssao2.png b/storage/app/media/3.0 release/environment_ssao2.png
new file mode 100644
index 0000000000..67d857e2ce
Binary files /dev/null and b/storage/app/media/3.0 release/environment_ssao2.png differ
diff --git a/storage/app/media/3.0 release/export_presets.png b/storage/app/media/3.0 release/export_presets.png
new file mode 100644
index 0000000000..528927ed56
Binary files /dev/null and b/storage/app/media/3.0 release/export_presets.png differ
diff --git a/storage/app/media/3.0 release/flatstylebox.png b/storage/app/media/3.0 release/flatstylebox.png
new file mode 100644
index 0000000000..5d3b7203f9
Binary files /dev/null and b/storage/app/media/3.0 release/flatstylebox.png differ
diff --git a/storage/app/media/3.0 release/font_oversample.png b/storage/app/media/3.0 release/font_oversample.png
new file mode 100644
index 0000000000..8a3849926a
Binary files /dev/null and b/storage/app/media/3.0 release/font_oversample.png differ
diff --git a/storage/app/media/3.0 release/ft.png b/storage/app/media/3.0 release/ft.png
new file mode 100644
index 0000000000..88cc2def90
Binary files /dev/null and b/storage/app/media/3.0 release/ft.png differ
diff --git a/storage/app/media/3.0 release/ft2.png b/storage/app/media/3.0 release/ft2.png
new file mode 100644
index 0000000000..45f88b7250
Binary files /dev/null and b/storage/app/media/3.0 release/ft2.png differ
diff --git a/storage/app/media/3.0 release/gdnative.png b/storage/app/media/3.0 release/gdnative.png
new file mode 100644
index 0000000000..5c514c6de8
Binary files /dev/null and b/storage/app/media/3.0 release/gdnative.png differ
diff --git a/storage/app/media/3.0 release/gdscript3.png b/storage/app/media/3.0 release/gdscript3.png
new file mode 100644
index 0000000000..9d67918953
Binary files /dev/null and b/storage/app/media/3.0 release/gdscript3.png differ
diff --git a/storage/app/media/3.0 release/giprobe.png b/storage/app/media/3.0 release/giprobe.png
new file mode 100644
index 0000000000..c2976bc22d
Binary files /dev/null and b/storage/app/media/3.0 release/giprobe.png differ
diff --git a/storage/app/media/3.0 release/gltf.png b/storage/app/media/3.0 release/gltf.png
new file mode 100644
index 0000000000..4e5d68fd57
Binary files /dev/null and b/storage/app/media/3.0 release/gltf.png differ
diff --git a/storage/app/media/3.0 release/godot_contributions_december.png b/storage/app/media/3.0 release/godot_contributions_december.png
new file mode 100644
index 0000000000..35c8929805
Binary files /dev/null and b/storage/app/media/3.0 release/godot_contributions_december.png differ
diff --git a/storage/app/media/3.0 release/godot_docs.png b/storage/app/media/3.0 release/godot_docs.png
new file mode 100644
index 0000000000..b295cdf4cc
Binary files /dev/null and b/storage/app/media/3.0 release/godot_docs.png differ
diff --git a/storage/app/media/3.0 release/godotswitch.png b/storage/app/media/3.0 release/godotswitch.png
new file mode 100644
index 0000000000..d684dd7982
Binary files /dev/null and b/storage/app/media/3.0 release/godotswitch.png differ
diff --git a/storage/app/media/3.0 release/import_system.png b/storage/app/media/3.0 release/import_system.png
new file mode 100644
index 0000000000..318e52a236
Binary files /dev/null and b/storage/app/media/3.0 release/import_system.png differ
diff --git a/storage/app/media/3.0 release/ipv6.png b/storage/app/media/3.0 release/ipv6.png
new file mode 100644
index 0000000000..ad99a399d5
Binary files /dev/null and b/storage/app/media/3.0 release/ipv6.png differ
diff --git a/storage/app/media/3.0 release/lightmapping.png b/storage/app/media/3.0 release/lightmapping.png
new file mode 100644
index 0000000000..f8479d364c
Binary files /dev/null and b/storage/app/media/3.0 release/lightmapping.png differ
diff --git a/storage/app/media/3.0 release/monogodot.png b/storage/app/media/3.0 release/monogodot.png
new file mode 100644
index 0000000000..6448894d48
Binary files /dev/null and b/storage/app/media/3.0 release/monogodot.png differ
diff --git a/storage/app/media/3.0 release/multiplayer.png b/storage/app/media/3.0 release/multiplayer.png
new file mode 100644
index 0000000000..d3ffb082aa
Binary files /dev/null and b/storage/app/media/3.0 release/multiplayer.png differ
diff --git a/storage/app/media/3.0 release/multiplayer2.png b/storage/app/media/3.0 release/multiplayer2.png
new file mode 100644
index 0000000000..c82306e0b6
Binary files /dev/null and b/storage/app/media/3.0 release/multiplayer2.png differ
diff --git a/storage/app/media/3.0 release/new_3d_renderer.jpg b/storage/app/media/3.0 release/new_3d_renderer.jpg
new file mode 100644
index 0000000000..5f17c69a9c
Binary files /dev/null and b/storage/app/media/3.0 release/new_3d_renderer.jpg differ
diff --git a/storage/app/media/3.0 release/new_3d_renderer.png b/storage/app/media/3.0 release/new_3d_renderer.png
new file mode 100644
index 0000000000..54abbf92e5
Binary files /dev/null and b/storage/app/media/3.0 release/new_3d_renderer.png differ
diff --git a/storage/app/media/3.0 release/new_material_params.png b/storage/app/media/3.0 release/new_material_params.png
new file mode 100644
index 0000000000..f628770244
Binary files /dev/null and b/storage/app/media/3.0 release/new_material_params.png differ
diff --git a/storage/app/media/3.0 release/particles.png b/storage/app/media/3.0 release/particles.png
new file mode 100644
index 0000000000..cf7174cdcc
Binary files /dev/null and b/storage/app/media/3.0 release/particles.png differ
diff --git a/storage/app/media/3.0 release/particles2.png b/storage/app/media/3.0 release/particles2.png
new file mode 100644
index 0000000000..9951f068b9
Binary files /dev/null and b/storage/app/media/3.0 release/particles2.png differ
diff --git a/storage/app/media/3.0 release/visual_script.png b/storage/app/media/3.0 release/visual_script.png
new file mode 100644
index 0000000000..5b7519865c
Binary files /dev/null and b/storage/app/media/3.0 release/visual_script.png differ
diff --git a/storage/app/media/3.0 release/webassembly.png b/storage/app/media/3.0 release/webassembly.png
new file mode 100644
index 0000000000..191d7edcf9
Binary files /dev/null and b/storage/app/media/3.0 release/webassembly.png differ
diff --git a/storage/app/media/3.0/godot_contributions_december.png b/storage/app/media/3.0/godot_contributions_december.png
new file mode 100644
index 0000000000..35c8929805
Binary files /dev/null and b/storage/app/media/3.0/godot_contributions_december.png differ
diff --git a/storage/app/media/3.0/realtime-global-illumination.jpg b/storage/app/media/3.0/realtime-global-illumination.jpg
new file mode 100644
index 0000000000..918be1d8d9
Binary files /dev/null and b/storage/app/media/3.0/realtime-global-illumination.jpg differ
diff --git a/storage/app/media/3.0/thomas_twitter.png b/storage/app/media/3.0/thomas_twitter.png
new file mode 100644
index 0000000000..565ae39deb
Binary files /dev/null and b/storage/app/media/3.0/thomas_twitter.png differ
diff --git a/storage/app/media/3.1/FileSystem dock/dragdrop.gif b/storage/app/media/3.1/FileSystem dock/dragdrop.gif
new file mode 100644
index 0000000000..4895437d80
Binary files /dev/null and b/storage/app/media/3.1/FileSystem dock/dragdrop.gif differ
diff --git a/storage/app/media/3.1/FileSystem dock/filesystemdock.png b/storage/app/media/3.1/FileSystem dock/filesystemdock.png
new file mode 100644
index 0000000000..acc9a229d9
Binary files /dev/null and b/storage/app/media/3.1/FileSystem dock/filesystemdock.png differ
diff --git a/storage/app/media/3.1/FileSystem dock/newlayout.png b/storage/app/media/3.1/FileSystem dock/newlayout.png
new file mode 100644
index 0000000000..abbc4cad12
Binary files /dev/null and b/storage/app/media/3.1/FileSystem dock/newlayout.png differ
diff --git a/storage/app/media/3.1/FileSystem dock/search.gif b/storage/app/media/3.1/FileSystem dock/search.gif
new file mode 100644
index 0000000000..6817ba3f04
Binary files /dev/null and b/storage/app/media/3.1/FileSystem dock/search.gif differ
diff --git a/storage/app/media/3.1/FileSystem dock/thumnails.png b/storage/app/media/3.1/FileSystem dock/thumnails.png
new file mode 100644
index 0000000000..e242b46d85
Binary files /dev/null and b/storage/app/media/3.1/FileSystem dock/thumnails.png differ
diff --git a/storage/app/media/3.1/SimplexNoise/lunaria.png b/storage/app/media/3.1/SimplexNoise/lunaria.png
new file mode 100644
index 0000000000..588c4499c3
Binary files /dev/null and b/storage/app/media/3.1/SimplexNoise/lunaria.png differ
diff --git a/storage/app/media/3.1/SimplexNoise/minecraft.png b/storage/app/media/3.1/SimplexNoise/minecraft.png
new file mode 100644
index 0000000000..df7c851447
Binary files /dev/null and b/storage/app/media/3.1/SimplexNoise/minecraft.png differ
diff --git a/storage/app/media/3.1/SimplexNoise/noise.mp4 b/storage/app/media/3.1/SimplexNoise/noise.mp4
new file mode 100644
index 0000000000..b8b171edea
Binary files /dev/null and b/storage/app/media/3.1/SimplexNoise/noise.mp4 differ
diff --git a/storage/app/media/3.1/SimplexNoise/noise.png b/storage/app/media/3.1/SimplexNoise/noise.png
new file mode 100644
index 0000000000..da74f12218
Binary files /dev/null and b/storage/app/media/3.1/SimplexNoise/noise.png differ
diff --git a/storage/app/media/3.1/SimplexNoise/water.png b/storage/app/media/3.1/SimplexNoise/water.png
new file mode 100644
index 0000000000..1f7189f76d
Binary files /dev/null and b/storage/app/media/3.1/SimplexNoise/water.png differ
diff --git a/storage/app/media/3.1/SoftBody/platformer.zip b/storage/app/media/3.1/SoftBody/platformer.zip
new file mode 100644
index 0000000000..66047949a6
Binary files /dev/null and b/storage/app/media/3.1/SoftBody/platformer.zip differ
diff --git a/storage/app/media/3.3/android-aab.png b/storage/app/media/3.3/android-aab.png
new file mode 100644
index 0000000000..9aca8ae0c0
Binary files /dev/null and b/storage/app/media/3.3/android-aab.png differ
diff --git a/storage/app/media/3.3/bistro-fbx.jpg b/storage/app/media/3.3/bistro-fbx.jpg
new file mode 100644
index 0000000000..5c7b07e57c
Binary files /dev/null and b/storage/app/media/3.3/bistro-fbx.jpg differ
diff --git a/storage/app/media/3.3/copy-paste.gif b/storage/app/media/3.3/copy-paste.gif
new file mode 100644
index 0000000000..f9aeb35f72
Binary files /dev/null and b/storage/app/media/3.3/copy-paste.gif differ
diff --git a/storage/app/media/3.3/gdscript-colors.gif b/storage/app/media/3.3/gdscript-colors.gif
new file mode 100644
index 0000000000..9ea0315f71
Binary files /dev/null and b/storage/app/media/3.3/gdscript-colors.gif differ
diff --git a/storage/app/media/3.3/graphedit-minimap.png b/storage/app/media/3.3/graphedit-minimap.png
new file mode 100644
index 0000000000..28cce4d21b
Binary files /dev/null and b/storage/app/media/3.3/graphedit-minimap.png differ
diff --git a/storage/app/media/3.3/import-defaults.png b/storage/app/media/3.3/import-defaults.png
new file mode 100644
index 0000000000..b6228db351
Binary files /dev/null and b/storage/app/media/3.3/import-defaults.png differ
diff --git a/storage/app/media/3.3/import-keep.png b/storage/app/media/3.3/import-keep.png
new file mode 100644
index 0000000000..63baa2279b
Binary files /dev/null and b/storage/app/media/3.3/import-keep.png differ
diff --git a/storage/app/media/3.3/infinite-3d-grid.png b/storage/app/media/3.3/infinite-3d-grid.png
new file mode 100644
index 0000000000..dce4c5eb0b
Binary files /dev/null and b/storage/app/media/3.3/infinite-3d-grid.png differ
diff --git a/storage/app/media/3.3/inspector-subresource.png b/storage/app/media/3.3/inspector-subresource.png
new file mode 100644
index 0000000000..a7f550b93f
Binary files /dev/null and b/storage/app/media/3.3/inspector-subresource.png differ
diff --git a/storage/app/media/3.3/macos-signing.png b/storage/app/media/3.3/macos-signing.png
new file mode 100644
index 0000000000..abdcb9766e
Binary files /dev/null and b/storage/app/media/3.3/macos-signing.png differ
diff --git a/storage/app/media/3.3/mono-output-panel.png b/storage/app/media/3.3/mono-output-panel.png
new file mode 100644
index 0000000000..1680d90d0d
Binary files /dev/null and b/storage/app/media/3.3/mono-output-panel.png differ
diff --git a/storage/app/media/3.3/new-lightmapper.png b/storage/app/media/3.3/new-lightmapper.png
new file mode 100644
index 0000000000..08677821c5
Binary files /dev/null and b/storage/app/media/3.3/new-lightmapper.png differ
diff --git a/storage/app/media/3.3/physics-tests-3d.png b/storage/app/media/3.3/physics-tests-3d.png
new file mode 100644
index 0000000000..d21e5c6c73
Binary files /dev/null and b/storage/app/media/3.3/physics-tests-3d.png differ
diff --git a/storage/app/media/3.3/scene-reload.png b/storage/app/media/3.3/scene-reload.png
new file mode 100644
index 0000000000..29c5110b5b
Binary files /dev/null and b/storage/app/media/3.3/scene-reload.png differ
diff --git a/storage/app/media/3.3/web-editor.png b/storage/app/media/3.3/web-editor.png
new file mode 100644
index 0000000000..6aa1ff053f
Binary files /dev/null and b/storage/app/media/3.3/web-editor.png differ
diff --git a/storage/app/media/3.3/web-export-options.png b/storage/app/media/3.3/web-export-options.png
new file mode 100644
index 0000000000..821c2104a9
Binary files /dev/null and b/storage/app/media/3.3/web-export-options.png differ
diff --git a/storage/app/media/3.4/aces-fitted.mp4 b/storage/app/media/3.4/aces-fitted.mp4
new file mode 100644
index 0000000000..8de2b23db8
Binary files /dev/null and b/storage/app/media/3.4/aces-fitted.mp4 differ
diff --git a/storage/app/media/3.4/csgpolygon.mp4 b/storage/app/media/3.4/csgpolygon.mp4
new file mode 100644
index 0000000000..e7d00a419f
Binary files /dev/null and b/storage/app/media/3.4/csgpolygon.mp4 differ
diff --git a/storage/app/media/3.4/portal-occlusion.mp4 b/storage/app/media/3.4/portal-occlusion.mp4
new file mode 100644
index 0000000000..a5958b1788
Binary files /dev/null and b/storage/app/media/3.4/portal-occlusion.mp4 differ
diff --git a/storage/app/media/3.4/reset-animation.mp4 b/storage/app/media/3.4/reset-animation.mp4
new file mode 100644
index 0000000000..532e8fb66c
Binary files /dev/null and b/storage/app/media/3.4/reset-animation.mp4 differ
diff --git a/storage/app/media/3.4/ring-emitter.mp4 b/storage/app/media/3.4/ring-emitter.mp4
new file mode 100644
index 0000000000..eca27fce46
Binary files /dev/null and b/storage/app/media/3.4/ring-emitter.mp4 differ
diff --git a/storage/app/media/3.5/enemy-material-slices.png b/storage/app/media/3.5/enemy-material-slices.png
new file mode 100644
index 0000000000..b1b6800b60
Binary files /dev/null and b/storage/app/media/3.5/enemy-material-slices.png differ
diff --git a/storage/app/media/3.5/enemy.png b/storage/app/media/3.5/enemy.png
new file mode 100644
index 0000000000..81caf7190e
Binary files /dev/null and b/storage/app/media/3.5/enemy.png differ
diff --git a/storage/app/media/3.5/flow.gif b/storage/app/media/3.5/flow.gif
new file mode 100644
index 0000000000..4a83433fb5
Binary files /dev/null and b/storage/app/media/3.5/flow.gif differ
diff --git a/storage/app/media/3.5/label3D.mp4 b/storage/app/media/3.5/label3D.mp4
new file mode 100644
index 0000000000..947cf5c25e
Binary files /dev/null and b/storage/app/media/3.5/label3D.mp4 differ
diff --git a/storage/app/media/3.5/navigation.mp4 b/storage/app/media/3.5/navigation.mp4
new file mode 100644
index 0000000000..ba11e4395c
Binary files /dev/null and b/storage/app/media/3.5/navigation.mp4 differ
diff --git a/storage/app/media/3.5/next_pass.png b/storage/app/media/3.5/next_pass.png
new file mode 100644
index 0000000000..d6bfcb2963
Binary files /dev/null and b/storage/app/media/3.5/next_pass.png differ
diff --git a/storage/app/media/3.5/occludershapepolygon.mp4 b/storage/app/media/3.5/occludershapepolygon.mp4
new file mode 100644
index 0000000000..cb306c6710
Binary files /dev/null and b/storage/app/media/3.5/occludershapepolygon.mp4 differ
diff --git a/storage/app/media/3.5/overlay.png b/storage/app/media/3.5/overlay.png
new file mode 100644
index 0000000000..84b8e9358b
Binary files /dev/null and b/storage/app/media/3.5/overlay.png differ
diff --git a/storage/app/media/3.5/override.png b/storage/app/media/3.5/override.png
new file mode 100644
index 0000000000..999972808c
Binary files /dev/null and b/storage/app/media/3.5/override.png differ
diff --git a/storage/app/media/3.5/selector.mp4 b/storage/app/media/3.5/selector.mp4
new file mode 100644
index 0000000000..bef206416c
Binary files /dev/null and b/storage/app/media/3.5/selector.mp4 differ
diff --git a/storage/app/media/4.0/16lights.mp4 b/storage/app/media/4.0/16lights.mp4
new file mode 100644
index 0000000000..c79f032391
Binary files /dev/null and b/storage/app/media/4.0/16lights.mp4 differ
diff --git a/storage/app/media/4.0/Doubles-on-GPU/double-emulated.mp4 b/storage/app/media/4.0/Doubles-on-GPU/double-emulated.mp4
new file mode 100644
index 0000000000..2436fa2eaa
Binary files /dev/null and b/storage/app/media/4.0/Doubles-on-GPU/double-emulated.mp4 differ
diff --git a/storage/app/media/4.0/Doubles-on-GPU/doubles-without-emulation.mp4 b/storage/app/media/4.0/Doubles-on-GPU/doubles-without-emulation.mp4
new file mode 100644
index 0000000000..b210ad751d
Binary files /dev/null and b/storage/app/media/4.0/Doubles-on-GPU/doubles-without-emulation.mp4 differ
diff --git a/storage/app/media/4.0/Doubles-on-GPU/origin.mp4 b/storage/app/media/4.0/Doubles-on-GPU/origin.mp4
new file mode 100644
index 0000000000..7edf638daa
Binary files /dev/null and b/storage/app/media/4.0/Doubles-on-GPU/origin.mp4 differ
diff --git a/storage/app/media/4.0/Doubles-on-GPU/single.mp4 b/storage/app/media/4.0/Doubles-on-GPU/single.mp4
new file mode 100644
index 0000000000..24331aaf03
Binary files /dev/null and b/storage/app/media/4.0/Doubles-on-GPU/single.mp4 differ
diff --git a/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 22-59-57.png b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 22-59-57.png
new file mode 100644
index 0000000000..8be122a5a9
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 22-59-57.png differ
diff --git a/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-00-05.png b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-00-05.png
new file mode 100644
index 0000000000..368c0509a0
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-00-05.png differ
diff --git a/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-05-28.png b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-05-28.png
new file mode 100644
index 0000000000..0f65e26843
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-05-28.png differ
diff --git a/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-11-24.png b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-11-24.png
new file mode 100644
index 0000000000..9078b08cf9
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-11-24.png differ
diff --git a/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-14-59.png b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-14-59.png
new file mode 100644
index 0000000000..f442661b35
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-14-59.png differ
diff --git a/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-15-12.png b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-15-12.png
new file mode 100644
index 0000000000..abeb69094b
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-15-12.png differ
diff --git a/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-17-36.png b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-17-36.png
new file mode 100644
index 0000000000..454b5a7541
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-17-36.png differ
diff --git a/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-26-18.png b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-26-18.png
new file mode 100644
index 0000000000..9ed482cbfd
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-26-18.png differ
diff --git a/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-26-33.png b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-26-33.png
new file mode 100644
index 0000000000..b9ae831ff9
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/Screenshot from 2022-06-30 23-26-33.png differ
diff --git a/storage/app/media/4.0/Fog Volumes/fog1.mp4 b/storage/app/media/4.0/Fog Volumes/fog1.mp4
new file mode 100644
index 0000000000..e71d3a7ee7
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/fog1.mp4 differ
diff --git a/storage/app/media/4.0/Fog Volumes/fog2.mp4 b/storage/app/media/4.0/Fog Volumes/fog2.mp4
new file mode 100644
index 0000000000..9cc7e3e54d
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/fog2.mp4 differ
diff --git a/storage/app/media/4.0/Fog Volumes/fog3.mp4 b/storage/app/media/4.0/Fog Volumes/fog3.mp4
new file mode 100644
index 0000000000..1b254ce2e5
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/fog3.mp4 differ
diff --git a/storage/app/media/4.0/Fog Volumes/fog4.mp4 b/storage/app/media/4.0/Fog Volumes/fog4.mp4
new file mode 100644
index 0000000000..455a38f992
Binary files /dev/null and b/storage/app/media/4.0/Fog Volumes/fog4.mp4 differ
diff --git a/storage/app/media/4.0/Shaders/BillboardVSNode.gif b/storage/app/media/4.0/Shaders/BillboardVSNode.gif
new file mode 100644
index 0000000000..93d4073ceb
Binary files /dev/null and b/storage/app/media/4.0/Shaders/BillboardVSNode.gif differ
diff --git a/storage/app/media/4.0/Shaders/MultiplyAddVSNode.png b/storage/app/media/4.0/Shaders/MultiplyAddVSNode.png
new file mode 100644
index 0000000000..4249c4e546
Binary files /dev/null and b/storage/app/media/4.0/Shaders/MultiplyAddVSNode.png differ
diff --git a/storage/app/media/4.0/Shaders/ShaderWarnings.gif b/storage/app/media/4.0/Shaders/ShaderWarnings.gif
new file mode 100644
index 0000000000..faedfb239f
Binary files /dev/null and b/storage/app/media/4.0/Shaders/ShaderWarnings.gif differ
diff --git a/storage/app/media/4.0/Shaders/ShaderWarningsSettings.png b/storage/app/media/4.0/Shaders/ShaderWarningsSettings.png
new file mode 100644
index 0000000000..f1db2aa11e
Binary files /dev/null and b/storage/app/media/4.0/Shaders/ShaderWarningsSettings.png differ
diff --git a/storage/app/media/4.0/Shaders/float_constant.gif b/storage/app/media/4.0/Shaders/float_constant.gif
new file mode 100644
index 0000000000..9088016883
Binary files /dev/null and b/storage/app/media/4.0/Shaders/float_constant.gif differ
diff --git a/storage/app/media/4.0/Shaders/shader_dialog.png b/storage/app/media/4.0/Shaders/shader_dialog.png
new file mode 100644
index 0000000000..2c381f67d7
Binary files /dev/null and b/storage/app/media/4.0/Shaders/shader_dialog.png differ
diff --git a/storage/app/media/4.0/Shaders/shader_tooltips.png b/storage/app/media/4.0/Shaders/shader_tooltips.png
new file mode 100644
index 0000000000..bc846664c5
Binary files /dev/null and b/storage/app/media/4.0/Shaders/shader_tooltips.png differ
diff --git a/storage/app/media/4.0/Shaders/shader_uniform_array.gif b/storage/app/media/4.0/Shaders/shader_uniform_array.gif
new file mode 100644
index 0000000000..dfeaec935c
Binary files /dev/null and b/storage/app/media/4.0/Shaders/shader_uniform_array.gif differ
diff --git a/storage/app/media/4.0/Shaders/shader_varyings.png b/storage/app/media/4.0/Shaders/shader_varyings.png
new file mode 100644
index 0000000000..2eea975123
Binary files /dev/null and b/storage/app/media/4.0/Shaders/shader_varyings.png differ
diff --git a/storage/app/media/4.0/Shaders/vs_accel.gif b/storage/app/media/4.0/Shaders/vs_accel.gif
new file mode 100644
index 0000000000..6e4712e87d
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_accel.gif differ
diff --git a/storage/app/media/4.0/Shaders/vs_code_window.png b/storage/app/media/4.0/Shaders/vs_code_window.png
new file mode 100644
index 0000000000..8b7fb7c216
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_code_window.png differ
diff --git a/storage/app/media/4.0/Shaders/vs_collide.gif b/storage/app/media/4.0/Shaders/vs_collide.gif
new file mode 100644
index 0000000000..a90c27c22f
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_collide.gif differ
diff --git a/storage/app/media/4.0/Shaders/vs_comment.gif b/storage/app/media/4.0/Shaders/vs_comment.gif
new file mode 100644
index 0000000000..7a1c7096af
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_comment.gif differ
diff --git a/storage/app/media/4.0/Shaders/vs_cone_velocity.gif b/storage/app/media/4.0/Shaders/vs_cone_velocity.gif
new file mode 100644
index 0000000000..1b51435953
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_cone_velocity.gif differ
diff --git a/storage/app/media/4.0/Shaders/vs_context_menu.gif b/storage/app/media/4.0/Shaders/vs_context_menu.gif
new file mode 100644
index 0000000000..ec3e894b5b
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_context_menu.gif differ
diff --git a/storage/app/media/4.0/Shaders/vs_context_menu2.gif b/storage/app/media/4.0/Shaders/vs_context_menu2.gif
new file mode 100644
index 0000000000..ebf9822f23
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_context_menu2.gif differ
diff --git a/storage/app/media/4.0/Shaders/vs_curve.gif b/storage/app/media/4.0/Shaders/vs_curve.gif
new file mode 100644
index 0000000000..033484299d
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_curve.gif differ
diff --git a/storage/app/media/4.0/Shaders/vs_curve2.gif b/storage/app/media/4.0/Shaders/vs_curve2.gif
new file mode 100644
index 0000000000..2c29e70969
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_curve2.gif differ
diff --git a/storage/app/media/4.0/Shaders/vs_custom.png b/storage/app/media/4.0/Shaders/vs_custom.png
new file mode 100644
index 0000000000..add37eb71b
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_custom.png differ
diff --git a/storage/app/media/4.0/Shaders/vs_fog_shader.png b/storage/app/media/4.0/Shaders/vs_fog_shader.png
new file mode 100644
index 0000000000..93a24c53f3
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_fog_shader.png differ
diff --git a/storage/app/media/4.0/Shaders/vs_integer_nodes.png b/storage/app/media/4.0/Shaders/vs_integer_nodes.png
new file mode 100644
index 0000000000..1db4c62f13
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_integer_nodes.png differ
diff --git a/storage/app/media/4.0/Shaders/vs_random.gif b/storage/app/media/4.0/Shaders/vs_random.gif
new file mode 100644
index 0000000000..925d7240f3
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_random.gif differ
diff --git a/storage/app/media/4.0/Shaders/vs_ring_emitter.gif b/storage/app/media/4.0/Shaders/vs_ring_emitter.gif
new file mode 100644
index 0000000000..cffb37eb0c
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_ring_emitter.gif differ
diff --git a/storage/app/media/4.0/Shaders/vs_sdf.png b/storage/app/media/4.0/Shaders/vs_sdf.png
new file mode 100644
index 0000000000..f9b548c39a
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_sdf.png differ
diff --git a/storage/app/media/4.0/Shaders/vs_sky_shader.png b/storage/app/media/4.0/Shaders/vs_sky_shader.png
new file mode 100644
index 0000000000..6aa44c6c52
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_sky_shader.png differ
diff --git a/storage/app/media/4.0/Shaders/vs_texture3d.png b/storage/app/media/4.0/Shaders/vs_texture3d.png
new file mode 100644
index 0000000000..492ad1195f
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_texture3d.png differ
diff --git a/storage/app/media/4.0/Shaders/vs_uniform_props.png b/storage/app/media/4.0/Shaders/vs_uniform_props.png
new file mode 100644
index 0000000000..3b396ebb73
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_uniform_props.png differ
diff --git a/storage/app/media/4.0/Shaders/vs_uniformref.gif b/storage/app/media/4.0/Shaders/vs_uniformref.gif
new file mode 100644
index 0000000000..38dce5fe7b
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_uniformref.gif differ
diff --git a/storage/app/media/4.0/Shaders/vs_uvfunc.gif b/storage/app/media/4.0/Shaders/vs_uvfunc.gif
new file mode 100644
index 0000000000..7949b89f99
Binary files /dev/null and b/storage/app/media/4.0/Shaders/vs_uvfunc.gif differ
diff --git a/storage/app/media/4.0/Shaders/wheel.gif b/storage/app/media/4.0/Shaders/wheel.gif
new file mode 100644
index 0000000000..5c9c7dac37
Binary files /dev/null and b/storage/app/media/4.0/Shaders/wheel.gif differ
diff --git a/storage/app/media/4.0/Sky-Shaders/Dusk-sky-shader.png b/storage/app/media/4.0/Sky-Shaders/Dusk-sky-shader.png
new file mode 100644
index 0000000000..cc3be00e8c
Binary files /dev/null and b/storage/app/media/4.0/Sky-Shaders/Dusk-sky-shader.png differ
diff --git a/storage/app/media/4.0/Sky-Shaders/Godot4-sky-shaders-clouds.png b/storage/app/media/4.0/Sky-Shaders/Godot4-sky-shaders-clouds.png
new file mode 100644
index 0000000000..fc6c939a74
Binary files /dev/null and b/storage/app/media/4.0/Sky-Shaders/Godot4-sky-shaders-clouds.png differ
diff --git a/storage/app/media/4.0/Sky-Shaders/Godot4-sky-shaders-cubemap.png b/storage/app/media/4.0/Sky-Shaders/Godot4-sky-shaders-cubemap.png
new file mode 100644
index 0000000000..27c91082e1
Binary files /dev/null and b/storage/app/media/4.0/Sky-Shaders/Godot4-sky-shaders-cubemap.png differ
diff --git a/storage/app/media/4.0/Sky-Shaders/Godot4-sky-shaders-nebula.png b/storage/app/media/4.0/Sky-Shaders/Godot4-sky-shaders-nebula.png
new file mode 100644
index 0000000000..a0fb60b03a
Binary files /dev/null and b/storage/app/media/4.0/Sky-Shaders/Godot4-sky-shaders-nebula.png differ
diff --git a/storage/app/media/4.0/Sky-Shaders/Godot4-sky-shaders.png b/storage/app/media/4.0/Sky-Shaders/Godot4-sky-shaders.png
new file mode 100644
index 0000000000..d57f31f8fb
Binary files /dev/null and b/storage/app/media/4.0/Sky-Shaders/Godot4-sky-shaders.png differ
diff --git a/storage/app/media/4.0/animation-retargeting/nice2meetu.mp4 b/storage/app/media/4.0/animation-retargeting/nice2meetu.mp4
new file mode 100644
index 0000000000..24d5b12631
Binary files /dev/null and b/storage/app/media/4.0/animation-retargeting/nice2meetu.mp4 differ
diff --git a/storage/app/media/4.0/animation-retargeting/retarget_demo01.mp4 b/storage/app/media/4.0/animation-retargeting/retarget_demo01.mp4
new file mode 100644
index 0000000000..351c51b409
Binary files /dev/null and b/storage/app/media/4.0/animation-retargeting/retarget_demo01.mp4 differ
diff --git a/storage/app/media/4.0/animation-retargeting/retarget_demo02.mp4 b/storage/app/media/4.0/animation-retargeting/retarget_demo02.mp4
new file mode 100644
index 0000000000..d3520407d1
Binary files /dev/null and b/storage/app/media/4.0/animation-retargeting/retarget_demo02.mp4 differ
diff --git a/storage/app/media/4.0/animation-retargeting/retarget_demo03.mp4 b/storage/app/media/4.0/animation-retargeting/retarget_demo03.mp4
new file mode 100644
index 0000000000..44d00a15f4
Binary files /dev/null and b/storage/app/media/4.0/animation-retargeting/retarget_demo03.mp4 differ
diff --git a/storage/app/media/4.0/animation-retargeting/retarget_demo04.mp4 b/storage/app/media/4.0/animation-retargeting/retarget_demo04.mp4
new file mode 100644
index 0000000000..e44b077ef1
Binary files /dev/null and b/storage/app/media/4.0/animation-retargeting/retarget_demo04.mp4 differ
diff --git a/storage/app/media/4.0/beta1/editor-3d-import.mp4 b/storage/app/media/4.0/beta1/editor-3d-import.mp4
new file mode 100644
index 0000000000..a5d605bb59
Binary files /dev/null and b/storage/app/media/4.0/beta1/editor-3d-import.mp4 differ
diff --git a/storage/app/media/4.0/beta1/editor-tiles.mp4 b/storage/app/media/4.0/beta1/editor-tiles.mp4
new file mode 100644
index 0000000000..2a35ac7534
Binary files /dev/null and b/storage/app/media/4.0/beta1/editor-tiles.mp4 differ
diff --git a/storage/app/media/4.0/beta1/physics-balls.mp4 b/storage/app/media/4.0/beta1/physics-balls.mp4
new file mode 100644
index 0000000000..88d619e48b
Binary files /dev/null and b/storage/app/media/4.0/beta1/physics-balls.mp4 differ
diff --git a/storage/app/media/4.0/beta1/rendering-clouds.mp4 b/storage/app/media/4.0/beta1/rendering-clouds.mp4
new file mode 100644
index 0000000000..bea43e5afb
Binary files /dev/null and b/storage/app/media/4.0/beta1/rendering-clouds.mp4 differ
diff --git a/storage/app/media/4.0/beta1/rendering-reflections.mp4 b/storage/app/media/4.0/beta1/rendering-reflections.mp4
new file mode 100644
index 0000000000..cead394f50
Binary files /dev/null and b/storage/app/media/4.0/beta1/rendering-reflections.mp4 differ
diff --git a/storage/app/media/4.0/beta1/scripting-gdscript.mp4 b/storage/app/media/4.0/beta1/scripting-gdscript.mp4
new file mode 100644
index 0000000000..2ea3e1f7d7
Binary files /dev/null and b/storage/app/media/4.0/beta1/scripting-gdscript.mp4 differ
diff --git a/storage/app/media/4.0/beta1/text-rtl-support.png b/storage/app/media/4.0/beta1/text-rtl-support.png
new file mode 100644
index 0000000000..698620f62d
Binary files /dev/null and b/storage/app/media/4.0/beta1/text-rtl-support.png differ
diff --git a/storage/app/media/4.0/beta1/vshaders-butterflies.mp4 b/storage/app/media/4.0/beta1/vshaders-butterflies.mp4
new file mode 100644
index 0000000000..a4683b45ee
Binary files /dev/null and b/storage/app/media/4.0/beta1/vshaders-butterflies.mp4 differ
diff --git a/storage/app/media/4.0/beta9-new-project-dialog.png b/storage/app/media/4.0/beta9-new-project-dialog.png
new file mode 100644
index 0000000000..5b5d6591b4
Binary files /dev/null and b/storage/app/media/4.0/beta9-new-project-dialog.png differ
diff --git a/storage/app/media/4.0/cgroup1.mp4 b/storage/app/media/4.0/cgroup1.mp4
new file mode 100644
index 0000000000..0973f03004
Binary files /dev/null and b/storage/app/media/4.0/cgroup1.mp4 differ
diff --git a/storage/app/media/4.0/cgroup2.mp4 b/storage/app/media/4.0/cgroup2.mp4
new file mode 100644
index 0000000000..fa6115be35
Binary files /dev/null and b/storage/app/media/4.0/cgroup2.mp4 differ
diff --git a/storage/app/media/4.0/dl2.mp4 b/storage/app/media/4.0/dl2.mp4
new file mode 100644
index 0000000000..c31544cdc3
Binary files /dev/null and b/storage/app/media/4.0/dl2.mp4 differ
diff --git a/storage/app/media/4.0/gg2.mp4 b/storage/app/media/4.0/gg2.mp4
new file mode 100644
index 0000000000..19b9b15a08
Binary files /dev/null and b/storage/app/media/4.0/gg2.mp4 differ
diff --git a/storage/app/media/4.0/leak_free_gi.mp4 b/storage/app/media/4.0/leak_free_gi.mp4
new file mode 100644
index 0000000000..225bf70c88
Binary files /dev/null and b/storage/app/media/4.0/leak_free_gi.mp4 differ
diff --git a/storage/app/media/4.0/multicaret.mp4 b/storage/app/media/4.0/multicaret.mp4
new file mode 100644
index 0000000000..9b2ea5b978
Binary files /dev/null and b/storage/app/media/4.0/multicaret.mp4 differ
diff --git a/storage/app/media/4.0/particles/attractor.mp4 b/storage/app/media/4.0/particles/attractor.mp4
new file mode 100644
index 0000000000..fe9c8d2f8e
Binary files /dev/null and b/storage/app/media/4.0/particles/attractor.mp4 differ
diff --git a/storage/app/media/4.0/particles/fog.mp4 b/storage/app/media/4.0/particles/fog.mp4
new file mode 100644
index 0000000000..5c5ab1b524
Binary files /dev/null and b/storage/app/media/4.0/particles/fog.mp4 differ
diff --git a/storage/app/media/4.0/particles/heightmap.mp4 b/storage/app/media/4.0/particles/heightmap.mp4
new file mode 100644
index 0000000000..d15b6c0e5f
Binary files /dev/null and b/storage/app/media/4.0/particles/heightmap.mp4 differ
diff --git a/storage/app/media/4.0/particles/pcol.mp4 b/storage/app/media/4.0/particles/pcol.mp4
new file mode 100644
index 0000000000..f1549309ad
Binary files /dev/null and b/storage/app/media/4.0/particles/pcol.mp4 differ
diff --git a/storage/app/media/4.0/particles/sdf_collision.mp4 b/storage/app/media/4.0/particles/sdf_collision.mp4
new file mode 100644
index 0000000000..9ff3cf6a32
Binary files /dev/null and b/storage/app/media/4.0/particles/sdf_collision.mp4 differ
diff --git a/storage/app/media/4.0/particles/sdf_particles.mp4 b/storage/app/media/4.0/particles/sdf_particles.mp4
new file mode 100644
index 0000000000..01fc1dc9c1
Binary files /dev/null and b/storage/app/media/4.0/particles/sdf_particles.mp4 differ
diff --git a/storage/app/media/4.0/particles/sdfs.mp4 b/storage/app/media/4.0/particles/sdfs.mp4
new file mode 100644
index 0000000000..3e3891c738
Binary files /dev/null and b/storage/app/media/4.0/particles/sdfs.mp4 differ
diff --git a/storage/app/media/4.0/particles/sub_emitter.mp4 b/storage/app/media/4.0/particles/sub_emitter.mp4
new file mode 100644
index 0000000000..1741fccd7e
Binary files /dev/null and b/storage/app/media/4.0/particles/sub_emitter.mp4 differ
diff --git a/storage/app/media/4.0/particles/window.mp4 b/storage/app/media/4.0/particles/window.mp4
new file mode 100644
index 0000000000..31410323b4
Binary files /dev/null and b/storage/app/media/4.0/particles/window.mp4 differ
diff --git a/storage/app/media/4.0/realtime_light.mp4 b/storage/app/media/4.0/realtime_light.mp4
new file mode 100644
index 0000000000..3dfe297663
Binary files /dev/null and b/storage/app/media/4.0/realtime_light.mp4 differ
diff --git a/storage/app/media/4.0/vrm_gltf_2_0_extensions_2_sp_go.mp4 b/storage/app/media/4.0/vrm_gltf_2_0_extensions_2_sp_go.mp4
new file mode 100644
index 0000000000..e23d7f3e96
Binary files /dev/null and b/storage/app/media/4.0/vrm_gltf_2_0_extensions_2_sp_go.mp4 differ
diff --git a/storage/app/media/GodotTools_Code_Snippet.png b/storage/app/media/GodotTools_Code_Snippet.png
new file mode 100644
index 0000000000..0fd0f0314e
Binary files /dev/null and b/storage/app/media/GodotTools_Code_Snippet.png differ
diff --git a/storage/app/media/MOSS 2018 - Godot Editor on the Web - Prototype usage.pdf b/storage/app/media/MOSS 2018 - Godot Editor on the Web - Prototype usage.pdf
new file mode 100644
index 0000000000..614ccf9e61
Binary files /dev/null and b/storage/app/media/MOSS 2018 - Godot Editor on the Web - Prototype usage.pdf differ
diff --git a/storage/app/media/SceneTreeLayout-Alternative.png b/storage/app/media/SceneTreeLayout-Alternative.png
new file mode 100644
index 0000000000..6c6d0a0303
Binary files /dev/null and b/storage/app/media/SceneTreeLayout-Alternative.png differ
diff --git a/storage/app/media/Screenshot from 2018-08-03 15-31-45.png b/storage/app/media/Screenshot from 2018-08-03 15-31-45.png
new file mode 100644
index 0000000000..305df9bc0e
Binary files /dev/null and b/storage/app/media/Screenshot from 2018-08-03 15-31-45.png differ
diff --git a/storage/app/media/Screenshot_2021-06-30_22-03-08.png b/storage/app/media/Screenshot_2021-06-30_22-03-08.png
new file mode 100644
index 0000000000..7ab4b92de7
Binary files /dev/null and b/storage/app/media/Screenshot_2021-06-30_22-03-08.png differ
diff --git a/storage/app/media/SkyOfSteel_REPL_Android.png b/storage/app/media/SkyOfSteel_REPL_Android.png
new file mode 100644
index 0000000000..c3d7fadc08
Binary files /dev/null and b/storage/app/media/SkyOfSteel_REPL_Android.png differ
diff --git a/storage/app/media/antialias.mp4 b/storage/app/media/antialias.mp4
new file mode 100644
index 0000000000..d160532c0c
Binary files /dev/null and b/storage/app/media/antialias.mp4 differ
diff --git a/storage/app/media/bokeh.mp4 b/storage/app/media/bokeh.mp4
new file mode 100644
index 0000000000..14ee54f5bf
Binary files /dev/null and b/storage/app/media/bokeh.mp4 differ
diff --git a/storage/app/media/branch.png b/storage/app/media/branch.png
new file mode 100644
index 0000000000..9efaac5fef
Binary files /dev/null and b/storage/app/media/branch.png differ
diff --git a/storage/app/media/cropped-images/GLTF2 Exporter Screenshot 2021-01-03 103926-0-0-0-0-1609701175.png b/storage/app/media/cropped-images/GLTF2 Exporter Screenshot 2021-01-03 103926-0-0-0-0-1609701175.png
new file mode 100644
index 0000000000..e848745a06
Binary files /dev/null and b/storage/app/media/cropped-images/GLTF2 Exporter Screenshot 2021-01-03 103926-0-0-0-0-1609701175.png differ
diff --git a/storage/app/media/cropped-images/GLTF2 Exporter Screenshot 2021-01-03 103926-0-0-0-0-1609701236.png b/storage/app/media/cropped-images/GLTF2 Exporter Screenshot 2021-01-03 103926-0-0-0-0-1609701236.png
new file mode 100644
index 0000000000..07be12f5ac
Binary files /dev/null and b/storage/app/media/cropped-images/GLTF2 Exporter Screenshot 2021-01-03 103926-0-0-0-0-1609701236.png differ
diff --git a/storage/app/media/cropped-images/test scene nvidia orca-4-62-1916-1345-1604579115.png b/storage/app/media/cropped-images/test scene nvidia orca-4-62-1916-1345-1604579115.png
new file mode 100644
index 0000000000..ab2a52ef55
Binary files /dev/null and b/storage/app/media/cropped-images/test scene nvidia orca-4-62-1916-1345-1604579115.png differ
diff --git a/storage/app/media/csg/csg1.png b/storage/app/media/csg/csg1.png
new file mode 100644
index 0000000000..e7e6b5a8d9
Binary files /dev/null and b/storage/app/media/csg/csg1.png differ
diff --git a/storage/app/media/csg/csg2.png b/storage/app/media/csg/csg2.png
new file mode 100644
index 0000000000..a94dff133a
Binary files /dev/null and b/storage/app/media/csg/csg2.png differ
diff --git a/storage/app/media/csg/csg3.png b/storage/app/media/csg/csg3.png
new file mode 100644
index 0000000000..f6e09c4729
Binary files /dev/null and b/storage/app/media/csg/csg3.png differ
diff --git a/storage/app/media/csg/csg4.png b/storage/app/media/csg/csg4.png
new file mode 100644
index 0000000000..a2a18b0336
Binary files /dev/null and b/storage/app/media/csg/csg4.png differ
diff --git a/storage/app/media/csg/csg5.png b/storage/app/media/csg/csg5.png
new file mode 100644
index 0000000000..6e827563f5
Binary files /dev/null and b/storage/app/media/csg/csg5.png differ
diff --git a/storage/app/media/csg/csg7.gif b/storage/app/media/csg/csg7.gif
new file mode 100644
index 0000000000..26e073effa
Binary files /dev/null and b/storage/app/media/csg/csg7.gif differ
diff --git a/storage/app/media/dae_import/bce_config_options.png b/storage/app/media/dae_import/bce_config_options.png
new file mode 100644
index 0000000000..780cc719f3
Binary files /dev/null and b/storage/app/media/dae_import/bce_config_options.png differ
diff --git a/storage/app/media/dae_import/bce_config_presets.png b/storage/app/media/dae_import/bce_config_presets.png
new file mode 100644
index 0000000000..fd76081e67
Binary files /dev/null and b/storage/app/media/dae_import/bce_config_presets.png differ
diff --git a/storage/app/media/dae_import/better_collada_download.png b/storage/app/media/dae_import/better_collada_download.png
new file mode 100644
index 0000000000..a3e5d14139
Binary files /dev/null and b/storage/app/media/dae_import/better_collada_download.png differ
diff --git a/storage/app/media/dae_import/better_collada_install_mac1.png b/storage/app/media/dae_import/better_collada_install_mac1.png
new file mode 100644
index 0000000000..e3c04a398d
Binary files /dev/null and b/storage/app/media/dae_import/better_collada_install_mac1.png differ
diff --git a/storage/app/media/dae_import/better_collada_install_mac2.png b/storage/app/media/dae_import/better_collada_install_mac2.png
new file mode 100644
index 0000000000..9dc3308477
Binary files /dev/null and b/storage/app/media/dae_import/better_collada_install_mac2.png differ
diff --git a/storage/app/media/dae_import/better_collada_install_windows.png b/storage/app/media/dae_import/better_collada_install_windows.png
new file mode 100644
index 0000000000..19fed502e2
Binary files /dev/null and b/storage/app/media/dae_import/better_collada_install_windows.png differ
diff --git a/storage/app/media/dae_import/blender_addons.png b/storage/app/media/dae_import/blender_addons.png
new file mode 100644
index 0000000000..de452ae681
Binary files /dev/null and b/storage/app/media/dae_import/blender_addons.png differ
diff --git a/storage/app/media/dae_import/blender_export_bce.png b/storage/app/media/dae_import/blender_export_bce.png
new file mode 100644
index 0000000000..42e6dc7e04
Binary files /dev/null and b/storage/app/media/dae_import/blender_export_bce.png differ
diff --git a/storage/app/media/dae_import/blender_preferences.png b/storage/app/media/dae_import/blender_preferences.png
new file mode 100644
index 0000000000..7e21ba4b2f
Binary files /dev/null and b/storage/app/media/dae_import/blender_preferences.png differ
diff --git a/storage/app/media/dae_import/cube_dude.png b/storage/app/media/dae_import/cube_dude.png
new file mode 100644
index 0000000000..ea2ab87d4e
Binary files /dev/null and b/storage/app/media/dae_import/cube_dude.png differ
diff --git a/storage/app/media/dae_import/cube_dude.zip b/storage/app/media/dae_import/cube_dude.zip
new file mode 100644
index 0000000000..ee9c728e50
Binary files /dev/null and b/storage/app/media/dae_import/cube_dude.zip differ
diff --git a/storage/app/media/dae_import/cube_dude_dae.png b/storage/app/media/dae_import/cube_dude_dae.png
new file mode 100644
index 0000000000..583fbf9b2d
Binary files /dev/null and b/storage/app/media/dae_import/cube_dude_dae.png differ
diff --git a/storage/app/media/dae_import/cube_dude_export.png b/storage/app/media/dae_import/cube_dude_export.png
new file mode 100644
index 0000000000..b87299cc25
Binary files /dev/null and b/storage/app/media/dae_import/cube_dude_export.png differ
diff --git a/storage/app/media/dae_import/godot_add_material.png b/storage/app/media/dae_import/godot_add_material.png
new file mode 100644
index 0000000000..35ba56c766
Binary files /dev/null and b/storage/app/media/dae_import/godot_add_material.png differ
diff --git a/storage/app/media/dae_import/godot_add_textures.png b/storage/app/media/dae_import/godot_add_textures.png
new file mode 100644
index 0000000000..8555d2c998
Binary files /dev/null and b/storage/app/media/dae_import/godot_add_textures.png differ
diff --git a/storage/app/media/dae_import/godot_after_import.gif b/storage/app/media/dae_import/godot_after_import.gif
new file mode 100644
index 0000000000..c2f17036b0
Binary files /dev/null and b/storage/app/media/dae_import/godot_after_import.gif differ
diff --git a/storage/app/media/dae_import/godot_animated_model.gif b/storage/app/media/dae_import/godot_animated_model.gif
new file mode 100644
index 0000000000..36c1650125
Binary files /dev/null and b/storage/app/media/dae_import/godot_animated_model.gif differ
diff --git a/storage/app/media/dae_import/godot_animations1.png b/storage/app/media/dae_import/godot_animations1.png
new file mode 100644
index 0000000000..6a5e642ae7
Binary files /dev/null and b/storage/app/media/dae_import/godot_animations1.png differ
diff --git a/storage/app/media/dae_import/godot_animations2.png b/storage/app/media/dae_import/godot_animations2.png
new file mode 100644
index 0000000000..e2752b48ef
Binary files /dev/null and b/storage/app/media/dae_import/godot_animations2.png differ
diff --git a/storage/app/media/dae_import/godot_create_project.png b/storage/app/media/dae_import/godot_create_project.png
new file mode 100644
index 0000000000..349c95dcb3
Binary files /dev/null and b/storage/app/media/dae_import/godot_create_project.png differ
diff --git a/storage/app/media/dae_import/godot_import_dae.png b/storage/app/media/dae_import/godot_import_dae.png
new file mode 100644
index 0000000000..e294cb230e
Binary files /dev/null and b/storage/app/media/dae_import/godot_import_dae.png differ
diff --git a/storage/app/media/dae_import/godot_play.png b/storage/app/media/dae_import/godot_play.png
new file mode 100644
index 0000000000..959437e68f
Binary files /dev/null and b/storage/app/media/dae_import/godot_play.png differ
diff --git a/storage/app/media/debug-panel.mp4 b/storage/app/media/debug-panel.mp4
new file mode 100644
index 0000000000..125ebfdf00
Binary files /dev/null and b/storage/app/media/debug-panel.mp4 differ
diff --git a/storage/app/media/devlog/animation-retargeting/nice2meetu.webp b/storage/app/media/devlog/animation-retargeting/nice2meetu.webp
new file mode 100644
index 0000000000..3f780bd43f
Binary files /dev/null and b/storage/app/media/devlog/animation-retargeting/nice2meetu.webp differ
diff --git a/storage/app/media/devlog/animation-retargeting/retarget_demo01.webp b/storage/app/media/devlog/animation-retargeting/retarget_demo01.webp
new file mode 100644
index 0000000000..aff6497eb8
Binary files /dev/null and b/storage/app/media/devlog/animation-retargeting/retarget_demo01.webp differ
diff --git a/storage/app/media/devlog/animation-retargeting/retarget_demo02.webp b/storage/app/media/devlog/animation-retargeting/retarget_demo02.webp
new file mode 100644
index 0000000000..5e133be5df
Binary files /dev/null and b/storage/app/media/devlog/animation-retargeting/retarget_demo02.webp differ
diff --git a/storage/app/media/devlog/animation-retargeting/retarget_demo03.webp b/storage/app/media/devlog/animation-retargeting/retarget_demo03.webp
new file mode 100644
index 0000000000..6306b36caf
Binary files /dev/null and b/storage/app/media/devlog/animation-retargeting/retarget_demo03.webp differ
diff --git a/storage/app/media/devlog/animation-retargeting/retarget_demo04.webp b/storage/app/media/devlog/animation-retargeting/retarget_demo04.webp
new file mode 100644
index 0000000000..ad9b1d568f
Binary files /dev/null and b/storage/app/media/devlog/animation-retargeting/retarget_demo04.webp differ
diff --git a/storage/app/media/devlog/dl_image4.png b/storage/app/media/devlog/dl_image4.png
new file mode 100644
index 0000000000..01dad9b7c1
Binary files /dev/null and b/storage/app/media/devlog/dl_image4.png differ
diff --git a/storage/app/media/devlog/extensions/Help example.png b/storage/app/media/devlog/extensions/Help example.png
new file mode 100644
index 0000000000..ad2918e396
Binary files /dev/null and b/storage/app/media/devlog/extensions/Help example.png differ
diff --git a/storage/app/media/devlog/extensions/Select Example.png b/storage/app/media/devlog/extensions/Select Example.png
new file mode 100644
index 0000000000..44892dd41e
Binary files /dev/null and b/storage/app/media/devlog/extensions/Select Example.png differ
diff --git a/storage/app/media/devlog/image/dl_image.png b/storage/app/media/devlog/image/dl_image.png
new file mode 100644
index 0000000000..2d185a646e
Binary files /dev/null and b/storage/app/media/devlog/image/dl_image.png differ
diff --git a/storage/app/media/devlog/image/dl_image2.png b/storage/app/media/devlog/image/dl_image2.png
new file mode 100644
index 0000000000..a58da30fef
Binary files /dev/null and b/storage/app/media/devlog/image/dl_image2.png differ
diff --git a/storage/app/media/devlog/image/dl_image3.png b/storage/app/media/devlog/image/dl_image3.png
new file mode 100644
index 0000000000..c5d0098ab7
Binary files /dev/null and b/storage/app/media/devlog/image/dl_image3.png differ
diff --git a/storage/app/media/devlog/image/dl_image5.png b/storage/app/media/devlog/image/dl_image5.png
new file mode 100644
index 0000000000..aff343f6fb
Binary files /dev/null and b/storage/app/media/devlog/image/dl_image5.png differ
diff --git a/storage/app/media/devlog/image/dl_image6.png b/storage/app/media/devlog/image/dl_image6.png
new file mode 100644
index 0000000000..01a91b9779
Binary files /dev/null and b/storage/app/media/devlog/image/dl_image6.png differ
diff --git a/storage/app/media/devlog/image/dl_image7.png b/storage/app/media/devlog/image/dl_image7.png
new file mode 100644
index 0000000000..d0f3abbeff
Binary files /dev/null and b/storage/app/media/devlog/image/dl_image7.png differ
diff --git a/storage/app/media/devlog/input_mapping/deadzone.png b/storage/app/media/devlog/input_mapping/deadzone.png
new file mode 100644
index 0000000000..04a4937149
Binary files /dev/null and b/storage/app/media/devlog/input_mapping/deadzone.png differ
diff --git a/storage/app/media/devlog/progress1/progress_1_atlas.png b/storage/app/media/devlog/progress1/progress_1_atlas.png
new file mode 100644
index 0000000000..a279906c57
Binary files /dev/null and b/storage/app/media/devlog/progress1/progress_1_atlas.png differ
diff --git a/storage/app/media/devlog/progress1/progress_1_glsl.png b/storage/app/media/devlog/progress1/progress_1_glsl.png
new file mode 100644
index 0000000000..060e79ebe6
Binary files /dev/null and b/storage/app/media/devlog/progress1/progress_1_glsl.png differ
diff --git a/storage/app/media/devlog/progress1/progress_1_lighting.png b/storage/app/media/devlog/progress1/progress_1_lighting.png
new file mode 100644
index 0000000000..43419fa6c2
Binary files /dev/null and b/storage/app/media/devlog/progress1/progress_1_lighting.png differ
diff --git a/storage/app/media/devlog/progress1/progress_1_material.png b/storage/app/media/devlog/progress1/progress_1_material.png
new file mode 100644
index 0000000000..24edcb6bf8
Binary files /dev/null and b/storage/app/media/devlog/progress1/progress_1_material.png differ
diff --git a/storage/app/media/devlog/progress1/progress_1_pbr.png b/storage/app/media/devlog/progress1/progress_1_pbr.png
new file mode 100644
index 0000000000..a225c64536
Binary files /dev/null and b/storage/app/media/devlog/progress1/progress_1_pbr.png differ
diff --git a/storage/app/media/devlog/progress1/progress_1_ubo.png b/storage/app/media/devlog/progress1/progress_1_ubo.png
new file mode 100644
index 0000000000..ba35daedf0
Binary files /dev/null and b/storage/app/media/devlog/progress1/progress_1_ubo.png differ
diff --git a/storage/app/media/devlog/progress1/progress_1_ubo2.png b/storage/app/media/devlog/progress1/progress_1_ubo2.png
new file mode 100644
index 0000000000..fc744774a3
Binary files /dev/null and b/storage/app/media/devlog/progress1/progress_1_ubo2.png differ
diff --git a/storage/app/media/devlog/progress1/progress_1_visual_server.png b/storage/app/media/devlog/progress1/progress_1_visual_server.png
new file mode 100644
index 0000000000..37c537893e
Binary files /dev/null and b/storage/app/media/devlog/progress1/progress_1_visual_server.png differ
diff --git a/storage/app/media/devlog/progress2/pr2-1.png b/storage/app/media/devlog/progress2/pr2-1.png
new file mode 100644
index 0000000000..c38aa0c6e9
Binary files /dev/null and b/storage/app/media/devlog/progress2/pr2-1.png differ
diff --git a/storage/app/media/devlog/progress2/pr2-10.png b/storage/app/media/devlog/progress2/pr2-10.png
new file mode 100644
index 0000000000..d9d3db7382
Binary files /dev/null and b/storage/app/media/devlog/progress2/pr2-10.png differ
diff --git a/storage/app/media/devlog/progress2/pr2-11.png b/storage/app/media/devlog/progress2/pr2-11.png
new file mode 100644
index 0000000000..50607c54e7
Binary files /dev/null and b/storage/app/media/devlog/progress2/pr2-11.png differ
diff --git a/storage/app/media/devlog/progress2/pr2-12.png b/storage/app/media/devlog/progress2/pr2-12.png
new file mode 100644
index 0000000000..793c9b9a77
Binary files /dev/null and b/storage/app/media/devlog/progress2/pr2-12.png differ
diff --git a/storage/app/media/devlog/progress2/pr2-2.png b/storage/app/media/devlog/progress2/pr2-2.png
new file mode 100644
index 0000000000..8795696168
Binary files /dev/null and b/storage/app/media/devlog/progress2/pr2-2.png differ
diff --git a/storage/app/media/devlog/progress2/pr2-3.png b/storage/app/media/devlog/progress2/pr2-3.png
new file mode 100644
index 0000000000..b04af9f8ef
Binary files /dev/null and b/storage/app/media/devlog/progress2/pr2-3.png differ
diff --git a/storage/app/media/devlog/progress2/pr2-4.png b/storage/app/media/devlog/progress2/pr2-4.png
new file mode 100644
index 0000000000..098067487c
Binary files /dev/null and b/storage/app/media/devlog/progress2/pr2-4.png differ
diff --git a/storage/app/media/devlog/progress2/pr2-5.png b/storage/app/media/devlog/progress2/pr2-5.png
new file mode 100644
index 0000000000..5f60d5c0e6
Binary files /dev/null and b/storage/app/media/devlog/progress2/pr2-5.png differ
diff --git a/storage/app/media/devlog/progress2/pr2-6.png b/storage/app/media/devlog/progress2/pr2-6.png
new file mode 100644
index 0000000000..81281b4a2a
Binary files /dev/null and b/storage/app/media/devlog/progress2/pr2-6.png differ
diff --git a/storage/app/media/devlog/progress2/pr2-7.png b/storage/app/media/devlog/progress2/pr2-7.png
new file mode 100644
index 0000000000..cc9d6341d8
Binary files /dev/null and b/storage/app/media/devlog/progress2/pr2-7.png differ
diff --git a/storage/app/media/devlog/progress2/pr2-8.png b/storage/app/media/devlog/progress2/pr2-8.png
new file mode 100644
index 0000000000..47b10aa1fe
Binary files /dev/null and b/storage/app/media/devlog/progress2/pr2-8.png differ
diff --git a/storage/app/media/devlog/progress2/pr2-9.png b/storage/app/media/devlog/progress2/pr2-9.png
new file mode 100644
index 0000000000..5e6fbe3026
Binary files /dev/null and b/storage/app/media/devlog/progress2/pr2-9.png differ
diff --git a/storage/app/media/devlog/progress3/blur80.gif b/storage/app/media/devlog/progress3/blur80.gif
new file mode 100644
index 0000000000..e0a2ae5fa6
Binary files /dev/null and b/storage/app/media/devlog/progress3/blur80.gif differ
diff --git a/storage/app/media/devlog/progress3/dof_blur4.gif b/storage/app/media/devlog/progress3/dof_blur4.gif
new file mode 100644
index 0000000000..43940d753c
Binary files /dev/null and b/storage/app/media/devlog/progress3/dof_blur4.gif differ
diff --git a/storage/app/media/devlog/progress3/gdmonkeys.jpg b/storage/app/media/devlog/progress3/gdmonkeys.jpg
new file mode 100644
index 0000000000..25ff4823a3
Binary files /dev/null and b/storage/app/media/devlog/progress3/gdmonkeys.jpg differ
diff --git a/storage/app/media/devlog/progress3/light_information.gif b/storage/app/media/devlog/progress3/light_information.gif
new file mode 100644
index 0000000000..a4f67f7eb8
Binary files /dev/null and b/storage/app/media/devlog/progress3/light_information.gif differ
diff --git a/storage/app/media/devlog/progress3/nrpr1.jpg b/storage/app/media/devlog/progress3/nrpr1.jpg
new file mode 100644
index 0000000000..ec3526f20e
Binary files /dev/null and b/storage/app/media/devlog/progress3/nrpr1.jpg differ
diff --git a/storage/app/media/devlog/progress3/nrpr2.jpg b/storage/app/media/devlog/progress3/nrpr2.jpg
new file mode 100644
index 0000000000..53546cf149
Binary files /dev/null and b/storage/app/media/devlog/progress3/nrpr2.jpg differ
diff --git a/storage/app/media/devlog/progress3/nrpr3.png b/storage/app/media/devlog/progress3/nrpr3.png
new file mode 100644
index 0000000000..bf73cb7ce2
Binary files /dev/null and b/storage/app/media/devlog/progress3/nrpr3.png differ
diff --git a/storage/app/media/devlog/progress3/nrpr4.jpg b/storage/app/media/devlog/progress3/nrpr4.jpg
new file mode 100644
index 0000000000..ed42d3c0b9
Binary files /dev/null and b/storage/app/media/devlog/progress3/nrpr4.jpg differ
diff --git a/storage/app/media/devlog/progress3/nrpr5.jpg b/storage/app/media/devlog/progress3/nrpr5.jpg
new file mode 100644
index 0000000000..9f98d3194a
Binary files /dev/null and b/storage/app/media/devlog/progress3/nrpr5.jpg differ
diff --git a/storage/app/media/devlog/progress3/nrpr6.jpg b/storage/app/media/devlog/progress3/nrpr6.jpg
new file mode 100644
index 0000000000..69b54c9128
Binary files /dev/null and b/storage/app/media/devlog/progress3/nrpr6.jpg differ
diff --git a/storage/app/media/devlog/progress3/nrpr7.jpg b/storage/app/media/devlog/progress3/nrpr7.jpg
new file mode 100644
index 0000000000..2b5ecf730f
Binary files /dev/null and b/storage/app/media/devlog/progress3/nrpr7.jpg differ
diff --git a/storage/app/media/devlog/progress3/nrpr8.jpg b/storage/app/media/devlog/progress3/nrpr8.jpg
new file mode 100644
index 0000000000..1f60238af5
Binary files /dev/null and b/storage/app/media/devlog/progress3/nrpr8.jpg differ
diff --git a/storage/app/media/devlog/progress3/nrpr9.jpg b/storage/app/media/devlog/progress3/nrpr9.jpg
new file mode 100644
index 0000000000..a8c25677e9
Binary files /dev/null and b/storage/app/media/devlog/progress3/nrpr9.jpg differ
diff --git a/storage/app/media/devlog/progress3/realtime_gi.gif b/storage/app/media/devlog/progress3/realtime_gi.gif
new file mode 100644
index 0000000000..7a1ee4f397
Binary files /dev/null and b/storage/app/media/devlog/progress3/realtime_gi.gif differ
diff --git a/storage/app/media/devlog/progress3/vctr2.gif b/storage/app/media/devlog/progress3/vctr2.gif
new file mode 100644
index 0000000000..b44f89a909
Binary files /dev/null and b/storage/app/media/devlog/progress3/vctr2.gif differ
diff --git a/storage/app/media/devlog/progress4/progress-4-4.jpg b/storage/app/media/devlog/progress4/progress-4-4.jpg
new file mode 100644
index 0000000000..ecac0e0fb2
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress-4-4.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress-4-5.jpg b/storage/app/media/devlog/progress4/progress-4-5.jpg
new file mode 100644
index 0000000000..3b41a5909a
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress-4-5.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress4-1.jpg b/storage/app/media/devlog/progress4/progress4-1.jpg
new file mode 100644
index 0000000000..2933a614e8
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress4-1.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress4-10.jpg b/storage/app/media/devlog/progress4/progress4-10.jpg
new file mode 100644
index 0000000000..69c9c509d8
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress4-10.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress4-11.jpg b/storage/app/media/devlog/progress4/progress4-11.jpg
new file mode 100644
index 0000000000..bbf58aa485
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress4-11.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress4-12.jpg b/storage/app/media/devlog/progress4/progress4-12.jpg
new file mode 100644
index 0000000000..ea416ec2b8
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress4-12.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress4-13.jpg b/storage/app/media/devlog/progress4/progress4-13.jpg
new file mode 100644
index 0000000000..393d075989
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress4-13.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress4-14.jpg b/storage/app/media/devlog/progress4/progress4-14.jpg
new file mode 100644
index 0000000000..2f4c65d062
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress4-14.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress4-2.jpg b/storage/app/media/devlog/progress4/progress4-2.jpg
new file mode 100644
index 0000000000..16c873bcc8
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress4-2.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress4-3.jpg b/storage/app/media/devlog/progress4/progress4-3.jpg
new file mode 100644
index 0000000000..08eb3a550c
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress4-3.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress4-6.jpg b/storage/app/media/devlog/progress4/progress4-6.jpg
new file mode 100644
index 0000000000..63e83e7a8f
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress4-6.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress4-7.jpg b/storage/app/media/devlog/progress4/progress4-7.jpg
new file mode 100644
index 0000000000..8b840ba25c
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress4-7.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress4-8.jpg b/storage/app/media/devlog/progress4/progress4-8.jpg
new file mode 100644
index 0000000000..3482f39bee
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress4-8.jpg differ
diff --git a/storage/app/media/devlog/progress4/progress4-9.jpg b/storage/app/media/devlog/progress4/progress4-9.jpg
new file mode 100644
index 0000000000..ee525c67e0
Binary files /dev/null and b/storage/app/media/devlog/progress4/progress4-9.jpg differ
diff --git a/storage/app/media/devlog/progress5/progress5-1.png b/storage/app/media/devlog/progress5/progress5-1.png
new file mode 100644
index 0000000000..2fc5419701
Binary files /dev/null and b/storage/app/media/devlog/progress5/progress5-1.png differ
diff --git a/storage/app/media/devlog/progress5/progress5-2.png b/storage/app/media/devlog/progress5/progress5-2.png
new file mode 100644
index 0000000000..ba326154ba
Binary files /dev/null and b/storage/app/media/devlog/progress5/progress5-2.png differ
diff --git a/storage/app/media/devlog/progress6/htparts.gif b/storage/app/media/devlog/progress6/htparts.gif
new file mode 100644
index 0000000000..7ccf9a2b10
Binary files /dev/null and b/storage/app/media/devlog/progress6/htparts.gif differ
diff --git a/storage/app/media/devlog/progress6/mesh_particles.gif b/storage/app/media/devlog/progress6/mesh_particles.gif
new file mode 100644
index 0000000000..b152267248
Binary files /dev/null and b/storage/app/media/devlog/progress6/mesh_particles.gif differ
diff --git a/storage/app/media/devlog/progress6/part_directed.gif b/storage/app/media/devlog/progress6/part_directed.gif
new file mode 100644
index 0000000000..22f4776fc4
Binary files /dev/null and b/storage/app/media/devlog/progress6/part_directed.gif differ
diff --git a/storage/app/media/devlog/progress6/part_trails.gif b/storage/app/media/devlog/progress6/part_trails.gif
new file mode 100644
index 0000000000..31252b1013
Binary files /dev/null and b/storage/app/media/devlog/progress6/part_trails.gif differ
diff --git a/storage/app/media/devlog/progress6/partcurve.jpg b/storage/app/media/devlog/progress6/partcurve.jpg
new file mode 100644
index 0000000000..8e45cb5d61
Binary files /dev/null and b/storage/app/media/devlog/progress6/partcurve.jpg differ
diff --git a/storage/app/media/devlog/rendering/dof1.jpg b/storage/app/media/devlog/rendering/dof1.jpg
new file mode 100644
index 0000000000..99d887d09b
Binary files /dev/null and b/storage/app/media/devlog/rendering/dof1.jpg differ
diff --git a/storage/app/media/devlog/rendering/dof2.jpg b/storage/app/media/devlog/rendering/dof2.jpg
new file mode 100644
index 0000000000..2fe8e05ece
Binary files /dev/null and b/storage/app/media/devlog/rendering/dof2.jpg differ
diff --git a/storage/app/media/devlog/rendering/final_quality.jpg b/storage/app/media/devlog/rendering/final_quality.jpg
new file mode 100644
index 0000000000..a06ac8c89e
Binary files /dev/null and b/storage/app/media/devlog/rendering/final_quality.jpg differ
diff --git a/storage/app/media/devlog/rendering/nloom.jpg b/storage/app/media/devlog/rendering/nloom.jpg
new file mode 100644
index 0000000000..e5ec31fe72
Binary files /dev/null and b/storage/app/media/devlog/rendering/nloom.jpg differ
diff --git a/storage/app/media/devlog/rendering/render_shader.png b/storage/app/media/devlog/rendering/render_shader.png
new file mode 100644
index 0000000000..243b0f7fc5
Binary files /dev/null and b/storage/app/media/devlog/rendering/render_shader.png differ
diff --git a/storage/app/media/devlog/rendering/spatial_material21.png b/storage/app/media/devlog/rendering/spatial_material21.png
new file mode 100644
index 0000000000..79d0ab9e06
Binary files /dev/null and b/storage/app/media/devlog/rendering/spatial_material21.png differ
diff --git a/storage/app/media/devlog/rendering/ssr1.jpg b/storage/app/media/devlog/rendering/ssr1.jpg
new file mode 100644
index 0000000000..c8332a3d43
Binary files /dev/null and b/storage/app/media/devlog/rendering/ssr1.jpg differ
diff --git a/storage/app/media/devlog/rendering/vs1.jpg b/storage/app/media/devlog/rendering/vs1.jpg
new file mode 100644
index 0000000000..1a9e9dfa67
Binary files /dev/null and b/storage/app/media/devlog/rendering/vs1.jpg differ
diff --git a/storage/app/media/devlog/rendering/vs2.jpg b/storage/app/media/devlog/rendering/vs2.jpg
new file mode 100644
index 0000000000..1f2aa224cf
Binary files /dev/null and b/storage/app/media/devlog/rendering/vs2.jpg differ
diff --git a/storage/app/media/devlog/shaders/tuto_shader0.png b/storage/app/media/devlog/shaders/tuto_shader0.png
new file mode 100644
index 0000000000..8d89f17243
Binary files /dev/null and b/storage/app/media/devlog/shaders/tuto_shader0.png differ
diff --git a/storage/app/media/devlog/shaders/tuto_shader1.png b/storage/app/media/devlog/shaders/tuto_shader1.png
new file mode 100644
index 0000000000..2cf8acb8d9
Binary files /dev/null and b/storage/app/media/devlog/shaders/tuto_shader1.png differ
diff --git a/storage/app/media/devlog/shaders/tuto_shader2.png b/storage/app/media/devlog/shaders/tuto_shader2.png
new file mode 100644
index 0000000000..30f6d15e9a
Binary files /dev/null and b/storage/app/media/devlog/shaders/tuto_shader2.png differ
diff --git a/storage/app/media/devlog/shaders/tuto_shader3.png b/storage/app/media/devlog/shaders/tuto_shader3.png
new file mode 100644
index 0000000000..5f45e9992e
Binary files /dev/null and b/storage/app/media/devlog/shaders/tuto_shader3.png differ
diff --git a/storage/app/media/devlog/shaders/tuto_shader4.png b/storage/app/media/devlog/shaders/tuto_shader4.png
new file mode 100644
index 0000000000..636ad80da5
Binary files /dev/null and b/storage/app/media/devlog/shaders/tuto_shader4.png differ
diff --git a/storage/app/media/devlog/shaders/tuto_shader5.png b/storage/app/media/devlog/shaders/tuto_shader5.png
new file mode 100644
index 0000000000..b15f164dcf
Binary files /dev/null and b/storage/app/media/devlog/shaders/tuto_shader5.png differ
diff --git a/storage/app/media/dh.jpg b/storage/app/media/dh.jpg
new file mode 100644
index 0000000000..adc08b3d4c
Binary files /dev/null and b/storage/app/media/dh.jpg differ
diff --git a/storage/app/media/dlscript/godot_cpp_starter_kit.zip b/storage/app/media/dlscript/godot_cpp_starter_kit.zip
new file mode 100644
index 0000000000..279160eb49
Binary files /dev/null and b/storage/app/media/dlscript/godot_cpp_starter_kit.zip differ
diff --git a/storage/app/media/dlscript/godot_dlscript.png b/storage/app/media/dlscript/godot_dlscript.png
new file mode 100644
index 0000000000..b27e17a69a
Binary files /dev/null and b/storage/app/media/dlscript/godot_dlscript.png differ
diff --git a/storage/app/media/dlscript/godot_dlscript_thirdparty.png b/storage/app/media/dlscript/godot_dlscript_thirdparty.png
new file mode 100644
index 0000000000..94c08800fd
Binary files /dev/null and b/storage/app/media/dlscript/godot_dlscript_thirdparty.png differ
diff --git a/storage/app/media/dlscript/tutorial/attach_script.png b/storage/app/media/dlscript/tutorial/attach_script.png
new file mode 100644
index 0000000000..b1946c47fe
Binary files /dev/null and b/storage/app/media/dlscript/tutorial/attach_script.png differ
diff --git a/storage/app/media/dlscript/tutorial/cpp_code.png b/storage/app/media/dlscript/tutorial/cpp_code.png
new file mode 100644
index 0000000000..e8c219407b
Binary files /dev/null and b/storage/app/media/dlscript/tutorial/cpp_code.png differ
diff --git a/storage/app/media/dlscript/tutorial/new_dllibrary.png b/storage/app/media/dlscript/tutorial/new_dllibrary.png
new file mode 100644
index 0000000000..9b161bb449
Binary files /dev/null and b/storage/app/media/dlscript/tutorial/new_dllibrary.png differ
diff --git a/storage/app/media/dlscript/tutorial/project_organization.png b/storage/app/media/dlscript/tutorial/project_organization.png
new file mode 100644
index 0000000000..5d3f16c59f
Binary files /dev/null and b/storage/app/media/dlscript/tutorial/project_organization.png differ
diff --git a/storage/app/media/dlscript/tutorial/save_dllibrary.png b/storage/app/media/dlscript/tutorial/save_dllibrary.png
new file mode 100644
index 0000000000..25c189c5d0
Binary files /dev/null and b/storage/app/media/dlscript/tutorial/save_dllibrary.png differ
diff --git a/storage/app/media/dlscript/tutorial/scene_setup.png b/storage/app/media/dlscript/tutorial/scene_setup.png
new file mode 100644
index 0000000000..16611eecbd
Binary files /dev/null and b/storage/app/media/dlscript/tutorial/scene_setup.png differ
diff --git a/storage/app/media/editor_plugin.png b/storage/app/media/editor_plugin.png
new file mode 100644
index 0000000000..0f7bf77f81
Binary files /dev/null and b/storage/app/media/editor_plugin.png differ
diff --git a/storage/app/media/escoria/dmpb_screen1.png b/storage/app/media/escoria/dmpb_screen1.png
new file mode 100644
index 0000000000..6829d00a58
Binary files /dev/null and b/storage/app/media/escoria/dmpb_screen1.png differ
diff --git a/storage/app/media/escoria/esc.png b/storage/app/media/escoria/esc.png
new file mode 100644
index 0000000000..e39fcc91ca
Binary files /dev/null and b/storage/app/media/escoria/esc.png differ
diff --git a/storage/app/media/events/capitole-du-libre/2017/rpg-in-a-box.png b/storage/app/media/events/capitole-du-libre/2017/rpg-in-a-box.png
new file mode 100644
index 0000000000..304454ddf3
Binary files /dev/null and b/storage/app/media/events/capitole-du-libre/2017/rpg-in-a-box.png differ
diff --git a/storage/app/media/events/gdc2019/godot_meetup_gdc_2019.png b/storage/app/media/events/gdc2019/godot_meetup_gdc_2019.png
new file mode 100644
index 0000000000..9721d14f21
Binary files /dev/null and b/storage/app/media/events/gdc2019/godot_meetup_gdc_2019.png differ
diff --git a/storage/app/media/events/godotcon-2018/godotcon_banner_2018.png b/storage/app/media/events/godotcon-2018/godotcon_banner_2018.png
new file mode 100644
index 0000000000..f44e71087f
Binary files /dev/null and b/storage/app/media/events/godotcon-2018/godotcon_banner_2018.png differ
diff --git a/storage/app/media/events/godotcon-2018/godotcon_poster_2018.png b/storage/app/media/events/godotcon-2018/godotcon_poster_2018.png
new file mode 100644
index 0000000000..d5757c8a92
Binary files /dev/null and b/storage/app/media/events/godotcon-2018/godotcon_poster_2018.png differ
diff --git a/storage/app/media/events/godotcon-2018/godotcon_poznan_banner_2018.png b/storage/app/media/events/godotcon-2018/godotcon_poznan_banner_2018.png
new file mode 100644
index 0000000000..cb9401423a
Binary files /dev/null and b/storage/app/media/events/godotcon-2018/godotcon_poznan_banner_2018.png differ
diff --git a/storage/app/media/events/godotcon-2019/Program GodotCon Poznan.pdf b/storage/app/media/events/godotcon-2019/Program GodotCon Poznan.pdf
new file mode 100644
index 0000000000..2330e4bda8
Binary files /dev/null and b/storage/app/media/events/godotcon-2019/Program GodotCon Poznan.pdf differ
diff --git a/storage/app/media/events/godotcon-2019/godotcon_brussels_banner_2019.png b/storage/app/media/events/godotcon-2019/godotcon_brussels_banner_2019.png
new file mode 100644
index 0000000000..189b1facbc
Binary files /dev/null and b/storage/app/media/events/godotcon-2019/godotcon_brussels_banner_2019.png differ
diff --git a/storage/app/media/events/godotcon-2019/godotcon_poznan_banner_2019.png b/storage/app/media/events/godotcon-2019/godotcon_poznan_banner_2019.png
new file mode 100644
index 0000000000..4455e122f6
Binary files /dev/null and b/storage/app/media/events/godotcon-2019/godotcon_poznan_banner_2019.png differ
diff --git a/storage/app/media/events/godotcon-2020/godotcon_brussels_banner_2020.png b/storage/app/media/events/godotcon-2020/godotcon_brussels_banner_2020.png
new file mode 100644
index 0000000000..d76646c52a
Binary files /dev/null and b/storage/app/media/events/godotcon-2020/godotcon_brussels_banner_2020.png differ
diff --git a/storage/app/media/events/godotcon-2022/godotcon_banner_2022.png b/storage/app/media/events/godotcon-2022/godotcon_banner_2022.png
new file mode 100644
index 0000000000..6e95db1eaf
Binary files /dev/null and b/storage/app/media/events/godotcon-2022/godotcon_banner_2022.png differ
diff --git a/storage/app/media/events/meetthenodes_paris2017.png b/storage/app/media/events/meetthenodes_paris2017.png
new file mode 100644
index 0000000000..591921b10a
Binary files /dev/null and b/storage/app/media/events/meetthenodes_paris2017.png differ
diff --git a/storage/app/media/events/meetthenodes_paris2017_small.png b/storage/app/media/events/meetthenodes_paris2017_small.png
new file mode 100644
index 0000000000..0ca6e1041c
Binary files /dev/null and b/storage/app/media/events/meetthenodes_paris2017_small.png differ
diff --git a/storage/app/media/events/write_the_docs/write_the_docs_06.png b/storage/app/media/events/write_the_docs/write_the_docs_06.png
new file mode 100644
index 0000000000..2806758017
Binary files /dev/null and b/storage/app/media/events/write_the_docs/write_the_docs_06.png differ
diff --git a/storage/app/media/gdc2018/gdc.png b/storage/app/media/gdc2018/gdc.png
new file mode 100644
index 0000000000..6bd8c58496
Binary files /dev/null and b/storage/app/media/gdc2018/gdc.png differ
diff --git a/storage/app/media/gdnative.png b/storage/app/media/gdnative.png
new file mode 100644
index 0000000000..3ee720e884
Binary files /dev/null and b/storage/app/media/gdnative.png differ
diff --git a/storage/app/media/gdquest/banner.jpg b/storage/app/media/gdquest/banner.jpg
new file mode 100644
index 0000000000..c243fd4dc4
Binary files /dev/null and b/storage/app/media/gdquest/banner.jpg differ
diff --git a/storage/app/media/gdquest/check out the kickstarter button.png b/storage/app/media/gdquest/check out the kickstarter button.png
new file mode 100644
index 0000000000..6da2f8bd32
Binary files /dev/null and b/storage/app/media/gdquest/check out the kickstarter button.png differ
diff --git a/storage/app/media/gdquest/demo.jpg b/storage/app/media/gdquest/demo.jpg
new file mode 100644
index 0000000000..043e46c4e1
Binary files /dev/null and b/storage/app/media/gdquest/demo.jpg differ
diff --git a/storage/app/media/gdquest/form-support-on-kickstarter.png b/storage/app/media/gdquest/form-support-on-kickstarter.png
new file mode 100644
index 0000000000..9c34d9b19d
Binary files /dev/null and b/storage/app/media/gdquest/form-support-on-kickstarter.png differ
diff --git a/storage/app/media/gdquest/index.md b/storage/app/media/gdquest/index.md
new file mode 100644
index 0000000000..3a56c8239c
--- /dev/null
+++ b/storage/app/media/gdquest/index.md
@@ -0,0 +1,56 @@
+# Godot Course on Kickstarter Next Monday!
+
+
+
+
+Hey there, I'm GDquest, a content creator. I make [game creation tutorials](http://gdquest.com/tutorial/) with open source technologies. The developers and I decided to collaborate to fund and produce the first game creation course for the upcoming Godot 3. A professional training costs a lot to make, and because of that it has to be crowdfunded. We asked you, the community, if you were interested, and the response was extremely positive!
+
+So, it's happening. The project will be up **on Kickstarter next Monday, on May 22, at 12PM CEST!**
+
+## The course's content
+
+Once we reach the initial funding goal, you'll get **at least 40 exclusive tutorials, 10 assignments and commented code sources** in the premium version. I sure could lower the quality and make a lengthier series, but I'd rather help you learn more in less time. If you watch Gdquest on Youtube, you'll know I'm all about quality over quantity. Also, take it as minimum! I don't want to stop there, and i'll work hard to provide as much value as I can.
+
+
+
+
+ The training will reuse the work done for the Krita course, but in a top-down game
+
+
+The series will revolve around a 2d Zelda-like, as the mechanics we'll look at are directly applicable to all kinds of games. But the goal is to teach you much more than that! It will give you a better understanding of the engine, of the game creation workflow, and how to write solid code! Fellow developers and teachers offered to give advice and share insights to elevate the content even more.
+
+Oh, and as you might expect, the higher the funding, the more content you will get, regardless of your pledge. **Every single cent will be spent on the course**.
+
+
+## 30 days tutorial challenge
+
+There is already a ton of videos on the channels for you to watch now. But there's only a short series dedicated to Godot. During the Kickstarter campaign, i'll release **one free tutorial every single day**, mostly about the engine! It's going to be tough, but that's my way of giving back to the community.
+
+
+## It's all based on your feedback
+
+I put out a form to ask you what you wanted to learn exactly, and you've been [more than 600 to reply](https://gdquest.typeform.com/report/ul3bc1/prym)!
+
+
+
+Your requests shaped the project already. There are hundreds of completely different suggestions, some as challenging as “show how to make a 3d MMORPG”, so I can't cover them all. But I took note of everything that's most useful, and exciting. You'll see some of them in the free tutorials.
+
+
+## It starts next week
+
+Crowdfunding, by essence, involves the community. It Cannot happen without you.
+
+The Kickstarter starts on Monday 22 at 12 PM CEST.
+
+Subscribe on Gumroad below and get notified via email when the Kickstarter is up!
+
+
+
+If you haven't already:
+
+- [Subscribe to the Youtube channel](http://youtube.com/c/gdquest)
+- [Follow me on Twitter](https://twitter.com/NathanGDquest)
+
+And feel free to message me on the [Godot Discord server](https://discordapp.com/invite/zH7NUgz) anytime (@gdquest#4637)
+
+_Thank you kindly for your time!_
diff --git a/storage/app/media/gdscript-completion-annotation-args.png b/storage/app/media/gdscript-completion-annotation-args.png
new file mode 100644
index 0000000000..0ae62b1a57
Binary files /dev/null and b/storage/app/media/gdscript-completion-annotation-args.png differ
diff --git a/storage/app/media/gdscript-completion-annotation.png b/storage/app/media/gdscript-completion-annotation.png
new file mode 100644
index 0000000000..5b07345615
Binary files /dev/null and b/storage/app/media/gdscript-completion-annotation.png differ
diff --git a/storage/app/media/gdscript-enum-type.png b/storage/app/media/gdscript-enum-type.png
new file mode 100644
index 0000000000..133d891504
Binary files /dev/null and b/storage/app/media/gdscript-enum-type.png differ
diff --git a/storage/app/media/gdscript-pratt-table.png b/storage/app/media/gdscript-pratt-table.png
new file mode 100644
index 0000000000..7d735b69d3
Binary files /dev/null and b/storage/app/media/gdscript-pratt-table.png differ
diff --git a/storage/app/media/gdscript-warnings.png b/storage/app/media/gdscript-warnings.png
new file mode 100644
index 0000000000..e4778b7172
Binary files /dev/null and b/storage/app/media/gdscript-warnings.png differ
diff --git a/storage/app/media/giprobe_realtime2.mp4 b/storage/app/media/giprobe_realtime2.mp4
new file mode 100644
index 0000000000..1fef6733ce
Binary files /dev/null and b/storage/app/media/giprobe_realtime2.mp4 differ
diff --git a/storage/app/media/global_uniforms/zelda_grass.mp4 b/storage/app/media/global_uniforms/zelda_grass.mp4
new file mode 100644
index 0000000000..bcb37f42cc
Binary files /dev/null and b/storage/app/media/global_uniforms/zelda_grass.mp4 differ
diff --git a/storage/app/media/global_uniforms/zelda_grass2.mp4 b/storage/app/media/global_uniforms/zelda_grass2.mp4
new file mode 100644
index 0000000000..e7db544557
Binary files /dev/null and b/storage/app/media/global_uniforms/zelda_grass2.mp4 differ
diff --git a/storage/app/media/global_uniforms/zelda_wet.mp4 b/storage/app/media/global_uniforms/zelda_wet.mp4
new file mode 100644
index 0000000000..15de4a1e26
Binary files /dev/null and b/storage/app/media/global_uniforms/zelda_wet.mp4 differ
diff --git a/storage/app/media/global_uniforms/zelda_wind.mp4 b/storage/app/media/global_uniforms/zelda_wind.mp4
new file mode 100644
index 0000000000..9292aed900
Binary files /dev/null and b/storage/app/media/global_uniforms/zelda_wind.mp4 differ
diff --git a/storage/app/media/godot-cylinders.gif b/storage/app/media/godot-cylinders.gif
new file mode 100644
index 0000000000..102b080735
Binary files /dev/null and b/storage/app/media/godot-cylinders.gif differ
diff --git a/storage/app/media/godot-heightmap.gif b/storage/app/media/godot-heightmap.gif
new file mode 100644
index 0000000000..8146108823
Binary files /dev/null and b/storage/app/media/godot-heightmap.gif differ
diff --git a/storage/app/media/godot-soft-bodies-small.gif b/storage/app/media/godot-soft-bodies-small.gif
new file mode 100644
index 0000000000..31cc9cd9ee
Binary files /dev/null and b/storage/app/media/godot-soft-bodies-small.gif differ
diff --git a/storage/app/media/godot2_1.png b/storage/app/media/godot2_1.png
new file mode 100644
index 0000000000..d2adb70a22
Binary files /dev/null and b/storage/app/media/godot2_1.png differ
diff --git a/storage/app/media/godot2_10.png b/storage/app/media/godot2_10.png
new file mode 100644
index 0000000000..5d3eaf3d31
Binary files /dev/null and b/storage/app/media/godot2_10.png differ
diff --git a/storage/app/media/godot2_11.png b/storage/app/media/godot2_11.png
new file mode 100644
index 0000000000..345b644416
Binary files /dev/null and b/storage/app/media/godot2_11.png differ
diff --git a/storage/app/media/godot2_12.png b/storage/app/media/godot2_12.png
new file mode 100644
index 0000000000..ddc5e59430
Binary files /dev/null and b/storage/app/media/godot2_12.png differ
diff --git a/storage/app/media/godot2_12b.png b/storage/app/media/godot2_12b.png
new file mode 100644
index 0000000000..7d3be9debf
Binary files /dev/null and b/storage/app/media/godot2_12b.png differ
diff --git a/storage/app/media/godot2_12c.png b/storage/app/media/godot2_12c.png
new file mode 100644
index 0000000000..cab35e074b
Binary files /dev/null and b/storage/app/media/godot2_12c.png differ
diff --git a/storage/app/media/godot2_15.png b/storage/app/media/godot2_15.png
new file mode 100644
index 0000000000..e9f6617e79
Binary files /dev/null and b/storage/app/media/godot2_15.png differ
diff --git a/storage/app/media/godot2_16.png b/storage/app/media/godot2_16.png
new file mode 100644
index 0000000000..0bd2f8dd05
Binary files /dev/null and b/storage/app/media/godot2_16.png differ
diff --git a/storage/app/media/godot2_2.png b/storage/app/media/godot2_2.png
new file mode 100644
index 0000000000..d2cc2344b4
Binary files /dev/null and b/storage/app/media/godot2_2.png differ
diff --git a/storage/app/media/godot2_3.png b/storage/app/media/godot2_3.png
new file mode 100644
index 0000000000..722603b029
Binary files /dev/null and b/storage/app/media/godot2_3.png differ
diff --git a/storage/app/media/godot2_3b.png b/storage/app/media/godot2_3b.png
new file mode 100644
index 0000000000..7389b71ec6
Binary files /dev/null and b/storage/app/media/godot2_3b.png differ
diff --git a/storage/app/media/godot2_4.png b/storage/app/media/godot2_4.png
new file mode 100644
index 0000000000..79a3124bf5
Binary files /dev/null and b/storage/app/media/godot2_4.png differ
diff --git a/storage/app/media/godot2_5.png b/storage/app/media/godot2_5.png
new file mode 100644
index 0000000000..7edbbeb5d5
Binary files /dev/null and b/storage/app/media/godot2_5.png differ
diff --git a/storage/app/media/godot2_6.png b/storage/app/media/godot2_6.png
new file mode 100644
index 0000000000..c4f01fbc55
Binary files /dev/null and b/storage/app/media/godot2_6.png differ
diff --git a/storage/app/media/godot2_6b.png b/storage/app/media/godot2_6b.png
new file mode 100644
index 0000000000..3f1f1233d6
Binary files /dev/null and b/storage/app/media/godot2_6b.png differ
diff --git a/storage/app/media/godot2_6c.png b/storage/app/media/godot2_6c.png
new file mode 100644
index 0000000000..0d3e3c2e65
Binary files /dev/null and b/storage/app/media/godot2_6c.png differ
diff --git a/storage/app/media/godot2_7.png b/storage/app/media/godot2_7.png
new file mode 100644
index 0000000000..56ec9efffb
Binary files /dev/null and b/storage/app/media/godot2_7.png differ
diff --git a/storage/app/media/godot2_8.png b/storage/app/media/godot2_8.png
new file mode 100644
index 0000000000..996fde44b5
Binary files /dev/null and b/storage/app/media/godot2_8.png differ
diff --git a/storage/app/media/godot2_8b.png b/storage/app/media/godot2_8b.png
new file mode 100644
index 0000000000..5389a12224
Binary files /dev/null and b/storage/app/media/godot2_8b.png differ
diff --git a/storage/app/media/godot2_8c.png b/storage/app/media/godot2_8c.png
new file mode 100644
index 0000000000..3894344c87
Binary files /dev/null and b/storage/app/media/godot2_8c.png differ
diff --git a/storage/app/media/godot2_8d.png b/storage/app/media/godot2_8d.png
new file mode 100644
index 0000000000..1a24329edf
Binary files /dev/null and b/storage/app/media/godot2_8d.png differ
diff --git a/storage/app/media/godot2_9.png b/storage/app/media/godot2_9.png
new file mode 100644
index 0000000000..77224a5ae7
Binary files /dev/null and b/storage/app/media/godot2_9.png differ
diff --git a/storage/app/media/godot2_old2.png b/storage/app/media/godot2_old2.png
new file mode 100644
index 0000000000..e684f1e152
Binary files /dev/null and b/storage/app/media/godot2_old2.png differ
diff --git a/storage/app/media/godot_13.png b/storage/app/media/godot_13.png
new file mode 100644
index 0000000000..34820e1f2b
Binary files /dev/null and b/storage/app/media/godot_13.png differ
diff --git a/storage/app/media/godotcon2021/2021-07-GodotCon-Schedule.pdf b/storage/app/media/godotcon2021/2021-07-GodotCon-Schedule.pdf
new file mode 100644
index 0000000000..51f57dd9ef
Binary files /dev/null and b/storage/app/media/godotcon2021/2021-07-GodotCon-Schedule.pdf differ
diff --git a/storage/app/media/godotcon2021/GodotCon 2021 Schedule - Agenda.pdf b/storage/app/media/godotcon2021/GodotCon 2021 Schedule - Agenda.pdf
new file mode 100644
index 0000000000..5b52cc0dad
Binary files /dev/null and b/storage/app/media/godotcon2021/GodotCon 2021 Schedule - Agenda.pdf differ
diff --git a/storage/app/media/godotina.png b/storage/app/media/godotina.png
new file mode 100644
index 0000000000..2bbfd12b96
Binary files /dev/null and b/storage/app/media/godotina.png differ
diff --git a/storage/app/media/gsoc/2018-1/blender-diffuse.png b/storage/app/media/gsoc/2018-1/blender-diffuse.png
new file mode 100644
index 0000000000..87cc4d64ff
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/blender-diffuse.png differ
diff --git a/storage/app/media/gsoc/2018-1/blender-glossy.png b/storage/app/media/gsoc/2018-1/blender-glossy.png
new file mode 100644
index 0000000000..5852800162
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/blender-glossy.png differ
diff --git a/storage/app/media/gsoc/2018-1/blender-less-glossy.png b/storage/app/media/gsoc/2018-1/blender-less-glossy.png
new file mode 100644
index 0000000000..1635556e0f
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/blender-less-glossy.png differ
diff --git a/storage/app/media/gsoc/2018-1/blender-principle.png b/storage/app/media/gsoc/2018-1/blender-principle.png
new file mode 100644
index 0000000000..6740d7b04e
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/blender-principle.png differ
diff --git a/storage/app/media/gsoc/2018-1/gearvr-daydream-export-osig.gif b/storage/app/media/gsoc/2018-1/gearvr-daydream-export-osig.gif
new file mode 100644
index 0000000000..131134bd8d
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/gearvr-daydream-export-osig.gif differ
diff --git a/storage/app/media/gsoc/2018-1/gearvr-daydream-gear-message.png b/storage/app/media/gsoc/2018-1/gearvr-daydream-gear-message.png
new file mode 100644
index 0000000000..5f5f42ba0a
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/gearvr-daydream-gear-message.png differ
diff --git a/storage/app/media/gsoc/2018-1/gearvr-daydream-install.gif b/storage/app/media/gsoc/2018-1/gearvr-daydream-install.gif
new file mode 100644
index 0000000000..7a41c6e6ea
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/gearvr-daydream-install.gif differ
diff --git a/storage/app/media/gsoc/2018-1/gearvr-daydream-logcat-fail.gif b/storage/app/media/gsoc/2018-1/gearvr-daydream-logcat-fail.gif
new file mode 100644
index 0000000000..25a5e0a06a
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/gearvr-daydream-logcat-fail.gif differ
diff --git a/storage/app/media/gsoc/2018-1/gearvr-daydream-logcat.gif b/storage/app/media/gsoc/2018-1/gearvr-daydream-logcat.gif
new file mode 100644
index 0000000000..d47da83d1e
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/gearvr-daydream-logcat.gif differ
diff --git a/storage/app/media/gsoc/2018-1/gearvr-daydream-osig-error.jpg b/storage/app/media/gsoc/2018-1/gearvr-daydream-osig-error.jpg
new file mode 100644
index 0000000000..84e6ba0330
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/gearvr-daydream-osig-error.jpg differ
diff --git a/storage/app/media/gsoc/2018-1/gearvr-daydream-place-osig.gif b/storage/app/media/gsoc/2018-1/gearvr-daydream-place-osig.gif
new file mode 100644
index 0000000000..3270d17d2d
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/gearvr-daydream-place-osig.gif differ
diff --git a/storage/app/media/gsoc/2018-1/midi-inspector.png b/storage/app/media/gsoc/2018-1/midi-inspector.png
new file mode 100644
index 0000000000..8b6724be65
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/midi-inspector.png differ
diff --git a/storage/app/media/gsoc/2018-1/midi-load-midistream.png b/storage/app/media/gsoc/2018-1/midi-load-midistream.png
new file mode 100644
index 0000000000..d4602e054a
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/midi-load-midistream.png differ
diff --git a/storage/app/media/gsoc/2018-1/midi-load-sf.png b/storage/app/media/gsoc/2018-1/midi-load-sf.png
new file mode 100644
index 0000000000..07aa1b8999
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/midi-load-sf.png differ
diff --git a/storage/app/media/gsoc/2018-1/midi-midistream.png b/storage/app/media/gsoc/2018-1/midi-midistream.png
new file mode 100644
index 0000000000..21dfd19dba
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/midi-midistream.png differ
diff --git a/storage/app/media/gsoc/2018-1/midi-resource-panel.png b/storage/app/media/gsoc/2018-1/midi-resource-panel.png
new file mode 100644
index 0000000000..c9e8dbd15a
Binary files /dev/null and b/storage/app/media/gsoc/2018-1/midi-resource-panel.png differ
diff --git a/storage/app/media/gsoc/2019-1/gdscript-lsp-001.png b/storage/app/media/gsoc/2019-1/gdscript-lsp-001.png
new file mode 100644
index 0000000000..18abda764b
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/gdscript-lsp-001.png differ
diff --git a/storage/app/media/gsoc/2019-1/gdscript-lsp-002.gif b/storage/app/media/gsoc/2019-1/gdscript-lsp-002.gif
new file mode 100644
index 0000000000..032d08032e
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/gdscript-lsp-002.gif differ
diff --git a/storage/app/media/gsoc/2019-1/gdscript-lsp-003.gif b/storage/app/media/gsoc/2019-1/gdscript-lsp-003.gif
new file mode 100644
index 0000000000..2a323974b6
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/gdscript-lsp-003.gif differ
diff --git a/storage/app/media/gsoc/2019-1/gdscript-lsp-004.gif b/storage/app/media/gsoc/2019-1/gdscript-lsp-004.gif
new file mode 100644
index 0000000000..81a39a8dbc
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/gdscript-lsp-004.gif differ
diff --git a/storage/app/media/gsoc/2019-1/interactive-music-001.png b/storage/app/media/gsoc/2019-1/interactive-music-001.png
new file mode 100644
index 0000000000..f1157d3895
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/interactive-music-001.png differ
diff --git a/storage/app/media/gsoc/2019-1/interactive-music-002.png b/storage/app/media/gsoc/2019-1/interactive-music-002.png
new file mode 100644
index 0000000000..337379069a
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/interactive-music-002.png differ
diff --git a/storage/app/media/gsoc/2019-1/interactive-music-003.png b/storage/app/media/gsoc/2019-1/interactive-music-003.png
new file mode 100644
index 0000000000..91a9b93070
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/interactive-music-003.png differ
diff --git a/storage/app/media/gsoc/2019-1/interactive-music-004.png b/storage/app/media/gsoc/2019-1/interactive-music-004.png
new file mode 100644
index 0000000000..dd3c44857d
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/interactive-music-004.png differ
diff --git a/storage/app/media/gsoc/2019-1/interactive-music-bmp-test.mp4 b/storage/app/media/gsoc/2019-1/interactive-music-bmp-test.mp4
new file mode 100644
index 0000000000..ae4889cd39
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/interactive-music-bmp-test.mp4 differ
diff --git a/storage/app/media/gsoc/2019-1/interactive-music-ram-test.mp4 b/storage/app/media/gsoc/2019-1/interactive-music-ram-test.mp4
new file mode 100644
index 0000000000..a470162b7e
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/interactive-music-ram-test.mp4 differ
diff --git a/storage/app/media/gsoc/2019-1/lightmap-001.png b/storage/app/media/gsoc/2019-1/lightmap-001.png
new file mode 100644
index 0000000000..623754c436
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/lightmap-001.png differ
diff --git a/storage/app/media/gsoc/2019-1/lightmap-002.png b/storage/app/media/gsoc/2019-1/lightmap-002.png
new file mode 100644
index 0000000000..49e182f8e7
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/lightmap-002.png differ
diff --git a/storage/app/media/gsoc/2019-1/motion-matching-001.gif b/storage/app/media/gsoc/2019-1/motion-matching-001.gif
new file mode 100644
index 0000000000..db7dec8809
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/motion-matching-001.gif differ
diff --git a/storage/app/media/gsoc/2019-1/motion-matching-002.png b/storage/app/media/gsoc/2019-1/motion-matching-002.png
new file mode 100644
index 0000000000..4fe4fb0ed3
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/motion-matching-002.png differ
diff --git a/storage/app/media/gsoc/2019-1/motion-matching-003.gif b/storage/app/media/gsoc/2019-1/motion-matching-003.gif
new file mode 100644
index 0000000000..1f2b8a4a32
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/motion-matching-003.gif differ
diff --git a/storage/app/media/gsoc/2019-1/motion-matching-004.gif b/storage/app/media/gsoc/2019-1/motion-matching-004.gif
new file mode 100644
index 0000000000..bbc6f3582e
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/motion-matching-004.gif differ
diff --git a/storage/app/media/gsoc/2019-1/static-analyzer-001.jpg b/storage/app/media/gsoc/2019-1/static-analyzer-001.jpg
new file mode 100644
index 0000000000..628b676de5
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/static-analyzer-001.jpg differ
diff --git a/storage/app/media/gsoc/2019-1/vcs-001.png b/storage/app/media/gsoc/2019-1/vcs-001.png
new file mode 100644
index 0000000000..ff5141c3cd
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/vcs-001.png differ
diff --git a/storage/app/media/gsoc/2019-1/vcs-002.png b/storage/app/media/gsoc/2019-1/vcs-002.png
new file mode 100644
index 0000000000..596f05cecf
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/vcs-002.png differ
diff --git a/storage/app/media/gsoc/2019-1/visual-script-001.gif b/storage/app/media/gsoc/2019-1/visual-script-001.gif
new file mode 100644
index 0000000000..aec13762cc
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/visual-script-001.gif differ
diff --git a/storage/app/media/gsoc/2019-1/visual-script-002.gif b/storage/app/media/gsoc/2019-1/visual-script-002.gif
new file mode 100644
index 0000000000..592b9cf058
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/visual-script-002.gif differ
diff --git a/storage/app/media/gsoc/2019-1/visual-script-003.gif b/storage/app/media/gsoc/2019-1/visual-script-003.gif
new file mode 100644
index 0000000000..003ece8487
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/visual-script-003.gif differ
diff --git a/storage/app/media/gsoc/2019-1/visual-script-004.gif b/storage/app/media/gsoc/2019-1/visual-script-004.gif
new file mode 100644
index 0000000000..70568f4cb8
Binary files /dev/null and b/storage/app/media/gsoc/2019-1/visual-script-004.gif differ
diff --git a/storage/app/media/gsoc/2019-2/interactive-music-001.png b/storage/app/media/gsoc/2019-2/interactive-music-001.png
new file mode 100644
index 0000000000..37262f3b9d
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/interactive-music-001.png differ
diff --git a/storage/app/media/gsoc/2019-2/interactive-music-002.png b/storage/app/media/gsoc/2019-2/interactive-music-002.png
new file mode 100644
index 0000000000..5a3c6aba7b
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/interactive-music-002.png differ
diff --git a/storage/app/media/gsoc/2019-2/interactive-music-transitioner-demo.mp4 b/storage/app/media/gsoc/2019-2/interactive-music-transitioner-demo.mp4
new file mode 100644
index 0000000000..752803ad6e
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/interactive-music-transitioner-demo.mp4 differ
diff --git a/storage/app/media/gsoc/2019-2/lightmap-001.png b/storage/app/media/gsoc/2019-2/lightmap-001.png
new file mode 100644
index 0000000000..e41db5ba74
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/lightmap-001.png differ
diff --git a/storage/app/media/gsoc/2019-2/lightmap-002.png b/storage/app/media/gsoc/2019-2/lightmap-002.png
new file mode 100644
index 0000000000..386a93844a
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/lightmap-002.png differ
diff --git a/storage/app/media/gsoc/2019-2/lightmap-003.png b/storage/app/media/gsoc/2019-2/lightmap-003.png
new file mode 100644
index 0000000000..e0f97ddc50
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/lightmap-003.png differ
diff --git a/storage/app/media/gsoc/2019-2/motion-matching-001.gif b/storage/app/media/gsoc/2019-2/motion-matching-001.gif
new file mode 100644
index 0000000000..4509c812db
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/motion-matching-001.gif differ
diff --git a/storage/app/media/gsoc/2019-2/vcs-001.png b/storage/app/media/gsoc/2019-2/vcs-001.png
new file mode 100644
index 0000000000..49ab814248
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/vcs-001.png differ
diff --git a/storage/app/media/gsoc/2019-2/vcs-002.png b/storage/app/media/gsoc/2019-2/vcs-002.png
new file mode 100644
index 0000000000..86914ee790
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/vcs-002.png differ
diff --git a/storage/app/media/gsoc/2019-2/vcs-003.png b/storage/app/media/gsoc/2019-2/vcs-003.png
new file mode 100644
index 0000000000..5c8edb76c6
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/vcs-003.png differ
diff --git a/storage/app/media/gsoc/2019-2/vcs-004.png b/storage/app/media/gsoc/2019-2/vcs-004.png
new file mode 100644
index 0000000000..029221059b
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/vcs-004.png differ
diff --git a/storage/app/media/gsoc/2019-2/vs-001.png b/storage/app/media/gsoc/2019-2/vs-001.png
new file mode 100644
index 0000000000..ec6c33123f
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/vs-001.png differ
diff --git a/storage/app/media/gsoc/2019-2/vs-002.png b/storage/app/media/gsoc/2019-2/vs-002.png
new file mode 100644
index 0000000000..b569ec4a3d
Binary files /dev/null and b/storage/app/media/gsoc/2019-2/vs-002.png differ
diff --git a/storage/app/media/gsoc/2019-3/motion-matching-001.png b/storage/app/media/gsoc/2019-3/motion-matching-001.png
new file mode 100644
index 0000000000..2b830da4e9
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/motion-matching-001.png differ
diff --git a/storage/app/media/gsoc/2019-3/vcs-001.png b/storage/app/media/gsoc/2019-3/vcs-001.png
new file mode 100644
index 0000000000..d4dcbc677d
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vcs-001.png differ
diff --git a/storage/app/media/gsoc/2019-3/vcs-002.png b/storage/app/media/gsoc/2019-3/vcs-002.png
new file mode 100644
index 0000000000..255afb6f79
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vcs-002.png differ
diff --git a/storage/app/media/gsoc/2019-3/vcs-003.png b/storage/app/media/gsoc/2019-3/vcs-003.png
new file mode 100644
index 0000000000..f2928af648
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vcs-003.png differ
diff --git a/storage/app/media/gsoc/2019-3/vcs-004.png b/storage/app/media/gsoc/2019-3/vcs-004.png
new file mode 100644
index 0000000000..346dbf3421
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vcs-004.png differ
diff --git a/storage/app/media/gsoc/2019-3/vcs-005.png b/storage/app/media/gsoc/2019-3/vcs-005.png
new file mode 100644
index 0000000000..2afba1464a
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vcs-005.png differ
diff --git a/storage/app/media/gsoc/2019-3/vcs-006.png b/storage/app/media/gsoc/2019-3/vcs-006.png
new file mode 100644
index 0000000000..9d8794eebc
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vcs-006.png differ
diff --git a/storage/app/media/gsoc/2019-3/vcs-007.png b/storage/app/media/gsoc/2019-3/vcs-007.png
new file mode 100644
index 0000000000..da36b5a013
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vcs-007.png differ
diff --git a/storage/app/media/gsoc/2019-3/vcs-008.png b/storage/app/media/gsoc/2019-3/vcs-008.png
new file mode 100644
index 0000000000..b1e86bacef
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vcs-008.png differ
diff --git a/storage/app/media/gsoc/2019-3/vcs-009.png b/storage/app/media/gsoc/2019-3/vcs-009.png
new file mode 100644
index 0000000000..0654ead0ea
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vcs-009.png differ
diff --git a/storage/app/media/gsoc/2019-3/vs-001.gif b/storage/app/media/gsoc/2019-3/vs-001.gif
new file mode 100644
index 0000000000..715d1b971e
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vs-001.gif differ
diff --git a/storage/app/media/gsoc/2019-3/vs-002.gif b/storage/app/media/gsoc/2019-3/vs-002.gif
new file mode 100644
index 0000000000..8bba71a434
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vs-002.gif differ
diff --git a/storage/app/media/gsoc/2019-3/vs-003.gif b/storage/app/media/gsoc/2019-3/vs-003.gif
new file mode 100644
index 0000000000..87ce706ba3
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vs-003.gif differ
diff --git a/storage/app/media/gsoc/2019-3/vs-004.gif b/storage/app/media/gsoc/2019-3/vs-004.gif
new file mode 100644
index 0000000000..bf5236a24e
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vs-004.gif differ
diff --git a/storage/app/media/gsoc/2019-3/vs-005.png b/storage/app/media/gsoc/2019-3/vs-005.png
new file mode 100644
index 0000000000..ec6c33123f
Binary files /dev/null and b/storage/app/media/gsoc/2019-3/vs-005.png differ
diff --git a/storage/app/media/gsoc/2021-1/command-palette-demo.gif b/storage/app/media/gsoc/2021-1/command-palette-demo.gif
new file mode 100644
index 0000000000..ca6d8ae5ed
Binary files /dev/null and b/storage/app/media/gsoc/2021-1/command-palette-demo.gif differ
diff --git a/storage/app/media/gsoc/2021-1/dap-demo.gif b/storage/app/media/gsoc/2021-1/dap-demo.gif
new file mode 100644
index 0000000000..4738e28bf0
Binary files /dev/null and b/storage/app/media/gsoc/2021-1/dap-demo.gif differ
diff --git a/storage/app/media/gsoc/2021-1/dap-wireshark.png b/storage/app/media/gsoc/2021-1/dap-wireshark.png
new file mode 100644
index 0000000000..4953e8a53f
Binary files /dev/null and b/storage/app/media/gsoc/2021-1/dap-wireshark.png differ
diff --git a/storage/app/media/gsoc/2021-1/graphedit-auto-layout-demo.mp4 b/storage/app/media/gsoc/2021-1/graphedit-auto-layout-demo.mp4
new file mode 100644
index 0000000000..a49c2e7e39
Binary files /dev/null and b/storage/app/media/gsoc/2021-1/graphedit-auto-layout-demo.mp4 differ
diff --git a/storage/app/media/gsoc/2021-1/pseudoloc-accents_double_vowels.png b/storage/app/media/gsoc/2021-1/pseudoloc-accents_double_vowels.png
new file mode 100644
index 0000000000..9c942e04ae
Binary files /dev/null and b/storage/app/media/gsoc/2021-1/pseudoloc-accents_double_vowels.png differ
diff --git a/storage/app/media/gsoc/2021-1/pseudoloc-disabled.png b/storage/app/media/gsoc/2021-1/pseudoloc-disabled.png
new file mode 100644
index 0000000000..e9bfccfef5
Binary files /dev/null and b/storage/app/media/gsoc/2021-1/pseudoloc-disabled.png differ
diff --git a/storage/app/media/gsoc/2021-1/pseudoloc-expansion30.png b/storage/app/media/gsoc/2021-1/pseudoloc-expansion30.png
new file mode 100644
index 0000000000..535343c733
Binary files /dev/null and b/storage/app/media/gsoc/2021-1/pseudoloc-expansion30.png differ
diff --git a/storage/app/media/gsoc/2021-1/pseudoloc-fakebidi.png b/storage/app/media/gsoc/2021-1/pseudoloc-fakebidi.png
new file mode 100644
index 0000000000..7f27751ad1
Binary files /dev/null and b/storage/app/media/gsoc/2021-1/pseudoloc-fakebidi.png differ
diff --git a/storage/app/media/gsoc/2021-1/pseudoloc-override.png b/storage/app/media/gsoc/2021-1/pseudoloc-override.png
new file mode 100644
index 0000000000..8c6eba08d0
Binary files /dev/null and b/storage/app/media/gsoc/2021-1/pseudoloc-override.png differ
diff --git a/storage/app/media/gsoc/2021-1/softbody-gravity.gif b/storage/app/media/gsoc/2021-1/softbody-gravity.gif
new file mode 100644
index 0000000000..39b1071024
Binary files /dev/null and b/storage/app/media/gsoc/2021-1/softbody-gravity.gif differ
diff --git a/storage/app/media/gsoc/2022-1/colorpicker-before.png b/storage/app/media/gsoc/2022-1/colorpicker-before.png
new file mode 100644
index 0000000000..d2df439aef
Binary files /dev/null and b/storage/app/media/gsoc/2022-1/colorpicker-before.png differ
diff --git a/storage/app/media/gsoc/2022-1/colorpicker-mode-selection.png b/storage/app/media/gsoc/2022-1/colorpicker-mode-selection.png
new file mode 100644
index 0000000000..9462d96f33
Binary files /dev/null and b/storage/app/media/gsoc/2022-1/colorpicker-mode-selection.png differ
diff --git a/storage/app/media/gsoc/2022-1/colorpicker-preset-dragging.png b/storage/app/media/gsoc/2022-1/colorpicker-preset-dragging.png
new file mode 100644
index 0000000000..443cda4dd4
Binary files /dev/null and b/storage/app/media/gsoc/2022-1/colorpicker-preset-dragging.png differ
diff --git a/storage/app/media/gsoc/2022-1/colorpicker-recent-presets.png b/storage/app/media/gsoc/2022-1/colorpicker-recent-presets.png
new file mode 100644
index 0000000000..19d1513eb4
Binary files /dev/null and b/storage/app/media/gsoc/2022-1/colorpicker-recent-presets.png differ
diff --git a/storage/app/media/gsoc/2022-1/colorpicker-shape-selection.png b/storage/app/media/gsoc/2022-1/colorpicker-shape-selection.png
new file mode 100644
index 0000000000..02c9ce7a8b
Binary files /dev/null and b/storage/app/media/gsoc/2022-1/colorpicker-shape-selection.png differ
diff --git a/storage/app/media/gsoc/2022-1/colorpicker-uncolorized-sliders.png b/storage/app/media/gsoc/2022-1/colorpicker-uncolorized-sliders.png
new file mode 100644
index 0000000000..9467881722
Binary files /dev/null and b/storage/app/media/gsoc/2022-1/colorpicker-uncolorized-sliders.png differ
diff --git a/storage/app/media/gsoc/2022-1/gpu-lightmapper-no-soft-shadows.png b/storage/app/media/gsoc/2022-1/gpu-lightmapper-no-soft-shadows.png
new file mode 100644
index 0000000000..7613ef0e03
Binary files /dev/null and b/storage/app/media/gsoc/2022-1/gpu-lightmapper-no-soft-shadows.png differ
diff --git a/storage/app/media/gsoc/2022-1/gpu-lightmapper-uv2-texel-density-debug.png b/storage/app/media/gsoc/2022-1/gpu-lightmapper-uv2-texel-density-debug.png
new file mode 100644
index 0000000000..c870deb287
Binary files /dev/null and b/storage/app/media/gsoc/2022-1/gpu-lightmapper-uv2-texel-density-debug.png differ
diff --git a/storage/app/media/gsoc/2022-1/gpu-lightmapper-with-soft-shadows.png b/storage/app/media/gsoc/2022-1/gpu-lightmapper-with-soft-shadows.png
new file mode 100644
index 0000000000..a55955598d
Binary files /dev/null and b/storage/app/media/gsoc/2022-1/gpu-lightmapper-with-soft-shadows.png differ
diff --git a/storage/app/media/gsoc/2022-1/multiwindow-command-palette.png b/storage/app/media/gsoc/2022-1/multiwindow-command-palette.png
new file mode 100644
index 0000000000..cd1c13c8d3
Binary files /dev/null and b/storage/app/media/gsoc/2022-1/multiwindow-command-palette.png differ
diff --git a/storage/app/media/gsoc/2022-1/multiwindow-showcase.mp4 b/storage/app/media/gsoc/2022-1/multiwindow-showcase.mp4
new file mode 100644
index 0000000000..83dd3a989e
Binary files /dev/null and b/storage/app/media/gsoc/2022-1/multiwindow-showcase.mp4 differ
diff --git a/storage/app/media/hacktoberfest/hacktoberfest-issues.png b/storage/app/media/hacktoberfest/hacktoberfest-issues.png
new file mode 100644
index 0000000000..4671b5d2c7
Binary files /dev/null and b/storage/app/media/hacktoberfest/hacktoberfest-issues.png differ
diff --git a/storage/app/media/hacktoberfest/logo-hacktoberfest.svg b/storage/app/media/hacktoberfest/logo-hacktoberfest.svg
new file mode 100644
index 0000000000..67ec26e94d
--- /dev/null
+++ b/storage/app/media/hacktoberfest/logo-hacktoberfest.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/storage/app/media/inspector/inspect2008.png b/storage/app/media/inspector/inspect2008.png
new file mode 100644
index 0000000000..cb8dc60fee
Binary files /dev/null and b/storage/app/media/inspector/inspect2008.png differ
diff --git a/storage/app/media/inspector/inspector2.png b/storage/app/media/inspector/inspector2.png
new file mode 100644
index 0000000000..13ea67de6e
Binary files /dev/null and b/storage/app/media/inspector/inspector2.png differ
diff --git a/storage/app/media/inspector/inspector3.png b/storage/app/media/inspector/inspector3.png
new file mode 100644
index 0000000000..30f1e536b0
Binary files /dev/null and b/storage/app/media/inspector/inspector3.png differ
diff --git a/storage/app/media/inspector/inspector4.png b/storage/app/media/inspector/inspector4.png
new file mode 100644
index 0000000000..2939bdb9f8
Binary files /dev/null and b/storage/app/media/inspector/inspector4.png differ
diff --git a/storage/app/media/inspector/inspector5.png b/storage/app/media/inspector/inspector5.png
new file mode 100644
index 0000000000..c68d51b124
Binary files /dev/null and b/storage/app/media/inspector/inspector5.png differ
diff --git a/storage/app/media/inspector/inspector6.png b/storage/app/media/inspector/inspector6.png
new file mode 100644
index 0000000000..534cfde0cf
Binary files /dev/null and b/storage/app/media/inspector/inspector6.png differ
diff --git a/storage/app/media/inspector/inspector7.png b/storage/app/media/inspector/inspector7.png
new file mode 100644
index 0000000000..f9662dd688
Binary files /dev/null and b/storage/app/media/inspector/inspector7.png differ
diff --git a/storage/app/media/inspector/inspector8.png b/storage/app/media/inspector/inspector8.png
new file mode 100644
index 0000000000..cdc0815a65
Binary files /dev/null and b/storage/app/media/inspector/inspector8.png differ
diff --git a/storage/app/media/inspector/layers.gif b/storage/app/media/inspector/layers.gif
new file mode 100644
index 0000000000..6a8564a577
Binary files /dev/null and b/storage/app/media/inspector/layers.gif differ
diff --git a/storage/app/media/inspector/spin_slider.gif b/storage/app/media/inspector/spin_slider.gif
new file mode 100644
index 0000000000..432e817d09
Binary files /dev/null and b/storage/app/media/inspector/spin_slider.gif differ
diff --git a/storage/app/media/inspector/sub_resource_edit.gif b/storage/app/media/inspector/sub_resource_edit.gif
new file mode 100644
index 0000000000..17b50051ad
Binary files /dev/null and b/storage/app/media/inspector/sub_resource_edit.gif differ
diff --git a/storage/app/media/lightmap/indirect.gif b/storage/app/media/lightmap/indirect.gif
new file mode 100644
index 0000000000..840ebbfd2d
Binary files /dev/null and b/storage/app/media/lightmap/indirect.gif differ
diff --git a/storage/app/media/lightmap/lm2.png b/storage/app/media/lightmap/lm2.png
new file mode 100644
index 0000000000..6104a65ea9
Binary files /dev/null and b/storage/app/media/lightmap/lm2.png differ
diff --git a/storage/app/media/lightmap/lm3.png b/storage/app/media/lightmap/lm3.png
new file mode 100644
index 0000000000..79f8aa082c
Binary files /dev/null and b/storage/app/media/lightmap/lm3.png differ
diff --git a/storage/app/media/lightmap/lm4.png b/storage/app/media/lightmap/lm4.png
new file mode 100644
index 0000000000..8ff6084475
Binary files /dev/null and b/storage/app/media/lightmap/lm4.png differ
diff --git a/storage/app/media/lightmap/lm6.png b/storage/app/media/lightmap/lm6.png
new file mode 100644
index 0000000000..6d6305166a
Binary files /dev/null and b/storage/app/media/lightmap/lm6.png differ
diff --git a/storage/app/media/lightmap/lm7.png b/storage/app/media/lightmap/lm7.png
new file mode 100644
index 0000000000..6d446a4c51
Binary files /dev/null and b/storage/app/media/lightmap/lm7.png differ
diff --git a/storage/app/media/lightmap/lm8.png b/storage/app/media/lightmap/lm8.png
new file mode 100644
index 0000000000..9217c7c1ba
Binary files /dev/null and b/storage/app/media/lightmap/lm8.png differ
diff --git a/storage/app/media/lightmap/lm9.png b/storage/app/media/lightmap/lm9.png
new file mode 100644
index 0000000000..44e06cd787
Binary files /dev/null and b/storage/app/media/lightmap/lm9.png differ
diff --git a/storage/app/media/lightmap/lm_giprobe.png b/storage/app/media/lightmap/lm_giprobe.png
new file mode 100644
index 0000000000..bebfba3269
Binary files /dev/null and b/storage/app/media/lightmap/lm_giprobe.png differ
diff --git a/storage/app/media/lightmap/lm_lightmap.png b/storage/app/media/lightmap/lm_lightmap.png
new file mode 100644
index 0000000000..2e07b07fe6
Binary files /dev/null and b/storage/app/media/lightmap/lm_lightmap.png differ
diff --git a/storage/app/media/lightmap/lmap1.png b/storage/app/media/lightmap/lmap1.png
new file mode 100644
index 0000000000..04f22f1279
Binary files /dev/null and b/storage/app/media/lightmap/lmap1.png differ
diff --git a/storage/app/media/misc/rdtfeats1.png b/storage/app/media/misc/rdtfeats1.png
new file mode 100644
index 0000000000..479e558c35
Binary files /dev/null and b/storage/app/media/misc/rdtfeats1.png differ
diff --git a/storage/app/media/misc/rdtfeats2.png b/storage/app/media/misc/rdtfeats2.png
new file mode 100644
index 0000000000..676b02c40c
Binary files /dev/null and b/storage/app/media/misc/rdtfeats2.png differ
diff --git a/storage/app/media/misc/rdtfeats3.png b/storage/app/media/misc/rdtfeats3.png
new file mode 100644
index 0000000000..aa4fbc98e0
Binary files /dev/null and b/storage/app/media/misc/rdtfeats3.png differ
diff --git a/storage/app/media/misc/rdtfeats4.png b/storage/app/media/misc/rdtfeats4.png
new file mode 100644
index 0000000000..14074411a3
Binary files /dev/null and b/storage/app/media/misc/rdtfeats4.png differ
diff --git a/storage/app/media/mono/csharp_dodgethecreeps_ios_sim.png b/storage/app/media/mono/csharp_dodgethecreeps_ios_sim.png
new file mode 100644
index 0000000000..1b8652b1ca
Binary files /dev/null and b/storage/app/media/mono/csharp_dodgethecreeps_ios_sim.png differ
diff --git a/storage/app/media/mono/csharp_signals_as_events.png b/storage/app/media/mono/csharp_signals_as_events.png
new file mode 100644
index 0000000000..092b2d6bd3
Binary files /dev/null and b/storage/app/media/mono/csharp_signals_as_events.png differ
diff --git a/storage/app/media/mono/image0.png b/storage/app/media/mono/image0.png
new file mode 100644
index 0000000000..bbd00c3a3c
Binary files /dev/null and b/storage/app/media/mono/image0.png differ
diff --git a/storage/app/media/mono/image1.png b/storage/app/media/mono/image1.png
new file mode 100644
index 0000000000..6720c8d56d
Binary files /dev/null and b/storage/app/media/mono/image1.png differ
diff --git a/storage/app/media/mono/image2.png b/storage/app/media/mono/image2.png
new file mode 100644
index 0000000000..4daa37f08c
Binary files /dev/null and b/storage/app/media/mono/image2.png differ
diff --git a/storage/app/media/mono/image3.png b/storage/app/media/mono/image3.png
new file mode 100644
index 0000000000..4b648a256a
Binary files /dev/null and b/storage/app/media/mono/image3.png differ
diff --git a/storage/app/media/mono/vs_debug_targets.png b/storage/app/media/mono/vs_debug_targets.png
new file mode 100644
index 0000000000..5bc5d4da47
Binary files /dev/null and b/storage/app/media/mono/vs_debug_targets.png differ
diff --git a/storage/app/media/mono/vs_debugging.png b/storage/app/media/mono/vs_debugging.png
new file mode 100644
index 0000000000..5a72ec7dd8
Binary files /dev/null and b/storage/app/media/mono/vs_debugging.png differ
diff --git a/storage/app/media/mono/vscode_completion.png b/storage/app/media/mono/vscode_completion.png
new file mode 100644
index 0000000000..453ad48483
Binary files /dev/null and b/storage/app/media/mono/vscode_completion.png differ
diff --git a/storage/app/media/mono/vscode_debugging.png b/storage/app/media/mono/vscode_debugging.png
new file mode 100644
index 0000000000..8d270c6458
Binary files /dev/null and b/storage/app/media/mono/vscode_debugging.png differ
diff --git a/storage/app/media/mono_aot_settings.png b/storage/app/media/mono_aot_settings.png
new file mode 100644
index 0000000000..84f8e39af4
Binary files /dev/null and b/storage/app/media/mono_aot_settings.png differ
diff --git a/storage/app/media/mono_wasm_demo.opt.gif b/storage/app/media/mono_wasm_demo.opt.gif
new file mode 100644
index 0000000000..97bc6e9b1f
Binary files /dev/null and b/storage/app/media/mono_wasm_demo.opt.gif differ
diff --git a/storage/app/media/monodevelop_addin.png b/storage/app/media/monodevelop_addin.png
new file mode 100644
index 0000000000..30dacb36f5
Binary files /dev/null and b/storage/app/media/monodevelop_addin.png differ
diff --git a/storage/app/media/moonwards-godotblog1.mp4 b/storage/app/media/moonwards-godotblog1.mp4
new file mode 100644
index 0000000000..597ef60787
Binary files /dev/null and b/storage/app/media/moonwards-godotblog1.mp4 differ
diff --git a/storage/app/media/moving_platforms_old.mp4 b/storage/app/media/moving_platforms_old.mp4
new file mode 100644
index 0000000000..6c347fa5d1
Binary files /dev/null and b/storage/app/media/moving_platforms_old.mp4 differ
diff --git a/storage/app/media/moz-love-open.jpg b/storage/app/media/moz-love-open.jpg
new file mode 100644
index 0000000000..eab0149da2
Binary files /dev/null and b/storage/app/media/moz-love-open.jpg differ
diff --git a/storage/app/media/navigation/character.png b/storage/app/media/navigation/character.png
new file mode 100644
index 0000000000..0b190be232
Binary files /dev/null and b/storage/app/media/navigation/character.png differ
diff --git a/storage/app/media/navigation/navigation_1.gif b/storage/app/media/navigation/navigation_1.gif
new file mode 100644
index 0000000000..d258399ef4
Binary files /dev/null and b/storage/app/media/navigation/navigation_1.gif differ
diff --git a/storage/app/media/navigation/navigation_2.gif b/storage/app/media/navigation/navigation_2.gif
new file mode 100644
index 0000000000..4d1ef536e5
Binary files /dev/null and b/storage/app/media/navigation/navigation_2.gif differ
diff --git a/storage/app/media/navigation/navigation_3.gif b/storage/app/media/navigation/navigation_3.gif
new file mode 100644
index 0000000000..eb217f4a9f
Binary files /dev/null and b/storage/app/media/navigation/navigation_3.gif differ
diff --git a/storage/app/media/navigation/navigation_4.gif b/storage/app/media/navigation/navigation_4.gif
new file mode 100644
index 0000000000..d7ba02cbe9
Binary files /dev/null and b/storage/app/media/navigation/navigation_4.gif differ
diff --git a/storage/app/media/navigation/world_scene_1.png b/storage/app/media/navigation/world_scene_1.png
new file mode 100644
index 0000000000..b5d1106817
Binary files /dev/null and b/storage/app/media/navigation/world_scene_1.png differ
diff --git a/storage/app/media/navigation/world_scene_2.png b/storage/app/media/navigation/world_scene_2.png
new file mode 100644
index 0000000000..9a098334a9
Binary files /dev/null and b/storage/app/media/navigation/world_scene_2.png differ
diff --git a/storage/app/media/navigation/world_scene_3.png b/storage/app/media/navigation/world_scene_3.png
new file mode 100644
index 0000000000..fe9f21f621
Binary files /dev/null and b/storage/app/media/navigation/world_scene_3.png differ
diff --git a/storage/app/media/navigation/world_scene_4.png b/storage/app/media/navigation/world_scene_4.png
new file mode 100644
index 0000000000..10d6938545
Binary files /dev/null and b/storage/app/media/navigation/world_scene_4.png differ
diff --git a/storage/app/media/new_community_map.png b/storage/app/media/new_community_map.png
new file mode 100644
index 0000000000..eb5039d675
Binary files /dev/null and b/storage/app/media/new_community_map.png differ
diff --git a/storage/app/media/nmpeer/mpb.png b/storage/app/media/nmpeer/mpb.png
new file mode 100644
index 0000000000..a4d8196425
Binary files /dev/null and b/storage/app/media/nmpeer/mpb.png differ
diff --git a/storage/app/media/nmpeer/nmapi.png b/storage/app/media/nmpeer/nmapi.png
new file mode 100644
index 0000000000..7f7da75f2b
Binary files /dev/null and b/storage/app/media/nmpeer/nmapi.png differ
diff --git a/storage/app/media/nmpeer/nmmasterslave.png b/storage/app/media/nmpeer/nmmasterslave.png
new file mode 100644
index 0000000000..31c32c93c0
Binary files /dev/null and b/storage/app/media/nmpeer/nmmasterslave.png differ
diff --git a/storage/app/media/nmpeer/nmmode.png b/storage/app/media/nmpeer/nmmode.png
new file mode 100644
index 0000000000..efa0e5d54f
Binary files /dev/null and b/storage/app/media/nmpeer/nmmode.png differ
diff --git a/storage/app/media/nmpeer/nmms.png b/storage/app/media/nmpeer/nmms.png
new file mode 100644
index 0000000000..2ea818bbf5
Binary files /dev/null and b/storage/app/media/nmpeer/nmms.png differ
diff --git a/storage/app/media/nmpeer/nmpeer.png b/storage/app/media/nmpeer/nmpeer.png
new file mode 100644
index 0000000000..15512b999a
Binary files /dev/null and b/storage/app/media/nmpeer/nmpeer.png differ
diff --git a/storage/app/media/nmpeer/nmrpc.png b/storage/app/media/nmpeer/nmrpc.png
new file mode 100644
index 0000000000..d86c3ee774
Binary files /dev/null and b/storage/app/media/nmpeer/nmrpc.png differ
diff --git a/storage/app/media/nmpeer/nmrpc2.png b/storage/app/media/nmpeer/nmrpc2.png
new file mode 100644
index 0000000000..6788521ee0
Binary files /dev/null and b/storage/app/media/nmpeer/nmrpc2.png differ
diff --git a/storage/app/media/npc-editor.mp4 b/storage/app/media/npc-editor.mp4
new file mode 100644
index 0000000000..ade3bbef55
Binary files /dev/null and b/storage/app/media/npc-editor.mp4 differ
diff --git a/storage/app/media/plugin_select.png b/storage/app/media/plugin_select.png
new file mode 100644
index 0000000000..1236e99aa0
Binary files /dev/null and b/storage/app/media/plugin_select.png differ
diff --git a/storage/app/media/previewcs.mp4 b/storage/app/media/previewcs.mp4
new file mode 100644
index 0000000000..3e443e3065
Binary files /dev/null and b/storage/app/media/previewcs.mp4 differ
diff --git a/storage/app/media/rendering.png b/storage/app/media/rendering.png
new file mode 100644
index 0000000000..f6439c5a0a
Binary files /dev/null and b/storage/app/media/rendering.png differ
diff --git a/storage/app/media/safe-line.png b/storage/app/media/safe-line.png
new file mode 100644
index 0000000000..02d8583061
Binary files /dev/null and b/storage/app/media/safe-line.png differ
diff --git a/storage/app/media/skeleton2d/bonetut1.png b/storage/app/media/skeleton2d/bonetut1.png
new file mode 100644
index 0000000000..aa4ce0d329
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut1.png differ
diff --git a/storage/app/media/skeleton2d/bonetut10.png b/storage/app/media/skeleton2d/bonetut10.png
new file mode 100644
index 0000000000..e20fef6582
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut10.png differ
diff --git a/storage/app/media/skeleton2d/bonetut11.png b/storage/app/media/skeleton2d/bonetut11.png
new file mode 100644
index 0000000000..f35cd97fc3
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut11.png differ
diff --git a/storage/app/media/skeleton2d/bonetut12.png b/storage/app/media/skeleton2d/bonetut12.png
new file mode 100644
index 0000000000..b62fa847af
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut12.png differ
diff --git a/storage/app/media/skeleton2d/bonetut13.png b/storage/app/media/skeleton2d/bonetut13.png
new file mode 100644
index 0000000000..c71e0e7ffe
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut13.png differ
diff --git a/storage/app/media/skeleton2d/bonetut14.png b/storage/app/media/skeleton2d/bonetut14.png
new file mode 100644
index 0000000000..b3a4ec813e
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut14.png differ
diff --git a/storage/app/media/skeleton2d/bonetut15.png b/storage/app/media/skeleton2d/bonetut15.png
new file mode 100644
index 0000000000..d5abadc3d5
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut15.png differ
diff --git a/storage/app/media/skeleton2d/bonetut16.png b/storage/app/media/skeleton2d/bonetut16.png
new file mode 100644
index 0000000000..52f1fee2bb
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut16.png differ
diff --git a/storage/app/media/skeleton2d/bonetut17.png b/storage/app/media/skeleton2d/bonetut17.png
new file mode 100644
index 0000000000..0be273c9bd
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut17.png differ
diff --git a/storage/app/media/skeleton2d/bonetut18.png b/storage/app/media/skeleton2d/bonetut18.png
new file mode 100644
index 0000000000..edf8dba8db
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut18.png differ
diff --git a/storage/app/media/skeleton2d/bonetut19.gif b/storage/app/media/skeleton2d/bonetut19.gif
new file mode 100644
index 0000000000..831aaf85c0
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut19.gif differ
diff --git a/storage/app/media/skeleton2d/bonetut2.png b/storage/app/media/skeleton2d/bonetut2.png
new file mode 100644
index 0000000000..e3b2bcc1f8
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut2.png differ
diff --git a/storage/app/media/skeleton2d/bonetut3.png b/storage/app/media/skeleton2d/bonetut3.png
new file mode 100644
index 0000000000..b829c5b500
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut3.png differ
diff --git a/storage/app/media/skeleton2d/bonetut4.png b/storage/app/media/skeleton2d/bonetut4.png
new file mode 100644
index 0000000000..42a7e7d905
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut4.png differ
diff --git a/storage/app/media/skeleton2d/bonetut5.png b/storage/app/media/skeleton2d/bonetut5.png
new file mode 100644
index 0000000000..c2d4320247
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut5.png differ
diff --git a/storage/app/media/skeleton2d/bonetut6.png b/storage/app/media/skeleton2d/bonetut6.png
new file mode 100644
index 0000000000..6ff87b5863
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut6.png differ
diff --git a/storage/app/media/skeleton2d/bonetut7.png b/storage/app/media/skeleton2d/bonetut7.png
new file mode 100644
index 0000000000..62b3cc2f11
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut7.png differ
diff --git a/storage/app/media/skeleton2d/bonetut8.png b/storage/app/media/skeleton2d/bonetut8.png
new file mode 100644
index 0000000000..e1253c7811
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut8.png differ
diff --git a/storage/app/media/skeleton2d/bonetut9.png b/storage/app/media/skeleton2d/bonetut9.png
new file mode 100644
index 0000000000..5d2b4c81c6
Binary files /dev/null and b/storage/app/media/skeleton2d/bonetut9.png differ
diff --git a/storage/app/media/skeleton2d/skeleton_image.png b/storage/app/media/skeleton2d/skeleton_image.png
new file mode 100644
index 0000000000..860bf0eb3a
Binary files /dev/null and b/storage/app/media/skeleton2d/skeleton_image.png differ
diff --git a/storage/app/media/steam.png b/storage/app/media/steam.png
new file mode 100644
index 0000000000..7a024e672d
Binary files /dev/null and b/storage/app/media/steam.png differ
diff --git a/storage/app/media/summer-con.png b/storage/app/media/summer-con.png
new file mode 100644
index 0000000000..4754efeeee
Binary files /dev/null and b/storage/app/media/summer-con.png differ
diff --git a/storage/app/media/tilemap_and_tileset/different_shapes.gif b/storage/app/media/tilemap_and_tileset/different_shapes.gif
new file mode 100644
index 0000000000..71e5640558
Binary files /dev/null and b/storage/app/media/tilemap_and_tileset/different_shapes.gif differ
diff --git a/storage/app/media/tilemap_and_tileset/grid_fade.gif b/storage/app/media/tilemap_and_tileset/grid_fade.gif
new file mode 100644
index 0000000000..f9641adfdb
Binary files /dev/null and b/storage/app/media/tilemap_and_tileset/grid_fade.gif differ
diff --git a/storage/app/media/tilemap_and_tileset/merging_together_tiles_editors.gif b/storage/app/media/tilemap_and_tileset/merging_together_tiles_editors.gif
new file mode 100644
index 0000000000..33d57ce3a5
Binary files /dev/null and b/storage/app/media/tilemap_and_tileset/merging_together_tiles_editors.gif differ
diff --git a/storage/app/media/tilemap_and_tileset/multiple_tiles.gif b/storage/app/media/tilemap_and_tileset/multiple_tiles.gif
new file mode 100644
index 0000000000..0a42a17fcf
Binary files /dev/null and b/storage/app/media/tilemap_and_tileset/multiple_tiles.gif differ
diff --git a/storage/app/media/tilemap_and_tileset/texture_region_setup.gif b/storage/app/media/tilemap_and_tileset/texture_region_setup.gif
new file mode 100644
index 0000000000..6f8d1a068f
Binary files /dev/null and b/storage/app/media/tilemap_and_tileset/texture_region_setup.gif differ
diff --git a/storage/app/media/type-error.png b/storage/app/media/type-error.png
new file mode 100644
index 0000000000..897b594da6
Binary files /dev/null and b/storage/app/media/type-error.png differ
diff --git a/storage/app/media/vshader2019/compare0.png b/storage/app/media/vshader2019/compare0.png
new file mode 100644
index 0000000000..4070d4069e
Binary files /dev/null and b/storage/app/media/vshader2019/compare0.png differ
diff --git a/storage/app/media/vshader2019/compare1.png b/storage/app/media/vshader2019/compare1.png
new file mode 100644
index 0000000000..a0ff0358e6
Binary files /dev/null and b/storage/app/media/vshader2019/compare1.png differ
diff --git a/storage/app/media/vshader2019/compare2.png b/storage/app/media/vshader2019/compare2.png
new file mode 100644
index 0000000000..91c8bb21cb
Binary files /dev/null and b/storage/app/media/vshader2019/compare2.png differ
diff --git a/storage/app/media/vshader2019/compare3.png b/storage/app/media/vshader2019/compare3.png
new file mode 100644
index 0000000000..1e322433eb
Binary files /dev/null and b/storage/app/media/vshader2019/compare3.png differ
diff --git a/storage/app/media/vshader2019/compare4.png b/storage/app/media/vshader2019/compare4.png
new file mode 100644
index 0000000000..ce39fb44b8
Binary files /dev/null and b/storage/app/media/vshader2019/compare4.png differ
diff --git a/storage/app/media/vshader2019/connection.gif b/storage/app/media/vshader2019/connection.gif
new file mode 100644
index 0000000000..c904d20635
Binary files /dev/null and b/storage/app/media/vshader2019/connection.gif differ
diff --git a/storage/app/media/vshader2019/constants.png b/storage/app/media/vshader2019/constants.png
new file mode 100644
index 0000000000..e5f78d97cb
Binary files /dev/null and b/storage/app/media/vshader2019/constants.png differ
diff --git a/storage/app/media/vshader2019/convert_shader.png b/storage/app/media/vshader2019/convert_shader.png
new file mode 100644
index 0000000000..73e127488f
Binary files /dev/null and b/storage/app/media/vshader2019/convert_shader.png differ
diff --git a/storage/app/media/vshader2019/custom_node_drop.gif b/storage/app/media/vshader2019/custom_node_drop.gif
new file mode 100644
index 0000000000..6dc0136c3f
Binary files /dev/null and b/storage/app/media/vshader2019/custom_node_drop.gif differ
diff --git a/storage/app/media/vshader2019/custom_nodes_steps2.png b/storage/app/media/vshader2019/custom_nodes_steps2.png
new file mode 100644
index 0000000000..5cd8ebc3f1
Binary files /dev/null and b/storage/app/media/vshader2019/custom_nodes_steps2.png differ
diff --git a/storage/app/media/vshader2019/do.png b/storage/app/media/vshader2019/do.png
new file mode 100644
index 0000000000..5147fd5b0e
Binary files /dev/null and b/storage/app/media/vshader2019/do.png differ
diff --git a/storage/app/media/vshader2019/global_expression.png b/storage/app/media/vshader2019/global_expression.png
new file mode 100644
index 0000000000..b935a82bc6
Binary files /dev/null and b/storage/app/media/vshader2019/global_expression.png differ
diff --git a/storage/app/media/vshader2019/is_inf.png b/storage/app/media/vshader2019/is_inf.png
new file mode 100644
index 0000000000..67c776a7b2
Binary files /dev/null and b/storage/app/media/vshader2019/is_inf.png differ
diff --git a/storage/app/media/vshader2019/is_nan.png b/storage/app/media/vshader2019/is_nan.png
new file mode 100644
index 0000000000..adc1666db3
Binary files /dev/null and b/storage/app/media/vshader2019/is_nan.png differ
diff --git a/storage/app/media/vshader2019/locarray.png b/storage/app/media/vshader2019/locarray.png
new file mode 100644
index 0000000000..c23642c82f
Binary files /dev/null and b/storage/app/media/vshader2019/locarray.png differ
diff --git a/storage/app/media/vshader2019/result_panel.gif b/storage/app/media/vshader2019/result_panel.gif
new file mode 100644
index 0000000000..d51b16afa9
Binary files /dev/null and b/storage/app/media/vshader2019/result_panel.gif differ
diff --git a/storage/app/media/vshader2019/sampler_inputs.png b/storage/app/media/vshader2019/sampler_inputs.png
new file mode 100644
index 0000000000..6b2ca49767
Binary files /dev/null and b/storage/app/media/vshader2019/sampler_inputs.png differ
diff --git a/storage/app/media/vshader2019/sampler_inputs0.png b/storage/app/media/vshader2019/sampler_inputs0.png
new file mode 100644
index 0000000000..9152e9a6b9
Binary files /dev/null and b/storage/app/media/vshader2019/sampler_inputs0.png differ
diff --git a/storage/app/media/vshader2019/scalar_switch.png b/storage/app/media/vshader2019/scalar_switch.png
new file mode 100644
index 0000000000..d0e363de30
Binary files /dev/null and b/storage/app/media/vshader2019/scalar_switch.png differ
diff --git a/storage/app/media/vshader2019/shaders.png b/storage/app/media/vshader2019/shaders.png
new file mode 100644
index 0000000000..390944b65a
Binary files /dev/null and b/storage/app/media/vshader2019/shaders.png differ
diff --git a/storage/app/media/vshader2019/switch.png b/storage/app/media/vshader2019/switch.png
new file mode 100644
index 0000000000..b8c0d7aefe
Binary files /dev/null and b/storage/app/media/vshader2019/switch.png differ
diff --git a/storage/app/media/vshader2019/texture0.png b/storage/app/media/vshader2019/texture0.png
new file mode 100644
index 0000000000..cde0042ef3
Binary files /dev/null and b/storage/app/media/vshader2019/texture0.png differ
diff --git a/storage/app/media/vshader2019/texture1.png b/storage/app/media/vshader2019/texture1.png
new file mode 100644
index 0000000000..ff4c68a3a1
Binary files /dev/null and b/storage/app/media/vshader2019/texture1.png differ
diff --git a/storage/app/media/vshader2019/texture_drop.gif b/storage/app/media/vshader2019/texture_drop.gif
new file mode 100644
index 0000000000..7aa7c9f7b5
Binary files /dev/null and b/storage/app/media/vshader2019/texture_drop.gif differ
diff --git a/storage/app/media/vshader2019/triplanar.png b/storage/app/media/vshader2019/triplanar.png
new file mode 100644
index 0000000000..b2c9cb5896
Binary files /dev/null and b/storage/app/media/vshader2019/triplanar.png differ
diff --git a/storage/app/media/vshader2019/vararray.png b/storage/app/media/vshader2019/vararray.png
new file mode 100644
index 0000000000..c00538fe99
Binary files /dev/null and b/storage/app/media/vshader2019/vararray.png differ
diff --git a/storage/app/media/vshader2019/vs_copy_paste.gif b/storage/app/media/vshader2019/vs_copy_paste.gif
new file mode 100644
index 0000000000..de2691b072
Binary files /dev/null and b/storage/app/media/vshader2019/vs_copy_paste.gif differ
diff --git a/storage/app/media/vshader2019/vshader0.png b/storage/app/media/vshader2019/vshader0.png
new file mode 100644
index 0000000000..22b01c6ff3
Binary files /dev/null and b/storage/app/media/vshader2019/vshader0.png differ
diff --git a/storage/app/media/vshader2019/vshader1.png b/storage/app/media/vshader2019/vshader1.png
new file mode 100644
index 0000000000..e663c8562b
Binary files /dev/null and b/storage/app/media/vshader2019/vshader1.png differ
diff --git a/storage/app/media/vshader2019/vshader10b.png b/storage/app/media/vshader2019/vshader10b.png
new file mode 100644
index 0000000000..e3218b41c1
Binary files /dev/null and b/storage/app/media/vshader2019/vshader10b.png differ
diff --git a/storage/app/media/vshader2019/vshader11.png b/storage/app/media/vshader2019/vshader11.png
new file mode 100644
index 0000000000..c3cd94d302
Binary files /dev/null and b/storage/app/media/vshader2019/vshader11.png differ
diff --git a/storage/app/media/vshader2019/vshader1b.png b/storage/app/media/vshader2019/vshader1b.png
new file mode 100644
index 0000000000..e663c8562b
Binary files /dev/null and b/storage/app/media/vshader2019/vshader1b.png differ
diff --git a/storage/app/media/vshader2019/vshader2.png b/storage/app/media/vshader2019/vshader2.png
new file mode 100644
index 0000000000..07a3607dcb
Binary files /dev/null and b/storage/app/media/vshader2019/vshader2.png differ
diff --git a/storage/app/media/vshader2019/vshader3.png b/storage/app/media/vshader2019/vshader3.png
new file mode 100644
index 0000000000..318b0bc377
Binary files /dev/null and b/storage/app/media/vshader2019/vshader3.png differ
diff --git a/storage/app/media/vshader2019/vshader4.png b/storage/app/media/vshader2019/vshader4.png
new file mode 100644
index 0000000000..94b781f6cd
Binary files /dev/null and b/storage/app/media/vshader2019/vshader4.png differ
diff --git a/storage/app/media/vshader2019/vshader5.png b/storage/app/media/vshader2019/vshader5.png
new file mode 100644
index 0000000000..59f3691295
Binary files /dev/null and b/storage/app/media/vshader2019/vshader5.png differ
diff --git a/storage/app/media/vshader2019/vshader6.png b/storage/app/media/vshader2019/vshader6.png
new file mode 100644
index 0000000000..6e5cd06544
Binary files /dev/null and b/storage/app/media/vshader2019/vshader6.png differ
diff --git a/storage/app/media/vshader2019/vshader7.png b/storage/app/media/vshader2019/vshader7.png
new file mode 100644
index 0000000000..7f53956d3b
Binary files /dev/null and b/storage/app/media/vshader2019/vshader7.png differ
diff --git a/storage/app/media/vshader2019/vshader8.png b/storage/app/media/vshader2019/vshader8.png
new file mode 100644
index 0000000000..9269ab49ad
Binary files /dev/null and b/storage/app/media/vshader2019/vshader8.png differ
diff --git a/storage/app/media/vshader2019/vshader9.png b/storage/app/media/vshader2019/vshader9.png
new file mode 100644
index 0000000000..9c588e88ce
Binary files /dev/null and b/storage/app/media/vshader2019/vshader9.png differ
diff --git a/storage/app/media/vshader2019/vshader_anim1.gif b/storage/app/media/vshader2019/vshader_anim1.gif
new file mode 100644
index 0000000000..6fac40d110
Binary files /dev/null and b/storage/app/media/vshader2019/vshader_anim1.gif differ
diff --git a/storage/app/media/vshader2019/vshader_anim2.gif b/storage/app/media/vshader2019/vshader_anim2.gif
new file mode 100644
index 0000000000..eca0f81a24
Binary files /dev/null and b/storage/app/media/vshader2019/vshader_anim2.gif differ
diff --git a/storage/app/media/vshader2019/vshader_anim3.gif b/storage/app/media/vshader2019/vshader_anim3.gif
new file mode 100644
index 0000000000..96a2a2ccd6
Binary files /dev/null and b/storage/app/media/vshader2019/vshader_anim3.gif differ
diff --git a/storage/app/media/vshader2019/vshader_anim4.gif b/storage/app/media/vshader2019/vshader_anim4.gif
new file mode 100644
index 0000000000..8a95e1e905
Binary files /dev/null and b/storage/app/media/vshader2019/vshader_anim4.gif differ
diff --git a/storage/app/media/webrtc/multiplayer-teaser.webm b/storage/app/media/webrtc/multiplayer-teaser.webm
new file mode 100644
index 0000000000..466a3d6034
Binary files /dev/null and b/storage/app/media/webrtc/multiplayer-teaser.webm differ
diff --git a/storage/app/uploads/public/56b/bb7/aac/56bbb7aac6e8e274384118.png b/storage/app/uploads/public/56b/bb7/aac/56bbb7aac6e8e274384118.png
new file mode 100644
index 0000000000..bfd47a86bc
Binary files /dev/null and b/storage/app/uploads/public/56b/bb7/aac/56bbb7aac6e8e274384118.png differ
diff --git a/storage/app/uploads/public/56b/c4b/20e/56bc4b20e9832821396846.jpg b/storage/app/uploads/public/56b/c4b/20e/56bc4b20e9832821396846.jpg
new file mode 100644
index 0000000000..b2a7350c3f
Binary files /dev/null and b/storage/app/uploads/public/56b/c4b/20e/56bc4b20e9832821396846.jpg differ
diff --git a/storage/app/uploads/public/56b/c81/867/56bc81867dd4b725475913.png b/storage/app/uploads/public/56b/c81/867/56bc81867dd4b725475913.png
new file mode 100644
index 0000000000..0e79e99b54
Binary files /dev/null and b/storage/app/uploads/public/56b/c81/867/56bc81867dd4b725475913.png differ
diff --git a/storage/app/uploads/public/56b/c83/5a6/56bc835a68672307835902.jpg b/storage/app/uploads/public/56b/c83/5a6/56bc835a68672307835902.jpg
new file mode 100644
index 0000000000..8f654bfb49
Binary files /dev/null and b/storage/app/uploads/public/56b/c83/5a6/56bc835a68672307835902.jpg differ
diff --git a/storage/app/uploads/public/56c/314/0b4/56c3140b4dac7412191302.png b/storage/app/uploads/public/56c/314/0b4/56c3140b4dac7412191302.png
new file mode 100644
index 0000000000..0e79e99b54
Binary files /dev/null and b/storage/app/uploads/public/56c/314/0b4/56c3140b4dac7412191302.png differ
diff --git a/storage/app/uploads/public/56c/315/11c/56c31511c9034056347215.png b/storage/app/uploads/public/56c/315/11c/56c31511c9034056347215.png
new file mode 100644
index 0000000000..e13a20d947
Binary files /dev/null and b/storage/app/uploads/public/56c/315/11c/56c31511c9034056347215.png differ
diff --git a/storage/app/uploads/public/56c/317/2a0/56c3172a03b59083821998.png b/storage/app/uploads/public/56c/317/2a0/56c3172a03b59083821998.png
new file mode 100644
index 0000000000..79c881b85b
Binary files /dev/null and b/storage/app/uploads/public/56c/317/2a0/56c3172a03b59083821998.png differ
diff --git a/storage/app/uploads/public/56c/317/b3c/56c317b3ce725271162621.png b/storage/app/uploads/public/56c/317/b3c/56c317b3ce725271162621.png
new file mode 100644
index 0000000000..eddf69907d
Binary files /dev/null and b/storage/app/uploads/public/56c/317/b3c/56c317b3ce725271162621.png differ
diff --git a/storage/app/uploads/public/56c/31c/83d/56c31c83dfe5b594568468.png b/storage/app/uploads/public/56c/31c/83d/56c31c83dfe5b594568468.png
new file mode 100644
index 0000000000..3b35637a02
Binary files /dev/null and b/storage/app/uploads/public/56c/31c/83d/56c31c83dfe5b594568468.png differ
diff --git a/storage/app/uploads/public/56c/31d/5fd/56c31d5fdcbc7419338592.png b/storage/app/uploads/public/56c/31d/5fd/56c31d5fdcbc7419338592.png
new file mode 100644
index 0000000000..73933ffd6f
Binary files /dev/null and b/storage/app/uploads/public/56c/31d/5fd/56c31d5fdcbc7419338592.png differ
diff --git a/storage/app/uploads/public/56c/31d/d31/56c31dd310721810623867.png b/storage/app/uploads/public/56c/31d/d31/56c31dd310721810623867.png
new file mode 100644
index 0000000000..affc21cf84
Binary files /dev/null and b/storage/app/uploads/public/56c/31d/d31/56c31dd310721810623867.png differ
diff --git a/storage/app/uploads/public/56c/326/ef2/56c326ef24792179061082.png b/storage/app/uploads/public/56c/326/ef2/56c326ef24792179061082.png
new file mode 100644
index 0000000000..3d579a4432
Binary files /dev/null and b/storage/app/uploads/public/56c/326/ef2/56c326ef24792179061082.png differ
diff --git a/storage/app/uploads/public/56c/329/c21/56c329c21a583053685050.jpg b/storage/app/uploads/public/56c/329/c21/56c329c21a583053685050.jpg
new file mode 100644
index 0000000000..335eb245b2
Binary files /dev/null and b/storage/app/uploads/public/56c/329/c21/56c329c21a583053685050.jpg differ
diff --git a/storage/app/uploads/public/56c/329/d53/56c329d53bbca269077842.jpg b/storage/app/uploads/public/56c/329/d53/56c329d53bbca269077842.jpg
new file mode 100644
index 0000000000..5327cb63f6
Binary files /dev/null and b/storage/app/uploads/public/56c/329/d53/56c329d53bbca269077842.jpg differ
diff --git a/storage/app/uploads/public/56c/32e/57a/56c32e57afa65446636279.jpg b/storage/app/uploads/public/56c/32e/57a/56c32e57afa65446636279.jpg
new file mode 100644
index 0000000000..49a276fe78
Binary files /dev/null and b/storage/app/uploads/public/56c/32e/57a/56c32e57afa65446636279.jpg differ
diff --git a/storage/app/uploads/public/56c/9da/a89/56c9daa8921c3243289535.jpg b/storage/app/uploads/public/56c/9da/a89/56c9daa8921c3243289535.jpg
new file mode 100644
index 0000000000..1dcb2a4f47
Binary files /dev/null and b/storage/app/uploads/public/56c/9da/a89/56c9daa8921c3243289535.jpg differ
diff --git a/storage/app/uploads/public/56c/bd3/9db/56cbd39dbdddc275301297.png b/storage/app/uploads/public/56c/bd3/9db/56cbd39dbdddc275301297.png
new file mode 100644
index 0000000000..adcb30c323
Binary files /dev/null and b/storage/app/uploads/public/56c/bd3/9db/56cbd39dbdddc275301297.png differ
diff --git a/storage/app/uploads/public/56c/d7f/91e/56cd7f91e9137105943156.jpg b/storage/app/uploads/public/56c/d7f/91e/56cd7f91e9137105943156.jpg
new file mode 100644
index 0000000000..50832327e2
Binary files /dev/null and b/storage/app/uploads/public/56c/d7f/91e/56cd7f91e9137105943156.jpg differ
diff --git a/storage/app/uploads/public/56c/d7f/91e/56cd7f91e9163818771217.jpg b/storage/app/uploads/public/56c/d7f/91e/56cd7f91e9163818771217.jpg
new file mode 100644
index 0000000000..c739ec3108
Binary files /dev/null and b/storage/app/uploads/public/56c/d7f/91e/56cd7f91e9163818771217.jpg differ
diff --git a/storage/app/uploads/public/56c/d7f/ab3/56cd7fab34cf2526093425.jpg b/storage/app/uploads/public/56c/d7f/ab3/56cd7fab34cf2526093425.jpg
new file mode 100644
index 0000000000..c739ec3108
Binary files /dev/null and b/storage/app/uploads/public/56c/d7f/ab3/56cd7fab34cf2526093425.jpg differ
diff --git a/storage/app/uploads/public/56c/d7f/bae/56cd7fbae6495309340594.jpg b/storage/app/uploads/public/56c/d7f/bae/56cd7fbae6495309340594.jpg
new file mode 100644
index 0000000000..c739ec3108
Binary files /dev/null and b/storage/app/uploads/public/56c/d7f/bae/56cd7fbae6495309340594.jpg differ
diff --git a/storage/app/uploads/public/56d/25b/983/56d25b983d7be414490678.png b/storage/app/uploads/public/56d/25b/983/56d25b983d7be414490678.png
new file mode 100644
index 0000000000..7b1cbe8bfc
Binary files /dev/null and b/storage/app/uploads/public/56d/25b/983/56d25b983d7be414490678.png differ
diff --git a/storage/app/uploads/public/56d/dbf/0e0/56ddbf0e04286898440859.png b/storage/app/uploads/public/56d/dbf/0e0/56ddbf0e04286898440859.png
new file mode 100644
index 0000000000..b74a22892f
Binary files /dev/null and b/storage/app/uploads/public/56d/dbf/0e0/56ddbf0e04286898440859.png differ
diff --git a/storage/app/uploads/public/56f/d1f/3c7/56fd1f3c7326a589887006.jpg b/storage/app/uploads/public/56f/d1f/3c7/56fd1f3c7326a589887006.jpg
new file mode 100644
index 0000000000..448bbde4a3
Binary files /dev/null and b/storage/app/uploads/public/56f/d1f/3c7/56fd1f3c7326a589887006.jpg differ
diff --git a/storage/app/uploads/public/56f/d1f/69d/56fd1f69dcf3f158094229.png b/storage/app/uploads/public/56f/d1f/69d/56fd1f69dcf3f158094229.png
new file mode 100644
index 0000000000..4eab7fca68
Binary files /dev/null and b/storage/app/uploads/public/56f/d1f/69d/56fd1f69dcf3f158094229.png differ
diff --git a/storage/app/uploads/public/56f/d1f/e25/56fd1fe2525c1999807897.png b/storage/app/uploads/public/56f/d1f/e25/56fd1fe2525c1999807897.png
new file mode 100644
index 0000000000..a9b24508b1
Binary files /dev/null and b/storage/app/uploads/public/56f/d1f/e25/56fd1fe2525c1999807897.png differ
diff --git a/storage/app/uploads/public/56f/d1f/e55/56fd1fe551f0e807185575.png b/storage/app/uploads/public/56f/d1f/e55/56fd1fe551f0e807185575.png
new file mode 100644
index 0000000000..1a6900a392
Binary files /dev/null and b/storage/app/uploads/public/56f/d1f/e55/56fd1fe551f0e807185575.png differ
diff --git a/storage/app/uploads/public/56f/d20/248/56fd202489c27661475944.png b/storage/app/uploads/public/56f/d20/248/56fd202489c27661475944.png
new file mode 100644
index 0000000000..539d412653
Binary files /dev/null and b/storage/app/uploads/public/56f/d20/248/56fd202489c27661475944.png differ
diff --git a/storage/app/uploads/public/56f/da6/38e/56fda638e35b9304628952.png b/storage/app/uploads/public/56f/da6/38e/56fda638e35b9304628952.png
new file mode 100644
index 0000000000..fc9d9263e6
Binary files /dev/null and b/storage/app/uploads/public/56f/da6/38e/56fda638e35b9304628952.png differ
diff --git a/storage/app/uploads/public/56f/da7/4aa/56fda74aa2d4c057892802.png b/storage/app/uploads/public/56f/da7/4aa/56fda74aa2d4c057892802.png
new file mode 100644
index 0000000000..fc9d9263e6
Binary files /dev/null and b/storage/app/uploads/public/56f/da7/4aa/56fda74aa2d4c057892802.png differ
diff --git a/storage/app/uploads/public/56f/da7/cc0/56fda7cc02bbe315050386.png b/storage/app/uploads/public/56f/da7/cc0/56fda7cc02bbe315050386.png
new file mode 100644
index 0000000000..2a02e532ab
Binary files /dev/null and b/storage/app/uploads/public/56f/da7/cc0/56fda7cc02bbe315050386.png differ
diff --git a/storage/app/uploads/public/56f/da7/d8d/56fda7d8d27f2797251759.jpg b/storage/app/uploads/public/56f/da7/d8d/56fda7d8d27f2797251759.jpg
new file mode 100644
index 0000000000..d32eee3526
Binary files /dev/null and b/storage/app/uploads/public/56f/da7/d8d/56fda7d8d27f2797251759.jpg differ
diff --git a/storage/app/uploads/public/56f/e06/275/56fe06275ca75941745597.jpg b/storage/app/uploads/public/56f/e06/275/56fe06275ca75941745597.jpg
new file mode 100644
index 0000000000..d32eee3526
Binary files /dev/null and b/storage/app/uploads/public/56f/e06/275/56fe06275ca75941745597.jpg differ
diff --git a/storage/app/uploads/public/570/189/0a0/5701890a08e6a203245851.png b/storage/app/uploads/public/570/189/0a0/5701890a08e6a203245851.png
new file mode 100644
index 0000000000..fe445745b6
Binary files /dev/null and b/storage/app/uploads/public/570/189/0a0/5701890a08e6a203245851.png differ
diff --git a/storage/app/uploads/public/570/18c/3de/57018c3deca81594145977.png b/storage/app/uploads/public/570/18c/3de/57018c3deca81594145977.png
new file mode 100644
index 0000000000..384bb48b40
Binary files /dev/null and b/storage/app/uploads/public/570/18c/3de/57018c3deca81594145977.png differ
diff --git a/storage/app/uploads/public/570/208/830/570208830cf55249521112.jpg b/storage/app/uploads/public/570/208/830/570208830cf55249521112.jpg
new file mode 100644
index 0000000000..4663d8c2bb
Binary files /dev/null and b/storage/app/uploads/public/570/208/830/570208830cf55249521112.jpg differ
diff --git a/storage/app/uploads/public/570/208/99e/57020899e86fe515554457.png b/storage/app/uploads/public/570/208/99e/57020899e86fe515554457.png
new file mode 100644
index 0000000000..4a8dadee4b
Binary files /dev/null and b/storage/app/uploads/public/570/208/99e/57020899e86fe515554457.png differ
diff --git a/storage/app/uploads/public/570/778/0a5/5707780a5a4e5946541256.png b/storage/app/uploads/public/570/778/0a5/5707780a5a4e5946541256.png
new file mode 100644
index 0000000000..c850898690
Binary files /dev/null and b/storage/app/uploads/public/570/778/0a5/5707780a5a4e5946541256.png differ
diff --git a/storage/app/uploads/public/572/070/c22/572070c227996527491135.png b/storage/app/uploads/public/572/070/c22/572070c227996527491135.png
new file mode 100644
index 0000000000..8fab554d0e
Binary files /dev/null and b/storage/app/uploads/public/572/070/c22/572070c227996527491135.png differ
diff --git a/storage/app/uploads/public/573/5fc/35d/5735fc35d361c195318911.png b/storage/app/uploads/public/573/5fc/35d/5735fc35d361c195318911.png
new file mode 100644
index 0000000000..63043ade04
Binary files /dev/null and b/storage/app/uploads/public/573/5fc/35d/5735fc35d361c195318911.png differ
diff --git a/storage/app/uploads/public/574/963/7c7/5749637c75028323711899.png b/storage/app/uploads/public/574/963/7c7/5749637c75028323711899.png
new file mode 100644
index 0000000000..61cd9457cf
Binary files /dev/null and b/storage/app/uploads/public/574/963/7c7/5749637c75028323711899.png differ
diff --git a/storage/app/uploads/public/574/96e/202/57496e202d030947930555.png b/storage/app/uploads/public/574/96e/202/57496e202d030947930555.png
new file mode 100644
index 0000000000..40fe7bc082
Binary files /dev/null and b/storage/app/uploads/public/574/96e/202/57496e202d030947930555.png differ
diff --git a/storage/app/uploads/public/575/1f1/78d/5751f178dc70a813162546.jpg b/storage/app/uploads/public/575/1f1/78d/5751f178dc70a813162546.jpg
new file mode 100644
index 0000000000..298a4f86c6
Binary files /dev/null and b/storage/app/uploads/public/575/1f1/78d/5751f178dc70a813162546.jpg differ
diff --git a/storage/app/uploads/public/575/1f9/6f2/5751f96f2d777586519643.png b/storage/app/uploads/public/575/1f9/6f2/5751f96f2d777586519643.png
new file mode 100644
index 0000000000..dd09ef763a
Binary files /dev/null and b/storage/app/uploads/public/575/1f9/6f2/5751f96f2d777586519643.png differ
diff --git a/storage/app/uploads/public/576/ac8/b00/576ac8b00df8c332598879.jpg b/storage/app/uploads/public/576/ac8/b00/576ac8b00df8c332598879.jpg
new file mode 100644
index 0000000000..eab0149da2
Binary files /dev/null and b/storage/app/uploads/public/576/ac8/b00/576ac8b00df8c332598879.jpg differ
diff --git a/storage/app/uploads/public/576/fae/40b/576fae40bafa2147435913.png b/storage/app/uploads/public/576/fae/40b/576fae40bafa2147435913.png
new file mode 100644
index 0000000000..f6b13a6915
Binary files /dev/null and b/storage/app/uploads/public/576/fae/40b/576fae40bafa2147435913.png differ
diff --git a/storage/app/uploads/public/576/fae/40e/576fae40efa65921718466.png b/storage/app/uploads/public/576/fae/40e/576fae40efa65921718466.png
new file mode 100644
index 0000000000..7c2e0fd84a
Binary files /dev/null and b/storage/app/uploads/public/576/fae/40e/576fae40efa65921718466.png differ
diff --git a/storage/app/uploads/public/576/fae/41d/576fae41d9a05130410745.png b/storage/app/uploads/public/576/fae/41d/576fae41d9a05130410745.png
new file mode 100644
index 0000000000..f6149ca801
Binary files /dev/null and b/storage/app/uploads/public/576/fae/41d/576fae41d9a05130410745.png differ
diff --git a/storage/app/uploads/public/576/fae/41f/576fae41f28ab289797318.png b/storage/app/uploads/public/576/fae/41f/576fae41f28ab289797318.png
new file mode 100644
index 0000000000..20d1f70011
Binary files /dev/null and b/storage/app/uploads/public/576/fae/41f/576fae41f28ab289797318.png differ
diff --git a/storage/app/uploads/public/576/fd0/d27/576fd0d27b095707982660.png b/storage/app/uploads/public/576/fd0/d27/576fd0d27b095707982660.png
new file mode 100644
index 0000000000..f6b13a6915
Binary files /dev/null and b/storage/app/uploads/public/576/fd0/d27/576fd0d27b095707982660.png differ
diff --git a/storage/app/uploads/public/576/fda/a32/576fdaa32bce2235882912.jpg b/storage/app/uploads/public/576/fda/a32/576fdaa32bce2235882912.jpg
new file mode 100644
index 0000000000..3522670bc1
Binary files /dev/null and b/storage/app/uploads/public/576/fda/a32/576fdaa32bce2235882912.jpg differ
diff --git a/storage/app/uploads/public/576/fdb/7d6/576fdb7d62313035744666.jpeg b/storage/app/uploads/public/576/fdb/7d6/576fdb7d62313035744666.jpeg
new file mode 100644
index 0000000000..cba4830bc1
Binary files /dev/null and b/storage/app/uploads/public/576/fdb/7d6/576fdb7d62313035744666.jpeg differ
diff --git a/storage/app/uploads/public/576/fdc/cee/576fdccee12b3071617787.png b/storage/app/uploads/public/576/fdc/cee/576fdccee12b3071617787.png
new file mode 100644
index 0000000000..6793a43291
Binary files /dev/null and b/storage/app/uploads/public/576/fdc/cee/576fdccee12b3071617787.png differ
diff --git a/storage/app/uploads/public/576/fe3/1eb/576fe31ebab63005855498.png b/storage/app/uploads/public/576/fe3/1eb/576fe31ebab63005855498.png
new file mode 100644
index 0000000000..1a11de81c8
Binary files /dev/null and b/storage/app/uploads/public/576/fe3/1eb/576fe31ebab63005855498.png differ
diff --git a/storage/app/uploads/public/576/fef/b9c/576fefb9c315a996018504.jpg b/storage/app/uploads/public/576/fef/b9c/576fefb9c315a996018504.jpg
new file mode 100644
index 0000000000..80cea5ff75
Binary files /dev/null and b/storage/app/uploads/public/576/fef/b9c/576fefb9c315a996018504.jpg differ
diff --git a/storage/app/uploads/public/576/ff1/9ea/576ff19ea1d50135502408.jpg b/storage/app/uploads/public/576/ff1/9ea/576ff19ea1d50135502408.jpg
new file mode 100644
index 0000000000..502f66f6fd
Binary files /dev/null and b/storage/app/uploads/public/576/ff1/9ea/576ff19ea1d50135502408.jpg differ
diff --git a/storage/app/uploads/public/576/ff2/3d6/576ff23d6b658789163305.jpeg b/storage/app/uploads/public/576/ff2/3d6/576ff23d6b658789163305.jpeg
new file mode 100644
index 0000000000..6ce73deb4a
Binary files /dev/null and b/storage/app/uploads/public/576/ff2/3d6/576ff23d6b658789163305.jpeg differ
diff --git a/storage/app/uploads/public/576/ff5/a78/576ff5a783a10625260221.jpg b/storage/app/uploads/public/576/ff5/a78/576ff5a783a10625260221.jpg
new file mode 100644
index 0000000000..af08f10a5f
Binary files /dev/null and b/storage/app/uploads/public/576/ff5/a78/576ff5a783a10625260221.jpg differ
diff --git a/storage/app/uploads/public/576/ff6/3fa/576ff63fa4cd4775288971.png b/storage/app/uploads/public/576/ff6/3fa/576ff63fa4cd4775288971.png
new file mode 100644
index 0000000000..545c9f2814
Binary files /dev/null and b/storage/app/uploads/public/576/ff6/3fa/576ff63fa4cd4775288971.png differ
diff --git a/storage/app/uploads/public/576/ff6/e06/576ff6e065d47266557176.jpg b/storage/app/uploads/public/576/ff6/e06/576ff6e065d47266557176.jpg
new file mode 100644
index 0000000000..5368600b19
Binary files /dev/null and b/storage/app/uploads/public/576/ff6/e06/576ff6e065d47266557176.jpg differ
diff --git a/storage/app/uploads/public/576/ff8/07a/576ff807a2125176147031.jpg b/storage/app/uploads/public/576/ff8/07a/576ff807a2125176147031.jpg
new file mode 100644
index 0000000000..c948d9d9cf
Binary files /dev/null and b/storage/app/uploads/public/576/ff8/07a/576ff807a2125176147031.jpg differ
diff --git a/storage/app/uploads/public/576/ff9/d04/576ff9d04f70c826692652.jpg b/storage/app/uploads/public/576/ff9/d04/576ff9d04f70c826692652.jpg
new file mode 100644
index 0000000000..7ac46984b0
Binary files /dev/null and b/storage/app/uploads/public/576/ff9/d04/576ff9d04f70c826692652.jpg differ
diff --git a/storage/app/uploads/public/576/ff9/eb8/576ff9eb82c49701523716.jpg b/storage/app/uploads/public/576/ff9/eb8/576ff9eb82c49701523716.jpg
new file mode 100644
index 0000000000..26fd1a5343
Binary files /dev/null and b/storage/app/uploads/public/576/ff9/eb8/576ff9eb82c49701523716.jpg differ
diff --git a/storage/app/uploads/public/576/fff/b03/576fffb035259380767886.png b/storage/app/uploads/public/576/fff/b03/576fffb035259380767886.png
new file mode 100644
index 0000000000..9fe5db1a84
Binary files /dev/null and b/storage/app/uploads/public/576/fff/b03/576fffb035259380767886.png differ
diff --git a/storage/app/uploads/public/577/10f/154/57710f154bf65180806121.png b/storage/app/uploads/public/577/10f/154/57710f154bf65180806121.png
new file mode 100644
index 0000000000..5248ffcf06
Binary files /dev/null and b/storage/app/uploads/public/577/10f/154/57710f154bf65180806121.png differ
diff --git a/storage/app/uploads/public/577/14a/cf9/57714acf9fefa764654514.jpg b/storage/app/uploads/public/577/14a/cf9/57714acf9fefa764654514.jpg
new file mode 100644
index 0000000000..c74df6ed6c
Binary files /dev/null and b/storage/app/uploads/public/577/14a/cf9/57714acf9fefa764654514.jpg differ
diff --git a/storage/app/uploads/public/577/164/a26/577164a265990659813597.png b/storage/app/uploads/public/577/164/a26/577164a265990659813597.png
new file mode 100644
index 0000000000..8ba5242c53
Binary files /dev/null and b/storage/app/uploads/public/577/164/a26/577164a265990659813597.png differ
diff --git a/storage/app/uploads/public/577/191/b43/577191b437ab5876620864.jpg b/storage/app/uploads/public/577/191/b43/577191b437ab5876620864.jpg
new file mode 100644
index 0000000000..36c2cb50bb
Binary files /dev/null and b/storage/app/uploads/public/577/191/b43/577191b437ab5876620864.jpg differ
diff --git a/storage/app/uploads/public/577/192/a61/577192a61d215913873066.png b/storage/app/uploads/public/577/192/a61/577192a61d215913873066.png
new file mode 100644
index 0000000000..d069405dc9
Binary files /dev/null and b/storage/app/uploads/public/577/192/a61/577192a61d215913873066.png differ
diff --git a/storage/app/uploads/public/577/192/dec/577192dec8150607417646.png b/storage/app/uploads/public/577/192/dec/577192dec8150607417646.png
new file mode 100644
index 0000000000..d069405dc9
Binary files /dev/null and b/storage/app/uploads/public/577/192/dec/577192dec8150607417646.png differ
diff --git a/storage/app/uploads/public/577/193/562/57719356299df210956087.png b/storage/app/uploads/public/577/193/562/57719356299df210956087.png
new file mode 100644
index 0000000000..ee45d32ef5
Binary files /dev/null and b/storage/app/uploads/public/577/193/562/57719356299df210956087.png differ
diff --git a/storage/app/uploads/public/577/193/dcc/577193dccaad3425183988.jpg b/storage/app/uploads/public/577/193/dcc/577193dccaad3425183988.jpg
new file mode 100644
index 0000000000..50513a15dc
Binary files /dev/null and b/storage/app/uploads/public/577/193/dcc/577193dccaad3425183988.jpg differ
diff --git a/storage/app/uploads/public/577/19c/29c/57719c29cb17a114197786.png b/storage/app/uploads/public/577/19c/29c/57719c29cb17a114197786.png
new file mode 100644
index 0000000000..0b43b24b38
Binary files /dev/null and b/storage/app/uploads/public/577/19c/29c/57719c29cb17a114197786.png differ
diff --git a/storage/app/uploads/public/577/2d9/2bb/5772d92bba35c260106043.png b/storage/app/uploads/public/577/2d9/2bb/5772d92bba35c260106043.png
new file mode 100644
index 0000000000..070643dd00
Binary files /dev/null and b/storage/app/uploads/public/577/2d9/2bb/5772d92bba35c260106043.png differ
diff --git a/storage/app/uploads/public/577/433/bf3/577433bf30616620520000.jpg b/storage/app/uploads/public/577/433/bf3/577433bf30616620520000.jpg
new file mode 100644
index 0000000000..aa1996d0e4
Binary files /dev/null and b/storage/app/uploads/public/577/433/bf3/577433bf30616620520000.jpg differ
diff --git a/storage/app/uploads/public/578/177/7be/5781777bede24096930798.png b/storage/app/uploads/public/578/177/7be/5781777bede24096930798.png
new file mode 100644
index 0000000000..724dc03152
Binary files /dev/null and b/storage/app/uploads/public/578/177/7be/5781777bede24096930798.png differ
diff --git a/storage/app/uploads/public/578/55f/d52/57855fd52ff5b417284461.png b/storage/app/uploads/public/578/55f/d52/57855fd52ff5b417284461.png
new file mode 100644
index 0000000000..48fe6e50a3
Binary files /dev/null and b/storage/app/uploads/public/578/55f/d52/57855fd52ff5b417284461.png differ
diff --git a/storage/app/uploads/public/578/568/145/5785681454bd4264168994.png b/storage/app/uploads/public/578/568/145/5785681454bd4264168994.png
new file mode 100644
index 0000000000..74ba7a66f8
Binary files /dev/null and b/storage/app/uploads/public/578/568/145/5785681454bd4264168994.png differ
diff --git a/storage/app/uploads/public/578/5ef/e6b/5785efe6b9ace918653429.png b/storage/app/uploads/public/578/5ef/e6b/5785efe6b9ace918653429.png
new file mode 100644
index 0000000000..cb2429198c
Binary files /dev/null and b/storage/app/uploads/public/578/5ef/e6b/5785efe6b9ace918653429.png differ
diff --git a/storage/app/uploads/public/578/5f0/595/5785f05952990074879933.png b/storage/app/uploads/public/578/5f0/595/5785f05952990074879933.png
new file mode 100644
index 0000000000..7ec104a645
Binary files /dev/null and b/storage/app/uploads/public/578/5f0/595/5785f05952990074879933.png differ
diff --git a/storage/app/uploads/public/578/5f0/a18/5785f0a18821d181257390.png b/storage/app/uploads/public/578/5f0/a18/5785f0a18821d181257390.png
new file mode 100644
index 0000000000..315d6a90b4
Binary files /dev/null and b/storage/app/uploads/public/578/5f0/a18/5785f0a18821d181257390.png differ
diff --git a/storage/app/uploads/public/578/75d/691/57875d6917f5a106104160.png b/storage/app/uploads/public/578/75d/691/57875d6917f5a106104160.png
new file mode 100644
index 0000000000..cac23d567c
Binary files /dev/null and b/storage/app/uploads/public/578/75d/691/57875d6917f5a106104160.png differ
diff --git a/storage/app/uploads/public/578/778/e37/578778e37372a436221460.png b/storage/app/uploads/public/578/778/e37/578778e37372a436221460.png
new file mode 100644
index 0000000000..b2686da79f
Binary files /dev/null and b/storage/app/uploads/public/578/778/e37/578778e37372a436221460.png differ
diff --git a/storage/app/uploads/public/578/8d3/20e/5788d320e0860515206991.jpg b/storage/app/uploads/public/578/8d3/20e/5788d320e0860515206991.jpg
new file mode 100644
index 0000000000..98769c7d81
Binary files /dev/null and b/storage/app/uploads/public/578/8d3/20e/5788d320e0860515206991.jpg differ
diff --git a/storage/app/uploads/public/578/8d3/7fe/5788d37fe016a773999964.png b/storage/app/uploads/public/578/8d3/7fe/5788d37fe016a773999964.png
new file mode 100644
index 0000000000..78143b6e33
Binary files /dev/null and b/storage/app/uploads/public/578/8d3/7fe/5788d37fe016a773999964.png differ
diff --git a/storage/app/uploads/public/578/8d3/d98/5788d3d9801d3780111811.png b/storage/app/uploads/public/578/8d3/d98/5788d3d9801d3780111811.png
new file mode 100644
index 0000000000..3c3fc25d09
Binary files /dev/null and b/storage/app/uploads/public/578/8d3/d98/5788d3d9801d3780111811.png differ
diff --git a/storage/app/uploads/public/579/46f/5c1/57946f5c10ecd550664197.jpg b/storage/app/uploads/public/579/46f/5c1/57946f5c10ecd550664197.jpg
new file mode 100644
index 0000000000..9d0b117d74
Binary files /dev/null and b/storage/app/uploads/public/579/46f/5c1/57946f5c10ecd550664197.jpg differ
diff --git a/storage/app/uploads/public/579/470/0fa/5794700fae51d711641879.jpg b/storage/app/uploads/public/579/470/0fa/5794700fae51d711641879.jpg
new file mode 100644
index 0000000000..9d0b117d74
Binary files /dev/null and b/storage/app/uploads/public/579/470/0fa/5794700fae51d711641879.jpg differ
diff --git a/storage/app/uploads/public/579/49c/448/57949c448824e410697785.png b/storage/app/uploads/public/579/49c/448/57949c448824e410697785.png
new file mode 100644
index 0000000000..bf4ebdc92e
Binary files /dev/null and b/storage/app/uploads/public/579/49c/448/57949c448824e410697785.png differ
diff --git a/storage/app/uploads/public/57a/09c/15d/57a09c15de0a0600320609.png b/storage/app/uploads/public/57a/09c/15d/57a09c15de0a0600320609.png
new file mode 100644
index 0000000000..1b05dc9d22
Binary files /dev/null and b/storage/app/uploads/public/57a/09c/15d/57a09c15de0a0600320609.png differ
diff --git a/storage/app/uploads/public/57a/264/f66/57a264f6629b5388916056.jpeg b/storage/app/uploads/public/57a/264/f66/57a264f6629b5388916056.jpeg
new file mode 100644
index 0000000000..5e04f2f3e1
Binary files /dev/null and b/storage/app/uploads/public/57a/264/f66/57a264f6629b5388916056.jpeg differ
diff --git a/storage/app/uploads/public/57a/886/5d5/57a8865d5dc44195460713.png b/storage/app/uploads/public/57a/886/5d5/57a8865d5dc44195460713.png
new file mode 100644
index 0000000000..d5eb6c8f72
Binary files /dev/null and b/storage/app/uploads/public/57a/886/5d5/57a8865d5dc44195460713.png differ
diff --git a/storage/app/uploads/public/57a/96a/2c4/57a96a2c475fb216728565.jpg b/storage/app/uploads/public/57a/96a/2c4/57a96a2c475fb216728565.jpg
new file mode 100644
index 0000000000..3890658860
Binary files /dev/null and b/storage/app/uploads/public/57a/96a/2c4/57a96a2c475fb216728565.jpg differ
diff --git a/storage/app/uploads/public/57a/b73/701/57ab73701f653339027447.jpg b/storage/app/uploads/public/57a/b73/701/57ab73701f653339027447.jpg
new file mode 100644
index 0000000000..2268a2698b
Binary files /dev/null and b/storage/app/uploads/public/57a/b73/701/57ab73701f653339027447.jpg differ
diff --git a/storage/app/uploads/public/57b/1c2/9cc/57b1c29ccf613172983454.png b/storage/app/uploads/public/57b/1c2/9cc/57b1c29ccf613172983454.png
new file mode 100644
index 0000000000..64b2d14320
Binary files /dev/null and b/storage/app/uploads/public/57b/1c2/9cc/57b1c29ccf613172983454.png differ
diff --git a/storage/app/uploads/public/57b/1c2/a5d/57b1c2a5d1aa3815170504.png b/storage/app/uploads/public/57b/1c2/a5d/57b1c2a5d1aa3815170504.png
new file mode 100644
index 0000000000..ab3532e7b8
Binary files /dev/null and b/storage/app/uploads/public/57b/1c2/a5d/57b1c2a5d1aa3815170504.png differ
diff --git a/storage/app/uploads/public/57b/7d4/a03/57b7d4a0368f1273442154.png b/storage/app/uploads/public/57b/7d4/a03/57b7d4a0368f1273442154.png
new file mode 100644
index 0000000000..a4d8196425
Binary files /dev/null and b/storage/app/uploads/public/57b/7d4/a03/57b7d4a0368f1273442154.png differ
diff --git a/storage/app/uploads/public/57d/307/d41/57d307d4118b3488591560.png b/storage/app/uploads/public/57d/307/d41/57d307d4118b3488591560.png
new file mode 100644
index 0000000000..f93f55235b
Binary files /dev/null and b/storage/app/uploads/public/57d/307/d41/57d307d4118b3488591560.png differ
diff --git a/storage/app/uploads/public/57d/307/d61/57d307d618b79886594061.png b/storage/app/uploads/public/57d/307/d61/57d307d618b79886594061.png
new file mode 100644
index 0000000000..2f07891b19
Binary files /dev/null and b/storage/app/uploads/public/57d/307/d61/57d307d618b79886594061.png differ
diff --git a/storage/app/uploads/public/57d/308/e21/57d308e21dcc5412564620.png b/storage/app/uploads/public/57d/308/e21/57d308e21dcc5412564620.png
new file mode 100644
index 0000000000..dfa02b2766
Binary files /dev/null and b/storage/app/uploads/public/57d/308/e21/57d308e21dcc5412564620.png differ
diff --git a/storage/app/uploads/public/57d/309/16b/57d30916b1c9a742089700.jpg b/storage/app/uploads/public/57d/309/16b/57d30916b1c9a742089700.jpg
new file mode 100644
index 0000000000..3d13c1dc9d
Binary files /dev/null and b/storage/app/uploads/public/57d/309/16b/57d30916b1c9a742089700.jpg differ
diff --git a/storage/app/uploads/public/57d/309/c94/57d309c947d69458328369.jpg b/storage/app/uploads/public/57d/309/c94/57d309c947d69458328369.jpg
new file mode 100644
index 0000000000..6aba4a2aa7
Binary files /dev/null and b/storage/app/uploads/public/57d/309/c94/57d309c947d69458328369.jpg differ
diff --git a/storage/app/uploads/public/57d/30a/68e/57d30a68e6a96239497360.jpg b/storage/app/uploads/public/57d/30a/68e/57d30a68e6a96239497360.jpg
new file mode 100644
index 0000000000..072e3b31ff
Binary files /dev/null and b/storage/app/uploads/public/57d/30a/68e/57d30a68e6a96239497360.jpg differ
diff --git a/storage/app/uploads/public/57d/30a/e97/57d30ae9792d3675804064.jpg b/storage/app/uploads/public/57d/30a/e97/57d30ae9792d3675804064.jpg
new file mode 100644
index 0000000000..a63ac47c49
Binary files /dev/null and b/storage/app/uploads/public/57d/30a/e97/57d30ae9792d3675804064.jpg differ
diff --git a/storage/app/uploads/public/57e/5b7/9a6/57e5b79a6b638283853884.png b/storage/app/uploads/public/57e/5b7/9a6/57e5b79a6b638283853884.png
new file mode 100644
index 0000000000..2d185a646e
Binary files /dev/null and b/storage/app/uploads/public/57e/5b7/9a6/57e5b79a6b638283853884.png differ
diff --git a/storage/app/uploads/public/57e/63e/b38/57e63eb38b9b9444454633.jpg b/storage/app/uploads/public/57e/63e/b38/57e63eb38b9b9444454633.jpg
new file mode 100644
index 0000000000..e2f1cf59fc
Binary files /dev/null and b/storage/app/uploads/public/57e/63e/b38/57e63eb38b9b9444454633.jpg differ
diff --git a/storage/app/uploads/public/57e/85e/895/57e85e89581c7897117696.png b/storage/app/uploads/public/57e/85e/895/57e85e89581c7897117696.png
new file mode 100644
index 0000000000..01dad9b7c1
Binary files /dev/null and b/storage/app/uploads/public/57e/85e/895/57e85e89581c7897117696.png differ
diff --git a/storage/app/uploads/public/57e/98b/d02/57e98bd02c5b0421588351.jpg b/storage/app/uploads/public/57e/98b/d02/57e98bd02c5b0421588351.jpg
new file mode 100644
index 0000000000..7f997af6e4
Binary files /dev/null and b/storage/app/uploads/public/57e/98b/d02/57e98bd02c5b0421588351.jpg differ
diff --git a/storage/app/uploads/public/57e/d16/455/57ed164557aba966604126.png b/storage/app/uploads/public/57e/d16/455/57ed164557aba966604126.png
new file mode 100644
index 0000000000..99af57b541
Binary files /dev/null and b/storage/app/uploads/public/57e/d16/455/57ed164557aba966604126.png differ
diff --git a/storage/app/uploads/public/57e/d16/835/57ed16835c254523138693.png b/storage/app/uploads/public/57e/d16/835/57ed16835c254523138693.png
new file mode 100644
index 0000000000..e0585a97a2
Binary files /dev/null and b/storage/app/uploads/public/57e/d16/835/57ed16835c254523138693.png differ
diff --git a/storage/app/uploads/public/57e/f6c/a06/57ef6ca06ea2a421665008.png b/storage/app/uploads/public/57e/f6c/a06/57ef6ca06ea2a421665008.png
new file mode 100644
index 0000000000..6829d00a58
Binary files /dev/null and b/storage/app/uploads/public/57e/f6c/a06/57ef6ca06ea2a421665008.png differ
diff --git a/storage/app/uploads/public/57e/f83/c4e/57ef83c4e718d700719754.svg b/storage/app/uploads/public/57e/f83/c4e/57ef83c4e718d700719754.svg
new file mode 100644
index 0000000000..67ec26e94d
--- /dev/null
+++ b/storage/app/uploads/public/57e/f83/c4e/57ef83c4e718d700719754.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/storage/app/uploads/public/57e/f8e/0ae/57ef8e0ae53b4158539957.png b/storage/app/uploads/public/57e/f8e/0ae/57ef8e0ae53b4158539957.png
new file mode 100644
index 0000000000..fd7cd0898c
Binary files /dev/null and b/storage/app/uploads/public/57e/f8e/0ae/57ef8e0ae53b4158539957.png differ
diff --git a/storage/app/uploads/public/57f/18c/d73/57f18cd7368c1099830640.png b/storage/app/uploads/public/57f/18c/d73/57f18cd7368c1099830640.png
new file mode 100644
index 0000000000..464378fc22
Binary files /dev/null and b/storage/app/uploads/public/57f/18c/d73/57f18cd7368c1099830640.png differ
diff --git a/storage/app/uploads/public/57f/215/1eb/57f2151eb9807140516214.jpg b/storage/app/uploads/public/57f/215/1eb/57f2151eb9807140516214.jpg
new file mode 100644
index 0000000000..96e63dc926
Binary files /dev/null and b/storage/app/uploads/public/57f/215/1eb/57f2151eb9807140516214.jpg differ
diff --git a/storage/app/uploads/public/57f/215/a0e/57f215a0e3c2a359176299.png b/storage/app/uploads/public/57f/215/a0e/57f215a0e3c2a359176299.png
new file mode 100644
index 0000000000..47d0fa6b25
Binary files /dev/null and b/storage/app/uploads/public/57f/215/a0e/57f215a0e3c2a359176299.png differ
diff --git a/storage/app/uploads/public/57f/215/f4c/57f215f4cd1a8346937832.png b/storage/app/uploads/public/57f/215/f4c/57f215f4cd1a8346937832.png
new file mode 100644
index 0000000000..81f43b7150
Binary files /dev/null and b/storage/app/uploads/public/57f/215/f4c/57f215f4cd1a8346937832.png differ
diff --git a/storage/app/uploads/public/57f/216/c04/57f216c0477dc171469549.png b/storage/app/uploads/public/57f/216/c04/57f216c0477dc171469549.png
new file mode 100644
index 0000000000..3f562c7298
Binary files /dev/null and b/storage/app/uploads/public/57f/216/c04/57f216c0477dc171469549.png differ
diff --git a/storage/app/uploads/public/57f/218/5f6/57f2185f638af084238366.svg b/storage/app/uploads/public/57f/218/5f6/57f2185f638af084238366.svg
new file mode 100644
index 0000000000..1bc4d88325
--- /dev/null
+++ b/storage/app/uploads/public/57f/218/5f6/57f2185f638af084238366.svg
@@ -0,0 +1,181 @@
+
+
\ No newline at end of file
diff --git a/storage/app/uploads/public/57f/23f/857/57f23f85763b9876415197.png b/storage/app/uploads/public/57f/23f/857/57f23f85763b9876415197.png
new file mode 100644
index 0000000000..a72daacf62
Binary files /dev/null and b/storage/app/uploads/public/57f/23f/857/57f23f85763b9876415197.png differ
diff --git a/storage/app/uploads/public/57f/23f/8ab/57f23f8abcc29310515262.png b/storage/app/uploads/public/57f/23f/8ab/57f23f8abcc29310515262.png
new file mode 100644
index 0000000000..d296ed3337
Binary files /dev/null and b/storage/app/uploads/public/57f/23f/8ab/57f23f8abcc29310515262.png differ
diff --git a/storage/app/uploads/public/57f/85d/a5a/57f85da5a8026317996214.png b/storage/app/uploads/public/57f/85d/a5a/57f85da5a8026317996214.png
new file mode 100644
index 0000000000..b15f164dcf
Binary files /dev/null and b/storage/app/uploads/public/57f/85d/a5a/57f85da5a8026317996214.png differ
diff --git a/storage/app/uploads/public/57f/a25/e86/57fa25e86ee85313136282.png b/storage/app/uploads/public/57f/a25/e86/57fa25e86ee85313136282.png
new file mode 100644
index 0000000000..8ce63f41cb
Binary files /dev/null and b/storage/app/uploads/public/57f/a25/e86/57fa25e86ee85313136282.png differ
diff --git a/storage/app/uploads/public/57f/a27/556/57fa275567189931913676.png b/storage/app/uploads/public/57f/a27/556/57fa275567189931913676.png
new file mode 100644
index 0000000000..bdc335ed58
Binary files /dev/null and b/storage/app/uploads/public/57f/a27/556/57fa275567189931913676.png differ
diff --git a/storage/app/uploads/public/57f/f54/c2d/57ff54c2dda8e344327070.png b/storage/app/uploads/public/57f/f54/c2d/57ff54c2dda8e344327070.png
new file mode 100644
index 0000000000..099c09f3d0
Binary files /dev/null and b/storage/app/uploads/public/57f/f54/c2d/57ff54c2dda8e344327070.png differ
diff --git a/storage/app/uploads/public/57f/f55/809/57ff55809ce83385421658.png b/storage/app/uploads/public/57f/f55/809/57ff55809ce83385421658.png
new file mode 100644
index 0000000000..558d0d6bce
Binary files /dev/null and b/storage/app/uploads/public/57f/f55/809/57ff55809ce83385421658.png differ
diff --git a/storage/app/uploads/public/581/7c8/856/5817c8856eccf877486140.png b/storage/app/uploads/public/581/7c8/856/5817c8856eccf877486140.png
new file mode 100644
index 0000000000..d4c9e92f3d
Binary files /dev/null and b/storage/app/uploads/public/581/7c8/856/5817c8856eccf877486140.png differ
diff --git a/storage/app/uploads/public/581/887/929/5818879291fdb843399564.png b/storage/app/uploads/public/581/887/929/5818879291fdb843399564.png
new file mode 100644
index 0000000000..f7fac672d6
Binary files /dev/null and b/storage/app/uploads/public/581/887/929/5818879291fdb843399564.png differ
diff --git a/storage/app/uploads/public/581/9e0/207/5819e0207aaf1048346241.png b/storage/app/uploads/public/581/9e0/207/5819e0207aaf1048346241.png
new file mode 100644
index 0000000000..b1f7608d94
Binary files /dev/null and b/storage/app/uploads/public/581/9e0/207/5819e0207aaf1048346241.png differ
diff --git a/storage/app/uploads/public/582/84f/e93/58284fe93c8d8249745935.png b/storage/app/uploads/public/582/84f/e93/58284fe93c8d8249745935.png
new file mode 100644
index 0000000000..0f7d193ebd
Binary files /dev/null and b/storage/app/uploads/public/582/84f/e93/58284fe93c8d8249745935.png differ
diff --git a/storage/app/uploads/public/582/850/555/582850555082e861384752.png b/storage/app/uploads/public/582/850/555/582850555082e861384752.png
new file mode 100644
index 0000000000..f4279e4127
Binary files /dev/null and b/storage/app/uploads/public/582/850/555/582850555082e861384752.png differ
diff --git a/storage/app/uploads/public/582/850/5f0/5828505f06674448014165.png b/storage/app/uploads/public/582/850/5f0/5828505f06674448014165.png
new file mode 100644
index 0000000000..74eba858fc
Binary files /dev/null and b/storage/app/uploads/public/582/850/5f0/5828505f06674448014165.png differ
diff --git a/storage/app/uploads/public/582/b4e/3d2/582b4e3d2aa2d842351907.jpg b/storage/app/uploads/public/582/b4e/3d2/582b4e3d2aa2d842351907.jpg
new file mode 100644
index 0000000000..763e5120cd
Binary files /dev/null and b/storage/app/uploads/public/582/b4e/3d2/582b4e3d2aa2d842351907.jpg differ
diff --git a/storage/app/uploads/public/582/dce/937/582dce93792f8360179098.png b/storage/app/uploads/public/582/dce/937/582dce93792f8360179098.png
new file mode 100644
index 0000000000..1fab6bf9c8
Binary files /dev/null and b/storage/app/uploads/public/582/dce/937/582dce93792f8360179098.png differ
diff --git a/storage/app/uploads/public/582/e11/fe3/582e11fe32c47456712354.jpg b/storage/app/uploads/public/582/e11/fe3/582e11fe32c47456712354.jpg
new file mode 100644
index 0000000000..1b037a5481
Binary files /dev/null and b/storage/app/uploads/public/582/e11/fe3/582e11fe32c47456712354.jpg differ
diff --git a/storage/app/uploads/public/584/17a/da0/58417ada0aa08228726356.png b/storage/app/uploads/public/584/17a/da0/58417ada0aa08228726356.png
new file mode 100644
index 0000000000..c0c9aca27c
Binary files /dev/null and b/storage/app/uploads/public/584/17a/da0/58417ada0aa08228726356.png differ
diff --git a/storage/app/uploads/public/584/4da/2c0/5844da2c08826494171869.png b/storage/app/uploads/public/584/4da/2c0/5844da2c08826494171869.png
new file mode 100644
index 0000000000..81281b4a2a
Binary files /dev/null and b/storage/app/uploads/public/584/4da/2c0/5844da2c08826494171869.png differ
diff --git a/storage/app/uploads/public/585/28c/770/58528c770b44a828339905.png b/storage/app/uploads/public/585/28c/770/58528c770b44a828339905.png
new file mode 100644
index 0000000000..9ff1783ce9
Binary files /dev/null and b/storage/app/uploads/public/585/28c/770/58528c770b44a828339905.png differ
diff --git a/storage/app/uploads/public/586/7a0/005/5867a0005ade3286241109.jpg b/storage/app/uploads/public/586/7a0/005/5867a0005ade3286241109.jpg
new file mode 100644
index 0000000000..1f60238af5
Binary files /dev/null and b/storage/app/uploads/public/586/7a0/005/5867a0005ade3286241109.jpg differ
diff --git a/storage/app/uploads/public/586/ab0/894/586ab08946903852839807.png b/storage/app/uploads/public/586/ab0/894/586ab08946903852839807.png
new file mode 100644
index 0000000000..eacf8c0f24
Binary files /dev/null and b/storage/app/uploads/public/586/ab0/894/586ab08946903852839807.png differ
diff --git a/storage/app/uploads/public/586/f69/55a/586f6955aff14032498120.png b/storage/app/uploads/public/586/f69/55a/586f6955aff14032498120.png
new file mode 100644
index 0000000000..0c39541136
Binary files /dev/null and b/storage/app/uploads/public/586/f69/55a/586f6955aff14032498120.png differ
diff --git a/storage/app/uploads/public/586/f6a/1b7/586f6a1b76bc6294314616.png b/storage/app/uploads/public/586/f6a/1b7/586f6a1b76bc6294314616.png
new file mode 100644
index 0000000000..95ada462c2
Binary files /dev/null and b/storage/app/uploads/public/586/f6a/1b7/586f6a1b76bc6294314616.png differ
diff --git a/storage/app/uploads/public/586/f6a/d91/586f6ad915dbd852978772.png b/storage/app/uploads/public/586/f6a/d91/586f6ad915dbd852978772.png
new file mode 100644
index 0000000000..297437c680
Binary files /dev/null and b/storage/app/uploads/public/586/f6a/d91/586f6ad915dbd852978772.png differ
diff --git a/storage/app/uploads/public/587/22b/604/58722b604652d721771356.png b/storage/app/uploads/public/587/22b/604/58722b604652d721771356.png
new file mode 100644
index 0000000000..f16a26ac89
Binary files /dev/null and b/storage/app/uploads/public/587/22b/604/58722b604652d721771356.png differ
diff --git a/storage/app/uploads/public/587/399/d1c/587399d1c84ea236004745.jpg b/storage/app/uploads/public/587/399/d1c/587399d1c84ea236004745.jpg
new file mode 100644
index 0000000000..97103e63f8
Binary files /dev/null and b/storage/app/uploads/public/587/399/d1c/587399d1c84ea236004745.jpg differ
diff --git a/storage/app/uploads/public/587/399/d4c/587399d4cd22f263399914.jpg b/storage/app/uploads/public/587/399/d4c/587399d4cd22f263399914.jpg
new file mode 100644
index 0000000000..5bfcdf21ff
Binary files /dev/null and b/storage/app/uploads/public/587/399/d4c/587399d4cd22f263399914.jpg differ
diff --git a/storage/app/uploads/public/587/f62/6da/587f626da0f7f646960937.png b/storage/app/uploads/public/587/f62/6da/587f626da0f7f646960937.png
new file mode 100644
index 0000000000..b6a719379d
Binary files /dev/null and b/storage/app/uploads/public/587/f62/6da/587f626da0f7f646960937.png differ
diff --git a/storage/app/uploads/public/587/f64/a8a/587f64a8af8ef032891376.png b/storage/app/uploads/public/587/f64/a8a/587f64a8af8ef032891376.png
new file mode 100644
index 0000000000..1e3922cf88
Binary files /dev/null and b/storage/app/uploads/public/587/f64/a8a/587f64a8af8ef032891376.png differ
diff --git a/storage/app/uploads/public/588/3a8/eb2/5883a8eb2f2ba003798173.png b/storage/app/uploads/public/588/3a8/eb2/5883a8eb2f2ba003798173.png
new file mode 100644
index 0000000000..de7be61a18
Binary files /dev/null and b/storage/app/uploads/public/588/3a8/eb2/5883a8eb2f2ba003798173.png differ
diff --git a/storage/app/uploads/public/589/720/444/5897204442764550068699.png b/storage/app/uploads/public/589/720/444/5897204442764550068699.png
new file mode 100644
index 0000000000..16559de9c5
Binary files /dev/null and b/storage/app/uploads/public/589/720/444/5897204442764550068699.png differ
diff --git a/storage/app/uploads/public/58a/2af/a78/58a2afa786ef8425289823.png b/storage/app/uploads/public/58a/2af/a78/58a2afa786ef8425289823.png
new file mode 100644
index 0000000000..0ca026b54e
Binary files /dev/null and b/storage/app/uploads/public/58a/2af/a78/58a2afa786ef8425289823.png differ
diff --git a/storage/app/uploads/public/58a/2b0/3ba/58a2b03ba2c8f570113490.png b/storage/app/uploads/public/58a/2b0/3ba/58a2b03ba2c8f570113490.png
new file mode 100644
index 0000000000..e8e0ea7885
Binary files /dev/null and b/storage/app/uploads/public/58a/2b0/3ba/58a2b03ba2c8f570113490.png differ
diff --git a/storage/app/uploads/public/58a/2b0/7d6/58a2b07d6a0d3283866737.png b/storage/app/uploads/public/58a/2b0/7d6/58a2b07d6a0d3283866737.png
new file mode 100644
index 0000000000..c1e6990a8c
Binary files /dev/null and b/storage/app/uploads/public/58a/2b0/7d6/58a2b07d6a0d3283866737.png differ
diff --git a/storage/app/uploads/public/58a/2b0/a61/58a2b0a614232280297653.png b/storage/app/uploads/public/58a/2b0/a61/58a2b0a614232280297653.png
new file mode 100644
index 0000000000..85c98f84b1
Binary files /dev/null and b/storage/app/uploads/public/58a/2b0/a61/58a2b0a614232280297653.png differ
diff --git a/storage/app/uploads/public/58a/2d3/e9c/58a2d3e9cb0c3164468589.png b/storage/app/uploads/public/58a/2d3/e9c/58a2d3e9cb0c3164468589.png
new file mode 100644
index 0000000000..a3f2a4a414
Binary files /dev/null and b/storage/app/uploads/public/58a/2d3/e9c/58a2d3e9cb0c3164468589.png differ
diff --git a/storage/app/uploads/public/58a/2d4/64e/58a2d464e02d3124881762.png b/storage/app/uploads/public/58a/2d4/64e/58a2d464e02d3124881762.png
new file mode 100644
index 0000000000..bc2627f7a0
Binary files /dev/null and b/storage/app/uploads/public/58a/2d4/64e/58a2d464e02d3124881762.png differ
diff --git a/storage/app/uploads/public/58a/2d4/b41/58a2d4b410fe2078012813.png b/storage/app/uploads/public/58a/2d4/b41/58a2d4b410fe2078012813.png
new file mode 100644
index 0000000000..678e780afc
Binary files /dev/null and b/storage/app/uploads/public/58a/2d4/b41/58a2d4b410fe2078012813.png differ
diff --git a/storage/app/uploads/public/58a/550/a29/58a550a2907f4652401620.png b/storage/app/uploads/public/58a/550/a29/58a550a2907f4652401620.png
new file mode 100644
index 0000000000..f2a566dbb9
Binary files /dev/null and b/storage/app/uploads/public/58a/550/a29/58a550a2907f4652401620.png differ
diff --git a/storage/app/uploads/public/58a/552/cfc/58a552cfc6788437479290.png b/storage/app/uploads/public/58a/552/cfc/58a552cfc6788437479290.png
new file mode 100644
index 0000000000..4fa0d54e12
Binary files /dev/null and b/storage/app/uploads/public/58a/552/cfc/58a552cfc6788437479290.png differ
diff --git a/storage/app/uploads/public/58a/553/79e/58a55379e5291817877456.png b/storage/app/uploads/public/58a/553/79e/58a55379e5291817877456.png
new file mode 100644
index 0000000000..24a564aba6
Binary files /dev/null and b/storage/app/uploads/public/58a/553/79e/58a55379e5291817877456.png differ
diff --git a/storage/app/uploads/public/58a/556/305/58a556305f702210654594.png b/storage/app/uploads/public/58a/556/305/58a556305f702210654594.png
new file mode 100644
index 0000000000..376c6255f1
Binary files /dev/null and b/storage/app/uploads/public/58a/556/305/58a556305f702210654594.png differ
diff --git a/storage/app/uploads/public/58c/800/19e/58c80019eb670861253577.jpg b/storage/app/uploads/public/58c/800/19e/58c80019eb670861253577.jpg
new file mode 100644
index 0000000000..20e53e8ecd
Binary files /dev/null and b/storage/app/uploads/public/58c/800/19e/58c80019eb670861253577.jpg differ
diff --git a/storage/app/uploads/public/58c/f94/436/58cf94436cbb7143315896.png b/storage/app/uploads/public/58c/f94/436/58cf94436cbb7143315896.png
new file mode 100644
index 0000000000..7e6e67858e
Binary files /dev/null and b/storage/app/uploads/public/58c/f94/436/58cf94436cbb7143315896.png differ
diff --git a/storage/app/uploads/public/58c/f94/cb4/58cf94cb4b03e456185017.png b/storage/app/uploads/public/58c/f94/cb4/58cf94cb4b03e456185017.png
new file mode 100644
index 0000000000..fd2500a138
Binary files /dev/null and b/storage/app/uploads/public/58c/f94/cb4/58cf94cb4b03e456185017.png differ
diff --git a/storage/app/uploads/public/58c/f95/fc0/58cf95fc09efc425880955.png b/storage/app/uploads/public/58c/f95/fc0/58cf95fc09efc425880955.png
new file mode 100644
index 0000000000..62d05667fe
Binary files /dev/null and b/storage/app/uploads/public/58c/f95/fc0/58cf95fc09efc425880955.png differ
diff --git a/storage/app/uploads/public/58c/f96/ba0/58cf96ba0eab4695875375.png b/storage/app/uploads/public/58c/f96/ba0/58cf96ba0eab4695875375.png
new file mode 100644
index 0000000000..fca81dfc87
Binary files /dev/null and b/storage/app/uploads/public/58c/f96/ba0/58cf96ba0eab4695875375.png differ
diff --git a/storage/app/uploads/public/58c/f97/61c/58cf9761c2bb6039053462.png b/storage/app/uploads/public/58c/f97/61c/58cf9761c2bb6039053462.png
new file mode 100644
index 0000000000..ce074786b7
Binary files /dev/null and b/storage/app/uploads/public/58c/f97/61c/58cf9761c2bb6039053462.png differ
diff --git a/storage/app/uploads/public/58c/f98/9f9/58cf989f96c55135974632.png b/storage/app/uploads/public/58c/f98/9f9/58cf989f96c55135974632.png
new file mode 100644
index 0000000000..c151fcba91
Binary files /dev/null and b/storage/app/uploads/public/58c/f98/9f9/58cf989f96c55135974632.png differ
diff --git a/storage/app/uploads/public/58c/fa9/089/58cfa9089eaff431223584.png b/storage/app/uploads/public/58c/fa9/089/58cfa9089eaff431223584.png
new file mode 100644
index 0000000000..0b6e2918b6
Binary files /dev/null and b/storage/app/uploads/public/58c/fa9/089/58cfa9089eaff431223584.png differ
diff --git a/storage/app/uploads/public/58c/fa9/0b7/58cfa90b73b36731179242.png b/storage/app/uploads/public/58c/fa9/0b7/58cfa90b73b36731179242.png
new file mode 100644
index 0000000000..bbd7e0aa9c
Binary files /dev/null and b/storage/app/uploads/public/58c/fa9/0b7/58cfa90b73b36731179242.png differ
diff --git a/storage/app/uploads/public/58d/a19/bd7/58da19bd70642796203728.png b/storage/app/uploads/public/58d/a19/bd7/58da19bd70642796203728.png
new file mode 100644
index 0000000000..591921b10a
Binary files /dev/null and b/storage/app/uploads/public/58d/a19/bd7/58da19bd70642796203728.png differ
diff --git a/storage/app/uploads/public/58e/4e7/bf6/58e4e7bf6f4f8510150920.png b/storage/app/uploads/public/58e/4e7/bf6/58e4e7bf6f4f8510150920.png
new file mode 100644
index 0000000000..5c514c6de8
Binary files /dev/null and b/storage/app/uploads/public/58e/4e7/bf6/58e4e7bf6f4f8510150920.png differ
diff --git a/storage/app/uploads/public/58e/4eb/cb6/58e4ebcb63d98659868573.png b/storage/app/uploads/public/58e/4eb/cb6/58e4ebcb63d98659868573.png
new file mode 100644
index 0000000000..5c514c6de8
Binary files /dev/null and b/storage/app/uploads/public/58e/4eb/cb6/58e4ebcb63d98659868573.png differ
diff --git a/storage/app/uploads/public/58e/c05/93c/58ec0593cf4c6287179572.gif b/storage/app/uploads/public/58e/c05/93c/58ec0593cf4c6287179572.gif
new file mode 100644
index 0000000000..31252b1013
Binary files /dev/null and b/storage/app/uploads/public/58e/c05/93c/58ec0593cf4c6287179572.gif differ
diff --git a/storage/app/uploads/public/58e/e76/0ca/58ee760ca31aa290366551.png b/storage/app/uploads/public/58e/e76/0ca/58ee760ca31aa290366551.png
new file mode 100644
index 0000000000..fc37dac200
Binary files /dev/null and b/storage/app/uploads/public/58e/e76/0ca/58ee760ca31aa290366551.png differ
diff --git a/storage/app/uploads/public/590/c34/14b/590c3414b8967571323075.png b/storage/app/uploads/public/590/c34/14b/590c3414b8967571323075.png
new file mode 100644
index 0000000000..cda4cb359e
Binary files /dev/null and b/storage/app/uploads/public/590/c34/14b/590c3414b8967571323075.png differ
diff --git a/storage/app/uploads/public/590/c35/539/590c355394258472902485.png b/storage/app/uploads/public/590/c35/539/590c355394258472902485.png
new file mode 100644
index 0000000000..4995c7f4a8
Binary files /dev/null and b/storage/app/uploads/public/590/c35/539/590c355394258472902485.png differ
diff --git a/storage/app/uploads/public/590/c35/f44/590c35f44cc11916561896.png b/storage/app/uploads/public/590/c35/f44/590c35f44cc11916561896.png
new file mode 100644
index 0000000000..fee1c2f99c
Binary files /dev/null and b/storage/app/uploads/public/590/c35/f44/590c35f44cc11916561896.png differ
diff --git a/storage/app/uploads/public/590/c36/96e/590c3696eaecc257500162.png b/storage/app/uploads/public/590/c36/96e/590c3696eaecc257500162.png
new file mode 100644
index 0000000000..d4468fbb30
Binary files /dev/null and b/storage/app/uploads/public/590/c36/96e/590c3696eaecc257500162.png differ
diff --git a/storage/app/uploads/public/590/c36/fc0/590c36fc0be2c537134807.jpg b/storage/app/uploads/public/590/c36/fc0/590c36fc0be2c537134807.jpg
new file mode 100644
index 0000000000..e27d9df7ec
Binary files /dev/null and b/storage/app/uploads/public/590/c36/fc0/590c36fc0be2c537134807.jpg differ
diff --git a/storage/app/uploads/public/590/c37/aea/590c37aea7cbb668571643.png b/storage/app/uploads/public/590/c37/aea/590c37aea7cbb668571643.png
new file mode 100644
index 0000000000..465e950be3
Binary files /dev/null and b/storage/app/uploads/public/590/c37/aea/590c37aea7cbb668571643.png differ
diff --git a/storage/app/uploads/public/590/cbd/d2d/590cbdd2d6142924846277.png b/storage/app/uploads/public/590/cbd/d2d/590cbdd2d6142924846277.png
new file mode 100644
index 0000000000..947cf07762
Binary files /dev/null and b/storage/app/uploads/public/590/cbd/d2d/590cbdd2d6142924846277.png differ
diff --git a/storage/app/uploads/public/591/991/65f/59199165f24e2014770050.jpg b/storage/app/uploads/public/591/991/65f/59199165f24e2014770050.jpg
new file mode 100644
index 0000000000..c243fd4dc4
Binary files /dev/null and b/storage/app/uploads/public/591/991/65f/59199165f24e2014770050.jpg differ
diff --git a/storage/app/uploads/public/592/29d/1fe/59229d1fe233b092175821.jpg b/storage/app/uploads/public/592/29d/1fe/59229d1fe233b092175821.jpg
new file mode 100644
index 0000000000..09bcc2b589
Binary files /dev/null and b/storage/app/uploads/public/592/29d/1fe/59229d1fe233b092175821.jpg differ
diff --git a/storage/app/uploads/public/592/2a0/40c/5922a040c5d57804831656.png b/storage/app/uploads/public/592/2a0/40c/5922a040c5d57804831656.png
new file mode 100644
index 0000000000..788e9e2b20
Binary files /dev/null and b/storage/app/uploads/public/592/2a0/40c/5922a040c5d57804831656.png differ
diff --git a/storage/app/uploads/public/592/2ba/912/5922ba912fb03511493375.jpg b/storage/app/uploads/public/592/2ba/912/5922ba912fb03511493375.jpg
new file mode 100644
index 0000000000..f664b7d2bb
Binary files /dev/null and b/storage/app/uploads/public/592/2ba/912/5922ba912fb03511493375.jpg differ
diff --git a/storage/app/uploads/public/592/7e7/b2c/5927e7b2cc484269104260.png b/storage/app/uploads/public/592/7e7/b2c/5927e7b2cc484269104260.png
new file mode 100644
index 0000000000..2f5ad02344
Binary files /dev/null and b/storage/app/uploads/public/592/7e7/b2c/5927e7b2cc484269104260.png differ
diff --git a/storage/app/uploads/public/592/7e8/a1b/5927e8a1b1575198847162.png b/storage/app/uploads/public/592/7e8/a1b/5927e8a1b1575198847162.png
new file mode 100644
index 0000000000..475488bc1a
Binary files /dev/null and b/storage/app/uploads/public/592/7e8/a1b/5927e8a1b1575198847162.png differ
diff --git a/storage/app/uploads/public/592/7ea/0b1/5927ea0b10be2407278022.jpg b/storage/app/uploads/public/592/7ea/0b1/5927ea0b10be2407278022.jpg
new file mode 100644
index 0000000000..979444114d
Binary files /dev/null and b/storage/app/uploads/public/592/7ea/0b1/5927ea0b10be2407278022.jpg differ
diff --git a/storage/app/uploads/public/592/7ea/d2a/5927ead2a230f093372035.jpg b/storage/app/uploads/public/592/7ea/d2a/5927ead2a230f093372035.jpg
new file mode 100644
index 0000000000..c2a69966e3
Binary files /dev/null and b/storage/app/uploads/public/592/7ea/d2a/5927ead2a230f093372035.jpg differ
diff --git a/storage/app/uploads/public/592/7eb/9cc/5927eb9cc3086641036597.jpg b/storage/app/uploads/public/592/7eb/9cc/5927eb9cc3086641036597.jpg
new file mode 100644
index 0000000000..427996c35a
Binary files /dev/null and b/storage/app/uploads/public/592/7eb/9cc/5927eb9cc3086641036597.jpg differ
diff --git a/storage/app/uploads/public/592/7ec/31b/5927ec31b9d5e836836643.jpg b/storage/app/uploads/public/592/7ec/31b/5927ec31b9d5e836836643.jpg
new file mode 100644
index 0000000000..d08339ee28
Binary files /dev/null and b/storage/app/uploads/public/592/7ec/31b/5927ec31b9d5e836836643.jpg differ
diff --git a/storage/app/uploads/public/594/0fe/d6e/5940fed6ec836901996527.png b/storage/app/uploads/public/594/0fe/d6e/5940fed6ec836901996527.png
new file mode 100644
index 0000000000..a65dde0da6
Binary files /dev/null and b/storage/app/uploads/public/594/0fe/d6e/5940fed6ec836901996527.png differ
diff --git a/storage/app/uploads/public/594/103/ff1/594103ff1f172007468975.jpg b/storage/app/uploads/public/594/103/ff1/594103ff1f172007468975.jpg
new file mode 100644
index 0000000000..9836221375
Binary files /dev/null and b/storage/app/uploads/public/594/103/ff1/594103ff1f172007468975.jpg differ
diff --git a/storage/app/uploads/public/594/915/bca/594915bca8522442127210.jpg b/storage/app/uploads/public/594/915/bca/594915bca8522442127210.jpg
new file mode 100644
index 0000000000..22238fdd90
Binary files /dev/null and b/storage/app/uploads/public/594/915/bca/594915bca8522442127210.jpg differ
diff --git a/storage/app/uploads/public/594/95a/1a5/59495a1a5ee9e468550721.jpg b/storage/app/uploads/public/594/95a/1a5/59495a1a5ee9e468550721.jpg
new file mode 100644
index 0000000000..a514b7e71d
Binary files /dev/null and b/storage/app/uploads/public/594/95a/1a5/59495a1a5ee9e468550721.jpg differ
diff --git a/storage/app/uploads/public/594/95b/f57/59495bf57f80d628315090.jpg b/storage/app/uploads/public/594/95b/f57/59495bf57f80d628315090.jpg
new file mode 100644
index 0000000000..357cbd46c6
Binary files /dev/null and b/storage/app/uploads/public/594/95b/f57/59495bf57f80d628315090.jpg differ
diff --git a/storage/app/uploads/public/594/95c/2a0/59495c2a0e512625141381.jpg b/storage/app/uploads/public/594/95c/2a0/59495c2a0e512625141381.jpg
new file mode 100644
index 0000000000..23ebba9524
Binary files /dev/null and b/storage/app/uploads/public/594/95c/2a0/59495c2a0e512625141381.jpg differ
diff --git a/storage/app/uploads/public/594/95c/b0c/59495cb0c04e8187829021.png b/storage/app/uploads/public/594/95c/b0c/59495cb0c04e8187829021.png
new file mode 100644
index 0000000000..019fac2723
Binary files /dev/null and b/storage/app/uploads/public/594/95c/b0c/59495cb0c04e8187829021.png differ
diff --git a/storage/app/uploads/public/594/95c/c3e/59495cc3ee726259849095.png b/storage/app/uploads/public/594/95c/c3e/59495cc3ee726259849095.png
new file mode 100644
index 0000000000..a11fea8475
Binary files /dev/null and b/storage/app/uploads/public/594/95c/c3e/59495cc3ee726259849095.png differ
diff --git a/storage/app/uploads/public/594/ffc/f90/594ffcf90df4b624442486.jpg b/storage/app/uploads/public/594/ffc/f90/594ffcf90df4b624442486.jpg
new file mode 100644
index 0000000000..d0d89c2d65
Binary files /dev/null and b/storage/app/uploads/public/594/ffc/f90/594ffcf90df4b624442486.jpg differ
diff --git a/storage/app/uploads/public/595/b81/4a7/595b814a74a20871982843.jpg b/storage/app/uploads/public/595/b81/4a7/595b814a74a20871982843.jpg
new file mode 100644
index 0000000000..8042cb1040
Binary files /dev/null and b/storage/app/uploads/public/595/b81/4a7/595b814a74a20871982843.jpg differ
diff --git a/storage/app/uploads/public/595/b82/652/595b826525701992727295.jpg b/storage/app/uploads/public/595/b82/652/595b826525701992727295.jpg
new file mode 100644
index 0000000000..91fe26e273
Binary files /dev/null and b/storage/app/uploads/public/595/b82/652/595b826525701992727295.jpg differ
diff --git a/storage/app/uploads/public/595/b82/c81/595b82c81dd40730595228.png b/storage/app/uploads/public/595/b82/c81/595b82c81dd40730595228.png
new file mode 100644
index 0000000000..96d80eb6f3
Binary files /dev/null and b/storage/app/uploads/public/595/b82/c81/595b82c81dd40730595228.png differ
diff --git a/storage/app/uploads/public/595/b82/cbc/595b82cbc7147025097339.png b/storage/app/uploads/public/595/b82/cbc/595b82cbc7147025097339.png
new file mode 100644
index 0000000000..09069cc407
Binary files /dev/null and b/storage/app/uploads/public/595/b82/cbc/595b82cbc7147025097339.png differ
diff --git a/storage/app/uploads/public/595/b83/853/595b838536ffb251715456.png b/storage/app/uploads/public/595/b83/853/595b838536ffb251715456.png
new file mode 100644
index 0000000000..2450a38aee
Binary files /dev/null and b/storage/app/uploads/public/595/b83/853/595b838536ffb251715456.png differ
diff --git a/storage/app/uploads/public/595/b84/355/595b843552abb435140000.jpg b/storage/app/uploads/public/595/b84/355/595b843552abb435140000.jpg
new file mode 100644
index 0000000000..462ea0e6bd
Binary files /dev/null and b/storage/app/uploads/public/595/b84/355/595b843552abb435140000.jpg differ
diff --git a/storage/app/uploads/public/596/62b/1c4/59662b1c4ffa8859295653.png b/storage/app/uploads/public/596/62b/1c4/59662b1c4ffa8859295653.png
new file mode 100644
index 0000000000..34bc29dfab
Binary files /dev/null and b/storage/app/uploads/public/596/62b/1c4/59662b1c4ffa8859295653.png differ
diff --git a/storage/app/uploads/public/596/f53/f05/596f53f05847d712164688.png b/storage/app/uploads/public/596/f53/f05/596f53f05847d712164688.png
new file mode 100644
index 0000000000..9757e5b32b
Binary files /dev/null and b/storage/app/uploads/public/596/f53/f05/596f53f05847d712164688.png differ
diff --git a/storage/app/uploads/public/597/8d3/287/5978d3287b66e846344366.jpg b/storage/app/uploads/public/597/8d3/287/5978d3287b66e846344366.jpg
new file mode 100644
index 0000000000..ef2c6402a0
Binary files /dev/null and b/storage/app/uploads/public/597/8d3/287/5978d3287b66e846344366.jpg differ
diff --git a/storage/app/uploads/public/597/8e2/fc4/5978e2fc4ffb4676085667.jpg b/storage/app/uploads/public/597/8e2/fc4/5978e2fc4ffb4676085667.jpg
new file mode 100644
index 0000000000..ef2c6402a0
Binary files /dev/null and b/storage/app/uploads/public/597/8e2/fc4/5978e2fc4ffb4676085667.jpg differ
diff --git a/storage/app/uploads/public/598/3d8/bca/5983d8bcaa467213846247.png b/storage/app/uploads/public/598/3d8/bca/5983d8bcaa467213846247.png
new file mode 100644
index 0000000000..908a34181d
Binary files /dev/null and b/storage/app/uploads/public/598/3d8/bca/5983d8bcaa467213846247.png differ
diff --git a/storage/app/uploads/public/598/c4c/b22/598c4cb22c32c629530888.png b/storage/app/uploads/public/598/c4c/b22/598c4cb22c32c629530888.png
new file mode 100644
index 0000000000..ec31b1c937
Binary files /dev/null and b/storage/app/uploads/public/598/c4c/b22/598c4cb22c32c629530888.png differ
diff --git a/storage/app/uploads/public/598/fb6/1bb/598fb61bb576f136583931.png b/storage/app/uploads/public/598/fb6/1bb/598fb61bb576f136583931.png
new file mode 100644
index 0000000000..5e69c1fc18
Binary files /dev/null and b/storage/app/uploads/public/598/fb6/1bb/598fb61bb576f136583931.png differ
diff --git a/storage/app/uploads/public/599/5a4/6e1/5995a46e15598958234244.jpg b/storage/app/uploads/public/599/5a4/6e1/5995a46e15598958234244.jpg
new file mode 100644
index 0000000000..eb6cefd2a6
Binary files /dev/null and b/storage/app/uploads/public/599/5a4/6e1/5995a46e15598958234244.jpg differ
diff --git a/storage/app/uploads/public/599/5a4/d97/5995a4d970d4a365374135.png b/storage/app/uploads/public/599/5a4/d97/5995a4d970d4a365374135.png
new file mode 100644
index 0000000000..f3354c6400
Binary files /dev/null and b/storage/app/uploads/public/599/5a4/d97/5995a4d970d4a365374135.png differ
diff --git a/storage/app/uploads/public/599/5a4/dea/5995a4deae4dd930198597.png b/storage/app/uploads/public/599/5a4/dea/5995a4deae4dd930198597.png
new file mode 100644
index 0000000000..a814e4edf7
Binary files /dev/null and b/storage/app/uploads/public/599/5a4/dea/5995a4deae4dd930198597.png differ
diff --git a/storage/app/uploads/public/599/5a5/a31/5995a5a31d41e842523647.png b/storage/app/uploads/public/599/5a5/a31/5995a5a31d41e842523647.png
new file mode 100644
index 0000000000..23356433f1
Binary files /dev/null and b/storage/app/uploads/public/599/5a5/a31/5995a5a31d41e842523647.png differ
diff --git a/storage/app/uploads/public/599/5a6/364/5995a6364baff982387713.png b/storage/app/uploads/public/599/5a6/364/5995a6364baff982387713.png
new file mode 100644
index 0000000000..fe93730600
Binary files /dev/null and b/storage/app/uploads/public/599/5a6/364/5995a6364baff982387713.png differ
diff --git a/storage/app/uploads/public/599/5a6/3a4/5995a63a4ca20374367819.png b/storage/app/uploads/public/599/5a6/3a4/5995a63a4ca20374367819.png
new file mode 100644
index 0000000000..091ee86aaf
Binary files /dev/null and b/storage/app/uploads/public/599/5a6/3a4/5995a63a4ca20374367819.png differ
diff --git a/storage/app/uploads/public/599/5a6/fee/5995a6fee0b4f672027802.jpg b/storage/app/uploads/public/599/5a6/fee/5995a6fee0b4f672027802.jpg
new file mode 100644
index 0000000000..d4cff82dcc
Binary files /dev/null and b/storage/app/uploads/public/599/5a6/fee/5995a6fee0b4f672027802.jpg differ
diff --git a/storage/app/uploads/public/599/5a7/02a/5995a702a6701415701812.jpg b/storage/app/uploads/public/599/5a7/02a/5995a702a6701415701812.jpg
new file mode 100644
index 0000000000..056974481b
Binary files /dev/null and b/storage/app/uploads/public/599/5a7/02a/5995a702a6701415701812.jpg differ
diff --git a/storage/app/uploads/public/599/5a7/b51/5995a7b516ec9895409264.jpg b/storage/app/uploads/public/599/5a7/b51/5995a7b516ec9895409264.jpg
new file mode 100644
index 0000000000..36a18e0237
Binary files /dev/null and b/storage/app/uploads/public/599/5a7/b51/5995a7b516ec9895409264.jpg differ
diff --git a/storage/app/uploads/public/599/5a8/379/5995a83795ffb620004009.png b/storage/app/uploads/public/599/5a8/379/5995a83795ffb620004009.png
new file mode 100644
index 0000000000..0f60b01f7d
Binary files /dev/null and b/storage/app/uploads/public/599/5a8/379/5995a83795ffb620004009.png differ
diff --git a/storage/app/uploads/public/599/aab/a95/599aaba953c71988642433.jpg b/storage/app/uploads/public/599/aab/a95/599aaba953c71988642433.jpg
new file mode 100644
index 0000000000..9f84ca2e42
Binary files /dev/null and b/storage/app/uploads/public/599/aab/a95/599aaba953c71988642433.jpg differ
diff --git a/storage/app/uploads/public/599/f48/cc5/599f48cc5fc6e217155476.jpg b/storage/app/uploads/public/599/f48/cc5/599f48cc5fc6e217155476.jpg
new file mode 100644
index 0000000000..adc08b3d4c
Binary files /dev/null and b/storage/app/uploads/public/599/f48/cc5/599f48cc5fc6e217155476.jpg differ
diff --git a/storage/app/uploads/public/59a/00b/98c/59a00b98c537b413433168.png b/storage/app/uploads/public/59a/00b/98c/59a00b98c537b413433168.png
new file mode 100644
index 0000000000..42de726004
Binary files /dev/null and b/storage/app/uploads/public/59a/00b/98c/59a00b98c537b413433168.png differ
diff --git a/storage/app/uploads/public/59a/1fa/f68/59a1faf68858c570489833.png b/storage/app/uploads/public/59a/1fa/f68/59a1faf68858c570489833.png
new file mode 100644
index 0000000000..d8b9e0d7d3
Binary files /dev/null and b/storage/app/uploads/public/59a/1fa/f68/59a1faf68858c570489833.png differ
diff --git a/storage/app/uploads/public/59a/1fd/b4e/59a1fdb4e28d1249869202.png b/storage/app/uploads/public/59a/1fd/b4e/59a1fdb4e28d1249869202.png
new file mode 100644
index 0000000000..a0f2cbd090
Binary files /dev/null and b/storage/app/uploads/public/59a/1fd/b4e/59a1fdb4e28d1249869202.png differ
diff --git a/storage/app/uploads/public/59a/1fe/5c5/59a1fe5c53457648503006.jpg b/storage/app/uploads/public/59a/1fe/5c5/59a1fe5c53457648503006.jpg
new file mode 100644
index 0000000000..e0f0bb9331
Binary files /dev/null and b/storage/app/uploads/public/59a/1fe/5c5/59a1fe5c53457648503006.jpg differ
diff --git a/storage/app/uploads/public/59a/2bc/c46/59a2bcc46cbad924037762.png b/storage/app/uploads/public/59a/2bc/c46/59a2bcc46cbad924037762.png
new file mode 100644
index 0000000000..d59fbb35fb
Binary files /dev/null and b/storage/app/uploads/public/59a/2bc/c46/59a2bcc46cbad924037762.png differ
diff --git a/storage/app/uploads/public/59a/6e8/e45/59a6e8e45038d813649865.png b/storage/app/uploads/public/59a/6e8/e45/59a6e8e45038d813649865.png
new file mode 100644
index 0000000000..c623e2f2c8
Binary files /dev/null and b/storage/app/uploads/public/59a/6e8/e45/59a6e8e45038d813649865.png differ
diff --git a/storage/app/uploads/public/59a/873/435/59a87343562c8216231867.png b/storage/app/uploads/public/59a/873/435/59a87343562c8216231867.png
new file mode 100644
index 0000000000..8c58fc3024
Binary files /dev/null and b/storage/app/uploads/public/59a/873/435/59a87343562c8216231867.png differ
diff --git a/storage/app/uploads/public/59b/a65/2bd/59ba652bdae7c275103634.png b/storage/app/uploads/public/59b/a65/2bd/59ba652bdae7c275103634.png
new file mode 100644
index 0000000000..4b535fb9d7
Binary files /dev/null and b/storage/app/uploads/public/59b/a65/2bd/59ba652bdae7c275103634.png differ
diff --git a/storage/app/uploads/public/59b/a66/132/59ba661323742975111974.jpg b/storage/app/uploads/public/59b/a66/132/59ba661323742975111974.jpg
new file mode 100644
index 0000000000..ace2fcdad4
Binary files /dev/null and b/storage/app/uploads/public/59b/a66/132/59ba661323742975111974.jpg differ
diff --git a/storage/app/uploads/public/59b/a66/4f5/59ba664f5c3ba765046459.png b/storage/app/uploads/public/59b/a66/4f5/59ba664f5c3ba765046459.png
new file mode 100644
index 0000000000..bfd00bf39c
Binary files /dev/null and b/storage/app/uploads/public/59b/a66/4f5/59ba664f5c3ba765046459.png differ
diff --git a/storage/app/uploads/public/59b/a67/326/59ba67326cd06141675528.png b/storage/app/uploads/public/59b/a67/326/59ba67326cd06141675528.png
new file mode 100644
index 0000000000..0194e45392
Binary files /dev/null and b/storage/app/uploads/public/59b/a67/326/59ba67326cd06141675528.png differ
diff --git a/storage/app/uploads/public/59b/a67/915/59ba679152f4b878765850.png b/storage/app/uploads/public/59b/a67/915/59ba679152f4b878765850.png
new file mode 100644
index 0000000000..04d9d4371a
Binary files /dev/null and b/storage/app/uploads/public/59b/a67/915/59ba679152f4b878765850.png differ
diff --git a/storage/app/uploads/public/59b/efc/4aa/59befc4aa50f7635149686.png b/storage/app/uploads/public/59b/efc/4aa/59befc4aa50f7635149686.png
new file mode 100644
index 0000000000..53cac1b5c6
Binary files /dev/null and b/storage/app/uploads/public/59b/efc/4aa/59befc4aa50f7635149686.png differ
diff --git a/storage/app/uploads/public/59c/821/f4a/59c821f4a5e6c895938383.jpg b/storage/app/uploads/public/59c/821/f4a/59c821f4a5e6c895938383.jpg
new file mode 100644
index 0000000000..a06ac8c89e
Binary files /dev/null and b/storage/app/uploads/public/59c/821/f4a/59c821f4a5e6c895938383.jpg differ
diff --git a/storage/app/uploads/public/59e/119/c08/59e119c088aec337308530.png b/storage/app/uploads/public/59e/119/c08/59e119c088aec337308530.png
new file mode 100644
index 0000000000..a03c43054a
Binary files /dev/null and b/storage/app/uploads/public/59e/119/c08/59e119c088aec337308530.png differ
diff --git a/storage/app/uploads/public/59e/850/b39/59e850b39e220163403707.png b/storage/app/uploads/public/59e/850/b39/59e850b39e220163403707.png
new file mode 100644
index 0000000000..394f2b2758
Binary files /dev/null and b/storage/app/uploads/public/59e/850/b39/59e850b39e220163403707.png differ
diff --git a/storage/app/uploads/public/59e/b8d/bb0/59eb8dbb07c0c023281185.png b/storage/app/uploads/public/59e/b8d/bb0/59eb8dbb07c0c023281185.png
new file mode 100644
index 0000000000..e4149c3fde
Binary files /dev/null and b/storage/app/uploads/public/59e/b8d/bb0/59eb8dbb07c0c023281185.png differ
diff --git a/storage/app/uploads/public/59e/b96/e71/59eb96e712765766078430.png b/storage/app/uploads/public/59e/b96/e71/59eb96e712765766078430.png
new file mode 100644
index 0000000000..6448894d48
Binary files /dev/null and b/storage/app/uploads/public/59e/b96/e71/59eb96e712765766078430.png differ
diff --git a/storage/app/uploads/public/59f/71e/c9b/59f71ec9b35b2590240155.png b/storage/app/uploads/public/59f/71e/c9b/59f71ec9b35b2590240155.png
new file mode 100644
index 0000000000..b0e936ae12
Binary files /dev/null and b/storage/app/uploads/public/59f/71e/c9b/59f71ec9b35b2590240155.png differ
diff --git a/storage/app/uploads/public/59f/71f/055/59f71f0558d2e508341373.gif b/storage/app/uploads/public/59f/71f/055/59f71f0558d2e508341373.gif
new file mode 100644
index 0000000000..d1ece0404d
Binary files /dev/null and b/storage/app/uploads/public/59f/71f/055/59f71f0558d2e508341373.gif differ
diff --git a/storage/app/uploads/public/59f/725/a1a/59f725a1a56c2535866153.png b/storage/app/uploads/public/59f/725/a1a/59f725a1a56c2535866153.png
new file mode 100644
index 0000000000..72d98503b6
Binary files /dev/null and b/storage/app/uploads/public/59f/725/a1a/59f725a1a56c2535866153.png differ
diff --git a/storage/app/uploads/public/59f/8c3/c91/59f8c3c91a87f065753289.png b/storage/app/uploads/public/59f/8c3/c91/59f8c3c91a87f065753289.png
new file mode 100644
index 0000000000..065e48f546
Binary files /dev/null and b/storage/app/uploads/public/59f/8c3/c91/59f8c3c91a87f065753289.png differ
diff --git a/storage/app/uploads/public/59f/adb/9c3/59fadb9c3642a656863227.png b/storage/app/uploads/public/59f/adb/9c3/59fadb9c3642a656863227.png
new file mode 100644
index 0000000000..a6113fea50
Binary files /dev/null and b/storage/app/uploads/public/59f/adb/9c3/59fadb9c3642a656863227.png differ
diff --git a/storage/app/uploads/public/59f/adc/7a2/59fadc7a26b70933861977.jpg b/storage/app/uploads/public/59f/adc/7a2/59fadc7a26b70933861977.jpg
new file mode 100644
index 0000000000..824296d3b1
Binary files /dev/null and b/storage/app/uploads/public/59f/adc/7a2/59fadc7a26b70933861977.jpg differ
diff --git a/storage/app/uploads/public/59f/ade/6d5/59fade6d5a448454096107.png b/storage/app/uploads/public/59f/ade/6d5/59fade6d5a448454096107.png
new file mode 100644
index 0000000000..fc9f561a34
Binary files /dev/null and b/storage/app/uploads/public/59f/ade/6d5/59fade6d5a448454096107.png differ
diff --git a/storage/app/uploads/public/59f/ade/cd9/59fadecd9b4e4856655804.png b/storage/app/uploads/public/59f/ade/cd9/59fadecd9b4e4856655804.png
new file mode 100644
index 0000000000..47b8d8c30d
Binary files /dev/null and b/storage/app/uploads/public/59f/ade/cd9/59fadecd9b4e4856655804.png differ
diff --git a/storage/app/uploads/public/59f/adf/65c/59fadf65c1c56986991144.jpg b/storage/app/uploads/public/59f/adf/65c/59fadf65c1c56986991144.jpg
new file mode 100644
index 0000000000..17e046702a
Binary files /dev/null and b/storage/app/uploads/public/59f/adf/65c/59fadf65c1c56986991144.jpg differ
diff --git a/storage/app/uploads/public/59f/ae0/589/59fae05898ae4060724546.jpg b/storage/app/uploads/public/59f/ae0/589/59fae05898ae4060724546.jpg
new file mode 100644
index 0000000000..4b756f0b55
Binary files /dev/null and b/storage/app/uploads/public/59f/ae0/589/59fae05898ae4060724546.jpg differ
diff --git a/storage/app/uploads/public/59f/ae0/5b1/59fae05b16335267572600.jpg b/storage/app/uploads/public/59f/ae0/5b1/59fae05b16335267572600.jpg
new file mode 100644
index 0000000000..f0db67293a
Binary files /dev/null and b/storage/app/uploads/public/59f/ae0/5b1/59fae05b16335267572600.jpg differ
diff --git a/storage/app/uploads/public/59f/ae0/ee3/59fae0ee3ddb7092514258.png b/storage/app/uploads/public/59f/ae0/ee3/59fae0ee3ddb7092514258.png
new file mode 100644
index 0000000000..17fcfaa6a7
Binary files /dev/null and b/storage/app/uploads/public/59f/ae0/ee3/59fae0ee3ddb7092514258.png differ
diff --git a/storage/app/uploads/public/59f/ae1/598/59fae15985b27201513403.jpg b/storage/app/uploads/public/59f/ae1/598/59fae15985b27201513403.jpg
new file mode 100644
index 0000000000..75eeacb095
Binary files /dev/null and b/storage/app/uploads/public/59f/ae1/598/59fae15985b27201513403.jpg differ
diff --git a/storage/app/uploads/public/59f/ae2/11c/59fae211ca513356299250.jpg b/storage/app/uploads/public/59f/ae2/11c/59fae211ca513356299250.jpg
new file mode 100644
index 0000000000..351858ca11
Binary files /dev/null and b/storage/app/uploads/public/59f/ae2/11c/59fae211ca513356299250.jpg differ
diff --git a/storage/app/uploads/public/59f/f1b/66d/59ff1b66d1fbe773318157.png b/storage/app/uploads/public/59f/f1b/66d/59ff1b66d1fbe773318157.png
new file mode 100644
index 0000000000..b86f0a1838
Binary files /dev/null and b/storage/app/uploads/public/59f/f1b/66d/59ff1b66d1fbe773318157.png differ
diff --git a/storage/app/uploads/public/5a0/060/6e2/5a00606e2f006284076643.png b/storage/app/uploads/public/5a0/060/6e2/5a00606e2f006284076643.png
new file mode 100644
index 0000000000..bfd3ac0362
Binary files /dev/null and b/storage/app/uploads/public/5a0/060/6e2/5a00606e2f006284076643.png differ
diff --git a/storage/app/uploads/public/5a0/1cb/4ce/5a01cb4ce7921429806565.png b/storage/app/uploads/public/5a0/1cb/4ce/5a01cb4ce7921429806565.png
new file mode 100644
index 0000000000..85b1032b93
Binary files /dev/null and b/storage/app/uploads/public/5a0/1cb/4ce/5a01cb4ce7921429806565.png differ
diff --git a/storage/app/uploads/public/5a0/884/b12/5a0884b1276b7965352502.png b/storage/app/uploads/public/5a0/884/b12/5a0884b1276b7965352502.png
new file mode 100644
index 0000000000..ff409805f6
Binary files /dev/null and b/storage/app/uploads/public/5a0/884/b12/5a0884b1276b7965352502.png differ
diff --git a/storage/app/uploads/public/5a0/c9d/faa/5a0c9dfaabeed972339224.jpg b/storage/app/uploads/public/5a0/c9d/faa/5a0c9dfaabeed972339224.jpg
new file mode 100644
index 0000000000..ed719e6d98
Binary files /dev/null and b/storage/app/uploads/public/5a0/c9d/faa/5a0c9dfaabeed972339224.jpg differ
diff --git a/storage/app/uploads/public/5a1/578/034/5a1578034db00415708461.png b/storage/app/uploads/public/5a1/578/034/5a1578034db00415708461.png
new file mode 100644
index 0000000000..2134691385
Binary files /dev/null and b/storage/app/uploads/public/5a1/578/034/5a1578034db00415708461.png differ
diff --git a/storage/app/uploads/public/5a1/5de/ee5/5a15deee52d15217381472.png b/storage/app/uploads/public/5a1/5de/ee5/5a15deee52d15217381472.png
new file mode 100644
index 0000000000..3dc2c4204e
Binary files /dev/null and b/storage/app/uploads/public/5a1/5de/ee5/5a15deee52d15217381472.png differ
diff --git a/storage/app/uploads/public/5a1/8a8/a92/5a18a8a92779a993178386.png b/storage/app/uploads/public/5a1/8a8/a92/5a18a8a92779a993178386.png
new file mode 100644
index 0000000000..5100651877
Binary files /dev/null and b/storage/app/uploads/public/5a1/8a8/a92/5a18a8a92779a993178386.png differ
diff --git a/storage/app/uploads/public/5a1/b3d/3f2/5a1b3d3f23c11640221120.png b/storage/app/uploads/public/5a1/b3d/3f2/5a1b3d3f23c11640221120.png
new file mode 100644
index 0000000000..d129f4b1d8
Binary files /dev/null and b/storage/app/uploads/public/5a1/b3d/3f2/5a1b3d3f23c11640221120.png differ
diff --git a/storage/app/uploads/public/5a2/01a/2d7/5a201a2d7a27e423350304.jpg b/storage/app/uploads/public/5a2/01a/2d7/5a201a2d7a27e423350304.jpg
new file mode 100644
index 0000000000..f3490287b0
Binary files /dev/null and b/storage/app/uploads/public/5a2/01a/2d7/5a201a2d7a27e423350304.jpg differ
diff --git a/storage/app/uploads/public/5a2/422/3b0/5a24223b08a3b535873636.png b/storage/app/uploads/public/5a2/422/3b0/5a24223b08a3b535873636.png
new file mode 100644
index 0000000000..ca7ac7cde6
Binary files /dev/null and b/storage/app/uploads/public/5a2/422/3b0/5a24223b08a3b535873636.png differ
diff --git a/storage/app/uploads/public/5a2/667/0c1/5a26670c10f6e556089277.jpg b/storage/app/uploads/public/5a2/667/0c1/5a26670c10f6e556089277.jpg
new file mode 100644
index 0000000000..8ef89656c4
Binary files /dev/null and b/storage/app/uploads/public/5a2/667/0c1/5a26670c10f6e556089277.jpg differ
diff --git a/storage/app/uploads/public/5a2/667/59b/5a266759b5be9948536480.jpg b/storage/app/uploads/public/5a2/667/59b/5a266759b5be9948536480.jpg
new file mode 100644
index 0000000000..d10ddea4e4
Binary files /dev/null and b/storage/app/uploads/public/5a2/667/59b/5a266759b5be9948536480.jpg differ
diff --git a/storage/app/uploads/public/5a2/667/9f5/5a26679f56d53373043307.jpg b/storage/app/uploads/public/5a2/667/9f5/5a26679f56d53373043307.jpg
new file mode 100644
index 0000000000..b48253e33a
Binary files /dev/null and b/storage/app/uploads/public/5a2/667/9f5/5a26679f56d53373043307.jpg differ
diff --git a/storage/app/uploads/public/5a2/673/8a3/5a26738a31155771786730.jpg b/storage/app/uploads/public/5a2/673/8a3/5a26738a31155771786730.jpg
new file mode 100644
index 0000000000..c45561e1b1
Binary files /dev/null and b/storage/app/uploads/public/5a2/673/8a3/5a26738a31155771786730.jpg differ
diff --git a/storage/app/uploads/public/5a2/676/d52/5a2676d524309284712276.jpg b/storage/app/uploads/public/5a2/676/d52/5a2676d524309284712276.jpg
new file mode 100644
index 0000000000..64ac279390
Binary files /dev/null and b/storage/app/uploads/public/5a2/676/d52/5a2676d524309284712276.jpg differ
diff --git a/storage/app/uploads/public/5a2/678/7be/5a26787bebf13417068091.jpg b/storage/app/uploads/public/5a2/678/7be/5a26787bebf13417068091.jpg
new file mode 100644
index 0000000000..d10ddea4e4
Binary files /dev/null and b/storage/app/uploads/public/5a2/678/7be/5a26787bebf13417068091.jpg differ
diff --git a/storage/app/uploads/public/5a2/806/8a7/5a28068a7039e549952344.png b/storage/app/uploads/public/5a2/806/8a7/5a28068a7039e549952344.png
new file mode 100644
index 0000000000..11de19c5da
Binary files /dev/null and b/storage/app/uploads/public/5a2/806/8a7/5a28068a7039e549952344.png differ
diff --git a/storage/app/uploads/public/5a2/add/15e/5a2add15ea3c5631753661.png b/storage/app/uploads/public/5a2/add/15e/5a2add15ea3c5631753661.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5a2/add/15e/5a2add15ea3c5631753661.png differ
diff --git a/storage/app/uploads/public/5a2/c4b/4fd/5a2c4b4fd2a22153057969.png b/storage/app/uploads/public/5a2/c4b/4fd/5a2c4b4fd2a22153057969.png
new file mode 100644
index 0000000000..c6f9d117b2
Binary files /dev/null and b/storage/app/uploads/public/5a2/c4b/4fd/5a2c4b4fd2a22153057969.png differ
diff --git a/storage/app/uploads/public/5a2/c4b/653/5a2c4b653c566685744341.png b/storage/app/uploads/public/5a2/c4b/653/5a2c4b653c566685744341.png
new file mode 100644
index 0000000000..6027df2cee
Binary files /dev/null and b/storage/app/uploads/public/5a2/c4b/653/5a2c4b653c566685744341.png differ
diff --git a/storage/app/uploads/public/5a2/c53/27d/5a2c5327d5bc0228243832.png b/storage/app/uploads/public/5a2/c53/27d/5a2c5327d5bc0228243832.png
new file mode 100644
index 0000000000..1138a4fd03
Binary files /dev/null and b/storage/app/uploads/public/5a2/c53/27d/5a2c5327d5bc0228243832.png differ
diff --git a/storage/app/uploads/public/5a2/c53/3a2/5a2c533a26aec804638384.jpg b/storage/app/uploads/public/5a2/c53/3a2/5a2c533a26aec804638384.jpg
new file mode 100644
index 0000000000..10fe1fab64
Binary files /dev/null and b/storage/app/uploads/public/5a2/c53/3a2/5a2c533a26aec804638384.jpg differ
diff --git a/storage/app/uploads/public/5a2/c53/7eb/5a2c537ebba45114446322.jpg b/storage/app/uploads/public/5a2/c53/7eb/5a2c537ebba45114446322.jpg
new file mode 100644
index 0000000000..10fe1fab64
Binary files /dev/null and b/storage/app/uploads/public/5a2/c53/7eb/5a2c537ebba45114446322.jpg differ
diff --git a/storage/app/uploads/public/5a2/eed/6e1/5a2eed6e1cc88595174491.png b/storage/app/uploads/public/5a2/eed/6e1/5a2eed6e1cc88595174491.png
new file mode 100644
index 0000000000..0aeb309335
Binary files /dev/null and b/storage/app/uploads/public/5a2/eed/6e1/5a2eed6e1cc88595174491.png differ
diff --git a/storage/app/uploads/public/5a3/27e/110/5a327e110ab39178158316.png b/storage/app/uploads/public/5a3/27e/110/5a327e110ab39178158316.png
new file mode 100644
index 0000000000..79f8aa082c
Binary files /dev/null and b/storage/app/uploads/public/5a3/27e/110/5a327e110ab39178158316.png differ
diff --git a/storage/app/uploads/public/5a3/c39/918/5a3c399188781933894734.jpg b/storage/app/uploads/public/5a3/c39/918/5a3c399188781933894734.jpg
new file mode 100644
index 0000000000..f3490287b0
Binary files /dev/null and b/storage/app/uploads/public/5a3/c39/918/5a3c399188781933894734.jpg differ
diff --git a/storage/app/uploads/public/5a4/bca/86e/5a4bca86e45b5269790153.png b/storage/app/uploads/public/5a4/bca/86e/5a4bca86e45b5269790153.png
new file mode 100644
index 0000000000..cb12af3e27
Binary files /dev/null and b/storage/app/uploads/public/5a4/bca/86e/5a4bca86e45b5269790153.png differ
diff --git a/storage/app/uploads/public/5a4/bcf/c4a/5a4bcfc4a5874955869035.png b/storage/app/uploads/public/5a4/bcf/c4a/5a4bcfc4a5874955869035.png
new file mode 100644
index 0000000000..e10f7b3890
Binary files /dev/null and b/storage/app/uploads/public/5a4/bcf/c4a/5a4bcfc4a5874955869035.png differ
diff --git a/storage/app/uploads/public/5a5/3cd/031/5a53cd031c23c749175648.png b/storage/app/uploads/public/5a5/3cd/031/5a53cd031c23c749175648.png
new file mode 100644
index 0000000000..04d035e05d
Binary files /dev/null and b/storage/app/uploads/public/5a5/3cd/031/5a53cd031c23c749175648.png differ
diff --git a/storage/app/uploads/public/5a5/4ad/899/5a54ad8991ca5997109734.png b/storage/app/uploads/public/5a5/4ad/899/5a54ad8991ca5997109734.png
new file mode 100644
index 0000000000..87879c6985
Binary files /dev/null and b/storage/app/uploads/public/5a5/4ad/899/5a54ad8991ca5997109734.png differ
diff --git a/storage/app/uploads/public/5a5/4b0/2f8/5a54b02f8e548544350607.png b/storage/app/uploads/public/5a5/4b0/2f8/5a54b02f8e548544350607.png
new file mode 100644
index 0000000000..5920fa1ff3
Binary files /dev/null and b/storage/app/uploads/public/5a5/4b0/2f8/5a54b02f8e548544350607.png differ
diff --git a/storage/app/uploads/public/5a5/4b0/cf8/5a54b0cf81471450325147.png b/storage/app/uploads/public/5a5/4b0/cf8/5a54b0cf81471450325147.png
new file mode 100644
index 0000000000..6542465c41
Binary files /dev/null and b/storage/app/uploads/public/5a5/4b0/cf8/5a54b0cf81471450325147.png differ
diff --git a/storage/app/uploads/public/5a5/624/38e/5a562438ec150300580023.png b/storage/app/uploads/public/5a5/624/38e/5a562438ec150300580023.png
new file mode 100644
index 0000000000..43253b62b9
Binary files /dev/null and b/storage/app/uploads/public/5a5/624/38e/5a562438ec150300580023.png differ
diff --git a/storage/app/uploads/public/5a5/62a/afb/5a562aafb05c4537748115.png b/storage/app/uploads/public/5a5/62a/afb/5a562aafb05c4537748115.png
new file mode 100644
index 0000000000..f44e71087f
Binary files /dev/null and b/storage/app/uploads/public/5a5/62a/afb/5a562aafb05c4537748115.png differ
diff --git a/storage/app/uploads/public/5a5/b94/69d/5a5b9469d7c11018259088.png b/storage/app/uploads/public/5a5/b94/69d/5a5b9469d7c11018259088.png
new file mode 100644
index 0000000000..e09e4e0932
Binary files /dev/null and b/storage/app/uploads/public/5a5/b94/69d/5a5b9469d7c11018259088.png differ
diff --git a/storage/app/uploads/public/5a6/3ae/e17/5a63aee174d80543898745.png b/storage/app/uploads/public/5a6/3ae/e17/5a63aee174d80543898745.png
new file mode 100644
index 0000000000..b8442ccf51
Binary files /dev/null and b/storage/app/uploads/public/5a6/3ae/e17/5a63aee174d80543898745.png differ
diff --git a/storage/app/uploads/public/5a6/792/58a/5a679258a7e06103744126.png b/storage/app/uploads/public/5a6/792/58a/5a679258a7e06103744126.png
new file mode 100644
index 0000000000..0f3c2d9661
Binary files /dev/null and b/storage/app/uploads/public/5a6/792/58a/5a679258a7e06103744126.png differ
diff --git a/storage/app/uploads/public/5a6/792/c0f/5a6792c0f05dc052249657.png b/storage/app/uploads/public/5a6/792/c0f/5a6792c0f05dc052249657.png
new file mode 100644
index 0000000000..0e4bae478b
Binary files /dev/null and b/storage/app/uploads/public/5a6/792/c0f/5a6792c0f05dc052249657.png differ
diff --git a/storage/app/uploads/public/5a6/79c/1d3/5a679c1d31891192688355.png b/storage/app/uploads/public/5a6/79c/1d3/5a679c1d31891192688355.png
new file mode 100644
index 0000000000..b5634c1878
Binary files /dev/null and b/storage/app/uploads/public/5a6/79c/1d3/5a679c1d31891192688355.png differ
diff --git a/storage/app/uploads/public/5a6/7a3/a28/5a67a3a28fbaf611207753.png b/storage/app/uploads/public/5a6/7a3/a28/5a67a3a28fbaf611207753.png
new file mode 100644
index 0000000000..50ccab46f0
Binary files /dev/null and b/storage/app/uploads/public/5a6/7a3/a28/5a67a3a28fbaf611207753.png differ
diff --git a/storage/app/uploads/public/5a6/856/519/5a685651987ce263514865.png b/storage/app/uploads/public/5a6/856/519/5a685651987ce263514865.png
new file mode 100644
index 0000000000..b8442ccf51
Binary files /dev/null and b/storage/app/uploads/public/5a6/856/519/5a685651987ce263514865.png differ
diff --git a/storage/app/uploads/public/5a6/f92/d3f/5a6f92d3f0d1d382442473.jpg b/storage/app/uploads/public/5a6/f92/d3f/5a6f92d3f0d1d382442473.jpg
new file mode 100644
index 0000000000..9f7ccaea1d
Binary files /dev/null and b/storage/app/uploads/public/5a6/f92/d3f/5a6f92d3f0d1d382442473.jpg differ
diff --git a/storage/app/uploads/public/5a8/094/a77/5a8094a7745a6874916835.png b/storage/app/uploads/public/5a8/094/a77/5a8094a7745a6874916835.png
new file mode 100644
index 0000000000..38ca628a15
Binary files /dev/null and b/storage/app/uploads/public/5a8/094/a77/5a8094a7745a6874916835.png differ
diff --git a/storage/app/uploads/public/5a8/094/c34/5a8094c3400d6076419598.png b/storage/app/uploads/public/5a8/094/c34/5a8094c3400d6076419598.png
new file mode 100644
index 0000000000..fbc235e118
Binary files /dev/null and b/storage/app/uploads/public/5a8/094/c34/5a8094c3400d6076419598.png differ
diff --git a/storage/app/uploads/public/5a8/094/c37/5a8094c374991449313861.png b/storage/app/uploads/public/5a8/094/c37/5a8094c374991449313861.png
new file mode 100644
index 0000000000..27735c6a95
Binary files /dev/null and b/storage/app/uploads/public/5a8/094/c37/5a8094c374991449313861.png differ
diff --git a/storage/app/uploads/public/5a8/094/c43/5a8094c43dd70926198092.png b/storage/app/uploads/public/5a8/094/c43/5a8094c43dd70926198092.png
new file mode 100644
index 0000000000..3b67094683
Binary files /dev/null and b/storage/app/uploads/public/5a8/094/c43/5a8094c43dd70926198092.png differ
diff --git a/storage/app/uploads/public/5a8/1e7/ec9/5a81e7ec9e5cf087690313.png b/storage/app/uploads/public/5a8/1e7/ec9/5a81e7ec9e5cf087690313.png
new file mode 100644
index 0000000000..27735c6a95
Binary files /dev/null and b/storage/app/uploads/public/5a8/1e7/ec9/5a81e7ec9e5cf087690313.png differ
diff --git a/storage/app/uploads/public/5a8/1e8/0ad/5a81e80ad8af5616140605.png b/storage/app/uploads/public/5a8/1e8/0ad/5a81e80ad8af5616140605.png
new file mode 100644
index 0000000000..3b67094683
Binary files /dev/null and b/storage/app/uploads/public/5a8/1e8/0ad/5a81e80ad8af5616140605.png differ
diff --git a/storage/app/uploads/public/5a8/1e8/a2d/5a81e8a2dd6b3802224687.png b/storage/app/uploads/public/5a8/1e8/a2d/5a81e8a2dd6b3802224687.png
new file mode 100644
index 0000000000..b03a11ba79
Binary files /dev/null and b/storage/app/uploads/public/5a8/1e8/a2d/5a81e8a2dd6b3802224687.png differ
diff --git a/storage/app/uploads/public/5a8/1e8/c86/5a81e8c864a2c465899325.png b/storage/app/uploads/public/5a8/1e8/c86/5a81e8c864a2c465899325.png
new file mode 100644
index 0000000000..1b31e12f94
Binary files /dev/null and b/storage/app/uploads/public/5a8/1e8/c86/5a81e8c864a2c465899325.png differ
diff --git a/storage/app/uploads/public/5a8/1e8/ef9/5a81e8ef9d35f812103217.png b/storage/app/uploads/public/5a8/1e8/ef9/5a81e8ef9d35f812103217.png
new file mode 100644
index 0000000000..907034746f
Binary files /dev/null and b/storage/app/uploads/public/5a8/1e8/ef9/5a81e8ef9d35f812103217.png differ
diff --git a/storage/app/uploads/public/5a8/1e9/334/5a81e933483e3203789438.png b/storage/app/uploads/public/5a8/1e9/334/5a81e933483e3203789438.png
new file mode 100644
index 0000000000..ec1fdfde4d
Binary files /dev/null and b/storage/app/uploads/public/5a8/1e9/334/5a81e933483e3203789438.png differ
diff --git a/storage/app/uploads/public/5a8/20c/237/5a820c237c611332498492.png b/storage/app/uploads/public/5a8/20c/237/5a820c237c611332498492.png
new file mode 100644
index 0000000000..67e151bd54
Binary files /dev/null and b/storage/app/uploads/public/5a8/20c/237/5a820c237c611332498492.png differ
diff --git a/storage/app/uploads/public/5a8/6c1/baf/5a86c1baf168c824859574.png b/storage/app/uploads/public/5a8/6c1/baf/5a86c1baf168c824859574.png
new file mode 100644
index 0000000000..308b9394f2
Binary files /dev/null and b/storage/app/uploads/public/5a8/6c1/baf/5a86c1baf168c824859574.png differ
diff --git a/storage/app/uploads/public/5a8/aa0/2a3/5a8aa02a3024a585722524.png b/storage/app/uploads/public/5a8/aa0/2a3/5a8aa02a3024a585722524.png
new file mode 100644
index 0000000000..b3ea3c0448
Binary files /dev/null and b/storage/app/uploads/public/5a8/aa0/2a3/5a8aa02a3024a585722524.png differ
diff --git a/storage/app/uploads/public/5a8/aa0/561/5a8aa05611445127446315.png b/storage/app/uploads/public/5a8/aa0/561/5a8aa05611445127446315.png
new file mode 100644
index 0000000000..b3ea3c0448
Binary files /dev/null and b/storage/app/uploads/public/5a8/aa0/561/5a8aa05611445127446315.png differ
diff --git a/storage/app/uploads/public/5a8/af9/b4c/5a8af9b4c4f7e372924442.png b/storage/app/uploads/public/5a8/af9/b4c/5a8af9b4c4f7e372924442.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5a8/af9/b4c/5a8af9b4c4f7e372924442.png differ
diff --git a/storage/app/uploads/public/5a8/fe1/f33/5a8fe1f33e175502258373.jpeg b/storage/app/uploads/public/5a8/fe1/f33/5a8fe1f33e175502258373.jpeg
new file mode 100644
index 0000000000..3e26ac8682
Binary files /dev/null and b/storage/app/uploads/public/5a8/fe1/f33/5a8fe1f33e175502258373.jpeg differ
diff --git a/storage/app/uploads/public/5a9/078/f91/5a9078f917e6e405671833.png b/storage/app/uploads/public/5a9/078/f91/5a9078f917e6e405671833.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5a9/078/f91/5a9078f917e6e405671833.png differ
diff --git a/storage/app/uploads/public/5a9/2f7/557/5a92f75575e65533435326.jpg b/storage/app/uploads/public/5a9/2f7/557/5a92f75575e65533435326.jpg
new file mode 100644
index 0000000000..2a79b7f3e4
Binary files /dev/null and b/storage/app/uploads/public/5a9/2f7/557/5a92f75575e65533435326.jpg differ
diff --git a/storage/app/uploads/public/5a9/681/3c1/5a96813c154bd636778829.svg b/storage/app/uploads/public/5a9/681/3c1/5a96813c154bd636778829.svg
new file mode 100644
index 0000000000..1d19f1b6c7
--- /dev/null
+++ b/storage/app/uploads/public/5a9/681/3c1/5a96813c154bd636778829.svg
@@ -0,0 +1,25 @@
+
+
+
+
\ No newline at end of file
diff --git a/storage/app/uploads/public/5a9/bbf/1e2/5a9bbf1e2b04f446577255.jpg b/storage/app/uploads/public/5a9/bbf/1e2/5a9bbf1e2b04f446577255.jpg
new file mode 100644
index 0000000000..2ca6910f32
Binary files /dev/null and b/storage/app/uploads/public/5a9/bbf/1e2/5a9bbf1e2b04f446577255.jpg differ
diff --git a/storage/app/uploads/public/5a9/efa/324/5a9efa3240717967288680.png b/storage/app/uploads/public/5a9/efa/324/5a9efa3240717967288680.png
new file mode 100644
index 0000000000..348f138792
Binary files /dev/null and b/storage/app/uploads/public/5a9/efa/324/5a9efa3240717967288680.png differ
diff --git a/storage/app/uploads/public/5a9/efb/1f3/5a9efb1f3fd2f835314620.png b/storage/app/uploads/public/5a9/efb/1f3/5a9efb1f3fd2f835314620.png
new file mode 100644
index 0000000000..348f138792
Binary files /dev/null and b/storage/app/uploads/public/5a9/efb/1f3/5a9efb1f3fd2f835314620.png differ
diff --git a/storage/app/uploads/public/5aa/a32/458/5aaa324584dc2378307816.png b/storage/app/uploads/public/5aa/a32/458/5aaa324584dc2378307816.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5aa/a32/458/5aaa324584dc2378307816.png differ
diff --git a/storage/app/uploads/public/5ab/0c1/f0e/5ab0c1f0eb13f582630890.jpg b/storage/app/uploads/public/5ab/0c1/f0e/5ab0c1f0eb13f582630890.jpg
new file mode 100644
index 0000000000..0f28469717
Binary files /dev/null and b/storage/app/uploads/public/5ab/0c1/f0e/5ab0c1f0eb13f582630890.jpg differ
diff --git a/storage/app/uploads/public/5ab/0c3/df5/5ab0c3df59eeb298776194.png b/storage/app/uploads/public/5ab/0c3/df5/5ab0c3df59eeb298776194.png
new file mode 100644
index 0000000000..ac7c929d79
Binary files /dev/null and b/storage/app/uploads/public/5ab/0c3/df5/5ab0c3df59eeb298776194.png differ
diff --git a/storage/app/uploads/public/5ab/0c4/67d/5ab0c467d4149529912622.png b/storage/app/uploads/public/5ab/0c4/67d/5ab0c467d4149529912622.png
new file mode 100644
index 0000000000..e6210b16ff
Binary files /dev/null and b/storage/app/uploads/public/5ab/0c4/67d/5ab0c467d4149529912622.png differ
diff --git a/storage/app/uploads/public/5ab/0c4/cc1/5ab0c4cc1161d405124308.jpg b/storage/app/uploads/public/5ab/0c4/cc1/5ab0c4cc1161d405124308.jpg
new file mode 100644
index 0000000000..4f78f5d942
Binary files /dev/null and b/storage/app/uploads/public/5ab/0c4/cc1/5ab0c4cc1161d405124308.jpg differ
diff --git a/storage/app/uploads/public/5ab/0c5/c61/5ab0c5c61e1b7141579007.png b/storage/app/uploads/public/5ab/0c5/c61/5ab0c5c61e1b7141579007.png
new file mode 100644
index 0000000000..4ffdb40b95
Binary files /dev/null and b/storage/app/uploads/public/5ab/0c5/c61/5ab0c5c61e1b7141579007.png differ
diff --git a/storage/app/uploads/public/5ab/0c6/514/5ab0c65144ae1299232481.jpg b/storage/app/uploads/public/5ab/0c6/514/5ab0c65144ae1299232481.jpg
new file mode 100644
index 0000000000..820dc212f8
Binary files /dev/null and b/storage/app/uploads/public/5ab/0c6/514/5ab0c65144ae1299232481.jpg differ
diff --git a/storage/app/uploads/public/5ab/0c6/b33/5ab0c6b33a720109011633.png b/storage/app/uploads/public/5ab/0c6/b33/5ab0c6b33a720109011633.png
new file mode 100644
index 0000000000..def9ca5523
Binary files /dev/null and b/storage/app/uploads/public/5ab/0c6/b33/5ab0c6b33a720109011633.png differ
diff --git a/storage/app/uploads/public/5ab/0c7/82b/5ab0c782bab17589315701.png b/storage/app/uploads/public/5ab/0c7/82b/5ab0c782bab17589315701.png
new file mode 100644
index 0000000000..9db26b602c
Binary files /dev/null and b/storage/app/uploads/public/5ab/0c7/82b/5ab0c782bab17589315701.png differ
diff --git a/storage/app/uploads/public/5ab/0c9/9ce/5ab0c99ce233d620358533.png b/storage/app/uploads/public/5ab/0c9/9ce/5ab0c99ce233d620358533.png
new file mode 100644
index 0000000000..7279677c30
Binary files /dev/null and b/storage/app/uploads/public/5ab/0c9/9ce/5ab0c99ce233d620358533.png differ
diff --git a/storage/app/uploads/public/5ab/0ca/5a0/5ab0ca5a08045446346310.png b/storage/app/uploads/public/5ab/0ca/5a0/5ab0ca5a08045446346310.png
new file mode 100644
index 0000000000..8ca6acf3bf
Binary files /dev/null and b/storage/app/uploads/public/5ab/0ca/5a0/5ab0ca5a08045446346310.png differ
diff --git a/storage/app/uploads/public/5ab/0ca/f71/5ab0caf719bb5005641177.png b/storage/app/uploads/public/5ab/0ca/f71/5ab0caf719bb5005641177.png
new file mode 100644
index 0000000000..b897e5be65
Binary files /dev/null and b/storage/app/uploads/public/5ab/0ca/f71/5ab0caf719bb5005641177.png differ
diff --git a/storage/app/uploads/public/5ab/0cb/606/5ab0cb6062c5f819671008.png b/storage/app/uploads/public/5ab/0cb/606/5ab0cb6062c5f819671008.png
new file mode 100644
index 0000000000..87975934ca
Binary files /dev/null and b/storage/app/uploads/public/5ab/0cb/606/5ab0cb6062c5f819671008.png differ
diff --git a/storage/app/uploads/public/5ab/0cc/304/5ab0cc3049593779713527.png b/storage/app/uploads/public/5ab/0cc/304/5ab0cc3049593779713527.png
new file mode 100644
index 0000000000..6975b79e14
Binary files /dev/null and b/storage/app/uploads/public/5ab/0cc/304/5ab0cc3049593779713527.png differ
diff --git a/storage/app/uploads/public/5ab/0cc/bc0/5ab0ccbc08d22837515054.png b/storage/app/uploads/public/5ab/0cc/bc0/5ab0ccbc08d22837515054.png
new file mode 100644
index 0000000000..26f8cde154
Binary files /dev/null and b/storage/app/uploads/public/5ab/0cc/bc0/5ab0ccbc08d22837515054.png differ
diff --git a/storage/app/uploads/public/5ab/0cd/6b0/5ab0cd6b077bc177645479.png b/storage/app/uploads/public/5ab/0cd/6b0/5ab0cd6b077bc177645479.png
new file mode 100644
index 0000000000..cb34493e86
Binary files /dev/null and b/storage/app/uploads/public/5ab/0cd/6b0/5ab0cd6b077bc177645479.png differ
diff --git a/storage/app/uploads/public/5ab/0cd/cf2/5ab0cdcf24a98916474810.jpg b/storage/app/uploads/public/5ab/0cd/cf2/5ab0cdcf24a98916474810.jpg
new file mode 100644
index 0000000000..dd0d52ac2d
Binary files /dev/null and b/storage/app/uploads/public/5ab/0cd/cf2/5ab0cdcf24a98916474810.jpg differ
diff --git a/storage/app/uploads/public/5ab/0ce/4d9/5ab0ce4d9b3bf864268666.png b/storage/app/uploads/public/5ab/0ce/4d9/5ab0ce4d9b3bf864268666.png
new file mode 100644
index 0000000000..e39b4b1a7a
Binary files /dev/null and b/storage/app/uploads/public/5ab/0ce/4d9/5ab0ce4d9b3bf864268666.png differ
diff --git a/storage/app/uploads/public/5ab/0cf/42f/5ab0cf42f21be873937865.png b/storage/app/uploads/public/5ab/0cf/42f/5ab0cf42f21be873937865.png
new file mode 100644
index 0000000000..bc5f309a7c
Binary files /dev/null and b/storage/app/uploads/public/5ab/0cf/42f/5ab0cf42f21be873937865.png differ
diff --git a/storage/app/uploads/public/5ab/0cf/c23/5ab0cfc23d24e480442589.jpg b/storage/app/uploads/public/5ab/0cf/c23/5ab0cfc23d24e480442589.jpg
new file mode 100644
index 0000000000..765e6da86d
Binary files /dev/null and b/storage/app/uploads/public/5ab/0cf/c23/5ab0cfc23d24e480442589.jpg differ
diff --git a/storage/app/uploads/public/5ab/0d0/04e/5ab0d004e2950943588222.png b/storage/app/uploads/public/5ab/0d0/04e/5ab0d004e2950943588222.png
new file mode 100644
index 0000000000..ccd3165a08
Binary files /dev/null and b/storage/app/uploads/public/5ab/0d0/04e/5ab0d004e2950943588222.png differ
diff --git a/storage/app/uploads/public/5ab/0d1/4db/5ab0d14db83a9518763831.jpg b/storage/app/uploads/public/5ab/0d1/4db/5ab0d14db83a9518763831.jpg
new file mode 100644
index 0000000000..8bbe77991d
Binary files /dev/null and b/storage/app/uploads/public/5ab/0d1/4db/5ab0d14db83a9518763831.jpg differ
diff --git a/storage/app/uploads/public/5ab/0d1/ab7/5ab0d1ab7db5b984528171.png b/storage/app/uploads/public/5ab/0d1/ab7/5ab0d1ab7db5b984528171.png
new file mode 100644
index 0000000000..cd7adacf5d
Binary files /dev/null and b/storage/app/uploads/public/5ab/0d1/ab7/5ab0d1ab7db5b984528171.png differ
diff --git a/storage/app/uploads/public/5ab/0d2/552/5ab0d2552bfd6528866627.png b/storage/app/uploads/public/5ab/0d2/552/5ab0d2552bfd6528866627.png
new file mode 100644
index 0000000000..b072928afa
Binary files /dev/null and b/storage/app/uploads/public/5ab/0d2/552/5ab0d2552bfd6528866627.png differ
diff --git a/storage/app/uploads/public/5ab/0d3/2d1/5ab0d32d1a694031444600.jpg b/storage/app/uploads/public/5ab/0d3/2d1/5ab0d32d1a694031444600.jpg
new file mode 100644
index 0000000000..bdbb39646b
Binary files /dev/null and b/storage/app/uploads/public/5ab/0d3/2d1/5ab0d32d1a694031444600.jpg differ
diff --git a/storage/app/uploads/public/5ab/0d7/dbc/5ab0d7dbc9336522029208.png b/storage/app/uploads/public/5ab/0d7/dbc/5ab0d7dbc9336522029208.png
new file mode 100644
index 0000000000..4dc4960162
Binary files /dev/null and b/storage/app/uploads/public/5ab/0d7/dbc/5ab0d7dbc9336522029208.png differ
diff --git a/storage/app/uploads/public/5ab/16f/ab3/5ab16fab3df02329657242.png b/storage/app/uploads/public/5ab/16f/ab3/5ab16fab3df02329657242.png
new file mode 100644
index 0000000000..77ad0b195f
Binary files /dev/null and b/storage/app/uploads/public/5ab/16f/ab3/5ab16fab3df02329657242.png differ
diff --git a/storage/app/uploads/public/5ab/2d3/766/5ab2d37664b42415225258.png b/storage/app/uploads/public/5ab/2d3/766/5ab2d37664b42415225258.png
new file mode 100644
index 0000000000..9f4f7f26d9
Binary files /dev/null and b/storage/app/uploads/public/5ab/2d3/766/5ab2d37664b42415225258.png differ
diff --git a/storage/app/uploads/public/5ab/2d4/c0c/5ab2d4c0cc334967059702.png b/storage/app/uploads/public/5ab/2d4/c0c/5ab2d4c0cc334967059702.png
new file mode 100644
index 0000000000..4f885459dd
Binary files /dev/null and b/storage/app/uploads/public/5ab/2d4/c0c/5ab2d4c0cc334967059702.png differ
diff --git a/storage/app/uploads/public/5ab/2d5/749/5ab2d57490de1219117582.png b/storage/app/uploads/public/5ab/2d5/749/5ab2d57490de1219117582.png
new file mode 100644
index 0000000000..063b454a87
Binary files /dev/null and b/storage/app/uploads/public/5ab/2d5/749/5ab2d57490de1219117582.png differ
diff --git a/storage/app/uploads/public/5ab/2d5/7c8/5ab2d57c8e792204273086.png b/storage/app/uploads/public/5ab/2d5/7c8/5ab2d57c8e792204273086.png
new file mode 100644
index 0000000000..e1e3038c94
Binary files /dev/null and b/storage/app/uploads/public/5ab/2d5/7c8/5ab2d57c8e792204273086.png differ
diff --git a/storage/app/uploads/public/5ab/2db/729/5ab2db729bee7065606296.png b/storage/app/uploads/public/5ab/2db/729/5ab2db729bee7065606296.png
new file mode 100644
index 0000000000..247f7bfb81
Binary files /dev/null and b/storage/app/uploads/public/5ab/2db/729/5ab2db729bee7065606296.png differ
diff --git a/storage/app/uploads/public/5ab/69c/f4c/5ab69cf4c700d643288675.png b/storage/app/uploads/public/5ab/69c/f4c/5ab69cf4c700d643288675.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5ab/69c/f4c/5ab69cf4c700d643288675.png differ
diff --git a/storage/app/uploads/public/5ab/7b4/9a4/5ab7b49a4babf418474275.png b/storage/app/uploads/public/5ab/7b4/9a4/5ab7b49a4babf418474275.png
new file mode 100644
index 0000000000..ec6dfdcda5
Binary files /dev/null and b/storage/app/uploads/public/5ab/7b4/9a4/5ab7b49a4babf418474275.png differ
diff --git a/storage/app/uploads/public/5ab/a37/9bc/5aba379bcde42258374818.jpg b/storage/app/uploads/public/5ab/a37/9bc/5aba379bcde42258374818.jpg
new file mode 100644
index 0000000000..1c76155585
Binary files /dev/null and b/storage/app/uploads/public/5ab/a37/9bc/5aba379bcde42258374818.jpg differ
diff --git a/storage/app/uploads/public/5ad/4f6/7ca/5ad4f67caca3a773209828.png b/storage/app/uploads/public/5ad/4f6/7ca/5ad4f67caca3a773209828.png
new file mode 100644
index 0000000000..c359cdff90
Binary files /dev/null and b/storage/app/uploads/public/5ad/4f6/7ca/5ad4f67caca3a773209828.png differ
diff --git a/storage/app/uploads/public/5ad/4f8/782/5ad4f87822206976581928.png b/storage/app/uploads/public/5ad/4f8/782/5ad4f87822206976581928.png
new file mode 100644
index 0000000000..6a3ea1393b
Binary files /dev/null and b/storage/app/uploads/public/5ad/4f8/782/5ad4f87822206976581928.png differ
diff --git a/storage/app/uploads/public/5ad/4f9/1b9/5ad4f91b9595d494867993.png b/storage/app/uploads/public/5ad/4f9/1b9/5ad4f91b9595d494867993.png
new file mode 100644
index 0000000000..fe4384fb36
Binary files /dev/null and b/storage/app/uploads/public/5ad/4f9/1b9/5ad4f91b9595d494867993.png differ
diff --git a/storage/app/uploads/public/5ad/4fe/962/5ad4fe962e4b9850689928.png b/storage/app/uploads/public/5ad/4fe/962/5ad4fe962e4b9850689928.png
new file mode 100644
index 0000000000..8f030a01ea
Binary files /dev/null and b/storage/app/uploads/public/5ad/4fe/962/5ad4fe962e4b9850689928.png differ
diff --git a/storage/app/uploads/public/5ad/505/3b6/5ad5053b6e0ad093497368.png b/storage/app/uploads/public/5ad/505/3b6/5ad5053b6e0ad093497368.png
new file mode 100644
index 0000000000..42ad73f2e5
Binary files /dev/null and b/storage/app/uploads/public/5ad/505/3b6/5ad5053b6e0ad093497368.png differ
diff --git a/storage/app/uploads/public/5ad/5d4/c96/5ad5d4c964791484476565.png b/storage/app/uploads/public/5ad/5d4/c96/5ad5d4c964791484476565.png
new file mode 100644
index 0000000000..bcc7943797
Binary files /dev/null and b/storage/app/uploads/public/5ad/5d4/c96/5ad5d4c964791484476565.png differ
diff --git a/storage/app/uploads/public/5ad/bb4/fc8/5adbb4fc8b26e174840743.png b/storage/app/uploads/public/5ad/bb4/fc8/5adbb4fc8b26e174840743.png
new file mode 100644
index 0000000000..ec265ba6d1
Binary files /dev/null and b/storage/app/uploads/public/5ad/bb4/fc8/5adbb4fc8b26e174840743.png differ
diff --git a/storage/app/uploads/public/5ad/f38/7a8/5adf387a8d4f0692142419.png b/storage/app/uploads/public/5ad/f38/7a8/5adf387a8d4f0692142419.png
new file mode 100644
index 0000000000..9c5ca29fbf
Binary files /dev/null and b/storage/app/uploads/public/5ad/f38/7a8/5adf387a8d4f0692142419.png differ
diff --git a/storage/app/uploads/public/5ae/4d0/8c6/5ae4d08c674b5082905650.png b/storage/app/uploads/public/5ae/4d0/8c6/5ae4d08c674b5082905650.png
new file mode 100644
index 0000000000..633de5d436
Binary files /dev/null and b/storage/app/uploads/public/5ae/4d0/8c6/5ae4d08c674b5082905650.png differ
diff --git a/storage/app/uploads/public/5ae/a42/707/5aea427070767889266673.png b/storage/app/uploads/public/5ae/a42/707/5aea427070767889266673.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5ae/a42/707/5aea427070767889266673.png differ
diff --git a/storage/app/uploads/public/5ae/c8f/8c1/5aec8f8c19c0b515935183.gif b/storage/app/uploads/public/5ae/c8f/8c1/5aec8f8c19c0b515935183.gif
new file mode 100644
index 0000000000..831aaf85c0
Binary files /dev/null and b/storage/app/uploads/public/5ae/c8f/8c1/5aec8f8c19c0b515935183.gif differ
diff --git a/storage/app/uploads/public/5af/068/e71/5af068e717da7497159957.gif b/storage/app/uploads/public/5af/068/e71/5af068e717da7497159957.gif
new file mode 100644
index 0000000000..e5639c0df0
Binary files /dev/null and b/storage/app/uploads/public/5af/068/e71/5af068e717da7497159957.gif differ
diff --git a/storage/app/uploads/public/5af/0de/517/5af0de517bade574973710.png b/storage/app/uploads/public/5af/0de/517/5af0de517bade574973710.png
new file mode 100644
index 0000000000..ee2c4e81e0
Binary files /dev/null and b/storage/app/uploads/public/5af/0de/517/5af0de517bade574973710.png differ
diff --git a/storage/app/uploads/public/5af/0e5/72b/5af0e572bcfa6454445114.png b/storage/app/uploads/public/5af/0e5/72b/5af0e572bcfa6454445114.png
new file mode 100644
index 0000000000..1d27532758
Binary files /dev/null and b/storage/app/uploads/public/5af/0e5/72b/5af0e572bcfa6454445114.png differ
diff --git a/storage/app/uploads/public/5af/9dd/ac8/5af9ddac832c9548534486.png b/storage/app/uploads/public/5af/9dd/ac8/5af9ddac832c9548534486.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5af/9dd/ac8/5af9ddac832c9548534486.png differ
diff --git a/storage/app/uploads/public/5af/ab9/81a/5afab981a9a9d816515092.png b/storage/app/uploads/public/5af/ab9/81a/5afab981a9a9d816515092.png
new file mode 100644
index 0000000000..97dab60ff4
Binary files /dev/null and b/storage/app/uploads/public/5af/ab9/81a/5afab981a9a9d816515092.png differ
diff --git a/storage/app/uploads/public/5af/ab9/c72/5afab9c7200ce584291865.png b/storage/app/uploads/public/5af/ab9/c72/5afab9c7200ce584291865.png
new file mode 100644
index 0000000000..ac9493a14e
Binary files /dev/null and b/storage/app/uploads/public/5af/ab9/c72/5afab9c7200ce584291865.png differ
diff --git a/storage/app/uploads/public/5af/abb/094/5afabb09460a2307518203.png b/storage/app/uploads/public/5af/abb/094/5afabb09460a2307518203.png
new file mode 100644
index 0000000000..2e1ad3af68
Binary files /dev/null and b/storage/app/uploads/public/5af/abb/094/5afabb09460a2307518203.png differ
diff --git a/storage/app/uploads/public/5af/afd/4b9/5afafd4b943a5862540602.gif b/storage/app/uploads/public/5af/afd/4b9/5afafd4b943a5862540602.gif
new file mode 100644
index 0000000000..b14e3ab30d
Binary files /dev/null and b/storage/app/uploads/public/5af/afd/4b9/5afafd4b943a5862540602.gif differ
diff --git a/storage/app/uploads/public/5af/aff/f50/5afafff502872653323074.png b/storage/app/uploads/public/5af/aff/f50/5afafff502872653323074.png
new file mode 100644
index 0000000000..5069ba3165
Binary files /dev/null and b/storage/app/uploads/public/5af/aff/f50/5afafff502872653323074.png differ
diff --git a/storage/app/uploads/public/5af/b01/7cd/5afb017cd3171367834249.gif b/storage/app/uploads/public/5af/b01/7cd/5afb017cd3171367834249.gif
new file mode 100644
index 0000000000..829fb7343f
Binary files /dev/null and b/storage/app/uploads/public/5af/b01/7cd/5afb017cd3171367834249.gif differ
diff --git a/storage/app/uploads/public/5af/b02/33b/5afb0233ba705924328561.png b/storage/app/uploads/public/5af/b02/33b/5afb0233ba705924328561.png
new file mode 100644
index 0000000000..75d3e25034
Binary files /dev/null and b/storage/app/uploads/public/5af/b02/33b/5afb0233ba705924328561.png differ
diff --git a/storage/app/uploads/public/5af/b03/a41/5afb03a418f3c312510228.gif b/storage/app/uploads/public/5af/b03/a41/5afb03a418f3c312510228.gif
new file mode 100644
index 0000000000..a68dfbc190
Binary files /dev/null and b/storage/app/uploads/public/5af/b03/a41/5afb03a418f3c312510228.gif differ
diff --git a/storage/app/uploads/public/5af/b06/c69/5afb06c693617870253401.gif b/storage/app/uploads/public/5af/b06/c69/5afb06c693617870253401.gif
new file mode 100644
index 0000000000..ee4b6b61fc
Binary files /dev/null and b/storage/app/uploads/public/5af/b06/c69/5afb06c693617870253401.gif differ
diff --git a/storage/app/uploads/public/5af/b0b/607/5afb0b607ab79099759831.gif b/storage/app/uploads/public/5af/b0b/607/5afb0b607ab79099759831.gif
new file mode 100644
index 0000000000..9fc7f8969c
Binary files /dev/null and b/storage/app/uploads/public/5af/b0b/607/5afb0b607ab79099759831.gif differ
diff --git a/storage/app/uploads/public/5af/c2e/449/5afc2e44937d1306025773.png b/storage/app/uploads/public/5af/c2e/449/5afc2e44937d1306025773.png
new file mode 100644
index 0000000000..bfcc50352d
Binary files /dev/null and b/storage/app/uploads/public/5af/c2e/449/5afc2e44937d1306025773.png differ
diff --git a/storage/app/uploads/public/5af/c73/2f8/5afc732f8071b214206421.png b/storage/app/uploads/public/5af/c73/2f8/5afc732f8071b214206421.png
new file mode 100644
index 0000000000..7ce718fed4
Binary files /dev/null and b/storage/app/uploads/public/5af/c73/2f8/5afc732f8071b214206421.png differ
diff --git a/storage/app/uploads/public/5b0/09e/0c2/5b009e0c2cabd079105425.png b/storage/app/uploads/public/5b0/09e/0c2/5b009e0c2cabd079105425.png
new file mode 100644
index 0000000000..b750f578fb
Binary files /dev/null and b/storage/app/uploads/public/5b0/09e/0c2/5b009e0c2cabd079105425.png differ
diff --git a/storage/app/uploads/public/5b0/329/342/5b032934283e8029566244.jpg b/storage/app/uploads/public/5b0/329/342/5b032934283e8029566244.jpg
new file mode 100644
index 0000000000..a478c0d862
Binary files /dev/null and b/storage/app/uploads/public/5b0/329/342/5b032934283e8029566244.jpg differ
diff --git a/storage/app/uploads/public/5b0/801/a45/5b0801a4507a7324391341.png b/storage/app/uploads/public/5b0/801/a45/5b0801a4507a7324391341.png
new file mode 100644
index 0000000000..8ab464b3de
Binary files /dev/null and b/storage/app/uploads/public/5b0/801/a45/5b0801a4507a7324391341.png differ
diff --git a/storage/app/uploads/public/5b0/812/cb2/5b0812cb2680c963456756.png b/storage/app/uploads/public/5b0/812/cb2/5b0812cb2680c963456756.png
new file mode 100644
index 0000000000..de203a1557
Binary files /dev/null and b/storage/app/uploads/public/5b0/812/cb2/5b0812cb2680c963456756.png differ
diff --git a/storage/app/uploads/public/5b1/2ab/104/5b12ab104dfb6960002176.png b/storage/app/uploads/public/5b1/2ab/104/5b12ab104dfb6960002176.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5b1/2ab/104/5b12ab104dfb6960002176.png differ
diff --git a/storage/app/uploads/public/5b1/7f6/458/5b17f6458fa5c055437751.jpg b/storage/app/uploads/public/5b1/7f6/458/5b17f6458fa5c055437751.jpg
new file mode 100644
index 0000000000..d27e8eeed7
Binary files /dev/null and b/storage/app/uploads/public/5b1/7f6/458/5b17f6458fa5c055437751.jpg differ
diff --git a/storage/app/uploads/public/5b1/7f9/2ed/5b17f92ed8c15621389924.png b/storage/app/uploads/public/5b1/7f9/2ed/5b17f92ed8c15621389924.png
new file mode 100644
index 0000000000..5d4ad572a7
Binary files /dev/null and b/storage/app/uploads/public/5b1/7f9/2ed/5b17f92ed8c15621389924.png differ
diff --git a/storage/app/uploads/public/5b1/7f9/79c/5b17f979c6f5f904594110.png b/storage/app/uploads/public/5b1/7f9/79c/5b17f979c6f5f904594110.png
new file mode 100644
index 0000000000..e318ff78d6
Binary files /dev/null and b/storage/app/uploads/public/5b1/7f9/79c/5b17f979c6f5f904594110.png differ
diff --git a/storage/app/uploads/public/5b1/7ff/eaa/5b17ffeaa93ba142637922.png b/storage/app/uploads/public/5b1/7ff/eaa/5b17ffeaa93ba142637922.png
new file mode 100644
index 0000000000..026e6bede2
Binary files /dev/null and b/storage/app/uploads/public/5b1/7ff/eaa/5b17ffeaa93ba142637922.png differ
diff --git a/storage/app/uploads/public/5b1/800/109/5b1800109ece8702732231.png b/storage/app/uploads/public/5b1/800/109/5b1800109ece8702732231.png
new file mode 100644
index 0000000000..da45ce05e8
Binary files /dev/null and b/storage/app/uploads/public/5b1/800/109/5b1800109ece8702732231.png differ
diff --git a/storage/app/uploads/public/5b1/803/09b/5b180309bcc21218376946.png b/storage/app/uploads/public/5b1/803/09b/5b180309bcc21218376946.png
new file mode 100644
index 0000000000..176b74c8a1
Binary files /dev/null and b/storage/app/uploads/public/5b1/803/09b/5b180309bcc21218376946.png differ
diff --git a/storage/app/uploads/public/5b1/804/b3f/5b1804b3f3000145463588.png b/storage/app/uploads/public/5b1/804/b3f/5b1804b3f3000145463588.png
new file mode 100644
index 0000000000..b38dac882b
Binary files /dev/null and b/storage/app/uploads/public/5b1/804/b3f/5b1804b3f3000145463588.png differ
diff --git a/storage/app/uploads/public/5b1/804/bf9/5b1804bf9c16b408554059.png b/storage/app/uploads/public/5b1/804/bf9/5b1804bf9c16b408554059.png
new file mode 100644
index 0000000000..325b5c5087
Binary files /dev/null and b/storage/app/uploads/public/5b1/804/bf9/5b1804bf9c16b408554059.png differ
diff --git a/storage/app/uploads/public/5b1/808/0b7/5b18080b754a7040029079.png b/storage/app/uploads/public/5b1/808/0b7/5b18080b754a7040029079.png
new file mode 100644
index 0000000000..05552ba606
Binary files /dev/null and b/storage/app/uploads/public/5b1/808/0b7/5b18080b754a7040029079.png differ
diff --git a/storage/app/uploads/public/5b1/80b/d4e/5b180bd4ec712376953252.png b/storage/app/uploads/public/5b1/80b/d4e/5b180bd4ec712376953252.png
new file mode 100644
index 0000000000..e2d5bb24ce
Binary files /dev/null and b/storage/app/uploads/public/5b1/80b/d4e/5b180bd4ec712376953252.png differ
diff --git a/storage/app/uploads/public/5b1/80b/f81/5b180bf816959644059905.png b/storage/app/uploads/public/5b1/80b/f81/5b180bf816959644059905.png
new file mode 100644
index 0000000000..4da1cb0912
Binary files /dev/null and b/storage/app/uploads/public/5b1/80b/f81/5b180bf816959644059905.png differ
diff --git a/storage/app/uploads/public/5b1/810/546/5b1810546d2e6990390907.png b/storage/app/uploads/public/5b1/810/546/5b1810546d2e6990390907.png
new file mode 100644
index 0000000000..569b644fef
Binary files /dev/null and b/storage/app/uploads/public/5b1/810/546/5b1810546d2e6990390907.png differ
diff --git a/storage/app/uploads/public/5b1/810/5eb/5b18105eb1f10186377075.png b/storage/app/uploads/public/5b1/810/5eb/5b18105eb1f10186377075.png
new file mode 100644
index 0000000000..08c753bc02
Binary files /dev/null and b/storage/app/uploads/public/5b1/810/5eb/5b18105eb1f10186377075.png differ
diff --git a/storage/app/uploads/public/5b1/817/ac2/5b1817ac23235651080146.png b/storage/app/uploads/public/5b1/817/ac2/5b1817ac23235651080146.png
new file mode 100644
index 0000000000..d17b05c327
Binary files /dev/null and b/storage/app/uploads/public/5b1/817/ac2/5b1817ac23235651080146.png differ
diff --git a/storage/app/uploads/public/5b1/95c/105/5b195c1052c2e782446328.png b/storage/app/uploads/public/5b1/95c/105/5b195c1052c2e782446328.png
new file mode 100644
index 0000000000..241d69c2ec
Binary files /dev/null and b/storage/app/uploads/public/5b1/95c/105/5b195c1052c2e782446328.png differ
diff --git a/storage/app/uploads/public/5b1/95c/5bf/5b195c5bf0d2f577595737.png b/storage/app/uploads/public/5b1/95c/5bf/5b195c5bf0d2f577595737.png
new file mode 100644
index 0000000000..4db6153669
Binary files /dev/null and b/storage/app/uploads/public/5b1/95c/5bf/5b195c5bf0d2f577595737.png differ
diff --git a/storage/app/uploads/public/5b1/95e/b11/5b195eb1187c6668419745.png b/storage/app/uploads/public/5b1/95e/b11/5b195eb1187c6668419745.png
new file mode 100644
index 0000000000..c7f0e2ce43
Binary files /dev/null and b/storage/app/uploads/public/5b1/95e/b11/5b195eb1187c6668419745.png differ
diff --git a/storage/app/uploads/public/5b1/95f/bd8/5b195fbd8c76f962805482.png b/storage/app/uploads/public/5b1/95f/bd8/5b195fbd8c76f962805482.png
new file mode 100644
index 0000000000..a7c13e1378
Binary files /dev/null and b/storage/app/uploads/public/5b1/95f/bd8/5b195fbd8c76f962805482.png differ
diff --git a/storage/app/uploads/public/5b1/960/6e1/5b19606e10851991171687.png b/storage/app/uploads/public/5b1/960/6e1/5b19606e10851991171687.png
new file mode 100644
index 0000000000..1b88a189fa
Binary files /dev/null and b/storage/app/uploads/public/5b1/960/6e1/5b19606e10851991171687.png differ
diff --git a/storage/app/uploads/public/5b1/961/771/5b1961771e56d290557236.png b/storage/app/uploads/public/5b1/961/771/5b1961771e56d290557236.png
new file mode 100644
index 0000000000..7734a87cdb
Binary files /dev/null and b/storage/app/uploads/public/5b1/961/771/5b1961771e56d290557236.png differ
diff --git a/storage/app/uploads/public/5b1/962/2b1/5b19622b1d449201902863.png b/storage/app/uploads/public/5b1/962/2b1/5b19622b1d449201902863.png
new file mode 100644
index 0000000000..3877be27c3
Binary files /dev/null and b/storage/app/uploads/public/5b1/962/2b1/5b19622b1d449201902863.png differ
diff --git a/storage/app/uploads/public/5b1/962/b00/5b1962b00413a990510141.png b/storage/app/uploads/public/5b1/962/b00/5b1962b00413a990510141.png
new file mode 100644
index 0000000000..8ab464b3de
Binary files /dev/null and b/storage/app/uploads/public/5b1/962/b00/5b1962b00413a990510141.png differ
diff --git a/storage/app/uploads/public/5b1/962/d39/5b1962d39ad28606691486.png b/storage/app/uploads/public/5b1/962/d39/5b1962d39ad28606691486.png
new file mode 100644
index 0000000000..0eab0af6ae
Binary files /dev/null and b/storage/app/uploads/public/5b1/962/d39/5b1962d39ad28606691486.png differ
diff --git a/storage/app/uploads/public/5b1/963/afb/5b1963afbac27951840024.gif b/storage/app/uploads/public/5b1/963/afb/5b1963afbac27951840024.gif
new file mode 100644
index 0000000000..5d04765f06
Binary files /dev/null and b/storage/app/uploads/public/5b1/963/afb/5b1963afbac27951840024.gif differ
diff --git a/storage/app/uploads/public/5b1/963/fe9/5b1963fe9ced6805625069.png b/storage/app/uploads/public/5b1/963/fe9/5b1963fe9ced6805625069.png
new file mode 100644
index 0000000000..7004a804d5
Binary files /dev/null and b/storage/app/uploads/public/5b1/963/fe9/5b1963fe9ced6805625069.png differ
diff --git a/storage/app/uploads/public/5b1/965/642/5b1965642e187860300919.png b/storage/app/uploads/public/5b1/965/642/5b1965642e187860300919.png
new file mode 100644
index 0000000000..a04a7c3853
Binary files /dev/null and b/storage/app/uploads/public/5b1/965/642/5b1965642e187860300919.png differ
diff --git a/storage/app/uploads/public/5b1/965/cac/5b1965cacc052103787308.png b/storage/app/uploads/public/5b1/965/cac/5b1965cacc052103787308.png
new file mode 100644
index 0000000000..f0ebf2d8e0
Binary files /dev/null and b/storage/app/uploads/public/5b1/965/cac/5b1965cacc052103787308.png differ
diff --git a/storage/app/uploads/public/5b1/966/62b/5b196662b47df823228932.png b/storage/app/uploads/public/5b1/966/62b/5b196662b47df823228932.png
new file mode 100644
index 0000000000..9cbf66d946
Binary files /dev/null and b/storage/app/uploads/public/5b1/966/62b/5b196662b47df823228932.png differ
diff --git a/storage/app/uploads/public/5b1/966/fea/5b1966fea8004182532320.png b/storage/app/uploads/public/5b1/966/fea/5b1966fea8004182532320.png
new file mode 100644
index 0000000000..677124f72c
Binary files /dev/null and b/storage/app/uploads/public/5b1/966/fea/5b1966fea8004182532320.png differ
diff --git a/storage/app/uploads/public/5b1/968/197/5b1968197380d220873085.gif b/storage/app/uploads/public/5b1/968/197/5b1968197380d220873085.gif
new file mode 100644
index 0000000000..a079be93c9
Binary files /dev/null and b/storage/app/uploads/public/5b1/968/197/5b1968197380d220873085.gif differ
diff --git a/storage/app/uploads/public/5b1/968/aa1/5b1968aa14e14689594560.gif b/storage/app/uploads/public/5b1/968/aa1/5b1968aa14e14689594560.gif
new file mode 100644
index 0000000000..b6883f0ed5
Binary files /dev/null and b/storage/app/uploads/public/5b1/968/aa1/5b1968aa14e14689594560.gif differ
diff --git a/storage/app/uploads/public/5b1/96a/0d8/5b196a0d8f953606047649.png b/storage/app/uploads/public/5b1/96a/0d8/5b196a0d8f953606047649.png
new file mode 100644
index 0000000000..161fb78609
Binary files /dev/null and b/storage/app/uploads/public/5b1/96a/0d8/5b196a0d8f953606047649.png differ
diff --git a/storage/app/uploads/public/5b1/96a/ac8/5b196aac85613075641287.png b/storage/app/uploads/public/5b1/96a/ac8/5b196aac85613075641287.png
new file mode 100644
index 0000000000..4c3dbab318
Binary files /dev/null and b/storage/app/uploads/public/5b1/96a/ac8/5b196aac85613075641287.png differ
diff --git a/storage/app/uploads/public/5b1/96c/a95/5b196ca9551b7541693881.png b/storage/app/uploads/public/5b1/96c/a95/5b196ca9551b7541693881.png
new file mode 100644
index 0000000000..7e7c3bd413
Binary files /dev/null and b/storage/app/uploads/public/5b1/96c/a95/5b196ca9551b7541693881.png differ
diff --git a/storage/app/uploads/public/5b1/bb9/8e6/5b1bb98e62bf6087481087.png b/storage/app/uploads/public/5b1/bb9/8e6/5b1bb98e62bf6087481087.png
new file mode 100644
index 0000000000..8552f315a4
Binary files /dev/null and b/storage/app/uploads/public/5b1/bb9/8e6/5b1bb98e62bf6087481087.png differ
diff --git a/storage/app/uploads/public/5b1/f4f/b2f/5b1f4fb2f023a968578982.png b/storage/app/uploads/public/5b1/f4f/b2f/5b1f4fb2f023a968578982.png
new file mode 100644
index 0000000000..dc3907b0d5
Binary files /dev/null and b/storage/app/uploads/public/5b1/f4f/b2f/5b1f4fb2f023a968578982.png differ
diff --git a/storage/app/uploads/public/5b2/0bd/357/5b20bd3570292324812545.png b/storage/app/uploads/public/5b2/0bd/357/5b20bd3570292324812545.png
new file mode 100644
index 0000000000..8552f315a4
Binary files /dev/null and b/storage/app/uploads/public/5b2/0bd/357/5b20bd3570292324812545.png differ
diff --git a/storage/app/uploads/public/5b2/146/640/5b214664037c0726907530.png b/storage/app/uploads/public/5b2/146/640/5b214664037c0726907530.png
new file mode 100644
index 0000000000..7a10e71cc0
Binary files /dev/null and b/storage/app/uploads/public/5b2/146/640/5b214664037c0726907530.png differ
diff --git a/storage/app/uploads/public/5b2/41b/605/5b241b605209f362633139.png b/storage/app/uploads/public/5b2/41b/605/5b241b605209f362633139.png
new file mode 100644
index 0000000000..8552f315a4
Binary files /dev/null and b/storage/app/uploads/public/5b2/41b/605/5b241b605209f362633139.png differ
diff --git a/storage/app/uploads/public/5b2/78a/611/5b278a6119098012275993.png b/storage/app/uploads/public/5b2/78a/611/5b278a6119098012275993.png
new file mode 100644
index 0000000000..ad0e605098
Binary files /dev/null and b/storage/app/uploads/public/5b2/78a/611/5b278a6119098012275993.png differ
diff --git a/storage/app/uploads/public/5b2/78c/51c/5b278c51c79b7843614393.jpg b/storage/app/uploads/public/5b2/78c/51c/5b278c51c79b7843614393.jpg
new file mode 100644
index 0000000000..6d2fbbfdd3
Binary files /dev/null and b/storage/app/uploads/public/5b2/78c/51c/5b278c51c79b7843614393.jpg differ
diff --git a/storage/app/uploads/public/5b2/d2f/118/5b2d2f118951e820036835.png b/storage/app/uploads/public/5b2/d2f/118/5b2d2f118951e820036835.png
new file mode 100644
index 0000000000..c038b8db5c
Binary files /dev/null and b/storage/app/uploads/public/5b2/d2f/118/5b2d2f118951e820036835.png differ
diff --git a/storage/app/uploads/public/5b3/2bf/e6e/5b32bfe6e59fd673822571.png b/storage/app/uploads/public/5b3/2bf/e6e/5b32bfe6e59fd673822571.png
new file mode 100644
index 0000000000..68282df613
Binary files /dev/null and b/storage/app/uploads/public/5b3/2bf/e6e/5b32bfe6e59fd673822571.png differ
diff --git a/storage/app/uploads/public/5b3/2c1/5e6/5b32c15e656cd987801148.gif b/storage/app/uploads/public/5b3/2c1/5e6/5b32c15e656cd987801148.gif
new file mode 100644
index 0000000000..d34a9599dd
Binary files /dev/null and b/storage/app/uploads/public/5b3/2c1/5e6/5b32c15e656cd987801148.gif differ
diff --git a/storage/app/uploads/public/5b3/2c3/93a/5b32c393ab88b648071626.png b/storage/app/uploads/public/5b3/2c3/93a/5b32c393ab88b648071626.png
new file mode 100644
index 0000000000..0bf2e4900f
Binary files /dev/null and b/storage/app/uploads/public/5b3/2c3/93a/5b32c393ab88b648071626.png differ
diff --git a/storage/app/uploads/public/5b3/2c4/a01/5b32c4a01b3dc233539052.gif b/storage/app/uploads/public/5b3/2c4/a01/5b32c4a01b3dc233539052.gif
new file mode 100644
index 0000000000..9fe8fa3fb6
Binary files /dev/null and b/storage/app/uploads/public/5b3/2c4/a01/5b32c4a01b3dc233539052.gif differ
diff --git a/storage/app/uploads/public/5b3/2c4/b5d/5b32c4b5d51b6864551166.gif b/storage/app/uploads/public/5b3/2c4/b5d/5b32c4b5d51b6864551166.gif
new file mode 100644
index 0000000000..bac0dc6f71
Binary files /dev/null and b/storage/app/uploads/public/5b3/2c4/b5d/5b32c4b5d51b6864551166.gif differ
diff --git a/storage/app/uploads/public/5b3/2c5/498/5b32c54986e4b288072264.gif b/storage/app/uploads/public/5b3/2c5/498/5b32c54986e4b288072264.gif
new file mode 100644
index 0000000000..e41db331c5
Binary files /dev/null and b/storage/app/uploads/public/5b3/2c5/498/5b32c54986e4b288072264.gif differ
diff --git a/storage/app/uploads/public/5b3/2c8/44c/5b32c844cb1b7015556472.png b/storage/app/uploads/public/5b3/2c8/44c/5b32c844cb1b7015556472.png
new file mode 100644
index 0000000000..cb4d3a9907
Binary files /dev/null and b/storage/app/uploads/public/5b3/2c8/44c/5b32c844cb1b7015556472.png differ
diff --git a/storage/app/uploads/public/5b3/2c8/9a6/5b32c89a6fb68914268459.gif b/storage/app/uploads/public/5b3/2c8/9a6/5b32c89a6fb68914268459.gif
new file mode 100644
index 0000000000..443744e951
Binary files /dev/null and b/storage/app/uploads/public/5b3/2c8/9a6/5b32c89a6fb68914268459.gif differ
diff --git a/storage/app/uploads/public/5b3/2ca/354/5b32ca3546bbf512292209.png b/storage/app/uploads/public/5b3/2ca/354/5b32ca3546bbf512292209.png
new file mode 100644
index 0000000000..0d4654e40c
Binary files /dev/null and b/storage/app/uploads/public/5b3/2ca/354/5b32ca3546bbf512292209.png differ
diff --git a/storage/app/uploads/public/5b3/392/f85/5b3392f852017497603465.png b/storage/app/uploads/public/5b3/392/f85/5b3392f852017497603465.png
new file mode 100644
index 0000000000..6928820c7a
Binary files /dev/null and b/storage/app/uploads/public/5b3/392/f85/5b3392f852017497603465.png differ
diff --git a/storage/app/uploads/public/5b3/a64/15c/5b3a6415ca4a4081047839.png b/storage/app/uploads/public/5b3/a64/15c/5b3a6415ca4a4081047839.png
new file mode 100644
index 0000000000..67f3c93815
Binary files /dev/null and b/storage/app/uploads/public/5b3/a64/15c/5b3a6415ca4a4081047839.png differ
diff --git a/storage/app/uploads/public/5b3/a7a/2bc/5b3a7a2bca828302049408.png b/storage/app/uploads/public/5b3/a7a/2bc/5b3a7a2bca828302049408.png
new file mode 100644
index 0000000000..1db8ad6889
Binary files /dev/null and b/storage/app/uploads/public/5b3/a7a/2bc/5b3a7a2bca828302049408.png differ
diff --git a/storage/app/uploads/public/5b4/266/3cc/5b42663cc18a0730946172.png b/storage/app/uploads/public/5b4/266/3cc/5b42663cc18a0730946172.png
new file mode 100644
index 0000000000..5ae3597cb9
Binary files /dev/null and b/storage/app/uploads/public/5b4/266/3cc/5b42663cc18a0730946172.png differ
diff --git a/storage/app/uploads/public/5b4/a6a/ddd/5b4a6addd1e82963909951.png b/storage/app/uploads/public/5b4/a6a/ddd/5b4a6addd1e82963909951.png
new file mode 100644
index 0000000000..c2a440f366
Binary files /dev/null and b/storage/app/uploads/public/5b4/a6a/ddd/5b4a6addd1e82963909951.png differ
diff --git a/storage/app/uploads/public/5b4/a6c/003/5b4a6c0038ced706516053.gif b/storage/app/uploads/public/5b4/a6c/003/5b4a6c0038ced706516053.gif
new file mode 100644
index 0000000000..1bcb1df66a
Binary files /dev/null and b/storage/app/uploads/public/5b4/a6c/003/5b4a6c0038ced706516053.gif differ
diff --git a/storage/app/uploads/public/5b4/a6c/693/5b4a6c6933274758343865.png b/storage/app/uploads/public/5b4/a6c/693/5b4a6c6933274758343865.png
new file mode 100644
index 0000000000..9db6e244a0
Binary files /dev/null and b/storage/app/uploads/public/5b4/a6c/693/5b4a6c6933274758343865.png differ
diff --git a/storage/app/uploads/public/5b4/a6c/b21/5b4a6cb214067677878892.png b/storage/app/uploads/public/5b4/a6c/b21/5b4a6cb214067677878892.png
new file mode 100644
index 0000000000..71044b3876
Binary files /dev/null and b/storage/app/uploads/public/5b4/a6c/b21/5b4a6cb214067677878892.png differ
diff --git a/storage/app/uploads/public/5b4/a6c/f84/5b4a6cf84c360047819202.png b/storage/app/uploads/public/5b4/a6c/f84/5b4a6cf84c360047819202.png
new file mode 100644
index 0000000000..7807259546
Binary files /dev/null and b/storage/app/uploads/public/5b4/a6c/f84/5b4a6cf84c360047819202.png differ
diff --git a/storage/app/uploads/public/5b4/a6d/53c/5b4a6d53c07af056194443.png b/storage/app/uploads/public/5b4/a6d/53c/5b4a6d53c07af056194443.png
new file mode 100644
index 0000000000..a081f31e4e
Binary files /dev/null and b/storage/app/uploads/public/5b4/a6d/53c/5b4a6d53c07af056194443.png differ
diff --git a/storage/app/uploads/public/5b4/a6d/85e/5b4a6d85e9697002487680.png b/storage/app/uploads/public/5b4/a6d/85e/5b4a6d85e9697002487680.png
new file mode 100644
index 0000000000..ee81ac366f
Binary files /dev/null and b/storage/app/uploads/public/5b4/a6d/85e/5b4a6d85e9697002487680.png differ
diff --git a/storage/app/uploads/public/5b4/a6e/073/5b4a6e073cc9d628714213.png b/storage/app/uploads/public/5b4/a6e/073/5b4a6e073cc9d628714213.png
new file mode 100644
index 0000000000..c2a440f366
Binary files /dev/null and b/storage/app/uploads/public/5b4/a6e/073/5b4a6e073cc9d628714213.png differ
diff --git a/storage/app/uploads/public/5b4/ddc/4ca/5b4ddc4ca68ec721602355.gif b/storage/app/uploads/public/5b4/ddc/4ca/5b4ddc4ca68ec721602355.gif
new file mode 100644
index 0000000000..25275e3e57
Binary files /dev/null and b/storage/app/uploads/public/5b4/ddc/4ca/5b4ddc4ca68ec721602355.gif differ
diff --git a/storage/app/uploads/public/5b4/ddd/89c/5b4ddd89cf5ab658278686.gif b/storage/app/uploads/public/5b4/ddd/89c/5b4ddd89cf5ab658278686.gif
new file mode 100644
index 0000000000..eee9f6ad18
Binary files /dev/null and b/storage/app/uploads/public/5b4/ddd/89c/5b4ddd89cf5ab658278686.gif differ
diff --git a/storage/app/uploads/public/5b4/de1/39c/5b4de139c8635728849121.png b/storage/app/uploads/public/5b4/de1/39c/5b4de139c8635728849121.png
new file mode 100644
index 0000000000..67e032b33f
Binary files /dev/null and b/storage/app/uploads/public/5b4/de1/39c/5b4de139c8635728849121.png differ
diff --git a/storage/app/uploads/public/5b4/de1/715/5b4de1715ad28642795319.gif b/storage/app/uploads/public/5b4/de1/715/5b4de1715ad28642795319.gif
new file mode 100644
index 0000000000..74cb3d8fc3
Binary files /dev/null and b/storage/app/uploads/public/5b4/de1/715/5b4de1715ad28642795319.gif differ
diff --git a/storage/app/uploads/public/5b4/de7/118/5b4de71180c66281786233.gif b/storage/app/uploads/public/5b4/de7/118/5b4de71180c66281786233.gif
new file mode 100644
index 0000000000..f37b7f9fcb
Binary files /dev/null and b/storage/app/uploads/public/5b4/de7/118/5b4de71180c66281786233.gif differ
diff --git a/storage/app/uploads/public/5b4/de7/7cf/5b4de77cf3819709564138.png b/storage/app/uploads/public/5b4/de7/7cf/5b4de77cf3819709564138.png
new file mode 100644
index 0000000000..d9a0f9536d
Binary files /dev/null and b/storage/app/uploads/public/5b4/de7/7cf/5b4de77cf3819709564138.png differ
diff --git a/storage/app/uploads/public/5b4/de7/c23/5b4de7c231685692508567.gif b/storage/app/uploads/public/5b4/de7/c23/5b4de7c231685692508567.gif
new file mode 100644
index 0000000000..19d45e40f5
Binary files /dev/null and b/storage/app/uploads/public/5b4/de7/c23/5b4de7c231685692508567.gif differ
diff --git a/storage/app/uploads/public/5b4/de9/702/5b4de97024c77681425121.gif b/storage/app/uploads/public/5b4/de9/702/5b4de97024c77681425121.gif
new file mode 100644
index 0000000000..19d45e40f5
Binary files /dev/null and b/storage/app/uploads/public/5b4/de9/702/5b4de97024c77681425121.gif differ
diff --git a/storage/app/uploads/public/5b4/dee/e3b/5b4deee3bc5bf782874519.png b/storage/app/uploads/public/5b4/dee/e3b/5b4deee3bc5bf782874519.png
new file mode 100644
index 0000000000..73ce665e9f
Binary files /dev/null and b/storage/app/uploads/public/5b4/dee/e3b/5b4deee3bc5bf782874519.png differ
diff --git a/storage/app/uploads/public/5b5/073/2f9/5b50732f9b7ce697339594.jpg b/storage/app/uploads/public/5b5/073/2f9/5b50732f9b7ce697339594.jpg
new file mode 100644
index 0000000000..6de616fc03
Binary files /dev/null and b/storage/app/uploads/public/5b5/073/2f9/5b50732f9b7ce697339594.jpg differ
diff --git a/storage/app/uploads/public/5b5/589/a49/5b5589a49cc01310770344.png b/storage/app/uploads/public/5b5/589/a49/5b5589a49cc01310770344.png
new file mode 100644
index 0000000000..b939c535d9
Binary files /dev/null and b/storage/app/uploads/public/5b5/589/a49/5b5589a49cc01310770344.png differ
diff --git a/storage/app/uploads/public/5b5/58a/8cc/5b558a8cc9034494048418.png b/storage/app/uploads/public/5b5/58a/8cc/5b558a8cc9034494048418.png
new file mode 100644
index 0000000000..b64207356c
Binary files /dev/null and b/storage/app/uploads/public/5b5/58a/8cc/5b558a8cc9034494048418.png differ
diff --git a/storage/app/uploads/public/5b5/593/db7/5b5593db79d7a030918073.png b/storage/app/uploads/public/5b5/593/db7/5b5593db79d7a030918073.png
new file mode 100644
index 0000000000..4d88842947
Binary files /dev/null and b/storage/app/uploads/public/5b5/593/db7/5b5593db79d7a030918073.png differ
diff --git a/storage/app/uploads/public/5b5/594/f7c/5b5594f7cfd5f912083002.png b/storage/app/uploads/public/5b5/594/f7c/5b5594f7cfd5f912083002.png
new file mode 100644
index 0000000000..2e9db68649
Binary files /dev/null and b/storage/app/uploads/public/5b5/594/f7c/5b5594f7cfd5f912083002.png differ
diff --git a/storage/app/uploads/public/5b5/596/a6d/5b5596a6d5f6d253558345.jpg b/storage/app/uploads/public/5b5/596/a6d/5b5596a6d5f6d253558345.jpg
new file mode 100644
index 0000000000..2a10e19f39
Binary files /dev/null and b/storage/app/uploads/public/5b5/596/a6d/5b5596a6d5f6d253558345.jpg differ
diff --git a/storage/app/uploads/public/5b5/596/ed7/5b5596ed7c099658849260.png b/storage/app/uploads/public/5b5/596/ed7/5b5596ed7c099658849260.png
new file mode 100644
index 0000000000..d9ec6ee2a4
Binary files /dev/null and b/storage/app/uploads/public/5b5/596/ed7/5b5596ed7c099658849260.png differ
diff --git a/storage/app/uploads/public/5b5/597/940/5b5597940825e150760884.png b/storage/app/uploads/public/5b5/597/940/5b5597940825e150760884.png
new file mode 100644
index 0000000000..d392cdf7c9
Binary files /dev/null and b/storage/app/uploads/public/5b5/597/940/5b5597940825e150760884.png differ
diff --git a/storage/app/uploads/public/5b5/597/ff9/5b5597ff964fa910401532.png b/storage/app/uploads/public/5b5/597/ff9/5b5597ff964fa910401532.png
new file mode 100644
index 0000000000..1c78200371
Binary files /dev/null and b/storage/app/uploads/public/5b5/597/ff9/5b5597ff964fa910401532.png differ
diff --git a/storage/app/uploads/public/5b5/598/dc0/5b5598dc0ada4668331903.png b/storage/app/uploads/public/5b5/598/dc0/5b5598dc0ada4668331903.png
new file mode 100644
index 0000000000..9aa85b2c5a
Binary files /dev/null and b/storage/app/uploads/public/5b5/598/dc0/5b5598dc0ada4668331903.png differ
diff --git a/storage/app/uploads/public/5b5/59c/e48/5b559ce4849ad017013962.png b/storage/app/uploads/public/5b5/59c/e48/5b559ce4849ad017013962.png
new file mode 100644
index 0000000000..eb93e5740e
Binary files /dev/null and b/storage/app/uploads/public/5b5/59c/e48/5b559ce4849ad017013962.png differ
diff --git a/storage/app/uploads/public/5b5/88a/3f1/5b588a3f134c0077195925.png b/storage/app/uploads/public/5b5/88a/3f1/5b588a3f134c0077195925.png
new file mode 100644
index 0000000000..9c5ca29fbf
Binary files /dev/null and b/storage/app/uploads/public/5b5/88a/3f1/5b588a3f134c0077195925.png differ
diff --git a/storage/app/uploads/public/5b5/89d/f5c/5b589df5c3b6a438416963.png b/storage/app/uploads/public/5b5/89d/f5c/5b589df5c3b6a438416963.png
new file mode 100644
index 0000000000..e70ac7bc5c
Binary files /dev/null and b/storage/app/uploads/public/5b5/89d/f5c/5b589df5c3b6a438416963.png differ
diff --git a/storage/app/uploads/public/5b5/8a2/887/5b58a28879f5f464240373.png b/storage/app/uploads/public/5b5/8a2/887/5b58a28879f5f464240373.png
new file mode 100644
index 0000000000..21a95e5b21
Binary files /dev/null and b/storage/app/uploads/public/5b5/8a2/887/5b58a28879f5f464240373.png differ
diff --git a/storage/app/uploads/public/5b5/8a7/351/5b58a7351cc80839828260.png b/storage/app/uploads/public/5b5/8a7/351/5b58a7351cc80839828260.png
new file mode 100644
index 0000000000..7aee1d7f34
Binary files /dev/null and b/storage/app/uploads/public/5b5/8a7/351/5b58a7351cc80839828260.png differ
diff --git a/storage/app/uploads/public/5b5/8c1/c41/5b58c1c419ef5398570134.png b/storage/app/uploads/public/5b5/8c1/c41/5b58c1c419ef5398570134.png
new file mode 100644
index 0000000000..983ed09481
Binary files /dev/null and b/storage/app/uploads/public/5b5/8c1/c41/5b58c1c419ef5398570134.png differ
diff --git a/storage/app/uploads/public/5b5/90c/f2d/5b590cf2dac47927219311.jpg b/storage/app/uploads/public/5b5/90c/f2d/5b590cf2dac47927219311.jpg
new file mode 100644
index 0000000000..781557a40a
Binary files /dev/null and b/storage/app/uploads/public/5b5/90c/f2d/5b590cf2dac47927219311.jpg differ
diff --git a/storage/app/uploads/public/5b5/c98/687/5b5c9868740e5620786710.jpg b/storage/app/uploads/public/5b5/c98/687/5b5c9868740e5620786710.jpg
new file mode 100644
index 0000000000..e9022966f1
Binary files /dev/null and b/storage/app/uploads/public/5b5/c98/687/5b5c9868740e5620786710.jpg differ
diff --git a/storage/app/uploads/public/5b5/d0d/013/5b5d0d0134b9d363512677.jpg b/storage/app/uploads/public/5b5/d0d/013/5b5d0d0134b9d363512677.jpg
new file mode 100644
index 0000000000..3ba5b65744
Binary files /dev/null and b/storage/app/uploads/public/5b5/d0d/013/5b5d0d0134b9d363512677.jpg differ
diff --git a/storage/app/uploads/public/5b6/45b/237/5b645b2378338519604546.png b/storage/app/uploads/public/5b6/45b/237/5b645b2378338519604546.png
new file mode 100644
index 0000000000..7b05284760
Binary files /dev/null and b/storage/app/uploads/public/5b6/45b/237/5b645b2378338519604546.png differ
diff --git a/storage/app/uploads/public/5b6/45b/b7f/5b645bb7f07e0537981404.png b/storage/app/uploads/public/5b6/45b/b7f/5b645bb7f07e0537981404.png
new file mode 100644
index 0000000000..c2c4b380c4
Binary files /dev/null and b/storage/app/uploads/public/5b6/45b/b7f/5b645bb7f07e0537981404.png differ
diff --git a/storage/app/uploads/public/5b6/45c/47e/5b645c47e7ef6409982017.png b/storage/app/uploads/public/5b6/45c/47e/5b645c47e7ef6409982017.png
new file mode 100644
index 0000000000..faae3c11aa
Binary files /dev/null and b/storage/app/uploads/public/5b6/45c/47e/5b645c47e7ef6409982017.png differ
diff --git a/storage/app/uploads/public/5b6/45e/2d3/5b645e2d3cf05047712731.png b/storage/app/uploads/public/5b6/45e/2d3/5b645e2d3cf05047712731.png
new file mode 100644
index 0000000000..585fed9cef
Binary files /dev/null and b/storage/app/uploads/public/5b6/45e/2d3/5b645e2d3cf05047712731.png differ
diff --git a/storage/app/uploads/public/5b6/45e/753/5b645e753a3fa344836510.png b/storage/app/uploads/public/5b6/45e/753/5b645e753a3fa344836510.png
new file mode 100644
index 0000000000..585fed9cef
Binary files /dev/null and b/storage/app/uploads/public/5b6/45e/753/5b645e753a3fa344836510.png differ
diff --git a/storage/app/uploads/public/5b6/45e/855/5b645e85515a5942667317.png b/storage/app/uploads/public/5b6/45e/855/5b645e85515a5942667317.png
new file mode 100644
index 0000000000..bdf886407e
Binary files /dev/null and b/storage/app/uploads/public/5b6/45e/855/5b645e85515a5942667317.png differ
diff --git a/storage/app/uploads/public/5b6/6fd/2fb/5b66fd2fbc6eb388844952.png b/storage/app/uploads/public/5b6/6fd/2fb/5b66fd2fbc6eb388844952.png
new file mode 100644
index 0000000000..a0aff35714
Binary files /dev/null and b/storage/app/uploads/public/5b6/6fd/2fb/5b66fd2fbc6eb388844952.png differ
diff --git a/storage/app/uploads/public/5b6/9e0/6e0/5b69e06e09f36011938163.png b/storage/app/uploads/public/5b6/9e0/6e0/5b69e06e09f36011938163.png
new file mode 100644
index 0000000000..305df9bc0e
Binary files /dev/null and b/storage/app/uploads/public/5b6/9e0/6e0/5b69e06e09f36011938163.png differ
diff --git a/storage/app/uploads/public/5b8/588/37e/5b858837eb859451189783.png b/storage/app/uploads/public/5b8/588/37e/5b858837eb859451189783.png
new file mode 100644
index 0000000000..cb9401423a
Binary files /dev/null and b/storage/app/uploads/public/5b8/588/37e/5b858837eb859451189783.png differ
diff --git a/storage/app/uploads/public/5b8/84a/92b/5b884a92b2b2a338707291.jpg b/storage/app/uploads/public/5b8/84a/92b/5b884a92b2b2a338707291.jpg
new file mode 100644
index 0000000000..e94231a424
Binary files /dev/null and b/storage/app/uploads/public/5b8/84a/92b/5b884a92b2b2a338707291.jpg differ
diff --git a/storage/app/uploads/public/5b9/3eb/e13/5b93ebe13bb25635882307.png b/storage/app/uploads/public/5b9/3eb/e13/5b93ebe13bb25635882307.png
new file mode 100644
index 0000000000..5dda6e43dd
Binary files /dev/null and b/storage/app/uploads/public/5b9/3eb/e13/5b93ebe13bb25635882307.png differ
diff --git a/storage/app/uploads/public/5ba/21d/1f8/5ba21d1f82c19965936967.png b/storage/app/uploads/public/5ba/21d/1f8/5ba21d1f82c19965936967.png
new file mode 100644
index 0000000000..fdd68826d8
Binary files /dev/null and b/storage/app/uploads/public/5ba/21d/1f8/5ba21d1f82c19965936967.png differ
diff --git a/storage/app/uploads/public/5ba/4cd/937/5ba4cd9370adf233240214.png b/storage/app/uploads/public/5ba/4cd/937/5ba4cd9370adf233240214.png
new file mode 100644
index 0000000000..6fa523ca61
Binary files /dev/null and b/storage/app/uploads/public/5ba/4cd/937/5ba4cd9370adf233240214.png differ
diff --git a/storage/app/uploads/public/5ba/54f/dae/5ba54fdaeafd8236789621.jpg b/storage/app/uploads/public/5ba/54f/dae/5ba54fdaeafd8236789621.jpg
new file mode 100644
index 0000000000..689c376dc8
Binary files /dev/null and b/storage/app/uploads/public/5ba/54f/dae/5ba54fdaeafd8236789621.jpg differ
diff --git a/storage/app/uploads/public/5ba/550/461/5ba5504619f94509951811.png b/storage/app/uploads/public/5ba/550/461/5ba5504619f94509951811.png
new file mode 100644
index 0000000000..0fe9d55a80
Binary files /dev/null and b/storage/app/uploads/public/5ba/550/461/5ba5504619f94509951811.png differ
diff --git a/storage/app/uploads/public/5bb/27f/fe8/5bb27ffe8696a709684472.png b/storage/app/uploads/public/5bb/27f/fe8/5bb27ffe8696a709684472.png
new file mode 100644
index 0000000000..e135166d49
Binary files /dev/null and b/storage/app/uploads/public/5bb/27f/fe8/5bb27ffe8696a709684472.png differ
diff --git a/storage/app/uploads/public/5bb/5f1/260/5bb5f12608d3b093070440.gif b/storage/app/uploads/public/5bb/5f1/260/5bb5f12608d3b093070440.gif
new file mode 100644
index 0000000000..93756ea657
Binary files /dev/null and b/storage/app/uploads/public/5bb/5f1/260/5bb5f12608d3b093070440.gif differ
diff --git a/storage/app/uploads/public/5bb/5f3/86b/5bb5f386bf45c464125655.png b/storage/app/uploads/public/5bb/5f3/86b/5bb5f386bf45c464125655.png
new file mode 100644
index 0000000000..885ae08188
Binary files /dev/null and b/storage/app/uploads/public/5bb/5f3/86b/5bb5f386bf45c464125655.png differ
diff --git a/storage/app/uploads/public/5bb/5f3/bbd/5bb5f3bbd8598121035530.png b/storage/app/uploads/public/5bb/5f3/bbd/5bb5f3bbd8598121035530.png
new file mode 100644
index 0000000000..885ae08188
Binary files /dev/null and b/storage/app/uploads/public/5bb/5f3/bbd/5bb5f3bbd8598121035530.png differ
diff --git a/storage/app/uploads/public/5bb/5f3/d7c/5bb5f3d7cf9ae739046871.jpg b/storage/app/uploads/public/5bb/5f3/d7c/5bb5f3d7cf9ae739046871.jpg
new file mode 100644
index 0000000000..0e73efe64c
Binary files /dev/null and b/storage/app/uploads/public/5bb/5f3/d7c/5bb5f3d7cf9ae739046871.jpg differ
diff --git a/storage/app/uploads/public/5bb/5f3/fb8/5bb5f3fb82f96868995708.jpg b/storage/app/uploads/public/5bb/5f3/fb8/5bb5f3fb82f96868995708.jpg
new file mode 100644
index 0000000000..5b59d9c689
Binary files /dev/null and b/storage/app/uploads/public/5bb/5f3/fb8/5bb5f3fb82f96868995708.jpg differ
diff --git a/storage/app/uploads/public/5bb/5f6/5ec/5bb5f65ec4815163366288.jpg b/storage/app/uploads/public/5bb/5f6/5ec/5bb5f65ec4815163366288.jpg
new file mode 100644
index 0000000000..5b59d9c689
Binary files /dev/null and b/storage/app/uploads/public/5bb/5f6/5ec/5bb5f65ec4815163366288.jpg differ
diff --git a/storage/app/uploads/public/5bb/5f6/843/5bb5f68433222161633629.gif b/storage/app/uploads/public/5bb/5f6/843/5bb5f68433222161633629.gif
new file mode 100644
index 0000000000..93756ea657
Binary files /dev/null and b/storage/app/uploads/public/5bb/5f6/843/5bb5f68433222161633629.gif differ
diff --git a/storage/app/uploads/public/5bb/7ab/602/5bb7ab6027652796916982.png b/storage/app/uploads/public/5bb/7ab/602/5bb7ab6027652796916982.png
new file mode 100644
index 0000000000..cb9401423a
Binary files /dev/null and b/storage/app/uploads/public/5bb/7ab/602/5bb7ab6027652796916982.png differ
diff --git a/storage/app/uploads/public/5bb/7e3/ff4/5bb7e3ff41c9f043648353.jpg b/storage/app/uploads/public/5bb/7e3/ff4/5bb7e3ff41c9f043648353.jpg
new file mode 100644
index 0000000000..a224dd537b
Binary files /dev/null and b/storage/app/uploads/public/5bb/7e3/ff4/5bb7e3ff41c9f043648353.jpg differ
diff --git a/storage/app/uploads/public/5bb/a10/cf0/5bba10cf09bdd197275593.jpg b/storage/app/uploads/public/5bb/a10/cf0/5bba10cf09bdd197275593.jpg
new file mode 100644
index 0000000000..c615ef7317
Binary files /dev/null and b/storage/app/uploads/public/5bb/a10/cf0/5bba10cf09bdd197275593.jpg differ
diff --git a/storage/app/uploads/public/5bb/a11/ba2/5bba11ba28760619192748.png b/storage/app/uploads/public/5bb/a11/ba2/5bba11ba28760619192748.png
new file mode 100644
index 0000000000..184acfeb9a
Binary files /dev/null and b/storage/app/uploads/public/5bb/a11/ba2/5bba11ba28760619192748.png differ
diff --git a/storage/app/uploads/public/5bb/a12/faa/5bba12faab252767220262.jpg b/storage/app/uploads/public/5bb/a12/faa/5bba12faab252767220262.jpg
new file mode 100644
index 0000000000..27cb83f1bc
Binary files /dev/null and b/storage/app/uploads/public/5bb/a12/faa/5bba12faab252767220262.jpg differ
diff --git a/storage/app/uploads/public/5bb/a13/b20/5bba13b205eb7970712979.jpg b/storage/app/uploads/public/5bb/a13/b20/5bba13b205eb7970712979.jpg
new file mode 100644
index 0000000000..da2a44ba3a
Binary files /dev/null and b/storage/app/uploads/public/5bb/a13/b20/5bba13b205eb7970712979.jpg differ
diff --git a/storage/app/uploads/public/5bb/a13/d55/5bba13d556829477176319.jpg b/storage/app/uploads/public/5bb/a13/d55/5bba13d556829477176319.jpg
new file mode 100644
index 0000000000..b2944460b2
Binary files /dev/null and b/storage/app/uploads/public/5bb/a13/d55/5bba13d556829477176319.jpg differ
diff --git a/storage/app/uploads/public/5bb/a14/9d5/5bba149d5d266857245626.jpg b/storage/app/uploads/public/5bb/a14/9d5/5bba149d5d266857245626.jpg
new file mode 100644
index 0000000000..ed8bdb8b9d
Binary files /dev/null and b/storage/app/uploads/public/5bb/a14/9d5/5bba149d5d266857245626.jpg differ
diff --git a/storage/app/uploads/public/5bb/a14/ab5/5bba14ab5731f229285593.jpg b/storage/app/uploads/public/5bb/a14/ab5/5bba14ab5731f229285593.jpg
new file mode 100644
index 0000000000..b2865509b2
Binary files /dev/null and b/storage/app/uploads/public/5bb/a14/ab5/5bba14ab5731f229285593.jpg differ
diff --git a/storage/app/uploads/public/5bb/a17/027/5bba170273575707075447.jpg b/storage/app/uploads/public/5bb/a17/027/5bba170273575707075447.jpg
new file mode 100644
index 0000000000..5ae624363b
Binary files /dev/null and b/storage/app/uploads/public/5bb/a17/027/5bba170273575707075447.jpg differ
diff --git a/storage/app/uploads/public/5bb/a3d/3a2/5bba3d3a27b83851784188.jpg b/storage/app/uploads/public/5bb/a3d/3a2/5bba3d3a27b83851784188.jpg
new file mode 100644
index 0000000000..80ae5cb757
Binary files /dev/null and b/storage/app/uploads/public/5bb/a3d/3a2/5bba3d3a27b83851784188.jpg differ
diff --git a/storage/app/uploads/public/5bb/a3e/a7a/5bba3ea7a218e025454434.jpg b/storage/app/uploads/public/5bb/a3e/a7a/5bba3ea7a218e025454434.jpg
new file mode 100644
index 0000000000..715edb3d3a
Binary files /dev/null and b/storage/app/uploads/public/5bb/a3e/a7a/5bba3ea7a218e025454434.jpg differ
diff --git a/storage/app/uploads/public/5bb/a3e/e7c/5bba3ee7c6344594625565.jpg b/storage/app/uploads/public/5bb/a3e/e7c/5bba3ee7c6344594625565.jpg
new file mode 100644
index 0000000000..3eda0275e6
Binary files /dev/null and b/storage/app/uploads/public/5bb/a3e/e7c/5bba3ee7c6344594625565.jpg differ
diff --git a/storage/app/uploads/public/5bb/b52/b15/5bbb52b15d07a117550780.jpeg b/storage/app/uploads/public/5bb/b52/b15/5bbb52b15d07a117550780.jpeg
new file mode 100644
index 0000000000..25a6f3775b
Binary files /dev/null and b/storage/app/uploads/public/5bb/b52/b15/5bbb52b15d07a117550780.jpeg differ
diff --git a/storage/app/uploads/public/5bb/dcb/46c/5bbdcb46c6eee640012032.png b/storage/app/uploads/public/5bb/dcb/46c/5bbdcb46c6eee640012032.png
new file mode 100644
index 0000000000..b8a5bafda0
Binary files /dev/null and b/storage/app/uploads/public/5bb/dcb/46c/5bbdcb46c6eee640012032.png differ
diff --git a/storage/app/uploads/public/5bd/324/0e8/5bd3240e841c1065321453.png b/storage/app/uploads/public/5bd/324/0e8/5bd3240e841c1065321453.png
new file mode 100644
index 0000000000..578e41d19b
Binary files /dev/null and b/storage/app/uploads/public/5bd/324/0e8/5bd3240e841c1065321453.png differ
diff --git a/storage/app/uploads/public/5bd/72b/3ba/5bd72b3ba6a62760409727.png b/storage/app/uploads/public/5bd/72b/3ba/5bd72b3ba6a62760409727.png
new file mode 100644
index 0000000000..650e6654ac
Binary files /dev/null and b/storage/app/uploads/public/5bd/72b/3ba/5bd72b3ba6a62760409727.png differ
diff --git a/storage/app/uploads/public/5bd/b64/613/5bdb64613262d644014666.png b/storage/app/uploads/public/5bd/b64/613/5bdb64613262d644014666.png
new file mode 100644
index 0000000000..7ae5827a94
Binary files /dev/null and b/storage/app/uploads/public/5bd/b64/613/5bdb64613262d644014666.png differ
diff --git a/storage/app/uploads/public/5bd/cb6/df6/5bdcb6df6ba77895463474.jpg b/storage/app/uploads/public/5bd/cb6/df6/5bdcb6df6ba77895463474.jpg
new file mode 100644
index 0000000000..5e12e1f5ba
Binary files /dev/null and b/storage/app/uploads/public/5bd/cb6/df6/5bdcb6df6ba77895463474.jpg differ
diff --git a/storage/app/uploads/public/5bd/fd1/63e/5bdfd163e1704356013497.png b/storage/app/uploads/public/5bd/fd1/63e/5bdfd163e1704356013497.png
new file mode 100644
index 0000000000..b49564496d
Binary files /dev/null and b/storage/app/uploads/public/5bd/fd1/63e/5bdfd163e1704356013497.png differ
diff --git a/storage/app/uploads/public/5bd/fd1/760/5bdfd17603e27744702536.png b/storage/app/uploads/public/5bd/fd1/760/5bdfd17603e27744702536.png
new file mode 100644
index 0000000000..bbf97c61bd
Binary files /dev/null and b/storage/app/uploads/public/5bd/fd1/760/5bdfd17603e27744702536.png differ
diff --git a/storage/app/uploads/public/5bd/fea/026/5bdfea0267def116064677.png b/storage/app/uploads/public/5bd/fea/026/5bdfea0267def116064677.png
new file mode 100644
index 0000000000..f67ac99089
Binary files /dev/null and b/storage/app/uploads/public/5bd/fea/026/5bdfea0267def116064677.png differ
diff --git a/storage/app/uploads/public/5bf/2ab/9f6/5bf2ab9f6f810514785264.png b/storage/app/uploads/public/5bf/2ab/9f6/5bf2ab9f6f810514785264.png
new file mode 100644
index 0000000000..e0d4cd2a7d
Binary files /dev/null and b/storage/app/uploads/public/5bf/2ab/9f6/5bf2ab9f6f810514785264.png differ
diff --git a/storage/app/uploads/public/5bf/336/251/5bf336251f0fb012041766.png b/storage/app/uploads/public/5bf/336/251/5bf336251f0fb012041766.png
new file mode 100644
index 0000000000..ce9ed515b2
Binary files /dev/null and b/storage/app/uploads/public/5bf/336/251/5bf336251f0fb012041766.png differ
diff --git a/storage/app/uploads/public/5bf/33b/9b7/5bf33b9b794d9900123756.png b/storage/app/uploads/public/5bf/33b/9b7/5bf33b9b794d9900123756.png
new file mode 100644
index 0000000000..6d50d5dab2
Binary files /dev/null and b/storage/app/uploads/public/5bf/33b/9b7/5bf33b9b794d9900123756.png differ
diff --git a/storage/app/uploads/public/5bf/54c/a51/5bf54ca51ea3d683171556.jpg b/storage/app/uploads/public/5bf/54c/a51/5bf54ca51ea3d683171556.jpg
new file mode 100644
index 0000000000..a34bea0732
Binary files /dev/null and b/storage/app/uploads/public/5bf/54c/a51/5bf54ca51ea3d683171556.jpg differ
diff --git a/storage/app/uploads/public/5bf/830/34b/5bf83034b703a356470749.png b/storage/app/uploads/public/5bf/830/34b/5bf83034b703a356470749.png
new file mode 100644
index 0000000000..d3542878cd
Binary files /dev/null and b/storage/app/uploads/public/5bf/830/34b/5bf83034b703a356470749.png differ
diff --git a/storage/app/uploads/public/5c0/d20/8fb/5c0d208fb9e4c913419803.png b/storage/app/uploads/public/5c0/d20/8fb/5c0d208fb9e4c913419803.png
new file mode 100644
index 0000000000..92bf056399
Binary files /dev/null and b/storage/app/uploads/public/5c0/d20/8fb/5c0d208fb9e4c913419803.png differ
diff --git a/storage/app/uploads/public/5c1/8f1/4da/5c18f14dac08d627984396.png b/storage/app/uploads/public/5c1/8f1/4da/5c18f14dac08d627984396.png
new file mode 100644
index 0000000000..189b1facbc
Binary files /dev/null and b/storage/app/uploads/public/5c1/8f1/4da/5c18f14dac08d627984396.png differ
diff --git a/storage/app/uploads/public/5c1/8f7/f3c/5c18f7f3cc9b6563814474.png b/storage/app/uploads/public/5c1/8f7/f3c/5c18f7f3cc9b6563814474.png
new file mode 100644
index 0000000000..189b1facbc
Binary files /dev/null and b/storage/app/uploads/public/5c1/8f7/f3c/5c18f7f3cc9b6563814474.png differ
diff --git a/storage/app/uploads/public/5c1/b47/a5d/5c1b47a5d4436949253271.jpg b/storage/app/uploads/public/5c1/b47/a5d/5c1b47a5d4436949253271.jpg
new file mode 100644
index 0000000000..41eb7721bf
Binary files /dev/null and b/storage/app/uploads/public/5c1/b47/a5d/5c1b47a5d4436949253271.jpg differ
diff --git a/storage/app/uploads/public/5c1/cd0/155/5c1cd015563d7496670722.jpg b/storage/app/uploads/public/5c1/cd0/155/5c1cd015563d7496670722.jpg
new file mode 100644
index 0000000000..17c2764113
Binary files /dev/null and b/storage/app/uploads/public/5c1/cd0/155/5c1cd015563d7496670722.jpg differ
diff --git a/storage/app/uploads/public/5c1/cd0/2d2/5c1cd02d25635899025348.png b/storage/app/uploads/public/5c1/cd0/2d2/5c1cd02d25635899025348.png
new file mode 100644
index 0000000000..480369afba
Binary files /dev/null and b/storage/app/uploads/public/5c1/cd0/2d2/5c1cd02d25635899025348.png differ
diff --git a/storage/app/uploads/public/5c1/cd5/13a/5c1cd513a69a3321944156.png b/storage/app/uploads/public/5c1/cd5/13a/5c1cd513a69a3321944156.png
new file mode 100644
index 0000000000..4e3df7c89c
Binary files /dev/null and b/storage/app/uploads/public/5c1/cd5/13a/5c1cd513a69a3321944156.png differ
diff --git a/storage/app/uploads/public/5c1/cd5/bd4/5c1cd5bd4c5b3474514793.png b/storage/app/uploads/public/5c1/cd5/bd4/5c1cd5bd4c5b3474514793.png
new file mode 100644
index 0000000000..3651bb2133
Binary files /dev/null and b/storage/app/uploads/public/5c1/cd5/bd4/5c1cd5bd4c5b3474514793.png differ
diff --git a/storage/app/uploads/public/5c1/cd5/ee3/5c1cd5ee371a8697487065.png b/storage/app/uploads/public/5c1/cd5/ee3/5c1cd5ee371a8697487065.png
new file mode 100644
index 0000000000..91980a6988
Binary files /dev/null and b/storage/app/uploads/public/5c1/cd5/ee3/5c1cd5ee371a8697487065.png differ
diff --git a/storage/app/uploads/public/5c2/b4e/d97/5c2b4ed97851f986256536.jpg b/storage/app/uploads/public/5c2/b4e/d97/5c2b4ed97851f986256536.jpg
new file mode 100644
index 0000000000..50db6ba60c
Binary files /dev/null and b/storage/app/uploads/public/5c2/b4e/d97/5c2b4ed97851f986256536.jpg differ
diff --git a/storage/app/uploads/public/5c2/b4e/efe/5c2b4eefec8e1414325294.png b/storage/app/uploads/public/5c2/b4e/efe/5c2b4eefec8e1414325294.png
new file mode 100644
index 0000000000..ea5bad58dc
Binary files /dev/null and b/storage/app/uploads/public/5c2/b4e/efe/5c2b4eefec8e1414325294.png differ
diff --git a/storage/app/uploads/public/5c2/b4e/fd9/5c2b4efd9c609153795934.png b/storage/app/uploads/public/5c2/b4e/fd9/5c2b4efd9c609153795934.png
new file mode 100644
index 0000000000..f522c090a8
Binary files /dev/null and b/storage/app/uploads/public/5c2/b4e/fd9/5c2b4efd9c609153795934.png differ
diff --git a/storage/app/uploads/public/5c2/cbd/8e3/5c2cbd8e3bcdd214188243.png b/storage/app/uploads/public/5c2/cbd/8e3/5c2cbd8e3bcdd214188243.png
new file mode 100644
index 0000000000..45f0b3192d
Binary files /dev/null and b/storage/app/uploads/public/5c2/cbd/8e3/5c2cbd8e3bcdd214188243.png differ
diff --git a/storage/app/uploads/public/5c3/3a6/698/5c33a66988e9b192770083.jpg b/storage/app/uploads/public/5c3/3a6/698/5c33a66988e9b192770083.jpg
new file mode 100644
index 0000000000..d5c0e8c113
Binary files /dev/null and b/storage/app/uploads/public/5c3/3a6/698/5c33a66988e9b192770083.jpg differ
diff --git a/storage/app/uploads/public/5c3/ebd/56b/5c3ebd56b7fc9728379239.jpg b/storage/app/uploads/public/5c3/ebd/56b/5c3ebd56b7fc9728379239.jpg
new file mode 100644
index 0000000000..3ed5dc4bb3
Binary files /dev/null and b/storage/app/uploads/public/5c3/ebd/56b/5c3ebd56b7fc9728379239.jpg differ
diff --git a/storage/app/uploads/public/5c3/ec0/54c/5c3ec054c8931864836227.jpg b/storage/app/uploads/public/5c3/ec0/54c/5c3ec054c8931864836227.jpg
new file mode 100644
index 0000000000..c305c8a215
Binary files /dev/null and b/storage/app/uploads/public/5c3/ec0/54c/5c3ec054c8931864836227.jpg differ
diff --git a/storage/app/uploads/public/5c3/ec0/843/5c3ec084372ea846900825.jpg b/storage/app/uploads/public/5c3/ec0/843/5c3ec084372ea846900825.jpg
new file mode 100644
index 0000000000..17c2764113
Binary files /dev/null and b/storage/app/uploads/public/5c3/ec0/843/5c3ec084372ea846900825.jpg differ
diff --git a/storage/app/uploads/public/5c3/ec0/9f4/5c3ec09f493af116306827.png b/storage/app/uploads/public/5c3/ec0/9f4/5c3ec09f493af116306827.png
new file mode 100644
index 0000000000..700ac10c6b
Binary files /dev/null and b/storage/app/uploads/public/5c3/ec0/9f4/5c3ec09f493af116306827.png differ
diff --git a/storage/app/uploads/public/5c3/f72/fcd/5c3f72fcdb42c742677632.jpg b/storage/app/uploads/public/5c3/f72/fcd/5c3f72fcdb42c742677632.jpg
new file mode 100644
index 0000000000..b190a488c2
Binary files /dev/null and b/storage/app/uploads/public/5c3/f72/fcd/5c3f72fcdb42c742677632.jpg differ
diff --git a/storage/app/uploads/public/5c3/f73/2cb/5c3f732cb80b3842665829.jpg b/storage/app/uploads/public/5c3/f73/2cb/5c3f732cb80b3842665829.jpg
new file mode 100644
index 0000000000..feca1711a6
Binary files /dev/null and b/storage/app/uploads/public/5c3/f73/2cb/5c3f732cb80b3842665829.jpg differ
diff --git a/storage/app/uploads/public/5c3/f73/59e/5c3f7359e012c474162440.png b/storage/app/uploads/public/5c3/f73/59e/5c3f7359e012c474162440.png
new file mode 100644
index 0000000000..c2a440f366
Binary files /dev/null and b/storage/app/uploads/public/5c3/f73/59e/5c3f7359e012c474162440.png differ
diff --git a/storage/app/uploads/public/5c3/f73/e98/5c3f73e989658606893298.gif b/storage/app/uploads/public/5c3/f73/e98/5c3f73e989658606893298.gif
new file mode 100644
index 0000000000..d34a9599dd
Binary files /dev/null and b/storage/app/uploads/public/5c3/f73/e98/5c3f73e989658606893298.gif differ
diff --git a/storage/app/uploads/public/5c3/f74/400/5c3f74400246a282442718.png b/storage/app/uploads/public/5c3/f74/400/5c3f74400246a282442718.png
new file mode 100644
index 0000000000..9cbf66d946
Binary files /dev/null and b/storage/app/uploads/public/5c3/f74/400/5c3f74400246a282442718.png differ
diff --git a/storage/app/uploads/public/5c3/f74/a27/5c3f74a27a588387820381.png b/storage/app/uploads/public/5c3/f74/a27/5c3f74a27a588387820381.png
new file mode 100644
index 0000000000..873c3b273f
Binary files /dev/null and b/storage/app/uploads/public/5c3/f74/a27/5c3f74a27a588387820381.png differ
diff --git a/storage/app/uploads/public/5c3/f75/277/5c3f75277e3f5854362839.gif b/storage/app/uploads/public/5c3/f75/277/5c3f75277e3f5854362839.gif
new file mode 100644
index 0000000000..19d45e40f5
Binary files /dev/null and b/storage/app/uploads/public/5c3/f75/277/5c3f75277e3f5854362839.gif differ
diff --git a/storage/app/uploads/public/5c3/f75/8a0/5c3f758a06779201630418.png b/storage/app/uploads/public/5c3/f75/8a0/5c3f758a06779201630418.png
new file mode 100644
index 0000000000..aaa864882b
Binary files /dev/null and b/storage/app/uploads/public/5c3/f75/8a0/5c3f758a06779201630418.png differ
diff --git a/storage/app/uploads/public/5c3/f75/af2/5c3f75af2e35c316515966.gif b/storage/app/uploads/public/5c3/f75/af2/5c3f75af2e35c316515966.gif
new file mode 100644
index 0000000000..26e073effa
Binary files /dev/null and b/storage/app/uploads/public/5c3/f75/af2/5c3f75af2e35c316515966.gif differ
diff --git a/storage/app/uploads/public/5c3/f75/d81/5c3f75d814faf875415861.gif b/storage/app/uploads/public/5c3/f75/d81/5c3f75d814faf875415861.gif
new file mode 100644
index 0000000000..26e073effa
Binary files /dev/null and b/storage/app/uploads/public/5c3/f75/d81/5c3f75d814faf875415861.gif differ
diff --git a/storage/app/uploads/public/5c3/f78/598/5c3f78598ee6e568786338.jpg b/storage/app/uploads/public/5c3/f78/598/5c3f78598ee6e568786338.jpg
new file mode 100644
index 0000000000..b61a9758d8
Binary files /dev/null and b/storage/app/uploads/public/5c3/f78/598/5c3f78598ee6e568786338.jpg differ
diff --git a/storage/app/uploads/public/5c3/f78/928/5c3f78928d72a853609286.png b/storage/app/uploads/public/5c3/f78/928/5c3f78928d72a853609286.png
new file mode 100644
index 0000000000..dc3907b0d5
Binary files /dev/null and b/storage/app/uploads/public/5c3/f78/928/5c3f78928d72a853609286.png differ
diff --git a/storage/app/uploads/public/5c3/f79/77a/5c3f7977a9b1a752764862.gif b/storage/app/uploads/public/5c3/f79/77a/5c3f7977a9b1a752764862.gif
new file mode 100644
index 0000000000..e38c7a3512
Binary files /dev/null and b/storage/app/uploads/public/5c3/f79/77a/5c3f7977a9b1a752764862.gif differ
diff --git a/storage/app/uploads/public/5c3/f79/d2c/5c3f79d2ca8d7308662871.png b/storage/app/uploads/public/5c3/f79/d2c/5c3f79d2ca8d7308662871.png
new file mode 100644
index 0000000000..df7c851447
Binary files /dev/null and b/storage/app/uploads/public/5c3/f79/d2c/5c3f79d2ca8d7308662871.png differ
diff --git a/storage/app/uploads/public/5c3/f7a/c66/5c3f7ac66e008154491407.png b/storage/app/uploads/public/5c3/f7a/c66/5c3f7ac66e008154491407.png
new file mode 100644
index 0000000000..9e4aa6f708
Binary files /dev/null and b/storage/app/uploads/public/5c3/f7a/c66/5c3f7ac66e008154491407.png differ
diff --git a/storage/app/uploads/public/5c3/f9a/862/5c3f9a8626689457005598.png b/storage/app/uploads/public/5c3/f9a/862/5c3f9a8626689457005598.png
new file mode 100644
index 0000000000..a6eb3d78d4
Binary files /dev/null and b/storage/app/uploads/public/5c3/f9a/862/5c3f9a8626689457005598.png differ
diff --git a/storage/app/uploads/public/5c3/f9b/6e0/5c3f9b6e030d4266079135.png b/storage/app/uploads/public/5c3/f9b/6e0/5c3f9b6e030d4266079135.png
new file mode 100644
index 0000000000..6fa523ca61
Binary files /dev/null and b/storage/app/uploads/public/5c3/f9b/6e0/5c3f9b6e030d4266079135.png differ
diff --git a/storage/app/uploads/public/5c4/0b8/f02/5c40b8f021bd5327148897.jpg b/storage/app/uploads/public/5c4/0b8/f02/5c40b8f021bd5327148897.jpg
new file mode 100644
index 0000000000..ca8a45631c
Binary files /dev/null and b/storage/app/uploads/public/5c4/0b8/f02/5c40b8f021bd5327148897.jpg differ
diff --git a/storage/app/uploads/public/5c4/b93/a45/5c4b93a45047f384045358.png b/storage/app/uploads/public/5c4/b93/a45/5c4b93a45047f384045358.png
new file mode 100644
index 0000000000..9f13232313
Binary files /dev/null and b/storage/app/uploads/public/5c4/b93/a45/5c4b93a45047f384045358.png differ
diff --git a/storage/app/uploads/public/5c5/0cd/f13/5c50cdf13df14723157250.jpg b/storage/app/uploads/public/5c5/0cd/f13/5c50cdf13df14723157250.jpg
new file mode 100644
index 0000000000..9606cccbab
Binary files /dev/null and b/storage/app/uploads/public/5c5/0cd/f13/5c50cdf13df14723157250.jpg differ
diff --git a/storage/app/uploads/public/5c5/0ce/14d/5c50ce14d5cf5616852281.jpg b/storage/app/uploads/public/5c5/0ce/14d/5c50ce14d5cf5616852281.jpg
new file mode 100644
index 0000000000..d11bc0db26
Binary files /dev/null and b/storage/app/uploads/public/5c5/0ce/14d/5c50ce14d5cf5616852281.jpg differ
diff --git a/storage/app/uploads/public/5c5/0d0/191/5c50d0191767d908679037.jpg b/storage/app/uploads/public/5c5/0d0/191/5c50d0191767d908679037.jpg
new file mode 100644
index 0000000000..974de50aee
Binary files /dev/null and b/storage/app/uploads/public/5c5/0d0/191/5c50d0191767d908679037.jpg differ
diff --git a/storage/app/uploads/public/5c5/0d1/1cd/5c50d11cda7f5852271346.jpg b/storage/app/uploads/public/5c5/0d1/1cd/5c50d11cda7f5852271346.jpg
new file mode 100644
index 0000000000..adb95ac107
Binary files /dev/null and b/storage/app/uploads/public/5c5/0d1/1cd/5c50d11cda7f5852271346.jpg differ
diff --git a/storage/app/uploads/public/5c5/0d2/2d5/5c50d22d504a3472572317.jpg b/storage/app/uploads/public/5c5/0d2/2d5/5c50d22d504a3472572317.jpg
new file mode 100644
index 0000000000..42453fd5b9
Binary files /dev/null and b/storage/app/uploads/public/5c5/0d2/2d5/5c50d22d504a3472572317.jpg differ
diff --git a/storage/app/uploads/public/5c5/0d2/d35/5c50d2d352a64731237478.png b/storage/app/uploads/public/5c5/0d2/d35/5c50d2d352a64731237478.png
new file mode 100644
index 0000000000..1a0ade08be
Binary files /dev/null and b/storage/app/uploads/public/5c5/0d2/d35/5c50d2d352a64731237478.png differ
diff --git a/storage/app/uploads/public/5c5/0d3/7d3/5c50d37d39bc8016962508.jpg b/storage/app/uploads/public/5c5/0d3/7d3/5c50d37d39bc8016962508.jpg
new file mode 100644
index 0000000000..ef18e004a8
Binary files /dev/null and b/storage/app/uploads/public/5c5/0d3/7d3/5c50d37d39bc8016962508.jpg differ
diff --git a/storage/app/uploads/public/5c5/0d4/9a5/5c50d49a54b09604006512.jpg b/storage/app/uploads/public/5c5/0d4/9a5/5c50d49a54b09604006512.jpg
new file mode 100644
index 0000000000..9e540f01ff
Binary files /dev/null and b/storage/app/uploads/public/5c5/0d4/9a5/5c50d49a54b09604006512.jpg differ
diff --git a/storage/app/uploads/public/5c5/0d7/091/5c50d7091778e055267584.png b/storage/app/uploads/public/5c5/0d7/091/5c50d7091778e055267584.png
new file mode 100644
index 0000000000..189b1facbc
Binary files /dev/null and b/storage/app/uploads/public/5c5/0d7/091/5c50d7091778e055267584.png differ
diff --git a/storage/app/uploads/public/5c5/0d7/96a/5c50d796a4c37792972855.jpg b/storage/app/uploads/public/5c5/0d7/96a/5c50d796a4c37792972855.jpg
new file mode 100644
index 0000000000..59070d1d85
Binary files /dev/null and b/storage/app/uploads/public/5c5/0d7/96a/5c50d796a4c37792972855.jpg differ
diff --git a/storage/app/uploads/public/5c5/0d8/0b9/5c50d80b92317907730383.jpg b/storage/app/uploads/public/5c5/0d8/0b9/5c50d80b92317907730383.jpg
new file mode 100644
index 0000000000..f97916afb2
Binary files /dev/null and b/storage/app/uploads/public/5c5/0d8/0b9/5c50d80b92317907730383.jpg differ
diff --git a/storage/app/uploads/public/5c5/0d8/676/5c50d86765174378189820.jpg b/storage/app/uploads/public/5c5/0d8/676/5c50d86765174378189820.jpg
new file mode 100644
index 0000000000..220c6f0fe8
Binary files /dev/null and b/storage/app/uploads/public/5c5/0d8/676/5c50d86765174378189820.jpg differ
diff --git a/storage/app/uploads/public/5c5/282/eb5/5c5282eb57673399249693.png b/storage/app/uploads/public/5c5/282/eb5/5c5282eb57673399249693.png
new file mode 100644
index 0000000000..d922eb98eb
Binary files /dev/null and b/storage/app/uploads/public/5c5/282/eb5/5c5282eb57673399249693.png differ
diff --git a/storage/app/uploads/public/5c5/284/3f3/5c52843f316fd880788269.png b/storage/app/uploads/public/5c5/284/3f3/5c52843f316fd880788269.png
new file mode 100644
index 0000000000..40f729e7af
Binary files /dev/null and b/storage/app/uploads/public/5c5/284/3f3/5c52843f316fd880788269.png differ
diff --git a/storage/app/uploads/public/5c5/286/3b3/5c52863b30f49659768288.png b/storage/app/uploads/public/5c5/286/3b3/5c52863b30f49659768288.png
new file mode 100644
index 0000000000..ebf31c5fb1
Binary files /dev/null and b/storage/app/uploads/public/5c5/286/3b3/5c52863b30f49659768288.png differ
diff --git a/storage/app/uploads/public/5c5/287/ed7/5c5287ed78fc6798625940.png b/storage/app/uploads/public/5c5/287/ed7/5c5287ed78fc6798625940.png
new file mode 100644
index 0000000000..3bc34eb27d
Binary files /dev/null and b/storage/app/uploads/public/5c5/287/ed7/5c5287ed78fc6798625940.png differ
diff --git a/storage/app/uploads/public/5c5/288/1b3/5c52881b39c87027802677.jpg b/storage/app/uploads/public/5c5/288/1b3/5c52881b39c87027802677.jpg
new file mode 100644
index 0000000000..e74f394e17
Binary files /dev/null and b/storage/app/uploads/public/5c5/288/1b3/5c52881b39c87027802677.jpg differ
diff --git a/storage/app/uploads/public/5c5/2c6/f92/5c52c6f92b52f124565436.png b/storage/app/uploads/public/5c5/2c6/f92/5c52c6f92b52f124565436.png
new file mode 100644
index 0000000000..3c09b34553
Binary files /dev/null and b/storage/app/uploads/public/5c5/2c6/f92/5c52c6f92b52f124565436.png differ
diff --git a/storage/app/uploads/public/5c6/086/93b/5c608693b2c0c600326798.jpg b/storage/app/uploads/public/5c6/086/93b/5c608693b2c0c600326798.jpg
new file mode 100644
index 0000000000..ed2108b8db
Binary files /dev/null and b/storage/app/uploads/public/5c6/086/93b/5c608693b2c0c600326798.jpg differ
diff --git a/storage/app/uploads/public/5c6/876/abc/5c6876abcd8f7519906691.png b/storage/app/uploads/public/5c6/876/abc/5c6876abcd8f7519906691.png
new file mode 100644
index 0000000000..7c8a74ae96
Binary files /dev/null and b/storage/app/uploads/public/5c6/876/abc/5c6876abcd8f7519906691.png differ
diff --git a/storage/app/uploads/public/5c6/daa/53e/5c6daa53edd10191265764.png b/storage/app/uploads/public/5c6/daa/53e/5c6daa53edd10191265764.png
new file mode 100644
index 0000000000..c987029711
Binary files /dev/null and b/storage/app/uploads/public/5c6/daa/53e/5c6daa53edd10191265764.png differ
diff --git a/storage/app/uploads/public/5c6/ed2/f61/5c6ed2f617ed8871688013.jpg b/storage/app/uploads/public/5c6/ed2/f61/5c6ed2f617ed8871688013.jpg
new file mode 100644
index 0000000000..bf42b2d4d8
Binary files /dev/null and b/storage/app/uploads/public/5c6/ed2/f61/5c6ed2f617ed8871688013.jpg differ
diff --git a/storage/app/uploads/public/5c7/00c/63e/5c700c63eb56b196889234.png b/storage/app/uploads/public/5c7/00c/63e/5c700c63eb56b196889234.png
new file mode 100644
index 0000000000..b91a6c4375
Binary files /dev/null and b/storage/app/uploads/public/5c7/00c/63e/5c700c63eb56b196889234.png differ
diff --git a/storage/app/uploads/public/5c7/2a2/0bb/5c72a20bb6843627788761.jpg b/storage/app/uploads/public/5c7/2a2/0bb/5c72a20bb6843627788761.jpg
new file mode 100644
index 0000000000..41eb7721bf
Binary files /dev/null and b/storage/app/uploads/public/5c7/2a2/0bb/5c72a20bb6843627788761.jpg differ
diff --git a/storage/app/uploads/public/5c7/558/1f7/5c75581f7dadb646440050.jpg b/storage/app/uploads/public/5c7/558/1f7/5c75581f7dadb646440050.jpg
new file mode 100644
index 0000000000..cba4830bc1
Binary files /dev/null and b/storage/app/uploads/public/5c7/558/1f7/5c75581f7dadb646440050.jpg differ
diff --git a/storage/app/uploads/public/5c7/67d/8c6/5c767d8c62621713488685.png b/storage/app/uploads/public/5c7/67d/8c6/5c767d8c62621713488685.png
new file mode 100644
index 0000000000..9c5ca29fbf
Binary files /dev/null and b/storage/app/uploads/public/5c7/67d/8c6/5c767d8c62621713488685.png differ
diff --git a/storage/app/uploads/public/5c7/818/df2/5c7818df2369c923755927.jpg b/storage/app/uploads/public/5c7/818/df2/5c7818df2369c923755927.jpg
new file mode 100644
index 0000000000..0b0516dba8
Binary files /dev/null and b/storage/app/uploads/public/5c7/818/df2/5c7818df2369c923755927.jpg differ
diff --git a/storage/app/uploads/public/5c7/9aa/e66/5c79aae6662fe155928325.png b/storage/app/uploads/public/5c7/9aa/e66/5c79aae6662fe155928325.png
new file mode 100644
index 0000000000..9721d14f21
Binary files /dev/null and b/storage/app/uploads/public/5c7/9aa/e66/5c79aae6662fe155928325.png differ
diff --git a/storage/app/uploads/public/5c7/a6b/251/5c7a6b251a5c0432026897.jpg b/storage/app/uploads/public/5c7/a6b/251/5c7a6b251a5c0432026897.jpg
new file mode 100644
index 0000000000..74f14a1493
Binary files /dev/null and b/storage/app/uploads/public/5c7/a6b/251/5c7a6b251a5c0432026897.jpg differ
diff --git a/storage/app/uploads/public/5c7/eb0/021/5c7eb0021fe9f976412604.png b/storage/app/uploads/public/5c7/eb0/021/5c7eb0021fe9f976412604.png
new file mode 100644
index 0000000000..ae3db590e5
Binary files /dev/null and b/storage/app/uploads/public/5c7/eb0/021/5c7eb0021fe9f976412604.png differ
diff --git a/storage/app/uploads/public/5c8/292/cb2/5c8292cb21bbd133370967.png b/storage/app/uploads/public/5c8/292/cb2/5c8292cb21bbd133370967.png
new file mode 100644
index 0000000000..80985a0e89
Binary files /dev/null and b/storage/app/uploads/public/5c8/292/cb2/5c8292cb21bbd133370967.png differ
diff --git a/storage/app/uploads/public/5c8/592/85d/5c859285d93ec042711193.jpg b/storage/app/uploads/public/5c8/592/85d/5c859285d93ec042711193.jpg
new file mode 100644
index 0000000000..bcb804613a
Binary files /dev/null and b/storage/app/uploads/public/5c8/592/85d/5c859285d93ec042711193.jpg differ
diff --git a/storage/app/uploads/public/5c8/7c8/5f1/5c87c85f18d8a373377035.jpg b/storage/app/uploads/public/5c8/7c8/5f1/5c87c85f18d8a373377035.jpg
new file mode 100644
index 0000000000..bcb804613a
Binary files /dev/null and b/storage/app/uploads/public/5c8/7c8/5f1/5c87c85f18d8a373377035.jpg differ
diff --git a/storage/app/uploads/public/5c8/928/eb4/5c8928eb4698d388918653.jpg b/storage/app/uploads/public/5c8/928/eb4/5c8928eb4698d388918653.jpg
new file mode 100644
index 0000000000..551bf78f3c
Binary files /dev/null and b/storage/app/uploads/public/5c8/928/eb4/5c8928eb4698d388918653.jpg differ
diff --git a/storage/app/uploads/public/5c9/a84/8fe/5c9a848fe2fac096915646.jpg b/storage/app/uploads/public/5c9/a84/8fe/5c9a848fe2fac096915646.jpg
new file mode 100644
index 0000000000..d8149e2a4c
Binary files /dev/null and b/storage/app/uploads/public/5c9/a84/8fe/5c9a848fe2fac096915646.jpg differ
diff --git a/storage/app/uploads/public/5c9/b32/7a5/5c9b327a5d359085248627.png b/storage/app/uploads/public/5c9/b32/7a5/5c9b327a5d359085248627.png
new file mode 100644
index 0000000000..0426ee1af3
Binary files /dev/null and b/storage/app/uploads/public/5c9/b32/7a5/5c9b327a5d359085248627.png differ
diff --git a/storage/app/uploads/public/5c9/b33/609/5c9b3360913bc868056222.png b/storage/app/uploads/public/5c9/b33/609/5c9b3360913bc868056222.png
new file mode 100644
index 0000000000..22ee7f506d
Binary files /dev/null and b/storage/app/uploads/public/5c9/b33/609/5c9b3360913bc868056222.png differ
diff --git a/storage/app/uploads/public/5c9/b33/797/5c9b337972952711787211.png b/storage/app/uploads/public/5c9/b33/797/5c9b337972952711787211.png
new file mode 100644
index 0000000000..22ee7f506d
Binary files /dev/null and b/storage/app/uploads/public/5c9/b33/797/5c9b337972952711787211.png differ
diff --git a/storage/app/uploads/public/5c9/b36/8f9/5c9b368f92e2b253703944.png b/storage/app/uploads/public/5c9/b36/8f9/5c9b368f92e2b253703944.png
new file mode 100644
index 0000000000..fb337178bc
Binary files /dev/null and b/storage/app/uploads/public/5c9/b36/8f9/5c9b368f92e2b253703944.png differ
diff --git a/storage/app/uploads/public/5ca/165/3d9/5ca1653d931bd503713803.png b/storage/app/uploads/public/5ca/165/3d9/5ca1653d931bd503713803.png
new file mode 100644
index 0000000000..041ee90f31
Binary files /dev/null and b/storage/app/uploads/public/5ca/165/3d9/5ca1653d931bd503713803.png differ
diff --git a/storage/app/uploads/public/5ca/16b/391/5ca16b39100c2545383198.png b/storage/app/uploads/public/5ca/16b/391/5ca16b39100c2545383198.png
new file mode 100644
index 0000000000..1c535cf0a4
Binary files /dev/null and b/storage/app/uploads/public/5ca/16b/391/5ca16b39100c2545383198.png differ
diff --git a/storage/app/uploads/public/5ca/16c/99b/5ca16c99b10f7431914272.png b/storage/app/uploads/public/5ca/16c/99b/5ca16c99b10f7431914272.png
new file mode 100644
index 0000000000..7ebe6ef19d
Binary files /dev/null and b/storage/app/uploads/public/5ca/16c/99b/5ca16c99b10f7431914272.png differ
diff --git a/storage/app/uploads/public/5ca/774/33b/5ca77433b020d570359819.png b/storage/app/uploads/public/5ca/774/33b/5ca77433b020d570359819.png
new file mode 100644
index 0000000000..3784d57b68
Binary files /dev/null and b/storage/app/uploads/public/5ca/774/33b/5ca77433b020d570359819.png differ
diff --git a/storage/app/uploads/public/5ca/776/3d9/5ca7763d99acc514180027.png b/storage/app/uploads/public/5ca/776/3d9/5ca7763d99acc514180027.png
new file mode 100644
index 0000000000..7da276fbab
Binary files /dev/null and b/storage/app/uploads/public/5ca/776/3d9/5ca7763d99acc514180027.png differ
diff --git a/storage/app/uploads/public/5ca/bcb/412/5cabcb41207d7434973010.png b/storage/app/uploads/public/5ca/bcb/412/5cabcb41207d7434973010.png
new file mode 100644
index 0000000000..7128880927
Binary files /dev/null and b/storage/app/uploads/public/5ca/bcb/412/5cabcb41207d7434973010.png differ
diff --git a/storage/app/uploads/public/5ca/bcb/9a1/5cabcb9a1a4ab072608872.png b/storage/app/uploads/public/5ca/bcb/9a1/5cabcb9a1a4ab072608872.png
new file mode 100644
index 0000000000..a06834cc89
Binary files /dev/null and b/storage/app/uploads/public/5ca/bcb/9a1/5cabcb9a1a4ab072608872.png differ
diff --git a/storage/app/uploads/public/5ca/bd1/e31/5cabd1e317cd5107007815.png b/storage/app/uploads/public/5ca/bd1/e31/5cabd1e317cd5107007815.png
new file mode 100644
index 0000000000..30c23cd760
Binary files /dev/null and b/storage/app/uploads/public/5ca/bd1/e31/5cabd1e317cd5107007815.png differ
diff --git a/storage/app/uploads/public/5ca/c31/576/5cac315766846559086274.png b/storage/app/uploads/public/5ca/c31/576/5cac315766846559086274.png
new file mode 100644
index 0000000000..22b01c6ff3
Binary files /dev/null and b/storage/app/uploads/public/5ca/c31/576/5cac315766846559086274.png differ
diff --git a/storage/app/uploads/public/5ca/d1d/aca/5cad1daca537a050284858.png b/storage/app/uploads/public/5ca/d1d/aca/5cad1daca537a050284858.png
new file mode 100644
index 0000000000..171c497f35
Binary files /dev/null and b/storage/app/uploads/public/5ca/d1d/aca/5cad1daca537a050284858.png differ
diff --git a/storage/app/uploads/public/5ca/d1d/ccc/5cad1dccc8c2f930366003.png b/storage/app/uploads/public/5ca/d1d/ccc/5cad1dccc8c2f930366003.png
new file mode 100644
index 0000000000..b2bda27b73
Binary files /dev/null and b/storage/app/uploads/public/5ca/d1d/ccc/5cad1dccc8c2f930366003.png differ
diff --git a/storage/app/uploads/public/5ca/d1e/444/5cad1e4448e1b678123733.png b/storage/app/uploads/public/5ca/d1e/444/5cad1e4448e1b678123733.png
new file mode 100644
index 0000000000..84cb616547
Binary files /dev/null and b/storage/app/uploads/public/5ca/d1e/444/5cad1e4448e1b678123733.png differ
diff --git a/storage/app/uploads/public/5ca/d20/5ae/5cad205ae8405844580807.png b/storage/app/uploads/public/5ca/d20/5ae/5cad205ae8405844580807.png
new file mode 100644
index 0000000000..a4f2ef2252
Binary files /dev/null and b/storage/app/uploads/public/5ca/d20/5ae/5cad205ae8405844580807.png differ
diff --git a/storage/app/uploads/public/5ca/d28/c10/5cad28c10cea3628746686.png b/storage/app/uploads/public/5ca/d28/c10/5cad28c10cea3628746686.png
new file mode 100644
index 0000000000..6c165c1cfe
Binary files /dev/null and b/storage/app/uploads/public/5ca/d28/c10/5cad28c10cea3628746686.png differ
diff --git a/storage/app/uploads/public/5ca/d29/f01/5cad29f015f4b407638980.png b/storage/app/uploads/public/5ca/d29/f01/5cad29f015f4b407638980.png
new file mode 100644
index 0000000000..2818318df6
Binary files /dev/null and b/storage/app/uploads/public/5ca/d29/f01/5cad29f015f4b407638980.png differ
diff --git a/storage/app/uploads/public/5ca/e12/bb1/5cae12bb15e13776060470.png b/storage/app/uploads/public/5ca/e12/bb1/5cae12bb15e13776060470.png
new file mode 100644
index 0000000000..4b3ba69720
Binary files /dev/null and b/storage/app/uploads/public/5ca/e12/bb1/5cae12bb15e13776060470.png differ
diff --git a/storage/app/uploads/public/5ca/e74/dd1/5cae74dd1fcc2070593034.png b/storage/app/uploads/public/5ca/e74/dd1/5cae74dd1fcc2070593034.png
new file mode 100644
index 0000000000..b1e23dca47
Binary files /dev/null and b/storage/app/uploads/public/5ca/e74/dd1/5cae74dd1fcc2070593034.png differ
diff --git a/storage/app/uploads/public/5ca/e75/a58/5cae75a58c4de440986887.png b/storage/app/uploads/public/5ca/e75/a58/5cae75a58c4de440986887.png
new file mode 100644
index 0000000000..fb47be0325
Binary files /dev/null and b/storage/app/uploads/public/5ca/e75/a58/5cae75a58c4de440986887.png differ
diff --git a/storage/app/uploads/public/5ca/e76/d92/5cae76d92fc36007142005.png b/storage/app/uploads/public/5ca/e76/d92/5cae76d92fc36007142005.png
new file mode 100644
index 0000000000..2f1ff95740
Binary files /dev/null and b/storage/app/uploads/public/5ca/e76/d92/5cae76d92fc36007142005.png differ
diff --git a/storage/app/uploads/public/5ca/e78/fa3/5cae78fa3280b961363999.png b/storage/app/uploads/public/5ca/e78/fa3/5cae78fa3280b961363999.png
new file mode 100644
index 0000000000..2f1ff95740
Binary files /dev/null and b/storage/app/uploads/public/5ca/e78/fa3/5cae78fa3280b961363999.png differ
diff --git a/storage/app/uploads/public/5ca/f3f/2b5/5caf3f2b5f75b989378173.png b/storage/app/uploads/public/5ca/f3f/2b5/5caf3f2b5f75b989378173.png
new file mode 100644
index 0000000000..bb304755dc
Binary files /dev/null and b/storage/app/uploads/public/5ca/f3f/2b5/5caf3f2b5f75b989378173.png differ
diff --git a/storage/app/uploads/public/5cb/370/921/5cb370921c397488950248.png b/storage/app/uploads/public/5cb/370/921/5cb370921c397488950248.png
new file mode 100644
index 0000000000..71d0a6bf89
Binary files /dev/null and b/storage/app/uploads/public/5cb/370/921/5cb370921c397488950248.png differ
diff --git a/storage/app/uploads/public/5cb/39d/a83/5cb39da83b153452199153.png b/storage/app/uploads/public/5cb/39d/a83/5cb39da83b153452199153.png
new file mode 100644
index 0000000000..0af1ef3061
Binary files /dev/null and b/storage/app/uploads/public/5cb/39d/a83/5cb39da83b153452199153.png differ
diff --git a/storage/app/uploads/public/5cb/4f1/7a4/5cb4f17a43632182391125.png b/storage/app/uploads/public/5cb/4f1/7a4/5cb4f17a43632182391125.png
new file mode 100644
index 0000000000..5e8a1f5741
Binary files /dev/null and b/storage/app/uploads/public/5cb/4f1/7a4/5cb4f17a43632182391125.png differ
diff --git a/storage/app/uploads/public/5cb/9c4/f57/5cb9c4f5719a8010547417.png b/storage/app/uploads/public/5cb/9c4/f57/5cb9c4f5719a8010547417.png
new file mode 100644
index 0000000000..171c497f35
Binary files /dev/null and b/storage/app/uploads/public/5cb/9c4/f57/5cb9c4f5719a8010547417.png differ
diff --git a/storage/app/uploads/public/5cb/9c5/1d2/5cb9c51d2b949452233794.png b/storage/app/uploads/public/5cb/9c5/1d2/5cb9c51d2b949452233794.png
new file mode 100644
index 0000000000..2818318df6
Binary files /dev/null and b/storage/app/uploads/public/5cb/9c5/1d2/5cb9c51d2b949452233794.png differ
diff --git a/storage/app/uploads/public/5cb/9e2/b60/5cb9e2b60bf06285510736.png b/storage/app/uploads/public/5cb/9e2/b60/5cb9e2b60bf06285510736.png
new file mode 100644
index 0000000000..20cf933a9d
Binary files /dev/null and b/storage/app/uploads/public/5cb/9e2/b60/5cb9e2b60bf06285510736.png differ
diff --git a/storage/app/uploads/public/5cb/a1f/fad/5cba1ffad5e78163949453.png b/storage/app/uploads/public/5cb/a1f/fad/5cba1ffad5e78163949453.png
new file mode 100644
index 0000000000..958098acc7
Binary files /dev/null and b/storage/app/uploads/public/5cb/a1f/fad/5cba1ffad5e78163949453.png differ
diff --git a/storage/app/uploads/public/5cb/a24/49e/5cba2449ea061494413691.png b/storage/app/uploads/public/5cb/a24/49e/5cba2449ea061494413691.png
new file mode 100644
index 0000000000..4d43218ca6
Binary files /dev/null and b/storage/app/uploads/public/5cb/a24/49e/5cba2449ea061494413691.png differ
diff --git a/storage/app/uploads/public/5cb/a27/2b1/5cba272b1dd33445053051.png b/storage/app/uploads/public/5cb/a27/2b1/5cba272b1dd33445053051.png
new file mode 100644
index 0000000000..7287c728db
Binary files /dev/null and b/storage/app/uploads/public/5cb/a27/2b1/5cba272b1dd33445053051.png differ
diff --git a/storage/app/uploads/public/5cb/a27/5de/5cba275deeea9159968354.png b/storage/app/uploads/public/5cb/a27/5de/5cba275deeea9159968354.png
new file mode 100644
index 0000000000..c8f68ab7ca
Binary files /dev/null and b/storage/app/uploads/public/5cb/a27/5de/5cba275deeea9159968354.png differ
diff --git a/storage/app/uploads/public/5cb/f0a/f71/5cbf0af719498893498887.png b/storage/app/uploads/public/5cb/f0a/f71/5cbf0af719498893498887.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5cb/f0a/f71/5cbf0af719498893498887.png differ
diff --git a/storage/app/uploads/public/5cc/0d8/411/5cc0d8411779b991254760.png b/storage/app/uploads/public/5cc/0d8/411/5cc0d8411779b991254760.png
new file mode 100644
index 0000000000..53c93baf2a
Binary files /dev/null and b/storage/app/uploads/public/5cc/0d8/411/5cc0d8411779b991254760.png differ
diff --git a/storage/app/uploads/public/5cc/0d8/f1c/5cc0d8f1c4532126761647.png b/storage/app/uploads/public/5cc/0d8/f1c/5cc0d8f1c4532126761647.png
new file mode 100644
index 0000000000..f970c4135a
Binary files /dev/null and b/storage/app/uploads/public/5cc/0d8/f1c/5cc0d8f1c4532126761647.png differ
diff --git a/storage/app/uploads/public/5cc/0d9/126/5cc0d9126190b091610560.png b/storage/app/uploads/public/5cc/0d9/126/5cc0d9126190b091610560.png
new file mode 100644
index 0000000000..911c2b3694
Binary files /dev/null and b/storage/app/uploads/public/5cc/0d9/126/5cc0d9126190b091610560.png differ
diff --git a/storage/app/uploads/public/5cc/0d9/a7f/5cc0d9a7f014b050964561.png b/storage/app/uploads/public/5cc/0d9/a7f/5cc0d9a7f014b050964561.png
new file mode 100644
index 0000000000..d800ff3c53
Binary files /dev/null and b/storage/app/uploads/public/5cc/0d9/a7f/5cc0d9a7f014b050964561.png differ
diff --git a/storage/app/uploads/public/5cc/0dd/a5a/5cc0dda5a3834246752408.png b/storage/app/uploads/public/5cc/0dd/a5a/5cc0dda5a3834246752408.png
new file mode 100644
index 0000000000..53c93baf2a
Binary files /dev/null and b/storage/app/uploads/public/5cc/0dd/a5a/5cc0dda5a3834246752408.png differ
diff --git a/storage/app/uploads/public/5cc/42f/af6/5cc42faf61a5d075621243.png b/storage/app/uploads/public/5cc/42f/af6/5cc42faf61a5d075621243.png
new file mode 100644
index 0000000000..449fead322
Binary files /dev/null and b/storage/app/uploads/public/5cc/42f/af6/5cc42faf61a5d075621243.png differ
diff --git a/storage/app/uploads/public/5ce/2db/be6/5ce2dbbe6c5ab261586810.png b/storage/app/uploads/public/5ce/2db/be6/5ce2dbbe6c5ab261586810.png
new file mode 100644
index 0000000000..f44ba21db0
Binary files /dev/null and b/storage/app/uploads/public/5ce/2db/be6/5ce2dbbe6c5ab261586810.png differ
diff --git a/storage/app/uploads/public/5ce/2db/c43/5ce2dbc43da44979393013.png b/storage/app/uploads/public/5ce/2db/c43/5ce2dbc43da44979393013.png
new file mode 100644
index 0000000000..ef575161d9
Binary files /dev/null and b/storage/app/uploads/public/5ce/2db/c43/5ce2dbc43da44979393013.png differ
diff --git a/storage/app/uploads/public/5ce/3e2/980/5ce3e2980017d563652932.png b/storage/app/uploads/public/5ce/3e2/980/5ce3e2980017d563652932.png
new file mode 100644
index 0000000000..fdcd06f6c4
Binary files /dev/null and b/storage/app/uploads/public/5ce/3e2/980/5ce3e2980017d563652932.png differ
diff --git a/storage/app/uploads/public/5ce/3e2/cdb/5ce3e2cdb9f4f320495518.png b/storage/app/uploads/public/5ce/3e2/cdb/5ce3e2cdb9f4f320495518.png
new file mode 100644
index 0000000000..239a72fee8
Binary files /dev/null and b/storage/app/uploads/public/5ce/3e2/cdb/5ce3e2cdb9f4f320495518.png differ
diff --git a/storage/app/uploads/public/5cf/4b8/f7d/5cf4b8f7daf66826927105.jpg b/storage/app/uploads/public/5cf/4b8/f7d/5cf4b8f7daf66826927105.jpg
new file mode 100644
index 0000000000..1510afb45f
Binary files /dev/null and b/storage/app/uploads/public/5cf/4b8/f7d/5cf4b8f7daf66826927105.jpg differ
diff --git a/storage/app/uploads/public/5cf/4ba/2eb/5cf4ba2eb33b0449628922.jpg b/storage/app/uploads/public/5cf/4ba/2eb/5cf4ba2eb33b0449628922.jpg
new file mode 100644
index 0000000000..247891ebea
Binary files /dev/null and b/storage/app/uploads/public/5cf/4ba/2eb/5cf4ba2eb33b0449628922.jpg differ
diff --git a/storage/app/uploads/public/5cf/69b/132/5cf69b132699d052649367.png b/storage/app/uploads/public/5cf/69b/132/5cf69b132699d052649367.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5cf/69b/132/5cf69b132699d052649367.png differ
diff --git a/storage/app/uploads/public/5d0/a2c/54a/5d0a2c54aaced070739095.png b/storage/app/uploads/public/5d0/a2c/54a/5d0a2c54aaced070739095.png
new file mode 100644
index 0000000000..384d981534
Binary files /dev/null and b/storage/app/uploads/public/5d0/a2c/54a/5d0a2c54aaced070739095.png differ
diff --git a/storage/app/uploads/public/5d0/a2d/7ca/5d0a2d7caa88a877416904.png b/storage/app/uploads/public/5d0/a2d/7ca/5d0a2d7caa88a877416904.png
new file mode 100644
index 0000000000..fb718f71d7
Binary files /dev/null and b/storage/app/uploads/public/5d0/a2d/7ca/5d0a2d7caa88a877416904.png differ
diff --git a/storage/app/uploads/public/5d1/a39/cd8/5d1a39cd8a827627782823.png b/storage/app/uploads/public/5d1/a39/cd8/5d1a39cd8a827627782823.png
new file mode 100644
index 0000000000..22bcb66243
Binary files /dev/null and b/storage/app/uploads/public/5d1/a39/cd8/5d1a39cd8a827627782823.png differ
diff --git a/storage/app/uploads/public/5d1/a3b/00a/5d1a3b00a0ca0396834227.png b/storage/app/uploads/public/5d1/a3b/00a/5d1a3b00a0ca0396834227.png
new file mode 100644
index 0000000000..a1ea88de59
Binary files /dev/null and b/storage/app/uploads/public/5d1/a3b/00a/5d1a3b00a0ca0396834227.png differ
diff --git a/storage/app/uploads/public/5d2/713/c8f/5d2713c8f26e6377170736.png b/storage/app/uploads/public/5d2/713/c8f/5d2713c8f26e6377170736.png
new file mode 100644
index 0000000000..4ebb227c2f
Binary files /dev/null and b/storage/app/uploads/public/5d2/713/c8f/5d2713c8f26e6377170736.png differ
diff --git a/storage/app/uploads/public/5d2/745/fd5/5d2745fd51cc0710225918.png b/storage/app/uploads/public/5d2/745/fd5/5d2745fd51cc0710225918.png
new file mode 100644
index 0000000000..f8702648ed
Binary files /dev/null and b/storage/app/uploads/public/5d2/745/fd5/5d2745fd51cc0710225918.png differ
diff --git a/storage/app/uploads/public/5d2/774/cd4/5d2774cd4824c039595038.png b/storage/app/uploads/public/5d2/774/cd4/5d2774cd4824c039595038.png
new file mode 100644
index 0000000000..7b7dc66ef5
Binary files /dev/null and b/storage/app/uploads/public/5d2/774/cd4/5d2774cd4824c039595038.png differ
diff --git a/storage/app/uploads/public/5d2/775/7d1/5d27757d198a8779988083.png b/storage/app/uploads/public/5d2/775/7d1/5d27757d198a8779988083.png
new file mode 100644
index 0000000000..7b7dc66ef5
Binary files /dev/null and b/storage/app/uploads/public/5d2/775/7d1/5d27757d198a8779988083.png differ
diff --git a/storage/app/uploads/public/5d2/f1d/a39/5d2f1da399a60346032001.png b/storage/app/uploads/public/5d2/f1d/a39/5d2f1da399a60346032001.png
new file mode 100644
index 0000000000..d091e22408
Binary files /dev/null and b/storage/app/uploads/public/5d2/f1d/a39/5d2f1da399a60346032001.png differ
diff --git a/storage/app/uploads/public/5d2/f1d/afd/5d2f1dafd73b6100273061.png b/storage/app/uploads/public/5d2/f1d/afd/5d2f1dafd73b6100273061.png
new file mode 100644
index 0000000000..596f05cecf
Binary files /dev/null and b/storage/app/uploads/public/5d2/f1d/afd/5d2f1dafd73b6100273061.png differ
diff --git a/storage/app/uploads/public/5d2/f22/ef7/5d2f22ef7a683099503305.png b/storage/app/uploads/public/5d2/f22/ef7/5d2f22ef7a683099503305.png
new file mode 100644
index 0000000000..f1157d3895
Binary files /dev/null and b/storage/app/uploads/public/5d2/f22/ef7/5d2f22ef7a683099503305.png differ
diff --git a/storage/app/uploads/public/5d2/f22/f68/5d2f22f682b17945240278.png b/storage/app/uploads/public/5d2/f22/f68/5d2f22f682b17945240278.png
new file mode 100644
index 0000000000..337379069a
Binary files /dev/null and b/storage/app/uploads/public/5d2/f22/f68/5d2f22f682b17945240278.png differ
diff --git a/storage/app/uploads/public/5d2/f22/fae/5d2f22faeb516906781242.png b/storage/app/uploads/public/5d2/f22/fae/5d2f22faeb516906781242.png
new file mode 100644
index 0000000000..91a9b93070
Binary files /dev/null and b/storage/app/uploads/public/5d2/f22/fae/5d2f22faeb516906781242.png differ
diff --git a/storage/app/uploads/public/5d2/f23/6c3/5d2f236c348c0977330842.png b/storage/app/uploads/public/5d2/f23/6c3/5d2f236c348c0977330842.png
new file mode 100644
index 0000000000..dd3c44857d
Binary files /dev/null and b/storage/app/uploads/public/5d2/f23/6c3/5d2f236c348c0977330842.png differ
diff --git a/storage/app/uploads/public/5d2/f37/8f4/5d2f378f489ad333505584.png b/storage/app/uploads/public/5d2/f37/8f4/5d2f378f489ad333505584.png
new file mode 100644
index 0000000000..9c5ca29fbf
Binary files /dev/null and b/storage/app/uploads/public/5d2/f37/8f4/5d2f378f489ad333505584.png differ
diff --git a/storage/app/uploads/public/5d3/04f/f48/5d304ff480b0c840286811.png b/storage/app/uploads/public/5d3/04f/f48/5d304ff480b0c840286811.png
new file mode 100644
index 0000000000..9c5ca29fbf
Binary files /dev/null and b/storage/app/uploads/public/5d3/04f/f48/5d304ff480b0c840286811.png differ
diff --git a/storage/app/uploads/public/5d3/75c/13b/5d375c13b89b2704350625.png b/storage/app/uploads/public/5d3/75c/13b/5d375c13b89b2704350625.png
new file mode 100644
index 0000000000..4455e122f6
Binary files /dev/null and b/storage/app/uploads/public/5d3/75c/13b/5d375c13b89b2704350625.png differ
diff --git a/storage/app/uploads/public/5d4/5fd/82c/5d45fd82c742e860678130.png b/storage/app/uploads/public/5d4/5fd/82c/5d45fd82c742e860678130.png
new file mode 100644
index 0000000000..d1fe219bc0
Binary files /dev/null and b/storage/app/uploads/public/5d4/5fd/82c/5d45fd82c742e860678130.png differ
diff --git a/storage/app/uploads/public/5d4/604/0cd/5d46040cdd2b1294169859.png b/storage/app/uploads/public/5d4/604/0cd/5d46040cdd2b1294169859.png
new file mode 100644
index 0000000000..8313a5fceb
Binary files /dev/null and b/storage/app/uploads/public/5d4/604/0cd/5d46040cdd2b1294169859.png differ
diff --git a/storage/app/uploads/public/5d5/d4e/904/5d5d4e9043f37492937462.png b/storage/app/uploads/public/5d5/d4e/904/5d5d4e9043f37492937462.png
new file mode 100644
index 0000000000..9c5ca29fbf
Binary files /dev/null and b/storage/app/uploads/public/5d5/d4e/904/5d5d4e9043f37492937462.png differ
diff --git a/storage/app/uploads/public/5d5/ea9/151/5d5ea9151801b115754281.png b/storage/app/uploads/public/5d5/ea9/151/5d5ea9151801b115754281.png
new file mode 100644
index 0000000000..62eff285fe
Binary files /dev/null and b/storage/app/uploads/public/5d5/ea9/151/5d5ea9151801b115754281.png differ
diff --git a/storage/app/uploads/public/5d6/d05/e0f/5d6d05e0f08ee642246147.jpeg b/storage/app/uploads/public/5d6/d05/e0f/5d6d05e0f08ee642246147.jpeg
new file mode 100644
index 0000000000..c9c245b7ce
Binary files /dev/null and b/storage/app/uploads/public/5d6/d05/e0f/5d6d05e0f08ee642246147.jpeg differ
diff --git a/storage/app/uploads/public/5d7/01f/1e2/5d701f1e2addc491682904.png b/storage/app/uploads/public/5d7/01f/1e2/5d701f1e2addc491682904.png
new file mode 100644
index 0000000000..0491943225
Binary files /dev/null and b/storage/app/uploads/public/5d7/01f/1e2/5d701f1e2addc491682904.png differ
diff --git a/storage/app/uploads/public/5d7/025/084/5d70250842430761259264.png b/storage/app/uploads/public/5d7/025/084/5d70250842430761259264.png
new file mode 100644
index 0000000000..2cbcfe7d14
Binary files /dev/null and b/storage/app/uploads/public/5d7/025/084/5d70250842430761259264.png differ
diff --git a/storage/app/uploads/public/5d7/52f/458/5d752f4583d2e116311872.png b/storage/app/uploads/public/5d7/52f/458/5d752f4583d2e116311872.png
new file mode 100644
index 0000000000..9c5ca29fbf
Binary files /dev/null and b/storage/app/uploads/public/5d7/52f/458/5d752f4583d2e116311872.png differ
diff --git a/storage/app/uploads/public/5d8/25c/62c/5d825c62cc1e4431380963.png b/storage/app/uploads/public/5d8/25c/62c/5d825c62cc1e4431380963.png
new file mode 100644
index 0000000000..d9688594b0
Binary files /dev/null and b/storage/app/uploads/public/5d8/25c/62c/5d825c62cc1e4431380963.png differ
diff --git a/storage/app/uploads/public/5d8/f4b/b0a/5d8f4bb0a3174096196968.png b/storage/app/uploads/public/5d8/f4b/b0a/5d8f4bb0a3174096196968.png
new file mode 100644
index 0000000000..9dcfcd6447
Binary files /dev/null and b/storage/app/uploads/public/5d8/f4b/b0a/5d8f4bb0a3174096196968.png differ
diff --git a/storage/app/uploads/public/5d9/4ea/c8a/5d94eac8a8423458863414.jpg b/storage/app/uploads/public/5d9/4ea/c8a/5d94eac8a8423458863414.jpg
new file mode 100644
index 0000000000..1bbda82562
Binary files /dev/null and b/storage/app/uploads/public/5d9/4ea/c8a/5d94eac8a8423458863414.jpg differ
diff --git a/storage/app/uploads/public/5d9/9bd/66b/5d99bd66b58c5678103264.jpg b/storage/app/uploads/public/5d9/9bd/66b/5d99bd66b58c5678103264.jpg
new file mode 100644
index 0000000000..1fe138673e
Binary files /dev/null and b/storage/app/uploads/public/5d9/9bd/66b/5d99bd66b58c5678103264.jpg differ
diff --git a/storage/app/uploads/public/5d9/dea/c0b/5d9deac0ba681055155639.png b/storage/app/uploads/public/5d9/dea/c0b/5d9deac0ba681055155639.png
new file mode 100644
index 0000000000..17a17e3e33
Binary files /dev/null and b/storage/app/uploads/public/5d9/dea/c0b/5d9deac0ba681055155639.png differ
diff --git a/storage/app/uploads/public/5d9/f45/22a/5d9f4522a71f4836788094.png b/storage/app/uploads/public/5d9/f45/22a/5d9f4522a71f4836788094.png
new file mode 100644
index 0000000000..2b21bce44b
Binary files /dev/null and b/storage/app/uploads/public/5d9/f45/22a/5d9f4522a71f4836788094.png differ
diff --git a/storage/app/uploads/public/5d9/f45/3c1/5d9f453c10e23274466142.png b/storage/app/uploads/public/5d9/f45/3c1/5d9f453c10e23274466142.png
new file mode 100644
index 0000000000..6947cf0bf5
Binary files /dev/null and b/storage/app/uploads/public/5d9/f45/3c1/5d9f453c10e23274466142.png differ
diff --git a/storage/app/uploads/public/5d9/f45/4f3/5d9f454f3aa48279579515.png b/storage/app/uploads/public/5d9/f45/4f3/5d9f454f3aa48279579515.png
new file mode 100644
index 0000000000..8a552a1263
Binary files /dev/null and b/storage/app/uploads/public/5d9/f45/4f3/5d9f454f3aa48279579515.png differ
diff --git a/storage/app/uploads/public/5d9/f45/a27/5d9f45a27a029831909357.jpg b/storage/app/uploads/public/5d9/f45/a27/5d9f45a27a029831909357.jpg
new file mode 100644
index 0000000000..0214d7b2c2
Binary files /dev/null and b/storage/app/uploads/public/5d9/f45/a27/5d9f45a27a029831909357.jpg differ
diff --git a/storage/app/uploads/public/5d9/f45/ba3/5d9f45ba37171965636298.jpg b/storage/app/uploads/public/5d9/f45/ba3/5d9f45ba37171965636298.jpg
new file mode 100644
index 0000000000..8c2a2a83ef
Binary files /dev/null and b/storage/app/uploads/public/5d9/f45/ba3/5d9f45ba37171965636298.jpg differ
diff --git a/storage/app/uploads/public/5d9/f45/d18/5d9f45d18f96a953974804.png b/storage/app/uploads/public/5d9/f45/d18/5d9f45d18f96a953974804.png
new file mode 100644
index 0000000000..0ab409dc26
Binary files /dev/null and b/storage/app/uploads/public/5d9/f45/d18/5d9f45d18f96a953974804.png differ
diff --git a/storage/app/uploads/public/5d9/f46/5e0/5d9f465e071af056542644.png b/storage/app/uploads/public/5d9/f46/5e0/5d9f465e071af056542644.png
new file mode 100644
index 0000000000..8a7e3ba709
Binary files /dev/null and b/storage/app/uploads/public/5d9/f46/5e0/5d9f465e071af056542644.png differ
diff --git a/storage/app/uploads/public/5d9/f48/9c4/5d9f489c43a54009438616.png b/storage/app/uploads/public/5d9/f48/9c4/5d9f489c43a54009438616.png
new file mode 100644
index 0000000000..4455e122f6
Binary files /dev/null and b/storage/app/uploads/public/5d9/f48/9c4/5d9f489c43a54009438616.png differ
diff --git a/storage/app/uploads/public/5d9/f79/d31/5d9f79d31bba2164908517.png b/storage/app/uploads/public/5d9/f79/d31/5d9f79d31bba2164908517.png
new file mode 100644
index 0000000000..02198e9daa
Binary files /dev/null and b/storage/app/uploads/public/5d9/f79/d31/5d9f79d31bba2164908517.png differ
diff --git a/storage/app/uploads/public/5da/05c/055/5da05c0555cf6056169968.jpeg b/storage/app/uploads/public/5da/05c/055/5da05c0555cf6056169968.jpeg
new file mode 100644
index 0000000000..f9452a4ee0
Binary files /dev/null and b/storage/app/uploads/public/5da/05c/055/5da05c0555cf6056169968.jpeg differ
diff --git a/storage/app/uploads/public/5da/0d6/c19/5da0d6c198b34564377170.jpg b/storage/app/uploads/public/5da/0d6/c19/5da0d6c198b34564377170.jpg
new file mode 100644
index 0000000000..3d95e29fc4
Binary files /dev/null and b/storage/app/uploads/public/5da/0d6/c19/5da0d6c198b34564377170.jpg differ
diff --git a/storage/app/uploads/public/5da/230/dd7/5da230dd7b2fd518354212.jpeg b/storage/app/uploads/public/5da/230/dd7/5da230dd7b2fd518354212.jpeg
new file mode 100644
index 0000000000..bf39e73d6a
Binary files /dev/null and b/storage/app/uploads/public/5da/230/dd7/5da230dd7b2fd518354212.jpeg differ
diff --git a/storage/app/uploads/public/5da/231/640/5da231640bc7f681580761.png b/storage/app/uploads/public/5da/231/640/5da231640bc7f681580761.png
new file mode 100644
index 0000000000..f8b86a05b2
Binary files /dev/null and b/storage/app/uploads/public/5da/231/640/5da231640bc7f681580761.png differ
diff --git a/storage/app/uploads/public/5da/231/ce0/5da231ce0c8c8323319259.png b/storage/app/uploads/public/5da/231/ce0/5da231ce0c8c8323319259.png
new file mode 100644
index 0000000000..63498060e4
Binary files /dev/null and b/storage/app/uploads/public/5da/231/ce0/5da231ce0c8c8323319259.png differ
diff --git a/storage/app/uploads/public/5da/232/45b/5da23245b7f9f590472517.png b/storage/app/uploads/public/5da/232/45b/5da23245b7f9f590472517.png
new file mode 100644
index 0000000000..ffecf540f3
Binary files /dev/null and b/storage/app/uploads/public/5da/232/45b/5da23245b7f9f590472517.png differ
diff --git a/storage/app/uploads/public/5da/233/dd4/5da233dd4d90a731626797.gif b/storage/app/uploads/public/5da/233/dd4/5da233dd4d90a731626797.gif
new file mode 100644
index 0000000000..81673ac448
Binary files /dev/null and b/storage/app/uploads/public/5da/233/dd4/5da233dd4d90a731626797.gif differ
diff --git a/storage/app/uploads/public/5da/235/88d/5da23588d659e495143462.gif b/storage/app/uploads/public/5da/235/88d/5da23588d659e495143462.gif
new file mode 100644
index 0000000000..dbd8267cb8
Binary files /dev/null and b/storage/app/uploads/public/5da/235/88d/5da23588d659e495143462.gif differ
diff --git a/storage/app/uploads/public/5da/235/edb/5da235edb5e1c385504696.png b/storage/app/uploads/public/5da/235/edb/5da235edb5e1c385504696.png
new file mode 100644
index 0000000000..b8571982c1
Binary files /dev/null and b/storage/app/uploads/public/5da/235/edb/5da235edb5e1c385504696.png differ
diff --git a/storage/app/uploads/public/5da/236/c28/5da236c281af8007391866.jpeg b/storage/app/uploads/public/5da/236/c28/5da236c281af8007391866.jpeg
new file mode 100644
index 0000000000..fda045e2f8
Binary files /dev/null and b/storage/app/uploads/public/5da/236/c28/5da236c281af8007391866.jpeg differ
diff --git a/storage/app/uploads/public/5db/1c0/ec6/5db1c0ec6cf8e490600367.png b/storage/app/uploads/public/5db/1c0/ec6/5db1c0ec6cf8e490600367.png
new file mode 100644
index 0000000000..cee29bc172
Binary files /dev/null and b/storage/app/uploads/public/5db/1c0/ec6/5db1c0ec6cf8e490600367.png differ
diff --git a/storage/app/uploads/public/5db/874/2b0/5db8742b093d7752570350.png b/storage/app/uploads/public/5db/874/2b0/5db8742b093d7752570350.png
new file mode 100644
index 0000000000..b1ee7f0502
Binary files /dev/null and b/storage/app/uploads/public/5db/874/2b0/5db8742b093d7752570350.png differ
diff --git a/storage/app/uploads/public/5db/874/3ca/5db8743ca7056849589724.png b/storage/app/uploads/public/5db/874/3ca/5db8743ca7056849589724.png
new file mode 100644
index 0000000000..dc82731990
Binary files /dev/null and b/storage/app/uploads/public/5db/874/3ca/5db8743ca7056849589724.png differ
diff --git a/storage/app/uploads/public/5db/874/4be/5db8744be52f4536086078.png b/storage/app/uploads/public/5db/874/4be/5db8744be52f4536086078.png
new file mode 100644
index 0000000000..de222ac33c
Binary files /dev/null and b/storage/app/uploads/public/5db/874/4be/5db8744be52f4536086078.png differ
diff --git a/storage/app/uploads/public/5db/87c/7eb/5db87c7eb83ec156927495.png b/storage/app/uploads/public/5db/87c/7eb/5db87c7eb83ec156927495.png
new file mode 100644
index 0000000000..e2da72f193
Binary files /dev/null and b/storage/app/uploads/public/5db/87c/7eb/5db87c7eb83ec156927495.png differ
diff --git a/storage/app/uploads/public/5db/e1d/ed1/5dbe1ded186e6248184679.gif b/storage/app/uploads/public/5db/e1d/ed1/5dbe1ded186e6248184679.gif
new file mode 100644
index 0000000000..c5296235e4
Binary files /dev/null and b/storage/app/uploads/public/5db/e1d/ed1/5dbe1ded186e6248184679.gif differ
diff --git a/storage/app/uploads/public/5db/e1f/168/5dbe1f1685635785312552.gif b/storage/app/uploads/public/5db/e1f/168/5dbe1f1685635785312552.gif
new file mode 100644
index 0000000000..e8e235a760
Binary files /dev/null and b/storage/app/uploads/public/5db/e1f/168/5dbe1f1685635785312552.gif differ
diff --git a/storage/app/uploads/public/5db/e21/777/5dbe217778697772587487.png b/storage/app/uploads/public/5db/e21/777/5dbe217778697772587487.png
new file mode 100644
index 0000000000..3be1c7dae5
Binary files /dev/null and b/storage/app/uploads/public/5db/e21/777/5dbe217778697772587487.png differ
diff --git a/storage/app/uploads/public/5db/e26/88d/5dbe2688d0f9a404983712.gif b/storage/app/uploads/public/5db/e26/88d/5dbe2688d0f9a404983712.gif
new file mode 100644
index 0000000000..daf1a4801b
Binary files /dev/null and b/storage/app/uploads/public/5db/e26/88d/5dbe2688d0f9a404983712.gif differ
diff --git a/storage/app/uploads/public/5db/e26/e58/5dbe26e58c5b1549900965.jpeg b/storage/app/uploads/public/5db/e26/e58/5dbe26e58c5b1549900965.jpeg
new file mode 100644
index 0000000000..66f230266e
Binary files /dev/null and b/storage/app/uploads/public/5db/e26/e58/5dbe26e58c5b1549900965.jpeg differ
diff --git a/storage/app/uploads/public/5db/e28/abc/5dbe28abcb0d6853104408.gif b/storage/app/uploads/public/5db/e28/abc/5dbe28abcb0d6853104408.gif
new file mode 100644
index 0000000000..7465acfdc4
Binary files /dev/null and b/storage/app/uploads/public/5db/e28/abc/5dbe28abcb0d6853104408.gif differ
diff --git a/storage/app/uploads/public/5dc/016/5dd/5dc0165dda174961503136.svg b/storage/app/uploads/public/5dc/016/5dd/5dc0165dda174961503136.svg
new file mode 100644
index 0000000000..865712b345
--- /dev/null
+++ b/storage/app/uploads/public/5dc/016/5dd/5dc0165dda174961503136.svg
@@ -0,0 +1,219 @@
+
+
+
+
\ No newline at end of file
diff --git a/storage/app/uploads/public/5dc/019/1f9/5dc0191f92385004371530.svg b/storage/app/uploads/public/5dc/019/1f9/5dc0191f92385004371530.svg
new file mode 100644
index 0000000000..865712b345
--- /dev/null
+++ b/storage/app/uploads/public/5dc/019/1f9/5dc0191f92385004371530.svg
@@ -0,0 +1,219 @@
+
+
+
+
\ No newline at end of file
diff --git a/storage/app/uploads/public/5dc/1a9/7be/5dc1a97beae06626416894.png b/storage/app/uploads/public/5dc/1a9/7be/5dc1a97beae06626416894.png
new file mode 100644
index 0000000000..119950aef3
Binary files /dev/null and b/storage/app/uploads/public/5dc/1a9/7be/5dc1a97beae06626416894.png differ
diff --git a/storage/app/uploads/public/5dc/1aa/e06/5dc1aae06d7f4636917764.png b/storage/app/uploads/public/5dc/1aa/e06/5dc1aae06d7f4636917764.png
new file mode 100644
index 0000000000..119950aef3
Binary files /dev/null and b/storage/app/uploads/public/5dc/1aa/e06/5dc1aae06d7f4636917764.png differ
diff --git a/storage/app/uploads/public/5dc/2d4/f59/5dc2d4f59ea0f935451715.jpg b/storage/app/uploads/public/5dc/2d4/f59/5dc2d4f59ea0f935451715.jpg
new file mode 100644
index 0000000000..245059af56
Binary files /dev/null and b/storage/app/uploads/public/5dc/2d4/f59/5dc2d4f59ea0f935451715.jpg differ
diff --git a/storage/app/uploads/public/5dc/bf1/454/5dcbf1454c1cc840552545.jpg b/storage/app/uploads/public/5dc/bf1/454/5dcbf1454c1cc840552545.jpg
new file mode 100644
index 0000000000..baaa4d15d7
Binary files /dev/null and b/storage/app/uploads/public/5dc/bf1/454/5dcbf1454c1cc840552545.jpg differ
diff --git a/storage/app/uploads/public/5dc/e01/229/5dce01229c795712716182.png b/storage/app/uploads/public/5dc/e01/229/5dce01229c795712716182.png
new file mode 100644
index 0000000000..e72c9696e4
Binary files /dev/null and b/storage/app/uploads/public/5dc/e01/229/5dce01229c795712716182.png differ
diff --git a/storage/app/uploads/public/5dd/555/69a/5dd55569a6e5d003811414.png b/storage/app/uploads/public/5dd/555/69a/5dd55569a6e5d003811414.png
new file mode 100644
index 0000000000..3758503cb0
Binary files /dev/null and b/storage/app/uploads/public/5dd/555/69a/5dd55569a6e5d003811414.png differ
diff --git a/storage/app/uploads/public/5dd/7f7/f3b/5dd7f7f3b7de4872680557.jpg b/storage/app/uploads/public/5dd/7f7/f3b/5dd7f7f3b7de4872680557.jpg
new file mode 100644
index 0000000000..d4273e4149
Binary files /dev/null and b/storage/app/uploads/public/5dd/7f7/f3b/5dd7f7f3b7de4872680557.jpg differ
diff --git a/storage/app/uploads/public/5de/044/c15/5de044c1559cf429683529.png b/storage/app/uploads/public/5de/044/c15/5de044c1559cf429683529.png
new file mode 100644
index 0000000000..7a55a0c775
Binary files /dev/null and b/storage/app/uploads/public/5de/044/c15/5de044c1559cf429683529.png differ
diff --git a/storage/app/uploads/public/5de/044/edb/5de044edb1159008949448.png b/storage/app/uploads/public/5de/044/edb/5de044edb1159008949448.png
new file mode 100644
index 0000000000..99d3821d4e
Binary files /dev/null and b/storage/app/uploads/public/5de/044/edb/5de044edb1159008949448.png differ
diff --git a/storage/app/uploads/public/5de/045/0f1/5de0450f18d4a943481630.png b/storage/app/uploads/public/5de/045/0f1/5de0450f18d4a943481630.png
new file mode 100644
index 0000000000..7a55a0c775
Binary files /dev/null and b/storage/app/uploads/public/5de/045/0f1/5de0450f18d4a943481630.png differ
diff --git a/storage/app/uploads/public/5de/1a4/91b/5de1a491b9c7c743318901.jpg b/storage/app/uploads/public/5de/1a4/91b/5de1a491b9c7c743318901.jpg
new file mode 100644
index 0000000000..7cffb4b6e5
Binary files /dev/null and b/storage/app/uploads/public/5de/1a4/91b/5de1a491b9c7c743318901.jpg differ
diff --git a/storage/app/uploads/public/5de/80f/61f/5de80f61f222b955329853.jpg b/storage/app/uploads/public/5de/80f/61f/5de80f61f222b955329853.jpg
new file mode 100644
index 0000000000..9826895c15
Binary files /dev/null and b/storage/app/uploads/public/5de/80f/61f/5de80f61f222b955329853.jpg differ
diff --git a/storage/app/uploads/public/5de/90c/453/5de90c453d6bf225692072.png b/storage/app/uploads/public/5de/90c/453/5de90c453d6bf225692072.png
new file mode 100644
index 0000000000..c9d5384a86
Binary files /dev/null and b/storage/app/uploads/public/5de/90c/453/5de90c453d6bf225692072.png differ
diff --git a/storage/app/uploads/public/5df/241/9c3/5df2419c346b5198207421.png b/storage/app/uploads/public/5df/241/9c3/5df2419c346b5198207421.png
new file mode 100644
index 0000000000..6f691e27c9
Binary files /dev/null and b/storage/app/uploads/public/5df/241/9c3/5df2419c346b5198207421.png differ
diff --git a/storage/app/uploads/public/5df/a07/d9c/5dfa07d9c2fd1796170879.jpg b/storage/app/uploads/public/5df/a07/d9c/5dfa07d9c2fd1796170879.jpg
new file mode 100644
index 0000000000..e0b4d7df2e
Binary files /dev/null and b/storage/app/uploads/public/5df/a07/d9c/5dfa07d9c2fd1796170879.jpg differ
diff --git a/storage/app/uploads/public/5df/a08/615/5dfa08615b000068394122.jpg b/storage/app/uploads/public/5df/a08/615/5dfa08615b000068394122.jpg
new file mode 100644
index 0000000000..883558c987
Binary files /dev/null and b/storage/app/uploads/public/5df/a08/615/5dfa08615b000068394122.jpg differ
diff --git a/storage/app/uploads/public/5df/edb/a5e/5dfedba5ec1cc099848980.png b/storage/app/uploads/public/5df/edb/a5e/5dfedba5ec1cc099848980.png
new file mode 100644
index 0000000000..f7a2ec1f8e
Binary files /dev/null and b/storage/app/uploads/public/5df/edb/a5e/5dfedba5ec1cc099848980.png differ
diff --git a/storage/app/uploads/public/5df/edc/07a/5dfedc07af0de760834643.png b/storage/app/uploads/public/5df/edc/07a/5dfedc07af0de760834643.png
new file mode 100644
index 0000000000..7468e2dd80
Binary files /dev/null and b/storage/app/uploads/public/5df/edc/07a/5dfedc07af0de760834643.png differ
diff --git a/storage/app/uploads/public/5df/edd/9cb/5dfedd9cb47cd434687816.png b/storage/app/uploads/public/5df/edd/9cb/5dfedd9cb47cd434687816.png
new file mode 100644
index 0000000000..2bbc026b74
Binary files /dev/null and b/storage/app/uploads/public/5df/edd/9cb/5dfedd9cb47cd434687816.png differ
diff --git a/storage/app/uploads/public/5df/ede/062/5dfede0622c1c483635557.png b/storage/app/uploads/public/5df/ede/062/5dfede0622c1c483635557.png
new file mode 100644
index 0000000000..597ff95a7f
Binary files /dev/null and b/storage/app/uploads/public/5df/ede/062/5dfede0622c1c483635557.png differ
diff --git a/storage/app/uploads/public/5df/ede/6eb/5dfede6eb5aae552242132.png b/storage/app/uploads/public/5df/ede/6eb/5dfede6eb5aae552242132.png
new file mode 100644
index 0000000000..91896f163f
Binary files /dev/null and b/storage/app/uploads/public/5df/ede/6eb/5dfede6eb5aae552242132.png differ
diff --git a/storage/app/uploads/public/5e0/038/931/5e00389316ad1115387831.png b/storage/app/uploads/public/5e0/038/931/5e00389316ad1115387831.png
new file mode 100644
index 0000000000..ebec4db710
Binary files /dev/null and b/storage/app/uploads/public/5e0/038/931/5e00389316ad1115387831.png differ
diff --git a/storage/app/uploads/public/5e0/038/c79/5e0038c79ec06812604309.png b/storage/app/uploads/public/5e0/038/c79/5e0038c79ec06812604309.png
new file mode 100644
index 0000000000..260adc3340
Binary files /dev/null and b/storage/app/uploads/public/5e0/038/c79/5e0038c79ec06812604309.png differ
diff --git a/storage/app/uploads/public/5e0/038/f31/5e0038f31370b180059607.png b/storage/app/uploads/public/5e0/038/f31/5e0038f31370b180059607.png
new file mode 100644
index 0000000000..44e9767f14
Binary files /dev/null and b/storage/app/uploads/public/5e0/038/f31/5e0038f31370b180059607.png differ
diff --git a/storage/app/uploads/public/5e0/039/103/5e00391034645007409355.png b/storage/app/uploads/public/5e0/039/103/5e00391034645007409355.png
new file mode 100644
index 0000000000..b5319ca8a1
Binary files /dev/null and b/storage/app/uploads/public/5e0/039/103/5e00391034645007409355.png differ
diff --git a/storage/app/uploads/public/5e0/78b/00a/5e078b00a7171714583829.png b/storage/app/uploads/public/5e0/78b/00a/5e078b00a7171714583829.png
new file mode 100644
index 0000000000..4e045f203b
Binary files /dev/null and b/storage/app/uploads/public/5e0/78b/00a/5e078b00a7171714583829.png differ
diff --git a/storage/app/uploads/public/5e0/78b/73c/5e078b73c3e45112706983.png b/storage/app/uploads/public/5e0/78b/73c/5e078b73c3e45112706983.png
new file mode 100644
index 0000000000..2b81b8926c
Binary files /dev/null and b/storage/app/uploads/public/5e0/78b/73c/5e078b73c3e45112706983.png differ
diff --git a/storage/app/uploads/public/5e0/78b/886/5e078b886caec316065171.png b/storage/app/uploads/public/5e0/78b/886/5e078b886caec316065171.png
new file mode 100644
index 0000000000..5b718e22f8
Binary files /dev/null and b/storage/app/uploads/public/5e0/78b/886/5e078b886caec316065171.png differ
diff --git a/storage/app/uploads/public/5e0/b83/849/5e0b838492e95726884765.jpeg b/storage/app/uploads/public/5e0/b83/849/5e0b838492e95726884765.jpeg
new file mode 100644
index 0000000000..67fcf58a28
Binary files /dev/null and b/storage/app/uploads/public/5e0/b83/849/5e0b838492e95726884765.jpeg differ
diff --git a/storage/app/uploads/public/5e0/b85/d9d/5e0b85d9d3edb853495694.png b/storage/app/uploads/public/5e0/b85/d9d/5e0b85d9d3edb853495694.png
new file mode 100644
index 0000000000..b8486be587
Binary files /dev/null and b/storage/app/uploads/public/5e0/b85/d9d/5e0b85d9d3edb853495694.png differ
diff --git a/storage/app/uploads/public/5e0/b86/9eb/5e0b869ebd618160831355.png b/storage/app/uploads/public/5e0/b86/9eb/5e0b869ebd618160831355.png
new file mode 100644
index 0000000000..0c2eed1b82
Binary files /dev/null and b/storage/app/uploads/public/5e0/b86/9eb/5e0b869ebd618160831355.png differ
diff --git a/storage/app/uploads/public/5e0/b86/b5e/5e0b86b5e5873141503256.png b/storage/app/uploads/public/5e0/b86/b5e/5e0b86b5e5873141503256.png
new file mode 100644
index 0000000000..48896c8fbd
Binary files /dev/null and b/storage/app/uploads/public/5e0/b86/b5e/5e0b86b5e5873141503256.png differ
diff --git a/storage/app/uploads/public/5e0/b87/225/5e0b87225348f403410178.jpg b/storage/app/uploads/public/5e0/b87/225/5e0b87225348f403410178.jpg
new file mode 100644
index 0000000000..ef2c6402a0
Binary files /dev/null and b/storage/app/uploads/public/5e0/b87/225/5e0b87225348f403410178.jpg differ
diff --git a/storage/app/uploads/public/5e0/b87/bb2/5e0b87bb2df48404553151.png b/storage/app/uploads/public/5e0/b87/bb2/5e0b87bb2df48404553151.png
new file mode 100644
index 0000000000..c8b3fedcb6
Binary files /dev/null and b/storage/app/uploads/public/5e0/b87/bb2/5e0b87bb2df48404553151.png differ
diff --git a/storage/app/uploads/public/5e0/b88/c66/5e0b88c660334537087053.png b/storage/app/uploads/public/5e0/b88/c66/5e0b88c660334537087053.png
new file mode 100644
index 0000000000..9589ded6e5
Binary files /dev/null and b/storage/app/uploads/public/5e0/b88/c66/5e0b88c660334537087053.png differ
diff --git a/storage/app/uploads/public/5e0/b8b/0c0/5e0b8b0c04557983735004.png b/storage/app/uploads/public/5e0/b8b/0c0/5e0b8b0c04557983735004.png
new file mode 100644
index 0000000000..e59cbabc17
Binary files /dev/null and b/storage/app/uploads/public/5e0/b8b/0c0/5e0b8b0c04557983735004.png differ
diff --git a/storage/app/uploads/public/5e0/f88/cc3/5e0f88cc3ebea443218386.jpg b/storage/app/uploads/public/5e0/f88/cc3/5e0f88cc3ebea443218386.jpg
new file mode 100644
index 0000000000..6ec5d4ae97
Binary files /dev/null and b/storage/app/uploads/public/5e0/f88/cc3/5e0f88cc3ebea443218386.jpg differ
diff --git a/storage/app/uploads/public/5e1/0a0/456/5e10a04563669518301236.png b/storage/app/uploads/public/5e1/0a0/456/5e10a04563669518301236.png
new file mode 100644
index 0000000000..ee68e506e2
Binary files /dev/null and b/storage/app/uploads/public/5e1/0a0/456/5e10a04563669518301236.png differ
diff --git a/storage/app/uploads/public/5e1/9ae/32b/5e19ae32b8b87812018580.png b/storage/app/uploads/public/5e1/9ae/32b/5e19ae32b8b87812018580.png
new file mode 100644
index 0000000000..271294f008
Binary files /dev/null and b/storage/app/uploads/public/5e1/9ae/32b/5e19ae32b8b87812018580.png differ
diff --git a/storage/app/uploads/public/5e2/16e/22e/5e216e22e4743255974590.jpg b/storage/app/uploads/public/5e2/16e/22e/5e216e22e4743255974590.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5e2/16e/22e/5e216e22e4743255974590.jpg differ
diff --git a/storage/app/uploads/public/5e2/578/b23/5e2578b233ae6013693652.jpg b/storage/app/uploads/public/5e2/578/b23/5e2578b233ae6013693652.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5e2/578/b23/5e2578b233ae6013693652.jpg differ
diff --git a/storage/app/uploads/public/5e2/aac/801/5e2aac801d8f5237584690.jpg b/storage/app/uploads/public/5e2/aac/801/5e2aac801d8f5237584690.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5e2/aac/801/5e2aac801d8f5237584690.jpg differ
diff --git a/storage/app/uploads/public/5e2/e02/998/5e2e0299850ed543069779.jpg b/storage/app/uploads/public/5e2/e02/998/5e2e0299850ed543069779.jpg
new file mode 100644
index 0000000000..ba1c58007e
Binary files /dev/null and b/storage/app/uploads/public/5e2/e02/998/5e2e0299850ed543069779.jpg differ
diff --git a/storage/app/uploads/public/5e2/e02/b2c/5e2e02b2c3672278533442.jpg b/storage/app/uploads/public/5e2/e02/b2c/5e2e02b2c3672278533442.jpg
new file mode 100644
index 0000000000..cb06ab9f53
Binary files /dev/null and b/storage/app/uploads/public/5e2/e02/b2c/5e2e02b2c3672278533442.jpg differ
diff --git a/storage/app/uploads/public/5e2/e02/ec7/5e2e02ec77f8d450251857.jpg b/storage/app/uploads/public/5e2/e02/ec7/5e2e02ec77f8d450251857.jpg
new file mode 100644
index 0000000000..d38cf0d7a2
Binary files /dev/null and b/storage/app/uploads/public/5e2/e02/ec7/5e2e02ec77f8d450251857.jpg differ
diff --git a/storage/app/uploads/public/5e2/e03/1ff/5e2e031ff0233877153623.jpg b/storage/app/uploads/public/5e2/e03/1ff/5e2e031ff0233877153623.jpg
new file mode 100644
index 0000000000..4d05ac8dea
Binary files /dev/null and b/storage/app/uploads/public/5e2/e03/1ff/5e2e031ff0233877153623.jpg differ
diff --git a/storage/app/uploads/public/5e2/e08/63a/5e2e0863aaadc002576427.png b/storage/app/uploads/public/5e2/e08/63a/5e2e0863aaadc002576427.png
new file mode 100644
index 0000000000..d76646c52a
Binary files /dev/null and b/storage/app/uploads/public/5e2/e08/63a/5e2e0863aaadc002576427.png differ
diff --git a/storage/app/uploads/public/5e2/eb9/c68/5e2eb9c689958125488202.jpg b/storage/app/uploads/public/5e2/eb9/c68/5e2eb9c689958125488202.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5e2/eb9/c68/5e2eb9c689958125488202.jpg differ
diff --git a/storage/app/uploads/public/5e2/f4e/8ce/5e2f4e8cef499180480265.jpg b/storage/app/uploads/public/5e2/f4e/8ce/5e2f4e8cef499180480265.jpg
new file mode 100644
index 0000000000..244ba124cf
Binary files /dev/null and b/storage/app/uploads/public/5e2/f4e/8ce/5e2f4e8cef499180480265.jpg differ
diff --git a/storage/app/uploads/public/5e3/0a4/227/5e30a42277c74335481239.png b/storage/app/uploads/public/5e3/0a4/227/5e30a42277c74335481239.png
new file mode 100644
index 0000000000..1a03d91da4
Binary files /dev/null and b/storage/app/uploads/public/5e3/0a4/227/5e30a42277c74335481239.png differ
diff --git a/storage/app/uploads/public/5e3/0a6/083/5e30a6083a68f545209322.png b/storage/app/uploads/public/5e3/0a6/083/5e30a6083a68f545209322.png
new file mode 100644
index 0000000000..da2c83104a
Binary files /dev/null and b/storage/app/uploads/public/5e3/0a6/083/5e30a6083a68f545209322.png differ
diff --git a/storage/app/uploads/public/5e3/0a6/fd9/5e30a6fd96443088839655.jpeg b/storage/app/uploads/public/5e3/0a6/fd9/5e30a6fd96443088839655.jpeg
new file mode 100644
index 0000000000..f81d445fba
Binary files /dev/null and b/storage/app/uploads/public/5e3/0a6/fd9/5e30a6fd96443088839655.jpeg differ
diff --git a/storage/app/uploads/public/5e3/0aa/4d2/5e30aa4d2ecb4011191498.png b/storage/app/uploads/public/5e3/0aa/4d2/5e30aa4d2ecb4011191498.png
new file mode 100644
index 0000000000..66603d9473
Binary files /dev/null and b/storage/app/uploads/public/5e3/0aa/4d2/5e30aa4d2ecb4011191498.png differ
diff --git a/storage/app/uploads/public/5e3/0ae/e1a/5e30aee1a2a5a347843703.png b/storage/app/uploads/public/5e3/0ae/e1a/5e30aee1a2a5a347843703.png
new file mode 100644
index 0000000000..da2c83104a
Binary files /dev/null and b/storage/app/uploads/public/5e3/0ae/e1a/5e30aee1a2a5a347843703.png differ
diff --git a/storage/app/uploads/public/5e3/15f/979/5e315f979aa78053750274.jpg b/storage/app/uploads/public/5e3/15f/979/5e315f979aa78053750274.jpg
new file mode 100644
index 0000000000..c6b45ced46
Binary files /dev/null and b/storage/app/uploads/public/5e3/15f/979/5e315f979aa78053750274.jpg differ
diff --git a/storage/app/uploads/public/5e3/161/1fe/5e31611fe7d16881964924.png b/storage/app/uploads/public/5e3/161/1fe/5e31611fe7d16881964924.png
new file mode 100644
index 0000000000..9c47f12225
Binary files /dev/null and b/storage/app/uploads/public/5e3/161/1fe/5e31611fe7d16881964924.png differ
diff --git a/storage/app/uploads/public/5e3/161/4f3/5e31614f37b41633239978.png b/storage/app/uploads/public/5e3/161/4f3/5e31614f37b41633239978.png
new file mode 100644
index 0000000000..96f27f16f4
Binary files /dev/null and b/storage/app/uploads/public/5e3/161/4f3/5e31614f37b41633239978.png differ
diff --git a/storage/app/uploads/public/5e3/161/c6e/5e3161c6eb181253514481.png b/storage/app/uploads/public/5e3/161/c6e/5e3161c6eb181253514481.png
new file mode 100644
index 0000000000..23b268cd23
Binary files /dev/null and b/storage/app/uploads/public/5e3/161/c6e/5e3161c6eb181253514481.png differ
diff --git a/storage/app/uploads/public/5e3/162/182/5e3162182c027709073016.png b/storage/app/uploads/public/5e3/162/182/5e3162182c027709073016.png
new file mode 100644
index 0000000000..0619891a95
Binary files /dev/null and b/storage/app/uploads/public/5e3/162/182/5e3162182c027709073016.png differ
diff --git a/storage/app/uploads/public/5e3/167/117/5e3167117c8c3991279770.png b/storage/app/uploads/public/5e3/167/117/5e3167117c8c3991279770.png
new file mode 100644
index 0000000000..07e4fc25c0
Binary files /dev/null and b/storage/app/uploads/public/5e3/167/117/5e3167117c8c3991279770.png differ
diff --git a/storage/app/uploads/public/5e3/6fc/337/5e36fc3371744070492297.jpg b/storage/app/uploads/public/5e3/6fc/337/5e36fc3371744070492297.jpg
new file mode 100644
index 0000000000..3018a5c23c
Binary files /dev/null and b/storage/app/uploads/public/5e3/6fc/337/5e36fc3371744070492297.jpg differ
diff --git a/storage/app/uploads/public/5e3/86b/c31/5e386bc31db0b649571269.png b/storage/app/uploads/public/5e3/86b/c31/5e386bc31db0b649571269.png
new file mode 100644
index 0000000000..3a0688ae2a
Binary files /dev/null and b/storage/app/uploads/public/5e3/86b/c31/5e386bc31db0b649571269.png differ
diff --git a/storage/app/uploads/public/5e3/d78/d9e/5e3d78d9eacfa625348868.png b/storage/app/uploads/public/5e3/d78/d9e/5e3d78d9eacfa625348868.png
new file mode 100644
index 0000000000..3de298ebdf
Binary files /dev/null and b/storage/app/uploads/public/5e3/d78/d9e/5e3d78d9eacfa625348868.png differ
diff --git a/storage/app/uploads/public/5e4/183/064/5e4183064b6bd149641883.png b/storage/app/uploads/public/5e4/183/064/5e4183064b6bd149641883.png
new file mode 100644
index 0000000000..620f79781a
Binary files /dev/null and b/storage/app/uploads/public/5e4/183/064/5e4183064b6bd149641883.png differ
diff --git a/storage/app/uploads/public/5e4/29f/3d0/5e429f3d06b36035564587.png b/storage/app/uploads/public/5e4/29f/3d0/5e429f3d06b36035564587.png
new file mode 100644
index 0000000000..91d247f05e
Binary files /dev/null and b/storage/app/uploads/public/5e4/29f/3d0/5e429f3d06b36035564587.png differ
diff --git a/storage/app/uploads/public/5e4/941/218/5e494121885db845075999.png b/storage/app/uploads/public/5e4/941/218/5e494121885db845075999.png
new file mode 100644
index 0000000000..6445d03c98
Binary files /dev/null and b/storage/app/uploads/public/5e4/941/218/5e494121885db845075999.png differ
diff --git a/storage/app/uploads/public/5e4/c0d/65c/5e4c0d65cd4f3481105700.png b/storage/app/uploads/public/5e4/c0d/65c/5e4c0d65cd4f3481105700.png
new file mode 100644
index 0000000000..8ff8c695fa
Binary files /dev/null and b/storage/app/uploads/public/5e4/c0d/65c/5e4c0d65cd4f3481105700.png differ
diff --git a/storage/app/uploads/public/5e4/c0e/ac7/5e4c0eac7915a157602679.png b/storage/app/uploads/public/5e4/c0e/ac7/5e4c0eac7915a157602679.png
new file mode 100644
index 0000000000..62fba2b005
Binary files /dev/null and b/storage/app/uploads/public/5e4/c0e/ac7/5e4c0eac7915a157602679.png differ
diff --git a/storage/app/uploads/public/5e4/c0f/d09/5e4c0fd09cd1a299305405.png b/storage/app/uploads/public/5e4/c0f/d09/5e4c0fd09cd1a299305405.png
new file mode 100644
index 0000000000..c7ede189ba
Binary files /dev/null and b/storage/app/uploads/public/5e4/c0f/d09/5e4c0fd09cd1a299305405.png differ
diff --git a/storage/app/uploads/public/5e4/c10/d2d/5e4c10d2d8e04595177196.png b/storage/app/uploads/public/5e4/c10/d2d/5e4c10d2d8e04595177196.png
new file mode 100644
index 0000000000..2e2aeef7f8
Binary files /dev/null and b/storage/app/uploads/public/5e4/c10/d2d/5e4c10d2d8e04595177196.png differ
diff --git a/storage/app/uploads/public/5e4/c11/898/5e4c1189818d4657182141.png b/storage/app/uploads/public/5e4/c11/898/5e4c1189818d4657182141.png
new file mode 100644
index 0000000000..8ce72927b4
Binary files /dev/null and b/storage/app/uploads/public/5e4/c11/898/5e4c1189818d4657182141.png differ
diff --git a/storage/app/uploads/public/5e5/10f/1c7/5e510f1c7000c476919180.jpg b/storage/app/uploads/public/5e5/10f/1c7/5e510f1c7000c476919180.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5e5/10f/1c7/5e510f1c7000c476919180.jpg differ
diff --git a/storage/app/uploads/public/5e5/161/379/5e5161379a049802838811.png b/storage/app/uploads/public/5e5/161/379/5e5161379a049802838811.png
new file mode 100644
index 0000000000..f3af33484e
Binary files /dev/null and b/storage/app/uploads/public/5e5/161/379/5e5161379a049802838811.png differ
diff --git a/storage/app/uploads/public/5e5/164/7e8/5e51647e88bcd863421756.png b/storage/app/uploads/public/5e5/164/7e8/5e51647e88bcd863421756.png
new file mode 100644
index 0000000000..c70d4807ca
Binary files /dev/null and b/storage/app/uploads/public/5e5/164/7e8/5e51647e88bcd863421756.png differ
diff --git a/storage/app/uploads/public/5e5/166/6a0/5e51666a0d8b2890019310.png b/storage/app/uploads/public/5e5/166/6a0/5e51666a0d8b2890019310.png
new file mode 100644
index 0000000000..73313de55e
Binary files /dev/null and b/storage/app/uploads/public/5e5/166/6a0/5e51666a0d8b2890019310.png differ
diff --git a/storage/app/uploads/public/5e5/a92/06e/5e5a9206e8437287746735.png b/storage/app/uploads/public/5e5/a92/06e/5e5a9206e8437287746735.png
new file mode 100644
index 0000000000..9978cb5f08
Binary files /dev/null and b/storage/app/uploads/public/5e5/a92/06e/5e5a9206e8437287746735.png differ
diff --git a/storage/app/uploads/public/5e5/a94/3b8/5e5a943b8cb8f883026432.png b/storage/app/uploads/public/5e5/a94/3b8/5e5a943b8cb8f883026432.png
new file mode 100644
index 0000000000..a45dd97246
Binary files /dev/null and b/storage/app/uploads/public/5e5/a94/3b8/5e5a943b8cb8f883026432.png differ
diff --git a/storage/app/uploads/public/5e5/a98/38e/5e5a9838e6a8b964298813.png b/storage/app/uploads/public/5e5/a98/38e/5e5a9838e6a8b964298813.png
new file mode 100644
index 0000000000..db2d49cc1c
Binary files /dev/null and b/storage/app/uploads/public/5e5/a98/38e/5e5a9838e6a8b964298813.png differ
diff --git a/storage/app/uploads/public/5e6/0f2/0e8/5e60f20e83083668051672.jpg b/storage/app/uploads/public/5e6/0f2/0e8/5e60f20e83083668051672.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5e6/0f2/0e8/5e60f20e83083668051672.jpg differ
diff --git a/storage/app/uploads/public/5e6/76e/b88/5e676eb885595988806573.jpg b/storage/app/uploads/public/5e6/76e/b88/5e676eb885595988806573.jpg
new file mode 100644
index 0000000000..4974cd9a19
Binary files /dev/null and b/storage/app/uploads/public/5e6/76e/b88/5e676eb885595988806573.jpg differ
diff --git a/storage/app/uploads/public/5e6/f7f/ea9/5e6f7fea96f53548347643.png b/storage/app/uploads/public/5e6/f7f/ea9/5e6f7fea96f53548347643.png
new file mode 100644
index 0000000000..ac580f599c
Binary files /dev/null and b/storage/app/uploads/public/5e6/f7f/ea9/5e6f7fea96f53548347643.png differ
diff --git a/storage/app/uploads/public/5e7/7f2/a75/5e77f2a75cf79778591830.png b/storage/app/uploads/public/5e7/7f2/a75/5e77f2a75cf79778591830.png
new file mode 100644
index 0000000000..d57f31f8fb
Binary files /dev/null and b/storage/app/uploads/public/5e7/7f2/a75/5e77f2a75cf79778591830.png differ
diff --git a/storage/app/uploads/public/5e7/f72/b93/5e7f72b937ca6119099433.jpeg b/storage/app/uploads/public/5e7/f72/b93/5e7f72b937ca6119099433.jpeg
new file mode 100644
index 0000000000..4890a790fd
Binary files /dev/null and b/storage/app/uploads/public/5e7/f72/b93/5e7f72b937ca6119099433.jpeg differ
diff --git a/storage/app/uploads/public/5e7/f73/7eb/5e7f737eb5c64127870073.jpeg b/storage/app/uploads/public/5e7/f73/7eb/5e7f737eb5c64127870073.jpeg
new file mode 100644
index 0000000000..d1b00a352a
Binary files /dev/null and b/storage/app/uploads/public/5e7/f73/7eb/5e7f737eb5c64127870073.jpeg differ
diff --git a/storage/app/uploads/public/5e7/f73/92d/5e7f7392d353b123436098.png b/storage/app/uploads/public/5e7/f73/92d/5e7f7392d353b123436098.png
new file mode 100644
index 0000000000..fd9cc7bd25
Binary files /dev/null and b/storage/app/uploads/public/5e7/f73/92d/5e7f7392d353b123436098.png differ
diff --git a/storage/app/uploads/public/5e7/f74/038/5e7f74038bd23290506434.png b/storage/app/uploads/public/5e7/f74/038/5e7f74038bd23290506434.png
new file mode 100644
index 0000000000..d0768ff6a3
Binary files /dev/null and b/storage/app/uploads/public/5e7/f74/038/5e7f74038bd23290506434.png differ
diff --git a/storage/app/uploads/public/5e7/f74/307/5e7f74307ce34896455561.jpeg b/storage/app/uploads/public/5e7/f74/307/5e7f74307ce34896455561.jpeg
new file mode 100644
index 0000000000..8336bcfb2e
Binary files /dev/null and b/storage/app/uploads/public/5e7/f74/307/5e7f74307ce34896455561.jpeg differ
diff --git a/storage/app/uploads/public/5e8/92c/7b8/5e892c7b82886061410800.png b/storage/app/uploads/public/5e8/92c/7b8/5e892c7b82886061410800.png
new file mode 100644
index 0000000000..96375775f5
Binary files /dev/null and b/storage/app/uploads/public/5e8/92c/7b8/5e892c7b82886061410800.png differ
diff --git a/storage/app/uploads/public/5e8/e4f/660/5e8e4f660d679955685206.jpg b/storage/app/uploads/public/5e8/e4f/660/5e8e4f660d679955685206.jpg
new file mode 100644
index 0000000000..6dbecbc8ce
Binary files /dev/null and b/storage/app/uploads/public/5e8/e4f/660/5e8e4f660d679955685206.jpg differ
diff --git a/storage/app/uploads/public/5e8/e58/0c6/5e8e580c63d1e981395802.png b/storage/app/uploads/public/5e8/e58/0c6/5e8e580c63d1e981395802.png
new file mode 100644
index 0000000000..678f311bcf
Binary files /dev/null and b/storage/app/uploads/public/5e8/e58/0c6/5e8e580c63d1e981395802.png differ
diff --git a/storage/app/uploads/public/5e9/91e/f93/5e991ef93c174195976834.png b/storage/app/uploads/public/5e9/91e/f93/5e991ef93c174195976834.png
new file mode 100644
index 0000000000..4fb1d6a107
Binary files /dev/null and b/storage/app/uploads/public/5e9/91e/f93/5e991ef93c174195976834.png differ
diff --git a/storage/app/uploads/public/5e9/924/8f0/5e99248f0baa6666466843.png b/storage/app/uploads/public/5e9/924/8f0/5e99248f0baa6666466843.png
new file mode 100644
index 0000000000..08ac97803f
Binary files /dev/null and b/storage/app/uploads/public/5e9/924/8f0/5e99248f0baa6666466843.png differ
diff --git a/storage/app/uploads/public/5e9/927/4b4/5e99274b41446806535926.png b/storage/app/uploads/public/5e9/927/4b4/5e99274b41446806535926.png
new file mode 100644
index 0000000000..080cfad054
Binary files /dev/null and b/storage/app/uploads/public/5e9/927/4b4/5e99274b41446806535926.png differ
diff --git a/storage/app/uploads/public/5e9/927/545/5e9927545d809505894099.png b/storage/app/uploads/public/5e9/927/545/5e9927545d809505894099.png
new file mode 100644
index 0000000000..439f0abe59
Binary files /dev/null and b/storage/app/uploads/public/5e9/927/545/5e9927545d809505894099.png differ
diff --git a/storage/app/uploads/public/5e9/c16/331/5e9c16331c02c557914246.png b/storage/app/uploads/public/5e9/c16/331/5e9c16331c02c557914246.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5e9/c16/331/5e9c16331c02c557914246.png differ
diff --git a/storage/app/uploads/public/5ea/435/3b5/5ea4353b508ad758750279.png b/storage/app/uploads/public/5ea/435/3b5/5ea4353b508ad758750279.png
new file mode 100644
index 0000000000..54cf4ac902
Binary files /dev/null and b/storage/app/uploads/public/5ea/435/3b5/5ea4353b508ad758750279.png differ
diff --git a/storage/app/uploads/public/5ea/c9d/3db/5eac9d3dbbe51072383889.png b/storage/app/uploads/public/5ea/c9d/3db/5eac9d3dbbe51072383889.png
new file mode 100644
index 0000000000..24e36b2f94
Binary files /dev/null and b/storage/app/uploads/public/5ea/c9d/3db/5eac9d3dbbe51072383889.png differ
diff --git a/storage/app/uploads/public/5ea/c9d/daa/5eac9ddaaa75f607495001.jpeg b/storage/app/uploads/public/5ea/c9d/daa/5eac9ddaaa75f607495001.jpeg
new file mode 100644
index 0000000000..ca6f3f1911
Binary files /dev/null and b/storage/app/uploads/public/5ea/c9d/daa/5eac9ddaaa75f607495001.jpeg differ
diff --git a/storage/app/uploads/public/5ea/c9e/d77/5eac9ed77de4f353003428.jpeg b/storage/app/uploads/public/5ea/c9e/d77/5eac9ed77de4f353003428.jpeg
new file mode 100644
index 0000000000..f7ee2cd29e
Binary files /dev/null and b/storage/app/uploads/public/5ea/c9e/d77/5eac9ed77de4f353003428.jpeg differ
diff --git a/storage/app/uploads/public/5ea/c9f/569/5eac9f5698271747075184.jpeg b/storage/app/uploads/public/5ea/c9f/569/5eac9f5698271747075184.jpeg
new file mode 100644
index 0000000000..a766c66259
Binary files /dev/null and b/storage/app/uploads/public/5ea/c9f/569/5eac9f5698271747075184.jpeg differ
diff --git a/storage/app/uploads/public/5ea/ca1/762/5eaca17628e6f319355812.png b/storage/app/uploads/public/5ea/ca1/762/5eaca17628e6f319355812.png
new file mode 100644
index 0000000000..5c34f23192
Binary files /dev/null and b/storage/app/uploads/public/5ea/ca1/762/5eaca17628e6f319355812.png differ
diff --git a/storage/app/uploads/public/5ea/ca2/9c9/5eaca29c9c577395303319.png b/storage/app/uploads/public/5ea/ca2/9c9/5eaca29c9c577395303319.png
new file mode 100644
index 0000000000..7ca4483d47
Binary files /dev/null and b/storage/app/uploads/public/5ea/ca2/9c9/5eaca29c9c577395303319.png differ
diff --git a/storage/app/uploads/public/5ea/ca2/f3d/5eaca2f3d580f007549925.jpeg b/storage/app/uploads/public/5ea/ca2/f3d/5eaca2f3d580f007549925.jpeg
new file mode 100644
index 0000000000..51be21443a
Binary files /dev/null and b/storage/app/uploads/public/5ea/ca2/f3d/5eaca2f3d580f007549925.jpeg differ
diff --git a/storage/app/uploads/public/5ea/ca3/992/5eaca3992abf2483827201.png b/storage/app/uploads/public/5ea/ca3/992/5eaca3992abf2483827201.png
new file mode 100644
index 0000000000..3ba4e4f752
Binary files /dev/null and b/storage/app/uploads/public/5ea/ca3/992/5eaca3992abf2483827201.png differ
diff --git a/storage/app/uploads/public/5ea/ca4/184/5eaca41843bd7059021546.jpeg b/storage/app/uploads/public/5ea/ca4/184/5eaca41843bd7059021546.jpeg
new file mode 100644
index 0000000000..9f39efdfa5
Binary files /dev/null and b/storage/app/uploads/public/5ea/ca4/184/5eaca41843bd7059021546.jpeg differ
diff --git a/storage/app/uploads/public/5ea/ca4/7fa/5eaca47fa3b0f867779520.png b/storage/app/uploads/public/5ea/ca4/7fa/5eaca47fa3b0f867779520.png
new file mode 100644
index 0000000000..d1c9aacab1
Binary files /dev/null and b/storage/app/uploads/public/5ea/ca4/7fa/5eaca47fa3b0f867779520.png differ
diff --git a/storage/app/uploads/public/5ea/ca5/6a8/5eaca56a8beaa637264799.jpeg b/storage/app/uploads/public/5ea/ca5/6a8/5eaca56a8beaa637264799.jpeg
new file mode 100644
index 0000000000..67c385933c
Binary files /dev/null and b/storage/app/uploads/public/5ea/ca5/6a8/5eaca56a8beaa637264799.jpeg differ
diff --git a/storage/app/uploads/public/5ea/ca6/6b7/5eaca66b74041506577562.jpeg b/storage/app/uploads/public/5ea/ca6/6b7/5eaca66b74041506577562.jpeg
new file mode 100644
index 0000000000..60e24d3dea
Binary files /dev/null and b/storage/app/uploads/public/5ea/ca6/6b7/5eaca66b74041506577562.jpeg differ
diff --git a/storage/app/uploads/public/5ea/ca9/b28/5eaca9b28e21f592433351.jpeg b/storage/app/uploads/public/5ea/ca9/b28/5eaca9b28e21f592433351.jpeg
new file mode 100644
index 0000000000..a766c66259
Binary files /dev/null and b/storage/app/uploads/public/5ea/ca9/b28/5eaca9b28e21f592433351.jpeg differ
diff --git a/storage/app/uploads/public/5eb/018/a65/5eb018a659a8f843228718.png b/storage/app/uploads/public/5eb/018/a65/5eb018a659a8f843228718.png
new file mode 100644
index 0000000000..5267e467e3
Binary files /dev/null and b/storage/app/uploads/public/5eb/018/a65/5eb018a659a8f843228718.png differ
diff --git a/storage/app/uploads/public/5eb/400/0dd/5eb4000ddf0d8512778590.png b/storage/app/uploads/public/5eb/400/0dd/5eb4000ddf0d8512778590.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5eb/400/0dd/5eb4000ddf0d8512778590.png differ
diff --git a/storage/app/uploads/public/5eb/709/418/5eb7094186f6f904221083.png b/storage/app/uploads/public/5eb/709/418/5eb7094186f6f904221083.png
new file mode 100644
index 0000000000..386231d814
Binary files /dev/null and b/storage/app/uploads/public/5eb/709/418/5eb7094186f6f904221083.png differ
diff --git a/storage/app/uploads/public/5eb/709/d16/5eb709d167476053655813.png b/storage/app/uploads/public/5eb/709/d16/5eb709d167476053655813.png
new file mode 100644
index 0000000000..24f3205fb7
Binary files /dev/null and b/storage/app/uploads/public/5eb/709/d16/5eb709d167476053655813.png differ
diff --git a/storage/app/uploads/public/5eb/70a/d31/5eb70ad311dd4899233045.png b/storage/app/uploads/public/5eb/70a/d31/5eb70ad311dd4899233045.png
new file mode 100644
index 0000000000..3a7b26e724
Binary files /dev/null and b/storage/app/uploads/public/5eb/70a/d31/5eb70ad311dd4899233045.png differ
diff --git a/storage/app/uploads/public/5eb/70b/309/5eb70b3093b8f810015790.png b/storage/app/uploads/public/5eb/70b/309/5eb70b3093b8f810015790.png
new file mode 100644
index 0000000000..0860d2c648
Binary files /dev/null and b/storage/app/uploads/public/5eb/70b/309/5eb70b3093b8f810015790.png differ
diff --git a/storage/app/uploads/public/5eb/70c/1be/5eb70c1be04ef378851840.png b/storage/app/uploads/public/5eb/70c/1be/5eb70c1be04ef378851840.png
new file mode 100644
index 0000000000..693120b1d8
Binary files /dev/null and b/storage/app/uploads/public/5eb/70c/1be/5eb70c1be04ef378851840.png differ
diff --git a/storage/app/uploads/public/5eb/70c/b01/5eb70cb01f81d534204732.png b/storage/app/uploads/public/5eb/70c/b01/5eb70cb01f81d534204732.png
new file mode 100644
index 0000000000..0df04c9cac
Binary files /dev/null and b/storage/app/uploads/public/5eb/70c/b01/5eb70cb01f81d534204732.png differ
diff --git a/storage/app/uploads/public/5eb/70d/29d/5eb70d29d1139539460053.png b/storage/app/uploads/public/5eb/70d/29d/5eb70d29d1139539460053.png
new file mode 100644
index 0000000000..c3eafdf679
Binary files /dev/null and b/storage/app/uploads/public/5eb/70d/29d/5eb70d29d1139539460053.png differ
diff --git a/storage/app/uploads/public/5eb/70d/91b/5eb70d91b29b8372893117.png b/storage/app/uploads/public/5eb/70d/91b/5eb70d91b29b8372893117.png
new file mode 100644
index 0000000000..e5a34e9d42
Binary files /dev/null and b/storage/app/uploads/public/5eb/70d/91b/5eb70d91b29b8372893117.png differ
diff --git a/storage/app/uploads/public/5eb/70d/c27/5eb70dc27e632736391193.png b/storage/app/uploads/public/5eb/70d/c27/5eb70dc27e632736391193.png
new file mode 100644
index 0000000000..386231d814
Binary files /dev/null and b/storage/app/uploads/public/5eb/70d/c27/5eb70dc27e632736391193.png differ
diff --git a/storage/app/uploads/public/5ec/7a2/8d5/5ec7a28d5656c146172595.png b/storage/app/uploads/public/5ec/7a2/8d5/5ec7a28d5656c146172595.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5ec/7a2/8d5/5ec7a28d5656c146172595.png differ
diff --git a/storage/app/uploads/public/5ec/fab/40c/5ecfab40cc43e902530760.png b/storage/app/uploads/public/5ec/fab/40c/5ecfab40cc43e902530760.png
new file mode 100644
index 0000000000..eb847f189d
Binary files /dev/null and b/storage/app/uploads/public/5ec/fab/40c/5ecfab40cc43e902530760.png differ
diff --git a/storage/app/uploads/public/5ec/fab/650/5ecfab6500451585441017.png b/storage/app/uploads/public/5ec/fab/650/5ecfab6500451585441017.png
new file mode 100644
index 0000000000..b475b4fdc7
Binary files /dev/null and b/storage/app/uploads/public/5ec/fab/650/5ecfab6500451585441017.png differ
diff --git a/storage/app/uploads/public/5ec/fab/9db/5ecfab9db77ed097759444.png b/storage/app/uploads/public/5ec/fab/9db/5ecfab9db77ed097759444.png
new file mode 100644
index 0000000000..3e78c0f774
Binary files /dev/null and b/storage/app/uploads/public/5ec/fab/9db/5ecfab9db77ed097759444.png differ
diff --git a/storage/app/uploads/public/5ec/fab/e00/5ecfabe00b0f9402944496.png b/storage/app/uploads/public/5ec/fab/e00/5ecfabe00b0f9402944496.png
new file mode 100644
index 0000000000..6f9c4f6ca3
Binary files /dev/null and b/storage/app/uploads/public/5ec/fab/e00/5ecfabe00b0f9402944496.png differ
diff --git a/storage/app/uploads/public/5ec/fac/2a0/5ecfac2a03bc1119573590.png b/storage/app/uploads/public/5ec/fac/2a0/5ecfac2a03bc1119573590.png
new file mode 100644
index 0000000000..ecd64da41c
Binary files /dev/null and b/storage/app/uploads/public/5ec/fac/2a0/5ecfac2a03bc1119573590.png differ
diff --git a/storage/app/uploads/public/5ec/fac/334/5ecfac334405b789986563.png b/storage/app/uploads/public/5ec/fac/334/5ecfac334405b789986563.png
new file mode 100644
index 0000000000..72ef90649f
Binary files /dev/null and b/storage/app/uploads/public/5ec/fac/334/5ecfac334405b789986563.png differ
diff --git a/storage/app/uploads/public/5ec/fac/efa/5ecfacefaeb1e933757325.png b/storage/app/uploads/public/5ec/fac/efa/5ecfacefaeb1e933757325.png
new file mode 100644
index 0000000000..ecd64da41c
Binary files /dev/null and b/storage/app/uploads/public/5ec/fac/efa/5ecfacefaeb1e933757325.png differ
diff --git a/storage/app/uploads/public/5ed/43c/e24/5ed43ce245f10218039510.png b/storage/app/uploads/public/5ed/43c/e24/5ed43ce245f10218039510.png
new file mode 100644
index 0000000000..e9eabfe0f5
Binary files /dev/null and b/storage/app/uploads/public/5ed/43c/e24/5ed43ce245f10218039510.png differ
diff --git a/storage/app/uploads/public/5ed/a94/760/5eda94760bb2e320902518.png b/storage/app/uploads/public/5ed/a94/760/5eda94760bb2e320902518.png
new file mode 100644
index 0000000000..f7e122999b
Binary files /dev/null and b/storage/app/uploads/public/5ed/a94/760/5eda94760bb2e320902518.png differ
diff --git a/storage/app/uploads/public/5ee/105/a49/5ee105a49ffe5297659537.png b/storage/app/uploads/public/5ee/105/a49/5ee105a49ffe5297659537.png
new file mode 100644
index 0000000000..989e7f9f8b
Binary files /dev/null and b/storage/app/uploads/public/5ee/105/a49/5ee105a49ffe5297659537.png differ
diff --git a/storage/app/uploads/public/5ee/38a/dca/5ee38adca7c14514308047.jpg b/storage/app/uploads/public/5ee/38a/dca/5ee38adca7c14514308047.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5ee/38a/dca/5ee38adca7c14514308047.jpg differ
diff --git a/storage/app/uploads/public/5ee/b7c/5c0/5eeb7c5c0d2ed339418233.jpg b/storage/app/uploads/public/5ee/b7c/5c0/5eeb7c5c0d2ed339418233.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5ee/b7c/5c0/5eeb7c5c0d2ed339418233.jpg differ
diff --git a/storage/app/uploads/public/5ef/0ca/3a0/5ef0ca3a02bad250381385.jpg b/storage/app/uploads/public/5ef/0ca/3a0/5ef0ca3a02bad250381385.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5ef/0ca/3a0/5ef0ca3a02bad250381385.jpg differ
diff --git a/storage/app/uploads/public/5ef/450/702/5ef45070297f5645726026.jpg b/storage/app/uploads/public/5ef/450/702/5ef45070297f5645726026.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5ef/450/702/5ef45070297f5645726026.jpg differ
diff --git a/storage/app/uploads/public/5ef/477/2d8/5ef4772d8ab2c844046542.jpg b/storage/app/uploads/public/5ef/477/2d8/5ef4772d8ab2c844046542.jpg
new file mode 100644
index 0000000000..78fac9f964
Binary files /dev/null and b/storage/app/uploads/public/5ef/477/2d8/5ef4772d8ab2c844046542.jpg differ
diff --git a/storage/app/uploads/public/5ef/897/537/5ef897537bd2e627064094.jpeg b/storage/app/uploads/public/5ef/897/537/5ef897537bd2e627064094.jpeg
new file mode 100644
index 0000000000..1b926b2702
Binary files /dev/null and b/storage/app/uploads/public/5ef/897/537/5ef897537bd2e627064094.jpeg differ
diff --git a/storage/app/uploads/public/5ef/897/88d/5ef89788d937a898536731.jpeg b/storage/app/uploads/public/5ef/897/88d/5ef89788d937a898536731.jpeg
new file mode 100644
index 0000000000..5a8afe65dd
Binary files /dev/null and b/storage/app/uploads/public/5ef/897/88d/5ef89788d937a898536731.jpeg differ
diff --git a/storage/app/uploads/public/5ef/897/ea2/5ef897ea2c026417781991.jpeg b/storage/app/uploads/public/5ef/897/ea2/5ef897ea2c026417781991.jpeg
new file mode 100644
index 0000000000..032de19c4c
Binary files /dev/null and b/storage/app/uploads/public/5ef/897/ea2/5ef897ea2c026417781991.jpeg differ
diff --git a/storage/app/uploads/public/5ef/899/c76/5ef899c76e7ce588705275.jpeg b/storage/app/uploads/public/5ef/899/c76/5ef899c76e7ce588705275.jpeg
new file mode 100644
index 0000000000..2019d06be4
Binary files /dev/null and b/storage/app/uploads/public/5ef/899/c76/5ef899c76e7ce588705275.jpeg differ
diff --git a/storage/app/uploads/public/5ef/e2c/2de/5efe2c2decc5d252776859.png b/storage/app/uploads/public/5ef/e2c/2de/5efe2c2decc5d252776859.png
new file mode 100644
index 0000000000..c41fd36700
Binary files /dev/null and b/storage/app/uploads/public/5ef/e2c/2de/5efe2c2decc5d252776859.png differ
diff --git a/storage/app/uploads/public/5ef/e2d/10d/5efe2d10d53f8199324952.png b/storage/app/uploads/public/5ef/e2d/10d/5efe2d10d53f8199324952.png
new file mode 100644
index 0000000000..104b696946
Binary files /dev/null and b/storage/app/uploads/public/5ef/e2d/10d/5efe2d10d53f8199324952.png differ
diff --git a/storage/app/uploads/public/5f0/1d9/4c7/5f01d94c7cb0c113580640.png b/storage/app/uploads/public/5f0/1d9/4c7/5f01d94c7cb0c113580640.png
new file mode 100644
index 0000000000..38420cee79
Binary files /dev/null and b/storage/app/uploads/public/5f0/1d9/4c7/5f01d94c7cb0c113580640.png differ
diff --git a/storage/app/uploads/public/5f0/1dc/449/5f01dc44949a0974006486.png b/storage/app/uploads/public/5f0/1dc/449/5f01dc44949a0974006486.png
new file mode 100644
index 0000000000..f5998b67f1
Binary files /dev/null and b/storage/app/uploads/public/5f0/1dc/449/5f01dc44949a0974006486.png differ
diff --git a/storage/app/uploads/public/5f0/1dc/aad/5f01dcaada660672581193.png b/storage/app/uploads/public/5f0/1dc/aad/5f01dcaada660672581193.png
new file mode 100644
index 0000000000..b2a2f7b2e7
Binary files /dev/null and b/storage/app/uploads/public/5f0/1dc/aad/5f01dcaada660672581193.png differ
diff --git a/storage/app/uploads/public/5f0/1e0/78a/5f01e078a90b8387938454.png b/storage/app/uploads/public/5f0/1e0/78a/5f01e078a90b8387938454.png
new file mode 100644
index 0000000000..919be9d73c
Binary files /dev/null and b/storage/app/uploads/public/5f0/1e0/78a/5f01e078a90b8387938454.png differ
diff --git a/storage/app/uploads/public/5f0/1e2/3f1/5f01e23f14f72785015023.png b/storage/app/uploads/public/5f0/1e2/3f1/5f01e23f14f72785015023.png
new file mode 100644
index 0000000000..97608cc9e9
Binary files /dev/null and b/storage/app/uploads/public/5f0/1e2/3f1/5f01e23f14f72785015023.png differ
diff --git a/storage/app/uploads/public/5f0/390/8aa/5f03908aa71d6900240172.png b/storage/app/uploads/public/5f0/390/8aa/5f03908aa71d6900240172.png
new file mode 100644
index 0000000000..e4778b7172
Binary files /dev/null and b/storage/app/uploads/public/5f0/390/8aa/5f03908aa71d6900240172.png differ
diff --git a/storage/app/uploads/public/5f0/611/604/5f06116044778216695928.png b/storage/app/uploads/public/5f0/611/604/5f06116044778216695928.png
new file mode 100644
index 0000000000..7ec994079a
Binary files /dev/null and b/storage/app/uploads/public/5f0/611/604/5f06116044778216695928.png differ
diff --git a/storage/app/uploads/public/5f0/88d/f52/5f088df523902915752287.png b/storage/app/uploads/public/5f0/88d/f52/5f088df523902915752287.png
new file mode 100644
index 0000000000..0583073380
Binary files /dev/null and b/storage/app/uploads/public/5f0/88d/f52/5f088df523902915752287.png differ
diff --git a/storage/app/uploads/public/5f0/c5e/633/5f0c5e633f71e265929241.png b/storage/app/uploads/public/5f0/c5e/633/5f0c5e633f71e265929241.png
new file mode 100644
index 0000000000..b4876677a7
Binary files /dev/null and b/storage/app/uploads/public/5f0/c5e/633/5f0c5e633f71e265929241.png differ
diff --git a/storage/app/uploads/public/5f1/564/d56/5f1564d569884631328374.jpg b/storage/app/uploads/public/5f1/564/d56/5f1564d569884631328374.jpg
new file mode 100644
index 0000000000..9c495d6076
Binary files /dev/null and b/storage/app/uploads/public/5f1/564/d56/5f1564d569884631328374.jpg differ
diff --git a/storage/app/uploads/public/5f1/85c/9f2/5f185c9f27c96795702459.png b/storage/app/uploads/public/5f1/85c/9f2/5f185c9f27c96795702459.png
new file mode 100644
index 0000000000..f560d24f75
Binary files /dev/null and b/storage/app/uploads/public/5f1/85c/9f2/5f185c9f27c96795702459.png differ
diff --git a/storage/app/uploads/public/5f1/af6/371/5f1af6371d735642621411.jpg b/storage/app/uploads/public/5f1/af6/371/5f1af6371d735642621411.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5f1/af6/371/5f1af6371d735642621411.jpg differ
diff --git a/storage/app/uploads/public/5f2/06d/a44/5f206da44f3b1661449838.jpg b/storage/app/uploads/public/5f2/06d/a44/5f206da44f3b1661449838.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5f2/06d/a44/5f206da44f3b1661449838.jpg differ
diff --git a/storage/app/uploads/public/5f2/1bb/011/5f21bb0114081243850484.png b/storage/app/uploads/public/5f2/1bb/011/5f21bb0114081243850484.png
new file mode 100644
index 0000000000..9c5ca29fbf
Binary files /dev/null and b/storage/app/uploads/public/5f2/1bb/011/5f21bb0114081243850484.png differ
diff --git a/storage/app/uploads/public/5f2/1bb/4b5/5f21bb4b5db6e891086811.png b/storage/app/uploads/public/5f2/1bb/4b5/5f21bb4b5db6e891086811.png
new file mode 100644
index 0000000000..9672c81a27
Binary files /dev/null and b/storage/app/uploads/public/5f2/1bb/4b5/5f21bb4b5db6e891086811.png differ
diff --git a/storage/app/uploads/public/5f2/1bb/62e/5f21bb62eee03401688317.gif b/storage/app/uploads/public/5f2/1bb/62e/5f21bb62eee03401688317.gif
new file mode 100644
index 0000000000..33f9e61c90
Binary files /dev/null and b/storage/app/uploads/public/5f2/1bb/62e/5f21bb62eee03401688317.gif differ
diff --git a/storage/app/uploads/public/5f2/1bb/90c/5f21bb90c125d343515465.jpg b/storage/app/uploads/public/5f2/1bb/90c/5f21bb90c125d343515465.jpg
new file mode 100644
index 0000000000..004dcde920
Binary files /dev/null and b/storage/app/uploads/public/5f2/1bb/90c/5f21bb90c125d343515465.jpg differ
diff --git a/storage/app/uploads/public/5f2/1bc/4d2/5f21bc4d2f248313883600.gif b/storage/app/uploads/public/5f2/1bc/4d2/5f21bc4d2f248313883600.gif
new file mode 100644
index 0000000000..dd5434220c
Binary files /dev/null and b/storage/app/uploads/public/5f2/1bc/4d2/5f21bc4d2f248313883600.gif differ
diff --git a/storage/app/uploads/public/5f2/1bc/852/5f21bc85233af430532626.png b/storage/app/uploads/public/5f2/1bc/852/5f21bc85233af430532626.png
new file mode 100644
index 0000000000..a9a5543d50
Binary files /dev/null and b/storage/app/uploads/public/5f2/1bc/852/5f21bc85233af430532626.png differ
diff --git a/storage/app/uploads/public/5f2/1bc/c72/5f21bcc72a331385473013.gif b/storage/app/uploads/public/5f2/1bc/c72/5f21bcc72a331385473013.gif
new file mode 100644
index 0000000000..cfa094e129
Binary files /dev/null and b/storage/app/uploads/public/5f2/1bc/c72/5f21bcc72a331385473013.gif differ
diff --git a/storage/app/uploads/public/5f2/1bd/08c/5f21bd08c2fe3227851463.png b/storage/app/uploads/public/5f2/1bd/08c/5f21bd08c2fe3227851463.png
new file mode 100644
index 0000000000..685e7eca2e
Binary files /dev/null and b/storage/app/uploads/public/5f2/1bd/08c/5f21bd08c2fe3227851463.png differ
diff --git a/storage/app/uploads/public/5f2/1bd/164/5f21bd164f8c5091635096.gif b/storage/app/uploads/public/5f2/1bd/164/5f21bd164f8c5091635096.gif
new file mode 100644
index 0000000000..736625acfc
Binary files /dev/null and b/storage/app/uploads/public/5f2/1bd/164/5f21bd164f8c5091635096.gif differ
diff --git a/storage/app/uploads/public/5f2/419/7c6/5f24197c6a84c254572036.jpg b/storage/app/uploads/public/5f2/419/7c6/5f24197c6a84c254572036.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5f2/419/7c6/5f24197c6a84c254572036.jpg differ
diff --git a/storage/app/uploads/public/5f2/966/b6d/5f2966b6dca1a217164497.png b/storage/app/uploads/public/5f2/966/b6d/5f2966b6dca1a217164497.png
new file mode 100644
index 0000000000..6629e8874a
Binary files /dev/null and b/storage/app/uploads/public/5f2/966/b6d/5f2966b6dca1a217164497.png differ
diff --git a/storage/app/uploads/public/5f3/fbb/015/5f3fbb015beb7529159252.jpg b/storage/app/uploads/public/5f3/fbb/015/5f3fbb015beb7529159252.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5f3/fbb/015/5f3fbb015beb7529159252.jpg differ
diff --git a/storage/app/uploads/public/5f4/66c/b1b/5f466cb1b23ec647588316.png b/storage/app/uploads/public/5f4/66c/b1b/5f466cb1b23ec647588316.png
new file mode 100644
index 0000000000..02f0c21149
Binary files /dev/null and b/storage/app/uploads/public/5f4/66c/b1b/5f466cb1b23ec647588316.png differ
diff --git a/storage/app/uploads/public/5f4/8d5/175/5f48d51759192009283012.png b/storage/app/uploads/public/5f4/8d5/175/5f48d51759192009283012.png
new file mode 100644
index 0000000000..3d5db10649
Binary files /dev/null and b/storage/app/uploads/public/5f4/8d5/175/5f48d51759192009283012.png differ
diff --git a/storage/app/uploads/public/5f4/ed8/457/5f4ed845746c3708025266.png b/storage/app/uploads/public/5f4/ed8/457/5f4ed845746c3708025266.png
new file mode 100644
index 0000000000..e163be24f9
Binary files /dev/null and b/storage/app/uploads/public/5f4/ed8/457/5f4ed845746c3708025266.png differ
diff --git a/storage/app/uploads/public/5f4/ed9/871/5f4ed98717863615304589.png b/storage/app/uploads/public/5f4/ed9/871/5f4ed98717863615304589.png
new file mode 100644
index 0000000000..98055ee124
Binary files /dev/null and b/storage/app/uploads/public/5f4/ed9/871/5f4ed98717863615304589.png differ
diff --git a/storage/app/uploads/public/5f4/f5b/28e/5f4f5b28e3bc7036433999.jpg b/storage/app/uploads/public/5f4/f5b/28e/5f4f5b28e3bc7036433999.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5f4/f5b/28e/5f4f5b28e3bc7036433999.jpg differ
diff --git a/storage/app/uploads/public/5f5/89f/2b4/5f589f2b46587026501332.jpg b/storage/app/uploads/public/5f5/89f/2b4/5f589f2b46587026501332.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/5f5/89f/2b4/5f589f2b46587026501332.jpg differ
diff --git a/storage/app/uploads/public/5f6/361/d91/5f6361d91ea05815400927.jpg b/storage/app/uploads/public/5f6/361/d91/5f6361d91ea05815400927.jpg
new file mode 100644
index 0000000000..36900dea59
Binary files /dev/null and b/storage/app/uploads/public/5f6/361/d91/5f6361d91ea05815400927.jpg differ
diff --git a/storage/app/uploads/public/5f7/dd0/27a/5f7dd027a070a333686808.png b/storage/app/uploads/public/5f7/dd0/27a/5f7dd027a070a333686808.png
new file mode 100644
index 0000000000..cc561b9076
Binary files /dev/null and b/storage/app/uploads/public/5f7/dd0/27a/5f7dd027a070a333686808.png differ
diff --git a/storage/app/uploads/public/5f7/f43/bd9/5f7f43bd98b90925234717.png b/storage/app/uploads/public/5f7/f43/bd9/5f7f43bd98b90925234717.png
new file mode 100644
index 0000000000..b5612c8f32
Binary files /dev/null and b/storage/app/uploads/public/5f7/f43/bd9/5f7f43bd98b90925234717.png differ
diff --git a/storage/app/uploads/public/5f7/f44/dc3/5f7f44dc3c34f793434163.jpeg b/storage/app/uploads/public/5f7/f44/dc3/5f7f44dc3c34f793434163.jpeg
new file mode 100644
index 0000000000..6e8ac92a39
Binary files /dev/null and b/storage/app/uploads/public/5f7/f44/dc3/5f7f44dc3c34f793434163.jpeg differ
diff --git a/storage/app/uploads/public/5f7/f4a/c24/5f7f4ac242e0b845845549.png b/storage/app/uploads/public/5f7/f4a/c24/5f7f4ac242e0b845845549.png
new file mode 100644
index 0000000000..3d6b7179bb
Binary files /dev/null and b/storage/app/uploads/public/5f7/f4a/c24/5f7f4ac242e0b845845549.png differ
diff --git a/storage/app/uploads/public/5f8/6de/fcd/5f86defcda1f5469301289.png b/storage/app/uploads/public/5f8/6de/fcd/5f86defcda1f5469301289.png
new file mode 100644
index 0000000000..c8ddef376b
Binary files /dev/null and b/storage/app/uploads/public/5f8/6de/fcd/5f86defcda1f5469301289.png differ
diff --git a/storage/app/uploads/public/5f8/6e1/e2a/5f86e1e2a51ea134186437.png b/storage/app/uploads/public/5f8/6e1/e2a/5f86e1e2a51ea134186437.png
new file mode 100644
index 0000000000..5e04100c19
Binary files /dev/null and b/storage/app/uploads/public/5f8/6e1/e2a/5f86e1e2a51ea134186437.png differ
diff --git a/storage/app/uploads/public/5f8/6e2/612/5f86e2612931d380061737.png b/storage/app/uploads/public/5f8/6e2/612/5f86e2612931d380061737.png
new file mode 100644
index 0000000000..cb64937d15
Binary files /dev/null and b/storage/app/uploads/public/5f8/6e2/612/5f86e2612931d380061737.png differ
diff --git a/storage/app/uploads/public/5f8/6e2/bc6/5f86e2bc652b4356694485.png b/storage/app/uploads/public/5f8/6e2/bc6/5f86e2bc652b4356694485.png
new file mode 100644
index 0000000000..a22650e3a5
Binary files /dev/null and b/storage/app/uploads/public/5f8/6e2/bc6/5f86e2bc652b4356694485.png differ
diff --git a/storage/app/uploads/public/5f8/6e6/fe4/5f86e6fe4559f023119606.png b/storage/app/uploads/public/5f8/6e6/fe4/5f86e6fe4559f023119606.png
new file mode 100644
index 0000000000..ab6f8d2445
Binary files /dev/null and b/storage/app/uploads/public/5f8/6e6/fe4/5f86e6fe4559f023119606.png differ
diff --git a/storage/app/uploads/public/5f8/6ec/9d7/5f86ec9d7d0fd694122636.png b/storage/app/uploads/public/5f8/6ec/9d7/5f86ec9d7d0fd694122636.png
new file mode 100644
index 0000000000..c8ddef376b
Binary files /dev/null and b/storage/app/uploads/public/5f8/6ec/9d7/5f86ec9d7d0fd694122636.png differ
diff --git a/storage/app/uploads/public/5f8/6f4/65c/5f86f465c6e7f350446734.png b/storage/app/uploads/public/5f8/6f4/65c/5f86f465c6e7f350446734.png
new file mode 100644
index 0000000000..9555376f67
Binary files /dev/null and b/storage/app/uploads/public/5f8/6f4/65c/5f86f465c6e7f350446734.png differ
diff --git a/storage/app/uploads/public/5f8/d66/bae/5f8d66bae9125677247883.png b/storage/app/uploads/public/5f8/d66/bae/5f8d66bae9125677247883.png
new file mode 100644
index 0000000000..6804838777
Binary files /dev/null and b/storage/app/uploads/public/5f8/d66/bae/5f8d66bae9125677247883.png differ
diff --git a/storage/app/uploads/public/5f9/05d/220/5f905d22085b8748176138.jpg b/storage/app/uploads/public/5f9/05d/220/5f905d22085b8748176138.jpg
new file mode 100644
index 0000000000..9c495d6076
Binary files /dev/null and b/storage/app/uploads/public/5f9/05d/220/5f905d22085b8748176138.jpg differ
diff --git a/storage/app/uploads/public/5f9/17e/9ec/5f917e9ecf2a2049515486.png b/storage/app/uploads/public/5f9/17e/9ec/5f917e9ecf2a2049515486.png
new file mode 100644
index 0000000000..8baa7c2e6f
Binary files /dev/null and b/storage/app/uploads/public/5f9/17e/9ec/5f917e9ecf2a2049515486.png differ
diff --git a/storage/app/uploads/public/5f9/883/f4c/5f9883f4cbca6695990935.png b/storage/app/uploads/public/5f9/883/f4c/5f9883f4cbca6695990935.png
new file mode 100644
index 0000000000..0935c82ee1
Binary files /dev/null and b/storage/app/uploads/public/5f9/883/f4c/5f9883f4cbca6695990935.png differ
diff --git a/storage/app/uploads/public/5f9/88c/905/5f988c90545a8956737903.png b/storage/app/uploads/public/5f9/88c/905/5f988c90545a8956737903.png
new file mode 100644
index 0000000000..82749f40ba
Binary files /dev/null and b/storage/app/uploads/public/5f9/88c/905/5f988c90545a8956737903.png differ
diff --git a/storage/app/uploads/public/5f9/ab0/8c2/5f9ab08c29909806138597.png b/storage/app/uploads/public/5f9/ab0/8c2/5f9ab08c29909806138597.png
new file mode 100644
index 0000000000..8ddc723273
Binary files /dev/null and b/storage/app/uploads/public/5f9/ab0/8c2/5f9ab08c29909806138597.png differ
diff --git a/storage/app/uploads/public/5f9/ab0/990/5f9ab0990205f215371719.png b/storage/app/uploads/public/5f9/ab0/990/5f9ab0990205f215371719.png
new file mode 100644
index 0000000000..87a3a5056e
Binary files /dev/null and b/storage/app/uploads/public/5f9/ab0/990/5f9ab0990205f215371719.png differ
diff --git a/storage/app/uploads/public/5f9/ab0/a45/5f9ab0a45ba9c930829579.png b/storage/app/uploads/public/5f9/ab0/a45/5f9ab0a45ba9c930829579.png
new file mode 100644
index 0000000000..059b786f90
Binary files /dev/null and b/storage/app/uploads/public/5f9/ab0/a45/5f9ab0a45ba9c930829579.png differ
diff --git a/storage/app/uploads/public/5f9/ab0/bd9/5f9ab0bd9bc7f519888172.png b/storage/app/uploads/public/5f9/ab0/bd9/5f9ab0bd9bc7f519888172.png
new file mode 100644
index 0000000000..5e8c46e119
Binary files /dev/null and b/storage/app/uploads/public/5f9/ab0/bd9/5f9ab0bd9bc7f519888172.png differ
diff --git a/storage/app/uploads/public/5f9/ab0/c09/5f9ab0c095876209674720.png b/storage/app/uploads/public/5f9/ab0/c09/5f9ab0c095876209674720.png
new file mode 100644
index 0000000000..96132dd60b
Binary files /dev/null and b/storage/app/uploads/public/5f9/ab0/c09/5f9ab0c095876209674720.png differ
diff --git a/storage/app/uploads/public/5f9/ab0/cd0/5f9ab0cd03075487056412.png b/storage/app/uploads/public/5f9/ab0/cd0/5f9ab0cd03075487056412.png
new file mode 100644
index 0000000000..a4d1a96a78
Binary files /dev/null and b/storage/app/uploads/public/5f9/ab0/cd0/5f9ab0cd03075487056412.png differ
diff --git a/storage/app/uploads/public/5f9/ab0/d67/5f9ab0d67b297148367651.png b/storage/app/uploads/public/5f9/ab0/d67/5f9ab0d67b297148367651.png
new file mode 100644
index 0000000000..46874e6c3e
Binary files /dev/null and b/storage/app/uploads/public/5f9/ab0/d67/5f9ab0d67b297148367651.png differ
diff --git a/storage/app/uploads/public/5f9/ab0/e30/5f9ab0e30a6ab831089813.png b/storage/app/uploads/public/5f9/ab0/e30/5f9ab0e30a6ab831089813.png
new file mode 100644
index 0000000000..b7cfa3cdbf
Binary files /dev/null and b/storage/app/uploads/public/5f9/ab0/e30/5f9ab0e30a6ab831089813.png differ
diff --git a/storage/app/uploads/public/5f9/ab1/122/5f9ab11220775871830624.png b/storage/app/uploads/public/5f9/ab1/122/5f9ab11220775871830624.png
new file mode 100644
index 0000000000..9bdd9e6994
Binary files /dev/null and b/storage/app/uploads/public/5f9/ab1/122/5f9ab11220775871830624.png differ
diff --git a/storage/app/uploads/public/5f9/ab1/9a7/5f9ab19a7b4d9032991692.gif b/storage/app/uploads/public/5f9/ab1/9a7/5f9ab19a7b4d9032991692.gif
new file mode 100644
index 0000000000..e58d825589
Binary files /dev/null and b/storage/app/uploads/public/5f9/ab1/9a7/5f9ab19a7b4d9032991692.gif differ
diff --git a/storage/app/uploads/public/5f9/c8b/149/5f9c8b149a866095706571.png b/storage/app/uploads/public/5f9/c8b/149/5f9c8b149a866095706571.png
new file mode 100644
index 0000000000..721665a727
Binary files /dev/null and b/storage/app/uploads/public/5f9/c8b/149/5f9c8b149a866095706571.png differ
diff --git a/storage/app/uploads/public/5fa/3f1/fd2/5fa3f1fd29135851685419.jpg b/storage/app/uploads/public/5fa/3f1/fd2/5fa3f1fd29135851685419.jpg
new file mode 100644
index 0000000000..5c7b07e57c
Binary files /dev/null and b/storage/app/uploads/public/5fa/3f1/fd2/5fa3f1fd29135851685419.jpg differ
diff --git a/storage/app/uploads/public/5fb/540/f13/5fb540f133068076528179.jpg b/storage/app/uploads/public/5fb/540/f13/5fb540f133068076528179.jpg
new file mode 100644
index 0000000000..9c495d6076
Binary files /dev/null and b/storage/app/uploads/public/5fb/540/f13/5fb540f133068076528179.jpg differ
diff --git a/storage/app/uploads/public/5fb/e92/016/5fbe920160a53834592537.jpg b/storage/app/uploads/public/5fb/e92/016/5fbe920160a53834592537.jpg
new file mode 100644
index 0000000000..8c9797591e
Binary files /dev/null and b/storage/app/uploads/public/5fb/e92/016/5fbe920160a53834592537.jpg differ
diff --git a/storage/app/uploads/public/5fc/0f4/eac/5fc0f4eac186e790380821.jpg b/storage/app/uploads/public/5fc/0f4/eac/5fc0f4eac186e790380821.jpg
new file mode 100644
index 0000000000..9c495d6076
Binary files /dev/null and b/storage/app/uploads/public/5fc/0f4/eac/5fc0f4eac186e790380821.jpg differ
diff --git a/storage/app/uploads/public/5fc/29b/040/5fc29b040313b176851112.png b/storage/app/uploads/public/5fc/29b/040/5fc29b040313b176851112.png
new file mode 100644
index 0000000000..17114e50de
Binary files /dev/null and b/storage/app/uploads/public/5fc/29b/040/5fc29b040313b176851112.png differ
diff --git a/storage/app/uploads/public/5fc/29d/914/5fc29d9142907447129624.jpeg b/storage/app/uploads/public/5fc/29d/914/5fc29d9142907447129624.jpeg
new file mode 100644
index 0000000000..5a919dfc14
Binary files /dev/null and b/storage/app/uploads/public/5fc/29d/914/5fc29d9142907447129624.jpeg differ
diff --git a/storage/app/uploads/public/5fc/29e/9b6/5fc29e9b68aac765092840.png b/storage/app/uploads/public/5fc/29e/9b6/5fc29e9b68aac765092840.png
new file mode 100644
index 0000000000..275c616b3d
Binary files /dev/null and b/storage/app/uploads/public/5fc/29e/9b6/5fc29e9b68aac765092840.png differ
diff --git a/storage/app/uploads/public/5fc/2a1/782/5fc2a17821989501808749.png b/storage/app/uploads/public/5fc/2a1/782/5fc2a17821989501808749.png
new file mode 100644
index 0000000000..275c616b3d
Binary files /dev/null and b/storage/app/uploads/public/5fc/2a1/782/5fc2a17821989501808749.png differ
diff --git a/storage/app/uploads/public/5fc/66e/e08/5fc66ee08ee7b547877260.gif b/storage/app/uploads/public/5fc/66e/e08/5fc66ee08ee7b547877260.gif
new file mode 100644
index 0000000000..0a42a17fcf
Binary files /dev/null and b/storage/app/uploads/public/5fc/66e/e08/5fc66ee08ee7b547877260.gif differ
diff --git a/storage/app/uploads/public/5fc/887/c53/5fc887c53e36a590331970.png b/storage/app/uploads/public/5fc/887/c53/5fc887c53e36a590331970.png
new file mode 100644
index 0000000000..db8cb1f511
Binary files /dev/null and b/storage/app/uploads/public/5fc/887/c53/5fc887c53e36a590331970.png differ
diff --git a/storage/app/uploads/public/5fc/8f2/85e/5fc8f285e75a5623838507.png b/storage/app/uploads/public/5fc/8f2/85e/5fc8f285e75a5623838507.png
new file mode 100644
index 0000000000..db8cb1f511
Binary files /dev/null and b/storage/app/uploads/public/5fc/8f2/85e/5fc8f285e75a5623838507.png differ
diff --git a/storage/app/uploads/public/5fc/8fe/6fa/5fc8fe6fae97d632718971.png b/storage/app/uploads/public/5fc/8fe/6fa/5fc8fe6fae97d632718971.png
new file mode 100644
index 0000000000..7d55cbb1a9
Binary files /dev/null and b/storage/app/uploads/public/5fc/8fe/6fa/5fc8fe6fae97d632718971.png differ
diff --git a/storage/app/uploads/public/5fc/8fe/924/5fc8fe924a214204296490.png b/storage/app/uploads/public/5fc/8fe/924/5fc8fe924a214204296490.png
new file mode 100644
index 0000000000..54852c55e3
Binary files /dev/null and b/storage/app/uploads/public/5fc/8fe/924/5fc8fe924a214204296490.png differ
diff --git a/storage/app/uploads/public/5fc/8fe/bd6/5fc8febd65f7c670216153.png b/storage/app/uploads/public/5fc/8fe/bd6/5fc8febd65f7c670216153.png
new file mode 100644
index 0000000000..8df12a3fd5
Binary files /dev/null and b/storage/app/uploads/public/5fc/8fe/bd6/5fc8febd65f7c670216153.png differ
diff --git a/storage/app/uploads/public/5fc/8fe/e80/5fc8fee80a1e9162541704.png b/storage/app/uploads/public/5fc/8fe/e80/5fc8fee80a1e9162541704.png
new file mode 100644
index 0000000000..54852c55e3
Binary files /dev/null and b/storage/app/uploads/public/5fc/8fe/e80/5fc8fee80a1e9162541704.png differ
diff --git a/storage/app/uploads/public/5fc/e5b/f98/5fce5bf98e348880445902.png b/storage/app/uploads/public/5fc/e5b/f98/5fce5bf98e348880445902.png
new file mode 100644
index 0000000000..4b4b3206a7
Binary files /dev/null and b/storage/app/uploads/public/5fc/e5b/f98/5fce5bf98e348880445902.png differ
diff --git a/storage/app/uploads/public/5fd/398/01a/5fd39801a2fcb799144127.jpg b/storage/app/uploads/public/5fd/398/01a/5fd39801a2fcb799144127.jpg
new file mode 100644
index 0000000000..9c495d6076
Binary files /dev/null and b/storage/app/uploads/public/5fd/398/01a/5fd39801a2fcb799144127.jpg differ
diff --git a/storage/app/uploads/public/5fd/3d8/93c/5fd3d893cc1bb743932204.png b/storage/app/uploads/public/5fd/3d8/93c/5fd3d893cc1bb743932204.png
new file mode 100644
index 0000000000..d3bc6f651b
Binary files /dev/null and b/storage/app/uploads/public/5fd/3d8/93c/5fd3d893cc1bb743932204.png differ
diff --git a/storage/app/uploads/public/5fd/8c9/92b/5fd8c992b68a7578144586.jpg b/storage/app/uploads/public/5fd/8c9/92b/5fd8c992b68a7578144586.jpg
new file mode 100644
index 0000000000..c9b4c6175a
Binary files /dev/null and b/storage/app/uploads/public/5fd/8c9/92b/5fd8c992b68a7578144586.jpg differ
diff --git a/storage/app/uploads/public/5fd/d4a/1da/5fdd4a1dadfac213080744.png b/storage/app/uploads/public/5fd/d4a/1da/5fdd4a1dadfac213080744.png
new file mode 100644
index 0000000000..30ad6fc7a6
Binary files /dev/null and b/storage/app/uploads/public/5fd/d4a/1da/5fdd4a1dadfac213080744.png differ
diff --git a/storage/app/uploads/public/5fe/0b6/6f9/5fe0b66f9ef85260274295.png b/storage/app/uploads/public/5fe/0b6/6f9/5fe0b66f9ef85260274295.png
new file mode 100644
index 0000000000..46a7fc2425
Binary files /dev/null and b/storage/app/uploads/public/5fe/0b6/6f9/5fe0b66f9ef85260274295.png differ
diff --git a/storage/app/uploads/public/5fe/0b7/741/5fe0b77416fd2727783264.png b/storage/app/uploads/public/5fe/0b7/741/5fe0b77416fd2727783264.png
new file mode 100644
index 0000000000..f4bd1cc2d2
Binary files /dev/null and b/storage/app/uploads/public/5fe/0b7/741/5fe0b77416fd2727783264.png differ
diff --git a/storage/app/uploads/public/5fe/1a5/089/5fe1a50899fe1978638754.png b/storage/app/uploads/public/5fe/1a5/089/5fe1a50899fe1978638754.png
new file mode 100644
index 0000000000..d793865ddc
Binary files /dev/null and b/storage/app/uploads/public/5fe/1a5/089/5fe1a50899fe1978638754.png differ
diff --git a/storage/app/uploads/public/5fe/1a5/51c/5fe1a551c4971868617968.png b/storage/app/uploads/public/5fe/1a5/51c/5fe1a551c4971868617968.png
new file mode 100644
index 0000000000..f4d0a40830
Binary files /dev/null and b/storage/app/uploads/public/5fe/1a5/51c/5fe1a551c4971868617968.png differ
diff --git a/storage/app/uploads/public/5fe/1a5/614/5fe1a56147259830483005.png b/storage/app/uploads/public/5fe/1a5/614/5fe1a56147259830483005.png
new file mode 100644
index 0000000000..b195b93b2e
Binary files /dev/null and b/storage/app/uploads/public/5fe/1a5/614/5fe1a56147259830483005.png differ
diff --git a/storage/app/uploads/public/5fe/1a5/6e9/5fe1a56e97fcd500275634.png b/storage/app/uploads/public/5fe/1a5/6e9/5fe1a56e97fcd500275634.png
new file mode 100644
index 0000000000..df5db88d2e
Binary files /dev/null and b/storage/app/uploads/public/5fe/1a5/6e9/5fe1a56e97fcd500275634.png differ
diff --git a/storage/app/uploads/public/5fe/1a5/7e1/5fe1a57e1bc07058215711.png b/storage/app/uploads/public/5fe/1a5/7e1/5fe1a57e1bc07058215711.png
new file mode 100644
index 0000000000..8c138f4dfd
Binary files /dev/null and b/storage/app/uploads/public/5fe/1a5/7e1/5fe1a57e1bc07058215711.png differ
diff --git a/storage/app/uploads/public/5fe/1a5/8b1/5fe1a58b1a6d5796589718.png b/storage/app/uploads/public/5fe/1a5/8b1/5fe1a58b1a6d5796589718.png
new file mode 100644
index 0000000000..3e3d07d3a4
Binary files /dev/null and b/storage/app/uploads/public/5fe/1a5/8b1/5fe1a58b1a6d5796589718.png differ
diff --git a/storage/app/uploads/public/5fe/1a5/905/5fe1a59051f29443168025.png b/storage/app/uploads/public/5fe/1a5/905/5fe1a59051f29443168025.png
new file mode 100644
index 0000000000..390c5c2aaa
Binary files /dev/null and b/storage/app/uploads/public/5fe/1a5/905/5fe1a59051f29443168025.png differ
diff --git a/storage/app/uploads/public/5fe/1a5/a77/5fe1a5a7744fe943517369.png b/storage/app/uploads/public/5fe/1a5/a77/5fe1a5a7744fe943517369.png
new file mode 100644
index 0000000000..ef8cdcb9ac
Binary files /dev/null and b/storage/app/uploads/public/5fe/1a5/a77/5fe1a5a7744fe943517369.png differ
diff --git a/storage/app/uploads/public/5fe/1a5/ebc/5fe1a5ebc206a227345391.png b/storage/app/uploads/public/5fe/1a5/ebc/5fe1a5ebc206a227345391.png
new file mode 100644
index 0000000000..2bbb92be63
Binary files /dev/null and b/storage/app/uploads/public/5fe/1a5/ebc/5fe1a5ebc206a227345391.png differ
diff --git a/storage/app/uploads/public/5fe/1a5/ee7/5fe1a5ee7ee8c255544417.png b/storage/app/uploads/public/5fe/1a5/ee7/5fe1a5ee7ee8c255544417.png
new file mode 100644
index 0000000000..0133a11141
Binary files /dev/null and b/storage/app/uploads/public/5fe/1a5/ee7/5fe1a5ee7ee8c255544417.png differ
diff --git a/storage/app/uploads/public/5fe/1a5/f0c/5fe1a5f0c2620352609364.png b/storage/app/uploads/public/5fe/1a5/f0c/5fe1a5f0c2620352609364.png
new file mode 100644
index 0000000000..b8619ed51d
Binary files /dev/null and b/storage/app/uploads/public/5fe/1a5/f0c/5fe1a5f0c2620352609364.png differ
diff --git a/storage/app/uploads/public/5fe/1a5/f2d/5fe1a5f2d7c69213554132.png b/storage/app/uploads/public/5fe/1a5/f2d/5fe1a5f2d7c69213554132.png
new file mode 100644
index 0000000000..f00dd83452
Binary files /dev/null and b/storage/app/uploads/public/5fe/1a5/f2d/5fe1a5f2d7c69213554132.png differ
diff --git a/storage/app/uploads/public/5fe/1bf/c80/5fe1bfc80c475551734903.png b/storage/app/uploads/public/5fe/1bf/c80/5fe1bfc80c475551734903.png
new file mode 100644
index 0000000000..f4bd1cc2d2
Binary files /dev/null and b/storage/app/uploads/public/5fe/1bf/c80/5fe1bfc80c475551734903.png differ
diff --git a/storage/app/uploads/public/5fe/e21/1c7/5fee211c7e4eb714359827.jpg b/storage/app/uploads/public/5fe/e21/1c7/5fee211c7e4eb714359827.jpg
new file mode 100644
index 0000000000..35de320c1b
Binary files /dev/null and b/storage/app/uploads/public/5fe/e21/1c7/5fee211c7e4eb714359827.jpg differ
diff --git a/storage/app/uploads/public/5ff/358/855/5ff358855fada706463549.png b/storage/app/uploads/public/5ff/358/855/5ff358855fada706463549.png
new file mode 100644
index 0000000000..e5e024c546
Binary files /dev/null and b/storage/app/uploads/public/5ff/358/855/5ff358855fada706463549.png differ
diff --git a/storage/app/uploads/public/5ff/6f7/246/5ff6f724691ad311133792.jpg b/storage/app/uploads/public/5ff/6f7/246/5ff6f724691ad311133792.jpg
new file mode 100644
index 0000000000..9c495d6076
Binary files /dev/null and b/storage/app/uploads/public/5ff/6f7/246/5ff6f724691ad311133792.jpg differ
diff --git a/storage/app/uploads/public/600/305/9f5/6003059f52bb4613931642.jpg b/storage/app/uploads/public/600/305/9f5/6003059f52bb4613931642.jpg
new file mode 100644
index 0000000000..9c495d6076
Binary files /dev/null and b/storage/app/uploads/public/600/305/9f5/6003059f52bb4613931642.jpg differ
diff --git a/storage/app/uploads/public/600/74c/0ca/60074c0ca1012683594514.png b/storage/app/uploads/public/600/74c/0ca/60074c0ca1012683594514.png
new file mode 100644
index 0000000000..4e237ce155
Binary files /dev/null and b/storage/app/uploads/public/600/74c/0ca/60074c0ca1012683594514.png differ
diff --git a/storage/app/uploads/public/600/86b/4bc/60086b4bc8790999054229.png b/storage/app/uploads/public/600/86b/4bc/60086b4bc8790999054229.png
new file mode 100644
index 0000000000..eb5039d675
Binary files /dev/null and b/storage/app/uploads/public/600/86b/4bc/60086b4bc8790999054229.png differ
diff --git a/storage/app/uploads/public/600/97d/d65/60097dd655b97035169712.png b/storage/app/uploads/public/600/97d/d65/60097dd655b97035169712.png
new file mode 100644
index 0000000000..db8cb1f511
Binary files /dev/null and b/storage/app/uploads/public/600/97d/d65/60097dd655b97035169712.png differ
diff --git a/storage/app/uploads/public/600/f16/4a1/600f164a1426d584796163.jpg b/storage/app/uploads/public/600/f16/4a1/600f164a1426d584796163.jpg
new file mode 100644
index 0000000000..674d5020e1
Binary files /dev/null and b/storage/app/uploads/public/600/f16/4a1/600f164a1426d584796163.jpg differ
diff --git a/storage/app/uploads/public/601/2b1/5cc/6012b15cc7e62358528785.jpg b/storage/app/uploads/public/601/2b1/5cc/6012b15cc7e62358528785.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/601/2b1/5cc/6012b15cc7e62358528785.jpg differ
diff --git a/storage/app/uploads/public/601/9d5/eb9/6019d5eb9c4c3117117075.png b/storage/app/uploads/public/601/9d5/eb9/6019d5eb9c4c3117117075.png
new file mode 100644
index 0000000000..708fc1432c
Binary files /dev/null and b/storage/app/uploads/public/601/9d5/eb9/6019d5eb9c4c3117117075.png differ
diff --git a/storage/app/uploads/public/601/9d7/f20/6019d7f20c89b185653259.png b/storage/app/uploads/public/601/9d7/f20/6019d7f20c89b185653259.png
new file mode 100644
index 0000000000..e7a38872d5
Binary files /dev/null and b/storage/app/uploads/public/601/9d7/f20/6019d7f20c89b185653259.png differ
diff --git a/storage/app/uploads/public/601/9da/560/6019da560b8db978357511.png b/storage/app/uploads/public/601/9da/560/6019da560b8db978357511.png
new file mode 100644
index 0000000000..6f42b36910
Binary files /dev/null and b/storage/app/uploads/public/601/9da/560/6019da560b8db978357511.png differ
diff --git a/storage/app/uploads/public/601/aa2/b46/601aa2b4633f1948205438.png b/storage/app/uploads/public/601/aa2/b46/601aa2b4633f1948205438.png
new file mode 100644
index 0000000000..7ab1acc47a
Binary files /dev/null and b/storage/app/uploads/public/601/aa2/b46/601aa2b4633f1948205438.png differ
diff --git a/storage/app/uploads/public/601/ad2/3e5/601ad23e55ddd872740322.png b/storage/app/uploads/public/601/ad2/3e5/601ad23e55ddd872740322.png
new file mode 100644
index 0000000000..a357666800
Binary files /dev/null and b/storage/app/uploads/public/601/ad2/3e5/601ad23e55ddd872740322.png differ
diff --git a/storage/app/uploads/public/601/bfd/dac/601bfddac7206445227520.png b/storage/app/uploads/public/601/bfd/dac/601bfddac7206445227520.png
new file mode 100644
index 0000000000..3ac90d4bad
Binary files /dev/null and b/storage/app/uploads/public/601/bfd/dac/601bfddac7206445227520.png differ
diff --git a/storage/app/uploads/public/601/bfe/670/601bfe6702061798439389.png b/storage/app/uploads/public/601/bfe/670/601bfe6702061798439389.png
new file mode 100644
index 0000000000..675a7331af
Binary files /dev/null and b/storage/app/uploads/public/601/bfe/670/601bfe6702061798439389.png differ
diff --git a/storage/app/uploads/public/601/c03/d71/601c03d715359062543942.gif b/storage/app/uploads/public/601/c03/d71/601c03d715359062543942.gif
new file mode 100644
index 0000000000..b1a057684e
Binary files /dev/null and b/storage/app/uploads/public/601/c03/d71/601c03d715359062543942.gif differ
diff --git a/storage/app/uploads/public/601/c03/eb0/601c03eb052bf564871180.gif b/storage/app/uploads/public/601/c03/eb0/601c03eb052bf564871180.gif
new file mode 100644
index 0000000000..8056a48f90
Binary files /dev/null and b/storage/app/uploads/public/601/c03/eb0/601c03eb052bf564871180.gif differ
diff --git a/storage/app/uploads/public/601/c03/fc5/601c03fc52dbd396049298.gif b/storage/app/uploads/public/601/c03/fc5/601c03fc52dbd396049298.gif
new file mode 100644
index 0000000000..1218941649
Binary files /dev/null and b/storage/app/uploads/public/601/c03/fc5/601c03fc52dbd396049298.gif differ
diff --git a/storage/app/uploads/public/601/c04/892/601c048924ac0304396226.gif b/storage/app/uploads/public/601/c04/892/601c048924ac0304396226.gif
new file mode 100644
index 0000000000..e41be0e1f2
Binary files /dev/null and b/storage/app/uploads/public/601/c04/892/601c048924ac0304396226.gif differ
diff --git a/storage/app/uploads/public/601/c05/18b/601c0518b5b5e262092759.gif b/storage/app/uploads/public/601/c05/18b/601c0518b5b5e262092759.gif
new file mode 100644
index 0000000000..70c0441446
Binary files /dev/null and b/storage/app/uploads/public/601/c05/18b/601c0518b5b5e262092759.gif differ
diff --git a/storage/app/uploads/public/601/c05/8d1/601c058d130e0034023987.gif b/storage/app/uploads/public/601/c05/8d1/601c058d130e0034023987.gif
new file mode 100644
index 0000000000..76658781e8
Binary files /dev/null and b/storage/app/uploads/public/601/c05/8d1/601c058d130e0034023987.gif differ
diff --git a/storage/app/uploads/public/601/c07/ea6/601c07ea60a17571820104.gif b/storage/app/uploads/public/601/c07/ea6/601c07ea60a17571820104.gif
new file mode 100644
index 0000000000..3979496e88
Binary files /dev/null and b/storage/app/uploads/public/601/c07/ea6/601c07ea60a17571820104.gif differ
diff --git a/storage/app/uploads/public/601/c08/911/601c0891156f4042813308.gif b/storage/app/uploads/public/601/c08/911/601c0891156f4042813308.gif
new file mode 100644
index 0000000000..97297f2339
Binary files /dev/null and b/storage/app/uploads/public/601/c08/911/601c0891156f4042813308.gif differ
diff --git a/storage/app/uploads/public/601/c0b/714/601c0b71415d9269856463.gif b/storage/app/uploads/public/601/c0b/714/601c0b71415d9269856463.gif
new file mode 100644
index 0000000000..f8fe5f0b21
Binary files /dev/null and b/storage/app/uploads/public/601/c0b/714/601c0b71415d9269856463.gif differ
diff --git a/storage/app/uploads/public/601/c12/f25/601c12f25ba04034388411.png b/storage/app/uploads/public/601/c12/f25/601c12f25ba04034388411.png
new file mode 100644
index 0000000000..c107bd15fe
Binary files /dev/null and b/storage/app/uploads/public/601/c12/f25/601c12f25ba04034388411.png differ
diff --git a/storage/app/uploads/public/601/d5d/1e6/601d5d1e6adec835022302.png b/storage/app/uploads/public/601/d5d/1e6/601d5d1e6adec835022302.png
new file mode 100644
index 0000000000..a234a8132b
Binary files /dev/null and b/storage/app/uploads/public/601/d5d/1e6/601d5d1e6adec835022302.png differ
diff --git a/storage/app/uploads/public/602/3eb/707/6023eb707ee89657560854.png b/storage/app/uploads/public/602/3eb/707/6023eb707ee89657560854.png
new file mode 100644
index 0000000000..c006f5c9a5
Binary files /dev/null and b/storage/app/uploads/public/602/3eb/707/6023eb707ee89657560854.png differ
diff --git a/storage/app/uploads/public/602/6b9/52a/6026b952a0592398901696.jpg b/storage/app/uploads/public/602/6b9/52a/6026b952a0592398901696.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/602/6b9/52a/6026b952a0592398901696.jpg differ
diff --git a/storage/app/uploads/public/602/e98/120/602e98120ec23097807599.png b/storage/app/uploads/public/602/e98/120/602e98120ec23097807599.png
new file mode 100644
index 0000000000..23fa21bf21
Binary files /dev/null and b/storage/app/uploads/public/602/e98/120/602e98120ec23097807599.png differ
diff --git a/storage/app/uploads/public/603/508/dcd/603508dcd82d0743700919.jpg b/storage/app/uploads/public/603/508/dcd/603508dcd82d0743700919.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/603/508/dcd/603508dcd82d0743700919.jpg differ
diff --git a/storage/app/uploads/public/603/902/891/60390289179ea590472532.png b/storage/app/uploads/public/603/902/891/60390289179ea590472532.png
new file mode 100644
index 0000000000..d9ffad9c24
Binary files /dev/null and b/storage/app/uploads/public/603/902/891/60390289179ea590472532.png differ
diff --git a/storage/app/uploads/public/603/926/d51/603926d51ea4c913888481.png b/storage/app/uploads/public/603/926/d51/603926d51ea4c913888481.png
new file mode 100644
index 0000000000..59e52d4d40
Binary files /dev/null and b/storage/app/uploads/public/603/926/d51/603926d51ea4c913888481.png differ
diff --git a/storage/app/uploads/public/603/a4b/8bd/603a4b8bd746b677621753.png b/storage/app/uploads/public/603/a4b/8bd/603a4b8bd746b677621753.png
new file mode 100644
index 0000000000..ba531fb5eb
Binary files /dev/null and b/storage/app/uploads/public/603/a4b/8bd/603a4b8bd746b677621753.png differ
diff --git a/storage/app/uploads/public/603/d0a/024/603d0a0247cb9566258964.png b/storage/app/uploads/public/603/d0a/024/603d0a0247cb9566258964.png
new file mode 100644
index 0000000000..d2a03e949a
Binary files /dev/null and b/storage/app/uploads/public/603/d0a/024/603d0a0247cb9566258964.png differ
diff --git a/storage/app/uploads/public/603/d0c/f1b/603d0cf1b6b9b973182572.png b/storage/app/uploads/public/603/d0c/f1b/603d0cf1b6b9b973182572.png
new file mode 100644
index 0000000000..8883dcca08
Binary files /dev/null and b/storage/app/uploads/public/603/d0c/f1b/603d0cf1b6b9b973182572.png differ
diff --git a/storage/app/uploads/public/603/d0d/438/603d0d4386570651511733.png b/storage/app/uploads/public/603/d0d/438/603d0d4386570651511733.png
new file mode 100644
index 0000000000..7102df1353
Binary files /dev/null and b/storage/app/uploads/public/603/d0d/438/603d0d4386570651511733.png differ
diff --git a/storage/app/uploads/public/603/d19/c65/603d19c65f84b182870883.png b/storage/app/uploads/public/603/d19/c65/603d19c65f84b182870883.png
new file mode 100644
index 0000000000..d2a03e949a
Binary files /dev/null and b/storage/app/uploads/public/603/d19/c65/603d19c65f84b182870883.png differ
diff --git a/storage/app/uploads/public/604/11f/d88/60411fd88eb88947959052.png b/storage/app/uploads/public/604/11f/d88/60411fd88eb88947959052.png
new file mode 100644
index 0000000000..4090d126f8
Binary files /dev/null and b/storage/app/uploads/public/604/11f/d88/60411fd88eb88947959052.png differ
diff --git a/storage/app/uploads/public/604/753/902/604753902a0ff871037563.jpg b/storage/app/uploads/public/604/753/902/604753902a0ff871037563.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/604/753/902/604753902a0ff871037563.jpg differ
diff --git a/storage/app/uploads/public/604/a91/97d/604a9197d1523072023513.jpg b/storage/app/uploads/public/604/a91/97d/604a9197d1523072023513.jpg
new file mode 100644
index 0000000000..fb022214a5
Binary files /dev/null and b/storage/app/uploads/public/604/a91/97d/604a9197d1523072023513.jpg differ
diff --git a/storage/app/uploads/public/604/ccb/8f8/604ccb8f89381083294997.jpg b/storage/app/uploads/public/604/ccb/8f8/604ccb8f89381083294997.jpg
new file mode 100644
index 0000000000..6b870f6421
Binary files /dev/null and b/storage/app/uploads/public/604/ccb/8f8/604ccb8f89381083294997.jpg differ
diff --git a/storage/app/uploads/public/605/1f5/858/6051f5858bc8e696137524.png b/storage/app/uploads/public/605/1f5/858/6051f5858bc8e696137524.png
new file mode 100644
index 0000000000..951897dba7
Binary files /dev/null and b/storage/app/uploads/public/605/1f5/858/6051f5858bc8e696137524.png differ
diff --git a/storage/app/uploads/public/605/21b/37b/60521b37b2e39457329843.png b/storage/app/uploads/public/605/21b/37b/60521b37b2e39457329843.png
new file mode 100644
index 0000000000..b8442ccf51
Binary files /dev/null and b/storage/app/uploads/public/605/21b/37b/60521b37b2e39457329843.png differ
diff --git a/storage/app/uploads/public/605/23a/448/60523a448123d203397950.png b/storage/app/uploads/public/605/23a/448/60523a448123d203397950.png
new file mode 100644
index 0000000000..abbbb03f23
Binary files /dev/null and b/storage/app/uploads/public/605/23a/448/60523a448123d203397950.png differ
diff --git a/storage/app/uploads/public/605/241/968/605241968f4a5442553712.png b/storage/app/uploads/public/605/241/968/605241968f4a5442553712.png
new file mode 100644
index 0000000000..3d8d6765b6
Binary files /dev/null and b/storage/app/uploads/public/605/241/968/605241968f4a5442553712.png differ
diff --git a/storage/app/uploads/public/605/243/c34/605243c34eb6c496397184.png b/storage/app/uploads/public/605/243/c34/605243c34eb6c496397184.png
new file mode 100644
index 0000000000..8bafe44811
Binary files /dev/null and b/storage/app/uploads/public/605/243/c34/605243c34eb6c496397184.png differ
diff --git a/storage/app/uploads/public/605/33d/8d1/60533d8d1ecb5331708882.jpg b/storage/app/uploads/public/605/33d/8d1/60533d8d1ecb5331708882.jpg
new file mode 100644
index 0000000000..0a2fca5b6c
Binary files /dev/null and b/storage/app/uploads/public/605/33d/8d1/60533d8d1ecb5331708882.jpg differ
diff --git a/storage/app/uploads/public/605/33d/b67/60533db678f13126633313.jpg b/storage/app/uploads/public/605/33d/b67/60533db678f13126633313.jpg
new file mode 100644
index 0000000000..bdbb186d1b
Binary files /dev/null and b/storage/app/uploads/public/605/33d/b67/60533db678f13126633313.jpg differ
diff --git a/storage/app/uploads/public/605/33d/d51/60533dd515651380506258.jpg b/storage/app/uploads/public/605/33d/d51/60533dd515651380506258.jpg
new file mode 100644
index 0000000000..bdbb186d1b
Binary files /dev/null and b/storage/app/uploads/public/605/33d/d51/60533dd515651380506258.jpg differ
diff --git a/storage/app/uploads/public/605/33d/fed/60533dfed520d231708447.jpg b/storage/app/uploads/public/605/33d/fed/60533dfed520d231708447.jpg
new file mode 100644
index 0000000000..8cca1e228b
Binary files /dev/null and b/storage/app/uploads/public/605/33d/fed/60533dfed520d231708447.jpg differ
diff --git a/storage/app/uploads/public/605/476/229/605476229ad0d849814406.jpg b/storage/app/uploads/public/605/476/229/605476229ad0d849814406.jpg
new file mode 100644
index 0000000000..112068071d
Binary files /dev/null and b/storage/app/uploads/public/605/476/229/605476229ad0d849814406.jpg differ
diff --git a/storage/app/uploads/public/606/234/b98/606234b9803d7721021210.png b/storage/app/uploads/public/606/234/b98/606234b9803d7721021210.png
new file mode 100644
index 0000000000..9bc3f38c16
Binary files /dev/null and b/storage/app/uploads/public/606/234/b98/606234b9803d7721021210.png differ
diff --git a/storage/app/uploads/public/606/236/cd3/606236cd3aaaa846188732.gif b/storage/app/uploads/public/606/236/cd3/606236cd3aaaa846188732.gif
new file mode 100644
index 0000000000..55f6f01460
Binary files /dev/null and b/storage/app/uploads/public/606/236/cd3/606236cd3aaaa846188732.gif differ
diff --git a/storage/app/uploads/public/606/237/5a7/6062375a7b56e842890373.png b/storage/app/uploads/public/606/237/5a7/6062375a7b56e842890373.png
new file mode 100644
index 0000000000..118a0e96de
Binary files /dev/null and b/storage/app/uploads/public/606/237/5a7/6062375a7b56e842890373.png differ
diff --git a/storage/app/uploads/public/606/238/ab8/606238ab83faa358200840.jpeg b/storage/app/uploads/public/606/238/ab8/606238ab83faa358200840.jpeg
new file mode 100644
index 0000000000..0db6a2f48c
Binary files /dev/null and b/storage/app/uploads/public/606/238/ab8/606238ab83faa358200840.jpeg differ
diff --git a/storage/app/uploads/public/606/239/8ce/6062398ce1d11236821896.jpeg b/storage/app/uploads/public/606/239/8ce/6062398ce1d11236821896.jpeg
new file mode 100644
index 0000000000..20661464e9
Binary files /dev/null and b/storage/app/uploads/public/606/239/8ce/6062398ce1d11236821896.jpeg differ
diff --git a/storage/app/uploads/public/606/23a/63b/60623a63b1f01150089329.jpeg b/storage/app/uploads/public/606/23a/63b/60623a63b1f01150089329.jpeg
new file mode 100644
index 0000000000..5dcdb58a2b
Binary files /dev/null and b/storage/app/uploads/public/606/23a/63b/60623a63b1f01150089329.jpeg differ
diff --git a/storage/app/uploads/public/606/23a/e6d/60623ae6de535875757353.jpeg b/storage/app/uploads/public/606/23a/e6d/60623ae6de535875757353.jpeg
new file mode 100644
index 0000000000..fc0eac7430
Binary files /dev/null and b/storage/app/uploads/public/606/23a/e6d/60623ae6de535875757353.jpeg differ
diff --git a/storage/app/uploads/public/606/23b/cc0/60623bcc0ddb6675929183.png b/storage/app/uploads/public/606/23b/cc0/60623bcc0ddb6675929183.png
new file mode 100644
index 0000000000..88c4c0b25e
Binary files /dev/null and b/storage/app/uploads/public/606/23b/cc0/60623bcc0ddb6675929183.png differ
diff --git a/storage/app/uploads/public/606/23c/e43/60623ce430cfe148969930.jpeg b/storage/app/uploads/public/606/23c/e43/60623ce430cfe148969930.jpeg
new file mode 100644
index 0000000000..0db6a2f48c
Binary files /dev/null and b/storage/app/uploads/public/606/23c/e43/60623ce430cfe148969930.jpeg differ
diff --git a/storage/app/uploads/public/606/2f6/b66/6062f6b667e03340153792.jpg b/storage/app/uploads/public/606/2f6/b66/6062f6b667e03340153792.jpg
new file mode 100644
index 0000000000..112068071d
Binary files /dev/null and b/storage/app/uploads/public/606/2f6/b66/6062f6b667e03340153792.jpg differ
diff --git a/storage/app/uploads/public/606/4f9/ed1/6064f9ed122b5192659480.png b/storage/app/uploads/public/606/4f9/ed1/6064f9ed122b5192659480.png
new file mode 100644
index 0000000000..0ecba4fda1
Binary files /dev/null and b/storage/app/uploads/public/606/4f9/ed1/6064f9ed122b5192659480.png differ
diff --git a/storage/app/uploads/public/606/4fb/1b9/6064fb1b9a8b5692034114.png b/storage/app/uploads/public/606/4fb/1b9/6064fb1b9a8b5692034114.png
new file mode 100644
index 0000000000..0ecba4fda1
Binary files /dev/null and b/storage/app/uploads/public/606/4fb/1b9/6064fb1b9a8b5692034114.png differ
diff --git a/storage/app/uploads/public/606/75e/144/60675e14444de858952431.png b/storage/app/uploads/public/606/75e/144/60675e14444de858952431.png
new file mode 100644
index 0000000000..4754efeeee
Binary files /dev/null and b/storage/app/uploads/public/606/75e/144/60675e14444de858952431.png differ
diff --git a/storage/app/uploads/public/606/c74/84a/606c7484a882d322344009.jpg b/storage/app/uploads/public/606/c74/84a/606c7484a882d322344009.jpg
new file mode 100644
index 0000000000..112068071d
Binary files /dev/null and b/storage/app/uploads/public/606/c74/84a/606c7484a882d322344009.jpg differ
diff --git a/storage/app/uploads/public/607/05d/819/60705d8191412365837988.gif b/storage/app/uploads/public/607/05d/819/60705d8191412365837988.gif
new file mode 100644
index 0000000000..f2ae1be47e
Binary files /dev/null and b/storage/app/uploads/public/607/05d/819/60705d8191412365837988.gif differ
diff --git a/storage/app/uploads/public/607/05d/fb7/60705dfb7e92f692135683.gif b/storage/app/uploads/public/607/05d/fb7/60705dfb7e92f692135683.gif
new file mode 100644
index 0000000000..d2c2c32ae9
Binary files /dev/null and b/storage/app/uploads/public/607/05d/fb7/60705dfb7e92f692135683.gif differ
diff --git a/storage/app/uploads/public/607/05f/665/60705f665e652945333713.gif b/storage/app/uploads/public/607/05f/665/60705f665e652945333713.gif
new file mode 100644
index 0000000000..46c0a851b6
Binary files /dev/null and b/storage/app/uploads/public/607/05f/665/60705f665e652945333713.gif differ
diff --git a/storage/app/uploads/public/607/05f/ac6/60705fac69254963527894.png b/storage/app/uploads/public/607/05f/ac6/60705fac69254963527894.png
new file mode 100644
index 0000000000..cbc1037a31
Binary files /dev/null and b/storage/app/uploads/public/607/05f/ac6/60705fac69254963527894.png differ
diff --git a/storage/app/uploads/public/607/05f/d88/60705fd88dea3038798751.png b/storage/app/uploads/public/607/05f/d88/60705fd88dea3038798751.png
new file mode 100644
index 0000000000..4816bb32e9
Binary files /dev/null and b/storage/app/uploads/public/607/05f/d88/60705fd88dea3038798751.png differ
diff --git a/storage/app/uploads/public/607/064/9da/6070649dac6f3069466787.gif b/storage/app/uploads/public/607/064/9da/6070649dac6f3069466787.gif
new file mode 100644
index 0000000000..af8a96c6d0
Binary files /dev/null and b/storage/app/uploads/public/607/064/9da/6070649dac6f3069466787.gif differ
diff --git a/storage/app/uploads/public/607/066/eee/607066eee70c4289567474.png b/storage/app/uploads/public/607/066/eee/607066eee70c4289567474.png
new file mode 100644
index 0000000000..b0b83b2f24
Binary files /dev/null and b/storage/app/uploads/public/607/066/eee/607066eee70c4289567474.png differ
diff --git a/storage/app/uploads/public/607/189/593/607189593f5f0909945700.png b/storage/app/uploads/public/607/189/593/607189593f5f0909945700.png
new file mode 100644
index 0000000000..886af45b64
Binary files /dev/null and b/storage/app/uploads/public/607/189/593/607189593f5f0909945700.png differ
diff --git a/storage/app/uploads/public/607/18b/17d/60718b17dd7ec207537124.png b/storage/app/uploads/public/607/18b/17d/60718b17dd7ec207537124.png
new file mode 100644
index 0000000000..5e31ae5df4
Binary files /dev/null and b/storage/app/uploads/public/607/18b/17d/60718b17dd7ec207537124.png differ
diff --git a/storage/app/uploads/public/607/18c/a5b/60718ca5b25f2579557680.png b/storage/app/uploads/public/607/18c/a5b/60718ca5b25f2579557680.png
new file mode 100644
index 0000000000..f52c80ba07
Binary files /dev/null and b/storage/app/uploads/public/607/18c/a5b/60718ca5b25f2579557680.png differ
diff --git a/storage/app/uploads/public/607/18d/382/60718d38288c7588365817.png b/storage/app/uploads/public/607/18d/382/60718d38288c7588365817.png
new file mode 100644
index 0000000000..aefc85e320
Binary files /dev/null and b/storage/app/uploads/public/607/18d/382/60718d38288c7588365817.png differ
diff --git a/storage/app/uploads/public/607/199/55d/60719955d6579766750202.png b/storage/app/uploads/public/607/199/55d/60719955d6579766750202.png
new file mode 100644
index 0000000000..fb698535a9
Binary files /dev/null and b/storage/app/uploads/public/607/199/55d/60719955d6579766750202.png differ
diff --git a/storage/app/uploads/public/607/71c/2db/60771c2db6fd6123159683.jpg b/storage/app/uploads/public/607/71c/2db/60771c2db6fd6123159683.jpg
new file mode 100644
index 0000000000..112068071d
Binary files /dev/null and b/storage/app/uploads/public/607/71c/2db/60771c2db6fd6123159683.jpg differ
diff --git a/storage/app/uploads/public/607/b66/7e9/607b667e93a46491184773.png b/storage/app/uploads/public/607/b66/7e9/607b667e93a46491184773.png
new file mode 100644
index 0000000000..edbc677cb4
Binary files /dev/null and b/storage/app/uploads/public/607/b66/7e9/607b667e93a46491184773.png differ
diff --git a/storage/app/uploads/public/608/097/1a7/6080971a7203c431406770.png b/storage/app/uploads/public/608/097/1a7/6080971a7203c431406770.png
new file mode 100644
index 0000000000..9e4aa6f708
Binary files /dev/null and b/storage/app/uploads/public/608/097/1a7/6080971a7203c431406770.png differ
diff --git a/storage/app/uploads/public/609/941/01d/60994101d3862403610937.jpg b/storage/app/uploads/public/609/941/01d/60994101d3862403610937.jpg
new file mode 100644
index 0000000000..112068071d
Binary files /dev/null and b/storage/app/uploads/public/609/941/01d/60994101d3862403610937.jpg differ
diff --git a/storage/app/uploads/public/609/ab0/e5d/609ab0e5d9b60364021896.png b/storage/app/uploads/public/609/ab0/e5d/609ab0e5d9b60364021896.png
new file mode 100644
index 0000000000..357f28e269
Binary files /dev/null and b/storage/app/uploads/public/609/ab0/e5d/609ab0e5d9b60364021896.png differ
diff --git a/storage/app/uploads/public/609/fb3/013/609fb30137c41666258867.jpg b/storage/app/uploads/public/609/fb3/013/609fb30137c41666258867.jpg
new file mode 100644
index 0000000000..112068071d
Binary files /dev/null and b/storage/app/uploads/public/609/fb3/013/609fb30137c41666258867.jpg differ
diff --git a/storage/app/uploads/public/60a/3f2/4d6/60a3f24d6f559187028182.png b/storage/app/uploads/public/60a/3f2/4d6/60a3f24d6f559187028182.png
new file mode 100644
index 0000000000..16a29859a8
Binary files /dev/null and b/storage/app/uploads/public/60a/3f2/4d6/60a3f24d6f559187028182.png differ
diff --git a/storage/app/uploads/public/60a/554/df7/60a554df7b179532579882.png b/storage/app/uploads/public/60a/554/df7/60a554df7b179532579882.png
new file mode 100644
index 0000000000..4d435ed99a
Binary files /dev/null and b/storage/app/uploads/public/60a/554/df7/60a554df7b179532579882.png differ
diff --git a/storage/app/uploads/public/60a/bf7/19d/60abf719de011665823007.png b/storage/app/uploads/public/60a/bf7/19d/60abf719de011665823007.png
new file mode 100644
index 0000000000..cf6ecc3851
Binary files /dev/null and b/storage/app/uploads/public/60a/bf7/19d/60abf719de011665823007.png differ
diff --git a/storage/app/uploads/public/60b/4ee/cfb/60b4eecfbcad8996217557.png b/storage/app/uploads/public/60b/4ee/cfb/60b4eecfbcad8996217557.png
new file mode 100644
index 0000000000..d4d535081d
Binary files /dev/null and b/storage/app/uploads/public/60b/4ee/cfb/60b4eecfbcad8996217557.png differ
diff --git a/storage/app/uploads/public/60b/4f2/b0a/60b4f2b0a8130694314324.png b/storage/app/uploads/public/60b/4f2/b0a/60b4f2b0a8130694314324.png
new file mode 100644
index 0000000000..b15c31dce2
Binary files /dev/null and b/storage/app/uploads/public/60b/4f2/b0a/60b4f2b0a8130694314324.png differ
diff --git a/storage/app/uploads/public/60b/a81/df7/60ba81df7c61d867142125.png b/storage/app/uploads/public/60b/a81/df7/60ba81df7c61d867142125.png
new file mode 100644
index 0000000000..8cb76d8333
Binary files /dev/null and b/storage/app/uploads/public/60b/a81/df7/60ba81df7c61d867142125.png differ
diff --git a/storage/app/uploads/public/60c/393/280/60c3932805c1f343459058.png b/storage/app/uploads/public/60c/393/280/60c3932805c1f343459058.png
new file mode 100644
index 0000000000..9711287ac4
Binary files /dev/null and b/storage/app/uploads/public/60c/393/280/60c3932805c1f343459058.png differ
diff --git a/storage/app/uploads/public/60c/393/340/60c393340bb55765498231.png b/storage/app/uploads/public/60c/393/340/60c393340bb55765498231.png
new file mode 100644
index 0000000000..b15a5addc7
Binary files /dev/null and b/storage/app/uploads/public/60c/393/340/60c393340bb55765498231.png differ
diff --git a/storage/app/uploads/public/60c/393/39b/60c39339bab5c662844052.png b/storage/app/uploads/public/60c/393/39b/60c39339bab5c662844052.png
new file mode 100644
index 0000000000..dd1ea1433f
Binary files /dev/null and b/storage/app/uploads/public/60c/393/39b/60c39339bab5c662844052.png differ
diff --git a/storage/app/uploads/public/60c/3a3/8b6/60c3a38b6a8b8254809818.png b/storage/app/uploads/public/60c/3a3/8b6/60c3a38b6a8b8254809818.png
new file mode 100644
index 0000000000..e14519ea27
Binary files /dev/null and b/storage/app/uploads/public/60c/3a3/8b6/60c3a38b6a8b8254809818.png differ
diff --git a/storage/app/uploads/public/60c/72b/dc3/60c72bdc393a4838114722.png b/storage/app/uploads/public/60c/72b/dc3/60c72bdc393a4838114722.png
new file mode 100644
index 0000000000..cbf76a4c21
Binary files /dev/null and b/storage/app/uploads/public/60c/72b/dc3/60c72bdc393a4838114722.png differ
diff --git a/storage/app/uploads/public/60c/77d/94d/60c77d94dcef0176381258.gif b/storage/app/uploads/public/60c/77d/94d/60c77d94dcef0176381258.gif
new file mode 100644
index 0000000000..417ddfd389
Binary files /dev/null and b/storage/app/uploads/public/60c/77d/94d/60c77d94dcef0176381258.gif differ
diff --git a/storage/app/uploads/public/60c/77e/95a/60c77e95aabc5449375753.gif b/storage/app/uploads/public/60c/77e/95a/60c77e95aabc5449375753.gif
new file mode 100644
index 0000000000..3408839c90
Binary files /dev/null and b/storage/app/uploads/public/60c/77e/95a/60c77e95aabc5449375753.gif differ
diff --git a/storage/app/uploads/public/60c/780/772/60c780772be00473620423.gif b/storage/app/uploads/public/60c/780/772/60c780772be00473620423.gif
new file mode 100644
index 0000000000..cdbf2df075
Binary files /dev/null and b/storage/app/uploads/public/60c/780/772/60c780772be00473620423.gif differ
diff --git a/storage/app/uploads/public/60c/781/61c/60c78161c4f8f655092423.gif b/storage/app/uploads/public/60c/781/61c/60c78161c4f8f655092423.gif
new file mode 100644
index 0000000000..8935657e3c
Binary files /dev/null and b/storage/app/uploads/public/60c/781/61c/60c78161c4f8f655092423.gif differ
diff --git a/storage/app/uploads/public/60c/b75/209/60cb75209c854804584350.png b/storage/app/uploads/public/60c/b75/209/60cb75209c854804584350.png
new file mode 100644
index 0000000000..e9de1d2ec7
Binary files /dev/null and b/storage/app/uploads/public/60c/b75/209/60cb75209c854804584350.png differ
diff --git a/storage/app/uploads/public/60c/ce2/1fc/60cce21fc65c3850446591.png b/storage/app/uploads/public/60c/ce2/1fc/60cce21fc65c3850446591.png
new file mode 100644
index 0000000000..5cb20ab913
Binary files /dev/null and b/storage/app/uploads/public/60c/ce2/1fc/60cce21fc65c3850446591.png differ
diff --git a/storage/app/uploads/public/60c/ce2/638/60cce2638677f968217852.png b/storage/app/uploads/public/60c/ce2/638/60cce2638677f968217852.png
new file mode 100644
index 0000000000..d2dee51569
Binary files /dev/null and b/storage/app/uploads/public/60c/ce2/638/60cce2638677f968217852.png differ
diff --git a/storage/app/uploads/public/60c/ddb/7a5/60cddb7a5c331340661868.png b/storage/app/uploads/public/60c/ddb/7a5/60cddb7a5c331340661868.png
new file mode 100644
index 0000000000..1b16301338
Binary files /dev/null and b/storage/app/uploads/public/60c/ddb/7a5/60cddb7a5c331340661868.png differ
diff --git a/storage/app/uploads/public/60c/dfe/795/60cdfe7956fca023522866.png b/storage/app/uploads/public/60c/dfe/795/60cdfe7956fca023522866.png
new file mode 100644
index 0000000000..096024242a
Binary files /dev/null and b/storage/app/uploads/public/60c/dfe/795/60cdfe7956fca023522866.png differ
diff --git a/storage/app/uploads/public/60d/cc6/251/60dcc6251e506284385457.png b/storage/app/uploads/public/60d/cc6/251/60dcc6251e506284385457.png
new file mode 100644
index 0000000000..fa9412cfba
Binary files /dev/null and b/storage/app/uploads/public/60d/cc6/251/60dcc6251e506284385457.png differ
diff --git a/storage/app/uploads/public/60e/169/1fa/60e1691fab28c135981956.jpg b/storage/app/uploads/public/60e/169/1fa/60e1691fab28c135981956.jpg
new file mode 100644
index 0000000000..74d5311134
Binary files /dev/null and b/storage/app/uploads/public/60e/169/1fa/60e1691fab28c135981956.jpg differ
diff --git a/storage/app/uploads/public/60e/dd3/367/60edd3367a79e493301061.jpg b/storage/app/uploads/public/60e/dd3/367/60edd3367a79e493301061.jpg
new file mode 100644
index 0000000000..161402a741
Binary files /dev/null and b/storage/app/uploads/public/60e/dd3/367/60edd3367a79e493301061.jpg differ
diff --git a/storage/app/uploads/public/60f/417/813/60f4178135e5d096534571.png b/storage/app/uploads/public/60f/417/813/60f4178135e5d096534571.png
new file mode 100644
index 0000000000..311532567a
Binary files /dev/null and b/storage/app/uploads/public/60f/417/813/60f4178135e5d096534571.png differ
diff --git a/storage/app/uploads/public/60f/438/4ca/60f4384ca5805220006247.png b/storage/app/uploads/public/60f/438/4ca/60f4384ca5805220006247.png
new file mode 100644
index 0000000000..b9e9b85c23
Binary files /dev/null and b/storage/app/uploads/public/60f/438/4ca/60f4384ca5805220006247.png differ
diff --git a/storage/app/uploads/public/60f/9a7/b1e/60f9a7b1eb0ca060142976.jpg b/storage/app/uploads/public/60f/9a7/b1e/60f9a7b1eb0ca060142976.jpg
new file mode 100644
index 0000000000..7021f95000
Binary files /dev/null and b/storage/app/uploads/public/60f/9a7/b1e/60f9a7b1eb0ca060142976.jpg differ
diff --git a/storage/app/uploads/public/610/012/b82/610012b827c7a703515304.jpg b/storage/app/uploads/public/610/012/b82/610012b827c7a703515304.jpg
new file mode 100644
index 0000000000..112068071d
Binary files /dev/null and b/storage/app/uploads/public/610/012/b82/610012b827c7a703515304.jpg differ
diff --git a/storage/app/uploads/public/610/43f/11b/61043f11b5388567890116.png b/storage/app/uploads/public/610/43f/11b/61043f11b5388567890116.png
new file mode 100644
index 0000000000..9c5ca29fbf
Binary files /dev/null and b/storage/app/uploads/public/610/43f/11b/61043f11b5388567890116.png differ
diff --git a/storage/app/uploads/public/610/918/f3e/610918f3ec53b713518837.png b/storage/app/uploads/public/610/918/f3e/610918f3ec53b713518837.png
new file mode 100644
index 0000000000..933888c6cd
Binary files /dev/null and b/storage/app/uploads/public/610/918/f3e/610918f3ec53b713518837.png differ
diff --git a/storage/app/uploads/public/610/a74/76f/610a7476f0ddd438980306.jpg b/storage/app/uploads/public/610/a74/76f/610a7476f0ddd438980306.jpg
new file mode 100644
index 0000000000..112068071d
Binary files /dev/null and b/storage/app/uploads/public/610/a74/76f/610a7476f0ddd438980306.jpg differ
diff --git a/storage/app/uploads/public/610/d3d/7c7/610d3d7c75b4e999613924.jpg b/storage/app/uploads/public/610/d3d/7c7/610d3d7c75b4e999613924.jpg
new file mode 100644
index 0000000000..112068071d
Binary files /dev/null and b/storage/app/uploads/public/610/d3d/7c7/610d3d7c75b4e999613924.jpg differ
diff --git a/storage/app/uploads/public/611/ab1/02a/611ab102a5d72741292286.jpg b/storage/app/uploads/public/611/ab1/02a/611ab102a5d72741292286.jpg
new file mode 100644
index 0000000000..112068071d
Binary files /dev/null and b/storage/app/uploads/public/611/ab1/02a/611ab102a5d72741292286.jpg differ
diff --git a/storage/app/uploads/public/611/d7f/086/611d7f08610a5287541679.png b/storage/app/uploads/public/611/d7f/086/611d7f08610a5287541679.png
new file mode 100644
index 0000000000..f687919417
Binary files /dev/null and b/storage/app/uploads/public/611/d7f/086/611d7f08610a5287541679.png differ
diff --git a/storage/app/uploads/public/611/d7f/27b/611d7f27b06e2094916961.png b/storage/app/uploads/public/611/d7f/27b/611d7f27b06e2094916961.png
new file mode 100644
index 0000000000..15668e3814
Binary files /dev/null and b/storage/app/uploads/public/611/d7f/27b/611d7f27b06e2094916961.png differ
diff --git a/storage/app/uploads/public/611/d83/0a3/611d830a38eb5069138855.png b/storage/app/uploads/public/611/d83/0a3/611d830a38eb5069138855.png
new file mode 100644
index 0000000000..b0f1227c3a
Binary files /dev/null and b/storage/app/uploads/public/611/d83/0a3/611d830a38eb5069138855.png differ
diff --git a/storage/app/uploads/public/611/d83/0c8/611d830c8ef48415300361.png b/storage/app/uploads/public/611/d83/0c8/611d830c8ef48415300361.png
new file mode 100644
index 0000000000..bbc2ed4d17
Binary files /dev/null and b/storage/app/uploads/public/611/d83/0c8/611d830c8ef48415300361.png differ
diff --git a/storage/app/uploads/public/611/d87/cf9/611d87cf95c79894840278.png b/storage/app/uploads/public/611/d87/cf9/611d87cf95c79894840278.png
new file mode 100644
index 0000000000..f2397b067f
Binary files /dev/null and b/storage/app/uploads/public/611/d87/cf9/611d87cf95c79894840278.png differ
diff --git a/storage/app/uploads/public/611/e44/723/611e447232422337080043.jpg b/storage/app/uploads/public/611/e44/723/611e447232422337080043.jpg
new file mode 100644
index 0000000000..112068071d
Binary files /dev/null and b/storage/app/uploads/public/611/e44/723/611e447232422337080043.jpg differ
diff --git a/storage/app/uploads/public/611/e5d/cfc/611e5dcfc09f2518746576.png b/storage/app/uploads/public/611/e5d/cfc/611e5dcfc09f2518746576.png
new file mode 100644
index 0000000000..308f71b866
Binary files /dev/null and b/storage/app/uploads/public/611/e5d/cfc/611e5dcfc09f2518746576.png differ
diff --git a/storage/app/uploads/public/612/136/3cc/6121363ccb95e735957693.png b/storage/app/uploads/public/612/136/3cc/6121363ccb95e735957693.png
new file mode 100644
index 0000000000..9b3805aac2
Binary files /dev/null and b/storage/app/uploads/public/612/136/3cc/6121363ccb95e735957693.png differ
diff --git a/storage/app/uploads/public/614/848/e55/614848e55d837804924724.gif b/storage/app/uploads/public/614/848/e55/614848e55d837804924724.gif
new file mode 100644
index 0000000000..ab3929f374
Binary files /dev/null and b/storage/app/uploads/public/614/848/e55/614848e55d837804924724.gif differ
diff --git a/storage/app/uploads/public/614/84c/ed7/61484ced7caa2931099920.gif b/storage/app/uploads/public/614/84c/ed7/61484ced7caa2931099920.gif
new file mode 100644
index 0000000000..c89e97f44e
Binary files /dev/null and b/storage/app/uploads/public/614/84c/ed7/61484ced7caa2931099920.gif differ
diff --git a/storage/app/uploads/public/614/84f/705/61484f7050e12465840245.gif b/storage/app/uploads/public/614/84f/705/61484f7050e12465840245.gif
new file mode 100644
index 0000000000..edfc99d93c
Binary files /dev/null and b/storage/app/uploads/public/614/84f/705/61484f7050e12465840245.gif differ
diff --git a/storage/app/uploads/public/614/850/bac/614850bac858a657129122.gif b/storage/app/uploads/public/614/850/bac/614850bac858a657129122.gif
new file mode 100644
index 0000000000..52bf365202
Binary files /dev/null and b/storage/app/uploads/public/614/850/bac/614850bac858a657129122.gif differ
diff --git a/storage/app/uploads/public/614/857/1a2/6148571a28c42903499672.gif b/storage/app/uploads/public/614/857/1a2/6148571a28c42903499672.gif
new file mode 100644
index 0000000000..a5b8f61570
Binary files /dev/null and b/storage/app/uploads/public/614/857/1a2/6148571a28c42903499672.gif differ
diff --git a/storage/app/uploads/public/614/c51/9dd/614c519dd6d84245838038.jpg b/storage/app/uploads/public/614/c51/9dd/614c519dd6d84245838038.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/614/c51/9dd/614c519dd6d84245838038.jpg differ
diff --git a/storage/app/uploads/public/614/c7e/bea/614c7ebea3c55854871647.png b/storage/app/uploads/public/614/c7e/bea/614c7ebea3c55854871647.png
new file mode 100644
index 0000000000..4f1dcd327a
Binary files /dev/null and b/storage/app/uploads/public/614/c7e/bea/614c7ebea3c55854871647.png differ
diff --git a/storage/app/uploads/public/615/1af/2c5/6151af2c5f132737201406.png b/storage/app/uploads/public/615/1af/2c5/6151af2c5f132737201406.png
new file mode 100644
index 0000000000..e460ddf1df
Binary files /dev/null and b/storage/app/uploads/public/615/1af/2c5/6151af2c5f132737201406.png differ
diff --git a/storage/app/uploads/public/615/486/4c4/6154864c4a604989513584.jpg b/storage/app/uploads/public/615/486/4c4/6154864c4a604989513584.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/615/486/4c4/6154864c4a604989513584.jpg differ
diff --git a/storage/app/uploads/public/615/6f0/e4d/6156f0e4d51a0814323028.jpg b/storage/app/uploads/public/615/6f0/e4d/6156f0e4d51a0814323028.jpg
new file mode 100644
index 0000000000..6a5329f187
Binary files /dev/null and b/storage/app/uploads/public/615/6f0/e4d/6156f0e4d51a0814323028.jpg differ
diff --git a/storage/app/uploads/public/615/766/117/6157661176579529840022.png b/storage/app/uploads/public/615/766/117/6157661176579529840022.png
new file mode 100644
index 0000000000..ea7868851a
Binary files /dev/null and b/storage/app/uploads/public/615/766/117/6157661176579529840022.png differ
diff --git a/storage/app/uploads/public/615/c8d/d24/615c8dd245136034621315.png b/storage/app/uploads/public/615/c8d/d24/615c8dd245136034621315.png
new file mode 100644
index 0000000000..ca21b08af3
Binary files /dev/null and b/storage/app/uploads/public/615/c8d/d24/615c8dd245136034621315.png differ
diff --git a/storage/app/uploads/public/615/db4/6c2/615db46c275e9053218403.jpg b/storage/app/uploads/public/615/db4/6c2/615db46c275e9053218403.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/615/db4/6c2/615db46c275e9053218403.jpg differ
diff --git a/storage/app/uploads/public/616/e85/0d7/616e850d7ecf5684336903.jpg b/storage/app/uploads/public/616/e85/0d7/616e850d7ecf5684336903.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/616/e85/0d7/616e850d7ecf5684336903.jpg differ
diff --git a/storage/app/uploads/public/617/1bd/9ed/6171bd9eda2ec186056898.png b/storage/app/uploads/public/617/1bd/9ed/6171bd9eda2ec186056898.png
new file mode 100644
index 0000000000..4d5df33c96
Binary files /dev/null and b/storage/app/uploads/public/617/1bd/9ed/6171bd9eda2ec186056898.png differ
diff --git a/storage/app/uploads/public/617/913/881/617913881aa25087367439.jpg b/storage/app/uploads/public/617/913/881/617913881aa25087367439.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/617/913/881/617913881aa25087367439.jpg differ
diff --git a/storage/app/uploads/public/617/985/a4a/617985a4a2bfb846798104.png b/storage/app/uploads/public/617/985/a4a/617985a4a2bfb846798104.png
new file mode 100644
index 0000000000..ce1c831ff6
Binary files /dev/null and b/storage/app/uploads/public/617/985/a4a/617985a4a2bfb846798104.png differ
diff --git a/storage/app/uploads/public/617/985/b28/617985b28dc3d255167102.png b/storage/app/uploads/public/617/985/b28/617985b28dc3d255167102.png
new file mode 100644
index 0000000000..f8b3e81702
Binary files /dev/null and b/storage/app/uploads/public/617/985/b28/617985b28dc3d255167102.png differ
diff --git a/storage/app/uploads/public/617/989/cf8/617989cf82e64600038831.png b/storage/app/uploads/public/617/989/cf8/617989cf82e64600038831.png
new file mode 100644
index 0000000000..f259c9860a
Binary files /dev/null and b/storage/app/uploads/public/617/989/cf8/617989cf82e64600038831.png differ
diff --git a/storage/app/uploads/public/617/e8b/e77/617e8be771fb0476901545.png b/storage/app/uploads/public/617/e8b/e77/617e8be771fb0476901545.png
new file mode 100644
index 0000000000..4f9ae7d368
Binary files /dev/null and b/storage/app/uploads/public/617/e8b/e77/617e8be771fb0476901545.png differ
diff --git a/storage/app/uploads/public/618/049/1ec/6180491ec1e6c008691136.gif b/storage/app/uploads/public/618/049/1ec/6180491ec1e6c008691136.gif
new file mode 100644
index 0000000000..cbd7e03658
Binary files /dev/null and b/storage/app/uploads/public/618/049/1ec/6180491ec1e6c008691136.gif differ
diff --git a/storage/app/uploads/public/618/06b/943/61806b943ee5e014335837.png b/storage/app/uploads/public/618/06b/943/61806b943ee5e014335837.png
new file mode 100644
index 0000000000..e1cdc1a725
Binary files /dev/null and b/storage/app/uploads/public/618/06b/943/61806b943ee5e014335837.png differ
diff --git a/storage/app/uploads/public/618/06c/42a/61806c42af0f7814469862.png b/storage/app/uploads/public/618/06c/42a/61806c42af0f7814469862.png
new file mode 100644
index 0000000000..8c84f16b08
Binary files /dev/null and b/storage/app/uploads/public/618/06c/42a/61806c42af0f7814469862.png differ
diff --git a/storage/app/uploads/public/618/1af/057/6181af057be31908593743.jpg b/storage/app/uploads/public/618/1af/057/6181af057be31908593743.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/618/1af/057/6181af057be31908593743.jpg differ
diff --git a/storage/app/uploads/public/618/3cb/37c/6183cb37cfc00462223157.png b/storage/app/uploads/public/618/3cb/37c/6183cb37cfc00462223157.png
new file mode 100644
index 0000000000..557fceeea6
Binary files /dev/null and b/storage/app/uploads/public/618/3cb/37c/6183cb37cfc00462223157.png differ
diff --git a/storage/app/uploads/public/618/6bb/7b3/6186bb7b3cb36127140644.jpg b/storage/app/uploads/public/618/6bb/7b3/6186bb7b3cb36127140644.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/618/6bb/7b3/6186bb7b3cb36127140644.jpg differ
diff --git a/storage/app/uploads/public/618/d28/33e/618d2833e29f9687380785.png b/storage/app/uploads/public/618/d28/33e/618d2833e29f9687380785.png
new file mode 100644
index 0000000000..af43cfacc4
Binary files /dev/null and b/storage/app/uploads/public/618/d28/33e/618d2833e29f9687380785.png differ
diff --git a/storage/app/uploads/public/618/fef/05a/618fef05ae03d489116981.png b/storage/app/uploads/public/618/fef/05a/618fef05ae03d489116981.png
new file mode 100644
index 0000000000..5480d87bd9
Binary files /dev/null and b/storage/app/uploads/public/618/fef/05a/618fef05ae03d489116981.png differ
diff --git a/storage/app/uploads/public/61a/0ed/116/61a0ed1162434271575060.jpg b/storage/app/uploads/public/61a/0ed/116/61a0ed1162434271575060.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/61a/0ed/116/61a0ed1162434271575060.jpg differ
diff --git a/storage/app/uploads/public/61a/27f/881/61a27f8816a4e934017559.png b/storage/app/uploads/public/61a/27f/881/61a27f8816a4e934017559.png
new file mode 100644
index 0000000000..cced33b918
Binary files /dev/null and b/storage/app/uploads/public/61a/27f/881/61a27f8816a4e934017559.png differ
diff --git a/storage/app/uploads/public/61b/084/812/61b084812e344703227170.jpg b/storage/app/uploads/public/61b/084/812/61b084812e344703227170.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/61b/084/812/61b084812e344703227170.jpg differ
diff --git a/storage/app/uploads/public/61b/9cc/311/61b9cc311bc89101425616.jpg b/storage/app/uploads/public/61b/9cc/311/61b9cc311bc89101425616.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/61b/9cc/311/61b9cc311bc89101425616.jpg differ
diff --git a/storage/app/uploads/public/61b/c80/187/61bc801870274751729596.jpg b/storage/app/uploads/public/61b/c80/187/61bc801870274751729596.jpg
new file mode 100644
index 0000000000..00b3158c9a
Binary files /dev/null and b/storage/app/uploads/public/61b/c80/187/61bc801870274751729596.jpg differ
diff --git a/storage/app/uploads/public/61c/308/fac/61c308facf562571710350.jpg b/storage/app/uploads/public/61c/308/fac/61c308facf562571710350.jpg
new file mode 100644
index 0000000000..b97f294e61
Binary files /dev/null and b/storage/app/uploads/public/61c/308/fac/61c308facf562571710350.jpg differ
diff --git a/storage/app/uploads/public/61c/334/684/61c3346840ff8863294393.png b/storage/app/uploads/public/61c/334/684/61c3346840ff8863294393.png
new file mode 100644
index 0000000000..22a1f9407c
Binary files /dev/null and b/storage/app/uploads/public/61c/334/684/61c3346840ff8863294393.png differ
diff --git a/storage/app/uploads/public/61d/f21/37d/61df2137db710511123151.png b/storage/app/uploads/public/61d/f21/37d/61df2137db710511123151.png
new file mode 100644
index 0000000000..5e15821a03
Binary files /dev/null and b/storage/app/uploads/public/61d/f21/37d/61df2137db710511123151.png differ
diff --git a/storage/app/uploads/public/61e/04e/00d/61e04e00d599a636911489.jpg b/storage/app/uploads/public/61e/04e/00d/61e04e00d599a636911489.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/61e/04e/00d/61e04e00d599a636911489.jpg differ
diff --git a/storage/app/uploads/public/61e/37d/968/61e37d9685be4686304218.png b/storage/app/uploads/public/61e/37d/968/61e37d9685be4686304218.png
new file mode 100644
index 0000000000..bdc3e633b8
Binary files /dev/null and b/storage/app/uploads/public/61e/37d/968/61e37d9685be4686304218.png differ
diff --git a/storage/app/uploads/public/61e/37d/a08/61e37da08bfed728225140.png b/storage/app/uploads/public/61e/37d/a08/61e37da08bfed728225140.png
new file mode 100644
index 0000000000..ac1d4e8611
Binary files /dev/null and b/storage/app/uploads/public/61e/37d/a08/61e37da08bfed728225140.png differ
diff --git a/storage/app/uploads/public/61e/37d/a82/61e37da82f0c0129721780.png b/storage/app/uploads/public/61e/37d/a82/61e37da82f0c0129721780.png
new file mode 100644
index 0000000000..f100cb47e9
Binary files /dev/null and b/storage/app/uploads/public/61e/37d/a82/61e37da82f0c0129721780.png differ
diff --git a/storage/app/uploads/public/61e/37d/b0e/61e37db0efc8c802773538.png b/storage/app/uploads/public/61e/37d/b0e/61e37db0efc8c802773538.png
new file mode 100644
index 0000000000..10f350e977
Binary files /dev/null and b/storage/app/uploads/public/61e/37d/b0e/61e37db0efc8c802773538.png differ
diff --git a/storage/app/uploads/public/61e/37d/be5/61e37dbe509c7803662265.png b/storage/app/uploads/public/61e/37d/be5/61e37dbe509c7803662265.png
new file mode 100644
index 0000000000..6dde5b13ce
Binary files /dev/null and b/storage/app/uploads/public/61e/37d/be5/61e37dbe509c7803662265.png differ
diff --git a/storage/app/uploads/public/61e/c59/4ad/61ec594adad2c161680389.png b/storage/app/uploads/public/61e/c59/4ad/61ec594adad2c161680389.png
new file mode 100644
index 0000000000..38fb8f037e
Binary files /dev/null and b/storage/app/uploads/public/61e/c59/4ad/61ec594adad2c161680389.png differ
diff --git a/storage/app/uploads/public/61e/ebb/51b/61eebb51baa9f592108392.png b/storage/app/uploads/public/61e/ebb/51b/61eebb51baa9f592108392.png
new file mode 100644
index 0000000000..1971a7d093
Binary files /dev/null and b/storage/app/uploads/public/61e/ebb/51b/61eebb51baa9f592108392.png differ
diff --git a/storage/app/uploads/public/61e/ebc/cb9/61eebccb9c807968909140.png b/storage/app/uploads/public/61e/ebc/cb9/61eebccb9c807968909140.png
new file mode 100644
index 0000000000..9bdd9e6994
Binary files /dev/null and b/storage/app/uploads/public/61e/ebc/cb9/61eebccb9c807968909140.png differ
diff --git a/storage/app/uploads/public/61e/ebc/e6e/61eebce6ef997526830992.jpg b/storage/app/uploads/public/61e/ebc/e6e/61eebce6ef997526830992.jpg
new file mode 100644
index 0000000000..01423b4457
Binary files /dev/null and b/storage/app/uploads/public/61e/ebc/e6e/61eebce6ef997526830992.jpg differ
diff --git a/storage/app/uploads/public/61e/ebd/afe/61eebdafee641477133678.png b/storage/app/uploads/public/61e/ebd/afe/61eebdafee641477133678.png
new file mode 100644
index 0000000000..c95c2eb4df
Binary files /dev/null and b/storage/app/uploads/public/61e/ebd/afe/61eebdafee641477133678.png differ
diff --git a/storage/app/uploads/public/61e/ebd/f4d/61eebdf4d6832210326743.jpg b/storage/app/uploads/public/61e/ebd/f4d/61eebdf4d6832210326743.jpg
new file mode 100644
index 0000000000..1027aac211
Binary files /dev/null and b/storage/app/uploads/public/61e/ebd/f4d/61eebdf4d6832210326743.jpg differ
diff --git a/storage/app/uploads/public/61f/18c/b23/61f18cb23063a771877721.png b/storage/app/uploads/public/61f/18c/b23/61f18cb23063a771877721.png
new file mode 100644
index 0000000000..bd366a84a5
Binary files /dev/null and b/storage/app/uploads/public/61f/18c/b23/61f18cb23063a771877721.png differ
diff --git a/storage/app/uploads/public/61f/bdd/52d/61fbdd52d4fee221804267.jpg b/storage/app/uploads/public/61f/bdd/52d/61fbdd52d4fee221804267.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/61f/bdd/52d/61fbdd52d4fee221804267.jpg differ
diff --git a/storage/app/uploads/public/620/3d3/0e0/6203d30e0bda9846826159.jpg b/storage/app/uploads/public/620/3d3/0e0/6203d30e0bda9846826159.jpg
new file mode 100644
index 0000000000..f2cd1d7054
Binary files /dev/null and b/storage/app/uploads/public/620/3d3/0e0/6203d30e0bda9846826159.jpg differ
diff --git a/storage/app/uploads/public/620/e90/6eb/620e906eb1baa441988416.jpg b/storage/app/uploads/public/620/e90/6eb/620e906eb1baa441988416.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/620/e90/6eb/620e906eb1baa441988416.jpg differ
diff --git a/storage/app/uploads/public/620/fcb/7e0/620fcb7e0742d599654701.png b/storage/app/uploads/public/620/fcb/7e0/620fcb7e0742d599654701.png
new file mode 100644
index 0000000000..3ee20e5bd3
Binary files /dev/null and b/storage/app/uploads/public/620/fcb/7e0/620fcb7e0742d599654701.png differ
diff --git a/storage/app/uploads/public/621/561/e9c/621561e9c9799081922431.jpg b/storage/app/uploads/public/621/561/e9c/621561e9c9799081922431.jpg
new file mode 100644
index 0000000000..f2cd1d7054
Binary files /dev/null and b/storage/app/uploads/public/621/561/e9c/621561e9c9799081922431.jpg differ
diff --git a/storage/app/uploads/public/621/e42/95a/621e4295a0f3f285158210.jpg b/storage/app/uploads/public/621/e42/95a/621e4295a0f3f285158210.jpg
new file mode 100644
index 0000000000..183cfb84e5
Binary files /dev/null and b/storage/app/uploads/public/621/e42/95a/621e4295a0f3f285158210.jpg differ
diff --git a/storage/app/uploads/public/621/e46/b59/621e46b59f6a8102188120.jpg b/storage/app/uploads/public/621/e46/b59/621e46b59f6a8102188120.jpg
new file mode 100644
index 0000000000..63880d186c
Binary files /dev/null and b/storage/app/uploads/public/621/e46/b59/621e46b59f6a8102188120.jpg differ
diff --git a/storage/app/uploads/public/622/7be/93b/6227be93b17ef513033459.jpg b/storage/app/uploads/public/622/7be/93b/6227be93b17ef513033459.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/622/7be/93b/6227be93b17ef513033459.jpg differ
diff --git a/storage/app/uploads/public/622/7d1/07d/6227d107d6474712525522.jpg b/storage/app/uploads/public/622/7d1/07d/6227d107d6474712525522.jpg
new file mode 100644
index 0000000000..f2cd1d7054
Binary files /dev/null and b/storage/app/uploads/public/622/7d1/07d/6227d107d6474712525522.jpg differ
diff --git a/storage/app/uploads/public/623/0c7/a89/6230c7a89237e646159568.jpg b/storage/app/uploads/public/623/0c7/a89/6230c7a89237e646159568.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/623/0c7/a89/6230c7a89237e646159568.jpg differ
diff --git a/storage/app/uploads/public/623/1c7/d5c/6231c7d5c1f2c958957369.jpg b/storage/app/uploads/public/623/1c7/d5c/6231c7d5c1f2c958957369.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/623/1c7/d5c/6231c7d5c1f2c958957369.jpg differ
diff --git a/storage/app/uploads/public/623/b2e/4c9/623b2e4c9a477201375674.jpg b/storage/app/uploads/public/623/b2e/4c9/623b2e4c9a477201375674.jpg
new file mode 100644
index 0000000000..fc648f8709
Binary files /dev/null and b/storage/app/uploads/public/623/b2e/4c9/623b2e4c9a477201375674.jpg differ
diff --git a/storage/app/uploads/public/623/c78/5f2/623c785f207e4505667472.jpg b/storage/app/uploads/public/623/c78/5f2/623c785f207e4505667472.jpg
new file mode 100644
index 0000000000..f2cd1d7054
Binary files /dev/null and b/storage/app/uploads/public/623/c78/5f2/623c785f207e4505667472.jpg differ
diff --git a/storage/app/uploads/public/624/478/e18/624478e1847b4256833354.jpg b/storage/app/uploads/public/624/478/e18/624478e1847b4256833354.jpg
new file mode 100644
index 0000000000..a3b7c49b79
Binary files /dev/null and b/storage/app/uploads/public/624/478/e18/624478e1847b4256833354.jpg differ
diff --git a/storage/app/uploads/public/624/5ba/665/6245ba665ff5d449805122.jpg b/storage/app/uploads/public/624/5ba/665/6245ba665ff5d449805122.jpg
new file mode 100644
index 0000000000..5e485114e3
Binary files /dev/null and b/storage/app/uploads/public/624/5ba/665/6245ba665ff5d449805122.jpg differ
diff --git a/storage/app/uploads/public/624/5c5/2f7/6245c52f78c89435559563.jpg b/storage/app/uploads/public/624/5c5/2f7/6245c52f78c89435559563.jpg
new file mode 100644
index 0000000000..5cc563a960
Binary files /dev/null and b/storage/app/uploads/public/624/5c5/2f7/6245c52f78c89435559563.jpg differ
diff --git a/storage/app/uploads/public/624/5d5/5ce/6245d55ce259a809037900.png b/storage/app/uploads/public/624/5d5/5ce/6245d55ce259a809037900.png
new file mode 100644
index 0000000000..3d4532cf13
Binary files /dev/null and b/storage/app/uploads/public/624/5d5/5ce/6245d55ce259a809037900.png differ
diff --git a/storage/app/uploads/public/624/da1/f3c/624da1f3cff67769282589.jpg b/storage/app/uploads/public/624/da1/f3c/624da1f3cff67769282589.jpg
new file mode 100644
index 0000000000..f2cd1d7054
Binary files /dev/null and b/storage/app/uploads/public/624/da1/f3c/624da1f3cff67769282589.jpg differ
diff --git a/storage/app/uploads/public/625/6ff/331/6256ff331f974859299358.jpg b/storage/app/uploads/public/625/6ff/331/6256ff331f974859299358.jpg
new file mode 100644
index 0000000000..1bdb6a06ed
Binary files /dev/null and b/storage/app/uploads/public/625/6ff/331/6256ff331f974859299358.jpg differ
diff --git a/storage/app/uploads/public/625/9ea/bf7/6259eabf7e2bb855765148.jpg b/storage/app/uploads/public/625/9ea/bf7/6259eabf7e2bb855765148.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/625/9ea/bf7/6259eabf7e2bb855765148.jpg differ
diff --git a/storage/app/uploads/public/626/a6c/7d0/626a6c7d07e5f570805755.png b/storage/app/uploads/public/626/a6c/7d0/626a6c7d07e5f570805755.png
new file mode 100644
index 0000000000..6e95db1eaf
Binary files /dev/null and b/storage/app/uploads/public/626/a6c/7d0/626a6c7d07e5f570805755.png differ
diff --git a/storage/app/uploads/public/626/a99/40e/626a9940e2815736019366.jpg b/storage/app/uploads/public/626/a99/40e/626a9940e2815736019366.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/626/a99/40e/626a9940e2815736019366.jpg differ
diff --git a/storage/app/uploads/public/626/a9a/840/626a9a840b793757439120.jpg b/storage/app/uploads/public/626/a9a/840/626a9a840b793757439120.jpg
new file mode 100644
index 0000000000..f2cd1d7054
Binary files /dev/null and b/storage/app/uploads/public/626/a9a/840/626a9a840b793757439120.jpg differ
diff --git a/storage/app/uploads/public/627/14d/d2d/62714dd2dfeee087684095.jpg b/storage/app/uploads/public/627/14d/d2d/62714dd2dfeee087684095.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/627/14d/d2d/62714dd2dfeee087684095.jpg differ
diff --git a/storage/app/uploads/public/627/cb8/9e9/627cb89e91286901016326.jpg b/storage/app/uploads/public/627/cb8/9e9/627cb89e91286901016326.jpg
new file mode 100644
index 0000000000..f2cd1d7054
Binary files /dev/null and b/storage/app/uploads/public/627/cb8/9e9/627cb89e91286901016326.jpg differ
diff --git a/storage/app/uploads/public/628/25c/a90/62825ca90ce90173672387.png b/storage/app/uploads/public/628/25c/a90/62825ca90ce90173672387.png
new file mode 100644
index 0000000000..f5d36e9fd9
Binary files /dev/null and b/storage/app/uploads/public/628/25c/a90/62825ca90ce90173672387.png differ
diff --git a/storage/app/uploads/public/628/25d/c3d/62825dc3d87ab973806134.png b/storage/app/uploads/public/628/25d/c3d/62825dc3d87ab973806134.png
new file mode 100644
index 0000000000..e6efcba271
Binary files /dev/null and b/storage/app/uploads/public/628/25d/c3d/62825dc3d87ab973806134.png differ
diff --git a/storage/app/uploads/public/628/507/eb3/628507eb330fc678674016.jpg b/storage/app/uploads/public/628/507/eb3/628507eb330fc678674016.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/628/507/eb3/628507eb330fc678674016.jpg differ
diff --git a/storage/app/uploads/public/628/a23/98f/628a2398f3298531933405.png b/storage/app/uploads/public/628/a23/98f/628a2398f3298531933405.png
new file mode 100644
index 0000000000..27e3ee17b5
Binary files /dev/null and b/storage/app/uploads/public/628/a23/98f/628a2398f3298531933405.png differ
diff --git a/storage/app/uploads/public/628/cb6/800/628cb6800fa5e986276178.jpg b/storage/app/uploads/public/628/cb6/800/628cb6800fa5e986276178.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/628/cb6/800/628cb6800fa5e986276178.jpg differ
diff --git a/storage/app/uploads/public/629/748/25e/62974825ec785638019396.jpg b/storage/app/uploads/public/629/748/25e/62974825ec785638019396.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/629/748/25e/62974825ec785638019396.jpg differ
diff --git a/storage/app/uploads/public/629/774/035/629774035d259629688644.jpg b/storage/app/uploads/public/629/774/035/629774035d259629688644.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/629/774/035/629774035d259629688644.jpg differ
diff --git a/storage/app/uploads/public/629/89b/e37/62989be37c03a908985630.jpg b/storage/app/uploads/public/629/89b/e37/62989be37c03a908985630.jpg
new file mode 100644
index 0000000000..f2cd1d7054
Binary files /dev/null and b/storage/app/uploads/public/629/89b/e37/62989be37c03a908985630.jpg differ
diff --git a/storage/app/uploads/public/62a/9d9/db8/62a9d9db836ff413084150.jpg b/storage/app/uploads/public/62a/9d9/db8/62a9d9db836ff413084150.jpg
new file mode 100644
index 0000000000..f2cd1d7054
Binary files /dev/null and b/storage/app/uploads/public/62a/9d9/db8/62a9d9db836ff413084150.jpg differ
diff --git a/storage/app/uploads/public/62a/9e1/79b/62a9e179b77cb823642349.jpg b/storage/app/uploads/public/62a/9e1/79b/62a9e179b77cb823642349.jpg
new file mode 100644
index 0000000000..e7aa4baf7f
Binary files /dev/null and b/storage/app/uploads/public/62a/9e1/79b/62a9e179b77cb823642349.jpg differ
diff --git a/storage/app/uploads/public/62a/c71/8fb/62ac718fb81bf021665504.jpg b/storage/app/uploads/public/62a/c71/8fb/62ac718fb81bf021665504.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/62a/c71/8fb/62ac718fb81bf021665504.jpg differ
diff --git a/storage/app/uploads/public/62b/5a0/79b/62b5a079b2b24464427790.png b/storage/app/uploads/public/62b/5a0/79b/62b5a079b2b24464427790.png
new file mode 100644
index 0000000000..7a0cff22b4
Binary files /dev/null and b/storage/app/uploads/public/62b/5a0/79b/62b5a079b2b24464427790.png differ
diff --git a/storage/app/uploads/public/62b/9c8/732/62b9c87325b88411816934.jpg b/storage/app/uploads/public/62b/9c8/732/62b9c87325b88411816934.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/62b/9c8/732/62b9c87325b88411816934.jpg differ
diff --git a/storage/app/uploads/public/62b/eb4/3e0/62beb43e09137052879786.png b/storage/app/uploads/public/62b/eb4/3e0/62beb43e09137052879786.png
new file mode 100644
index 0000000000..a2686207f7
Binary files /dev/null and b/storage/app/uploads/public/62b/eb4/3e0/62beb43e09137052879786.png differ
diff --git a/storage/app/uploads/public/62b/ef3/600/62bef360098e2733276874.jpg b/storage/app/uploads/public/62b/ef3/600/62bef360098e2733276874.jpg
new file mode 100644
index 0000000000..f2cd1d7054
Binary files /dev/null and b/storage/app/uploads/public/62b/ef3/600/62bef360098e2733276874.jpg differ
diff --git a/storage/app/uploads/public/62b/f36/4c6/62bf364c66e01473699127.gif b/storage/app/uploads/public/62b/f36/4c6/62bf364c66e01473699127.gif
new file mode 100644
index 0000000000..93a24dac11
Binary files /dev/null and b/storage/app/uploads/public/62b/f36/4c6/62bf364c66e01473699127.gif differ
diff --git a/storage/app/uploads/public/62b/f5f/f17/62bf5ff176bd3032126104.png b/storage/app/uploads/public/62b/f5f/f17/62bf5ff176bd3032126104.png
new file mode 100644
index 0000000000..48c96ece2e
Binary files /dev/null and b/storage/app/uploads/public/62b/f5f/f17/62bf5ff176bd3032126104.png differ
diff --git a/storage/app/uploads/public/62c/5b0/068/62c5b0068cc8e524432998.png b/storage/app/uploads/public/62c/5b0/068/62c5b0068cc8e524432998.png
new file mode 100644
index 0000000000..f100cb47e9
Binary files /dev/null and b/storage/app/uploads/public/62c/5b0/068/62c5b0068cc8e524432998.png differ
diff --git a/storage/app/uploads/public/62c/7f0/daa/62c7f0daa5ea8727743351.jpg b/storage/app/uploads/public/62c/7f0/daa/62c7f0daa5ea8727743351.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/62c/7f0/daa/62c7f0daa5ea8727743351.jpg differ
diff --git a/storage/app/uploads/public/62d/084/d0c/62d084d0cc864053656938.jpg b/storage/app/uploads/public/62d/084/d0c/62d084d0cc864053656938.jpg
new file mode 100644
index 0000000000..f2cd1d7054
Binary files /dev/null and b/storage/app/uploads/public/62d/084/d0c/62d084d0cc864053656938.jpg differ
diff --git a/storage/app/uploads/public/62d/161/b64/62d161b640268831834229.png b/storage/app/uploads/public/62d/161/b64/62d161b640268831834229.png
new file mode 100644
index 0000000000..328ce63893
Binary files /dev/null and b/storage/app/uploads/public/62d/161/b64/62d161b640268831834229.png differ
diff --git a/storage/app/uploads/public/62d/72a/b98/62d72ab98966b435331205.jpg b/storage/app/uploads/public/62d/72a/b98/62d72ab98966b435331205.jpg
new file mode 100644
index 0000000000..8593149e10
Binary files /dev/null and b/storage/app/uploads/public/62d/72a/b98/62d72ab98966b435331205.jpg differ
diff --git a/storage/app/uploads/public/62d/a9c/ae7/62da9cae740e1718795386.jpg b/storage/app/uploads/public/62d/a9c/ae7/62da9cae740e1718795386.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/62d/a9c/ae7/62da9cae740e1718795386.jpg differ
diff --git a/storage/app/uploads/public/62e/270/9fc/62e2709fc2b4a078799068.png b/storage/app/uploads/public/62e/270/9fc/62e2709fc2b4a078799068.png
new file mode 100644
index 0000000000..28cac0b506
Binary files /dev/null and b/storage/app/uploads/public/62e/270/9fc/62e2709fc2b4a078799068.png differ
diff --git a/storage/app/uploads/public/62e/27e/c1a/62e27ec1a7b70942257259.jpg b/storage/app/uploads/public/62e/27e/c1a/62e27ec1a7b70942257259.jpg
new file mode 100644
index 0000000000..b7aef3377f
Binary files /dev/null and b/storage/app/uploads/public/62e/27e/c1a/62e27ec1a7b70942257259.jpg differ
diff --git a/storage/app/uploads/public/62e/2d8/d50/62e2d8d50baa2930461492.png b/storage/app/uploads/public/62e/2d8/d50/62e2d8d50baa2930461492.png
new file mode 100644
index 0000000000..38bc5b01a4
Binary files /dev/null and b/storage/app/uploads/public/62e/2d8/d50/62e2d8d50baa2930461492.png differ
diff --git a/storage/app/uploads/public/62e/8ee/3bb/62e8ee3bbe08d090000998.jpg b/storage/app/uploads/public/62e/8ee/3bb/62e8ee3bbe08d090000998.jpg
new file mode 100644
index 0000000000..9f72975178
Binary files /dev/null and b/storage/app/uploads/public/62e/8ee/3bb/62e8ee3bbe08d090000998.jpg differ
diff --git a/storage/app/uploads/public/62e/949/5ee/62e9495eee18d883052090.jpg b/storage/app/uploads/public/62e/949/5ee/62e9495eee18d883052090.jpg
new file mode 100644
index 0000000000..8f654bfb49
Binary files /dev/null and b/storage/app/uploads/public/62e/949/5ee/62e9495eee18d883052090.jpg differ
diff --git a/storage/app/uploads/public/62e/d1b/71d/62ed1b71d02e7838559300.jpg b/storage/app/uploads/public/62e/d1b/71d/62ed1b71d02e7838559300.jpg
new file mode 100644
index 0000000000..5a0c79aba2
Binary files /dev/null and b/storage/app/uploads/public/62e/d1b/71d/62ed1b71d02e7838559300.jpg differ
diff --git a/storage/app/uploads/public/62f/3c8/fac/62f3c8fac0406080699461.png b/storage/app/uploads/public/62f/3c8/fac/62f3c8fac0406080699461.png
new file mode 100644
index 0000000000..9c5ca29fbf
Binary files /dev/null and b/storage/app/uploads/public/62f/3c8/fac/62f3c8fac0406080699461.png differ
diff --git a/storage/app/uploads/public/62f/3cf/f69/62f3cff699de5885323719.png b/storage/app/uploads/public/62f/3cf/f69/62f3cff699de5885323719.png
new file mode 100644
index 0000000000..38bc5b01a4
Binary files /dev/null and b/storage/app/uploads/public/62f/3cf/f69/62f3cff699de5885323719.png differ
diff --git a/storage/app/uploads/public/630/526/086/630526086cf01605139233.png b/storage/app/uploads/public/630/526/086/630526086cf01605139233.png
new file mode 100644
index 0000000000..da0d343288
Binary files /dev/null and b/storage/app/uploads/public/630/526/086/630526086cf01605139233.png differ
diff --git a/storage/app/uploads/public/630/52d/76e/63052d76e024a243584746.png b/storage/app/uploads/public/630/52d/76e/63052d76e024a243584746.png
new file mode 100644
index 0000000000..0560aecfbf
Binary files /dev/null and b/storage/app/uploads/public/630/52d/76e/63052d76e024a243584746.png differ
diff --git a/storage/app/uploads/public/630/e31/8a8/630e318a80525807224115.png b/storage/app/uploads/public/630/e31/8a8/630e318a80525807224115.png
new file mode 100644
index 0000000000..38bc5b01a4
Binary files /dev/null and b/storage/app/uploads/public/630/e31/8a8/630e318a80525807224115.png differ
diff --git a/storage/app/uploads/public/631/1d7/7cc/6311d77cc7f5f571027656.jpg b/storage/app/uploads/public/631/1d7/7cc/6311d77cc7f5f571027656.jpg
new file mode 100644
index 0000000000..52914a7805
Binary files /dev/null and b/storage/app/uploads/public/631/1d7/7cc/6311d77cc7f5f571027656.jpg differ
diff --git a/storage/app/uploads/public/631/8a4/10f/6318a410f1d2c423222075.png b/storage/app/uploads/public/631/8a4/10f/6318a410f1d2c423222075.png
new file mode 100644
index 0000000000..38bc5b01a4
Binary files /dev/null and b/storage/app/uploads/public/631/8a4/10f/6318a410f1d2c423222075.png differ
diff --git a/storage/app/uploads/public/632/08f/42e/63208f42e7e15588239571.png b/storage/app/uploads/public/632/08f/42e/63208f42e7e15588239571.png
new file mode 100644
index 0000000000..38bc5b01a4
Binary files /dev/null and b/storage/app/uploads/public/632/08f/42e/63208f42e7e15588239571.png differ
diff --git a/storage/app/uploads/public/632/355/534/632355534b2d7687276315.jpg b/storage/app/uploads/public/632/355/534/632355534b2d7687276315.jpg
new file mode 100644
index 0000000000..3243c49077
Binary files /dev/null and b/storage/app/uploads/public/632/355/534/632355534b2d7687276315.jpg differ
diff --git a/storage/app/uploads/public/632/b1a/d10/632b1ad102373095371461.jpg b/storage/app/uploads/public/632/b1a/d10/632b1ad102373095371461.jpg
new file mode 100644
index 0000000000..52914a7805
Binary files /dev/null and b/storage/app/uploads/public/632/b1a/d10/632b1ad102373095371461.jpg differ
diff --git a/storage/app/uploads/public/633/40f/40e/63340f40ec5d8921619579.jpg b/storage/app/uploads/public/633/40f/40e/63340f40ec5d8921619579.jpg
new file mode 100644
index 0000000000..819cd42e43
Binary files /dev/null and b/storage/app/uploads/public/633/40f/40e/63340f40ec5d8921619579.jpg differ
diff --git a/storage/app/uploads/public/633/5d9/435/6335d9435262e051389244.jpg b/storage/app/uploads/public/633/5d9/435/6335d9435262e051389244.jpg
new file mode 100644
index 0000000000..7e76bcf61f
Binary files /dev/null and b/storage/app/uploads/public/633/5d9/435/6335d9435262e051389244.jpg differ
diff --git a/storage/app/uploads/public/633/69f/d37/63369fd37cc17811993052.jpg b/storage/app/uploads/public/633/69f/d37/63369fd37cc17811993052.jpg
new file mode 100644
index 0000000000..97d66089ec
Binary files /dev/null and b/storage/app/uploads/public/633/69f/d37/63369fd37cc17811993052.jpg differ
diff --git a/storage/app/uploads/public/633/d85/6c0/633d856c08477650100797.png b/storage/app/uploads/public/633/d85/6c0/633d856c08477650100797.png
new file mode 100644
index 0000000000..a847895d6d
Binary files /dev/null and b/storage/app/uploads/public/633/d85/6c0/633d856c08477650100797.png differ
diff --git a/storage/app/uploads/public/634/949/641/6349496418665542315794.png b/storage/app/uploads/public/634/949/641/6349496418665542315794.png
new file mode 100644
index 0000000000..6288a9654d
Binary files /dev/null and b/storage/app/uploads/public/634/949/641/6349496418665542315794.png differ
diff --git a/storage/app/uploads/public/634/94d/db5/63494ddb52303196548493.jpg b/storage/app/uploads/public/634/94d/db5/63494ddb52303196548493.jpg
new file mode 100644
index 0000000000..75385552a0
Binary files /dev/null and b/storage/app/uploads/public/634/94d/db5/63494ddb52303196548493.jpg differ
diff --git a/storage/app/uploads/public/634/d8d/43e/634d8d43e5bd4838492470.png b/storage/app/uploads/public/634/d8d/43e/634d8d43e5bd4838492470.png
new file mode 100644
index 0000000000..59358f21a7
Binary files /dev/null and b/storage/app/uploads/public/634/d8d/43e/634d8d43e5bd4838492470.png differ
diff --git a/storage/app/uploads/public/635/f8d/29c/635f8d29ce7da891830920.png b/storage/app/uploads/public/635/f8d/29c/635f8d29ce7da891830920.png
new file mode 100644
index 0000000000..e0c1927711
Binary files /dev/null and b/storage/app/uploads/public/635/f8d/29c/635f8d29ce7da891830920.png differ
diff --git a/storage/app/uploads/public/636/176/88b/63617688b5cec969138693.png b/storage/app/uploads/public/636/176/88b/63617688b5cec969138693.png
new file mode 100644
index 0000000000..1f76e7c696
Binary files /dev/null and b/storage/app/uploads/public/636/176/88b/63617688b5cec969138693.png differ
diff --git a/storage/app/uploads/public/636/2a3/36e/6362a336e23be482773873.png b/storage/app/uploads/public/636/2a3/36e/6362a336e23be482773873.png
new file mode 100644
index 0000000000..fbc2f3a31c
Binary files /dev/null and b/storage/app/uploads/public/636/2a3/36e/6362a336e23be482773873.png differ
diff --git a/storage/app/uploads/public/636/537/ac4/636537ac48c8e789384743.jpg b/storage/app/uploads/public/636/537/ac4/636537ac48c8e789384743.jpg
new file mode 100644
index 0000000000..4ee25734ee
Binary files /dev/null and b/storage/app/uploads/public/636/537/ac4/636537ac48c8e789384743.jpg differ
diff --git a/storage/app/uploads/public/636/942/fed/636942feda67c584924051.png b/storage/app/uploads/public/636/942/fed/636942feda67c584924051.png
new file mode 100644
index 0000000000..2e9766bf29
Binary files /dev/null and b/storage/app/uploads/public/636/942/fed/636942feda67c584924051.png differ
diff --git a/storage/app/uploads/public/637/504/1c9/6375041c9e30e661885039.jpg b/storage/app/uploads/public/637/504/1c9/6375041c9e30e661885039.jpg
new file mode 100644
index 0000000000..6062fd69f9
Binary files /dev/null and b/storage/app/uploads/public/637/504/1c9/6375041c9e30e661885039.jpg differ
diff --git a/storage/app/uploads/public/637/517/5b5/6375175b5be6f234103652.jpg b/storage/app/uploads/public/637/517/5b5/6375175b5be6f234103652.jpg
new file mode 100644
index 0000000000..5531de4b5c
Binary files /dev/null and b/storage/app/uploads/public/637/517/5b5/6375175b5be6f234103652.jpg differ
diff --git a/storage/app/uploads/public/637/7ba/bc4/6377babc4a7b4211213425.png b/storage/app/uploads/public/637/7ba/bc4/6377babc4a7b4211213425.png
new file mode 100644
index 0000000000..3bf8a81236
Binary files /dev/null and b/storage/app/uploads/public/637/7ba/bc4/6377babc4a7b4211213425.png differ
diff --git a/storage/app/uploads/public/637/e52/f4e/637e52f4ea8c3720079853.jpg b/storage/app/uploads/public/637/e52/f4e/637e52f4ea8c3720079853.jpg
new file mode 100644
index 0000000000..d78a49a1ac
Binary files /dev/null and b/storage/app/uploads/public/637/e52/f4e/637e52f4ea8c3720079853.jpg differ
diff --git a/storage/app/uploads/public/638/482/936/6384829362ab9636453870.jpg b/storage/app/uploads/public/638/482/936/6384829362ab9636453870.jpg
new file mode 100644
index 0000000000..449e54bd39
Binary files /dev/null and b/storage/app/uploads/public/638/482/936/6384829362ab9636453870.jpg differ
diff --git a/storage/app/uploads/public/638/488/b3a/638488b3a8a9a551835674.png b/storage/app/uploads/public/638/488/b3a/638488b3a8a9a551835674.png
new file mode 100644
index 0000000000..2ba31da2c6
Binary files /dev/null and b/storage/app/uploads/public/638/488/b3a/638488b3a8a9a551835674.png differ
diff --git a/storage/app/uploads/public/638/48d/dfb/63848ddfb6c01012803604.jpeg b/storage/app/uploads/public/638/48d/dfb/63848ddfb6c01012803604.jpeg
new file mode 100644
index 0000000000..1abc137da7
Binary files /dev/null and b/storage/app/uploads/public/638/48d/dfb/63848ddfb6c01012803604.jpeg differ
diff --git a/storage/app/uploads/public/638/4cf/d0e/6384cfd0eaf81306100653.png b/storage/app/uploads/public/638/4cf/d0e/6384cfd0eaf81306100653.png
new file mode 100644
index 0000000000..7f2640e49a
Binary files /dev/null and b/storage/app/uploads/public/638/4cf/d0e/6384cfd0eaf81306100653.png differ
diff --git a/storage/app/uploads/public/638/4dc/1a5/6384dc1a52896652369025.png b/storage/app/uploads/public/638/4dc/1a5/6384dc1a52896652369025.png
new file mode 100644
index 0000000000..bebad0d3e2
Binary files /dev/null and b/storage/app/uploads/public/638/4dc/1a5/6384dc1a52896652369025.png differ
diff --git a/storage/app/uploads/public/638/4df/523/6384df52383ef639055475.png b/storage/app/uploads/public/638/4df/523/6384df52383ef639055475.png
new file mode 100644
index 0000000000..9700e18dab
Binary files /dev/null and b/storage/app/uploads/public/638/4df/523/6384df52383ef639055475.png differ
diff --git a/storage/app/uploads/public/638/4df/6fc/6384df6fc95a2247355858.png b/storage/app/uploads/public/638/4df/6fc/6384df6fc95a2247355858.png
new file mode 100644
index 0000000000..9700e18dab
Binary files /dev/null and b/storage/app/uploads/public/638/4df/6fc/6384df6fc95a2247355858.png differ
diff --git a/storage/app/uploads/public/638/55e/dad/63855edad2371754303509.png b/storage/app/uploads/public/638/55e/dad/63855edad2371754303509.png
new file mode 100644
index 0000000000..08f8fe3bce
Binary files /dev/null and b/storage/app/uploads/public/638/55e/dad/63855edad2371754303509.png differ
diff --git a/storage/app/uploads/public/638/62f/4ee/63862f4ee69d6542463481.jpeg b/storage/app/uploads/public/638/62f/4ee/63862f4ee69d6542463481.jpeg
new file mode 100644
index 0000000000..7c9461d70f
Binary files /dev/null and b/storage/app/uploads/public/638/62f/4ee/63862f4ee69d6542463481.jpeg differ
diff --git a/storage/app/uploads/public/638/8d9/a60/6388d9a60ac95864295672.jpg b/storage/app/uploads/public/638/8d9/a60/6388d9a60ac95864295672.jpg
new file mode 100644
index 0000000000..4566ce4d35
Binary files /dev/null and b/storage/app/uploads/public/638/8d9/a60/6388d9a60ac95864295672.jpg differ
diff --git a/storage/app/uploads/public/639/34f/741/63934f741900a568331508.jpg b/storage/app/uploads/public/639/34f/741/63934f741900a568331508.jpg
new file mode 100644
index 0000000000..68fbf0fd03
Binary files /dev/null and b/storage/app/uploads/public/639/34f/741/63934f741900a568331508.jpg differ
diff --git a/storage/app/uploads/public/639/8e8/f37/6398e8f377a4c902272571.png b/storage/app/uploads/public/639/8e8/f37/6398e8f377a4c902272571.png
new file mode 100644
index 0000000000..ac69f11e01
Binary files /dev/null and b/storage/app/uploads/public/639/8e8/f37/6398e8f377a4c902272571.png differ
diff --git a/storage/app/uploads/public/639/8e9/439/6398e9439b5a3793227163.png b/storage/app/uploads/public/639/8e9/439/6398e9439b5a3793227163.png
new file mode 100644
index 0000000000..077b34430c
Binary files /dev/null and b/storage/app/uploads/public/639/8e9/439/6398e9439b5a3793227163.png differ
diff --git a/storage/app/uploads/public/639/ae1/461/639ae14617279697513369.jpg b/storage/app/uploads/public/639/ae1/461/639ae14617279697513369.jpg
new file mode 100644
index 0000000000..b55e938427
Binary files /dev/null and b/storage/app/uploads/public/639/ae1/461/639ae14617279697513369.jpg differ
diff --git a/storage/app/uploads/public/639/ee6/760/639ee6760abb6073938813.png b/storage/app/uploads/public/639/ee6/760/639ee6760abb6073938813.png
new file mode 100644
index 0000000000..953409212f
Binary files /dev/null and b/storage/app/uploads/public/639/ee6/760/639ee6760abb6073938813.png differ
diff --git a/storage/app/uploads/public/63a/070/ed6/63a070ed63208559579129.jpg b/storage/app/uploads/public/63a/070/ed6/63a070ed63208559579129.jpg
new file mode 100644
index 0000000000..090a1d025d
Binary files /dev/null and b/storage/app/uploads/public/63a/070/ed6/63a070ed63208559579129.jpg differ
diff --git a/storage/app/uploads/public/63a/182/5cd/63a1825cd2443916160270.png b/storage/app/uploads/public/63a/182/5cd/63a1825cd2443916160270.png
new file mode 100644
index 0000000000..5c0e117b6e
Binary files /dev/null and b/storage/app/uploads/public/63a/182/5cd/63a1825cd2443916160270.png differ
diff --git a/storage/app/uploads/public/63a/5cb/0f4/63a5cb0f48e88945485049.jpg b/storage/app/uploads/public/63a/5cb/0f4/63a5cb0f48e88945485049.jpg
new file mode 100644
index 0000000000..5a61ec6cd3
Binary files /dev/null and b/storage/app/uploads/public/63a/5cb/0f4/63a5cb0f48e88945485049.jpg differ
diff --git a/storage/app/uploads/public/63a/ebf/03e/63aebf03e854b249543216.png b/storage/app/uploads/public/63a/ebf/03e/63aebf03e854b249543216.png
new file mode 100644
index 0000000000..4d4cea1146
Binary files /dev/null and b/storage/app/uploads/public/63a/ebf/03e/63aebf03e854b249543216.png differ
diff --git a/themes/godotengine/assets/showcase/pingo-adventure.jpg b/themes/godotengine/assets/showcase/pingo-adventure.jpg
deleted file mode 100644
index 26dd8ddd0f..0000000000
Binary files a/themes/godotengine/assets/showcase/pingo-adventure.jpg and /dev/null differ
diff --git a/themes/godotengine/i18n/.gitignore b/themes/godotengine/i18n/.gitignore
deleted file mode 100644
index 2a6160516e..0000000000
--- a/themes/godotengine/i18n/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.yaml
\ No newline at end of file
diff --git a/themes/godotengine/i18n/po/messages.es.po b/themes/godotengine/i18n/po/messages.es.po
deleted file mode 100644
index fdad15e910..0000000000
--- a/themes/godotengine/i18n/po/messages.es.po
+++ /dev/null
@@ -1,287 +0,0 @@
-# Spanish translation of the Godot Engine class reference.
-# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2022 Godot Engine contributors (cf. https://github.com/godotengine/godot/blob/master/AUTHORS.md).
-# This file is distributed under the same license as the Godot source code.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Godot Engine official website\n"
-"Report-Msgid-Bugs-To: https://github.com/godotengine/godot-website\n"
-"Language: es\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
-"Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n != 0 && n % 1000000 == "
-"0) ? 1 : 2);\n"
-"X-Domain: default\n"
-
-#: godotengine/layouts/home.htm:246
-msgid "The game engine you've been waiting for."
-msgstr ""
-
-#: godotengine/layouts/home.htm:247
-msgid ""
-"The Godot Engine is a free, all-in-one, cross-platform game engine that "
-"makes it easy for you to create 2D and 3D games."
-msgstr ""
-
-#: godotengine/layouts/home.htm:251 godotengine/partials/footer.htm:18
-#: godotengine/partials/header.htm:33
-msgid "Download"
-msgstr ""
-
-#: godotengine/layouts/home.htm:253 godotengine/layouts/home.htm:440
-#: godotengine/layouts/home.htm:449 godotengine/layouts/home.htm:458
-#: godotengine/layouts/home.htm:473
-msgid "Learn more"
-msgstr ""
-
-#: godotengine/layouts/home.htm:263
-msgid "Latest news"
-msgstr ""
-
-#: godotengine/layouts/home.htm:300
-msgid "More News"
-msgstr ""
-
-#: godotengine/layouts/home.htm:308
-msgid "A different way to make games"
-msgstr ""
-
-#: godotengine/layouts/home.htm:322
-msgid "Innovative design"
-msgstr ""
-
-#: godotengine/layouts/home.htm:324
-msgid ""
-"Godot's Node and Scene system gives you both power and flexibility to create "
-"anything."
-msgstr ""
-
-#: godotengine/layouts/home.htm:341
-msgid "Use the right language for the job"
-msgstr ""
-
-#: godotengine/layouts/home.htm:343
-msgid ""
-"Keep your code modular with an object-oriented API using Godot's own "
-"GDScript, C#, C++, or bring your own using GDNative."
-msgstr ""
-
-#: godotengine/layouts/home.htm:359
-msgid "Dedicated 2D engine"
-msgstr ""
-
-#: godotengine/layouts/home.htm:361
-msgid ""
-"Make crisp and performant 2D games with Godot's dedicated 2D rendering "
-"engine with real 2D pixel coordinates and 2D nodes."
-msgstr ""
-
-#: godotengine/layouts/home.htm:378
-msgid "Simple and powerful 3D"
-msgstr ""
-
-#: godotengine/layouts/home.htm:380
-msgid ""
-"Godot's 3D nodes give you everything you need to build, animate, and render "
-"your 3D worlds and characters."
-msgstr ""
-
-#: godotengine/layouts/home.htm:397
-msgid "Release on all platforms"
-msgstr ""
-
-#: godotengine/layouts/home.htm:399
-msgid ""
-"Deploy your game on desktop, mobile, and the web in seconds. Godot even "
-"supports consoles through third party publishers."
-msgstr ""
-
-#: godotengine/layouts/home.htm:416
-msgid "Open Source"
-msgstr ""
-
-#: godotengine/layouts/home.htm:418
-msgid ""
-"Truly open development: anyone who contributes to Godot benefits equally "
-"from others' contributions."
-msgstr ""
-
-#: godotengine/layouts/home.htm:427
-msgid "Get involved"
-msgstr ""
-
-#: godotengine/layouts/home.htm:429
-msgid ""
-"Join the community and help create a game engine that belongs to everybody."
-msgstr ""
-
-#: godotengine/layouts/home.htm:436
-msgid "Code"
-msgstr ""
-
-#: godotengine/layouts/home.htm:438
-msgid ""
-"If you know how to code, you can help by fixing bugs and working with engine "
-"contributors towards the implementation of new features."
-msgstr ""
-
-#: godotengine/layouts/home.htm:445
-msgid "Document"
-msgstr ""
-
-#: godotengine/layouts/home.htm:447
-msgid ""
-"Documentation quality is essential in a game engine; help make it better by "
-"updating the API reference, writing new guides or submitting corrections."
-msgstr ""
-
-#: godotengine/layouts/home.htm:454
-msgid "Report"
-msgstr ""
-
-#: godotengine/layouts/home.htm:456
-msgid ""
-"Found a problem with the engine? Don't forget to report it so that "
-"developers can track it down."
-msgstr ""
-
-#: godotengine/layouts/home.htm:467 godotengine/partials/footer.htm:34
-#: godotengine/partials/header.htm:37
-msgid "Donate"
-msgstr ""
-
-#: godotengine/layouts/home.htm:470
-msgid ""
-"You don't need to be an engine developer to help Godot. Consider donating to "
-"speed up development and make Godot  Engine even more awesome!"
-msgstr ""
-
-#: godotengine/layouts/home.htm:479
-msgid "Sponsored by"
-msgstr ""
-
-#: godotengine/partials/footer.htm:9
-msgid "and"
-msgstr ""
-
-#: godotengine/partials/footer.htm:9
-msgid "contributors"
-msgstr ""
-
-#: godotengine/partials/footer.htm:10
-msgid "Godot is a member of the"
-msgstr ""
-
-#: godotengine/partials/footer.htm:11
-msgid "Kindly hosted by"
-msgstr ""
-
-#: godotengine/partials/footer.htm:12
-msgid "Website source code on GitHub"
-msgstr ""
-
-#: godotengine/partials/footer.htm:17
-msgid "Get Godot"
-msgstr ""
-
-#: godotengine/partials/footer.htm:19
-msgid "Web Editor"
-msgstr ""
-
-#: godotengine/partials/footer.htm:21
-msgid "Public Relations"
-msgstr ""
-
-#: godotengine/partials/footer.htm:22 godotengine/partials/header.htm:26
-msgid "News"
-msgstr ""
-
-#: godotengine/partials/footer.htm:23
-msgid "Communities and Events"
-msgstr ""
-
-#: godotengine/partials/footer.htm:24
-msgid "Press Kit"
-msgstr ""
-
-#: godotengine/partials/footer.htm:27
-msgid "About Godot"
-msgstr ""
-
-#: godotengine/partials/footer.htm:28 godotengine/partials/header.htm:22
-msgid "Features"
-msgstr ""
-
-#: godotengine/partials/footer.htm:29 godotengine/partials/header.htm:24
-msgid "Showcase"
-msgstr ""
-
-#: godotengine/partials/footer.htm:30
-msgid "Education"
-msgstr ""
-
-#: godotengine/partials/footer.htm:31
-msgid "License"
-msgstr ""
-
-#: godotengine/partials/footer.htm:32
-msgid "Code of Conduct"
-msgstr ""
-
-#: godotengine/partials/footer.htm:33
-msgid "Privacy Policy"
-msgstr ""
-
-#: godotengine/partials/footer.htm:37
-msgid "Project Team"
-msgstr ""
-
-#: godotengine/partials/footer.htm:38
-msgid "Governance"
-msgstr ""
-
-#: godotengine/partials/footer.htm:39
-msgid "Teams"
-msgstr ""
-
-#: godotengine/partials/footer.htm:41
-msgid "Extra Resources"
-msgstr ""
-
-#: godotengine/partials/footer.htm:42
-msgid "Asset Library"
-msgstr ""
-
-#: godotengine/partials/footer.htm:43
-msgid "Documentation"
-msgstr ""
-
-#: godotengine/partials/footer.htm:44
-msgid "Code Repository"
-msgstr ""
-
-#: godotengine/partials/footer.htm:48
-msgid "Contact us"
-msgstr ""
-
-#: godotengine/partials/header.htm:27
-msgid "Community"
-msgstr ""
-
-#: godotengine/partials/header.htm:28
-msgid "About"
-msgstr ""
-
-#: godotengine/partials/header.htm:29
-msgid "Assets"
-msgstr ""
-
-#: godotengine/partials/header.htm:34
-msgid "Learn"
-msgstr ""
-
-#: godotengine/partials/header.htm:35
-msgid "Contribute"
-msgstr ""
diff --git a/themes/godotengine/i18n/po/messages.pot b/themes/godotengine/i18n/po/messages.pot
deleted file mode 100644
index adc85559cc..0000000000
--- a/themes/godotengine/i18n/po/messages.pot
+++ /dev/null
@@ -1,268 +0,0 @@
-# LANGUAGE translation of the Godot Engine class reference.
-# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2022 Godot Engine contributors (cf. https://github.com/godotengine/godot/blob/master/AUTHORS.md).
-# This file is distributed under the same license as the Godot source code.
-#
-msgid ""
-msgstr ""
-"Content-Transfer-Encoding: 8-bit\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"MIME-Version: 1.0\n"
-"Project-Id-Version: Godot Engine official website\n"
-"Report-Msgid-Bugs-To: https://github.com/godotengine/godot-website\n"
-"X-Domain: default\n"
-
-#: godotengine/layouts/home.htm:246
-msgid "The game engine you've been waiting for."
-msgstr ""
-
-#: godotengine/layouts/home.htm:247
-msgid "The Godot Engine is a free, all-in-one, cross-platform game engine that makes it easy for you to create 2D and 3D games."
-msgstr ""
-
-#: godotengine/layouts/home.htm:251
-#: godotengine/partials/footer.htm:18
-#: godotengine/partials/header.htm:33
-msgid "Download"
-msgstr ""
-
-#: godotengine/layouts/home.htm:253
-#: godotengine/layouts/home.htm:440
-#: godotengine/layouts/home.htm:449
-#: godotengine/layouts/home.htm:458
-#: godotengine/layouts/home.htm:473
-msgid "Learn more"
-msgstr ""
-
-#: godotengine/layouts/home.htm:263
-msgid "Latest news"
-msgstr ""
-
-#: godotengine/layouts/home.htm:300
-msgid "More News"
-msgstr ""
-
-#: godotengine/layouts/home.htm:308
-msgid "A different way to make games"
-msgstr ""
-
-#: godotengine/layouts/home.htm:322
-msgid "Innovative design"
-msgstr ""
-
-#: godotengine/layouts/home.htm:324
-msgid "Godot's Node and Scene system gives you both power and flexibility to create anything."
-msgstr ""
-
-#: godotengine/layouts/home.htm:341
-msgid "Use the right language for the job"
-msgstr ""
-
-#: godotengine/layouts/home.htm:343
-msgid "Keep your code modular with an object-oriented API using Godot's own GDScript, C#, C++, or bring your own using GDNative."
-msgstr ""
-
-#: godotengine/layouts/home.htm:359
-msgid "Dedicated 2D engine"
-msgstr ""
-
-#: godotengine/layouts/home.htm:361
-msgid "Make crisp and performant 2D games with Godot's dedicated 2D rendering engine with real 2D pixel coordinates and 2D nodes."
-msgstr ""
-
-#: godotengine/layouts/home.htm:378
-msgid "Simple and powerful 3D"
-msgstr ""
-
-#: godotengine/layouts/home.htm:380
-msgid "Godot's 3D nodes give you everything you need to build, animate, and render your 3D worlds and characters."
-msgstr ""
-
-#: godotengine/layouts/home.htm:397
-msgid "Release on all platforms"
-msgstr ""
-
-#: godotengine/layouts/home.htm:399
-msgid "Deploy your game on desktop, mobile, and the web in seconds. Godot even supports consoles through third party publishers."
-msgstr ""
-
-#: godotengine/layouts/home.htm:416
-msgid "Open Source"
-msgstr ""
-
-#: godotengine/layouts/home.htm:418
-msgid "Truly open development: anyone who contributes to Godot benefits equally from others' contributions."
-msgstr ""
-
-#: godotengine/layouts/home.htm:427
-msgid "Get involved"
-msgstr ""
-
-#: godotengine/layouts/home.htm:429
-msgid "Join the community and help create a game engine that belongs to everybody."
-msgstr ""
-
-#: godotengine/layouts/home.htm:436
-msgid "Code"
-msgstr ""
-
-#: godotengine/layouts/home.htm:438
-msgid "If you know how to code, you can help by fixing bugs and working with engine contributors towards the implementation of new features."
-msgstr ""
-
-#: godotengine/layouts/home.htm:445
-msgid "Document"
-msgstr ""
-
-#: godotengine/layouts/home.htm:447
-msgid "Documentation quality is essential in a game engine; help make it better by updating the API reference, writing new guides or submitting corrections."
-msgstr ""
-
-#: godotengine/layouts/home.htm:454
-msgid "Report"
-msgstr ""
-
-#: godotengine/layouts/home.htm:456
-msgid "Found a problem with the engine? Don't forget to report it so that developers can track it down."
-msgstr ""
-
-#: godotengine/layouts/home.htm:467
-#: godotengine/partials/footer.htm:34
-#: godotengine/partials/header.htm:37
-msgid "Donate"
-msgstr ""
-
-#: godotengine/layouts/home.htm:470
-msgid "You don't need to be an engine developer to help Godot. Consider donating to speed up development and make Godot  Engine even more awesome!"
-msgstr ""
-
-#: godotengine/layouts/home.htm:479
-msgid "Sponsored by"
-msgstr ""
-
-#: godotengine/partials/footer.htm:9
-msgid "and"
-msgstr ""
-
-#: godotengine/partials/footer.htm:9
-msgid "contributors"
-msgstr ""
-
-#: godotengine/partials/footer.htm:10
-msgid "Godot is a member of the"
-msgstr ""
-
-#: godotengine/partials/footer.htm:11
-msgid "Kindly hosted by"
-msgstr ""
-
-#: godotengine/partials/footer.htm:12
-msgid "Website source code on GitHub"
-msgstr ""
-
-#: godotengine/partials/footer.htm:17
-msgid "Get Godot"
-msgstr ""
-
-#: godotengine/partials/footer.htm:19
-msgid "Web Editor"
-msgstr ""
-
-#: godotengine/partials/footer.htm:21
-msgid "Public Relations"
-msgstr ""
-
-#: godotengine/partials/footer.htm:22
-#: godotengine/partials/header.htm:26
-msgid "News"
-msgstr ""
-
-#: godotengine/partials/footer.htm:23
-msgid "Communities and Events"
-msgstr ""
-
-#: godotengine/partials/footer.htm:24
-msgid "Press Kit"
-msgstr ""
-
-#: godotengine/partials/footer.htm:27
-msgid "About Godot"
-msgstr ""
-
-#: godotengine/partials/footer.htm:28
-#: godotengine/partials/header.htm:22
-msgid "Features"
-msgstr ""
-
-#: godotengine/partials/footer.htm:29
-#: godotengine/partials/header.htm:24
-msgid "Showcase"
-msgstr ""
-
-#: godotengine/partials/footer.htm:30
-msgid "Education"
-msgstr ""
-
-#: godotengine/partials/footer.htm:31
-msgid "License"
-msgstr ""
-
-#: godotengine/partials/footer.htm:32
-msgid "Code of Conduct"
-msgstr ""
-
-#: godotengine/partials/footer.htm:33
-msgid "Privacy Policy"
-msgstr ""
-
-#: godotengine/partials/footer.htm:37
-msgid "Project Team"
-msgstr ""
-
-#: godotengine/partials/footer.htm:38
-msgid "Governance"
-msgstr ""
-
-#: godotengine/partials/footer.htm:39
-msgid "Teams"
-msgstr ""
-
-#: godotengine/partials/footer.htm:41
-msgid "Extra Resources"
-msgstr ""
-
-#: godotengine/partials/footer.htm:42
-msgid "Asset Library"
-msgstr ""
-
-#: godotengine/partials/footer.htm:43
-msgid "Documentation"
-msgstr ""
-
-#: godotengine/partials/footer.htm:44
-msgid "Code Repository"
-msgstr ""
-
-#: godotengine/partials/footer.htm:48
-msgid "Contact us"
-msgstr ""
-
-#: godotengine/partials/header.htm:27
-msgid "Community"
-msgstr ""
-
-#: godotengine/partials/header.htm:28
-msgid "About"
-msgstr ""
-
-#: godotengine/partials/header.htm:29
-msgid "Assets"
-msgstr ""
-
-#: godotengine/partials/header.htm:34
-msgid "Learn"
-msgstr ""
-
-#: godotengine/partials/header.htm:35
-msgid "Contribute"
-msgstr ""
diff --git a/themes/godotengine/i18n/po/messages.ru.po b/themes/godotengine/i18n/po/messages.ru.po
deleted file mode 100644
index 9c1389b3b6..0000000000
--- a/themes/godotengine/i18n/po/messages.ru.po
+++ /dev/null
@@ -1,287 +0,0 @@
-# Russian translation of the Godot Engine class reference.
-# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2022 Godot Engine contributors (cf. https://github.com/godotengine/godot/blob/master/AUTHORS.md).
-# This file is distributed under the same license as the Godot source code.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Godot Engine official website\n"
-"Report-Msgid-Bugs-To: https://github.com/godotengine/godot-website\n"
-"Language: ru\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
-"Plural-Forms: nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % "
-"10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);\n"
-"X-Domain: default\n"
-
-#: godotengine/layouts/home.htm:246
-msgid "The game engine you've been waiting for."
-msgstr ""
-
-#: godotengine/layouts/home.htm:247
-msgid ""
-"The Godot Engine is a free, all-in-one, cross-platform game engine that "
-"makes it easy for you to create 2D and 3D games."
-msgstr ""
-
-#: godotengine/layouts/home.htm:251 godotengine/partials/footer.htm:18
-#: godotengine/partials/header.htm:33
-msgid "Download"
-msgstr ""
-
-#: godotengine/layouts/home.htm:253 godotengine/layouts/home.htm:440
-#: godotengine/layouts/home.htm:449 godotengine/layouts/home.htm:458
-#: godotengine/layouts/home.htm:473
-msgid "Learn more"
-msgstr ""
-
-#: godotengine/layouts/home.htm:263
-msgid "Latest news"
-msgstr ""
-
-#: godotengine/layouts/home.htm:300
-msgid "More News"
-msgstr ""
-
-#: godotengine/layouts/home.htm:308
-msgid "A different way to make games"
-msgstr ""
-
-#: godotengine/layouts/home.htm:322
-msgid "Innovative design"
-msgstr ""
-
-#: godotengine/layouts/home.htm:324
-msgid ""
-"Godot's Node and Scene system gives you both power and flexibility to create "
-"anything."
-msgstr ""
-
-#: godotengine/layouts/home.htm:341
-msgid "Use the right language for the job"
-msgstr ""
-
-#: godotengine/layouts/home.htm:343
-msgid ""
-"Keep your code modular with an object-oriented API using Godot's own "
-"GDScript, C#, C++, or bring your own using GDNative."
-msgstr ""
-
-#: godotengine/layouts/home.htm:359
-msgid "Dedicated 2D engine"
-msgstr ""
-
-#: godotengine/layouts/home.htm:361
-msgid ""
-"Make crisp and performant 2D games with Godot's dedicated 2D rendering "
-"engine with real 2D pixel coordinates and 2D nodes."
-msgstr ""
-
-#: godotengine/layouts/home.htm:378
-msgid "Simple and powerful 3D"
-msgstr ""
-
-#: godotengine/layouts/home.htm:380
-msgid ""
-"Godot's 3D nodes give you everything you need to build, animate, and render "
-"your 3D worlds and characters."
-msgstr ""
-
-#: godotengine/layouts/home.htm:397
-msgid "Release on all platforms"
-msgstr ""
-
-#: godotengine/layouts/home.htm:399
-msgid ""
-"Deploy your game on desktop, mobile, and the web in seconds. Godot even "
-"supports consoles through third party publishers."
-msgstr ""
-
-#: godotengine/layouts/home.htm:416
-msgid "Open Source"
-msgstr ""
-
-#: godotengine/layouts/home.htm:418
-msgid ""
-"Truly open development: anyone who contributes to Godot benefits equally "
-"from others' contributions."
-msgstr ""
-
-#: godotengine/layouts/home.htm:427
-msgid "Get involved"
-msgstr ""
-
-#: godotengine/layouts/home.htm:429
-msgid ""
-"Join the community and help create a game engine that belongs to everybody."
-msgstr ""
-
-#: godotengine/layouts/home.htm:436
-msgid "Code"
-msgstr ""
-
-#: godotengine/layouts/home.htm:438
-msgid ""
-"If you know how to code, you can help by fixing bugs and working with engine "
-"contributors towards the implementation of new features."
-msgstr ""
-
-#: godotengine/layouts/home.htm:445
-msgid "Document"
-msgstr ""
-
-#: godotengine/layouts/home.htm:447
-msgid ""
-"Documentation quality is essential in a game engine; help make it better by "
-"updating the API reference, writing new guides or submitting corrections."
-msgstr ""
-
-#: godotengine/layouts/home.htm:454
-msgid "Report"
-msgstr ""
-
-#: godotengine/layouts/home.htm:456
-msgid ""
-"Found a problem with the engine? Don't forget to report it so that "
-"developers can track it down."
-msgstr ""
-
-#: godotengine/layouts/home.htm:467 godotengine/partials/footer.htm:34
-#: godotengine/partials/header.htm:37
-msgid "Donate"
-msgstr ""
-
-#: godotengine/layouts/home.htm:470
-msgid ""
-"You don't need to be an engine developer to help Godot. Consider donating to "
-"speed up development and make Godot  Engine even more awesome!"
-msgstr ""
-
-#: godotengine/layouts/home.htm:479
-msgid "Sponsored by"
-msgstr ""
-
-#: godotengine/partials/footer.htm:9
-msgid "and"
-msgstr ""
-
-#: godotengine/partials/footer.htm:9
-msgid "contributors"
-msgstr ""
-
-#: godotengine/partials/footer.htm:10
-msgid "Godot is a member of the"
-msgstr ""
-
-#: godotengine/partials/footer.htm:11
-msgid "Kindly hosted by"
-msgstr ""
-
-#: godotengine/partials/footer.htm:12
-msgid "Website source code on GitHub"
-msgstr ""
-
-#: godotengine/partials/footer.htm:17
-msgid "Get Godot"
-msgstr ""
-
-#: godotengine/partials/footer.htm:19
-msgid "Web Editor"
-msgstr ""
-
-#: godotengine/partials/footer.htm:21
-msgid "Public Relations"
-msgstr ""
-
-#: godotengine/partials/footer.htm:22 godotengine/partials/header.htm:26
-msgid "News"
-msgstr ""
-
-#: godotengine/partials/footer.htm:23
-msgid "Communities and Events"
-msgstr ""
-
-#: godotengine/partials/footer.htm:24
-msgid "Press Kit"
-msgstr ""
-
-#: godotengine/partials/footer.htm:27
-msgid "About Godot"
-msgstr ""
-
-#: godotengine/partials/footer.htm:28 godotengine/partials/header.htm:22
-msgid "Features"
-msgstr ""
-
-#: godotengine/partials/footer.htm:29 godotengine/partials/header.htm:24
-msgid "Showcase"
-msgstr ""
-
-#: godotengine/partials/footer.htm:30
-msgid "Education"
-msgstr ""
-
-#: godotengine/partials/footer.htm:31
-msgid "License"
-msgstr ""
-
-#: godotengine/partials/footer.htm:32
-msgid "Code of Conduct"
-msgstr ""
-
-#: godotengine/partials/footer.htm:33
-msgid "Privacy Policy"
-msgstr ""
-
-#: godotengine/partials/footer.htm:37
-msgid "Project Team"
-msgstr ""
-
-#: godotengine/partials/footer.htm:38
-msgid "Governance"
-msgstr ""
-
-#: godotengine/partials/footer.htm:39
-msgid "Teams"
-msgstr ""
-
-#: godotengine/partials/footer.htm:41
-msgid "Extra Resources"
-msgstr ""
-
-#: godotengine/partials/footer.htm:42
-msgid "Asset Library"
-msgstr ""
-
-#: godotengine/partials/footer.htm:43
-msgid "Documentation"
-msgstr ""
-
-#: godotengine/partials/footer.htm:44
-msgid "Code Repository"
-msgstr ""
-
-#: godotengine/partials/footer.htm:48
-msgid "Contact us"
-msgstr ""
-
-#: godotengine/partials/header.htm:27
-msgid "Community"
-msgstr ""
-
-#: godotengine/partials/header.htm:28
-msgid "About"
-msgstr ""
-
-#: godotengine/partials/header.htm:29
-msgid "Assets"
-msgstr ""
-
-#: godotengine/partials/header.htm:34
-msgid "Learn"
-msgstr ""
-
-#: godotengine/partials/header.htm:35
-msgid "Contribute"
-msgstr ""
diff --git a/themes/godotengine/layouts/article.htm b/themes/godotengine/layouts/article.htm
deleted file mode 100644
index b22d6472f0..0000000000
--- a/themes/godotengine/layouts/article.htm
+++ /dev/null
@@ -1,154 +0,0 @@
-description = "Article layout"
-
-[blogPost]
-slug = "{{ :slug }}"
-categoryPage = "article"
-==
-{##}
-
-
-{% partial "head" %}
-{% partial "header" %}
-
-
-
-
-
-
-
-
- {# Lightbox elements and classes are added to all images via JavaScript. #}
-
-
-
- {{ post.featured_images[0].title }}
- {{ post.featured_images[0].description }}
-
-
-
-
-
- {% if not post.published or post.published_at > date() %}
- [UNPUBLISHED]
- {% endif %}
- {{ post.title }}
-
- released {{ stable_version_date | date('j F Y') }}
-
-
- You can find previous releases on the
- download repository.
- Slow download? Try the mirror on GitHub Releases.
-
- Also available on digital distribution platforms:
-
- Godot's development is open. This means that you can
- fix or improve any part of the engine yourself and choose
- whether to contribute it back or keep it private.
-
-
- New features are always available to use and test, without the need of
- having to wait for the next major release. Compiling Godot from source
- is very easy and the process is well-documented for each platform.
- To obtain the source code, please visit the
- GitHub project page.
-
- {{ TR('Documentation quality is essential in a game engine; help make it better by updating the API reference, writing new guides or submitting corrections.') }}
-
- {{ TR("You don't need to be an engine developer to help Godot. Consider donating to speed up development and make Godot  Engine even more awesome!") }}
-
-
- {# The category slug is an empty string if the legacy news URL (`/news`) is browsed to. #}
- {% if blogCategories.currentCategorySlug == "default" or blogCategories.currentCategorySlug == "" %}
-
All posts
- {% else %}
-
Posts from category: {{ blogCategories.currentCategorySlug|capitalize }}
- {% endif %}
-
- {% partial "pagination" %}
-
-
- {% set posts = blogPosts.posts %}
- {% for post in posts %}
-
-
-
-
- {% for platform in placeholder('platforms') | replace({' ': ''}) | split(',') %}
-
- {% if platform is same as('windows') %} {% set platformName = 'Windows' %} {% endif %}
- {% if platform is same as('macos') %} {% set platformName = 'macOS' %} {% endif %}
- {% if platform is same as('linux') %} {% set platformName = 'Linux' %} {% endif %}
- {% if platform is same as('android') %} {% set platformName = 'Android' %} {% endif %}
- {% if platform is same as('ios') %} {% set platformName = 'iOS' %} {% endif %}
- {% if platform is same as('html5') %} {% set platformName = 'HTML5' %} {% endif %}
- {% if platform is same as('switch') %} {% set platformName = 'Nintendo Switch' %} {% endif %}
- {% if platform is same as('playstation') %} {% set platformName = 'PlayStation' %} {% endif %}
- {% if platform is same as('xbox') %} {% set platformName = 'Xbox' %} {% endif %}
-
-
- {% endfor %}
-
-
-{% partial "footer" %}
-
-
diff --git a/themes/godotengine/pages/article.htm b/themes/godotengine/pages/article.htm
deleted file mode 100644
index 4dd1106486..0000000000
--- a/themes/godotengine/pages/article.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-title = "Article"
-url = "/article/:slug"
-layout = "article"
-description = "Article page"
-is_hidden = 0
-==
\ No newline at end of file
diff --git a/themes/godotengine/pages/code-of-conduct.htm b/themes/godotengine/pages/code-of-conduct.htm
deleted file mode 100644
index 64cd8c6544..0000000000
--- a/themes/godotengine/pages/code-of-conduct.htm
+++ /dev/null
@@ -1,112 +0,0 @@
-title = "Code of Conduct"
-url = "/code-of-conduct"
-layout = "more"
-description = "Godot community's Code of Conduct"
-is_hidden = 0
-==
-{##}
-{% put title %} Code of Conduct {% endput %}
-
-
-
- The Godot project is an international community open to everyone without discrimination. We want this community to be a safe and welcoming place for both newcomers and current members. Everyone should feel comfortable and accepted regardless of their personal background and affiliation to the Godot project.
-
-
-
Philosophy
-
-
- In the Godot community, participants from all over the world come together to create a Free and Open Source game engine. This is made possible by the support, hard work, and enthusiasm of thousands of people who collaborate towards the common goal of creating great technology and games. Cooperation at such a scale requires common guidelines to ensure a positive and inspiring atmosphere in the community.
-
-
-
- This is why we have this Code of Conduct: it explains the type of community we want to have. The rules below are not applied to all interactions with a simple matching algorithm. Human interactions happen in context and are complex. Perceived violations are evaluated by real humans who will try to interpret the interactions and the rules with kindness. Accordingly, there is no need to hypothesize on how these rules would affect normal interactions. Be reasonable, the Code of Conduct team surely will be as well.
-
-
-
Application
-
-
- This Code of Conduct applies to all users and contributors who engage with the Godot project and its community platforms, both online and at Godot-related events.
-
-
-
Expectations
-
-
-
Politeness is expected at all times. Be kind and courteous.
-
Always assume positive intent from others. Be aware that differences in culture and English proficiency make written communication more difficult than face-to-face communication and that your interpretation of messages may not be the one the author intended. Conversely, if someone asks you to rephrase something you said, be ready to do so without feeling judged.
-
Feedback is always welcome but keep your criticism constructive. We encourage you to open discussions, proposals, issues, and bug reports. Use the community platforms to discuss improvements, not to vent out frustration. Similarly, when other users offer you feedback please accept it gracefully.
-
-
-
Restricted conduct
-
-
- Participating in restricted conduct will lead to a warning from community moderators and/or the Code of Conduct team and may lead to exclusion from the community in the form of a ban from one or all platforms.
-
-
-
-
The Godot project is committed to providing a friendly and safe environment for everyone, regardless of level of experience, gender identity and expression, sexual orientation, disability, physical appearance, body size, race, ethnicity, language proficiency, age, political orientation, nationality, religion, or other similar characteristics. We do not tolerate harassment or discrimination of participants in any form.
-
In particular, we strive to be welcoming to all industry minorities and to ensure that they can take a more active role in the community and the project. Targeted harassment of minorities is unacceptable.
-
As a community developed project, we strive for consensus among contributors before moving forward with a proposed feature. If there is not enough support for your ideas, please don't continue insisting or trying to force others into supporting your point. Features are not accepted through a voting process, so piling onto a contentious feature proposal is not acceptable.
-
Aggressive or offensive behavior is not acceptable.
-
You will be excluded from participating in the community if you insult, demean, harass, intentionally make others uncomfortable by any means, or participate in any other hateful conduct, either publicly or privately.
-
Likewise, any spamming, trolling, flaming, baiting, or other attention-stealing behavior is not welcome and will result in exclusion from the community.
-
Any form of retaliation against a participant who contacts the Code of Conduct team is completely unacceptable, regardless of the outcome of the complaint. Any such behavior will result in exclusion from the community.
-
For certainty, any conduct which could reasonably be considered inappropriate in a professional setting is not 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)
-
diff --git a/themes/godotengine/pages/contact.htm b/themes/godotengine/pages/contact.htm
deleted file mode 100644
index 079c53c03c..0000000000
--- a/themes/godotengine/pages/contact.htm
+++ /dev/null
@@ -1,315 +0,0 @@
-title = "Contact"
-url = "/contact"
-layout = "more"
-description = "Contact information for Godot's development team"
-is_hidden = 0
-==
-{##}
-{% put title %} Contact us {% endput %}
-
-
-
-
Support
-
- If you have a problem learning Godot or need help, please first
- use the various community channels.
- Godot developers are busy working in making Godot better, so they can't
- always answer questions. They will, however, be glad to assist you if
- you can't get an answer from conventional means.
-
-
-
Commercial support
-
- While we don't have a formal structure for offering commercial
- support, many Godot developers can already help you, work per hour, or
- relocate to your company. For such inquiries, contact
- support@godotengine.org. Let us know about your needs and we'll try
- to find the right person for you.
-
-
-
Reporting security vulnerabilities
-
- If you've found a security vulnerability in Godot, please do not create an
- issue on the GitHub issue tracker as issues are visible publicly.
-
- If you would like your Godot Q&A
- or Asset Library account
- to be removed
- along with all its associated data, follow the instructions in the
- privacy policy.
-
-
- Note that Godot Forums accounts are
- managed by a third party. Therefore, account removal requests for the Godot Forums
- must be directed to its administrators, not to us:
- Godot Forums Contact
-
-
-
General inquiries
-
- For other inquiries such as business, education, non-profit, promotion, etc.
- Contact contact@godotengine.org.
-
-
-
-
-
Project Leadership Committee (PLC)
-
- Information about the Project Leadership Committee was moved to the
- Governance page.
-
-
-
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:
-
-
Juan Linietsky (reduz)
-
-
-
Project Manager:
-
-
Rémi Verschelde (akien-mga)
-
-
-
Developers:
-
-
Aaron Franke (aaronfranke)
-
Aaron Record (LightningAA)
-
Alexander Holland (AlexHolly)
-
Alexey Khoroshavin (allkhor)
-
Alket Rexhepi (alketii)
-
Andrea Catania (AndreaCatania)
-
Andrii Doroshenko (Xrayez)
-
Andy Moss (MillionOstrich)
-
Angad Kambli (angad-k)
-
Anilforextra (AnilBK)
-
Anish Bhobe (KidRigger)
-
Anton Yabchinskiy (a12n)
-
Anutrix
-
Aren Villanueva (kurikaesu)
-
Ariel Manzur (punto-)
-
Bartłomiej T. Listwon (Listwon)
-
Bastiaan Olij (BastiaanOlij)
-
Ben Brookshire (sheepandshepherd)
-
Benjamin Larsson (Nallebeorn)
-
Bernhard Liebl (poke1024)
-
Bhuvan Vemula (Bhu1-V)
-
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)
-
Chris Bradfield (cbscribe)
-
Clay John (clayjohn)
-
ConteZero
-
Dana Olson (adolson)
-
Daniel J. Ramirez (djrm)
-
Daniel Rakos (aqnuep)
-
Danil Alexeev (dalexeev)
-
dankan1890
-
David Cambré (Gallilus)
-
David Sichma (DavidSichma)
-
David Snopek (dsnopek)
-
Dharkael (lupoDharkael)
-
Dmitry Koteroff (Krakean)
-
Dominik Jasiński (dreamsComeTrue)
-
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)
-
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)
- Godot Engine is a not-for-profit, community-driven free and open source project.
- It is legally represented by the Software Freedom Conservancy,
- a USA-based charity that helps promote, improve, develop, and defend FLOSS projects.
-
-{% endput %}
-
-
User and company donations
-
- The project is sustained by the free time of its contributors and donations from the community.
- All our donations are processed by the Software Freedom Conservancy.
-
-
-
We use donations for:
-
-
Hiring developers so that they can work part-time or full-time on Godot Engine, making the project progress faster.
-
Hiring artists to create high quality demo artwork under a permissive license.
-
Purchasing hardware required to develop Godot.
-
Paying for hosting of some web services.
-
Covering travel costs to some important industry events (e.g. GDC, Gamescom).
-
Producing merchandise for events (T-shirts, banners, stickers, etc.).
-
-
-
- You can donate monthly via Patreon,
- or directly via PayPal.
-
-
-
Patreon
-
-
- Patreon is a platform for creators to crowdfund their work via monthly donations. Godot Engine launched a Patreon page with the aim to collect enough money each month to hire some of its developers part-time or full-time, starting with its lead developer Juan Linietsky
-
-
-
-
-
- The Patreon donations are processed by Conservancy, which then uses them to hire developers based on contracts made transparent to all supporters.
-
-
-
PayPal direct donation
-
Donations can be made to our PayPal account managed by Conservancy:
-
-
-(If you cannot see the PayPal button, disable your ad blocker temporarily.)
diff --git a/themes/godotengine/pages/download.htm b/themes/godotengine/pages/download.htm
deleted file mode 100644
index d0331ea95e..0000000000
--- a/themes/godotengine/pages/download.htm
+++ /dev/null
@@ -1,25 +0,0 @@
-title = "Download"
-url = "/download/:platform?linux"
-layout = "download"
-description = "Find the official Godot editor and export template downloads here."
-is_hidden = 0
-==
-is('Linux')) {
- $current_os = 'linux';
- } else if ($agent->is('OS X')) {
- $current_os = 'osx';
- } else if ($agent->is('Android')) {
- $current_os = 'android';
- }
-
- return Redirect::to('/download/' . $current_os);
-}
-?>
-==
diff --git a/themes/godotengine/pages/download/android.htm b/themes/godotengine/pages/download/android.htm
deleted file mode 100644
index 2ceff2a036..0000000000
--- a/themes/godotengine/pages/download/android.htm
+++ /dev/null
@@ -1,41 +0,0 @@
-title = "Download | Android"
-url = "/download/android"
-layout = "download"
-description = "Download Godot for Android on this page."
-is_hidden = 0
-==
-
-==
-{##}
-{% set stable_version = include('version', {'key': 'identifier'}) %}
-{% put downloads %}
-
-{% endput %}
-
-{% put mono_downloads %}
- C# support is not available in the Android editor.
-{% endput %}
-
-{% put instructions %}
-
- To install the APK file, allow your current browser to install APKs from
- unknown sources in your device's settings.
-
-
- The Android editor is currently in an experimental
- stage. The UI has not been adapted for touch screens yet; using a hardware
- keyboard and mouse is strongly recommended.
-
-
- Compared to using the editor on desktop platforms, the experience may be frustrating,
- especially if you do not use a hardware keyboard and mouse. See the list of
- known
- issues affecting the Android editor for more information.
-
-{% endput %}
diff --git a/themes/godotengine/pages/download/linux.htm b/themes/godotengine/pages/download/linux.htm
deleted file mode 100644
index 2472325601..0000000000
--- a/themes/godotengine/pages/download/linux.htm
+++ /dev/null
@@ -1,42 +0,0 @@
-title = "Download | Linux"
-url = "/download/linux"
-layout = "download"
-description = "Download Godot for Linux on this page."
-is_hidden = 0
-==
-
-==
-{##}
-{% set stable_version = include('version', {'key': 'identifier'}) %}
-{% put downloads %}
-
- Since Godot 3.3, Godot is code-signed and notarized for macOS. This means
- it should run out of the box even if Gatekeeper is enabled on the system
- (which is the default).
-
-
- For older Godot versions, see the last section of
- this page
- for instructions on allowing Godot to run anyway. Alternatively, you can install
- Godot from Steam
- and switch to an older branch in the Steam application settings to work around this.
-
Note: The 32-bit Mono binaries do not run on 64-bit Windows systems at the time being. Make sure to export 64-bit Mono binaries for your 64-bit target platforms.
- Godot is already being used in many classrooms across the world. If you are interested in including it in your
- curriculum, you can find answers to some of the most common questions on this page.
-
-{% endput %}
-
-
-
-
-
Can I teach Godot in my classroom?
-
Godot Engine is free and open source
- software released under the permissive MIT license.
- You can use Godot in your classroom without any restrictions and with zero licensing
- costs.
-
Will the Godot project sign a services agreement provided by my institution?
-
The Godot Engine project is unable to accept any terms and conditions outside of the MIT license, nor will it
- provide warranties or representations about the Godot Engine outside those of the MIT license.
-
As a free and open source project, Godot is not backed by a corporation or any individual. Accordingly, it doesn't
- have the legal capacity to enter into agreements, even if such agreements did not conflict with the MIT license.
-
-
-
-
What data does the Godot Engine collect from users?
-
When you use the Asset Library in the Godot Engine application, HTTPS requests are made to the Asset Library
- website, and will contain: Godot Engine version, search query, selected assets, and the user's IP address. The Asset
- Library
- processes this data without storing it, but our TuxFamily hosting's HTTP server may log these requests. Such logs
- are subject to TuxFamily's privacy policy.
- This is the only personal data collected by the Godot Engine application.
-
To be clear, the Godot Engine executable does not ask for or otherwise collect personally identifying information
- from
- its users. The network requests include the bare minimum amount of information required to do an online search and
- transmit substantially less information than most internet browsing will.
I don't have permission to install software on my devices. How can I use Godot?
-
You can use the Godot Engine on the browser without the need to install it on your device. This is useful if you
- are restricted by your organization or limited by the device being used and you can't install software locally
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.
- We're sorry, but an internal server error occurred when trying to display this page.
- Go to the homepage
-
-
-
diff --git a/themes/godotengine/pages/events.htm b/themes/godotengine/pages/events.htm
deleted file mode 100644
index 88688f28b6..0000000000
--- a/themes/godotengine/pages/events.htm
+++ /dev/null
@@ -1,514 +0,0 @@
-title = "Events"
-url = "/events"
-layout = "events"
-description = "This page lists the upcoming and previous Godot community events."
-is_hidden = 0
-==
-{##}
-{% put head_text %}
-
- You can meet Godot developers at various professional and casual events.
- Sometimes our team also organizes meetups and conferences.
-
-{% endput %}
-
-
Upcoming events
-
-
-
-
-
-
2023
-
-
-
- 20-24 March
- Godot @ GDC
- San Francisco, California
-
-
-
-
-
-
-
-
-
Godot @ GDC 2023
-
-
We are excited to announce that the Godot Engine will attend the 2023 Game Developers Conference (GDC), on March 20-24.
-
-
W4 Games is sponsoring us this year, thanks to them, the Godot Engine will have its own booth for the first time. We got in touch and teamed up with a selection of Godot developers from all over the world to present their high-profile games at our booth, and share their Godot experience with visitors. This is an excellent opportunity if you want to meet the people behind the engine, or other like-minded folks, so come to hang out and play some of the fantastic games.
-
-
You might even get some free swag ;)
-
-
To visit the conference you must purchase a visitor pass. Access to the show floor is available starting with the Expo Pass. Keep in mind that pass prices increase over time. Check the GDC website for more information.
The two days before Godot User Meeting 2022, we organize what we call the Godot Sprint, with the intent for contributors to meet IRL and get some work done! This contributor sprint will be primarily intended for existing engine and documentation contributors, so that we can work on current topics together, review Pull Requests, discuss the roadmap, etc. We will also welcome users who aren't contributors yet but would like to get involved, be it with C++ engine contributions, documentation writing or the creation of other teaching materials (demos, courses, etc.). More information here
-
-
Entrance will be free.
-
-
-
Date: Thu 2 June & Fri 3 June 2022, 10 am - 19 pm both days
Registration:Mandatory. Please fill this form ASAP so that we know who will be there and can organize the event accordingly.
-
-
-
-
-
-
Godot User Meeting 2022
-
-
-
-
Taking the opportunity that many contributors gather for the Godot Sprint, we are organizing a Godot User Meeting. It will be great opportunity to meet some engine developers and other users, bring a demo of your game and attend a couple of Godot-related talks. More information here
The two days before FOSDEM 2020 and GodotCon, we organize what we call the Godot Sprint, with the intent for contributors to meet IRL and get some work done! This contributor sprint will be primarily intended for existing engine and documentation contributors, so that we can work on current topics together, review Pull Requests, discuss the roadmap, etc. We will also welcome users who aren't contributors yet but would like to get involved, be it with C++ engine contributions, documentation writing or the creation of other teaching materials (demos, courses, etc.).
-
-
Entrance will be free.
-
-
-
Date: Thu 30 January & Fri 31 January 2020, 9 am - 6 pm both days
FOSDEM stands for Free and Open Source Developers' European Meeting and is held every year in February at the Université Libre de Bruxelles (ULB) in Brussels, Belgium. It is arguably the biggest European event about free and open source software, with free entry and thousands of developers and users of various projects attending.
-
-
-
Date: Sat 1 & Sun 2 February 2020
-
Location: Université Libre de Bruxelles (ULB), Brussels, Belgium (OpenStreetMap)
-
Entrance fee: Free
-
Registration: No registration needed, you can just show up at our stand and say hello :)
-
-
-
We will have a Godot stand at the event, with many engine contributors and users available to discuss with visitors and showcase the engine.
- We'll also have Godot T-shirts to sell, and stickers and metal pins to give away.
-
-
Some of us also organize the Game Development devroom, where talks will be given on Sat 1 February on various topics related to both game development and Free and Open Source Software. Some talks will be about Godot, but many others will cover different technology stacks and projects.
-
-
Refer to the FOSDEM 2020 website for more information on which projects will be there, as well as talks that you might be interested in. (Note: The final schedule for FOSDEM usually arrives quite late, so be patient. :))
-
-
-
-
-
GodotCon Brussels 2020
-
-
-
-
Like the past few years years, we're taking the opportunity that many community members flock to Brussels for FOSDEM 2020 to organize our own Godot Conference right after it. There will be talks and workshops given by engine users and developers, and plenty of time to discuss with each other and play Godot-made games.
-
-
A Call for Proposals has been posted, and speakers will be announced in January.
-
-
This is an event for you (and us) to meet together and get to strengthen the existing bonds between Godot contributors and users. Everyone is welcome to join, and the entrance will be free. Even if you aren't familiar with Godot Engine yet, this can be a nice opportunity to discover a great game engine and an even greater community!
The two days before FOSDEM and GodotCon, we organize our first Godot Sprint, with the intent for contributors to meet IRL and get some work done! This contributor sprint will be primarily intended for existing engine and documentation contributors, so that we can work on current topics together, review Pull Requests, discuss the roadmap, etc. We will also welcome users who aren't contributors yet but would like to get involved, be it with C++ engine contributions, documentation writing or the creation of other teaching materials (demos, courses, etc.).
-
-
Entrance will be free.
-
-
-
Date: Thu 31 January & Fri 1 February 2019, 9 am - 6 pm both days
FOSDEM stands for Free and Open Source Developers' European Meeting and is held every year in February at the Université Libre de Bruxelles (ULB) in Brussels, Belgium. It is arguably the biggest European event about free and open source software, with free entry and thousands of developers and users of various projects attending.
-
-
-
Date: 2 & 3 February 2019
-
Location: Université Libre de Bruxelles (ULB), Brussels, Belgium (OpenStreetMap)
-
Entrance fee: Free
-
Registration: No registration needed, you can just show up at our stand and say hello :)
-
-
-
We will have a Godot stand at the event, with many engine contributors and users available to discuss with visitors and showcase the engine.
- We'll also have Godot T-shirts to sell and stickers to give away.
-
-
We also proposed some talks, but we're awaiting a confirmation from FOSDEM organizers. We'll update this page as soon as we know more.
-
-
Refer to the FOSDEM 2019 website for more information on which projects will be there, as well as talks that you might be interested in. (Note: The final schedule for FOSDEM usually arrives quite late, so be patient. :))
-
-
-
-
-
GodotCon Brussels 2019
-
-
-
-
Like the past two years, we're taking the opportunity that many community members flock to Brussels for FOSDEM 2019 to organize our own Godot Conference right after it. There will be talks and workshops given by engine users and developers, and plenty of time to discuss with each other and play Godot-made games.
-
-
A Call for Proposals will be posted soon, and speakers will be announced in late December or January.
-
-
This is an event for you (and us) to meet together and get to strengthen the existing bonds between Godot contributors and users. Everyone is welcome to join, and the entrance will be free. Even if you aren't familiar with Godot Engine yet, this can be a nice opportunity to discover a great game engine and an even greater community!
FOSDEM stands for Free and Open Source Developers' European Meeting and is held every year in February at the Université Libre de Bruxelles (ULB) in Brussels, Belgium.
- It is arguably the biggest European event about free and open source software, with free entry and thousands of developers and users of various projects attending.
-
-
-
Date: 3 & 4 February 2018
-
Location: Université Libre de Bruxelles (ULB), Brussels, Belgium (OpenStreetMap)
Like last year, we will have a Godot Engine stand. It will be located in Building K (Campus plan, OpenStreetMap).
- We invite all Godot users and contributors from Europe and beyond to join us there and help us man the stand, distribute goodies and talk to the other visitors about our engine.
-
-
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.
-
-
Our lead dev Juan Linietsky (from Buenos Aires) will also be present, so don't miss this opportunity to meet him in Europe :)
-
-
-
-
-
-
GodotCon 2018
-
-
-
-
After last year's big success, we organize another GodotCon right after FOSDEM, and still in Brussels so that you can attend both events at once.
- GodotCon is the yearly meetup of the Godot Engine community, open to all interested users and contributions, whether complete beginners/new users or core developers.
-
-
The entrance is free, and we will have various talks and workshops prepared by contributors and users of the engine, as well as different related activities.
- The main point is to all meet together with our laptops and hack at some Godot games or the engine itself, while getting to know the community in person and learn from experienced users.
-
-
Our lead developer Juan Linietsky will come from Argentina for the event, so it's a great opportunity for Godot users in Europe to meet him!
We are organising a Godot-focused event in Paris, France, on Saturday 22 April 2017. Many Godot developers and users will be there, including our lead dev Juan Linietsky (reduz).
- The event will take place at the Mozilla Space in Paris (address below), from 9 am up to approximately 7 pm (no big keynote should be after 5 pm though).
-
-
The event will be partly talks from Godot developers about their current projects, engine features, etc., as well as workshops. Both curious beginners and experienced developers should find something interesting to work on, be it discovering the engine and make a simple game or hacking at the engine code and developing new features.
- Call for papers coming soon™ on the blog. Expect at least talks or workshop led by key developers such as Juan Linietsky (reduz), Rémi Verschelde (Akien) and others.
-
-
-
-
-
-
-
FOSDEM 2017
-
-
FOSDEM stands for Free and Open Source Developers' European Meeting and is held every year in February at the Université Libre de Bruxelles (ULB) in Brussels, Belgium.
- It is arguably the biggest European event about free and open source software, with free entry and thousands of developers and users of various projects attending.
-
-
-
Date: Feb 4 and 5
-
Location: Université Libre de Bruxelles (ULB), Brussels, Belgium (OpenStreetMap)
This year will be Godot's first official participation with a Godot Engine stand. It will be located in Building H (Campus plan).
- We invite all Godot users and contributors from Europe and beyond to join us there and help us man the stand, distribute goodies and talk to the other visitors about our engine.
-
-
Want to help us with the stand, designing or ordering goodies and stand material (table cloth, kakemono, etc.)? Get in touch with us on one of the community channels (especially IRC ;)).
-
-
Escoria talk in the Open Game Development track
-
-
Julian Murgia (StraToN) and Rémi Verschelde (Akien) will be giving a 25 min talk about Godot and particularly Escoria, the Godot-based open source framework for point'n'click adventure games that was released recently. For those who can't attend, the talk should be recorded by FOSDEM volunteers and available online as soon as possible (can take a few weeks though).
-
-
-
Date: Sunday, Feb 5 @ 16:30
-
Location: Room AW1.126 (come early, places are limited)
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.
-
-
-
-
-
-
GodotCon Europe 2017
-
-
Behind the pompous name of GodotCon (short for Godot Convention), you will mostly find the first official IRL (*in real life*) meetup of the Godot community.
- We decided to organize such an event right after the FOSDEM so that people coming to Brussels for the former can also stay a bit longer for GodotCon.
-
-
The entrance will of course be free, and the form that the event will take exactly will mostly depend upon the users and contributors who will be motivated in helping organizing it.
- The base plan is: we have a venue in Brussels, do Godot stuff there, and enjoy ourselves.
There is no precise plan as of yet, but various things have been mentioned during community discussions.
- Extending upon the above base plan, the idea is that some of us organize talks, crash courses, workshops, etc. for all to benefit from and learn together.
- The topics will include some advanced tips and tricks about using the engine, presentation and knowhow transfer from various published or WIP projects, etc.
- If there is interest, we also consider having hacking sessions regarding developing the engine or writing documentation, so that we can strengthen the community of co-developers.
-
-
More details on all this in the coming weeks, but the TL;DR is: It will be cool and will be tailor-made for the attendants, so join us!
-
-
-
-
diff --git a/themes/godotengine/pages/fbx-import.htm b/themes/godotengine/pages/fbx-import.htm
deleted file mode 100644
index 8dae33f280..0000000000
--- a/themes/godotengine/pages/fbx-import.htm
+++ /dev/null
@@ -1,107 +0,0 @@
-title = "FBX Import"
-url = "/fbx-import"
-layout = "more-standalone"
-description = "How to enable importing of FBX scenes in Godot"
-is_hidden = 0
-==
-{##}
-{% put title %} FBX support in Godot {% endput %}
-
-
- The information on this page only pertains to Godot 4.0 and later. Godot 3.x does not have support for using FBX2glTF directly, but you can use it as a command line tool to convert scenes before placing the converted glTF file in the Godot project folder.
-
-
-
- FBX is a popular proprietary
- 3D interchange format from Autodesk. It is often used in game engines to allow
- importing 3D scenes created using software such as Blender, Maya or 3DS Max.
-
-
- Godot does not include an FBX importer in its editor code, as doing so would
- require linking against a proprietary SDK. Relying on reverse engineering was
- attempted in the past,
- but it turned out to be too unreliable.
-
-
- However, thanks to a tool known as FBX2glTF, it is still possible to import
- FBX scenes to Godot in a transparent manner. But first…
-
-
-
Consider using glTF 2.0 instead
-
- glTF is an open 3D
- interchange format. Unlike FBX, it has many open source implementations
- available and is supported out of the box in Godot.
-
-
- We recommend using glTF over FBX for several reasons:
-
-
glTF is better supported in open source 3D software such as Blender.
-
- glTF import is integrated in the Godot editor. This way, team members
- working on your project don't need to install external tools before they
- can start working on the project.
-
-
- If you use headless exporting (continuous integration) for your project,
- you don't need to install external tools before you can export the
- project.
-
-
- If you use the Android or HTML5 editor, you can import glTF scenes, but
- not FBX scenes as these platforms don't allow running arbitrary external
- executables.
-
-
- If you use a device on a non-x86 architecture, you can import glTF scenes,
- but not FBX scenes as the Autodesk FBX SDK is only available for x86
- architectures.
-
-
- glTF is an open standard. Unlike FBX, it doesn't force other software to
- link against a proprietary SDK to reliably import 3D scenes.
-
- The macOS x86_64 binary can be used with an ARM Godot editor binary. In this
- 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.
-
diff --git a/themes/godotengine/pages/features.htm b/themes/godotengine/pages/features.htm
deleted file mode 100644
index 6b83ad31ce..0000000000
--- a/themes/godotengine/pages/features.htm
+++ /dev/null
@@ -1,294 +0,0 @@
-title = "Features"
-url = "/features"
-layout = "features"
-description = "Discover what Godot has to offer for 2D and 3D game development."
-is_hidden = 0
-==
-{##}
-{% put title %} Features {% endput %}
-
-
-
-
-
-
-
-
-
-
-
Innovative design
-
- Create games with ease using Godot's unique approach to game development.
-
-
Nodes for all your needs. Godot comes with hundreds of built-in nodes that make game design a breeze. You can also create your own for custom behaviors, editors and much more.
-
Flexible scene system. Create node compositions with support for instancing and inheritance.
-
Visual editor with all the tools you need packed into a beautiful and uncluttered context-sensitive UI.
-
Friendly content creation pipeline for artists, level designers, animators and everyone in between.
-
Persistent live editing where changes are not lost after stopping the game. It even works on mobile devices!
-
Create your own custom tools with ease using the incredible tool system.
-
- The physically-based renderer comes with a ton of features that will make your games look incredible.
-
-
-
-
-
-
Innovative architecture that combines the best of forward rendering with the efficiency of deferred rendering.
-
Physically-based rendering with full MSAA and FXAA support.
-
Full principled BSDF with subsurface scattering, reflection, refraction, anisotropy, clearcoat, transmittance and more.
-
-
-
Global illumination for real-time gorgeous graphics. It can also be pre-baked for beautiful results even on low-end devices.
-
Mid- and Post-processing effects including a tonemapper that supports HDR, multiple standard curves and auto exposure, screen-space reflections, fog, bloom, depth of field and much more.
-
Easy-to-use shader language based on GLSL, with built-in editor and code completion.
- Additional languages
- with community-provided support for Rust, Nim, D and other languages.
-
-
Built-in editor with syntax highlighting, real-time parser and code completion.
-
Integrated documentation. Browse and search the whole API offline, without leaving the editor.
-
-
-
-
-
-
-
Debug & Optimize
-
- Solve bugs and performance bottlenecks with the
- built-in debugger.
-
-
-
Explore and modify your project while it's running, even on mobile devices.
-
Keeps changes by default after closing the project.
-
Built-in profiler with graph plotting and time seeking.
-
Video memory debugger.
-
Error logger with full stack traces.
-
Network profiler with per-node remote call tracking and bandwidth usage estimation.
-
-
-
-
-
-
-
-
-
Multi-platform editor
- Create games on any desktop OS and Android.
-
-
Works on Windows, macOS, Linux, *BSD and Android (experimental). The editor runs in 32-bit and 64-bit on all platforms, with native Apple Silicon support.
-
Small download (around 35 MB), and you are ready to go.
-
Easy to compile on any platform (no dependency hell).
-
-
-
-
-
-
-
Multi-platform deploy
- Deploy games everywhere!
-
-
Export to desktop platforms: Windows, macOS, Linux, UWP, and *BSD.
-
Export to mobile platforms: iOS and Android.
-
- Consoles: Nintendo Switch, PlayStation 4, Xbox One via third-party providers
- (read more).
-
-
Export to the web using HTML5 and WebAssembly.
-
One-click deploy & export to most platforms. Easily create custom builds as well.
-
-
-
-
-
-
-
-
-
XR support
-
Godot makes cross-platform Augmented and Virtual Reality development easy.
-
-
-
Works with many headsets including the Meta Quest, Valve Index, HTC Vive, Oculus Rift, all Microsoft MR headsets, and many more.
-
Support for OpenXR, an emerging open standard that most hardware vendors are moving to.
-
Plugins give access to various proprietary SDKs, such as OpenVR (SteamVR) and the legacy Oculus SDKs.
-
WebXR can deliver AR/VR experiences via a web browser.
Godot is designed from the ground up for smooth teamwork.
-
-
-
Friendly filesystem usage that works great with version control systems like Git, Subversion, Mercurial, you name it.
-
Scene instancing makes teamwork a breeze. Every team member can focus on their own scene, be it a character, level, etc., and edit without stepping on each other's toes.
- On its own, Godot has no legal status. Godot exists as a member project of
- the Software Freedom Conservancy
- (SFC). The SFC provides a home and infrastructure for Free, Libre, and Open
- Source Software (FLOSS) projects by aggregating the work necessary for
- running a non-profit organization including accounting and legal compliance.
- For more information about what the SFC provides, please refer to their website.
-
-
- As no company is behind Godot, it can't be sold or purchased by another company.
-
-
- While the SFC provides the corporate infrastructure to support the Godot
- project, it doesn't make decisions for the project. Instead it provides a
- set of rules for how the member projects operate and provides financial
- oversight to make sure that money is spent in a responsible way that
- advances the project and fits with Conservancy's 501(c)(3) mission to
- promote, advance, and defend software freedom. Each member project has a
- Project Leadership Committee that instructs the SFC on how to spend that
- project's funding.
-
-
-
The Project Leadership Committee
-
- The Project Leadership Committee (PLC) is responsible for making all funding
- and institutional decisions for the Godot project. The PLC is made of the
- project founders (Ariel Manzur and Juan Linietsky) as well as trusted
- contributors and community members. As spaces open up on the PLC, current
- members may reach out to contributors and community members with a proven
- track record and deep understanding of the project and ask them to join.
-
-
- The PLC must be made of a balance of contributors with technical expertise,
- and community members who bring the perspective of the community at large.
- The PLC is subject to rules set by the Software Freedom Conservancy. For
- more information about the PLC's policies please refer to the
- Software Freedom
- Conservancy's project policies.
-
-
-
- The PLC currently consists of the following members:
-
-
-
Ariel Manzur — ariel@godotengine.org
-
Bastiaan Olij — bastiaan@godotengine.org
-
Clay John — clay@godotengine.org
-
George Marques — george@godotengine.org
-
Hein-Pieter van Braam-Stewart — hp@godotengine.org
-
Ilaria Cislaghi — ilaria@godotengine.org
-
Juan Linietsky — juan@godotengine.org
-
Julian Murgia — julian@godotengine.org
-
Rémi Verschelde — remi@godotengine.org
-
-
-
Advisors
-
- The PLC has enlisted the help of its most trusted and veteran contributors
- whom they call the advisors. The advisors are consulted on usage
- of funds as well as institutional matters. It is important to note,
- however, that while the advice of the advisory panel is weighed heavily,
- the final authority on these matters remains with the PLC. In practice,
- the PLC rarely makes an important decision without at least discussing it
- with the advisors first.
-
-
- Like the PLC, contributors do not apply to become advisors. Instead the
- process of joining the advisors group is organic; trusted contributors may
- be asked to join after showing dedication, expertise, and leadership
- within the Godot community. As a result, the advisors are a diverse group
- of individuals with expertise in all areas of Godot development.
-
-
-
Funding decisions
-
- All donations and sponsorships go directly to the SFC. The Godot PLC makes
- all decisions on how the funds are used, following rules established by
- Software Freedom Conservancy. These rules dictate that funding can only be
- used for the benefit of the project. Usage of funds generally includes:
-
-
-
Hiring contributors
-
Organizing events
-
Reimbursements for travelling to events
-
Purchasing hardware required for contributors to work on Godot
-
-
- While the exact costs spent remain private, we do our best to publish how
- much we get and how much we spend. All funding decisions are ultimately
- approved by the Software Freedom Conservancy which has strict (but
- reasonable) limits on spending, hourly rates, and reimbursements.
- As such, no one hired receives more than industry standard rates.
-
-
-
Technical decisions
-
- Technical decisions are made by Area Owners and the project leaders.
- Godot has the following established roles:
-
-
-
Leadership
-
-
Juan Linietsky — Technical and Project Lead
-
Rémi Verschelde — Project Manager
-
-
- The project leaders have final say on all code merges. In theory, this means
- the leaders will have the final say when maintainers cannot agree. In
- practice, this authority rarely needs to be invoked because decisions are
- made by maintainers in consultation with the community.
-
-
-
Teams and area owners
-
- Engine teams are groups of contributors interested in
- a specific area of the engine. Teams provide a way for contributors to have
- focused discussions with other people with similar expertise and interests.
- The opinion and expertise of team members is valued in discussions, but
- ultimately the authority over an area of the engine belongs solely to the
- area owner and the project leadership. Area owners are entrusted with final
- say for code merges in their areas. Area owners are trusted contributors who
- are chosen by the project leadership and have shown knowledge of the specific
- area of the engine and the engine's philosophy as a whole.
-
-
- In practice, area owners aim for consensus among contributors, especially
- among the relevant team. The "rule of thumb" is to not merge code if
- significant disputes exist over a change. However the final decision still
- remains with the area owner. The Godot project strives for rich, public,
- technical discussions where anyone can contribute and agree on the way to
- move forward. Additionally, the leadership and area owners consult with
- other contributors and the community as much as possible every time new
- features and improvements are planned.
-
-
-
Community
-
- We strive to make our relationship with the community as symbiotic as
- possible within the limits of feasibility. The Godot community is made up of
- users, contributors, maintainers, and project leadership. Godot exists
- because its community trusts the work we do, so we try to entrust the
- community with deciding the general direction of the project as much and as
- openly as possible. This is how we see the process as community-driven:
-
-
-
- Open development: All development (code that makes it
- into the engine, docs, website, etc) is made via
- Pull Requests.
- They are open for anyone to see, review and comment on. From the
- leadership to the new contributors, everyone is required to create them in
- order 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.
-
-
-
diff --git a/themes/godotengine/pages/home.htm b/themes/godotengine/pages/home.htm
deleted file mode 100644
index 3b3be57488..0000000000
--- a/themes/godotengine/pages/home.htm
+++ /dev/null
@@ -1,17 +0,0 @@
-title = "Home"
-url = "/"
-layout = "home"
-description = "Godot provides a huge set of common tools, so you can just focus on making your game without reinventing the wheel."
-is_hidden = 0
-==
-{##}
-
- Godot provides a huge set of common tools, so you can just focus on making
- your game without reinventing the wheel.
-
-
-
- Godot is completely free and open source under the very permissive MIT license.
- No strings attached, no royalties, nothing.
- Your game is yours, down to the last line of engine code.
-
diff --git a/themes/godotengine/pages/license.htm b/themes/godotengine/pages/license.htm
deleted file mode 100644
index 75c6932be9..0000000000
--- a/themes/godotengine/pages/license.htm
+++ /dev/null
@@ -1,89 +0,0 @@
-title = "License"
-url = "/license"
-layout = "more"
-description = "Godot Engine is free and open source software released under the permissive MIT license."
-is_hidden = 0
-==
-{##}
-{% put title %} License {% endput %}
-
-
You can study how Godot Engine works and change it
-
You can distribute unmodified and changed versions of Godot Engine, even commercially and under a different license (including proprietary)
-
-
- The only restriction to that third freedom is that you need to distribute the copyright notice and license statement of Godot Engine whenever you redistribute it.
- So your derivative product may have a different license, but should still state in its documentation that it derives from the MIT licensed Godot Engine (see below).
-
-
-
Your game
-
- Godot Engine's license terms and copyright do not apply to the content you create with it; you are free to license your games how you see best fit,
- and will be their sole copyright owner(s).
-
-
- Note however that the Godot Engine binary that you would distribute with your game is a copy of the "Software" as defined in the license,
- and you are therefore required to include the copyright notice and license statement somewhere in your documentation.
-
-
- The Godot Engine developers consider that a link to this page (godotengine.org/license) in your game documentation or credits would be an
- acceptable way to satisfy the license terms.
-
- A plain text version of the license is available from Godot Engine's GitHub repository: LICENSE.txt.
- A list of contributors is also available: AUTHORS.md.
-
-
-
- Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
- Copyright (c) 2014-2022 Godot Engine contributors.
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-
- -- Godot Engine <https://godotengine.org>
-
-
-
Third-party components
-
- Godot Engine uses several third-party libraries and code snippets, which are distributed under their own license and copyright statements.
- All such components are compatible with the terms of Godot Engine's MIT license.
- You can refer to this list
- for a comprehensive overview of all third-party components used in Godot Engine and their respective licenses.
-
-
-
Disclaimer
-
- The above explanations of Godot Engine's license terms and their implications for its users do not constitute 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.
-
- The name Godot Engine should always be written in Title Case. Also,
- Godot should be written with only one capital letter – it's not "GoDot".
-
-
- Godot is named after the play Waiting for Godot,
- and is usually pronounced like in the play. Different languages have different
- pronunciations for Godot and we find it beautiful.
- For native English speakers, we recommend "GOD-oh"; the "t" is silent like in the
- French original.
-
-
-
Logo and icon usage guidelines
-
-
- Only use the logo and icon to represent Godot, not your own project.
- You are allowed to include the Godot logo in your project's splash screen,
- 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.
-
This Privacy Statement is intended to describe Godot Engine's privacy practices and provide information about the choices you have regarding the ways in which information collected by Godot Engine is used and disclosed. Godot Engine, a member project of the Software Freedom Conservancy, is referred to in this document as "Godot".
-
-
It covers both online platforms of the Godot project and the use of the Godot Engine application.
-
-
Our Commitment to Privacy
-
-
Your privacy is important to Godot and Software Freedom Conservancy. To better protect your privacy and to comply with various laws and regulations, we have provided this Statement explaining our information practices and the choices you can make about the way your personal information is collected, used and disclosed. To make this Statement easy to find, we have made it available on our homepage and at many of the locations where personally-identifiable information may be requested.
-
-
The Information We Collect
-
-
This Privacy Statement applies to all information collected by or submitted to Godot, including personal data. "Personal data" is data that can be used to identify an individual.
you sign up and log in to an account on the Godot Chat platform (https://chat.godotengine.org), and use it to participate in private and public discussions;
-
you sign up and log in to an account on Godot's Q&A site (https://godotengine.org/qa), and use it to ask or answer questions;
you use one of Godot's publicly logged project IRC channels (#godotengine-atelier, #godotengine-devel, #godotengine-meeting) on the Libera Chat IRC network;
-
you sign up for one of our public mailing lists hosted by TuxFamily;
-
you participate in surveys or evaluations;
-
you submit questions or comments to us.
-
-
-
When you use the Asset Library in the Godot Engine application, HTTPS requests are made to the Asset Library website, and may contain: Godot Engine version, search query, selected assets, and user IP. The Asset Library processes this data without storing it, but our TuxFamily hosting's HTTP server may log these requests. Such logs are subject to TuxFamily's privacy policy (https://faq.tuxfamily.org/Privacy/En).
- This is the only personal data collected by the Godot Engine application.
-
-
When you create an account on the Godot website (including the Godot Chat platform, the Q&A platform, the Asset Library and October CMS), it collects your username and email address for authentication. Additional information may be collected if you choose to fill in optional fields in your user profile (e.g. full name, location, profile picture).
-
-
When you join or send messages to any of the IRC channels listed above, that activity is logged and published publicly for others interested in the project. This logging includes the user nickname specified when connecting to Libera Chat and your messages in those public channels.
Godot may also collect personal data from individuals (with their consent) at conventions, trade shows and expositions. The types of personal data collected may include (but are not limited to):
-
-
-
your first and last name;
-
your title and your company's name;
-
your home, billing, or other physical address (including street name, name of a city or town, state/province);
-
your country code;
-
your e-mail address;
-
your telephone number;
-
any other identifier that permits Godot to make physical or online contact with you;
-
-
-
Using (Processing) Your Personal Data
-
-
Godot uses the personal data you provide to:
-
-
-
create and maintain your accounts;
-
identify and authenticate you;
-
attribute data and content you produce directly and indirectly in our public-facing services;
-
answer your questions;
-
send you information;
-
for research activities, including the production of statistical reports (such aggregated information is not used to contact the subjects of the report);
-
send you surveys;
-
maintain our servers.
-
-
-
We also use this personal data to provide you with information related to your account and the educational materials, software and services you acquire from us, to better understand your needs and interests, to improve what we do for you and the public, to personalize communications, and to comply with or fulfill any contractual obligations to you. It is in Godot’s legitimate business interests to provide you with the information, communications, and services you request; to create a public record of the data and content produced by Godot’s services; and to maintain the integrity of that data and content for historical, scientific, and research purposes.
-
-
Sharing Your Personal Data
-
-
Unless you consent, Godot will never process or share the personal data you provide to us except as described below.
-
-
Godot may share your personal data with third parties under any of the following circumstances:
-
-
-
To attribute your contributions to source repositories, forums, and IRC channels.
-
As required to provide service, and for e-mail housing (as a consequence of uses already described in this Privacy Statement). It is in Godot’s legitimate business interest to provide all users an accurate record of data and content provided by Godot’s services, and to maintain the integrity of that data and content for historical, scientific, and research purposes. This data and content may include but is not limited to email, code changes, comments, and artifacts.
-
As required by law (such as responding to a valid subpoena, warrant, audit, or agency action, or to prevent fraud).
-
For research activities, including the production of statistical reports (such aggregated information is used to describe our services and is not used to contact the subjects of the report).
-
-
-
Donations
-
-
We receive personal information from third party services when you donate to us via online payment mechanisms. We do not sell or distribute this information to third parties. Godot uses this information to acknowledge your donation and send you occasional solicitations and newsletters. Donors can opt out of all contact by emailing privacy@godotengine.org. Donor names (as registered on Patreon) are posted on https://github.com/godotengine/godot/blob/master/DONORS.md and included in the Godot editor application's "About" dialog as a recognition of their support. At the time of the donation, the donor can ask to be anonymous, so that their name will not be publicly recognized.
-
-
Receiving E-Mail
-
-
Godot may send you e-mail to authorize accounts you create on our site, to inform you of important upcoming Godot events, to send occasional solicitations in connection with our donor programs as described above or in response to your questions. For your protection, Godot may contact you in the event that we find an issue that requires your immediate attention. Godot processes your personal data in these cases to fulfill and comply with its contractual obligations to you, to provide the services you have requested, and to ensure the security of your account.
-
-
Cookies and Other Browser Information
-
-
Godot's online services automatically capture IP addresses. We use IP addresses to help diagnose problems with our servers, to administer our website, and to help ensure the security of your interaction with our services.
-
-
As part of offering and providing customizable and personalized services, Godot uses cookies to store and sometimes track information about you. A cookie is a small amount of data that is sent to your browser from a Web server and stored on your computer's hard drive. All sections of godotengine.org where you are prompted to log in or that are customizable require your browser to accept cookies.
-
-
Generally, we use cookies to remind us of who you are and to access your account information (stored on our computers) in order to provide a better and more personalized service. This cookie is set when you register or "sign in" and is modified when you "sign out" of our services.
-
-
If you do not want your personal information to be stored by cookies, you can configure your browser so that it always rejects these cookies or asks you each time if you accept them or not. However, you must understand that the use of cookies may be necessary to provide certain services, and choosing to reject cookies will reduce the performance and functionality of the site. Your browser documentation includes instructions explaining how to enable, disable or delete cookies at the browser level (usually located in the “Help”, “Tools” or “Edit” facility).
-
-
Our Commitment to Data Security
-
-
Godot trains its administrators on our privacy policy guidelines and makes our privacy policy available to our partners. Our website uses Secure Socket Layer (SSL) technology, which encrypts your personal data when you send your personal information on our website. In addition, Godot and its partners enter into confidentiality agreements which require that care and precautions be taken to prevent loss, misuse, or disclosure of your personal data.
-
-
Public Forums Reminder
-
-
Godot often makes mailing lists, source repositories, issue trackers, Etherpads, forums, and IRC logs available to the public. Please remember that any information that is disclosed in these areas becomes public information. Please think carefully about your desired level of anonymity before you disclose personal information. Although we value individual ideas and encourage free expression, Godot reserves the right to take necessary action to preserve the integrity of these areas, such as removing any posting that is vulgar or inappropriate. It is in Godot’s legitimate business interests to provide all users an accurate record of data and content provided in the public forums it maintains and uses; to maintain the integrity of that data and content for historical, scientific, and research purposes; and to provide an environment for the free exchange of ideas relevant and constructive to the development and propagation of software freedom.
-
-
Our Commitment to Children's Online Privacy
-
-
Out of special concern for children's privacy, Godot does not knowingly accept online personal information from children under the age of 13. Godot does not knowingly allow children under the age of 13 to become registered members of our sites. Godot does not knowingly collect or solicit personal information about children under 13.
-
-
In the event that Godot ever decides to expand its intended site audience to include children under the age of 13, those specific web pages will, in accordance with the requirements of the Children's Online Privacy Protection Act (COPPA), be clearly identified and provide an explicit privacy notice addressed to children under 13. In addition, Godot will provide an appropriate mechanism to obtain parental approval, allow parents to subsequently make changes to or request removal of their children's personal information, and provide access to any other information as required by law.
-
-
Additionally, EU residents under the age of 16 should not submit their personal data for subscribing to our email solicitations and we will delete any such data if we become aware of it.
-
-
About Links to Other Sites
-
-
This site contains links to other sites. Godot does not control the information collection of sites that can be reached through links from godotengine.org. If you have questions about the data collection procedures of linked sites, please contact those sites directly.
-
-
Your Rights and Choices in the EEA and Around the World
-
-
Where the EU General Data Protection Regulation 2016/679 (“GDPR”) applies to the processing of your personal data, especially when you access the website from a country in the European Economic Area (“EEA”), you have the following rights, subject to some limitations, against Godot:
-
-
-
The right to access your personal data;
-
The right to rectify the personal data we hold about you;
-
The right to erase your personal data;
-
The right to restrict our use of your personal data;
-
The right to object to our use of your personal data;
-
The right to receive your personal data in a usable electronic format and transmit it to a third party (also known as the right of data portability); and
-
The right to lodge a complaint with your local data protection authority.
-
-
-
If you would like to exercise any of these rights, you may do so by mailing privacy@godotengine.org. Please understand, however, the rights enumerated above are not absolute in all cases.
-
-
Where the GDPR applies, you also have the right to withdraw any consent you have given to uses of your personal data. If you wish to withdraw consent that you have previously provided to Godot, you may do so by mailing privacy@godotengine.org. However, the withdrawal of consent will not affect the lawfulness of processing based on consent before its withdrawal.
-
-
Godot will undertake best efforts to provide these rights to people outside of the EEA as well.
-
-
How to Access, Modify or Update Your Information
-
-
Godot gives you the ability to access, modify or update your personal data at any time. On sites where you can create accounts (Q&A, Asset Library), you may log in and make changes to your login information (change your password), your contact information, your general preferences and your personalization settings. If necessary, you may also contact us and describe the changes you want made to the personal data you have previously provided by mailing privacy@godotengine.org.
-
-
If you wish to remove your personal data from Godot, you may contact us at privacy@godotengine.org and request that we remove this information from the Godot System. Other locations where you may have used your personal data as an identifier (e.g. mailing list and forum postings in the archives, repository changelogs, and IRC logs) will not be altered.
-
-
How to Contact Us
-
-
If you have any questions about any of these practices or Godot's use of your personal information, please feel free to contact us by email at:
Godot will work with you to resolve any concerns you may have about this Statement.
-
-
Changes to this Privacy Statement
-
-
Godot reserves the right to change this policy from time to time. If we do make changes, the revised Privacy 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.
diff --git a/themes/godotengine/pages/showcase/dungeondraft.htm b/themes/godotengine/pages/showcase/dungeondraft.htm
deleted file mode 100644
index 8bfa596769..0000000000
--- a/themes/godotengine/pages/showcase/dungeondraft.htm
+++ /dev/null
@@ -1,34 +0,0 @@
-title = "Showcase | Dungeondraft"
-url = "/showcase/Dungeondraft"
-layout = "showcase-item"
-description = "Dungeondraft showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Dungeondraft {% endput %}
-{% put author %} Megasploot {% endput %}
-{% put author_url %} https://dungeondraft.net/ {% endput %}
-{% put release_date %} February 2020 {% endput %}
-{% put platforms %} windows, macos {% endput %}
-
-{% put description %}
-
- 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
-
-{% endput %}
-
-{% put image %} dungeondraft.jpg {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #5b412f 4%, #5c4330 57%, #5d4a36 70%, #593c2b 98%) {% endput %}
-{% put youtube_embed_code %} LYTHVRpihKg {% endput %}
-{% put link_custom %} https://dungeondraft.net/ {% endput %}
diff --git a/themes/godotengine/pages/showcase/ex-zodiac.htm b/themes/godotengine/pages/showcase/ex-zodiac.htm
deleted file mode 100644
index 2676394166..0000000000
--- a/themes/godotengine/pages/showcase/ex-zodiac.htm
+++ /dev/null
@@ -1,35 +0,0 @@
-title = "Showcase | Ex Zodiac"
-url = "/showcase/ex-zodiac"
-layout = "showcase-item"
-description = "Ex Zodiac showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Ex Zodiac {% endput %}
-{% put author %} Ben Hickling {% endput %}
-{% put author_url %} https://twitter.com/benhickling {% endput %}
-{% put release_date %} 2021 (Early Access) {% endput %}
-{% put platforms %} windows, macos, linux, switch {% endput %}
-
-{% put description %}
-
- Ex-Zodiac is a fast-paced rail shooter with a stylized look reminiscent of
- 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
-
-{% endput %}
-
-{% put image %} ex-zodiac.png {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #659abb 3%, #649abb 14%, #71a3b8 24%, #6399bb 79%) {% endput %}
-{% put youtube_embed_code %} 7sJJW_x6Xg4 {% endput %}
-{% put link_steam %} https://store.steampowered.com/app/1249480/ExZodiac/ {% endput %}
-{% put link_itch %} https://pixeljam.itch.io/ex-zodiac {% endput %}
diff --git a/themes/godotengine/pages/showcase/gravity-ace.htm b/themes/godotengine/pages/showcase/gravity-ace.htm
deleted file mode 100644
index 9d15bf4bc0..0000000000
--- a/themes/godotengine/pages/showcase/gravity-ace.htm
+++ /dev/null
@@ -1,44 +0,0 @@
-title = "Showcase | Gravity Ace"
-url = "/showcase/gravity-ace"
-layout = "showcase-item"
-description = "Gravity Ace showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Gravity Ace {% endput %}
-{% put author %} John Watson {% endput %}
-{% put author_url %} https://gravityace.com/ {% endput %}
-{% put release_date %} October 2020 (Early Access) {% endput %}
-{% put platforms %} windows, linux {% endput %}
-
-{% put description %}
-
- Gravity Ace is a 2D multi-directional gravity shooter (cave-flyer). It's a
- love letter to Thrust and Gravitar and all of the amazing games they inspired.
- 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.
-
-{% endput %}
-
-{% put image %} gravity-ace.png {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #a52a37 20%, #0f0e24 60%, #c53f4e 88%, #b53442 93%) {% endput %}
-{% put youtube_embed_code %} wb0r83K3YBk {% endput %}
-{% put link_steam %} https://store.steampowered.com/app/1003860/Gravity_Ace/ {% endput %}
-{% put link_itch %} https://jotson.itch.io/gravity {% endput %}
-
-{% put developer_article_quote %}
-
- 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.
-
-{% endput %}
-{% put developer_article_title %} Godot Showcase - Gravity Ace developer talks about his experience {% endput %}
-{% put developer_article_url_slug %} godot-showcase-john-watson-gravity-ace {% endput %}
diff --git a/themes/godotengine/pages/showcase/kingdoms-of-the-dump.htm b/themes/godotengine/pages/showcase/kingdoms-of-the-dump.htm
deleted file mode 100644
index ac1578f7b5..0000000000
--- a/themes/godotengine/pages/showcase/kingdoms-of-the-dump.htm
+++ /dev/null
@@ -1,33 +0,0 @@
-title = "Showcase | Kingdoms of the Dump"
-url = "/showcase/kingdoms-of-the-dump"
-layout = "showcase-item"
-description = "Kingdoms of the Dump showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Kingdoms of the Dump {% endput %}
-{% put author %} Roach Games {% endput %}
-{% put author_url %} https://kingdomsofthedump.com/ {% endput %}
-{% put release_date %} October 2022 {% endput %}
-{% put platforms %} windows, macos, linux {% endput %}
-
-{% put description %}
-
- 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
-
-{% endput %}
-
-{% put image %} kingdoms-of-the-dump.png {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #b5c1d8 2%, #a8b5d5 9%, #707473 47%, #666a6a 57%) {% endput %}
-{% put youtube_embed_code %} swcFuuwHKFE {% endput %}
-{% put link_steam %} https://store.steampowered.com/app/2159270/Kingdoms_of_the_Dump {% endput %}
diff --git a/themes/godotengine/pages/showcase/material-maker.htm b/themes/godotengine/pages/showcase/material-maker.htm
deleted file mode 100644
index d66d9ae6c3..0000000000
--- a/themes/godotengine/pages/showcase/material-maker.htm
+++ /dev/null
@@ -1,34 +0,0 @@
-title = "Showcase | Material Maker"
-url = "/showcase/material-maker"
-layout = "showcase-item"
-description = "Material Maker showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Material Maker {% endput %}
-{% put author %} R0dZill4 {% endput %}
-{% put author_url %} https://twitter.com/R0dZill4 {% endput %}
-{% put release_date %} October 2019 {% endput %}
-{% put platforms %} windows, linux {% endput %}
-
-{% put description %}
-
- Material Maker is a procedural materials authoring tool, based on the Godot
- Engine. Materials are defined as graphs where nodes create or transform
- 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.
-
-{% endput %}
-
-{% put image %} material-maker.png {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #353943 9%, #353943 29%, #353943 41%, #353943 61%) {% endput %}
-{% put youtube_embed_code %} PY-fCt1j2Ag {% endput %}
-{% put link_itch %} https://rodzilla.itch.io/material-maker {% endput %}
-{% put link_github %} https://github.com/RodZill4/material-maker {% endput %}
diff --git a/themes/godotengine/pages/showcase/the-garden-path.htm b/themes/godotengine/pages/showcase/the-garden-path.htm
deleted file mode 100644
index a6181381f0..0000000000
--- a/themes/godotengine/pages/showcase/the-garden-path.htm
+++ /dev/null
@@ -1,58 +0,0 @@
-title = "Showcase | The Garden Path"
-url = "/showcase/the-garden-path"
-layout = "showcase-item"
-description = "The Garden Path showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} The Garden Path {% endput %}
-{% put author %} carrotcake.studio {% endput %}
-{% put author_url %} https://carrotcakestudio.itch.io/ {% endput %}
-{% put release_date %} Autumn/Winter 2021 {% endput %}
-{% put platforms %} windows, macos, linux {% endput %}
-
-{% put description %}
-
- The Garden Path is a sandbox gardening game. Players will emerge into a
- long-forgotten garden, and unlock tools to help shape the garden into
- something they can call their own.
-
-
- Depending on how the player chooses to grow their garden will decide who
- chooses to live there from a pool of many possible vegetable-headed
- inhabitants.
-
-
- Time in the The Garden Path is tied to real-time, but with seasons passing
- each week, and years passing each month. With each season comes new events,
- weather, and collectables that can be brewed into teas, or traded with a cast
- of animal travellers.
-
- 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.
-
-{% endput %}
-{% put developer_article_title %} Godot Showcase - The Garden Path developer talks about his experience {% endput %}
-{% put developer_article_url_slug %} godot-showcase-garden-path-developer-talks-about-his-experience {% endput %}
-
-{% put link_steam %} https://store.steampowered.com/app/1638500/The_Garden_Path/ {% endput %}
-{% put link_itch %} https://carrotcakestudio.itch.io/thegardenpath {% endput %}
diff --git a/themes/godotengine/pages/showcase/until-then.htm b/themes/godotengine/pages/showcase/until-then.htm
deleted file mode 100644
index 43fd56657b..0000000000
--- a/themes/godotengine/pages/showcase/until-then.htm
+++ /dev/null
@@ -1,33 +0,0 @@
-title = "Showcase | Until Then"
-url = "/showcase/until-then"
-layout = "showcase-item"
-description = "Until Then showcase page"
-is_hidden = 0
-==
-{##}
-{% put title %} Until Then {% endput %}
-{% put author %} Polychroma Games {% endput %}
-{% put author_url %} https://untilthengame.com/ {% endput %}
-{% put platforms %} windows, macos, linux, switch {% endput %}
-
-{% put description %}
-
- "The world hasn't ended yet."
-
-
- Mark, an average irresponsible high school student, tries to get by and find
- purpose in a humdrum life of scrolling, cramming, and traffic. He meets
- friends, both old and new, and embarks upon a seemingly never-ending trouble,
- until nothing is ever the same again.
-
-
- Until Then is a contemporary story game inspired by the Philippines, its
- lifestyle, and culture. Featuring a smartphone where mechanics of modern
- living come into play, chat with your classmates, browse the web, and explore
- the depths of social networks.
-
-{% endput %}
-
-{% put image %} until-then.png {% endput image %}
-{% put placeholder %} linear-gradient(90deg, #947451 12%, #a8885f 29%, #8c8977 65%, #d2ba9f 98%) {% endput %}
-{% put youtube_embed_code %} YeMs2y37yxA {% endput %}
diff --git a/themes/godotengine/pages/teams.htm b/themes/godotengine/pages/teams.htm
deleted file mode 100755
index 1adb404d32..0000000000
--- a/themes/godotengine/pages/teams.htm
+++ /dev/null
@@ -1,502 +0,0 @@
-title = "Teams"
-url = "/teams"
-layout = "more"
-description = "Teams and engine areas overview"
-is_hidden = 0
-==
-{##}
-{% put title %} Godot Engine teams {% endput %}
-
-
-
- This pages provides an overview of the various teams working on Godot Engine. If you want to know who works on what, who to get in contact with on a topic,
- which people should review a particular Pull Request or similar - this is a good first stop.
-
-
-
- Engine teams are listed by engine area, with a few keywords describing what belongs to that area and a link to the teams chat channel,
- followed by a list of the members of that team (names and GitHub handles). For some larger areas, subteams exist for parts of that area.
- Names in bold with a ⭐ emoji are the main contributors in charge of a given area, who typically lead the team work and can merge Pull Requests in their area of expertise.
-
-
-
- If you want to get in touch, use the link to each team's chat channel on the Godot Engine Contributors chat after the team's names (see Community).
- For general development discussions which may not fit a specific team channel, use the general purpose #devel channel.
- For general enquiries, private or security related matters, have a look at the Contact page.
-
-
-
-
General areas
-
-
- Categorizing the engine development in discrete teams is not easy! This section includes some broad areas which have an influence on all engine subsystems,
- and where many contributors are active without necessarily being responsible for all the features that their team encompasses.
- Some more specialized teams are then listed in the Systems section.
-
- Everything that inherits Control (everything under scene/gui)
- and can be used to build Graphical User Interfaces (both game UI and editor tools).
-
- Umbrella team for all the scripting languages usable with Godot. Encompasses some shared core components (Object, ClassDB, MethodBind, ScriptLanguage, etc.)
- and language specific implementations in dedicated subteams.
-
-
-
- George Marques (@vnen)
- Ignacio Roldán Etcheverry (@neikeq)
- Juan Linietsky (@reduz)
-
- Rendering server and RenderingDevice implementations (Vulkan, OpenGL), as well as the actual rendering techniques implemented using those graphics APIs.
-
- The following teams do not impact the engine code directly, but take care of all other important parts of the Godot ecosystem such
- as the documentation, demos, website, etc.
-
- The communication team ensures that our platforms, from the website to our social media, are kept up to date with current information about the engine and showcase other projects from the community.
-
- If you work on Godot translations and contributors for your language have a dedicated communication channel for coordination, let us know so we can link it here.
-
- {% endif %}
-
- {# Shortcuts to get to the first two pages. #}
- {% if posts.currentPage - 2 > 1 %}
- 1
- {% endif %}
- {% if posts.currentPage - 2 > 2 %}
- 2
- {# Only display the ellipsis if at least one page is omitted. #}
- {% if posts.currentPage - 2 > 3 %}
-
…
- {% endif %}
- {% endif %}
-
- {# Display at least 5 page buttons regardless of the current page. #}
- {% for page in max(1, min(posts.currentPage - 2, posts.lastPage - 4))..max(5, min(posts.currentPage + 2, posts.lastPage)) %}
- {{ page }}
-
- {% endfor %}
-
- {# Shortcuts to get to the last two pages. #}
- {% if posts.currentPage + 2 < posts.lastPage - 1 %}
- {# Only display the ellipsis if at least one page is omitted. #}
- {% if posts.currentPage + 2 < posts.lastPage - 2 %}
-
diff --git a/themes/godotengine/partials/showcase/list-item.htm b/themes/godotengine/partials/showcase/list-item.htm
deleted file mode 100644
index 83628256cb..0000000000
--- a/themes/godotengine/partials/showcase/list-item.htm
+++ /dev/null
@@ -1,42 +0,0 @@
-description = "Showcase list item"
-==
-
- {# Add a gradient to ensure the text is readable regardless of the background color. #}
-
-