Since the addition of train interrupts I imagined generic train refueling stations will become an easy, nice thing to build at least. But it is still pretty difficult due to to the limitations of reading locomotive fuel.
I know that there have been a lot of issues and suggestions related to that over the years, but I think it is high time something new happened in that regard.
My use case: existing trains having starting fuel (wood or something) getting stuck in refueling stations, because we can't read the fuel already present in locomotives and create one generic logic to handle them. I need to setup some complex and overengineered circuit/inserter contraption just to handle using different kinds of fuels for my trains. Upgrading from one basic fuel to the next is a pain right now. I don't know how to reliably swap out the existing fuel from the existing locomotives without the risk of overfilling chests and without wasting time (emptying the locomotive, doing some advanced circuitry, putting fuel back).
I realize there are some difficulties in fixing that, for example what about multi-locomotive trains etc. I don't know how to approach that, maybe something like inventory sensor mod would be the best solution here. Or if not something like that, then one way I see it going forward could also be adding support for circuit network on rail segments.
In summary: refueling is still a PITA. Being unable to handle the fuel with circuits is very limiting, and it's the best time with 2.0 to have something done with it.
It's 2.0 space age, but refueling station is still a huge PITA
Moderator: ickputzdirwech
It's 2.0 space age, but refueling station is still a huge PITA
Look mom, I made a mod ^^ Barrel Stages
- BlueTemplar
- Smart Inserter
- Posts: 3197
- Joined: Fri Jun 08, 2018 2:16 pm
- Contact:
Re: It's 2.0 space age, but refueling station is still a huge PITA
I'm curious as to why you consider this to be an issue ?
Some solutions I can think of :
A - just let them burn the remaining obsolete fuel, use inactivity timers on the refueling stations
B - use outsorter(s) on locomotives filtered to obsolete fuels (to an active provider chest or maybe even just a heating tower)
Or am I missing something ?
Some solutions I can think of :
A - just let them burn the remaining obsolete fuel, use inactivity timers on the refueling stations
B - use outsorter(s) on locomotives filtered to obsolete fuels (to an active provider chest or maybe even just a heating tower)
Or am I missing something ?
BobDiggity (mod-scenario-pack)
Re: It's 2.0 space age, but refueling station is still a huge PITA
I'll reply tomorrow, but there are multiple reported issues already with interrupts simply not working roght now. One case is double locomotive bidirectional train where one locomotive has different fuel than the other. The train deadlocks and the fuel interrupts dont work, no matter the combination of wait conditions and wildcards.BlueTemplar wrote: ↑Sat Nov 23, 2024 9:58 pm I'm curious as to why you consider this to be an issue ?
Some solutions I can think of :
viewtopic.php?t=119017
There are multiple similar issues that are not lonked right now, but searching for this issue returned me at least 6 different threads on forum and reddit.
The issue with A is there is no way of knowing if your double train wont get stuck, because you didnt resuply it properly. The issue woth B is the possobly long period where you dont have the logistic chests yet, but have the trains (my case) or want to gain the achievement for not using logi chests.
All of the solutions I found propose "mandatory fuel unloading" which from the factorio standpoint... sounds silly. It shouldn't be this hard.
Look mom, I made a mod ^^ Barrel Stages
- AileTheAlien
- Filter Inserter
- Posts: 364
- Joined: Sat Mar 11, 2017 4:30 pm
- Contact:
Re: It's 2.0 space age, but refueling station is still a huge PITA
Trains only hold 3 stacks of fuel per locomotive, and steel chests hold 48. (Steel is a prerequisite of trains, so I'm assuming you're using those.) If you put 6 chests on one side of your refueling station, you can fully swap out obsolete fuel in 96 locomotives. (Only 64 if you're doing it on the train-station side, with 4 chests.) All insterters can use blacklist filters, so it's trivial to unload everything that's not your best fuel, as in this example: The only thing you can't handle with a setup like that, is trains that have different lengths. But as long as you've got all your trains using a small number of lengths, you can just build that same small number of refueling stations. For example, one refueling station for 1-1-1 trains, one for 2-4 trains, etc. (I don't think your proposal intends that, but I figured I'd mention it anyways.) It is actually a problem that interrupts read an item count instead of fuel-percentage or total energy, but that's already got other threads.Tooster wrote: ↑Sun Nov 24, 2024 12:24 amThe issue woth B is the possobly long period where you dont have the logistic chests yet, but have the trains (my case) or want to gain the achievement for not using logi chests.
All of the solutions I found propose "mandatory fuel unloading" which from the factorio standpoint... sounds silly.
- BlueTemplar
- Smart Inserter
- Posts: 3197
- Joined: Fri Jun 08, 2018 2:16 pm
- Contact:
Re: It's 2.0 space age, but refueling station is still a huge PITA
What makes you so confident about «no matter» ?Tooster wrote: ↑Sun Nov 24, 2024 12:24 am I'll reply tomorrow, but there are multiple reported issues already with interrupts simply not working roght now. One case is double locomotive bidirectional train where one locomotive has different fuel than the other. The train deadlocks and the fuel interrupts dont work, no matter the combination of wait conditions and wildcards.
Looks like to me that simply changing that «AND time passed» to an «OR inactive for X seconds» would work ?
(EDIT : double checked, inactivity does work on locos too)
Well if it's that early, just use a big enough buffer ? (With maybe some boilers.)[...]
The issue woth B is the possobly long period where you dont have the logistic chests yet, but have the trains (my case) or want to gain the achievement for not using logi chests.
[...]
BobDiggity (mod-scenario-pack)
Re: It's 2.0 space age, but refueling station is still a huge PITA
-1, I literally just have 'if rocket fuel < amt' they go to the station, and they get non-rocket fuel removed and rocket fuel inserted. I think this is a player issue, not a game issue.
Re: It's 2.0 space age, but refueling station is still a huge PITA
Ok, I have now time to respond fully and provide more details.
The main issue that we can't sensibly and reliably make circuits based on train fuel. Trying to work with fuel and maybe doing some circuit network calculations depends on weird hacks such as inactivity time, emptying trains first etc. Additional issues arise when trying to do a run without logi chests (or without access to them, either due to the current game stage, other mods or game mode). Why is managing the fuel so hard?
My ultimate objective is: refueling station, which can handle bidirectional trains, refuel reliably when necessary, prevent deadlocks, allow trains to burn out the old fuel and supply trains with new fuel type automatically.
The problem I had currently was a single bidirectional train, that has been running previously on coal which I wanted to upgrade to solid fuel. This is the issue which I imagine could be related to Space Age, when for exampel trying to run trains on gleba products as fuel, or just in general when trying to mix/upgrade different kinds of fuel in the game.
I imagine doing the refueling like so: At one point in time I'm using coal as fuel. Afterwards I want to switch to solid fuel. Locomotives should be running on coal until it's burnt.
For that, I set up interrupts like "Fuel (any) [coal] < 50 AND Fuel (any) [solid fuel] < 25 AND ..." for all fuel types. Similarly it has a wait condition of "Fuel (all) [coal] ≥ 100 OR Fuel (all) [solid fuel] ≥ 50 OR ..." The idea is simple: if all the fuels in the train are below certain threshold, go to refuel. On the station, refuel with whatever the station is currently supplying until one of the fuels goes above the threshold. Lowest calorie fuel should be used up first.
However the "Fuel (all)" seems to be working only if ALL locomotives pass aat the same time. In the case where one locomotive has exclusively coal and another exclusively solid fuel, this condition always fails for the whole train. It would be useful if the wait condition could be evaluated per locomotive and only THEN takes as conjunction.
By reading the locomotive contents, we could create a circuit network to refuel based on MJ of energy in the train and make smart refueling station. Without this it is simply hard. I currently don't see a solution that is a) reliable, b) scalable and c) doesn't depend on heuristics and hacks such as inactivite/wait time, delays, emptying the locomotive first and similar.
For the proposed solution, OK, A) is something I could use now, but I am not happy that this is the factorio way. For example if supply to refueling station stops, the trains may halt in weird placed without fuel. I could also use the chest to filter out the old fuel, but I am also not happy with that solution, because it depends on me having to get rid of the old fuel somehow and hope that the buffer won't run out.
Even though trains have the ability to check for inactivity period and it's fuel, it is impossible to communicate it sensibly the the circuit network which is a huge PITA.
There is also an issue with how the fuel is burned from left to right. Locomotives can get stuck with old fuel in rightmost slots due to that, and handling it with circuits is fairly difficult.
Ultimately I find inability to read train (and other entities) fuel and cargo as a shortcoming. It is poor experience that on one hand train conditions are inferior to circuit network conditions, and on the other hand that trains have their internal circuit-like conditions that they can't communicate with the outside circuit network. It is also a pity that the fuel wait conditions can't be run per locomotive and the logic performed based on that (like "for all locomotives: if any fuel > threshold for fuel -> OK".
Ideally, reading individual wagons and locomotives would be a game changer allowing for a lot more interesting setups.
The main issue that we can't sensibly and reliably make circuits based on train fuel. Trying to work with fuel and maybe doing some circuit network calculations depends on weird hacks such as inactivity time, emptying trains first etc. Additional issues arise when trying to do a run without logi chests (or without access to them, either due to the current game stage, other mods or game mode). Why is managing the fuel so hard?
My ultimate objective is: refueling station, which can handle bidirectional trains, refuel reliably when necessary, prevent deadlocks, allow trains to burn out the old fuel and supply trains with new fuel type automatically.
The problem I had currently was a single bidirectional train, that has been running previously on coal which I wanted to upgrade to solid fuel. This is the issue which I imagine could be related to Space Age, when for exampel trying to run trains on gleba products as fuel, or just in general when trying to mix/upgrade different kinds of fuel in the game.
I imagine doing the refueling like so: At one point in time I'm using coal as fuel. Afterwards I want to switch to solid fuel. Locomotives should be running on coal until it's burnt.
For that, I set up interrupts like "Fuel (any) [coal] < 50 AND Fuel (any) [solid fuel] < 25 AND ..." for all fuel types. Similarly it has a wait condition of "Fuel (all) [coal] ≥ 100 OR Fuel (all) [solid fuel] ≥ 50 OR ..." The idea is simple: if all the fuels in the train are below certain threshold, go to refuel. On the station, refuel with whatever the station is currently supplying until one of the fuels goes above the threshold. Lowest calorie fuel should be used up first.
However the "Fuel (all)" seems to be working only if ALL locomotives pass aat the same time. In the case where one locomotive has exclusively coal and another exclusively solid fuel, this condition always fails for the whole train. It would be useful if the wait condition could be evaluated per locomotive and only THEN takes as conjunction.
By reading the locomotive contents, we could create a circuit network to refuel based on MJ of energy in the train and make smart refueling station. Without this it is simply hard. I currently don't see a solution that is a) reliable, b) scalable and c) doesn't depend on heuristics and hacks such as inactivite/wait time, delays, emptying the locomotive first and similar.
For the proposed solution, OK, A) is something I could use now, but I am not happy that this is the factorio way. For example if supply to refueling station stops, the trains may halt in weird placed without fuel. I could also use the chest to filter out the old fuel, but I am also not happy with that solution, because it depends on me having to get rid of the old fuel somehow and hope that the buffer won't run out.
Even though trains have the ability to check for inactivity period and it's fuel, it is impossible to communicate it sensibly the the circuit network which is a huge PITA.
No matter was an overstatement. Nevertheless, it is an issue that requires hacking around and using some weird combination of mechanics, heuristics and vain hopes to work.
There is also an issue with how the fuel is burned from left to right. Locomotives can get stuck with old fuel in rightmost slots due to that, and handling it with circuits is fairly difficult.
Ultimately I find inability to read train (and other entities) fuel and cargo as a shortcoming. It is poor experience that on one hand train conditions are inferior to circuit network conditions, and on the other hand that trains have their internal circuit-like conditions that they can't communicate with the outside circuit network. It is also a pity that the fuel wait conditions can't be run per locomotive and the logic performed based on that (like "for all locomotives: if any fuel > threshold for fuel -> OK".
Ideally, reading individual wagons and locomotives would be a game changer allowing for a lot more interesting setups.
Look mom, I made a mod ^^ Barrel Stages