Is there any way I can avoid death by FPS in Dwarf Fortress?

Is there any way I can avoid death by FPS in Dwarf Fortress? - Countryside road and closed entrance to army cemetery with metal bars on gloomy day

So uh... my fort at the moment has around 106 dwarves/petitioned entertainers and 20 visitors. The problem is (and this occurred suddenly) is that the FPS has been reduced to ~4 FPS. This is unplayable for me. Is there any way I can restore the FPS back to at least 20?



Best Answer

Some things can be done:

  • Shut off that dwarven reactor and any sources of moving water
  • Only female animals are useful. Slaughter everything but the females and maybe 1-2 males for breeding
  • For chicks, build a grid of 1x1-rooms with a nest in it, seal each of them with a door
  • For anything grazing, build similar structures, albeit a bit larger. Size depends on creature type unfortunately. Of course, these animals need food and cannot graze inside.
  • Build a dwarven atom smasher and get rid of the junk lying around
  • Make sure that you only dig small corridors, 1 - max 3 spaces wide (and 3 only where there is loads of traffic). Wall off large, unused parts, for example where you mined out for resources. Use the traffic designators, use forbidden for parts that need no maintenance. Use burrows. If your miners only need access to lower levels, restrict them to that. Make burrows as small as possible.

In my experience, the last point has the most significant effect, since the pathfinding needs a lot of CPU time and it will not consider spaces not reachable or outside of the burrows. The key point here is to restrict creatures as much as possible.

And never, ever, embark in a coastal biome. The waves are nice and stuff but you will have died the FPS death even before you arrived.




Pictures about "Is there any way I can avoid death by FPS in Dwarf Fortress?"

Is there any way I can avoid death by FPS in Dwarf Fortress? - Person Holding Can With Blue and White Knit Sweater
Is there any way I can avoid death by FPS in Dwarf Fortress? - Close-Up Photograph of a Can
Is there any way I can avoid death by FPS in Dwarf Fortress? - Automobiles parked on asphalt road near famous historic stone fortification located on grassy Signal hill in nature against cloudy sky





Dwarf Fortress How to Make Your Fort Run Fast - How to Avoid FPS Death




More answers regarding is there any way I can avoid death by FPS in Dwarf Fortress?

Answer 2

The core of the problem is pathfinding. Dwarf fortress uses A* pathfinding with some crude hacks to improve performance. It does not use any fancy tricks like Hierarchical Pathfinding which would reduce the CPU usage by more then 95 percent on long distances. The best thing to do is learn a bit about the A* alghorithm so you know it's pitfalls and keep this in mind when building your fort. But without any coding experience I can imagine this being hard. The wiki has some do's and dont's about ways to design your fortress to help the pathfinder out. The fact remains that the game would get a > 95% performance boost if toady would implement a good indexed hierarchical pathfinder, flocking and perhaps run this on a separate thread (which would probably be really hard to do given the current design choices).

Your issue at hand is very likely that most of your little dwarfs want to go to a far away position or at least a position where the pathfinder needs to check a lot of tiles as candidates for a path. So the first thing you could do is play on smaller maps in both X,Y,Z. Tile size grow exponentially 10x10x10 is just 1000 tiles but 20x20x20 is already 8000 tiles. So playing on a 2x2 area would be a lot faster then a 4x4 area later on in the game.

What you can do right now is assign burrows. Just let a view dwarfs gather those materials outside your fortress. Burrows has the nice side effect that dwarfs assigned to it would never get a task that is outside the burrow. It also narrows down the tiles the pathfinder will check since it should not consider a tile outside the burrow since the dwarf cannot go there.

Answer 3

As per the DF Wiki [http://dwarffortresswiki.org/index.php/v0.34:Maximizing_framerate], the more stuff the game has to keep track of, the slower it runs.

Some ways you can improve framerate are:

1) Reduce the size of your embark site. There is a utility called Nanofortress [for Windows] that allows you to do a 1x1 embark. The utility is located at http://www.bay12forums.com/smf/index.php?topic=21601.0 Even if you don't use this, you can reduce your starting embark site to a 2x2 or 3x3 site.

2) The number of items in your fort slows the game. Overproduction of items you don't need, or not destroying and/or gifting these non-need items to passing caravans will slow the game.

3) Flowing water or flowing Magma slows the game. Any volcanos or other magma sources, and any oceans or rivers will slow the game since it calculates where those liquids are moving to. One solution for this problem is to embark on a location with no surface magma or water.

4) Pathfinding slows the game. If you build a fort with multiple possible paths for your dwarves to go from one location to another, the game will check each possible path each time a dwarf needs to travel there. This pathfinding slowness applies to animals as well. If you have had a catsplosion or many other animals wandering around your fortress, that will slow the game. Some solutions to the pathfinding issues are to slaughter excess animals, set a cap on your dwarf population, and close and lock doors to remove possible paths. Also, any caged animals don't need to pathfind, so just cage any excess animals you don't want to get destroy or trade away.

5) Contaminants such as blood splotches on tiles slow the game. You can use the DFhack utility command "clean" to instantly remove all blood from tiles in your embark.

6) Running the game on a faster machine, not running other programs at the same time, and setting the game's CPU priority higher will all speed up the game.

7) The issues listed that involve slowdowns due to the games display of graphics can be reduced by watching the game in a smaller (fewer tiles displayed at a time) window, or setting the display to watch a Z level where all the tiles are still unexplored, such as a level where your dwarves haven't mined out yet. This solution won't help pathfinding slowdowns or slowdowns when the game calculates how fast and where water or magma is flowing to but I have noticed it does speed up FPS by at least 20 when I want time to go by faster in my games.

Sources: Stack Exchange - This article follows the attribution requirements of Stack Exchange and is licensed under CC BY-SA 3.0.

Images: Erik Mclean, Anna Shvets, Tima Miroshnichenko, Erik Mclean