HomeGamesUpdatesPricingMethodology
Steam News12 June 20261mo ago

Signal fixes and updates

Fixed bug where depots directly touch a block with platforms that load were not handled properly. This could lead to priority stealing, and non-determinism in multi-threading.

Full notes

Full Steam Revolution: The Age of Rail update

Read the full published notes in a cleaner layout. The original post stays linked below.

What changed

7 fixes1 addition0 changes0 removals
  • Fixes
  • Gameplay
  • Balance
fixedFixed bug where depots directly touch a block with platforms that load were not handled properly. This could lead to priority stealing, and non-determinism in multi-threading. This was a rare and subtle simulation problem, but required some rethinking of simulation internals. Added internal signal type start as part of the code refactor.
fixedFix a bug where if there are multiple paths in a block where one of the paths is invalid and touching a vertex that has a valid path traveling in the opposite direction that it could sometimes incorrectly generate a path with the train reversing in an impossible way. This happened because I was just storing a shortest distance per segment, whereas I should have been storing a shortest distance per segment per direction.
fixedFixed a bug where the number of signals counted for cost was incorrect because it counted implicit signals (terminal, start), which are not placed by the player or drawn.
fixedFixed healing tracks sometimes flipping signals.
fixedFixed bug where colors of signals could sometimes switch when being moved if they had started off as bidirectional.
fixedFixed a bug where free signals at the end of a chain signal would sometimes block, when a free signal should never block. Now, if a chain signal sees a free signal it will always allow the train to proceed.

Steam Revolution: The Age of Rail changes

fixedFixed bug where depots directly touch a block with platforms that load were not handled properly. This could lead to priority stealing, and non-determinism in multi-threading. This was a rare and subtle simulation problem, but required some rethinking of simulation internals. Added internal signal type start as part of the code refactor.
fixedFix a bug where if there are multiple paths in a block where one of the paths is invalid and touching a vertex that has a valid path traveling in the opposite direction that it could sometimes incorrectly generate a path with the train reversing in an impossible way. This happened because I was just storing a shortest distance per segment, whereas I should have been storing a shortest distance per segment per direction.
fixedFixed a bug where the number of signals counted for cost was incorrect because it counted implicit signals (terminal, start), which are not placed by the player or drawn.
fixedFixed healing tracks sometimes flipping signals.
fixedFixed bug where colors of signals could sometimes switch when being moved if they had started off as bidirectional.
  • Fixed bug where depots directly touch a block with platforms that load were not handled properly. This could lead to priority stealing, and non-determinism in multi-threading. This was a rare and subtle simulation problem, but required some rethinking of simulation internals. Added internal signal type start as part of the code refactor.

  • Fix a bug where if there are multiple paths in a block where one of the paths is invalid and touching a vertex that has a valid path traveling in the opposite direction that it could sometimes incorrectly generate a path with the train reversing in an impossible way. This happened because I was just storing a shortest distance per segment, whereas I should have been storing a shortest distance per segment per direction.

  • Fixed a bug where the number of signals counted for cost was incorrect because it counted implicit signals (terminal, start), which are not placed by the player or drawn.

  • Fixed healing tracks sometimes flipping signals.

  • Fixed bug where colors of signals could sometimes switch when being moved if they had started off as bidirectional.

  • Made signals, behave consistently in terms of blocking behavior. Now, trains can block themselves. Also, chain signals behave consistently with other signals.

  • Fixed a bug where free signals at the end of a chain signal would sometimes block, when a free signal should never block. Now, if a chain signal sees a free signal it will always allow the train to proceed.

  • Added option to display block information. This is displayed in the following format 1[2,3]:4(5,6) where 1 is the block cluster id, [2,3] is the priority queue of trains for the cluster, 4 is the block id and (5,6) is the list of trains that are claiming occupancy of the block. This can be helpful to debug your signal setups, especially when using chain signals.

  • Fixed that cost related text overlay was drawn red when using custom balance.

Source

Steam News / 12 June 2026

Open original post

Changelog.gg summarizes and formats this update. How we read updates.