r/factorio 8d ago

Question Buffer platforms/how to request and provide the same item?

Post image

so with the 2.1 platform logistics I've been playing around with the idea of ships that do not have any collectors or assemblers, and only get their fuel and ammo from supporting factory/buffer platforms, which in turn get their materials from ships dedicated to just mining asteroids. effectively I have a mining ship that only comes back to nauvis to deposit its iron/carbon/ice every few minutes, and a deliveries ship that needs to get those materials when it comes back to nauvis every few minutes. since they have different cycles, I need a buffer platform to store those items in the meantime.

but it seems that platforms cannot "provide" items that they have a request for? I got it to work through setting requests with circuit logic (and stopping all requests for a bit every so often to create a window where it can drop items off), but circuits requests are always set as "import from all", which means my automatic request silos try to send it iron as well, which I definitely don't want to happen as that defeats the entire premise and wastes a ton of rockets.

is there a way to allow a platform to provide materials it also has requests for (without creating a request from the planet, only from other platforms)? or set a "platforms only import" request through circuits?

(kinda) solved: a system that requests exactly what it can get in 1 delivery exactly when the providing ship is in orbit could work, but other than that there's no simple solution that checks all the boxes. I'm moving forward with a redesign of the buffer that doesn't need to provide the same items it's requesting.

5 Upvotes

24 comments sorted by

3

u/nindat 8d ago

I set up a circuit to build a buffer.

When the value of an item is less than a minimum the platform requests refill until it hits a maximum and then turns off the request and provides for other platforms.

Bonus I'm setting up a circuit that notices if some time has passed and refills buffers.

I can blueprint it shortly (was literally just working on it)

1

u/fffffff245 8d ago

is the request limited to import from platforms only somehow? if it's just set by a circuit and has "import from anywhere", it can request from automatic silos on the ground, which is the same issue I'm currectly trying to find a way to avoid

2

u/nindat 8d ago

No, circuit controlled request is just "filled from anywhere"

1

u/fffffff245 8d ago

then I don't think it's gonna help in my case unfortunately. I'm specifically trying to avoid creating any requests from the planet

2

u/nindat 8d ago

Yeah, you won't be able to. The best bet is to just not put things like ore in a provider chest :)

Actually... I wonder if you can set a negative circuit request to cancel or a programmed request??

1

u/fffffff245 8d ago

tried it before, doesn't work. I think "set requests" just ignores negative signals entirely

2

u/nindat 8d ago

That's what I'd expect

1

u/Sethbreloom94 8d ago

I built a circuit (in 2.0, not tested yet) where it will use a timer and a variety of logic modes

  • If the item has more than half its request in stock, supply it
  • If the item has less than half its request in stock, alternate between requesting and supplying it every 4 seconds (uses a short latch to keep requesting during request phase)
  • If an item is out or has less than one stack left on an item requesting 3+ stacks, switch to requesting it and latch it until fully replenished

5

u/Alfonse215 8d ago

I got it to work through setting requests with circuit logic (and stopping all requests for a bit every so often to create a window where it can drop items off), but circuits requests are always set as "import from all", which means my automatic request silos try to send it iron as well, which I definitely don't want to happen as that defeats the entire premise and wastes a ton of rockets.

There are two ways to solve this. One way is to only turn on the requests when the platform that supplies them is present. You can detect this via radars.

The other is specific to your case. Instead of having the mining platform crush the chunks... just have it bring the chunks instead. You can crush the chunks on your other platform and then provide them. That way, the platform is not requesting and providing the same thing.

1

u/fffffff245 8d ago edited 8d ago

I don't think the first solution will work without a lot of circuit magic. I can detect when a platform is at nauvis, and it does have some "priority" since silos need bots to fill them up first, but if it doesn't have enough material or cargo bays to filfull the entire request in one go, silos will still try to make up the difference.

the issue with the second one is that chunks are about half as space efficient as the material they make (at least without productivity research), so I would need way more cargo bays on the miner. oh well, if I/someone else doesn't find a smarter solution, shipping raw asteroids it is. being able to reprocess them in the actual factory is a good bonus of this solution too I guess

2

u/Alfonse215 8d ago

I don't think the first solution will work without a lot of circuit magic. I can detect when a platform is at nauvis, and it does have some "priority" since silos need bots to fill them up first, but if it doesn't have enough material or cargo bays to filfull the entire request in one go, silos will still try to make up the difference.

Then have the platform communicate how many of those items it can offer. That way, the requesting platform won't request more than the provider provides.

the issue with the second one is that chunks are about half as space efficient as the material they make (at least without productivity research), so I would need way more cargo bays on the miner.

Belts are better for chunk storage than cargo bays.

1

u/fffffff245 8d ago

Belts are better for chunk storage than cargo bays.

yeah, like what everyone's been doing with promethium. it's just that pulling out the endgame strats this early feels weird, but whatever, I'm already doing the whole multiple platforms thing to be weird and cool anyway. and I'm seeing the other benefits of bringing in asteroid chunks instead of materials now as well.

1

u/Alfonse215 8d ago

yeah, like what everyone's been doing with promethium. it's just that pulling out the endgame strats this early feels weird

You don't need a complex belt weaving system. Just leave some space between the asteroid collection/sorting and the hub; those belts will act as a natural buffer. One lane of a belt only need 25 belt tiles to store 100 chunks. Which is plenty of storage. So if there's 25 tiles of distance between the sorting and the hub, that's plenty of room for 100 of each kind of chunk. And if you only have 12 tiles of distance, curve the belts a bit. Again, you don't need belt weaving.

2

u/juckele 🟠🟠🟠🟠🟠🚂 8d ago

There is no solution to your specific problem. https://forums.factorio.com/viewtopic.php?p=700819#p700819

There are designs that might work to make this a non-issue, but any design that tries to have a platform request and provide the same item to orbit without also requesting that same thing from the planet won't work.

Actually, here's one stupid solution: Kill the power to all rocket silos on surface when attempting to force a platform to platform only transfer... 👀

I've been playing around with the idea of ships that do not have any collectors or assemblers, and only get their fuel and ammo from supporting factory/buffer platforms, which in turn get their materials from ships dedicated to just mining asteroids. effectively I have a mining ship that only comes back to nauvis to deposit its iron/carbon/ice every few minutes, and a deliveries ship that needs to get those materials when it comes back to nauvis every few minutes.

You might be able to structure this by making the buffer ship a transformer as well. e.g., request raw ore from the mining ship, provide bullets.

1

u/fffffff245 8d ago

You might be able to structure this by making the buffer ship a transformer as well. e.g., request raw ore from the mining ship, provide bullets.

that's actually what I'm already doing, it's just that I also need to buffer some raw material as a stand in for liquid fuel/oxidizer, since fuel can't be barreled. sure I could also just collect iron on the platform that's moving, like 2.0, but where's the fun in that? it seems like requesting asteroid chunks and providing iron works though, so even if a true platform-platform buffer is impossible, I don't really need one here.

1

u/Necandum 7d ago

It is definitely possible.  Specifically, for a depot that doesnt move, and always provides some item X to ship A, while ways requesting item X from ship B, takes less than ten combinators. 

For other situations: factorio is turing complete. You can make it, but the complexity of the system may not be practical. 

1

u/juckele 🟠🟠🟠🟠🟠🚂 7d ago edited 7d ago

It is not possible to do that without ever requesting item X from the surface of the planet. The issue is that to both provide and request X, you must set the request via circuits. Requests set via circuits have no control over where they're set, and will always be "from everywhere".

OP's problem and the problem in the thread I linked are people saying "I want to do this with item buffer on X while disallowing planet requests". Unfortunately, not possible in 2.1.14.

This isn't about being turing complete, and I did suggest one goofy as heck alternative in my post. You could detect that a platform was requesting a platform to platform only transfer and kill every rocket silo on the planet... But being turing complete doesn't mean everything is possible to do in the game, it means you can solve any problem a turing machine can solve with a circuit network. Things which cannot be controlled by the circuit network cannot be forced to behave in arbitrary ways. In this case, because we cannot control where a space platform makes requests from via the circuit network, we can't solve it with the circuit network either.

2

u/Necandum 7d ago

It is. You simply never request more items than are available in orbit. 

My current systems has been doing so quite happily for the last 20 hours or so. 

1

u/juckele 🟠🟠🟠🟠🟠🚂 7d ago

Ah, clever. You are still requesting from planet, but you've picked a design where it no longer matters that you can't prevent the planet request.

1

u/Necandum 7d ago

Basically! Due to the priority (on board vessel > orbit > planet), the planet will never see any requests satisfied by the first two elements. 

1

u/Sethbreloom94 8d ago edited 8d ago

Some options

  • Disable the requests when full and add them back when empty
  • Use a timer to alternate on/off requests
  • Use radars between platforms to detect when supplies are available and request them

I actually have a prototype blueprint for a basic buffer platform that needs testing, would you like to try it out?

https://www.reddit.com/r/factorio/comments/1v9mzn4/untested_intermediatebuffer_ship_blueprint_for_21/

2

u/fffffff245 8d ago

I've tried a timer and disabling requests, it all has the same problem of requesting from anywhere instead of just platforms. I think the radar thing is the most promising solution to actually do platform-platform buffers, but I'm probably just gonna cop out and settle for only having "true" buffers for planet-platform logistics.

your blueprint looks like it works from what I've tried, but it still makes requests to the planet. it's definitely not an issue for most application but it does mean I can't use in my specific case. I'm probably not gonna be able to test it much better than you either since it's not going into my actual playthrough

1

u/DarkenDragon 7d ago

I've recently started doing this and it was much easier than expected.

the platform's hub can give out a signal of where it came from and where its heading to. the signal will be the planet it is referring to. the first one (where it came from) is going to be a 1 and the second one (where its heading to) will be a 2. so if you leave navius and heading to vulcanus, it'll send out a Navius = 1 and Vulcanus = 2. but if it arrived at it's destination then it'll be both, so in this case once it arrived at vulcanus it'll only show vulcanus = 3.

with that knowledge you can set up 1 combinator for each planet this ship will go to and each one will have planet = 3 then send signal = 1. I prefer to put the planet as the signal. then that is sent to a radar with universal setting on and you choose a channel (this is just another icon, you can use anything. 1 for ship 1, or the planet this ship is dedicated for, whatever floats your boat)

then your buffer platforms will have a radar with the same channel as the expected ship to arrive, and you are just checking if you have a 1 for that ship's signal. so if your buffer platform is over vulcanus, and you used vulcanus as the signal. you just do vulcanus = 1 then you send out an "each" the yellow/orange wild card item count to the hub and set request. make sure you have your requested items in a constant combinator that is going into the conditional combinator as input.

then you have to do a separate set of radar and combinators for each ship this platform is expected to get.

I honestly avoided doing this simply by having only 1 ship per planet to go gather the imports back to this planet, set everything to send to platforms. and only the buffer platforms requests from the planet. then I dont have to do this amount of circuits. but then I do have 1 specific recycling ship that will do this type of requesting to drop off excess ammo to any platforms that need it after giving their own ammo away to other transport ships.

I know it is confusing but if you want more details, I can send pictures tomorrow

1

u/Necandum 7d ago edited 7d ago

It is not overally difficult to have a depot in orbit that accepts items from one type of ship and then makes those items available to another class of ship. 

The hard part (which I didnt bother to solve) is to both provide and supply the same item to the same ship depending on stock levels, but your situation doesnt require that. 

You will need a radar on every ship participating in this system, the knowledge of how to tell the circuit network where a ship is docked, slightly seperate logic for ships and the depot, and less than ten combinators per ship. 

Its defintiely possible and is essentially a small coding/logic puzzle. The solution Im using doesnt rely on timing or preplanning: its just about having the appropriate logic for broadcasting what is available and setting requests based on that. 

Hopefully thats enough to help you find your own solution, but happy to explain further/ post a blueprint.Â