Page 4 of 12
Re: Optimization idea: abstraction
Posted: Wed Mar 11, 2020 3:08 pm
by Klonan
eradicator wrote: Wed Mar 11, 2020 2:47 pm
I have a very faint memory of @Rseding mentioning he actually did that once and decided it was too overpowered to release to the public. (faint == possibly false)
False memory, but close
Its a really complex item, he/we still would like to have it in the game, but other things have taken our focus for the last while
Re: Optimization idea: abstraction
Posted: Wed Mar 11, 2020 3:21 pm
by Nemo4809
eradicator wrote: Wed Mar 11, 2020 2:47 pm
@Nemo4809
@StephenLynx
I think you're (willingly?) ignoring the visual aspect. Currently all the animations of belts, inserters, etc represent the exact state of the factory. So if you want to "abstract" then the exact state doesn't exist anymore and thus can not be visualized. It's a classical "keep the cake or eat it" problem.
So even if you give the player the ability to create strictly defined closed systems that stop all work when anything goes wrong, then you're basically talking about a very large but singular assembling machine in all aspects except for how difficult it is to build. Thus the blackbox would actually be pitch black.
I'm fine with it having no visual - maybe a greyscale static image of the "insides" (like what you see in the blueprint preview) so players will know what each abstract factory does; this also means it will take up the same space as what it's replacing.
As for difficulty of building ... it's the same as using a blueprint IMHO. You still have to design the thing to produce the products you want. Its efficiency will still be measured via the initial simulation. Also just make it so it cost you the same components to put down as if you placed it by hand in a "native implementation".
With all its restriction, it will probably be slightly less efficient throughput-wise vs using a "native implementation" but it can be an option for megabase building players - where by choosing to use an abstract factory they are deciding to sacrifice throughput for the meta-benefit of higher UPS.
Re: Optimization idea: abstraction
Posted: Wed Mar 11, 2020 3:35 pm
by Deadlock989
So it won't work when there isn't fully compressed unvarying flow, it won't work when there's fluctuating power, and it won't work when you use your meat eyeballs to look at it on the screen, and furthermore it will take extra CPU time to unbundle hundreds of these "optimisations" every time you change zoom level or move around your factory or there's a one inch gap in a belt somewhere because a biter coughed.
When will it actually work to any benefit? With the game running on a headless server with no players attached?
Re: Optimization idea: abstraction
Posted: Wed Mar 11, 2020 3:55 pm
by StephenLynx
Deadlock989 wrote: Wed Mar 11, 2020 3:35 pm
When will it actually work to any benefit? With the game running on a headless server with no players attached?
First of all, I don't think it would need full belts to work. Second, most of bases that start to choke on UPS run at full power all the time and players can easily plop down as much power as they want at that point. Third, these same large bases will only have a fraction of their structure near players. Fourth: the abstraction data can be easily cached. So after the initial processing it would be trivial to restart and stop the simulation. And unless the player changes something relevant to the area, the cache can be kept.
PS: specially for single player, you will always have one player looking at one place at a time. And zoom shouldn't matter if you only abstract things really far from the camera.
Re: Optimization idea: abstraction
Posted: Wed Mar 11, 2020 6:14 pm
by eradicator
StephenLynx wrote: Wed Mar 11, 2020 2:58 pm
eradicator wrote: Wed Mar 11, 2020 2:47 pm
I think you're (willingly?) ignoring the visual aspect. Currently all the animations of belts, inserters, etc represent the exact state of the factory. So if you want to "abstract" then the exact state doesn't exist anymore and thus can not be visualized. It's a classical "keep the cake or eat it" problem.
I am not. I have stated before that when you have to show the abstracted area, the game should stop abstracting and organize the buffered items inside the area.
Sorry, must have misremembered who said that. But as i (and other people) have stated before: switching in and out of the emulation state for a large amount of entities would be too costly to do it on-the-fly just because somebody looks at it. As the whole concept hinges on it being "one" thing you can't "partially unemulate" it either, so you're stuck with either lag spikes or limiting the allowed size of emulated areas.
______
Klonan wrote: Wed Mar 11, 2020 3:08 pm
eradicator wrote: Wed Mar 11, 2020 2:47 pm
I have a very faint memory of @Rseding mentioning he actually did that once and decided it was too overpowered to release to the public. (faint == possibly false)
False memory, but close
Its a really complex item, he/we still would like to have it in the game, but other things have taken our focus for the last while
All hope is not list then! :D
Re: Optimization idea: abstraction
Posted: Wed Mar 11, 2020 11:00 pm
by StephenLynx
eradicator wrote: Wed Mar 11, 2020 6:14 pm
As the whole concept hinges on it being "one" thing you can't "partially unemulate" it either, so you're stuck with either lag spikes or limiting the allowed size of emulated areas.
______
I have to disagree on that. Once you have a cached model for the area, stoping it's simulation is more or less as costly as a single UPS cycle. The game is already able to run one cycle for all those entities and the items they are handling 60 times per second. Why do you think it's that hard to start and stop the simulation once you know what's supposed to be simulated? Besides, how often you have to start and stop simulations depends on what metric the game uses to do so. It's not hard to apply a similar logic to the one mmos use to show and hide players to each other.
Re: Optimization idea: abstraction
Posted: Wed Mar 11, 2020 11:14 pm
by Deadlock989
I mean, clearly it's a doddle and well worth the time spent on it.
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 9:48 am
by eradicator
StephenLynx wrote: Wed Mar 11, 2020 11:00 pm
eradicator wrote: Wed Mar 11, 2020 6:14 pm
As the whole concept hinges on it being "one" thing you can't "partially unemulate" it either, so you're stuck with either lag spikes or limiting the allowed size of emulated areas.
______
I have to disagree on that. Once you have a cached model for the area, stoping it's simulation is more or less as costly as a single UPS cycle. The game is already able to run one cycle for all those entities and the items they are handling 60 times per second. Why do you think it's that hard to start and stop the simulation once you know what's supposed to be simulated? Besides, how often you have to start and stop simulations depends on what metric the game uses to do so. It's not hard to apply a similar logic to the one mmos use to show and hide players to each other.
I don't get the MMO comparison. There's nothing emulated there, the server does not abridge any calculations, it merely doesn't show you all the results. In factorio "unemulating" would require you to calculate the state of all machines from 0 instead of iteratively like it is done in a normal game, which is more expensive (very simplistic: i=i+1 vs i=n*m where n and m also have to be calculated first).
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 12:34 pm
by StephenLynx
eradicator wrote: Thu Mar 12, 2020 9:48 am
I don't get the MMO comparison.
You completely missed the point. MMOs have to choose when to hide and show other players. It would be impossible to tell every player in the world where every other player is. So they have a method of loading and unloading players around you as you move. Change loading players by abstracting areas.
PS: no, it wouldn't have to simulate literally everything when it would stop simulating. It could infer the state from where the abstraction currently is. How many materials are bufferd? How many produced items are buffered? And so on. By knowing how fast the area produces item and how long it takes for items to start coming out from the area, it would be perfectly possible to quickly arrange items inside the abstracted area in a place that wouldn't affect production at all.
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 1:58 pm
by eradicator
StephenLynx wrote: Thu Mar 12, 2020 12:34 pm
eradicator wrote: Thu Mar 12, 2020 9:48 am
I don't get the MMO comparison.
You completely missed the point. MMOs have to choose when to hide and show other players.
No you did. Hiding a bit of graphics that has no effect on anything isn't difficult. The client doesn't do any game-state relevant calculations. And hiding players on the client doesn't stop them from being calculated on the server. Anyway, the old rule still stands: if you thinks it's oh-so-easy to do write a mod to demonstrate. Or post other evidence. You're "because i say so" attitude doesn't make for an interesting discussion beyond this.
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 2:04 pm
by StephenLynx
eradicator wrote: Thu Mar 12, 2020 1:58 pm
No you did.
If you can't see where you were wrong even after I explained it, there is no way to argue with you. Your text comprehension is severely lacking. The FIRST part of the issue is figuring what must be put in which state. The SECOND part of the issue is what to do when it switch states. MMOs have to do the same thing for the FIRST part or the issue, but not the SECOND part of the issue. Do you understand that now? Do I have to draw it for you?
Also, point out where I said it was trivial. I opened saying that it would be challenging. My whole point is that it's POSSIBLE.
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 2:20 pm
by Klonan
StephenLynx wrote: Thu Mar 12, 2020 2:04 pm My whole point is that it's POSSIBLE.
Well yea, its programming, anything is possible.
But its not practical.
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 2:49 pm
by eradicator
StephenLynx wrote: Thu Mar 12, 2020 2:04 pm
If you can't see where you were wrong even after I explained it, there is no way to argue with you. Your text comprehension is severely lacking.
Funny. I feel exactly the same about you.
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 3:50 pm
by netmand
Abstraction. I guess this popped up on the Programmer's word of the day calendar...
What's next? machine learning?
Do you really mean you want them to abstract the game more? No Thanks. There's a cadre of players that will rebel if the game is made any simpler.
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 4:02 pm
by StephenLynx
netmand wrote: Thu Mar 12, 2020 3:50 pm
There's a cadre of players that will rebel if the game is made any simpler.
You should read the thread. I opened by saying this wouldn't change anything at all as far as features or mechanics go.
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 4:21 pm
by netmand
StephenLynx wrote: Sat Mar 07, 2020 1:08 am
Only calculate what's coming in the area and how much it should come out.
Maybe you should re-read your own original post. Are you really calling this not a change and not a simplification?
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 5:36 pm
by Deadlock989
Blockchain. Add some blockchain.
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 5:37 pm
by darkfrei
netmand wrote: Thu Mar 12, 2020 4:21 pm
StephenLynx wrote: Sat Mar 07, 2020 1:08 am
Only calculate what's coming in the area and how much it should come out.
Maybe you should re-read your own original post. Are you really calling this not a change and not a simplification?
The endplayer cannot see any difference, just the production will be precise only near the player, all another stuff just as middle/nominal production speed. Is it really easy?
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 6:33 pm
by netmand
I'm trying to derive some value out of this. While I don't think abstraction in-of-itself is a good idea, The thought of combining large parts of the factory has some appeal.
I just can't think of a way where this helps UPC. To me this sort of ask will hurt UPC and require more processing power.
Re: Optimization idea: abstraction
Posted: Thu Mar 12, 2020 8:19 pm
by Nemo4809
netmand wrote: Thu Mar 12, 2020 6:33 pm
I'm trying to derive some value out of this. While I don't think abstraction in-of-itself is a good idea, The thought of combining large parts of the factory has some appeal.
I just can't think of a way where this helps UPC. To me this sort of ask will hurt UPC and require more processing power.
It depends on how it’s done. If we use the black box model, you can save a lot of UPS.