Automatically landfill when placing blueprints/ghosts

Post your ideas and suggestions how to improve the game.

Moderator: ickputzdirwech

foamy
Filter Inserter
Filter Inserter
Posts: 381
Joined: Mon Aug 26, 2019 4:14 am
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by foamy »

The new BP interface includes toggles that can be modified repeatedly (for the gridsnapping, for example). Add another one of those to toggle 'auto-fill' on or off.

User avatar
NotRexButCaesar
Smart Inserter
Smart Inserter
Posts: 1046
Joined: Sun Feb 16, 2020 12:47 am
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by NotRexButCaesar »

ssilk wrote:
Sat Aug 08, 2020 6:40 am
Well, then - as said - this is a bit illogical when I place a wall-blueprint and use shift to remove the obstacles (trees, stone...) and when I got to the lake I don’t need to built on water, because the lake is my natural wall.

Shift-key has with this suggestion then a double functionality. I need to decide, if if don’t press shift-key and remove the obstacles myself, or if I live with the wall in the water. :)
Every change disrupts something or someone.
https://xkcd.com/1172/
: Alea jacta est. Determine what you intend to accomplish with an action before execution.
Have you ever heard the gospel? Most have not.

evandy
Fast Inserter
Fast Inserter
Posts: 228
Joined: Mon Apr 15, 2019 2:54 am
Contact:

Single-Placement for blueprints with tiles/landfill

Post by evandy »

TL;DR
Blueprints with tiles that change machine-placement rules should auto place the machines & the tiles under them automatically.

WHAT?
When a blueprint includes tiles (e.g. a nuclear blueprint being placed on a lake) you need to place the blueprint twice.
Once (with a shift-click) to place the landfill
A second time (no shift) to place the machines on top of the landfill after it's placed.

This should happen with a single blueprint placement (without the shift-click).

Ideally this would apply to pumps sitting on top of water-fill when explosive excavation or whatever is installed, but that's modded play so I understand if that isn't done. Just the base-game landfill & machine would be extremely helpful.

WHY?
Blueprint placing rules are different when placing landfill than everything else. You either need 2 blueprints, or to place the same one twice as noted above.

User avatar
NotRexButCaesar
Smart Inserter
Smart Inserter
Posts: 1046
Joined: Sun Feb 16, 2020 12:47 am
Contact:

Re: Single-Placement for blueprints with tiles/landfill

Post by NotRexButCaesar »

We can already place concrete under ghosts. The logical next step is landfill.
: Alea jacta est. Determine what you intend to accomplish with an action before execution.
Have you ever heard the gospel? Most have not.

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

Re: Automatically landfill when placing blueprints/ghosts

Post by Koub »

[Koub] Merged into older topic with same suggestion.
Koub - Please consider English is not my native language.

evandy
Fast Inserter
Fast Inserter
Posts: 228
Joined: Mon Apr 15, 2019 2:54 am
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by evandy »

Koub wrote:
Sat Aug 08, 2020 8:37 pm
[Koub] Merged into older topic with same suggestion.
I do not believe that my suggestion is necessarially the same as the topic you merged it with. This thread is about automatically adding landfill (that did not exist in the BP) when you place blueprints. I am talking about placing landfill AND the machines on top of it when placing a blueprint that already contains landfill.

Now, you could combine the two, and do both things, and I agree they are somewhat related, but they are distinct and different things....

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

Re: Automatically landfill when placing blueprints/ghosts

Post by Koub »

Actually, you're right, the suggestions are not the same exactly, they try to address the same issue (impracticality of building blueprints on water) with variations of "auto-landfill". There are 3 main suggestion families to address this currently represented in the suggestions subforum :
- a key modifier (Ctrl, Shift, Alt, Ctrl-Alt-Shift, or any combination requesting less than 28 fingers ...) to force placement of landfill blueprints automatically when plonking a blueprint on the water
- an option on the blueprint (either "landfill under if needed" on the blueprint itself, or "record tiles" on landfilled areas during blueprint creation)
- a 2-pass building : 1st pass, add a landfill order wherever needed to build the blueprint. 2nd pass : place the blueprint to build its content.

I don't think people would want all options to be implemented, they just discuss the best way to address the core issue : building things on a lake that needs landfilling first is a pain in the butt, especially when the landfill needs to be carved like lacework (for example for a tilable nuclear power plant including water pumps).
Koub - Please consider English is not my native language.

evandy
Fast Inserter
Fast Inserter
Posts: 228
Joined: Mon Apr 15, 2019 2:54 am
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by evandy »

Koub wrote:
Sun Aug 09, 2020 5:10 am
Actually, you're right, the suggestions are not the same exactly, they try to address the same issue (impracticality of building blueprints on water) with variations of "auto-landfill". There are 3 main suggestion families to address this currently represented in the suggestions subforum :
- a key modifier (Ctrl, Shift, Alt, Ctrl-Alt-Shift, or any combination requesting less than 28 fingers ...) to force placement of landfill blueprints automatically when plonking a blueprint on the water
- an option on the blueprint (either "landfill under if needed" on the blueprint itself, or "record tiles" on landfilled areas during blueprint creation)
- a 2-pass building : 1st pass, add a landfill order wherever needed to build the blueprint. 2nd pass : place the blueprint to build its content.

I don't think people would want all options to be implemented, they just discuss the best way to address the core issue : building things on a lake that needs landfilling first is a pain in the butt, especially when the landfill needs to be carved like lacework (for example for a tilable nuclear power plant including water pumps).
I could see either of the 1st two options (but not both) AND the latter option (which was my suggestion). That's why I had submitted mine as a different one, because I tohught it ammended, rather than replaced...

That said, if you want to leave these merged, fair enough... I just hope that someone considers it sometime soonish.

mrvn
Smart Inserter
Smart Inserter
Posts: 4506
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by mrvn »

Koub wrote:
Sun Aug 09, 2020 5:10 am
Actually, you're right, the suggestions are not the same exactly, they try to address the same issue (impracticality of building blueprints on water) with variations of "auto-landfill". There are 3 main suggestion families to address this currently represented in the suggestions subforum :
- a key modifier (Ctrl, Shift, Alt, Ctrl-Alt-Shift, or any combination requesting less than 28 fingers ...) to force placement of landfill blueprints automatically when plonking a blueprint on the water
- an option on the blueprint (either "landfill under if needed" on the blueprint itself, or "record tiles" on landfilled areas during blueprint creation)
- a 2-pass building : 1st pass, add a landfill order wherever needed to build the blueprint. 2nd pass : place the blueprint to build its content.

I don't think people would want all options to be implemented, they just discuss the best way to address the core issue : building things on a lake that needs landfilling first is a pain in the butt, especially when the landfill needs to be carved like lacework (for example for a tilable nuclear power plant including water pumps).
The first is already implemented by landfill everywhere. I pick up the blueprint and click a button at the top of the screen and it adds landfill below entities to the blueprint. But I'm sure there is a hot key for that too.

The second would need some upstream support. Can't modify vanilla GUIs. You could mod it with a second GUI though and store the option as hidden entity in the blueprint.

The third is what we have to do now, manually. You have to place the blueprint, wait fr the bots to place all the landfill and then place the blueprint again. That part is the really annoying thing. The game should support placing a landfill ghost and an entity ghost at the same time. And this can't be modded without adding a big construction delay to the process (mod remembers where blueprint was placed, waits for landfill to be there, creates entity ghosts) and wouldn't show where entities will be build.

So really if the DEVs change the game so that landfill ghosts, tile ghosts and entity ghosts can all be places at the same time then I think the rest can be sorted out by the community with mods.

evandy
Fast Inserter
Fast Inserter
Posts: 228
Joined: Mon Apr 15, 2019 2:54 am
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by evandy »

Right, that’s exactly my suggestion. Update the base game to put down both ghosts and have the machine placing bot wait for the landfill to be placed (same way they wait for deconstruction).

User avatar
ssilk
Global Moderator
Global Moderator
Posts: 12273
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by ssilk »

Hm. That behavior is in my eyes exactly what needs to be avoided. There are already suggestions about this waiting (aka first remove destroyed entities, then place new), so I need to intervene here a bit...

I think what is really needed here for this and some other suggestions, is a kind of programmable blueprint placer.

I have collected the ideas around that here
viewtopic.php?f=6&t=76499 Blueprint Book is not enough for me

For this case I can think of a mechanics that is able to first place an area of landfill, and when finished place a blueprint on that.
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...

mrvn
Smart Inserter
Smart Inserter
Posts: 4506
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by mrvn »

ssilk wrote:
Tue Aug 11, 2020 5:02 am
Hm. That behavior is in my eyes exactly what needs to be avoided. There are already suggestions about this waiting (aka first remove destroyed entities, then place new), so I need to intervene here a bit...

I think what is really needed here for this and some other suggestions, is a kind of programmable blueprint placer.

I have collected the ideas around that here
viewtopic.php?f=6&t=76499 Blueprint Book is not enough for me

For this case I can think of a mechanics that is able to first place an area of landfill, and when finished place a blueprint on that.
That will mean you get all the landfill ghosts placed first. Then you have to wait for all the landfill to get assigned a bot, for the bots to pick up landfill, to travel and to place the landfill. Only then the tile ghosts can be placed and the whole waiting game repeats. Once thats all done the entities can be placed and you get another round of waiting for bots to arrive. And what if part of the blueprint is placing roboports so the rest of the blueprint has construction coverage? It will never finish placing landfill because the roboports won't be placed.

So two major obstacles to that idea:

1) waiting for landfill and tiles just adds the round trip times for bots making blueprint placement 3 times slower
2) waiting for all landfill to be placed will break any blueprint that extend the construction range by including roboports

At a minimum whatever watched for landfill/tiles to be placed has to place entites as soon as the landfill/tile beneath each is present, not wait for it all.

3) If no tile / entity ghosts are placed but only the landfill when you place a blueprint then how do you see where you placed it? How do you place the next blueprint in a big one that is split into parts? How do you work on the belt connections while the blueprint gets build? The idea of placing entity ghosts later is just visualy unsatisfactory.


I'm totaly for not scheduling bots for entity ghosts as long as the landfill / tile ghost beneath them doesn't have a bot assigned. Even waiting for the landfill / tile ghost to be placed would be ok-ish, although slower. But they should be visible right from the start. Hiding that some placement job is going to be done in the future is just bad. No.

evandy
Fast Inserter
Fast Inserter
Posts: 228
Joined: Mon Apr 15, 2019 2:54 am
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by evandy »

mrvn wrote:
Tue Aug 11, 2020 10:58 am
I'm totaly for not scheduling bots for entity ghosts as long as the landfill / tile ghost beneath them doesn't have a bot assigned. Even waiting for the landfill / tile ghost to be placed would be ok-ish, although slower. But they should be visible right from the start. Hiding that some placement job is going to be done in the future is just bad. No.
This seems like a different issue that should be addressed separately. Because if you don’t schedule the bot due to landfill, then you should also delay scheduling for deconstruction. I would be totally in favor of that, bit let’s keep things simple...

Totally agree that waiting for all landfill is a non starter for the reasons you said. Curious why ssilk doesn’t like putting down both ghosts at the same time? He says he doesn’t like it, but I don’t see why? Placing both ghosts at once seeks the natural thing to me, but I’m open to an argument otherwise if you have one.

Again, I look to the deconstruction mechanics as precedent for this situation; placing landfill first is the same scenario as deconstruction and ghost at the same tone.

User avatar
ssilk
Global Moderator
Global Moderator
Posts: 12273
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by ssilk »

evandy wrote:
Tue Aug 11, 2020 3:53 pm
This seems like a different issue that should be addressed separately. Because if you don’t schedule the bot due to landfill, then you should also delay scheduling for deconstruction. I would be totally in favor of that, bit let’s keep things simple...

Totally agree that waiting for all landfill is a non starter for the reasons you said. Curious why ssilk doesn’t like putting down both ghosts at the same time? He says he doesn’t like it, but I don’t see why? Placing both ghosts at once seeks the natural thing to me, but I’m open to an argument otherwise if you have one
Hm, right, I didn’t explain it. I have some traumatic memories when I placed a bigger blueprint in forest and there where so many bots placing the entities, that no bot was left to remove the forest. It took me always hours to repair that. Maybe that is now a bit better - it never happened again since half a year or so.
But that’s eventually so, because I changed my strategy when placing bp into forest: I destruct the forest first, and when I see, that enough area is free, then I place the bp. That makes the whole construction also faster, because not so much bots get stuck placing entities on occupied ground.

It needs not to be completely cleaned! But it’s much easier to program. In my suggestion I was pointing to, the condition to place the (next) blueprint is a filter. A filter is in this case a scanner, that takes a part of ground and makes some simple calculations on it. In this case It measures the number of free robots vs the number of trees/tiles to be cleaned (for example) . And the bp will be placed, if there are “enough” free robots to clear the remaining trees.

Similar idea is with landfill. In short
- if player places blueprint on water, an built order is created
- first placing landfill area
- the a filter measures if enough landfill is placed yet
- then bp is placed

I’m not so happy with this being placed from start:
- visually a mess. Everything is a ghost. There are other ways to display that construction in this area goes on.
- for outposts this is traumatic if there is not enough landfill available there / it takes long to deliver them
- you need to check for each landfill that has been set if there is now an entity in range that can be placed now. Quite expensive operation AFAIK.
- very inflexible. What if a modder wants to use the current mechanism (separated building of blueprints and landfill as a special game element? For example the ground can be only built by specific bots?)
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...

Qon
Smart Inserter
Smart Inserter
Posts: 1633
Joined: Thu Mar 17, 2016 6:27 am
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by Qon »

evandy wrote:
Tue Aug 11, 2020 3:53 pm
then you should also delay scheduling for deconstruction.
Construction you mean?
ssilk wrote:
Wed Aug 12, 2020 4:07 am
Hm, right, I didn’t explain it. I have some traumatic memories when I placed a bigger blueprint in forest and there where so many bots placing the entities, that no bot was left to remove the forest. It took me always hours to repair that.
There's an issue with the order bots are scheduled, so instead of fixing both issues, we assume the second is never going to be fixed and settle for not fixing the issue of this topic either? That sounds absurd to me.

We need bots to landfill under blueprints now anyways. Use enough bots and https://mods.factorio.com/mod/DynamicConstructionQueue and you don't have this second issue right now because a bot will be sent to each ghost. For some size of construction you might not have enough bots, but you can scale the con bot count with the size of blueprints you want to place. And most placed big blueprints won't be inside non-ghosted roboports anyways so there's a limit to how much collision you will have. And also a limit to how many ghosts you can place since big blueprints wont fit inside radar range in many cases and can't be placed from map without mods.
ssilk wrote:
Wed Aug 12, 2020 4:07 am
I’m not so happy with this being placed from start:
- for outposts this is traumatic if there is not enough landfill available there / it takes long to deliver them
- very inflexible. What if a modder wants to use the current mechanism (separated building of blueprints and landfill as a special game element? For example the ground can be only built by specific bots?)
As it is now with mods you can add landfill under entities to your blueprint. Just copy it and filter out the entities. Or just landfill manually if you prefer. You don't lose the option to landfill first. We want a feature, and you are arguing against it even though your playstyle will continue to work regardless. That's weird. These are not valid arguments.
ssilk wrote:
Wed Aug 12, 2020 4:07 am
- you need to check for each landfill that has been set if there is now an entity in range that can be placed now. Quite expensive operation AFAIK.
Very cheap if done right. Mods need to do surface.find_entities() calls etc and cross-check positions etc. But blueprint placement uses collision detection (already) with is done to structured data. Entities that can't be placed are already shown as red, the landfill ghosts just need the proper collision layer etc and it should be possible to take no additional time at all, compared to placing on entities with ordered deconstruction and similar.

mrvn
Smart Inserter
Smart Inserter
Posts: 4506
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by mrvn »

ssilk wrote:
Wed Aug 12, 2020 4:07 am
evandy wrote:
Tue Aug 11, 2020 3:53 pm
This seems like a different issue that should be addressed separately. Because if you don’t schedule the bot due to landfill, then you should also delay scheduling for deconstruction. I would be totally in favor of that, bit let’s keep things simple...

Totally agree that waiting for all landfill is a non starter for the reasons you said. Curious why ssilk doesn’t like putting down both ghosts at the same time? He says he doesn’t like it, but I don’t see why? Placing both ghosts at once seeks the natural thing to me, but I’m open to an argument otherwise if you have one
Hm, right, I didn’t explain it. I have some traumatic memories when I placed a bigger blueprint in forest and there where so many bots placing the entities, that no bot was left to remove the forest. It took me always hours to repair that. Maybe that is now a bit better - it never happened again since half a year or so.
But that’s eventually so, because I changed my strategy when placing bp into forest: I destruct the forest first, and when I see, that enough area is free, then I place the bp. That makes the whole construction also faster, because not so much bots get stuck placing entities on occupied ground.
But that is a completely different issue. One discussed in the other thread you mentioned about deconstructing blocking placement. It's a general problem of batch systems where one job depends on one or more others. The solution is simple, don't start a jobs untill all depends are met (or in this case bots dispatched). And the check is relatively simple: Before dispatching a bot check if a deconstruction, landfill or tile job obstructs the entity that doesn't have a bot assigned to it. If so just skip it. It's one area search the size of the entity per tick, so shouldn't be too bad.
ssilk wrote:
Wed Aug 12, 2020 4:07 am
It needs not to be completely cleaned! But it’s much easier to program. In my suggestion I was pointing to, the condition to place the (next) blueprint is a filter. A filter is in this case a scanner, that takes a part of ground and makes some simple calculations on it. In this case It measures the number of free robots vs the number of trees/tiles to be cleaned (for example) . And the bp will be placed, if there are “enough” free robots to clear the remaining trees.

Similar idea is with landfill. In short
- if player places blueprint on water, an built order is created
- first placing landfill area
- the a filter measures if enough landfill is placed yet
- then bp is placed

I’m not so happy with this being placed from start:
- visually a mess. Everything is a ghost. There are other ways to display that construction in this area goes on.
- for outposts this is traumatic if there is not enough landfill available there / it takes long to deliver them
- you need to check for each landfill that has been set if there is now an entity in range that can be placed now. Quite expensive operation AFAIK.
- very inflexible. What if a modder wants to use the current mechanism (separated building of blueprints and landfill as a special game element? For example the ground can be only built by specific bots?)
- Visually it's less confusing than deconstruction jobs and entities mixed together and we have that. Granted a landfill + tile ghost would be impossible to see both. But do we really need to? We see that the end result will be e.g. stone path. Who really cares if there is landfill below that as well? If landill + entity is really visually to confusing then just show the entity ghost. The landfill is implicit. If I know the game will place landfill automatically then seeing the entity is enough.

- I'm not sure how this has any bearing. You need to place landfill, there is no way around it. No matter how you build the outpost, if manually, with one blueprint after the other or whatever. You will always have to wait for landfill to be produced.

- Checking if there now is an entity that can be placed would mean scanning an area the size of the largest entity all around (so 4 times as many tiles). And landfill is often placed in batches. The player might place 1000 landfill with one click. Checking that way would be expensive. Instead do it the other way around. When the entity comes up in the waiting-for-a-bot list again check if it has unassigned landfill jobs pending. If so skip it. That way you only have to scan exactly the area of the entity and only one per tick and only when one is pending, a bot and item available for it.

- I would guess you define a collision layer for landfill / tiles / entity ghosts. Then they simply can't be placed on top of each other and need to be placed in stages.


Note: I'm currently playing with cargo-ships mod. In there you have ports (train stations for ships) that can be placed on both water and land. Because of that you can place a landfill and entity at the same time. So the problem isn't that the game can't place both. It's simply that an entity ghost can't be placed on water. The only change that needs to happen seems to be that for ghost placement the collision check should consider landfill ghosts results.

User avatar
ssilk
Global Moderator
Global Moderator
Posts: 12273
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by ssilk »

Qon wrote:
Wed Aug 12, 2020 8:19 am
We want a feature, and you are arguing against it even though your playstyle will continue to work regardless. That's weird. These are not valid arguments.
I try to show alternative options, that enable another playstyle than yours. :) And as side effect enable both styles. Sorry, I don’t have the mind to explain it deeper today, it’s just too hot.
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...

evandy
Fast Inserter
Fast Inserter
Posts: 228
Joined: Mon Apr 15, 2019 2:54 am
Contact:

Re: Automatically landfill when placing blueprints/ghosts

Post by evandy »

ssilk wrote:
Wed Aug 12, 2020 1:32 pm
Qon wrote:
Wed Aug 12, 2020 8:19 am
We want a feature, and you are arguing against it even though your playstyle will continue to work regardless. That's weird. These are not valid arguments.
I try to show alternative options, that enable another playstyle than yours. :) And as side effect enable both styles. Sorry, I don’t have the mind to explain it deeper today, it’s just too hot.
It sounds like you have an issue with batch scheduling bots when there are job dependencies. I can totally understand the concern, but it is a different issue than this thread. I agree that making a new type of job dependency (landfill) May exacerbate the original problem.... but only if you actually schedule it. There are plenty of ways to work around it, and if you have enough bots, it is actually most efficient to just schedule the bots anyways and let them sort it out upon placement.

That said, I would be in favor of having them work the dependent jobs in order, IF it is ups efficient to schedule it. I don’t know the schedule enough to answer that question

Post Reply

Return to “Ideas and Suggestions”