github OpenLoco/OpenLoco v23.07

latest releases: v24.09.1, v24.09, v24.08...
14 months ago

Changelog

  • Feature: [#2013] Add headers for base/clearance height, direction, and ghost flag to the tile inspector.
  • Feature: [#7627] Allow mouse scrolling on +/- stepper widgets to change their values.
  • Fix: [#1999] Potential crash at startup due to the screen buffer being too small.
  • Fix: [#2011] Crash when using terraform tools using a range that exceeds the map edge.
  • Fix: [#2027] Crash when loading scenarios with a non-ASCII locomotion installtion path.
  • Fix: [#2028] Incorrect industry building clearing heights causing graphical glitches.
  • Fix: [#2039] Crash/hang when clicking on news items of new vehicle available.
  • Fix: [#2042] Crash when Data Execution Prevention (DEP) is enabled on all executables on Windows.
  • Fix: [#2044] Incorrect error message when selecting an object fails in the object selection window.
  • Technical: [#2004] Crash reports are no longer being generated (Windows only).

Development Log

Use height instead of width to initialize the RT buffer (#2001)

Recent work on using a hardware backend for window scaling accidentally introduced a bug which could lead to
failure to start OpenLoco when using window scaling. This rendered the game unplayable for some. This has now
been fixed. Our apologies!

Allow scrolling up and down on steppers to change their values (#2019)

One of the often-cited favourite quality of life features introduced by OpenRCT2, our sister project, is the
ability to manipulate +/- stepper values using the mouse scrollwheel. @Broxzier's work has now been introduced
in OpenLoco as well.

Fix Breakpad crash dump creation (#2032)

For a few years, we have used the Breakpad library on Windows. This allows us to handle crashes gracefully,
generating crash reports that may be analysed by us developers to find the cause. Unfortunately, a recent refactor
of our CMake configuration files led to it being disabled for Windows builds as well. @ZehMatt has fixed this,
so crashes are handled through Breakpad once more.

Introduce getClampedRange and getWorldRange (#2024)

As you might image, the game often iterates over map tiles to perform certain calculations over them. This could
be as a result of player interaction, e.g. applying a terraform tool, or without player interaction, e.g.
calculating cargo generated by an industry. Either way, it is important that the range of tiles is both complete
and valid. We have now introduced two helper functions that make sure our tile ranges do not extend outside the
map bounds. This fixes a bug that some players reported when trying to change tile textures on the map edge.

Implement more terraform game commands (#1998, #2008, #2010, #2031)

Last month, we implemented the clear land game command. This set up the stage for the other terraform game commands
to be implemented. This month, we've tackled five more of them: raise/lower land, raise/lower water, and create wall.
These do pretty much what you'd expect them to do, except many hidden caveats that led to us spending many hours
debugging why our implementations behaved slightly different to vanilla! We should be fully compatible now, though.
One more terraform game command remains: the mountain tool game command. And boy, is it a big one...

Implement the build/remove company HQ game commands (#2020, #2021)

Continuing our folly of reimplementing all game commands in C++, we have also tackled the construction of company
headquarters! Thankfully, after the terraform game commands, these were relatively simple functions that deferred
most of the logic to the general build/remove building game commands. However, having now tackled them, we can start
thinking of extending them, e.g. to expose building rotation to the HQ placement tool.

Implement the create/remove town game commands (#2022, #2023)

While town creation or removal isn't a common occurrence in normal scenario play, both are game commands as well!
Our quest to reimplement all of them lead us to work on both. Ultimately, this should make it easier to place new
towns in a more organic way as well.

Implement vehicle pickup aircraft game command (#2025)

There are three game commands dealing with picking up vehicles: one deals with road and track vehicles, one for
boats, and one for aircraft. This game command deals with the latter. This means we've now implemented all three!

Remove window event interop (#2015)

Now that all windows have been reimplemented in C++, we can drop the compatibility layer for interopting with
vanilla window routines. This also means we can work towards increasing the amount of windows players can have
open at the same time.

Add BH/CH/D/G headers to tile inspector (#2013)

OpenLoco's tile inspector can be an invaluable tool for debugging tile behaviour. While not yet remotely as
powerful as OpenRCT2's, we make use of it quite often to figure out and label tile fields. This month, we've
made it a bit more useful, adding headers for base height, clearance height, direction, and ghost flag to the list
of tile elements.

Actually use our vehicleOrderInsert implementation (#2014, #2016)

Last month, we proudly touted that we'd reimplemented all route order game commands. Except... we weren't actually
using one of them yet! After changing this, we promptly found an edge case that could lead to a crash. Thankfully,
we discovered that one ahead of the release, so it hasn't bothered any players.

Known issues

  • Multiplayer functionality is not available at this time.

Don't miss a new OpenLoco release

NewReleases is sending notifications on new releases.