|Goals:||Automatic Rail Routing|
Maintenance and Expansion of Rail Networks
OneDest, previously known as the Start Agnostic Routing Standard (SARS), is a rail routing standard first implemented on CivClassic, and is in use on CivMC. The standard was first just a set of criteria theorized by TheOrangeWizard which was designed on paper in a primitive version by Metriximor, and later implemented as the routing system of the CCCP, by smal, before becoming an official international standard near the end of that server.
Under the OneDest standard all stations are given a single, universal /dest command will function from any other OneDest station, avoiding the need for the complicated commands and route calculation tools found on previous systems like KANI and, OneDest's predecessor, AURA.
OneDest operates by dividing the map into increasingly smaller sub-divisions, typically on the order of Quadrant → Region → Nation → Town. Aditionally the OneDest prefix, a single $ character, is included on every command, allowing the system to coexist with other routing standards.
As an added feature, regions that rider is already in, can be ommited from the command, making the command that the rider has to type shorter in most cases.
OneDest routing allows for a high degree of abstraction and modularity, it was physically in one of three ways on CivClassic:
- Tree Junctions - A special type of junction designed with a linear layout. Examples: Lusitania, CSA, Terestai.
- Line Subdividing - A process of dividing long rail lines into smaller logical sections. Examples: Pripyat Line, HITS
- Hacked Junctions - An AURA/KANI junction with OneDest functionality hacked into it. Examples: Pripyat, Lumiere.
Unlike the roundabout junction designs used in previous routing standards, in a tree junction the destinations are always traversed in the same order. Additionally they are typically built as a physical U shape to facilitate future expansion.
The simplest SARS junctions follow a U shaped path composed of 4 sections:
1. Connections to children 2. The station disembark track 3. Shortcuts 4. The default path
Connections to children
As the first portion there are the connections to child nodes of the junction, a typical example being a nation's main station connected to several internal rail stations. Shortcuts to children of children can also be made in this section, but must be placed before their parent in the line order.
Following the connections to children, there is the disembark track, where the rider's travel will be stopped if the name of the current junction is in their /dest.
Shortcuts are connections to any station that is neither a child nor an ancestor of the current node. They serve as addons that optmize travel times and routes.
The Default Path is the parent of the current node, it is the very end of the junction U and is always entered without any [destination] sign.
Entering the junction
As the OneDest junction U line must always be traverssed in the same order, special consideration has to be done in regards to sending the rider to the start of the line whenever they enter the junction.
The easiest method and most implemented was having the rider travel through the U backwards until its starting point and then bounce back to the proper direction, using 1 detector rail touching 2 powered rails at the start point to bounce back the rider. This approach also reqiores all junction signs to operate under reversed [!destination] logic and there must always be at least one normal rail between a dest detector rail and its turning rail.
The other approach is having a separate dedicated arrival track for the junction (this allows for the use of regular [destination] signs in the junction and avoids collisions), in AURA/KANI stations like Mount September this was implemented by having a special [destination] $ sign in the roundabout that would transfer the rider to the start of the OneDest junction.
Line subdivision was implemented on long rail lines like the Pripyat Line, and the HITS. It was an approach that predated the introduction of the OneDest $ prefix and was intended as a way not to break travel on these rails. It can be a valid way to implement routing, however is discouraged due to the fact that any given line-subdivision node can no longer have a disembark track and that line intersections can be hard to manage. For this reason it is only appropriate for quadrant and region level nodes.
Hacked Junctions, as the name implies, were a way of hacking OneDest functionality into existing AURA/KANI junctions, they were very hard to maintain, understand and expand and were mostly built as a temporary compromise before a proper Tree Junction could be built. They will likely not be making an apperance on future servers.