The system I proposed is similar to what OpenTTD and Factorio use, with one thing missing that can be added separately or along with the suggestion in #11 to actually fix the problem of trains getting deadlocked. In other words, this is the actual fix; #11 is a change that will make it easier to design working signaled track networks.
A station should be able to limit the number of trains that can use it at a time.
For waiting stations, this limit is always set to 1. A train cannot attempt to path to a waiting station until that waiting station is not being used by any other train.
For goods (and passenger) stations, the train limit should be adjustable either on the station building or on the import/export settings screen.
Here's why this is needed: Let's say you have a large track network with four trains on it. You have a station that wants to transfer a large quantity of goods to another station, and the track loop for each station allows one train to be in the station and another to be waiting while not blocking the main track.
Each train waits until it can reserve some amount of track and then starts pathing towards the sending station. Once they have arrived, they start pathing towards the receiving station. At some point, two trains are waiting at each station, unable to reserve the track between the stations until another train that is waiting for it to leave leaves.
By setting the stations to only allow 2 trains, this would mean that the first two trains see that the sending station needs to move goods, but once they have departed, the other two trains would not see any goods to move at that station. The trains stop reserving the sending station when they start going to the receiving station, and only unreserve the receiving station when they start moving either to another sending station (which might be the first receiving station, in which case they instantly arrive) or to a waiting station.
That is, both the sending and receiving station are reserved when the train starts pathing, and each is only unreserved once the train has fully exited the platform.
If the first train arrives at the receiving station before the second train has left the sending station, it will not see any additional goods to move because trains 2 and 3 are both reserving the sending station, and will path to a waiting station.
This goes along with #11.
The system I proposed is similar to what OpenTTD and Factorio use, with one thing missing that can be added separately or along with the suggestion in #11 to actually fix the problem of trains getting deadlocked. In other words, this is the actual fix; #11 is a change that will make it easier to design working signaled track networks.
A station should be able to limit the number of trains that can use it at a time.
For waiting stations, this limit is always set to 1. A train cannot attempt to path to a waiting station until that waiting station is not being used by any other train.
For goods (and passenger) stations, the train limit should be adjustable either on the station building or on the import/export settings screen.
Here's why this is needed: Let's say you have a large track network with four trains on it. You have a station that wants to transfer a large quantity of goods to another station, and the track loop for each station allows one train to be in the station and another to be waiting while not blocking the main track.
Each train waits until it can reserve some amount of track and then starts pathing towards the sending station. Once they have arrived, they start pathing towards the receiving station. At some point, two trains are waiting at each station, unable to reserve the track between the stations until another train that is waiting for it to leave leaves.
By setting the stations to only allow 2 trains, this would mean that the first two trains see that the sending station needs to move goods, but once they have departed, the other two trains would not see any goods to move at that station. The trains stop reserving the sending station when they start going to the receiving station, and only unreserve the receiving station when they start moving either to another sending station (which might be the first receiving station, in which case they instantly arrive) or to a waiting station.
That is, both the sending and receiving station are reserved when the train starts pathing, and each is only unreserved once the train has fully exited the platform.
If the first train arrives at the receiving station before the second train has left the sending station, it will not see any additional goods to move because trains 2 and 3 are both reserving the sending station, and will path to a waiting station.