Jump to content

Help with non-gamebreaking tricks to optimize fps, even with debug mode


Recommended Posts

I'm willing to use debug mode to make the game flow better as long as it doesn't "break" normal gameplay (like outright deleting regolith).
Still, I've looked around and in some points I can't seem to find a consensus:

1) Which is lighter for the cpu, a neutronium or a vacuum tile? Which one should i use to fill space I don't need? I've seen people filling biomes with normal tiles but I guess those still require heat transfer calculations.

2) Again, which is better? Having multiple storage bins to gather all debris in the map, each with one element ( i guess not)? Having a single infinite storage for everything with mods or one for each element? Just dropping everything in one tile with sweep commands and the automation "unloaders"? Dropping in different tiles, each for different elements?
Whatever the choice, it should help if it is in vacuum right?

3) Of course, limiting pathing as much as possible (I wonder if someone dares using jetsuits). Even when keeping pathing to the minimum, how badly does it still "scale" with number of duplicants?

4) Does it really help to deny jobs in priorities? When an errand is under calculation I still temporarily see the names of dupes that are not allowed to do that job (of course they are not chosen in the end, but they still appear, suggesting they are included in the calculation anyway).

Any other tip? I feel like there should be like a sticky post for this :D

1 hour ago, suxkar said:

Which is lighter for the cpu, a neutronium or a vacuum tile?

I`m pretty sure vacuum is treated as gas for the simulation. Meanwhile neutronium gets no calculations at all. People have been generating maps 8 times the size and putting neutronium over 75% of it to get normal performance.

1 hour ago, suxkar said:

2) Again, which is better? Having multiple storage bins to gather all debris in the map, each with one element ( i guess not)? Having a single infinite storage for everything with mods or one for each element? Just dropping everything in one tile with sweep commands and the automation "unloaders"? Dropping in different tiles, each for different elements?
Whatever the choice, it should help if it is in vacuum right?

Less items should be faster. Droppers can stack items into 25t piles and so should be good here. Plus, this also means you avoid compactors, which are objects themselves. Infinite storage would probably be better, though.

One thing to note is that reachable items may have a higher cost. It seems that reachable items may be considered for jobs, while unreachable ones won't be. Not sure if sweeper-reachable items count as reachable or not here.

2 hours ago, suxkar said:

3) Of course, limiting pathing as much as possible (I wonder if someone dares using jetsuits). Even when keeping pathing to the minimum, how badly does it still "scale" with number of duplicants?

Each duplicant pathfinds separately, so expect linear scaling. They share suit counters, but last time I checked, they were bugged under heavy load so you should always have spare suits anyway.

Since ONI almost certainly uses mostly naive A* pathfinding, you want to limit the number of pathfinding nodes within typical travel distance. That is, large areas on the other side of map don't matter much, but "snaking" base does. You also want paths to be as straight as possible. Build grids, block off unused sections.

2 hours ago, suxkar said:

4) Does it really help to deny jobs in priorities? When an errand is under calculation I still temporarily see the names of dupes that are not allowed to do that job (of course they are not chosen in the end, but they still appear, suggesting they are included in the calculation anyway).

I would assume the less chores the dupes have to pick from, the less CPU load. It should be easy to test though. Just disable all jobs for all dupes and see if FPS goes up.

1 hour ago, Sasza22 said:

I`m pretty sure vacuum is treated as gas for the simulation. Meanwhile neutronium gets no calculations at all. People have been generating maps 8 times the size and putting neutronium over 75% of it to get normal performance.

Yeah I read somewhere vacuum is a gas and is "destroyed" by other gases. Thank you fro your answer, it shall be neutronium all the way then. the claustrophobia feel is gonna be a nice plus :D

 

14 minutes ago, Coolthulhu said:

Less items should be faster. Droppers can stack items into 25t piles and so should be good here. Plus, this also means you avoid compactors, which are objects themselves. Infinite storage would probably be better, though.

One thing to note is that reachable items may have a higher cost. It seems that reachable items may be considered for jobs, while unreachable ones won't be. Not sure if sweeper-reachable items count as reachable or not here.

Each duplicant pathfinds separately, so expect linear scaling. They share suit counters, but last time I checked, they were bugged under heavy load so you should always have spare suits anyway.

Since ONI almost certainly uses mostly naive A* pathfinding, you want to limit the number of pathfinding nodes within typical travel distance. That is, large areas on the other side of map don't matter much, but "snaking" base does. You also want paths to be as straight as possible. Build grids, block off unused sections.

I forgot there is a maximum stack. So there are still going to be many 25t patches of various materials. Do you think this would be a palpable improvement compared to just a bunch of 20t storage bins? May be so because they would be all in the same tile and limit patchfinding/heat exchange?
Also, should have expected the pathfinding to scale linearly, I guess it makes sense. That basically means that with 24 dupes It'll just get worse, right?
Francis John is going for 100 dupes.. I can hear his computer cry. I guess he can imprison them though.
Also thanks for the A* pathfinding information. That basically means that even a long L shaped path can be VERY much worse then a straight one right? Didn't think that would matter before reading about it! Thank you again for all the info!!

2 minutes ago, Nightinggale said:

I would assume the less chores the dupes have to pick from, the less CPU load. It should be easy to test though. Just disable all jobs for all dupes and see if FPS goes up.

Thanks for the tip, will do!

just fill up the rooms full of magma in the magma biome with neutronium, at least the magma that cant be reached (since its encased in neutronium)

as far as i know, flying critters should be killed.

 

1 hour ago, Nightinggale said:

I would assume the less chores the dupes have to pick from, the less CPU load. It should be easy to test though. Just disable all jobs for all dupes and see if FPS goes up.

Probably not. They only do calculations on the top prio and maintaining the prio-list should be very cheap. Did anybody try this?

Get a infinity storage mod. 

Build insulated tiles everywhere.

Each storage having only 1 resource.

Use only like 3 types of critters and only 8 of each.

Kill every wild animal and plant besides sleet wheat,  peppers are easier to plant.

If you have long pipes always insulate them or even use lots of bridges to jump the content.

Avoid letting transformations of elements occur anywhere in the map if not intended like water vaporizing in the oil biome.

Vent gases to space then fill everything with oxygen " this one i do not tested yet".

 

 

1 hour ago, Gurgel said:

 

Probably not. They only do calculations on the top prio and maintaining the prio-list should be very cheap. Did anybody try this?

Disable all i did not but letting each dupe do only like 3 jobs made the game a little bit more efficient but gameplay wise i dont percieved any change in the performance.

 

2 hours ago, metallichydra said:

just fill up the rooms full of magma in the magma biome with neutronium, at least the magma that cant be reached (since its encased in neutronium)

as far as i know, flying critters should be killed.

Oh.. I didn't think about the flyers.. I kinda liked my 80+ non maintained shyne bugs farm for eggshells.. A ball of light that only requires a lure and a bit of phosporite. Oh well, time for carnage!

2 minutes ago, natanstarke said:

Get a infinity storage mod. 

Build insulated tiles everywhere.

Each storage having only 1 resource.

Use only like 3 types of critters and only 8 of each.

Kill every wild animal and plant besides sleet wheat,  peppers are easier to plant.

If you have long pipes always insulate them or even use lots of bridges to jump the content.

Avoid letting transformations of elements occur anywhere in the map if not intended like water vaporizing in the oil biome.

Vent gases to space then fill everything with oxygen " this one i do not tested yet".

 

 

I don't understand the reasons behind many of your points: why 3 types of critters? why 8 of them?
Are you sure about bridges? They do teleport liquids sparing heat calculations, but don't they **** with piping calculations? Now that I think about it they might even be good for them.. many small circuits are better then few big ones right? Or is it the other way around??
You mean insulated tiles/pipes made of Insulation? Otherwise, while still having a minuscule heat transfer coefficient, it's non zero so the calculation will be the same I believe. Correct?

25 minutes ago, suxkar said:

Oh.. I didn't think about the flyers.. I kinda liked my 80+ non maintained shyne bugs farm for eggshells.. A ball of light that only requires a lure and a bit of phosporite. Oh well, time for carnage!

I don't understand the reasons behind many of your points: why 3 types of critters? why 8 of them?
Are you sure about bridges? They do teleport liquids sparing heat calculations, but don't they **** with piping calculations? Now that I think about it they might even be good for them.. many small circuits are better then few big ones right? Or is it the other way around??
You mean insulated tiles/pipes made of Insulation? Otherwise, while still having a minuscule heat transfer coefficient, it's non zero so the calculation will be the same I believe. Correct?

I heard in the forums that very little calculations may endup being ignored so insulated igenous/ceramic should help.

If the pipe is going 1 direction with a lot of bridges shouldnt be a problem just a teleport buff of non heat calc.

And yes in your case shinys are probably the killers of your cpu.

8 critters because its the value most efficient for 1 ranch of the grounded critters and the 3 critters is to just avoid having more stables of 8 around " im suposing that you will ranch every critter you do not killed so if 4 species live then 32 critters and so on.

 

42 minutes ago, natanstarke said:

If you have long pipes always insulate them or even use lots of bridges to jump the content.

Insulation makes no sense to mention in regard to FPS. All insulation will do is applying a different multiplier, which makes the heat exchange go slower. They will still do the same amount of calculations each second.

However maybe there is a threshold where it goes "it's below 0.001%" change or whatever where it will just round to 0, hence no calculations. I'm not aware of such code, but it's possible.

30 minutes ago, suxkar said:

Are you sure about bridges? They do teleport liquids sparing heat calculations, but don't they **** with piping calculations? Now that I think about it they might even be good for them.. many small circuits are better then few big ones right? Or is it the other way around??

There is no heat exchange with bridges. They just teleport liquid/gas from input to output without modifying the temperature.

One of the updates mentioned pipes being multi-threaded. It's highly likely that splitting one pipe into two can make those two pipes run on different CPU cores in parallel, hence making many small pipe systems faster than one giant system. However I'm not certain how they managed to make pipes multithreaded and it would be interesting to get an official statement on this. Obviously the gain from multithreading depends on your number of CPU cores.

3 minutes ago, mathmanican said:

if |ΔQ'| < 1.0E-4, no transfer is done

The problem is this is listed under Cell/Cell transfers. Pipe contents to pipe is Cell/Entity and pipe to gas/room is Cell/Building. This means taking that link for face value, that restriction doesn't apply to insulated pipes. Does that mean it doesn't apply? That's a good question. One thing I don't like about that post is how loosely the line between the different types of transfers are written. It's written like they are independent, but then to look up what some letter means, you have to read one of the other entries.

What I really wish for would be how to gain access to the source code for TheSim.dll. It doesn't have to be modable, just knowing what goes on would be great.

I think there are many areas of the game where heat calculations dont affect the gameplay so maybe its a good idea to make a mod to flag this areas to not do calculations as example when the lava pocket are unopened and have similar temperature and mass you could disable the mass and temperature calc on it.

Also you could reduce the tims undiscovered regions temperature and mass gets updated, or in general reduce those updates but increase the update "power" so its still the same effect.

Probably not. They only do calculations on the top prio and maintaining the prio-list should be very cheap. Did anybody try this?

It probably would. Have you seen how quickly duplicants toggle through priorities? They calculate the entire world pretty much every tick. The less they have to worry about, the better.

18 hours ago, suxkar said:

Also thanks for the A* pathfinding information. That basically means that even a long L shaped path can be VERY much worse then a straight one right?

You can't really have diagonal movement, so L-shaped is one of the safest paths you can get. Grids are also safe.

Avoid long 'U's. But only the long ones - the extra cost is not affected by U being present, but by the number of steps you have to take in "the wrong direction".

A useful visualization is to think of it as liquid spilling on a tilt surface. It tries to flow straight to destination, but collects in bends until it fills them. Too many bends and you waste the tilt.

1 hour ago, Coolthulhu said:

You can't really have diagonal movement, so L-shaped is one of the safest paths you can get. Grids are also safe.

If you look at dupe pathing, they do move diagonally as well. Probably would look very unnatural if they were not.

2 hours ago, Coolthulhu said:

You can't really have diagonal movement, so L-shaped is one of the safest paths you can get. Grids are also safe.

Avoid long 'U's. But only the long ones - the extra cost is not affected by U being present, but by the number of steps you have to take in "the wrong direction".

A useful visualization is to think of it as liquid spilling on a tilt surface. It tries to flow straight to destination, but collects in bends until it fills them. Too many bends and you waste the tilt.

Ok now I get it, the example you gave is extremely clear. One last question, just for the sake of curiosity: what about a U shape where the vertical parts are just 1 tile wide ladders and the horizontal one is just 2 tiles high. If there are no other corridors around, this would not impact calculations as much since there are not many tiles that can be checked, right? If instead there was also a corridor parallel but not connected to the last vertical part of the U, but connected to the entrance, then this would be problematic right? I mean something like the image I attached. Yes, I'm an artist dupe!

Untitled.png

2 hours ago, Gurgel said:

If you look at dupe pathing, they do move diagonally as well. Probably would look very unnatural if they were not.

They have a bunch of diagonal movement options in some cases, but they're always slower than proper grids so you should be eliminating those anyway.

1 hour ago, suxkar said:

Ok now I get it, the example you gave is extremely clear. One last question, just for the sake of curiosity: what about a U shape where the vertical parts are just 1 tile wide ladders and the horizontal one is just 2 tiles high. If there are no other corridors around, this would not impact calculations as much since there are not many tiles that can be checked, right?

Try out this visualization: https://qiao.github.io/PathFinding.js/visual/

 

When talking about pathing don`t forget that available (reachable) resources are calculated based on pathing. The entire resource list on the right needs to be reachable for dupes so pathing calculations must include the tiles dupes can reach to pickup stuff. That might be another layer of calculations.

2 hours ago, Coolthulhu said:

They have a bunch of diagonal movement options in some cases, but they're always slower than proper grids so you should be eliminating those anyway.

Try out this visualization: https://qiao.github.io/PathFinding.js/visual/

 

Great, thanks!

EDIT: Whoa, the example I gave was TERRIBLE for calculation

On 6/25/2019 at 5:44 PM, Nightinggale said:

Insulation makes no sense to mention in regard to FPS. All insulation will do is applying a different multiplier, which makes the heat exchange go slower. They will still do the same amount of calculations each second.

However maybe there is a threshold where it goes "it's below 0.001%" change or whatever where it will just round to 0, hence no calculations. I'm not aware of such code, but it's possible.

Take a look at your bunker walls, around your rockets. Do you notice that their temperature is increasing/decreasing at a pretty consistent rate? Now take a look at other rocks, are they all the same temperature? Some are from the time the map was generated, those will probably be "smoother". I think the 0.001% is a bit higher - and saving memory writes can potentially be increased performance. But i don't know that you can get away from the reads though. However if you reduce temperature domains, by vacuum gap or insulation, can't that potentially ease off on the areas that have constant updates, vs those areas that don't?

I reached the 1200 cycle and the game turned into a 1-2 frames slideshow. No tricks will save the opportunity to play after going into space. For several hours I tried to save the game, but it is useless. It makes no sense to waste time on this game if you want something more than a miner simulator. The release is a complete failure. So much work has been invested for a variety of gameplay, but in the end, the game was killed by optimization.

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...