diff --git a/_pages/download.md b/_pages/download.md index f69b37f..7e843ad 100644 --- a/_pages/download.md +++ b/_pages/download.md @@ -4,7 +4,7 @@ tagline: "Get the latest and the greatest release here." layout: single classes: wide permalink: /download/ -latest_version: "26.04" +latest_version: "26.05" --- # Downloading the game diff --git a/_posts/2026/2026-05-24-openloco-v26.05.md b/_posts/2026/2026-05-24-openloco-v26.05.md new file mode 100644 index 0000000..f982204 --- /dev/null +++ b/_posts/2026/2026-05-24-openloco-v26.05.md @@ -0,0 +1,115 @@ +--- +title: "OpenLoco version 26.05" +tagline: "Release blog post" +author: "Aaron van Geffen" +date: 2026-05-30 10:00 +0200 +layout: single +classes: wide +categories: news +--- + +OpenLoco v26.05 is out! This month's release focuses primarily on some quality-of-life UI changes, +while also addressing some annoying bugs and paving the way for a better codebase. + + +## Making cargo more intuitive + +To indicate what cargo is produced by industries and what cargo passes through stations, Locomotion +uses small icons in various places. This makes sense when you consider the game originally had to +run on displays with resolutions of 640×480 or 800×600. While experienced players have likely memorised +the meaning of all these icons, they do make it quite hard for new players to pick things up. +Well, nowadays we can afford to use up a bit more space, right? + +This month, we've reworked the station construction tab to list cargo produced and accepted by +a new station in full, with a label next to the icons +([#3734](https://github.com/OpenLoco/OpenLoco/pull/3734)). + +Before: + +![Station construction, before](/assets/img/26.05/construct_cargo_before.png) + +After: + +![Station construction, after](/assets/img/26.05/construct_cargo_after.png) + +We've also added tooltips to the cargo icons in the station window, so you can still quickly look up +what an icon means without having to check the construction window again +([#3735](https://github.com/OpenLoco/OpenLoco/pull/3735)). + +![Station construction, after](/assets/img/26.05/station_window_cargo.png) + + +## Increase dimensions of Build Vehicle window + +Last month, we introduced [new sorting options](/news/2026/04/openloco-v26.04.html#add-more-sorting-options-when-building-vehicles) +for the Build Vehicle window. Thinking the sort options weren't that easy to discover, and the window +felt a little cramped anyway, @AaronVanGeffen set out to improve the window further. The sort options +have been moved into a dropdown of their own, and the window has been made a little larger by default +[(#3710)](https://github.com/OpenLoco/OpenLoco/pull/3710). + +Before: +![Build Vehicle window, before](/assets/img/26.05/build_vehicle_before.png) + +After: +![Build Vehicle window, after](/assets/img/26.05/build_vehicle_after.png) + + +## Fix item removal in various list windows + +We also changed the way [list windows work](/news/2026/04/openloco-v26.04.html#refactor-list-windows-to-use-faster-sorting-algorithm) +last month. While our tests looked very promising, there was one thing we did not properly test: +item removal. Suppose you deleted a vehicle while the vehicle list was open? Yeah, the game would crash. +Oops. The same thing happened with the other list windows: stations, towns, industries, and companies. +We've reworked the way items are removed ([#3727](https://github.com/OpenLoco/OpenLoco/pull/3727)), +so this shouldn't bug us again. + +Our rework presented another edge case when regenerating the landscape in the scenario editor. +If you happened to have the town or industry list windows open, their lists would not fully refresh. +Suppose you regenerated with more or fewer towns or indeed industries, the list would refresh, +but not repopulate. This meant entries would potentially be missing — or lead to invalid entries. +We've added a hard refresh to both windows for this particular situation +([#3733](https://github.com/OpenLoco/OpenLoco/pull/3733)). + + +## Fix save state not being deterministic without auto save + +Something that puzzled us in the past, but ultimately forgot about, was that save games would +not give the exact same result _on disk_ unless autosaves had been enabled. Our replay checks always +used autosaves, though, so surely there couldn't be a big problem? + +Aiming for a perfectly deterministic simulation, @ZehMatt investigated the matter once more. +He found the whole reason it was not deterministic to be that there was lingering game state for stations. +When autosaves were enabled, it would zero some fields out every time an autosave was performed. +In particular, this also impacted how cargo stats were calculated, since it used the _old_ data, +which also influenced the pseudo-random number generator (prng). + +We have changed the station manager to now explicitly zero-initialise the remaining fields +when allocating a new station ([#3737](https://github.com/OpenLoco/OpenLoco/pull/3737)). +With that, the game now always outputs binary identical files, and the determinism bug is gone. + + +## Separate OpenLoco into a library and app + +When we revamped our CMake config [a few years ago](/news/2022/11/openloco-v22.11.html#project-layout-change-cmake-1686), +we set out to modularise our codebase to make it easier to create smaller, testable targets. +This was successful to a degree, but mostly for particular data structures and utility functions. +The majority of the actual game code was still not explicitly covered by tests, save for replay tests +covering parts of the simulation. Splitting it up further would be a monumental task, surely... + +Cue @ZehMatt. Eager to expand test coverage to include tile element management at least, +he split up the source tree to distinguish an OpenLoco _library_ from the actual game. This, then, +would allow targeting particular functions without actually running the full game. + +As of [#3742](https://github.com/OpenLoco/OpenLoco/pull/3742), this became a reality! +Many files were moved around to realise this! We now build the source tree as a library, +with the main game executable using (linking) this library. + + +## Allow setting preferred company name + +OpenLoco has allowed players to set up preferred company 'owner' names and faces for a while, +but for in-game companies, we've been stuck with 'Name Transport' still... until now! +In [#3720](https://github.com/OpenLoco/OpenLoco/pull/3720), new contributor @Llammissar +added an exta option to let players set custom _company names_ as well! Neat. + +![Custom company names](/assets/img/26.05/custom_company_name.jpg) diff --git a/assets/img/26.04/build_vehicle_after.png b/assets/img/26.05/build_vehicle_after.png similarity index 100% rename from assets/img/26.04/build_vehicle_after.png rename to assets/img/26.05/build_vehicle_after.png diff --git a/assets/img/26.04/build_vehicle_before.png b/assets/img/26.05/build_vehicle_before.png similarity index 100% rename from assets/img/26.04/build_vehicle_before.png rename to assets/img/26.05/build_vehicle_before.png diff --git a/assets/img/26.05/construct_cargo_after.png b/assets/img/26.05/construct_cargo_after.png new file mode 100644 index 0000000..541f10f Binary files /dev/null and b/assets/img/26.05/construct_cargo_after.png differ diff --git a/assets/img/26.05/construct_cargo_before.png b/assets/img/26.05/construct_cargo_before.png new file mode 100644 index 0000000..147bba8 Binary files /dev/null and b/assets/img/26.05/construct_cargo_before.png differ diff --git a/assets/img/26.05/custom_company_name.jpg b/assets/img/26.05/custom_company_name.jpg new file mode 100644 index 0000000..7b81623 Binary files /dev/null and b/assets/img/26.05/custom_company_name.jpg differ diff --git a/assets/img/26.05/station_window_cargo.png b/assets/img/26.05/station_window_cargo.png new file mode 100644 index 0000000..b48050a Binary files /dev/null and b/assets/img/26.05/station_window_cargo.png differ