About

Revision as of 15:36, 18 May 2021 by Krizar (talk | contribs) (Update latest version)

Railway Operation Simulator (ROS) is an open source signal box simulation[1][2] program created for Windows which allows users to both create and operate railway routes and services. The simulator can also be run under macOS and Linux under Wine.

Railway Operation Simulator
Railway Operation Simulator Logo.png
Original Author(s)Albert Ball
Developer(s)Albert Ball, Stephen Smith
Initial release2010
Stable release
2.8.0 / 2021-05-18
Written inC++
Available inEnglish
TypeSimulation
LicenseGNU Public License v3
Websitehttps://www.railwayoperationsimulator.com

The program was written by developer Albert Ball known for creation of the ZX Spectrum game Jumping Jack in 1983[3]. It has been described by studies as providing users with a free and adaptive platform to learn about driving trains and building railroads[4]. It was first released in 2010 and is written in C++ which is built using the Borland IDE compiler. The on screen displays are designed to mimic those of a typical British Integrated Electronic Control Centre, with a window depicting a track layout on which the locations and identifiers of services are displayed[5]. Three main modes are available which allow the user to operate a railway, edit the route map displayed, or create timetables using a special syntax. The availability of an editor has meant an ever increasing number of user-made routes being available from the online repository.

Map layout

 
Birmingham map in Railway Operation Simulator showing the area around Birmingham New Street station

Route layouts are represented as lines constrained to a 45 degree angle, with stations being solid dark orange rectangles constrained to lie either vertical or horizontal parallel to the running lines. All main signals are represented in an identical manner as a circle (or two in the case of four aspect signals) depicting the current aspect, with a "tail" anchored to the relevant running line and pointing against the direction of travel. Shunting signals are represented by an icon depicting a typical mainline British dwarf signal, with two aspects on and off. Portals allow continuation of running lines at a different positions on the map (where space becomes an issue), and are often used to represent tunnels in combination with the green bridge/tunnel entrance objects.

Map creation

Thanks to the inclusion of a route editor within the simulator there are a large selection of route simulations available for ROS. The elements needed to construct a route are placeable within a grid, with tracks, points and signals being added first and additional elements such as stations, sidings and text labels being added later. Once the visual representation of a route is completed, speed limits and distances must then be assigned to each track length, as well as the "preferred direction" of travel which is important for later setting up automatic signal routes.

To ensure a map is compatible with the operation mode, i.e. that a timetable can be created and services run across it, a route is held in a development state until it is run against the program's validator. The validator checks to ensure that all locations are named, portals are joined and tracks are complete.

Route operation

 
Chicago Subway route map showing automatic signal routes in blue and services during operation mode

The routing of services is carried out by the user by using one of three methods. If the running lines included on a map have been assigned a preferred direction of travel, then automatic signal routes can be set which can then be left unsupervised. Alternatively temporary preferred routes can be set on these lines, or an unrestricted route which has no such constraint on preferred direction used for untypical movements. Both of these are automatically cancelled after a service has run through them.[6]

Feedback is given on performance by means of the performance log which displays information on the entrance of services into the area, and their punctuality at timetabled locations. As development has progressed new features have been added to simplify the experience and allow the easier operation of larger routes including whole networks such as New York City Subway and London Underground. Such features include an action panel which displays a countdown for each service on the map indicating the point at which an action (such as routing across a junction) is required allowing the user to prioritise services.

Timetabling

In order to simulate various types of train services, including differences in rolling stock behavior, the simulator makes use of its own custom syntax, timetables being written within the program and then cross-checked by a built in validator. Various advanced movements can also be defined such as the formation of shuttles which repeat for a duration, and the joining or splitting of services at locations. A typical simple service entry within a timetable consists of three main parts: a two line description and initialization section, a set of calling points and waypoints, and finally a debrief.

The first section consists of information relating to the properties of the train itself: a headcode which identifies the service on the route map, a description of the service, the service start speed (km/h), maximum speed (km/h), mass (T), maximum power (kW) and maximum brake force (T). This is then followed by a statement declaring the start time, what type of service it is (e.g. a service commencing from a given coordinate location or a shuttle service) allocated by a special identifier, and any extra information such as the coordinates of entry or the service from which that service formed:

  2A02;Derby to Matlock;0;120;40;213;20
  10:06;Snt;1-45 1-46
  

this is then followed by a list of waypoints (in this case calling points):

  10:07;Derby
  10:10;10:10;Duffield
  10:12;10:12;Belper
  10:14;10:15;Ambergate
  10:18;10:19;Whatstandwell
  10:21;10:21;Cromford
  10:22;10:23;Matlock Bath
  10:27;Matlock
  

Finally the entry is concluded with an instruction which defines what should be done once the service has terminated, in this case change direction and form a new service:

  10:27;cdt
  10:28;Fns;2A05
  
  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.