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
that said, 30-40 FPS for a fort with 200 dorfs is quite good. DF is not a first person shooter. it is not simply reasonable to expect a simulation game like DF to maintain a TPS of 60-100 ticks per second. if you want your games that maintain such high tick rate (despite there being no real reason why they shoud), play something computationally simpler
thanks. is there anything I can do to get more utilization of the CPU (9700k)? I would expect a much higher usage if FPS has decreased substantially.
I haven't given it a go in awhile, as i'm waiting for the adventure mode still, but i'm hoping the performance has improved some since last year
But any difference is marginal at best once you've huge stocks and stuff at 200+ pop
Incorrect my friend.
Game Settings --> Game --> Enable multithreading (experimental!) --> Yes
This is a gigantic improvement in performance as I'm hitting 70-80 FPS with 200 dwarves.
The only thing I did was after starting the game up today was I disabled/re-enabled experimental multi-threading and set real-time priority in the task manager for Dwarf Fortress. I have done these things previously but haven't gotten good results until today so I'm not sure what's different.
the experimental multiprocessing option accelerates the particular set of calculations that are impacted here, but the real problem is that historical figures are stored, in sorted order, in a linear vector, which means looking one up by id requires a binary search, O(lg n) where n is the number of historical figures. parallelizing these searches (which is what the "experimental multiprocessing" option does) only clonks this down by a constant factor (the number of available cores). a much greater speedup would be obtained by replacing the linear vector with a hash table, which has O(alpha(n)) lookup performance, which is O(1) for all practical purposes. this would make performance of this particular frequently-executed code essentially insensitive to the number of historical figures
in general, there are lots and lots of places where dwarf fortress uses linear vectors for data structures, imposing O(n) costs for operations that would be O(1) with a more wisely chosen data structure. even toady recognized this, but his solution was to maintain the lists in sorted order and hand-roll a binary division search, which is certainly an improvement, but still not good even to get a passing grade in Data Structures 101. there's a reason people use hash tables. and don't even get me started on his home-baked priority queues... i have to wonder how many of the issues with irregularities in labor assignment are potentially due to flaws in that implementation
I do not think that 30-40 FPS is anywhere close to bad. There have always been spikes - I suppose it requires complete rewrite of code to get rid of that.
CPU usage of 30-40% is completely normal on single-process games. I kind hope they can go beyond that at some point.
RAM usage of 1 GB is very nice! It all depends how big area your castle and your world have. Keep in your mind that most now-days games overuse RAM like 10x times or more. Usually it is due bad programming skill or libraries but sometimes they do it deliberately to make game look more impressive.
Weird, wonder if there is a problem reading/writing that setting (the multithreading option) where it is not respected on restarts? If you have the option enabled, and getting 70-80 FPS, then when you restart the game do you get the same FPS or does it behave like multithreading is off again (requiring you to toggle the setting to get good performance again).
There is also processor based multithreading which is generally enabled on most processors unless you change it - it is generally good to disable it on gamers PC-s as it lower your maximum power what process can have. However it could help you with some stupid programs which try to grab all power to themselves regardless if they need it or not.
Ideally I would like game to run on multiple processes - 3-4 would be good enough and do data sharing through memory sharing instead of pipes/files which are way slower. Also 2D game could theoretically also make good use of graphic processor and memory for lot of extra power.
It's the average CPU usage on a single core, the one that is being used the most. The other cores are around 10-20%.
One process can maximum use one core power. That why multiple processes are much better. However it requires game to solve data transfer between processes which needs extra level of complexity in game code.
In the modern world, processes can (and routinely do) contain a pretty much any number of threads, each of which can be individually scheduled on a logical processor and thus can easily utilize more than one processor core.