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.
Everything verifiable without graphics: tests, CSV traces, regression runs.
Unity 6.6 + URP, C# core, headless CLI, 1/10/40 Hz scheduler, deterministic replay, localization (uk, en).
Segments, nodes, switches, travel along the graph, gradients, curvature, electrification.
One mass per vehicle, couplers with draft gear, running resistance after the ПТР formulas.
Manifest, track files, loader and validator, ots validate, the synthetic test route.
Reservoirs and orifices, brake pipe, driver's brake valves 395 and 254, compressor.
Distributor 483 with load and profile modes, brake cylinders, shoe friction, wheel slip.
A VL80T you can drive in a 3D world, with gauges and a cab switch panel.
Pantograph, main breaker, transformer and tap changer, traction motors, auxiliaries, neutral sections.
Track mesh, vehicles, floating origin, cameras, world built from the route package, sandbox spawn.
Gauges for ГР, ТМ, УР, ТЦ; speed and tap position; rebindable keys; cold start.
The primary route Бердичів – Михайленки with automatic block, station interlocking and cab signalling.
Kilometrage, speed limits, station files; ots-route builds packages from OpenStreetMap and terrain heights.
Double line through Бердичів and Михайленки, map corrections from schematics, posts and boards in the world.
Signal placement from schematics and by rule, catenary sections and contact wire, route boundaries.
Block sections, occupancy from coupler faces, 3- and 4-aspect signals, signal passed at danger.
Station sections and train routes derived at load, route setting and release, invitation signal, auto mode.
ots interlocking listingGlbModelCab signal codes from aspects, cab signal on the HUD, vigilance device and emergency application.
2D panel drawn from the station schematic: occupancy, routes, switches, aspects; buttons send interlocking commands.
The world beyond track and wire: real models by the line, ground under the track, plants on the ground. Frontend and package data only.
lineside/signals/: mast, dwarf and gantry signals, repeaters, indicators, relay cabinets, cable boxesOther trains on the line, driven by the same commands as the player.
AI driver with braking that allows for freight air delay; traffic spawn at portals; switch which train you drive.
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.