Train station skipping conditions
Moderator: ickputzdirwech
-
- Fast Inserter
- Posts: 129
- Joined: Sun May 03, 2015 9:17 pm
- Contact:
Re: Train station skipping conditions
The reason it wouldn't be implemented is quite simple: there are hundreds (or thousands) of these simple additions, but adding them all would take way too long. Thus, the devs need to draw the line somewhere. I just hoped they would draw the line beyond this request instead of before it...
Re: Train station skipping conditions
This thread got derailed in the middle, but the original idea is still solid, and something I would love to see added to the game. Even with the train improvements that came with 0.13 and later versions, this would still make trains a lot smarter with very little additional UI or logic required.
Re: Train station skipping conditions
+1 for this idea, I think it makes sense.
Re: Train station skipping conditions
I also agree with the suggestion.
OpenTTD (Transport Tycoon Deluxe) also has conditional order jumping. I would love to see something like that in Factorio.
Meanwhile, several other threads have been opened on this topic:
viewtopic.php?f=6&t=49214 Train Entry-Condition
viewtopic.php?f=6&t=64362 Dynamic train schedule
viewtopic.php?f=6&t=53792 train-stop id and train targets a train-stop by id
viewtopic.php?f=6&t=58057 Trains ignore stop if wait condition already met
viewtopic.php?f=6&t=59378 Train-side stop disabling and a toggle for station skipping
viewtopic.php?f=6&t=58646 Jump on train automation
The fact that this has been suggested so often shows, in my opinion, how important the suggestion is.
EDIT: updated thread list, fixed link
OpenTTD (Transport Tycoon Deluxe) also has conditional order jumping. I would love to see something like that in Factorio.
Meanwhile, several other threads have been opened on this topic:
viewtopic.php?f=6&t=49214 Train Entry-Condition
viewtopic.php?f=6&t=64362 Dynamic train schedule
viewtopic.php?f=6&t=53792 train-stop id and train targets a train-stop by id
viewtopic.php?f=6&t=58057 Trains ignore stop if wait condition already met
viewtopic.php?f=6&t=59378 Train-side stop disabling and a toggle for station skipping
viewtopic.php?f=6&t=58646 Jump on train automation
The fact that this has been suggested so often shows, in my opinion, how important the suggestion is.
EDIT: updated thread list, fixed link
Last edited by Tekky on Fri Feb 25, 2022 7:56 pm, edited 2 times in total.
-
- Manual Inserter
- Posts: 3
- Joined: Sat Dec 16, 2017 12:55 pm
- Contact:
Re: Train station skipping conditions
That would be awesome to have those skipping conditions (or entry condition as called on another thread, they are basically the same idea).
I also like the route idea. Having a central place to configure at once all related trains would be an awesome plus!
"Go to waiting area if no following route is reachable" -> "stay until a following route is reachable"
"Go to iron ore input if cargo is not full" -> "wait until cargo is full" (we could also use "inactivity > x seconds" here)
"Go to iron ore output if cargo is not empty" -> "wait until cargo is empty" (same comment as above)
"Go to fuel load is fuel < X MJ" -> "wait until fuel >= X MJ" (same comment as above)
That configuration would allow a train to go filling itself in any available iron ore mine (all mines without enough ore would off themselves preventing trains from going there) and outputting their cargo anywhere it might be needed (stations could deactivate themselves when there is enough resources too). Bonus: it would go to refuel only when needed!
As a plus, it would also be great to be able to put a station type and not name for the destination. And to allow stations to multiple types. Thus the "green chip 1" station could be of types "iron plate output" and "copper plate output". Ideally we could deactivate types and not the whole station. Thus in this case a station would be "off" when it has no active type.
Right now when I try that I have the following 2 common scenarios that I cannot fathom how to resolve:
1. there is no mine with enough ore to warrant a train going there, thus all of them are deactivated: trains go merry go round trying to supply depots with an empty cargo
2. there is no need of input because we consume less resource that the supply allow: trains go merry go round trying to resupply at mines with a full cargo
That works but it creates a lot of useless traffic and consumes fuel needlessly. I believe factorio is about optimizing everything as much as possible. At least it's the part I can spec a lot of time working on. I'm mind blown by everything I can already do but this nags me. I really want to create a train system with fabrication units that works like a giant machine. Trains dumps resources here only when needed (like an inserter) and come get things only when useful. Using circuit conditions I can even deactivate units that have overproduced to limit electricity usage! That's so awesome! But the trains making useless trips are really getting on my nerves .
I also like the route idea. Having a central place to configure at once all related trains would be an awesome plus!
"Go to waiting area if no following route is reachable" -> "stay until a following route is reachable"
"Go to iron ore input if cargo is not full" -> "wait until cargo is full" (we could also use "inactivity > x seconds" here)
"Go to iron ore output if cargo is not empty" -> "wait until cargo is empty" (same comment as above)
"Go to fuel load is fuel < X MJ" -> "wait until fuel >= X MJ" (same comment as above)
That configuration would allow a train to go filling itself in any available iron ore mine (all mines without enough ore would off themselves preventing trains from going there) and outputting their cargo anywhere it might be needed (stations could deactivate themselves when there is enough resources too). Bonus: it would go to refuel only when needed!
As a plus, it would also be great to be able to put a station type and not name for the destination. And to allow stations to multiple types. Thus the "green chip 1" station could be of types "iron plate output" and "copper plate output". Ideally we could deactivate types and not the whole station. Thus in this case a station would be "off" when it has no active type.
Right now when I try that I have the following 2 common scenarios that I cannot fathom how to resolve:
1. there is no mine with enough ore to warrant a train going there, thus all of them are deactivated: trains go merry go round trying to supply depots with an empty cargo
2. there is no need of input because we consume less resource that the supply allow: trains go merry go round trying to resupply at mines with a full cargo
That works but it creates a lot of useless traffic and consumes fuel needlessly. I believe factorio is about optimizing everything as much as possible. At least it's the part I can spec a lot of time working on. I'm mind blown by everything I can already do but this nags me. I really want to create a train system with fabrication units that works like a giant machine. Trains dumps resources here only when needed (like an inserter) and come get things only when useful. Using circuit conditions I can even deactivate units that have overproduced to limit electricity usage! That's so awesome! But the trains making useless trips are really getting on my nerves .
Re: Train station skipping conditions
This suggestion is still very relevant.
If a station would have a skip condition list as well as leave condition list (with identical mechanics) for every station in the list it would be simply awesome and would make trains so much smarter without adding a lot to programming.
The skip condition should be evaluated when a train picks up its next destination from the list, so actually after previous leave condition is met and train is ready to depart.
By default the skip condition is empty which would be identical to current behaviour.
The edge case would be if all stations in the list have their skip condition met and there should be a mechanism to avoid infinite loop.
Another complimentary change should be adding fuel condition in some way (as obviously having multiple locomotives complicates it) but I am sure its easy to implement the same way as Cargo currently works - by providing the total amount of stored fuel of selected type in all locomotives combined.
If a station would have a skip condition list as well as leave condition list (with identical mechanics) for every station in the list it would be simply awesome and would make trains so much smarter without adding a lot to programming.
The skip condition should be evaluated when a train picks up its next destination from the list, so actually after previous leave condition is met and train is ready to depart.
By default the skip condition is empty which would be identical to current behaviour.
The edge case would be if all stations in the list have their skip condition met and there should be a mechanism to avoid infinite loop.
Another complimentary change should be adding fuel condition in some way (as obviously having multiple locomotives complicates it) but I am sure its easy to implement the same way as Cargo currently works - by providing the total amount of stored fuel of selected type in all locomotives combined.
-
- Fast Inserter
- Posts: 209
- Joined: Mon Jan 08, 2018 4:54 pm
- Contact:
Re: Train station skipping conditions
Agree completely.PacifyerGrey wrote: ↑Fri Oct 12, 2018 6:33 am This suggestion is still very relevant.
If a station would have a skip condition list as well as leave condition list (with identical mechanics) for every station in the list it would be simply awesome and would make trains so much smarter without adding a lot to programming.
The skip condition should be evaluated when a train picks up its next destination from the list, so actually after previous leave condition is met and train is ready to depart.
By default the skip condition is empty which would be identical to current behaviour.
Add "Depot" station name with "iddle" condition. It means train should go to "Depot" station when no other valid destinations in list. Exit condition may be empty because nowhere to move anyway. But may be used for fuelling purpose for example.PacifyerGrey wrote: ↑Fri Oct 12, 2018 6:33 am The edge case would be if all stations in the list have their skip condition met and there should be a mechanism to avoid infinite loop.
Add "Fuelling" station name with "fuel=0" condition. It means train should go to "Fuelling" station if no fuel items in the locomotive. Red bar should allow the train to move.PacifyerGrey wrote: ↑Fri Oct 12, 2018 6:33 am Another complimentary change should be adding fuel condition in some way (as obviously having multiple locomotives complicates it) but I am sure its easy to implement the same way as Cargo currently works - by providing the total amount of stored fuel of selected type in all locomotives combined.
Re: Train station skipping conditions
Rather than an 'Idle' condition (which would be an arrival condition), implementing the original suggestion along with a 'Other stops available' condition as a skip & depart condition would achieve the same thing, without implementation of a 3rd type of new type of condition, which I can only see usage for this one application.
You'd set your idle station along with a skip & depart condition of "Other stops available" and it'll go to idle only when there aren't other stops available. My only other concern (and this may simply be the result of me not knowing enough about factorio's train logic) would be trains getting stuck at an idle station because the frontmost train is still stuck in idle and so the trains behind it can't pull forward. I don't think there's any way to limit a station to having one train pathing to it at a time. So whatever train ends up in front would hold up the rest. I think you could get around with by implementing a stacker in such a way that the stacker has a clear path to the idle station but also has a path around it. You'd end up with one train at your idle station, the rest in the stack, and if a train in the stack gets a new destination, they simply path around the station and continue on their way.
You'd set your idle station along with a skip & depart condition of "Other stops available" and it'll go to idle only when there aren't other stops available. My only other concern (and this may simply be the result of me not knowing enough about factorio's train logic) would be trains getting stuck at an idle station because the frontmost train is still stuck in idle and so the trains behind it can't pull forward. I don't think there's any way to limit a station to having one train pathing to it at a time. So whatever train ends up in front would hold up the rest. I think you could get around with by implementing a stacker in such a way that the stacker has a clear path to the idle station but also has a path around it. You'd end up with one train at your idle station, the rest in the stack, and if a train in the stack gets a new destination, they simply path around the station and continue on their way.
Re: Train station skipping conditions
That's true for any station with multiple trains. A Stacker is the solution there.Darinth wrote: ↑Thu Oct 25, 2018 1:15 pm Rather than an 'Idle' condition (which would be an arrival condition), implementing the original suggestion along with a 'Other stops available' condition as a skip & depart condition would achieve the same thing, without implementation of a 3rd type of new type of condition, which I can only see usage for this one application.
You'd set your idle station along with a skip & depart condition of "Other stops available" and it'll go to idle only when there aren't other stops available. My only other concern (and this may simply be the result of me not knowing enough about factorio's train logic) would be trains getting stuck at an idle station because the frontmost train is still stuck in idle and so the trains behind it can't pull forward. I don't think there's any way to limit a station to having one train pathing to it at a time. So whatever train ends up in front would hold up the rest. I think you could get around with by implementing a stacker in such a way that the stacker has a clear path to the idle station but also has a path around it. You'd end up with one train at your idle station, the rest in the stack, and if a train in the stack gets a new destination, they simply path around the station and continue on their way.
Re: Train station skipping conditions
Sorry, this is probably just my inexperience talking. When I think of a stacker, I don't generally think of also providing a secondary path around the station because the stacker is generally designed to funnel trains one at a time to a station as it becomes available. In this case, you'd actually need the ability to bypass the station when a train gets a new destination while waiting in queue.
Re: Train station skipping conditions
Unless you have a station based stacker, one that has a station at every lane. Using chain signals ensures every lane only gets one train, any extras reroute to a free lane.
-
- Inserter
- Posts: 34
- Joined: Sat Dec 29, 2018 2:51 pm
- Contact:
Re: Train station skipping conditions
You don't even necessarily need an idle station, if all other stations don't work the train simply does nothing (as it is right now if all stations are disabled).Sad_Brother wrote: ↑Sat Oct 20, 2018 9:56 am Add "Depot" station name with "iddle" condition. It means train should go to "Depot" station when no other valid destinations in list. Exit condition may be empty because nowhere to move anyway. But may be used for fuelling purpose for example.
By the way, I did some mockups of a possible train GUI with skip conditions using the new GUI from a recent friday facts. https://imgur.com/gallery/Nd24BYy
-
- Fast Inserter
- Posts: 209
- Joined: Mon Jan 08, 2018 4:54 pm
- Contact:
Re: Train station skipping conditions
To leave the tracks clear.JAetherwing wrote: ↑Sat Dec 29, 2018 2:55 pmYou don't even necessarily need an idle station, if all other stations don't work the train simply does nothing (as it is right now if all stations are disabled).Sad_Brother wrote: ↑Sat Oct 20, 2018 9:56 am Add "Depot" station name with "iddle" condition. It means train should go to "Depot" station when no other valid destinations in list. Exit condition may be empty because nowhere to move anyway. But may be used for fuelling purpose for example.
By the way, I did some mockups of a possible train GUI with skip conditions using the new GUI from a recent friday facts. https://imgur.com/gallery/Nd24BYy
Re: Train station skipping conditions
Beautiful mockups. Nice and simple solution for many problems with managing train routes.JAetherwing wrote: ↑Sat Dec 29, 2018 2:55 pmYou don't even necessarily need an idle station, if all other stations don't work the train simply does nothing (as it is right now if all stations are disabled).Sad_Brother wrote: ↑Sat Oct 20, 2018 9:56 am Add "Depot" station name with "iddle" condition. It means train should go to "Depot" station when no other valid destinations in list. Exit condition may be empty because nowhere to move anyway. But may be used for fuelling purpose for example.
By the way, I did some mockups of a possible train GUI with skip conditions using the new GUI from a recent friday facts. https://imgur.com/gallery/Nd24BYy
I am a translator. And what did you do for Factorio?
Check out my mod "Realistic Ores" and my other mods!
Check out my mod "Realistic Ores" and my other mods!
Re: Train station skipping conditions
The mockup with separate skip conditions are nice, but I want to reiterate that the spirit of the original request could be accomplished with just a checkbox, "skip this station if the train already meets this station's departure conditions"
Re: Train station skipping conditions
Certainly it could, but I do feel that having the option to skip if certain conditions are met would open up a lot more interesting use-cases for this.
There are 10 types of people: those who get this joke and those who don't.
-
- Fast Inserter
- Posts: 129
- Joined: Sun May 03, 2015 9:17 pm
- Contact:
Re: Train station skipping conditions
Wouldn't work for me, I use circuit conditions to make trains leave (i.e. for all stations, leave when green signal = 1), but that means that the leave condition for all stations is true and it wouldn't go anywhere.
Re: Train station skipping conditions
Then a) don't set the checkmark or b) don't set the signal with no train present.TheUnknown007 wrote: ↑Wed Jan 02, 2019 4:54 pmWouldn't work for me, I use circuit conditions to make trains leave (i.e. for all stations, leave when green signal = 1), but that means that the leave condition for all stations is true and it wouldn't go anywhere.
Re: Train station skipping conditions
Awesome dude. Just awesome!JAetherwing wrote: ↑Sat Dec 29, 2018 2:55 pmYou don't even necessarily need an idle station, if all other stations don't work the train simply does nothing (as it is right now if all stations are disabled).Sad_Brother wrote: ↑Sat Oct 20, 2018 9:56 am Add "Depot" station name with "iddle" condition. It means train should go to "Depot" station when no other valid destinations in list. Exit condition may be empty because nowhere to move anyway. But may be used for fuelling purpose for example.
By the way, I did some mockups of a possible train GUI with skip conditions using the new GUI from a recent friday facts. https://imgur.com/gallery/Nd24BYy
-
- Burner Inserter
- Posts: 19
- Joined: Mon Aug 21, 2017 7:40 am
- Contact:
Re: Train station skipping conditions
Awesome stuff. Currently crying, while staring at my stupid Crude Oil train going back and forth, back and forth, back and forth. from dropoff, to refuelling, to dropoff, to refuelling. (Because right now no Crude Oil Pickup stations are enabled.)JAetherwing wrote: ↑Sat Dec 29, 2018 2:55 pmYou don't even necessarily need an idle station, if all other stations don't work the train simply does nothing (as it is right now if all stations are disabled).Sad_Brother wrote: ↑Sat Oct 20, 2018 9:56 am Add "Depot" station name with "iddle" condition. It means train should go to "Depot" station when no other valid destinations in list. Exit condition may be empty because nowhere to move anyway. But may be used for fuelling purpose for example.
By the way, I did some mockups of a possible train GUI with skip conditions using the new GUI from a recent friday facts. https://imgur.com/gallery/Nd24BYy
Devs, please,just implement this. The GUI work is basically already done for you, I explained in a post some time ago, possibly in one of the other threads for this suggestion, just how the logic should work. Or rather, my interpretation of how this new set of conditions could be inserted into the already existing decision making the train already does. Your train system is the best part of this game - It's So Frickin Cool I Love It! - but it's still so limited and silly in this regard.