Re: 4-way intersections: Throughput and deadlocks [image heavy]
Posted: Tue Aug 08, 2017 10:24 pm
by aaargha
@ridesdragons: I'll get back to you tomorrow as I don't have time to test that one right now. From the looks of it it should behave mostly like the D rated roundabout except that yours will possibly have a bit lower throughput as the straight paths intersect for opposing trains, though that might be compensated by the left turns not intersecting, we'll see.
@Tallinu: I've included a blueprint for the endpoints with instant stop stations below. The idea is that you have a signal closely followed by a train stop, this stop is only enabled when the signal is red. Further down the line you have another train stop with the same name that is enabled when the signal is not red. What happens is that trains path to the far away one but change to the close one just as they get to it, placing them almost instantly at the train stop.
When I first applied this it tanked my UPS from 160-180 to about 90-120 on the 4-lane multi-cross. Interestingly enough what took more time was not the train pathfinding, that increase was very small, but the electrical network! The blueprint contains 48 super power poles for each of the 4 endpoints it became a mess of cables when I placed it, as I didn't need the power for anything I disconnected all the poles from the electrical grid. That turned out to be a mistake, I had just created 192 additional electrical networks, adding about 0.6ms of additional processing time each frame, fixing that has to be among the stupidest performance optimizations I've ever done. Learn from this kids, keep your power poles connected
It's still a slight UPS hit but not nearly as much.
Great work on the improved spawner, I'll have to implement something like that to get better accuracy on the really high performance intersections.
@Tallinu: I've included a blueprint for the endpoints with instant stop stations below. The idea is that you have a signal closely followed by a train stop, this stop is only enabled when the signal is red. Further down the line you have another train stop with the same name that is enabled when the signal is not red. What happens is that trains path to the far away one but change to the close one just as they get to it, placing them almost instantly at the train stop.
When I first applied this it tanked my UPS from 160-180 to about 90-120 on the 4-lane multi-cross. Interestingly enough what took more time was not the train pathfinding, that increase was very small, but the electrical network! The blueprint contains 48 super power poles for each of the 4 endpoints it became a mess of cables when I placed it, as I didn't need the power for anything I disconnected all the poles from the electrical grid. That turned out to be a mistake, I had just created 192 additional electrical networks, adding about 0.6ms of additional processing time each frame, fixing that has to be among the stupidest performance optimizations I've ever done. Learn from this kids, keep your power poles connected

Great work on the improved spawner, I'll have to implement something like that to get better accuracy on the really high performance intersections.
Instant stop end points
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