Request/Idea: Train toggle to don't skip disabled stations

Post your ideas and suggestions how to improve the game.

Moderator: ickputzdirwech

Post Reply
Molay
Fast Inserter
Fast Inserter
Posts: 175
Joined: Thu May 01, 2014 8:01 am
Contact:

Request/Idea: Train toggle to don't skip disabled stations

Post by Molay »

Hi,

I'd appreciate if trains had a toggle for their behaviour concerning disabled stations.

Toggle: train waits for disabled station. (Default: train skips disabled station).

Currently trains skip stations that are disabled, continuing to the next open station on schedule.

I have a design where trains load at A, go park at B and are supposed to wait for C to open up. Currently this requires a different version of B for each product, requiring toggling the rail signals by circuitry whenever a station C becomes active. Without that the trains just loop from A (load) to B (stack), burning fuel but never making a delivery.

Using circuitry for this is rather complex and still does not attain similar levels of performance as LTN.

With said toggle, a stacker station B would be viable and require no circuitry any longer. It would also make B universal for all products. Which may be as to close to vanilla LTN as one could get, simply by having trains not skip disabled stations, but waiting for them to open.

Would love to see that option!

Cheers

Morlow
Inserter
Inserter
Posts: 23
Joined: Wed Dec 23, 2015 9:10 am
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Morlow »

I'm building my first train-based large base right now and I would also like to see something like this as well. It creates a lot of unnecessary traffic on the rails when trains are looping around instead of waiting near the disabled station. I've been trying to figure out some way to prevent this but I can't think of anything. Ideally I would set up a station just before the destination for the trains to wait at while the destination is disabled but I wouldn't know how to tell it to wait there only until the destination is enabled again.

Ishimuro
Inserter
Inserter
Posts: 24
Joined: Fri Sep 01, 2017 9:50 pm
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Ishimuro »

If they shouldnt skip a station build another station of that kind (C) near the other stations or the stacker but seal it with a signal that is always red, so the train wait at the stacker for that signal to change but will repath if any of the other stations enable again.

For the option with the waiting station...wire it like the destination but invert the behavior, so if the destination open at stuff below 50k, the waiting station closes at this time ...or if it is long range you could go for a signal transmission via train but thats another story.

I love the way it works...i just would like to have a option at stations...disable for others if already reserved by a train ;D

dognosh
Long Handed Inserter
Long Handed Inserter
Posts: 81
Joined: Sun Aug 06, 2017 10:36 am
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by dognosh »

Explain to a returning player, what is a "disabled station" and its purpose?
ty :)

Morlow
Inserter
Inserter
Posts: 23
Joined: Wed Dec 23, 2015 9:10 am
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Morlow »

A station can be wired to something else (in my case it reads a chest). In my smelting area for example I have two chests loading each train wagon so I have the station enabled only if there is 2000 or more plates in each chest, because that means the wagon can be fully filled if a train arrives. If there is less than 2000 plates in each chest the station is disabled so no trains will go there (they may have to wait a really long time if they went there without reading the chests' contents).

dognosh
Long Handed Inserter
Long Handed Inserter
Posts: 81
Joined: Sun Aug 06, 2017 10:36 am
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by dognosh »

ty :D

Molay
Fast Inserter
Fast Inserter
Posts: 175
Joined: Thu May 01, 2014 8:01 am
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Molay »

It's most useful if stations have the same name. Say all iron outpost are called "iron ore outpost". You disable all stations by default, and enable them if it has enough ore to load up a train. Making it so a single train can service them all efficiently without wasting time or fuel, and without needing to add each station to the train schedule.

Durentis
Fast Inserter
Fast Inserter
Posts: 105
Joined: Mon Jun 27, 2016 3:55 pm
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Durentis »

I think this won't help as you think it will and will instead cause other problems.

Also, a universal central stacker isn't as good of an idea as it sounds if you mean for it to let all trains of different types out through a single choke point. If C(iron), C(copper), and C(coal) enable at the same time but only one or two trains can leave at once, you lose throughput at B. I think it's better to spread the stackers out and even isolate resources to separate rails if/whenever possible with very high throughput intersections where they must cross. (Would be a bit weird, but I'd like the ability to colour my rails if I took this isolated approach so I could tell at a glance where my copper rails were and such from the map.)

If multiple trains are waiting in B for C to enable, and one C does in fact enable, a circuit-free B will release a train for C. Then B will release another train. Then B will release another train. Then... etc. Until the first train reaches C and causes C to disable. But now the other trains on route to C stop dead in their tracks because they have no path and are waiting for C to enable, blocking your rails. And if they cannot turn around, now they're potentially waiting for that specific C, even if other Cs subsequently enable.

Have a look at my orphan train solution (in sig). I didn't describe it very well, and should really go back over it. It does much of what you want, though with the circuitry you'd like to avoid and it requires one train yard per resource. It only sends a single train out of the main trainyard stacker if there's an enabled input station for it to load at, and output stations are required to have stackers sufficiently large to catch loaded trains before they return to the main trainyard stacker. In your terms, it actually goes from B to A (if enabled) to C before returning to B. There is no need to disable output stations with this setup. Input stations are disabled instead to keep them simple (no stacker) and to manage the release of trains onto the network.

I do think it has one annoying problem that I haven't solved yet though, except to have an overabundance of input stations, and that's for the case where you want all the input stations to have the same name but may have differently named output stations. In this case, the main trainyard stacker doesn't guarantee any particular train and could theoretically starve one named output station while feeding the rest. If all output stations have the same name, it can starve the furthest from the trainyard stacker (but this problem is independent of the system). With an overabundance of input stations, trains will never fill the stacker and it merely serves as a failsafe for the edge case of orphan trains. I think. I would love for this to be improved upon, by myself or another, at some point but I do think it works well enough as-is given an overabundance of input stations and differently named output stations as desired.

Molay
Fast Inserter
Fast Inserter
Posts: 175
Joined: Thu May 01, 2014 8:01 am
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Molay »

Thinking about it I think you're right, the toggle alone won't fix my problem! If there was a feature where stations would only allow 1 train at a time to use it, it would work. I.e. as soon as a train is dispatched, the target station becomes unavailable to other trains. Both features on their own don't seem overly complex to implement, though I may be mistaken. I do appreciate your thorough explanation of your train system though! Something new to try out ;)

Zavian
Smart Inserter
Smart Inserter
Posts: 1641
Joined: Thu Mar 02, 2017 2:57 am
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Zavian »

Molay wrote:
Fri Mar 15, 2019 7:17 am
Thinking about it I think you're right, the toggle alone won't fix my problem!
It actually works quite well for situations where one train is servicing multiple stations on demand. eg train fuel for outlying outposts, acid for multiple uranium mines etc.
Molay wrote:
Fri Mar 15, 2019 7:17 am
If there was a feature where stations would only allow 1 train at a time to use it, it would work. I.e. as soon as a train is dispatched, the target station becomes unavailable to other trains.
That is similar to the suggestion in viewtopic.php?f=6&t=64162.

Durentis
Fast Inserter
Fast Inserter
Posts: 105
Joined: Mon Jun 27, 2016 3:55 pm
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Durentis »

Molay wrote:
Fri Mar 15, 2019 7:17 am
If there was a feature where stations would only allow 1 train at a time to use it, it would work. I.e. as soon as a train is dispatched, the target station becomes unavailable to other trains.
This too can have unintended consequences.

If a station is disabled when a single train schedules to it, no other trains can schedule to it and as a result no trains can line up in that station's stacker, if it has one, without making awkward intermediate stacker stations. (These awkward intermediate stacker stations might make your idea work in some ways, but I'm not sure it's a good way to go about it and it would still have the problem of potentially starving one or more unloading stations.) If there are no trains waiting in an unload station's stacker, you cannot sustain high belt output from that station. It is already difficult enough, if not impossible, in some situations to sustain high belt output per wagon with several trains lined up in a local stacker because they cannot cycle into the station from it fast enough - even with wagon-length signalling and nuclear fuel.

This is why I suggest just having enough local stacker space at the unloading stations to hold all trains scheduled to deliver a given product. So, if you have ten unloading stations for copper and 50 trains, you need a stacker with four slots in each station (or some other combination adding up to 50 when you include the unloading slot). This way, there will always be a place for trains to go off of the main rails after they get product. The point of the main trainyard stacker being separate from the unloading stations is because if the unloading stations just hold their trains until a loading station is enabled, they cannot cycle with other trains in their stacker and all unloading stations will release their trains at the same time when a single loading station becomes enabled. This would send potentially dozens of trains to fetch one trainload of items. (Your idea would prevent them all from leaving at once, but could leave some trains permanently stuck at an unloading station which would starve it.) The main trainyard stacker has to be large enough to hold all of these trains that come out of the unloading stations and only release one train per loading station that has enough items to fill the train.

Bauer
Filter Inserter
Filter Inserter
Posts: 346
Joined: Fri May 05, 2017 12:48 pm
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Bauer »

What is needed is the ability of trains to skip (enabled) stations on circuit input.
You let the train leave on circuit input when it's ready to go. And the train "decides" the target station when leaving.

Until then: Live with the fact that you cannot perfectly control what trains are doing or install mods.

Morlow
Inserter
Inserter
Posts: 23
Joined: Wed Dec 23, 2015 9:10 am
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Morlow »

I don't imagine there is any way to force trains to go wait in the stacker for a station that is disabled? I often have trains waiting in loading stations, even though they are totally full, because the unloading station is disabled. This can cause trains that would load there but have a valid unloading station at that time to not have access to loading. It would be ideal if they went and waited in the stacker instead of blocking the loading station. Maybe setup that "Dummy station" right before the unloading station so they wait there instead?

Durentis
Fast Inserter
Fast Inserter
Posts: 105
Joined: Mon Jun 27, 2016 3:55 pm
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Durentis »

Bauer wrote:
Fri Mar 15, 2019 12:02 pm
What is needed is the ability of trains to skip (enabled) stations on circuit input.
You let the train leave on circuit input when it's ready to go. And the train "decides" the target station when leaving.

Until then: Live with the fact that you cannot perfectly control what trains are doing or install mods.
I can't imagine any scenario where you have a circuit-controlled station and would want it skipped while enabled. Trains already do decide their target station when leaving. If you want it to not decide on a particular enabled station, disable that station, have trains specifically target uniquely named stations, or less elegantly disable a rail signal leading into that enabled station.

We are living with that fact. By problem solving. And having a great time doing it. Some mods are great, but I don't want a mod solving what to me is one of the most interesting problems in Factorio.
Morlow wrote:
Fri Mar 15, 2019 3:46 pm
I don't imagine there is any way to force trains to go wait in the stacker for a station that is disabled? I often have trains waiting in loading stations, even though they are totally full, because the unloading station is disabled. This can cause trains that would load there but have a valid unloading station at that time to not have access to loading. It would be ideal if they went and waited in the stacker instead of blocking the loading station. Maybe setup that "Dummy station" right before the unloading station so they wait there instead?
You can't force trains to a disabled station's stacker if that stacker only has signals leading into the station. But if that stacker itself has stations and those stations are on the train schedule just before the disabled unloading station, trains will go into the stacker as long as the stacker's stations are enabled. It's clumsy, I think, but it works.

I think you're just going about it backwards. If you have trains waiting at loading stations for unloading stations to enable, then when the unloading station does enable and wants resources now, it nevertheless has to wait for the train to arrive from a loading station. Instead, have stackers at unloading stations instead of loading stations, and disable the loading stations when they don't have enough resources to fill a train rather than disabling the unloading stations. This removes the need for the awkward dummy stations in the stacker, leaves trains nice and close to the unloading station for when they're needed, and frees up the loading station for other trains bound to other unloading stations.

The biggest annoyance I have right now with my orphan train solution, as I've mentioned, is that for the main trainyard stacker to be guaranteed not to starve a particular uniquely named output station all I need to have is "enough" input stations (guaranteed as many enabled input stations as trains that can fit in output station stackers). But if I have "enough" input stations, I don't need the main trainyard stacker at all and can totally get rid of the circuitry except for disabling input stations when they're empty. And this might be fine, except that I want to catch the case where I don't have "enough" input stations and still have the trains behave appropriately.

Morlow
Inserter
Inserter
Posts: 23
Joined: Wed Dec 23, 2015 9:10 am
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Morlow »

Good call on only allowing loading stations to disable. It requires a lot more trains be built but it seems to make everything run much smoother.

Koub
Global Moderator
Global Moderator
Posts: 7175
Joined: Fri May 30, 2014 8:54 am
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Koub »

[Koub] Moved to Ideas and suggestions.
Koub - Please consider English is not my native language.

Darinth
Filter Inserter
Filter Inserter
Posts: 323
Joined: Wed Oct 17, 2018 12:17 pm
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Darinth »

Durentis wrote:
Fri Mar 15, 2019 9:43 am
Molay wrote:
Fri Mar 15, 2019 7:17 am
If there was a feature where stations would only allow 1 train at a time to use it, it would work. I.e. as soon as a train is dispatched, the target station becomes unavailable to other trains.
This too can have unintended consequences.

If a station is disabled when a single train schedules to it, no other trains can schedule to it and as a result no trains can line up in that station's stacker, if it has one, without making awkward intermediate stacker stations. (These awkward intermediate stacker stations might make your idea work in some ways, but I'm not sure it's a good way to go about it and it would still have the problem of potentially starving one or more unloading stations.) If there are no trains waiting in an unload station's stacker, you cannot sustain high belt output from that station. It is already difficult enough, if not impossible, in some situations to sustain high belt output per wagon with several trains lined up in a local stacker because they cannot cycle into the station from it fast enough - even with wagon-length signalling and nuclear fuel.

This is why I suggest just having enough local stacker space at the unloading stations to hold all trains scheduled to deliver a given product. So, if you have ten unloading stations for copper and 50 trains, you need a stacker with four slots in each station (or some other combination adding up to 50 when you include the unloading slot). This way, there will always be a place for trains to go off of the main rails after they get product. The point of the main trainyard stacker being separate from the unloading stations is because if the unloading stations just hold their trains until a loading station is enabled, they cannot cycle with other trains in their stacker and all unloading stations will release their trains at the same time when a single loading station becomes enabled. This would send potentially dozens of trains to fetch one trainload of items. (Your idea would prevent them all from leaving at once, but could leave some trains permanently stuck at an unloading station which would starve it.) The main trainyard stacker has to be large enough to hold all of these trains that come out of the unloading stations and only release one train per loading station that has enough items to fill the train.
The better solution I feel is for a station to be able to use a circuit signal to set a maximum limit on the inbound trains. So you can set a station to only allow a single inbound train if it doesn't have a stacker, or to allow 10 inbound trains if it has a 9 train stacker (9 + the station itself) and actually has enough ore to be able to load them. This prevents the herd of trains problem with the minimum level of complexity and maximum throughput.

Durentis
Fast Inserter
Fast Inserter
Posts: 105
Joined: Mon Jun 27, 2016 3:55 pm
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Durentis »

Darinth wrote:
Mon Mar 18, 2019 4:09 pm
The better solution I feel is for a station to be able to use a circuit signal to set a maximum limit on the inbound trains. So you can set a station to only allow a single inbound train if it doesn't have a stacker, or to allow 10 inbound trains if it has a 9 train stacker (9 + the station itself) and actually has enough ore to be able to load them. This prevents the herd of trains problem with the minimum level of complexity and maximum throughput.
I like it, but it doesn't solve my problem of potentially starving an unloading station and still needs a central train yard to guarantee cycling in unloading stations. I think it could be a really good addition to vanilla as long as a train currently sitting in a station counts as one of the scheduled trains until it leaves. Otherwise, you get an extra train sent to the station, beyond what it can currently load, the moment one of the scheduled trains pulls into the station to be loaded.

This is essentially the behaviour that my orphan train solution approximates but yours offers some good improvements. It would greatly simplify (and localize) the circuitry, as you say. It also makes sure that trains go directly to a specific station from the outset rather than, say, all three trains trying to go to the closest one and then two of them redirecting to another when one enters it. You can have stackers at input stations with my solution (and increase the demand at those stations based on their supply) but the system will leak trains if you don't also add signal locks at the station entrances (to prevent the case of extra trains entering a loading station and passing through the exit counter unfilled). Allowing a second train to path towards a loading station that can support it would smooth things and perhaps require fewer loading stations to satisfy unloading station demands, but I think the benefits drop off sharply as you add additional stacker slots to a loading station - I doubt that supporting more than a few trains per loading station would be justifiable.

That said, it occurred to me just now that the starving problem is independent of both of these solutions and is instead a result of making the train yard stacker parallel and uncontrolled. This seems to be long-held convention, like underground pipe stitching at refineries, but it needn't be. A serial stacker (all trains in a single line, perhaps like a spiral with inner yin-yang-like turnaround to spiral back out) would guarantee that no station starves because it'd be first-in-first-out. Or a parallel stacker that enables each occupied lane in turn as a train leaves the previous one while disabling the rest to guarantee that all lanes empty evenly. The serial option may even be faster because if there's demand for more than one train to leave at a given time, multiple trains might be able to leave with some momentum already built up - that is, provided signal reservation doesn't allow extra trains to force their way through, breaking the logic.

Darinth
Filter Inserter
Filter Inserter
Posts: 323
Joined: Wed Oct 17, 2018 12:17 pm
Contact:

Re: Request/Idea: Train toggle to don't skip disabled stations

Post by Darinth »

A possibly simpler solution would to give stations a circuit controllable 'priority' which I believe I've seen proposed on previous threads as well. Between controlling the maximum number of trains a station can allow and a station's priority via circuits, you should be able to reasonably make sure no point of loading or unloading is ever starved, without extremely complex inter-outpost circuitry or a central train yard.

Post Reply

Return to “Ideas and Suggestions”