Gentek Rail System

These are general ideas for a future rail system.

Standards

  • Track gauge (inner <-> inner) = 1.96 m (to allow for SLRR railbed compatibility)
  • Minimum vertical clearance = 5.5 m
  • Minimum horizontal clearance = 4.0 m on straight sections, 5.5 m on curved sections (minimum)
  • General car length, wheel to wheel = 12.5 m
  • General car length, end to end = 16.5 m

Guides

  • Straight
  • Stop buffer (fwd or rev)
    • Instantly stops train to prevent derailment
  • Switch left (switchable, requires 2 connections in one direction)
  • Switch right (switchable, requires 2 connections in one direction)

Guide options

  • Block (acts as signal block delimiter)
  • Signal (can be used with block option, or separate for programmable addressing)
  • Switch Trigger (automatically sets switch for oncoming train, usually in unswitched direction)
  • External API output (sends information on car pass)
  • Autonomous train commands (for selective autonomous train movement with wildcards)
    • Short Horn/Whistle
    • Long Horn/Whistle
    • Bell Start/Stop
    • Set Speed
    • Timed Stop (mostly for stations)
      • Time in Seconds
      • Doors Open
      • Horn/Bell on Depart
      • Departure Speed
      • Reverse
    • Switch Trigger (this will also automatically stop train until switch block is clear)

Train automation

Trains will have 4 methods of control:

  • Autonomous
    • Trains move on their own and follow commands set in guides
    • Can be stopped, started, rerouted, etc.
  • Programmed
    • Trains released from a set point and move through switches in a set program
    • Can only be stopped/started for emergengies; will always follow program, cannot be rerouted
  • Manual
    • Fully controlled by driver; no guide commands, will only trip brakes on a red signal
  • Remote
    • Manual, but in-train controls locked out, controlled at a remote location

Ideally the engines could be programmed in a way to start up and assign routes through various switches to reach an endpoint (since freight trains would be stored either in a yard or in a "magic depot" instead of running continuously) but this is obviously not a consumer-friendly setup - programmed routes will likely be custom-made, and autonomous driving will be available to consumers as an easier alternative

Rolling stock

  • Standard Boxcar
    • many different themes (won't list here)
  • Standard Tanker
    • some different themes (to be done)
  • Standard Flatcar
    • not really any themes to make, but has different cargo
  • Standard Hopper
    • themes yes indeedy
  • Standard passenger car
    • could make a lot of themes for this
  • Standard mail/baggage car
    • yep more themes sure thing
  • Russian-styled boxcab engine
  • US-styled hood-unit freight engine
  • F40PH/P42DC passenger service engine
  • Electric standalone passenger unit (metro/subway)
  • Maybe a steam engine (unlikely)

SLRR compatibility

Problems with SLRR compatibility:

  • Guide prims are too close together to have trains travel at speed and calculate movement directions
  • Curve radius is too small (turns too quickly) in some locations, which might screw things up at high speeds
  • Switch designs are passive
  • No signalling, which will be a critical aspect of the system (particularly for automated trains)
  • Public SLRR lines have no control system or prompt maintenance
  • Tier for trackside yards/depots would be too expensive
  • Privatized SLRR lines can just set up additional guide pieces

Numbering

5-character alphanumeric identifier assigned to all cars, with O, Q, I, and S excluded (to avoid misinterpreting as 0, 1, and 5) similar to VIN2 system.
Identifiers are automatically assigned starting with 10000 to avoid leading zero, but leading zeros are possible through manual assignment for special vehicles (typically 3 digits) in rare situations - this will not be available to the public.
Numeric-only identifiers (10000-99999) reserved for engines and power cars such that trains can be numbered without alpha characters in most cases for realism.
Supports 90,000 simultaneous power cars in-world (recycled safely; if supply runs out, new power cars may be assigned alphanumeric characters).
Supports 32,505,855 individual cars overall.

Communication

Communication currently done with shouting to allow for cross-region communication; however, may use relays, regionsay, and append random UUID to allow them to propagate through the system without feedback, as well as periodic keep-alive checks to ensure the sim is online - if not, trigger a red signal.

Problem pessimist checklist

Works

  • Crossing sims with keyframed movement
  • moving_end to detect when movement stops
  • Shout can be used across sim borders
  • Particles can have target in other sim

Doesn't works

  • Sensor across sim borders (not necessarily needed)

Untested

  • Curve system feasibility
  • Chained communications down entire consist when car(s) crossing border
  • Movement determination in each car (possibly by connecting guides?)

Path calculation

Aligned & no rotation OR any combination w/o smoothing

Get direct line between two points

Rotated w/ smoothing

If horiz offset <= depth distance, get arc on unit circle, then scale to ellipse marked by guides; otherwise, get above scenario at 1:1 ratio and scale horizontally (technically impossible for rails to be laid like this)

Offset & no rotation w/ smoothing

Internally plot midpoint of direct line, map two arcs using above method