Yellow train signal cannot be closed with circuits
Posted: Sat Apr 23, 2022 9:28 pm
was moved from bugs to suggestions by boskid — ssilk
Factorio version: 1.1.57
Mods: None
You cannot close yellow train signals with the circuit network. (They "lock" as yellow until the train which reserved them has passed).
This is the intended behavior. However, it is inconsistent with how other signal logic works, and somewhat counter-intuitive.
(I've filed this under "bugs" because it feels more like a "fix" than an "enhancement." Feel 100% free to move it if you want.)
Example setup:
1. Construct attached blueprint
2. Set trains to automatic
3. Enable combinator at start
Argument:
The reasoning I have mostly seen around the forum is that yellow signals are locked because the train has "committed" to that path; it is locked-in and cannot change course. However, this is not the case in-game. I can un-commit any train I feel like by closing a signal right after the yellow signal. This forces a repath; if the train finds an alternate path it will un-commit and go on the alternate path. (This is what happens on the top track). This is inconsistent; I can't close the yellow signal because the train is commited, but I can un-commit it with a single signal right next to this one? Why not just let me close the yellow signal?
This behavior is inconsistent with green signals. When I close a green signal, any trains coming along will redirect around the closed block if possible. If not, they will come to a stop at the closed signal. When I close a yellow signal, I expect the incoming train to redirect around the closed block if possible. If not, it will continue (there's nothing else to be done in this case).
Instead, when I close a yellow signal it does not close. This is very unexpected.
This is demonstrated on the middle and bottom tracks. On the middle track, we close a signal while it is green; the train diverts and goes around. On the bottom track, we close the signal while it is yellow. The train does not divert, despite having the opportunity to do so.
Proposed behavior in detail:
When a yellow signal is closed:
1. Attempt to path as though the block was closed.
2. If 1 succeeds, attempt to reserve the necessary blocks for the new path.
3. If 2 succeeds, un-reserve blocks from the old path and close the signal.
4. If 1 or 2 fails, then maintain old path and lock the signal as yellow (current behavior).
The proposed behavior maintains all necessary reserved blocks at all times, and therefore does not permit collisions.
(Longtime lurker, first-time poster. Am I doing this right?)
Factorio version: 1.1.57
Mods: None
You cannot close yellow train signals with the circuit network. (They "lock" as yellow until the train which reserved them has passed).
This is the intended behavior. However, it is inconsistent with how other signal logic works, and somewhat counter-intuitive.
(I've filed this under "bugs" because it feels more like a "fix" than an "enhancement." Feel 100% free to move it if you want.)
Example setup:
1. Construct attached blueprint
2. Set trains to automatic
3. Enable combinator at start
Argument:
The reasoning I have mostly seen around the forum is that yellow signals are locked because the train has "committed" to that path; it is locked-in and cannot change course. However, this is not the case in-game. I can un-commit any train I feel like by closing a signal right after the yellow signal. This forces a repath; if the train finds an alternate path it will un-commit and go on the alternate path. (This is what happens on the top track). This is inconsistent; I can't close the yellow signal because the train is commited, but I can un-commit it with a single signal right next to this one? Why not just let me close the yellow signal?
This behavior is inconsistent with green signals. When I close a green signal, any trains coming along will redirect around the closed block if possible. If not, they will come to a stop at the closed signal. When I close a yellow signal, I expect the incoming train to redirect around the closed block if possible. If not, it will continue (there's nothing else to be done in this case).
Instead, when I close a yellow signal it does not close. This is very unexpected.
This is demonstrated on the middle and bottom tracks. On the middle track, we close a signal while it is green; the train diverts and goes around. On the bottom track, we close the signal while it is yellow. The train does not divert, despite having the opportunity to do so.
Proposed behavior in detail:
When a yellow signal is closed:
1. Attempt to path as though the block was closed.
2. If 1 succeeds, attempt to reserve the necessary blocks for the new path.
3. If 2 succeeds, un-reserve blocks from the old path and close the signal.
4. If 1 or 2 fails, then maintain old path and lock the signal as yellow (current behavior).
The proposed behavior maintains all necessary reserved blocks at all times, and therefore does not permit collisions.
(Longtime lurker, first-time poster. Am I doing this right?)