Nimby Rails cover
Nimby Rails screenshot
Genre: Simulator

Nimby Rails

Devblog for August 2022

August finally saw timetables come together at last! First train AI was updated to follow timetables. As expected this didn't take long, but the though part is in the multitude of corner cases it can have. After trains started happily waiting for their departure time and speeding up and down to make it to their arrival time, it was time to finally settle down the timetable design.

I finally decided to make it orders-centered, with many order flexibility, rather than run and line centered, as it was the original plan. So orders were resurrected as a much more intelligent object than they have ever been. Orders sit atop the timing hierarchy, and they are the only player editable object in the timetable system. Orders in turn create one or more train runs. Trains know nothing about orders, instead they require a list of runs that covers 100% of the week time. A run is just an instruction to run a given line starting a certain time for a certain duration, nothing more. And finally, combining line stop timing with the simple run objects, enables a train to always know exactly what is supposed to be doing.

Some timetable functionality would impossible without secondary stop platforms, and these were added to the game. Line stops can now designate a path signal to serve as the distribution point, and then a set of one or more secondary stops as valid, alternate platforms in case the main one (or some other secondary platform) is busy. For timing purposes secondary stops do not exist, so make sure to add some extra slack to your stop times (always a good idea in 1.5 anyway).

Depots have been removed in 1.5. A way to infinitely store trains will come later, but for now the only way to store trains is in open air rail yards. And it turns out the game already had everything required to enable this feature. Combining secondary stops, a long duration order and a line in "empty trains" mode makes it possible. The blog post has more details on how to build and operate one.

If all of these new features are a bit overwhelming, fear not. 1.5 will also have automatic ways to run your trains and lines. In fact all imported 1.4 games default to automatic lines with automatic trains, so you don't have to ever open the train orders panel if you don't want to.

Finally, I decided to do things differently with the 1.5 beta, and I decided to not announce it in Steam, and just release it in the beta branch and start collecting feedback in a more quiet way. The reason is that this beta is a more unfinished product compared to earlier betas. I left many decisions to be made for later, after I can see how players react to the 1.5 design and ideas. In just one week a huge number of improvements have already landed thanks to player feedback, so it was the right idea.

https://carloscarrasco.com/nimby-rails-august-2022/

Devblog for July 2022

Timetables development is now in full swing, with the first half of July devoted to making the pax timetable pathfinder fast enough to be playable. This was a make it or leave it step for 1.5, and in the end it worked out pretty well. So well it's actually more performant than 1.4! With the pathfinder looking good, work on the timetable UI and logic was started. The UI has progressed nicely, but the logic of the timetables, and how they are exposed and edited by the user, has become an stumbling block and needs more work.

https://carloscarrasco.com/nimby-rails-july-2022/

Devblog for June 2022

Version 1.5 development is now underway, with timetables being the star of the show. But before timetables development was started it was time to make train AI multithreaded in order squeeze as much performance as possible from the game. With that goal finished, a first prototype of timetable data and pax pathfinding was implemented, with encouraging results, but with a big performance impact, as expected. More optimizations and even game design changes will be required before timetables are playable, but the current foundations appear solid and correct.

https://carloscarrasco.com/nimby-rails-june-2022/

Version 1.4.23 release notes

Version 1.4.23 is a small bug fix release.


  • Fix: double accounting for some items in the parallel pax code
  • Fix: handle more kinds of cases of train stops in stations, including trains (partially) outside of the platform limit, as valid train stops. This is meant to help with the "pax do not board/leave" bug.

Version 1.4.22 release notes

The last build of the 1.4 series is now live in the default branch! Development for this last build series was focused on preparing the game for the optimizations required in version 1.5, but a new major user feature was also developed, for blueprint sharing in the Steam Workshop.


  • Multiple blueprint collections
  • Steam Workshop support for sharing and subscribing to blueprint collections
  • New building modding features
  • More multithreading optimizations, the most visible being much faster game loading

Devblog for May 2022

Version 1.4 development wrapped up in May, with workshop blueprint collections as the last feature to be implemented. Still some tweaks and optimizations were tested and implemented, again with focus on improving the multithreading usage of the game, although most of the new ideas won't be put into use until 1.5 arrives. The current 1.4 beta will be made the default version and 1.4 will officially end its development soon.

https://carloscarrasco.com/nimby-rails-may-2022/

Devblog for April 2022

April saw a slate of technical work, with overdue attention given to improving the multithreading capability of the game. First the general threading framework of the game was replaced by an new one, then some areas of the game were made to be at least partially multithreaded. The result is some speedup for games with higher ratios of pax+stations vs trains, but trains remain the main CPU hog. Making trains multithreaded will be a much more complex challenge and it will be attempted in the future.

https://carloscarrasco.com/nimby-rails-april-2022/

Version 1.4.15 release notes

After five weeks of beta testing version 1.4 is now ready to become the default game version. The main changes are:


  • Mercator distances correction
  • Proper layered drawing
  • Saves backup
  • Buildings
  • Curved station platforms
  • Copy paste
  • Selection rotation
  • Clipboard saving
  • Custom map labels and platform extensions


Read the main post for more detail on the new features, and some notes on how the major changes in this new version can affect existing v1.3 saves:

https://store.steampowered.com/news/app/1134710/view/3195875030008333144

Version 1.4 has been released!

After five weeks of beta testing version 1.4 is now ready to become the default game version. Version 1.4, like all previous game versions, keeps saved games compatible all the way back to the original v1.1 build. But due to gameplay, sim, map and rules changes some manual adjusting might be required after loading an earlier saved game.

In particular v1.4 introduces Mercator coordinate correction, which means distances in-game now match those of real life maps, instead of the exaggerated scale of previous versions. But since player built objects are anchored to absolute geo coordinates, it means all player construction shrinks in size compared to v1.3, unless built on the equator. So v1.3 and earlier saves will see shrink down station platforms. This can be fixed with some reblueprinting and rebuilding of station platforms.

If you would rather keep playing v1.3 a legacy branch has been created for it, and it won't ever be deleted.

Read on for an overview of the changes in v1.4.

Mercator distances correction



The game using Mercator coordinates directly for distance calculation was one of these prototype phase decisions which weren’t reviewed or prioritized enough back in the day, and it stuck for release. This is now fixed in v1.4. Old games remain compatible, but they might require some retouching around stations and manually laid parallel tracks.


Proper layered drawing





All the map drawing for user place objects is now properly layered, including trains. Additionally tunnel tracks are also displayed under roads, but this can be disabled if desired.


Saves backup



Steam Cloud Saves have been supported from day 1, using the automatic system, which Steam implements by synchronizing the contents of the game saves folder with their online storage. From time to time I receive reports of save corruption, which I have been unable to reproduce in any way, but which appear related to this system. For this reason v1.4 implements an automatic backup system. All saved games, including autosaves, will be backed up in a “Roaming Profile” folder in your Windows user folder. This folder is the same used for the settings file and it is left out of the configuration of Steam Cloud Saves. Hopefully starting in v1.4 it will be possible to point players to this folder when they encounter the save corruption error.


Building system



An entirely new base game object has been implemented: buildings. Building is actually not a correct name for this feature, but most of the time it will be used to draw buildings or parts of buildings. Buildings are a new kind of object, a resizable, orientable rectangle you can build anywhere in the world, and pick its texture (and sometimes color) from a listing of textures which can also be expanded with mods.



Buildings are just a building (heh) block for larger things. For now they are restricted to cosmetic improvements to stations (indeed, every cosmetic detail of a station is now composed of one or more buildings), but they will form the base of future new features.




Curved platforms and remade stations



The default stations of the game are now based on the new building system. Every aspect of the default station is now optional, and it can be stripped down to just the track segments:



They can also be made curved, and any attached building will automatically curve itself with the track:




Copy paste and selection rotation



When advanced players start building their stations with the new building system, they will naturally want to replicate this work for their networks. The default station tool would be useless, since it builds either simple prebuilt stations or strips down from that simple construction. A new tool is required to replicate your custom station work: track editor copy paste.

[previewyoutube="31ZhhAQJ5Cc;full"]

With track editor copy paste you can select any number of buildings and tracks (including platform tracks) and copy and paste them anywhere in the world, as blueprints. Once pasted they are normal objects, which you can further move, change or delete in any way you desire to. But just being able to move them is not enough, so selection rotation has also been added. Make any selection (pasted or not), and prepare to move it like you would normally do, but hold the Alt key while doing so. This will rotate the selection around its center.

Blueprint clipboard collection


Building upon the copy paste system, it is now possible to save the track editor clipboard contents to disk, and keep them in a persistent collection, independent of the loaded game:



Special buildings: platform extension and user map labels


Platform extension buildings are special, editor-only buildings which allow to extend the reach of any platform they touch. This is a built-in solution for creating distant platforms without the use of empty platforms just to link them

User label buildings add new map labels. The player can freely edit their contents and pick a color and some styling.






You can read the full development notes here:
https://carloscarrasco.com/nimby-rails-december-2021/
https://carloscarrasco.com/nimby-rails-january-2022/
https://carloscarrasco.com/nimby-rails-february-2022/
https://carloscarrasco.com/nimby-rails-march-2022/

Devblog for March 2022

March saw most of the remaining v1.4 features implemented, save for a couple of higher risk / higher reward items. Station footprint extensions allow to reach distant platforms without introducing new tracks or architectural buildings. Station coverage has been finally fixed to properly support smaller radius stations, including zero radius stations. A new blueprint clipboard collection allows to save the clipboard contents to disk, to reuse later, even in a different save, and even while using mods. Trains will now use the full platform length to reverse direction in all cases (if said platform follows the rules of v1.4 platforms). And now players can place map labels of their own.

v1.4 will be made the default version in mid-April, but before that milestone 1.4.12 still needs a few more days to bake to be made available in the beta branch.

https://carloscarrasco.com/nimby-rails-march-2022/