diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 30aef9e0b8..63609d5fa3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -34,7 +34,7 @@ env:
OPENRCT2_BUILD_SERVER: GitHub
OPENRCT2_ORG_TOKEN: ${{ secrets.OPENRCT2_ORG_TOKEN }}
BACKTRACE_IO_TOKEN: ${{ secrets.BACKTRACE_IO_TOKEN }}
- OPENRCT2_VERSION: 0.4.21
+ OPENRCT2_VERSION: 0.4.22
# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value
concurrency:
diff --git a/debian/changelog b/debian/changelog
index 1b4c9be887..07ad3d0ed9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,38 @@
+openrct2 (0.4.22-develop-1) unstable; urgency=medium
+
+* Feature: [#24206] [Plugin] Add APIs for breaking down rides, reading the current breakdown, and for fixing broken down rides.
+* Improved: [#20073] The OpenGL drawing engine now supports screen invalidation which avoids the redrawing of unchanged regions.
+* Improved: [#21767] RCT Classic for macOS can now be used as the source game.
+* Improved: [#23590] Title bars are now drawn bigger when “Enlarged UI” is enabled.
+* Improved: [#23626] Add small, medium and large flat and sloped turns, S-bends and diagonal track to the Go-Karts.
+* Improved: [#23982] The scenario objective window has been merged into the scenario options window.
+* Improved: [#24233] RCT Classic+ from Apple Arcade can now be used as the source game, and is detected automatically.
+* Improved: [#24260] Better performance on parks that have a lot of Guests and Entertainers.
+* Improved: [#24319] RCT Classic installs via Steam are now detected automatically on Windows.
+* Change: [#23803] Lightning strikes and thunder now happen at the same frequency independently of the game speed.
+* Change: [#23857] Replace display options tab with custom sprites.
+* Change: [#24069] [Plugin] Plugins are now available in the scenario editor and track designer.
+* Change: [#24135] Compress Emscripten js/wasm files.
+* Change: [#24194] The advanced options tab has been reworked to make it easier to find the RCT1 path setting.
+* Change: [#24235] Small changes to RCT1 theme.
+* Change: [#24236] Controls and Interface options now both have their own tabs in the Options window.
+* Change: [#24308] “Software” and “Software (hardware display)” renderers have been merged into a single “Software” renderer.
+* Change: [#24317] The scenery window now shows at least one row of scenery objects, even if there are multiple rows of tabs.
+* Fix: [#18479] Tile elements ordered beneath water do not draw correctly.
+* Fix: [#19782] Game stops counting inversions and golf holes after 31 (original bug).
+* Fix: [#21207] Track List window gets positioned incorrectly.
+* Fix: [#21919] Non-recolourable cars still show colour picker (original bug).
+* Fix: [#22182] [Plugin] Crash when using map.getAllEntities("car").
+* Fix: [#22634] Asset packs with sound effect overrides are not loaded correctly at startup.
+* Fix: [#23108] Missing pieces on Hypercoaster and Hyper-Twister, even with the ‘all drawable track pieces’ cheat enabled.
+* Fix: [#24013] Failure to load a scenario preview image (minimap) could lead to an uncaught exception error message.
+* Fix: [#24045] [Plugin] Data storage is not cleared when converting save game to scenario.
+* Fix: [#24121] Checkbox labels run beyond the edge of the window if they’re too long to fit.
+* Fix: [#24142] [Plugin] Track origin is miscalculated on downward slopes.
+* Fix: [#24220] Narrow station platforms have missing sides on certain rotations.
+* Fix: [#24286] Steam installs of RCT1 and RCT2 are not autodetected on macOS.
+* Fix: [#24310] [Plugin] Missing invalidation on various plugin api setters for entities.
+
openrct2 (0.4.21-develop-1) unstable; urgency=medium
* Feature: [#22646] New scenario files now contain a minimap image, shown in the scenario selection window.
diff --git a/distribution/changelog.txt b/distribution/changelog.txt
index 243b7d17b8..1a5a95dc1f 100644
--- a/distribution/changelog.txt
+++ b/distribution/changelog.txt
@@ -1,4 +1,4 @@
-0.4.22 (in development)
+0.4.22 (2025-05-04)
------------------------------------------------------------------------
- Feature: [#24206] [Plugin] Add APIs for breaking down rides, reading the current breakdown, and for fixing broken down rides.
- Improved: [#20073] The OpenGL drawing engine now supports screen invalidation which avoids the redrawing of unchanged regions.
diff --git a/distribution/linux/openrct2.appdata.xml b/distribution/linux/openrct2.appdata.xml
index b2da611210..6b8071a99e 100644
--- a/distribution/linux/openrct2.appdata.xml
+++ b/distribution/linux/openrct2.appdata.xml
@@ -404,6 +404,9 @@
none
+
+ https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.22
+
https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.21
diff --git a/distribution/macos/Info.plist b/distribution/macos/Info.plist
index 4db7caa83a..3581816869 100644
--- a/distribution/macos/Info.plist
+++ b/distribution/macos/Info.plist
@@ -13,7 +13,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 0.4.21
+ 0.4.22
CFBundleSignature
ORCT
LSMinimumSystemVersion
diff --git a/readme.md b/readme.md
index b0e3b7b776..8252bfc07e 100644
--- a/readme.md
+++ b/readme.md
@@ -19,7 +19,7 @@
### Download
| Latest release | Latest development build |
|--------------------------------------------------------------------------------------------------------------------------|--------------------------|
-| [](https://openrct2.org/downloads/master/latest) | [](https://openrct2.org/downloads/develop/latest) |
+| [](https://openrct2.org/downloads/master/latest) | [](https://openrct2.org/downloads/develop/latest) |
---
diff --git a/src/openrct2-android/app/build.gradle b/src/openrct2-android/app/build.gradle
index 7a4ef32fec..ff5392ccc0 100644
--- a/src/openrct2-android/app/build.gradle
+++ b/src/openrct2-android/app/build.gradle
@@ -10,8 +10,8 @@ android {
minSdkVersion 24
targetSdkVersion 28
- versionCode 9
- versionName '0.4.21'
+ versionCode 10
+ versionName '0.4.22'
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
diff --git a/src/openrct2/Version.h b/src/openrct2/Version.h
index 2cde046c63..cfa77ac50b 100644
--- a/src/openrct2/Version.h
+++ b/src/openrct2/Version.h
@@ -12,7 +12,7 @@
#include
#define OPENRCT2_NAME "OpenRCT2"
-#define kOpenRCT2Version "0.4.21"
+#define kOpenRCT2Version "0.4.22"
#if defined(__amd64__) || defined(_M_AMD64)
#define OPENRCT2_ARCHITECTURE "x86-64"
diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp
index 783f8c45ed..86bb4d857d 100644
--- a/src/openrct2/network/NetworkBase.cpp
+++ b/src/openrct2/network/NetworkBase.cpp
@@ -49,7 +49,7 @@ using namespace OpenRCT2;
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
-constexpr uint8_t kNetworkStreamVersion = 2;
+constexpr uint8_t kNetworkStreamVersion = 0;
const std::string kNetworkStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kNetworkStreamVersion);