|
| 1 | +--- |
| 2 | +title: "OpenLoco version 24.12" |
| 3 | +tagline: "Release blog post" |
| 4 | +author: "Aaron van Geffen" |
| 5 | +date: 2024-12-27 16:00:00 +0100 |
| 6 | +layout: single |
| 7 | +classes: wide |
| 8 | +categories: news |
| 9 | + |
| 10 | +--- |
| 11 | + |
| 12 | +OpenLoco v24.12 is out! This release mainly focuses on bug fixes, |
| 13 | +but there's some exciting changes under the hood as well! |
| 14 | + |
| 15 | +For a complete summary of changes, please find the |
| 16 | +[OpenLoco changelog](https://github.com/OpenLoco/OpenLoco/releases/tag/v24.12) on GitHub. |
| 17 | + |
| 18 | +## Jukebox rework |
| 19 | + |
| 20 | +The Locomotion jukebox features various tracks for the game's different eras. These can be played |
| 21 | +in their original order, but you can also make your own playlist. There was an edge case, though, |
| 22 | +where a playlist with your one favourite track would stop playing after that one track! |
| 23 | +Fed up with this, new contributor @LeeSpork removed the cause in |
| 24 | +[#2750](https://github.com/OpenLoco/OpenLoco/pull/2750). Moreover, he refactored the jukebox code, |
| 25 | +so it now lives in its own compilation unit in [#2771](https://github.com/OpenLoco/OpenLoco/pull/2771). |
| 26 | +Nice work! |
| 27 | + |
| 28 | +## Paint interop removal |
| 29 | + |
| 30 | +The game's various drawing routines for rendering the world viewport, called paint routines, |
| 31 | +have all been implemented as of last month. This marked a huge milestone for the project, and while it |
| 32 | +is still early days, we're already seeing the first benefits: we were able to drop all the so-called |
| 33 | +interop code from the paint namespace. This code was used to interface between the vanilla Locomotion |
| 34 | +game and our implementation while not all paint routines had been implemented in C++. |
| 35 | +As of [#2772](https://github.com/OpenLoco/OpenLoco/pull/2772), this could all be removed! |
| 36 | +Not only does this make the code quite a bit cleaner, it also paves the way for more advanced rework |
| 37 | +in the future, such as multi-threaded rendering! |
| 38 | + |
| 39 | +## Train collision detection |
| 40 | + |
| 41 | +When do trains collide with one another? The question may seem obvious to us, but due to how |
| 42 | +the game engine works, collisions have to be implemented explicitly. In |
| 43 | +[#2587](https://github.com/OpenLoco/OpenLoco/pull/2587), @duncanspumpkin unravelled |
| 44 | +how the vanilla implementation works, and reimplemented it in C++. |
| 45 | + |
| 46 | +While it should work as before right now, this implementation will allow us to improve the |
| 47 | +behaviour in the future. For example, right now, road vehicles can't collide with track vehicles! |
| 48 | +While vehicles clipping into one another may be interesting in its own way, it doesn't make |
| 49 | +for a very realistic simulation... |
| 50 | + |
| 51 | +## Vehicles not producing sound |
| 52 | + |
| 53 | +Something that has puzzled some players for a while, is that various custom objects would not |
| 54 | +produce any sound effects. It turns out their frequency specifications were zeroed out, which |
| 55 | +in [DirectSound](https://en.wikipedia.org/wiki/DirectSound) had the effect of disabling |
| 56 | +direction-based frequency shifting. In 2022, we moved to OpenAL as the audio backend, so this |
| 57 | +niche feature no longer worked, and in fact muted the sound effect completely! |
| 58 | +As of [#2806](https://github.com/OpenLoco/OpenLoco/pull/2806), we now mimic vanilla behaviour |
| 59 | +by disabling the frequency shifting for small frequency values. |
| 60 | + |
| 61 | +## Further demystifying of the company AI |
| 62 | + |
| 63 | +Resident wizard @duncanspumpkin has been working on further demystifying the company AI |
| 64 | +by reimplementing more parts of it in C++. In [#2783](https://github.com/OpenLoco/OpenLoco/pull/2783), |
| 65 | +we figured out how AI allocated tracks are removed. This is basically the equivalent of |
| 66 | +the 'ghost' elements used by human players, but can stick around for much longer. |
| 67 | +Further, in [#2789](https://github.com/OpenLoco/OpenLoco/pull/2789) a similar thing |
| 68 | +was reimplemented for track signals. |
| 69 | + |
| 70 | +While you should not see any difference in gameplay yet, understanding how the current AI |
| 71 | +works paves the way for future improvements, so this is all very exciting! |
| 72 | + |
| 73 | +## Crashes after moving your Locomotion install |
| 74 | + |
| 75 | +Remember how we introduced having multiple locations for objects |
| 76 | +[a few releases ago](https://openloco.io/news/2024/10/openloco-v24.10.html#updates-to-object-index-and-selection-2629-2650)? |
| 77 | +Well, it turns out our new code didn't like people moving their Locomotion install. |
| 78 | +This doesn't happen very often, realistically, but caused an unexpected crash for some players. |
| 79 | +After figuring out what went wrong, @duncanspumpkin patched this nicely with more flexible |
| 80 | +(de)serialisation of the object index in [#2761](https://github.com/OpenLoco/OpenLoco/pull/2761). |
| 81 | + |
| 82 | +## Bug fixes galore |
| 83 | + |
| 84 | +It's hard to crunch out a bunch of code without introducing a few bugs along the way. |
| 85 | +Thankfully, @duncanspumpkin found some time to fix a bunch this month. |
| 86 | + |
| 87 | +Let's start with [#2782](https://github.com/OpenLoco/OpenLoco/pull/2782), |
| 88 | +which fixes issues with bridge painting. In the last release, people quickly noticed something |
| 89 | +we missed, which is that some bridge pieces were missing their railings! |
| 90 | +Having penned the code responsible, Duncan quickly fixed the issue. |
| 91 | + |
| 92 | +Some players noticed that the same name would show up for an industry, and some industries |
| 93 | +would not be named at all! This took a bit of digging, but was ultimately fixed in |
| 94 | +[#2798](https://github.com/OpenLoco/OpenLoco/pull/2798). |
| 95 | + |
| 96 | +Another issue was that people lining up for a tram or bus stop would all show up in |
| 97 | +the same colour! This had to do with what we internally call the cargo density — |
| 98 | +and yes, people are considered cargo too, in this game... |
| 99 | +A quick fix, thankfully, so patched as of [#2799](https://github.com/OpenLoco/OpenLoco/pull/2799)/ |
| 100 | + |
| 101 | +Finally, it was brought to our attention that the sound effect being played for company bankruptcy |
| 102 | +has been inverted! This meant the 'crowd' would cheer insted of boo your company when it goes |
| 103 | +out of business. It's a simple mistake, with amusing consequences. With |
| 104 | +[#2800](https://github.com/OpenLoco/OpenLoco/pull/2800) in, the right sound effect is played once again. |
0 commit comments