Railway Operation Simulator

Railway Operation Simulator (ROS) is an open source signal box simulation 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 (software)|Wine. 
The program was written by developer Albert Ball known for creation of the ZX Spectrum|Spectrum game Jumping Jack (video game)|Jumping Jack in 1983. It was first released in 2010 and is written in C++ which is built using the Borland C++|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. 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 ==
File:Railway Operation Simulator Birmingham UK.png|thumb|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 Railway_signal|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 ==
File:Railway Operation Simulator Chicago "L" Train Map.png|thumb|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.
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:
 
== References ==
== External links ==
Railway Operation Simulator main website
Category:Train simulation video games
Category:Windows-only freeware games
Category:Windows games
Category:Video games developed in the United Kingdom