Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
Dwarf fortress wiki have good guide on reducing framerate problems
I'm happy to tell you he added immigration caps! My play style develops a lot of fortress wealth fast, so I pretty regularly set the cap to 50 at the start of the fort, and use them to build a fort for 100 or so dwarves, then set the cap to 100 and so on.
http://dwarffortresswiki.org/index.php/DF2014:Immigration#Limiting.2Fpreventing_immigration
https://dwarffortresswiki.org/index.php/DF2014:Maximizing_framerate
The steam release almost certainly won't include any changes to improve framerate.
In terms of things that've worked well for me, I've found that focussing on minimising pathing helps the most with increasing framerate. In a late fort with 200 dwarves (and as many animals), with all caverns open and a complicated layout, there's a huge amount of pathfinding that needs to be done. The smaller the area to path through, the closer everything is, the more you designate traffic areas, the better your framerate will be.
Framerate Improvements
Multithreading isn't as simple as "Make it use more CPU core"
Some elements of programming can't be parallelized.
I've heard Dwarf Fortress is also a really cache hungry game (it's functionally a database), and that Server CPUs, Workstation CPUs and now Zen 3 CPUs perform a lot better clock for clock.
Comparing a 10900k vs a 5900X or 5950X would let us know, they're more or less equal in terms of FLOP/IOP with the big difference being Ryzen's massive cache.
For example:
Pathfinding: If the game realizes that certain paths are used often, starts incorporating them into the pathfinding so pathfinding doesn't have to cover the entire map, essentially for most long range pathing calculations the unit would just walk to the nearest entry point for a known route, and then look for the much shorter path once they get to the end of the route. Only in new areas before the pathing memory sets in would be high cycle calculations
Caverns: Turn off essentially all pathfinding through them unless a job is sending the dwarf there.
Animals: Change the pathfinding behavior to be much much simplier (since animal minds are simplier). When you do an animal pathfinding calculation, have it determine the next X decisions rather than just the next 1 decision, but have exceptions that would trigger an early rethink. This would mean most animals would reduce cycle time by ~(X-1)/X %.
Items: Get more generic with most items. I know that DF loves it's detail, but I'm sure 99.999% of players would be willing to sacrifice detail on mundane uninteresting items if it gives us back FPS
Temperature Calculation: Again, we don't want to turn them off completely because it affects freezing/fire, but it can be coded that temperature calculations are ignored most of the time unless certain temperatures are hit. In other words, keep track of just overall generic zone temperatures only, and then check for things like magma being out of place, or dwarves being out of place with respect to magma, then only run temperature calculations when anomalies occur rather than always. If it is 30 degrees C outside and nothing is in the magma sea or currently on fire for example, just skip the temperature calculations.
An even easier solution would be to set the default pop cap. to <= 100, and the default map size to 3x3 or less. That way the players who can't/won't deal with traffic zones, blocking off caverns, etc. don't have to worry about it. The players who can/will can just increase the pop. cap. Maybe when you start a game, you get an options menu (exposing options from the d_init.txt file) with a 'Max Pop.' slider, defaulting to, say, 60. If the player starts pushing it up to over 100, a warning pops up that there may be framerate issues in the lategame, but that the wiki has solutions for this.
I play on a laptop from 2013 and the only time I've experienced drops in FPS that makes the game borderline unplayable is when I visit a 1000+ pop. site as an adventurer. Or when I spoiler the spoilers.
I very much doubt this. I think the insane attention to detail is one of the big attractions of DF, and the game's creators are very good at keeping mundane information out. I also don't believe it's the details on items that causes the problem, but the number of items themselves. I don't think there's a difference between the game tracking 100 plain earrings vs 100 earrings that are studded with metal and encrusted with gems when it comes to framerate.
It’s no surprise to anyone that FPS death is due to poor foresight in coding. I’m pretty sure they have even admitted that before. People need to stop with this “oh you’re just playing wrong” mindset. You should be able to play however you want. What other game do you have to limit population, turn off temperature, destroy a bunch of items, cage up all of your pets, and block off rooms just so the framerate won’t go nuts? It’s a legitimate coding issue. Let’s stop pretending like people are just playing the game wrong and causing massive bugs
This is a bit of a misnomer, it's not poor foresight, it's a lack of any formal programming education. I recall when we tried explaining using SSE to Toady and he pretty much was like "is that a compiler setting? Well, I upgraded my compiler so it might be using it." Toady is a brilliant mathematician and is brilliant at writing the algorithms for the game... but he isn't the person you want implementing those algorithms.
If you honestly think about the complexity of math going on in a modern 3D game just to render the entire environment, you should see that it isn't the amount of data that is the issue with dwarf fortress... it's the way it's structured in memory and how it is all processed. People throw out parallelization like a fix all, but it actually requires large rewrites of how things are structured in memory and processed to get good parallelization.
Also note that you don't want to be arbitrarily spawning new threads and calling that parallelization, you're more likely to slow things down with that mindset, especially if both processes need to join up at some point.
Like most game designers, Toady is interested more in his algorithms than the implementation. That is why we see new features being added and increasingly complexity while the minor issues of FPS death are ignored. Toady is the director, he sees the whole picture as it works perfectly together and his head is up in the clouds, that is why he needs code writers to put his ideas into form and focus on the minutia he isn't interested in himself.