Announcing: ROMap (Railroads Online Map)
22. December 2022

With most of the original 3rd party tools gone by now, including the much loved Minizwerg mapping service by ian76g, the Railroads Online community is left with very little.
There are still a few of the original tools left that are still somewhat functional, such as ROSE, the studio site and of course most of my tools. Aberd seems to still maintain his spreadsheet tool as well. A void has been left in the community ...

I have decided to start a brand new project, that I'm naming ROMap. For the TL;DR; people, here's a quick outline of some of the planned features:
  • Host based player groups (kind of like a friends list).
  • Server listings (with online status).
  • Map sharing during play sessions.
  • Map sharing (with or without download options).
  • Remote / cloud storage of saves.
  • Local world backup, with restore and grief repair (RO World Backup).
  • Tree manipulation tools (Tree-inator).
  • Rolling stock name and number editing.
  • Money and XP editing (RO Money Cheat).
  • Tools for creating custom placed industry maps.
Please note that this project, just like my other tools, will be an application that you download once and run.

For further details, please read the sections below.

Multiplayer, the problem
Railroads Online! is designed to be a multiplayer experience, requiring an active internet connection to play together. We all know that by now.
Playing together however, can be a bit of a hazzle in that the game makes use of Steam's lobby system which is region locked. This means that all client players will have to change their Steam Downloads region to that of the hosting player. What is needed here, is a way to find out whether friends in different regions are playing right now and sharing the region information, allowing client players to reconfigure their Steam so they can join.

To prevent random players from joining an active session, it is generally recommended to set a password on the session you are hosting. Griefers do exist even in this community.

So, some information will have to be shared between host and client players, in order to play together.

Multiplayer, the solution
ROMap, just like Railroads Online itself, is designed with multiplayer in mind. One of the goals is to provide you with some better tools than the game currently has to offer.

ROMap will not require any 3rd party account creation or that you use your Steam account to log into the ROMap service. ROMap ties directly into your existing Steam account by talking to Steam on your computer. This does require that you have Steam running and that you are logged into Steam, but then this is also a requirement to start the game. This provides a seamless integration with your existing Steam authentication, which ROMap uses to distinguish players without compromising your security.

With the user authentication out of the way, let us focus a bit on the surface stuff.

After connecting to it's server (hosted in Central Europe), ROMap offers the means to set up a player group or join one (or more). Player groups are a bit like a friends list and works across Steam Download regions. Player groups are tied to players wanting to host play sessions. Anyone can have one of these player groups and everyone can join any number of player groups.
One important thing regarding player groups, is that they are invite-only, controlled by the host player. Inviting players to join can either happen through a "use-once" invite code or via an application to join.
Player groups are not locked to a single world or save, but to the hosting player. This allows a group of friends to play in different worlds without having to re-invite everyone.

Once a player group has been established, the hosting player can then set a password and load up the world as normal. Switch to ROMap and either use the password generator or paste in the chosen password for the session, then click the button which then flags the session as active in ROMap. ROMap will then share the host's Steam Downloads region and the chosen password with all client players within the host's player group.
No need to publish the chosen password at the risk of someone unwanted joining. No need to share which Steam Downloads region the host is in. No need to publish that the play session is live. ROMap handles all that.

Should a client player log onto ROMap after a play session has started, the client player will of course still be able to receive this shared information and be able to join the live play session.
If a new player joins the player group while a live play session is ongoing, the new player also receives the needed information to be able to join the game.

Server Listing
Please note, that the following only applies to ROMap. If you are not using ROMap, none of this is available.

ROMap provides a server list. To get on the server listing, all you have to do is host a play session through ROMap. Optionally if you are running a Railroads Online community yourself, you can choose to create a community profile.

The server listing will let you browse through all currently live play sessions, as well as any offline community profiles that may have been created. Through the server listing, you can preview each session's current map and also apply to join the player group. This is a combined list of RO servers and a "Looking For Group" rolled into one.

Live Map Sharing
Similar to previous web based mapping sites, ROMap (as the name suggests) provides a map of the world, showing the track layout, industries and rolling stock.
Setting up a play session in ROMap for the hosting player is not that different from loading up a world in Railroads Online. Yes, this is an extra step in loading up a world for a play session, however doing this enables ROMap to share the map of the loaded world with everyone in the same player group, as long as everyone is using ROMap.
Whenever the host saves, the changes to the map is sent to all other ROMap client players.

The layout is also shared for the server listing, allowing people to preview your world while they are browsing the server listing.

This live map sharing only happens in memory and is never saved to disk anywhere - not even on ROMap's server.

Static Map Sharing
"I want to share my map with the community, make it available for download."

This is where static map sharing comes in. Just like we used to be able to on Minizwerg, ROMap also offers the option to upload your world to the ROMap server.

Disk space unfortunately does not come in infinite sizes, so there will be some restrictions. By default everyone is granted 10 share slots, meaning you can upload up to 10 different unique worlds. If you upload a newer version of the same world, ROMap will automatically replace an existing one with the newer version, maintaining the same share slot.

You will get a choice between sharing and publishing your save. Sharing your save will allow others to view your save, but they will not be able to download and use it.
If you want to make your save available for others to download and use, you have to publish your save. Published saves still take up a share slot, however.

If you are into creating maps with custom placed industries or perhaps challenge maps, you can get in touch with me and apply for "Map Creator" status. Map creators will be able to upload an unlimited number of unique saves. Fair warning: if this status is abused it can be revoked. I still have disk space to worry about.

Remote / cloud storage of saves
Over the past year, I have seen people asking for cloud synchronization of their saves, which has gone ignored by the developer of the game.

With ROMap I will be offering remote / cloud storage of saves, if enabled in the settings. When enabled, ROMap will keep a private copy of all your local saves synchronized with it's server.
Whenever you save, ROMap will detect the save taking place and then upload a copy of the save to it's server.
If you are running ROMap and Railroads Online on different computers using the same Steam account, ROMap will ensure that both / all computers always have the latest version of your saves.
Just remember to run ROMap everywhere!

This remote / cloud storage of your saves is private to your Steam account and separate from the map sharing / publishing services.

Local world backup
RO World Backup has been published and available for about a year now. Some have chosen to make use of it, but I have also seen a lot of people cry and complain over their game crashing and their progress being lost because they forgot to save or accidentally have overwritten their existing worlds.

ROMap will contain local world backup, however I will be introducing additive backup methods instead of raw file copying as the first generation of my backup tools did.
The overall difference is that additive backups take up less space, but also provides a faster platform for providing griefing repair tools. As with RO World Backup, all backups will be GZip compressed to further conserve disk space.
As with RO World Backup, a full backup history will be available, allowing for the restoration of previous versions of your world, should the need arrise. Yes, it will be compatible with RROx (the extender) and it's auto-save feature.
The backup history listings will also allow you to easily purge older backups that you no longer need.

Should you be subjected to griefing - i.e. someone joins and starts randomly deleting your trackwork, vehicles, facilities etc., the safest option will be to save the session and then shut the session down.
This may at first glance seem counterintuitive, however performing this final save to include the damage done, will ease the process of repairing the damage.
Due to the save performed, ROMap will of course update it's map display to reflect the damage to the world. In the map view, you can then switch to the grief repair tools, zoom in, box select individual areas that have been damaged and click the repair button. This will then have ROMap go through the backup archives and find the missing tracks, vehicles and facilities and restore this data back into your save.

If you don't feel the need for backups and this griefing repair option, you can disable the backup system. Warning! Disabling the backup system also disables grief repairing!

Tree manipulation tools (Tree-inator)
One of my slightly more popular tools has been the Tree-inator, a tool for automatically manipulating the trees in the game world.

Having the ability to clear out all the trees in the world, to make laying tracks easier, is golden. ROMap will include all of the previous features of the Tree-inator, including being able to trim tracks (both spline systems) and custom placed industries. Since ROMap has a graphical interface, there will also be a brush tool available allowing you to replant or remove trees using a paint brush. This was planned for the Tree-inator version 2, long before Railroad.Studio did it.

For track trimming, both spline systems are be fully supported. The distance can be set either globally or you can use the selection tools to customize the track trimming distances in specific areas, should you want that.

Rolling stock name and numbering
Currently the game does not give us the option to rename or renumber any of our rolling stock once it has been purchased, which can be a bit annoying.

The rolling stock view in ROMap will give you an overview of the rolling stock that exists in the world, as well as options to edit names and numbers for all of them.
ROMap will try to latch onto any existing numbering scheme you might have applied to the different types of cars and locomotives, to help you keep track of your numbering scheme. If you are starting a brand new world, you can preconfigure your numbering scheme in ROMap and through that help yourself keep track of which numbers newly purchased vehicles should have.

I may go as far as offering lists of names that can be browsed or chosen at random, for locomotives.

For those hosting a play session and therefore having direct access to the save itself, ROMap will also offer options to sell back rolling stock. This will delete the vehicle in the save and refund the purchase expenses to the host player's profile.

Money and XP editing
My most recently published tool, RO Money Cheat, will also become a part of ROMap.

While the name certainly implies cheating, this tool was designed to first and foremost act as a company finances manager more than a cheat tool. Tranferring funds and XP between player profiles was added to make it easier to fix things when client players forget to join the hosting player's company in-game.
The same can be said about the reset function, that transfers the differences in money and XP back to the hosting player's account, resetting the selected player's funds and XP back to their starting state.

Direct editing of level, XP and money will still be possible in ROMap, however this has to be specifically enabled as opposed to always being enabled in RO Money Cheat.

Tools for creating custom placed industry maps.
While we would all love to have a tool where we can simply drag, drop and rotate industries where we want them in the world, the reality is that this is not a simple thing to achieve, because we don't have a sufficiently accurate terrain height data available to us. Yes, I am aware that some terrain data does exist, it is also a huge amount of data that is far from easy to work with.

Several guides have been made in the community on how to manually manipulate the positions of the industries in the game.

One method of placing industries in custom locations, is to go into the world and place down "Firewood Depos" at the locations where industries are wanted and then replace the "Firewood Depo" with a specific industry. ROMap will be offering this sort of replacement tools, as well as direct positional editing.

As part of this map customization, there will also be tools available for clearing out existing rolling stock, replacing the starting rolling stock, deleting track and groundwork as well as player profile cleanup (i.e. deleting player profiles). These tools will hopefully make it a bit easier to create custom maps and clean them up before publishing them.

Feedback additions
I have gotten a bit of feedback since posting this article. This section covers wishes provided through feedback.

"Lost vehicles" is a frequent thing to happen in Railroads Online.
Highlighting of off-track vehicles and possibly a way to recover off-track vehicles, such as teleporting them back to spawn.

"Tasks / jobs" - minizwerg used to have a tasks / jobs listing, indicating things to do.
Minizwerg made use of industry data to provide a list of things to do, such as "Transport X cars of Y to industry Z".

Final notes
As mentioned in the beginning, ROMap is a stand alone application, a program. As with my other tools, ROMap will find the game and your saves on it's own.

All uploading and downloading of saves is handled in the background by ROMap, so you don't have to mess with finding files, copying them back into the saves folder and properly renaming them so the game can find them.
When downloading a save, ROMap will present you with a screen that lets you decide which of the 10 save slots you want to store the downloaded save to.
Should you choose to download a customized map of some kind, you will again be prompted to pick a save slot to hold the custom map.

There will of course also be options available to delete existing saves or simply overwrite them with the map you are downloading.

For some of the features in ROMap to properly work, some amount of monitoring is required.
ROMap will monitor the game's saves folder for any changes. This is needed for ROMap to be able to detect when you save the world in-game. The only thing monitored is changes made to the save files. This allows ROMap to automatically create backups and reload the saves for the live map sharing (and remote / cloud storage).

While ROMap will connect to a server in Central Europe and maintain this network connection for the duration, only data relevant to the game world is transmitted and this over encrypted network connections only.
Your SteamID is used to distinguish one player from another and to provide the map sharing functions. Along with your SteamID, your current display name and current Steam avatar is also shared across the ROMap network, very much like what you see in the Steam Friends panel.
The game itself makes use of your SteamID and your current display name, for roughly the same purposes: to distinguish one player from another and to provide a name tag above the in-game avatar.

ROMap does not and will never perform any sort of data gathering or telemetry.
ROMap does not transfer any data that can identify you as a real person, your computer or anything else outside of the game.
ROMap does not keep logs of IP addresses and/or usage statistics.
ROMap does not share IP information between users. All users connect to ROMap's server - never directly player to player.
All IP information stays on ROMap's server and only in memory.

As mentioned the ROMap server is hosted in Central Europe.
I firmly oppose telemetry and data gathering currently performed by the big tech companies world wide, something that was considered spyware at the turn of the century.
There are strict laws in place in my country that govern what data can and can not be gathered and stored, to protect the individual user's privacy. Additionally there are EU laws and requirements in place to further protect privacy.

World Backup Tool
Railroads Online World Backup
Easy to use automated backup tool that keeps your worlds safe, save after save.

RO Money Cheat
RO Money Cheat
A save file money editor, manager and cheat tool for Railroads Online.

The Tree-inator!
The Tree-inator
Tree manipulation tool allowing the removal and replanting of trees across an entire world.