This guide is for OpenTTD developers/maintainers, to release a new version of OpenTTD.
-
If this is a beta version release, skip this step.
-
If this is an RC1 (first Release Candidate) build, create a new branch
release/nn
wherenn
is the major version number, then apply changes similar to PR#9573. You also need to forwardport the changelog, as in PR#10113.- Update the version in
CMakeLists.txt
in the master branch, heading for the next major release, e.g. from 14.0 to 15.0. - Add a new (empty) AI compatibility script in
bin/ai/
- Add the new version to CheckAPIVersion in
src/ai/ai_info.cpp
andsrc/game/game_info.cpp
- Add the new version to
src/script/api/ai_changelog.hpp
andsrc/script/api/game_changelog.hpp
- Update the version of regression in
bin/ai/regression/regression_info.nut
- Add a note to
src/saveload/saveload.h
about which savegame version is used in the branch.
- Update the version in
-
If this is a later RC or release build and the release branch already exists, you'll need to backport fixes and language from master to this branch, which were merged after the branch diverged from master. You can use these two helper scripts: https://github.com/OpenTTD/scripts/tree/main/backport
-
If this is a maintenance release, update the version in
CMakeLists.txt
in the release branch, e.g. from 14.0 to 14.1.
- Update the changelog with new changes since the last release.
- Changelog entries are typically PR titles, but can be edited to be more helpful without context.
- Don't include fixes to things which haven't previously been released (like fixes to features which are in the same changelog).
- Order the entries by importance:
Feature > Add > Change > Fix
, then numerically by PR number.
- Create a changelog PR, get approval, and merge.
- For beta releases, target master, otherwise target the release branch.
- Go to https://github.com/OpenTTD/website/new/main/_posts and write a new announcement post. See a previous example for a template.
- Create a new branch for this post and open a PR for it.
- Write announcement text for the store pages and socials like TT-Forums / Discord / Twitter / Reddit / Fosstodon / etc., and include it in the PR.
- Create a Steam news image for that post and include it in the PR.
- Check the website post ("View Deployment" link) and make corrections. We usually just use the GitHub web interface for this and squash the result later.
- Get this PR approved, but do not merge yet.
- Confirm that the version in
CMakeLists.txt
matches the intended release version. - Go to https://github.com/OpenTTD/OpenTTD/releases/new and create a new tag matching the release number. For the body of the release, copy in the changelog. "Set as a pre-release" for a beta or RC.
- Wait for the OpenTTD release workflow to be complete.
- If this is a full release:
- for
Steam
: under Steamworks -> SteamPipe -> Builds, set the "testing" branch live on the "default" branch. This will request 2FA validation. - for
GOG
: under Builds, "Publish" the freshly uploaded builds toMaster
,GOG-use only
andTesting
. - for
Microsoft Store
: ask orudge to publish the new release.
- for
Access to Steam
, GOG
and/or Microsoft Store
requires a developer account on that platform.
You will need access to the shared keystore in order to create such an account.
For help and/or access to either or both, please contact TrueBrain.
- Merge the website PR. This will publish the release post.
- Make announcements on social media and store pages. You may need to coordinate with other developers who can make posts on TT-Forums, Twitter, Reddit, Fosstodon, Discord, Steam, GOG, Microsoft Store, etc.