One-way roads needs to know that they are exactly that, so that overtaking vehicles know that oncoming traffic is no issue. Without that knowledge, no overtaking across junctions can take place, or even across slopes or around bends, although that depends to a greater extend on the surrounding landscape as well in real life.
I agree that one-way roads should know what they are (meaning it would be an asymetric waytype), especially since current 'one-way-roads' don't actually forbid vehicles to go the other direction if there are waypoints after the signs, or if a citycar spawns on it.
But I'm wondering - the law is not the same everywhere. Eg. in the US, you are allowed to simply stay on the left lane, and others may overtake you on the right. Same is true for Austrian cities. Furthermore, if there is only one lane, you are supposed to drive about 20 km/h quicker than the car you try to pass. If there are two or more lanes, you only need to be slightly quicker and can pass on a longer stretch of street. You might even stay on the left as long as there are cars on the right, and no quicker car is coming from behind.
So if anyone is going to put some more work into this, I would suggest:
- Introduction of asymetric ways - essentially, each piece of road would exist twice, once for each direction. This would be a requirement for one-way-road to keep track of their direction, but also to graphically destinguish the directions (eg. having a guiding rail always to the right of the one-way-road)
- If a car is on the right lane and a slower* car is in front, and no faster car is on the left lane on same height or behind, change to the left lane
- If a car is on the left lane, and there are no cars ahead on the right lane, it switches to the right lane
- If a car is on the left lane, and there are cars ahead on the right lane, if those are slower, it does not switch to the right lane on it's own.
- If a car is on the left lane and a slower car is on the left lane in front, honk. I mean, send a signal to the car in front to switch back to the right lane as soon as possible. (but if we can get "honk"-sounds to that, I wouldn't be mad either...)
Now obviously, one problem with this would be that normally, if there are cars of the same speed on the right lane, no left-lane car might ever get back in. Therefore, cars need to have at least a 'car length' of distance to each other, and left lane cars can squeeze in that distance. If a car has less than the 'car lenght' distance to the car in front, it slows down slightly. to build up that safe space again.
*All instances of "slower" and "faster" car mean a comparison of the speed a car could go with the current load, not it's actual speed at the given time. Also, it means a 'significant' difference. If we had a difference of 20km/h for normal overtaking, I guess 5km/h would be appropriate.
I think with rules like these, traffic of mixed vehicle types should go significantly faster. But it may be too much for too little gain, since it's ultimately just about roads. And Simutrans being a game of transportation, most of your vehicles might be trucks, which would have a "no overtaking allowed" flag anyway.