Work continued with the new pax demand generation system in 1.12, with the introduction of multiple custom demand curves and player defined POIs. In 1.12 it will be possible for players to define custom time based and distance based pax demand curves, to control pax spawn and pax picking of destinations. These curves can alter the built-in population layer, and they can also alter a new kind of game object: points of interest. These POIs will be a special kind of building players can place anywhere on the map, and then assign a population value and a demand curve to them. They then become part of the pax generation for all the stations covering them, and also an attractor for pax demand from other stations. Check the blog post for more details and other new features:
February saw the final releases of the 1.11 beta series, and the start of internal experimentation and development for 1.12. I originally intended for 1.11 to also feature pax generation changes, but the scope of the changes became too big to just be a "plus one more thing" feature during a beta period, so it has now been reassigned as the major feature of 1.12.
Work on the new pax generation system has begun, with many experiments done in February, to put some ideas to the test and see which ones are practical and which ones are not. The guiding principle is to try to model natural demand for pax trips, and then adapt the designs to the reality of a real time game. Solutions have been found for some the challenges of adapting this idea to the game, but a lot of work still remains to be done.
Version 1.11 is now the default Steam version! This version contains only few user-visible changes, with the bulk of the work focused on optimizing the game sim to extract as much performance as possible from 4+ core CPUs. There's also pax pathfind improvements and new features, like board and disembark -only line stops.
Major multithreading optimzations
In 1.11 the game simulation and the game UI can now run fully independent from each other. This boosts the game simulation speed by potentially a large margin, depending on how large your save is (and for users with less powerful GPUs, on how complex your on-screen buildup is). Since the game simulation was already massively parallel, this increases the CPU usage of the game. Faster sim = more CPU usage. If you prefer the game making less use of your CPU, in 1.11 it is also possible to limit this capability down to just 2 sim threads, with the corresponding sim performance hit.
New pax pathfind capabilities
Board only and disembark only line stops are now possible. Although not super realistic, it is useful to keep local pax from boarding long distance lines making multiple stops in a large city, for example. Or to make sure large capacity lines only empty their trains in some selected, less busy stations. Factorio or a human transit simulation? You decide!
Pax pathfinding can now consider a pax staying inside a train for more than 2 train runs. This limit has been in the game since 1.5 and it is now finally removed. The pax pathfinder can now plan a path leg which keeps the pax inside the train until the train starts a technical line or an already visited station appears (not just the boarding station), whichever comes first, over any amount of train runs, including an entire week worth of them.
"Figure 8" or "pretzel" shape lines are now better supported. These lines, in conjunction with single line stations, have had limited support in the pax pathfinder. In 1.11 the game is able to detect more cases of a transfer station, including cases of a line crossing over itself on the same station, or a common looking line having a single direction loop in one end (in this case, the station(s) just before the loop are marked as transfer). This means there are now some cases where pax can disembark in a station and pick a train of the same line, to avoid the loop part of a "figure 8" line for example.
Finally, it is now possible to restrict pax from boarding a train if they plan to ride it for a too short time. For example, if you have a long distance line making a couple of stops in a big city, and want to forbid local pax from using it like a subway between the two stations, you can set a minimum stay time in these stops. Pax will stop considering them as valid legs in their trips if the ride time is under your setting.
Multiplayer fixes
I've written this a bunch of times over the years already, but the new version contains major multiplayer fixes and optimizations. This time I'm confident enough that I've enabled up to 100x shared sim speed and made it the default setting, and feedback from the beta period has been positive. Give it a try if you are a multiplayer fan.
Better time zones
A new option in the company panel now allows to change into a new time zone mode: Approximate. This mode uses a real world time zone map, instead of the previous simplified rule of having one time zone every 15 degrees of longitude. It's still called "approximate" because in order to keep performance from diving, it is a rasterized map with a resolution of around 5km, so locations within a 5km border of a time zone might display the wrong one. Still it's a huge improvement over the previous system.
Custom accounting start of day time
It is now possible to change what time of day the game accounting considers as the start of day, relative to UTC 0. So for example, if your save is mostly built up in the USA east coast, you might want to consider changing accounting start time to -5h, so it tracks the USA Eastern time zone.
--- For a more detailed and technical look into what's in 1.11, check the devblogs:
Version 1.11 is now available in the Steam beta branch! This version contains only few user-visible changes, with the bulk of the work focused on optimizing the game sim to extract as much performance as possible from 4+ core CPUs. There's also pax pathfind improvements and new features, like board and disembark -only line stops.
Major multithreading optimzations
In 1.11 the game simulation and the game UI can now run fully independent from each other. This boosts the game simulation speed by potentially a large margin, depending on how large your save is (and for users with less powerful GPUs, on how complex your on-screen buildup is). Since the game simulation was already massively parallel, this increases the CPU usage of the game. Faster sim = more CPU usage. If you prefer the game making less use of your CPU, in 1.11 it is also possible to limit this capability down to just 2 sim threads, with the corresponding sim performance hit.
New pax pathfind capabilities
Board only and disembark only line stops are now possible. Although not super realistic, it is useful to keep local pax from boarding long distance lines making multiple stops in a large city, for example. Or to make sure large capacity lines only empty their trains in some selected, less busy stations. Factorio or a human transit simulation? You decide!
Pax pathfinding can now consider a pax staying inside a train for more than 2 train runs. This limit has been in the game since 1.5 and it is now finally removed. The pax pathfinder can now plan a path leg which keeps the pax inside the train until the train starts a technical line or an already visited station appears (not just the boarding station), whichever comes first, over any amount of train runs, including an entire week worth of them.
"Figure 8" or "pretzel" shape lines are now better supported. These lines, in conjunction with single line stations, have had limited support in the pax pathfinder. In 1.11 the game is able to detect more cases of a transfer station, including cases of a line crossing over itself on the same station, or a common looking line having a single direction loop in one end (in this case, the station(s) just before the loop are marked as transfer). This means there are now some cases where pax can disembark in a station and pick a train of the same line, to avoid the loop part of a "figure 8" line for example.
Multiplayer fixes
I've written this a bunch of times over the years already, but the new version contains major multiplayer fixes and optimzations. This time I'm confident enough that I've enabled up to 100x shared sim speed and made it the default setting (famous last words?). If you are a multiplayer fan give the beta a test.
--- For a more detailed and technical look into what's in 1.11, check the devblogs:
Work continued in December to implement major optimizations, but some diminishing returns were starting to hit, so I started a partial multiplayer rewrite to try to fix the many issues it currently has. I discarded large swats of code, old attempts at fixing shared mode and editor synchronization. It's now looking much better, at least on my end, so we will see how it goes when the beta goes public. I then took some holidays to think about where to go next with 1.11. The main idea I had for the release was not working out, so I implemented some small features and will consider making a release sooner than later.
Time flies when you are deep into optimization programming, and that's how November went by. The remaining roadmap items are very CPU intensive, so the game needs to extract more performance from the CPU cores. A very deep rearchitecture is ongoing, with a variety of strategies like database-like transactions and triple buffering game state. As a result the UI and the game sim are now fully asynchronous, removing a large pause from the game sim, letting it run for a longer in time on the CPU cores.
November was definitely a technical maneuvers kind of line, maybe December will return to more regular service.
Version 1.10 is now in the default game version. The focus of 1.10 is an updated OpenStreetMap layer, plus updates to some of the other map layers. This means a full redownload of the game is required when updating to version 1.10.
In addition to the new map data, a new map rendering engine has also been implemented, This new engine is improved in all aspects. For example it has much higher hillsahding quality:
A new style has been implemented for OSM data, with better colors and less noisy textures:
It is also enabled for map style mods, and you can already find some community provided mods in the Steam Workshop to both modify the base map and to display new information in the underlying OSM database. Read the devblogs for August, September and October for all the details:
Version 1.10 is now the beta branch. The focus of this version is a complete rebuild of the game map data, to update and fix it, so it needs to download it all again, resulting in large 25GB download. See the September devblog for more details:
There should be no gameplay changes other than new or moved roads and waterways creating a conflict on existing tracks, including built tracks. These tracks still function normally.
Devblog for September 2023
All the data gathering and processing tasks for the new map in 1.10 are now done, along with most of the work required to display them. Game size has increased a little, but I think it's worth it given the extra quality and map features. The new map rendering fixes several long standing glitches and bugs, so say goodbye to visible tile seams and spiky road corners. OSM ways are now rendered with correct layering. The new population layer has increased in resolution, almost down to single buildings. There's still some work left to do, specifically to enable OSM style mods, but 1.10 is way past the halfway point at this moment. https://carloscarrasco.com/nimby-rails-september-2023/
Devblog for August 2023
Work on optimizing rendering continued. The new map might have more data to display, so it was important to prepare the game for it. Then the long process of importing the new map data started. The code that will perform the conversion from OSM and other data sources is being rewritten from scratch, to improve the compression, quality and amount of data. But it will be awhile before 1.10 is ready. Read more in the devblog: https://carloscarrasco.com/nimby-rails-august-2023/