I am working on a road builder / traffic management game called Traffic Architect. New districts keep appearing on the map by themselves - you never place one and you never zone anything - and everything you build is the network that has to reach them and carry what they generate. They fill your roads with cars until the roads choke, and trains are how you take that load back off.
A train carries far more people than a bus does, for less upkeep per seat, so one busy line does what a fleet of buses can't. Every line is set to carry passengers, freight, or both, and that choice turned out to be the most interesting thing in the whole system. Goods stops are slow. People walk on and off while the doors are open; a container has to be craned across, and the train stands there for it.
The catch is what a combined line is worth on paper. Nobody is assigned to a line here - every trip compares riding against driving and picks - and the estimate a rider goes on has to assume the long stop everywhere, because the line might get away with a short one but nobody can count on it. So declaring a line combined costs you commuters before a single crate turns up. The train itself only pays the long dwell where it really does goods work, but the schedule people plan around never knows that in advance. It's the honest price of keeping the option open, and it means a dedicated line beats a hedged one without any rule saying so. Going freight-only pays you back with a longer train, since a boxcar rake doesn't have to fit a platform.
Metro is underground, and it's passenger-only. You can't work goods through a tunnel station, so a line that touches one is locked to passengers until you take that stop out.
Changing trains costs time, and how much depends on the platform rather than on the station. Two lines standing at the same track is a step across, however grand the building around it. Two platforms means an underpass or a bridge. A hybrid station, with surface trains above and metro below, is the slowest, because you're going up or down. That time is priced in before anyone decides to travel, so a slow interchange can lose you a connection that looked fine on the map.
Level crossings included - the barriers close on where the train physically is rather than on a timer, and they only lift once the tail is clear. The part I like is that the car routing counts the expected barrier wait as a cost, so a road over a busy line becomes less attractive and traffic drifts onto the roads that don't cross it.
Coming to Steam this autumn, with a free demo before that: https://store.steampowered.com/app/5028050/Traffic_Architect/?utm_source=reddit&utm_medium=social&utm_campaign=level_crossings&utm_content=trains