Dwarf Fortress

Dwarf Fortress

Lycan May 2, 2023 @ 5:05am
Is it true strip-mining causes fps problems?
So I've been looking online and I can't get a straight answer so I'm hoping people here are more knowledgeable; is it true strip-mining levels can cause severe FPS problems? Older posts on the original game forums and stuff on the wiki says it can "Cause Pathing issues which can lead to FPS drops" but then there's other articles saying that removing several levels of rock can drop the FPS permanently because the game constantly "checks" those empty tiles.

Ultimately I really want to mine a few levels clear and use the resources but I'm not sure if it's a good idea if it permanently will drain like 50% of the FPS for the rest of the fort. A few articles say if you "block off those levels" by building walls around the stairs and preventing access that will fix the issue, does anyone know if that's true?
< >
Showing 1-15 of 18 comments
Fletch May 2, 2023 @ 5:20am 
Walling off sections of the fort that are no longer useful will definitely help with pathfinding, because the walled off areas are no longer reachable so the pathfinder doesn't waste time exploring those areas anymore. However, pathfinding is not the leading cause of FPS death (per the new developer). I've heard that heavily forested maps have slower FPS as compared to a desert -- because cycles are spent calculating branch growth and such -- so strip-mining down forests may help. Unfortunately, there are just a lot of guesses and incorrect assumptions and all we can do is hope the devs figure out the problems and fix them.

You may want to explore the community created Wiki on the subject, though it may be full of inaccuracies too: https://dwarffortresswiki.org/index.php/Maximizing_framerate

You can do your own !Science! -- save the game and try something, and record the FPS. Then go back to the original save and try something else and record the FPS...
Fel May 2, 2023 @ 7:23am 
When walling off, putting doors in a few places can be helpful.
It provides a way for the dwarves that might have built the wall from the wrong side and it also allows you to open it up later on if you left rock boulder there.

In most cases you don't need to fully mine entire levels since stone is plentiful (even if you want to use one specific type for its color) and ores on the default setting are in large amounts as well.
Lycan May 2, 2023 @ 7:26am 
Originally posted by Fel:
When walling off, putting doors in a few places can be helpful.
It provides a way for the dwarves that might have built the wall from the wrong side and it also allows you to open it up later on if you left rock boulder there.

In most cases you don't need to fully mine entire levels since stone is plentiful (even if you want to use one specific type for its color) and ores on the default setting are in large amounts as well.
Ok thank you, also I swear I keep seeing you pop up on these forums so I just wanna add an extra thank you for taking out so much time to answer folk, its very kind of you :steamhappy:
Fel May 2, 2023 @ 7:28am 
This is one of the game where I subscribe on the forum itself to see new threads when they are made since I have a decent understanding of it to answer questions, happy that it helped you.
Drude Fiegler May 2, 2023 @ 8:15am 
On a side note, Putnam has said that huge improvements of FPS/computation are coming in the "not-next-but-soon-after" patch.
Fel May 2, 2023 @ 8:17am 
It's the line of sight thing that supposedly makes a major difference (since line of sight becomes a big deal once you have enough dwarves) right?
Fletch May 2, 2023 @ 8:20am 
Originally posted by Fel:
It's the line of sight thing that supposedly makes a major difference (since line of sight becomes a big deal once you have enough dwarves) right?

LOS improvements were released in v50.05 (back in January) -- but the code must do O(n^2) iterations in a nested loop (where N is the number of entities on the map). Just because A can see B does not mean that B can see A (hence why n^2) and not O(nlog(n)). This is begging to be parallelized to distribute that effort over all the available CPU cores :)

for entity_1 in all_entities_on_map: for entity_2 in all_entities_on_map: if entity_1 == entity_2: # don't care if you see yourself continue # run line-of-sight checks and process if canSee(entity_1, entity_2): ... do whatever logic when entity_1 has line of sight of entity_2

parallelize the outer loop for a cheap win -- all the logic inside the double nested loop must be made threadsafe though.
Last edited by Fletch; May 2, 2023 @ 9:23am
Morkonan May 2, 2023 @ 1:22pm 
Originally posted by Lycan:
So I've been looking online and I can't get a straight answer so I'm hoping people here are more knowledgeable; is it true strip-mining levels can cause severe FPS problems? ...

I do remember reading something about that specific for DF, but I can't speak to the current incarnation.

In general, though, providing more viable paths for something to pathfind through can cause unnecessary checks that would have otherwise not occurred had the large open space not been a large open space... It really depends on the type of pathfinding being used, how many actors there are and how often they're exposed to it.

I don't know how z-level changes work in that. Empty tiles that are not walkable by an actor should be culled, IMO.

There wouldn't be anything keeping your from clearing out a level then walling in the most efficient paths that you wanted dorfs to use, yourself. (I don't know what practical reason you'd want an entirely clear level for. World's Biggest Dance-floor? :))
Fel May 2, 2023 @ 1:25pm 
Above-ground forts need a large amount of building materials, even if you cut rocks into blocks you will still need to dig quite a bit.

It can be fun to build above ground every now and then, it's full of challenges that are much different from usual.
Drude Fiegler May 2, 2023 @ 1:48pm 
Originally posted by Fel:
It's the line of sight thing that supposedly makes a major difference (since line of sight becomes a big deal once you have enough dwarves) right?

I don't remember the specifics but it's a combination of multi-threadings, updating the libraries, and general algorithm improvements. There is more details in the interview of Putnam by BlindIrl
Fletch May 2, 2023 @ 4:02pm 
Originally posted by natsukashiinoneko:
I don't get this log idea. I'd say it's quadratic no matter what, with either n² (asymmetrical) or (n-1) + (n-2) + ... + 2 + 1 = n(n-1)/2 ≈ n²/2 (symmetrical) i.e. the symmetrical case saves about half the computations.
Or did I miss something?
....

You are right, it is (n^2+n)/2 -- when every unit must check every other unit.

The LOS code already has a distance limit, at least according to this post [www.bay12forums.com] . They say 17-25 tiles based on the observer skill -- but who knows? Without access to the source its hard to know for sure and whether that filter is done early enough in the computations.
Fel May 2, 2023 @ 4:10pm 
Well if the line of sight has a distance based on a skill's level then there would be many cases of one seeing without being seen.
There is also a sneaking skill that might factor in this as well.
Fletch May 2, 2023 @ 4:11pm 
Originally posted by natsukashiinoneko:
But what about this asymmetry?
Except for facing (I.e. some cone or pyramid of vision), what could break the LoS symmetry?
Doubling the computation time sounds like a luxury, don't you think?

Think of the real world: An eagle can see a mouse, but that doesn't mean the mouse can see the eagle -- I would suspect there is no symmetry due to things like that (or other reasons).

EDIT: @Fel and I said the same thing at the same time :)
Last edited by Fletch; May 2, 2023 @ 4:20pm
Katy May 2, 2023 @ 4:18pm 
i played the original dwarf fortress and the leading cause for fps death was items and breeding of animals and how many dwarfs ya have and so back in the day the only help to total fps death and the game forcing you to start a new fortress is to burn all the unwanted items ya get from mass goblin attacks and so on by throwing them into lava ,the share amount of items ya get and the never ending dwarfs who join the fortress was the main issue , we use to have to throw 100s if not 1000s of useless item in the lava to even have a chance of not getting total fps death
Last edited by Katy; May 2, 2023 @ 4:19pm
Lucidess May 2, 2023 @ 5:47pm 
I don't know about anything going on under the hood, but if there's tons of stone laying around, my fps tanks. If the room is stripped out and all the stone is cleared out though, it's fine. And of course, the fps tanks hard when the strip mining is in progress, but you probably experienced that already. Probably the reason why I use quantum stockpiles, and a lot less stockpiles in general to keep items inside workshops.
Last edited by Lucidess; May 2, 2023 @ 5:51pm
< >
Showing 1-15 of 18 comments
Per page: 1530 50

Date Posted: May 2, 2023 @ 5:05am
Posts: 18