Train simulator · post-Soviet rolling stock · route Бердичів – Михайленки

Train Sim roadmap

Five milestones, sixteen stages, twenty-one OpenSpec changes. Each stop on the line is one change; the lamp shows its state the way a signal would.

14 / 21 changes archived · 67% · current: s09-station-interlocking-2
Green: archived Yellow: in progress Grey: planned
M1

Headless core

complete

Everything verifiable without graphics: tests, CSV traces, regression runs.

  1. S00Foundation2026-10-12
    s00-foundation

    Unity 6.6 + URP, C# core, headless CLI, 1/10/40 Hz scheduler, deterministic replay, localization (uk, en).

  2. S01-1Track graph and profile2026-10-13
    s01-track-motion-1

    Segments, nodes, switches, travel along the graph, gradients, curvature, electrification.

  3. S01-2Consist and longitudinal dynamics2026-10-13
    s01-track-motion-2

    One mass per vehicle, couplers with draft gear, running resistance after the ПТР formulas.

  4. S01-3Route package format2026-10-13
    s01-track-motion-3

    Manifest, track files, loader and validator, ots validate, the synthetic test route.

  5. S02Air system2026-10-13
    s02-air-system

    Reservoirs and orifices, brake pipe, driver's brake valves 395 and 254, compressor.

  6. S03Freight brake and adhesion2026-10-13
    s03-freight-brake

    Distributor 483 with load and profile modes, brake cylinders, shoe friction, wheel slip.

M2

See it move (AC)

complete

A VL80T you can drive in a 3D world, with gauges and a cab switch panel.

  1. S04Traction (VL80T)2026-10-18
    s04-traction

    Pantograph, main breaker, transformer and tap changer, traction motors, auxiliaries, neutral sections.

  2. S05Visual frontend2026-11-09
    s05-visual-frontend

    Track mesh, vehicles, floating origin, cameras, world built from the route package, sandbox spawn.

  3. S06Driver HUD2026-11-10
    s06-driver-hud

    Gauges for ГР, ТМ, УР, ТЦ; speed and tap position; rebindable keys; cold start.

M3

Signalling and route

in progress

The primary route Бердичів – Михайленки with automatic block, station interlocking and cab signalling.

  1. S07-1Route format additions and route builder2026-11-10
    s07-primary-route-1

    Kilometrage, speed limits, station files; ots-route builds packages from OpenStreetMap and terrain heights.

  2. S07-2Primary route data2026-11-10
    s07-primary-route-2

    Double line through Бердичів and Михайленки, map corrections from schematics, posts and boards in the world.

  3. S07-3Signals, catenary sections, portals2026-11-11
    s07-primary-route-3

    Signal placement from schematics and by rule, catenary sections and contact wire, route boundaries.

  4. S08Automatic block2026-11-11
    s08-autoblock

    Block sections, occupancy from coupler faces, 3- and 4-aspect signals, signal passed at danger.

  5. S09-1Core interlocking2026-11-12
    s09-station-interlocking-1

    Station sections and train routes derived at load, route setting and release, invitation signal, auto mode.

  6. S09-2Primary route interlocking datacurrent branch
    s09-station-interlocking-2
    • Insulated joints in every crossover
    • Бердичів crossovers 12–10 and 8–6 corrected
    • Station data checked signal by signal; switch normal positions
    • Repeater signals ПН1, ПН3; lens layouts after ЦШ-0001
    • ots interlocking listing
  7. Shipped into players like packages, loaded with GlbModel
  8. Model per signal from kind, mount and lens layout; lit lenses at each model's lens places
  9. Procedural mast and dwarf kept where no model fits
  • S10АЛСН and ЕПК
    s10-alsn-epk

    Cab signal codes from aspects, cab signal on the HUD, vigilance device and emergency application.

  • S11Station control panel
    s11-station-panel

    2D panel drawn from the station schematic: occupancy, routes, switches, aspects; buttons send interlocking commands.

  • M4

    Visuals

    plannednew

    The world beyond track and wire: real models by the line, ground under the track, plants on the ground. Frontend and package data only.

    1. S12Lineside models
      s12-lineside-models
      • 57 glTF signal models in lineside/signals/: mast, dwarf and gantry signals, repeaters, indicators, relay cabinets, cable boxes
      • Model per signal from kind, mount and lens layout; lit lenses at each model's lens places
      • Shipped into players like packages; procedural mast and dwarf kept where no model fits
      • Later: catenary masts, posts and boards, platforms
    2. S13Terrain
      s13-terrain
      • Ground mesh from the route's terrain height samples, in tiles streamed with the floating origin
      • Track bed: embankments and cuttings, ballast shoulders, slopes blended into the ground
      • Ground textures by kind: field, verge, ballast, platform areas
    3. S14Vegetation
      s14-vegetation
      • Procedural grass and low plants, instanced around the camera
      • Trees and shelter belts (лісосмуги) along the line, by rule or from OpenStreetMap land use
      • Seeded per tile, so every run looks the same; clear strip kept by track and wire
    M5

    Traffic

    planned

    Other trains on the line, driven by the same commands as the player.

    1. S15AI trains
      s15-ai-trains

      AI driver with braking that allows for freight air delay; traffic spawn at portals; switch which train you drive.

    Dependencies

     S00 → S01-1 → S01-2 → S02 → S03 → S04 → S05 → S06
             │                              │
             └→ S01-3 → S07                 │
                  │      │                  │
                  └──────┴→ S08 → S09 → S10 ────→ S15
                         │           │              ↑
                         │           ├→ S11         │
                         │           └→ S12         │
                         └→ S13 → S14       S04 ────┘

    Signalling and the route build on the track graph alone, so they ran beside the brake work. The visuals stages need nothing from S10, S11 or S15 and can run beside them. Unit tests use the synthetic route; the primary route is the integration target.

    v2

    After v1, unordered