NIMBY Rails devblog 2023-01

NIMBY Rails is two years old

January 26th 2023 marked the second anniversary of the NIMBY Rails Early Access release. This second year has continued the same theme of the first, improving core systems of the game to meet the objectives of the roadmap. If the major evolution of 2021 was the new track system, in 2022 it was timetables.

I consider the remaining roadmap to be more expansive than evolutive. There are still important, pending changes to core game systems to be explored (like pax and demand), but other ideas like POIs and advanced signals are more of an expansion of the game than evolving beta-quality systems into release systems, which has been the major development theme so far. I will see about making 2023 a mix of both lines of development.

As for January, 1.6 was a much easier release to finish up compared to 1.5. I slowed down my output at the end of December and the first half of January due the holidays and for spending time with visiting friends and family, but then it was time to start 1.7 for real. Of the two headline 1.7 features, game sharing and player train compositions, I started with game sharing.

Game sharing MVP

The idea of game sharing is to make it very easy for players to share their saved games. The obvious way is to create a category in the Steam Workshop for saved games and then make it easy to upload them from inside the game. But this has a potential problem: the Workshop could become inundated with saved games, making it harder to find mods. For this reason I decided to research a way to share saves out of the Workshop.

What I came up with is basically a “NIMBY cloud”, a file hosting service for saved games, hosted by me. And just as you can view Workshop items with just a web browser, it is also possible view saved games with a web browser. But, unlike the Workshop, since I fully control the web site, I can make it as sophisticated as I want. So a private web map is generated for every uploaded save, and when you visit the save link in a browser, you can see a preview of the save rails and buildings. Let’s see an example. Imagine you are playing and decide to share your current game. You open the main menu, then select Share game to open the share dialog:

Then you select one of the share slots, and click Upload (or Overwrite). That’s it, no more steps. After the upload is done a link is generated and you can visit it in a web browser or copy it to the clipboard. That link opens up a page with a map preview and a button to download the game. Anybody with the link can visit it and play around with the map and download the save. See some examples contributed by players:

  • UKHS by Pintodog
  • Indorail by LVSKB
  • Limburg by haje1234567890
  • North America by NIMBY Rails MP Server (NOTE: this is a very big map, your browser can take 10s+ to load and process the map preview)

After the save is downloaded, it can be directly opened from the Downloads folder. v1.7 registers itself with Windows as the file handler of .nimbyrails5 files, so any folder is valid for opening saves.

This project wouldn’t been possible without Protomaps and MapLibre. Protomaps is a very efficient way of processing, storing and serving OpenStreetMap tiles for web maps. It makes self-hosting OpenStreetMaps very easy. I am using a low fidelity map to save money, but it is perfectly capable of serving a fully featured map. MapLibre is a WebGL map renderer, with support for vector tiles, which results in a very smooth and slick map display. It is also capable of doing a lot of processing in the browser to make some very challenging data layers usable, like the preview of the North America save I linked earlier.

I mentioned earlier “upload slots” and overwriting. This means players will be limited to a certain amount of uploads (5, for now) before they need to overwrite old ones. The reason is that, since I am hosting the files and the site, I need to be careful with the costs. This game is sold with a fixed price and no recurring revenue, so it is not a good idea to offer unlimited slots. That being said I will monitor the cost situation and add more slots if I see it’s okay. My intention with this feature is to offer an easy way to share files that even allows people who don’t own the game to get a preview of the save, and maybe think about buying the game. If this works out, the hosting costs will be easy enough to support.

Game sharing TBD

There is another side to game sharing: discovery and browsing. There should also exist a way to browse other players saves without having the link. In youtube terms, the current sharing functionality is for unlisted saves (anybody with the link can access the save page), but public saves are still not implemented (there is no home page or browser to see all the shared games). I will explore some implementation ideas for this during the public beta period of 1.7. But for the private period, I consider save sharing to be done, and I am starting with player train compositions.