Dwarf Fortress Bug Tracker - Dwarf Fortress
View Issue Details
0003267Dwarf FortressGeneralpublic2010-09-17 14:332011-03-27 23:47
alllinux & windowsUbuntu & XP
0003267: Blood spatter = steady FPS loss
I second this, I have experienced the same with 5 forts now within 5 years of game with FPS going from 90 to 2 in that time. I'm also putting this in as a new bug because I think it deserves "high severity" instead of "minor" as the old bugreport has. Problems usually show up only after a few years of majro bloodshed and contaminants spreading in the game.:
I am starting to suspect blood spatter as my major cause of FPS loss as well. In my current fort I've dropped from 100 to 35 FPS in one year; in that time...

- Dwarven population was reduced from 78 to 69
- Free roaming animal population was reduced from 0000039:0000030 to 0000010:0000005 (not counting wild animals)
- Amount of flowing liquids reduced from one large water reactor (8 water wheels) to one small water reactor (3 water wheels). Additionally had some small flow going on in a semi depleted magma pipe the year before which is now gone.
- The first usage of the garbage atom smasher occurred, smashing approximately two thousand raw stone to no effect on FPS.
- Much blood was shed, and now large quantities of the fortress are covered in blood and nearly all animals and dwarves have blood coverings on them.

I honestly can't stand to play this game any more with how FPS suddenly drops like this and absolutely nothing I do helps. None of the FPS increasing tips do anything at all. Flowing water doesn't affect my FPS. Caging hundreds of loose animals doesn't affect my FPS. Destroying massive quantities of stone doesn't affect my FPS. But something does, and does fiercely, and I'm honestly suspecting it is this blood bug. That bug, and the fact that I did mine some more during the year, are the absolutely only factors I can even think of which occurred and could decrease FPS. I'm getting sick of it, extremely sick of it.
http://www.bay12forums.com/smf/index.php?topic=66184.0 [^]

The problem with dfclean is it only removed contaminants from tiles, which is usually only a very small portion of the contaminants in a fort. Start looking through at your dwarves and items that they are wearing, were wearing, or were hauling around at some point. You will find many of these dwarves and/or items can have many pages of contaminants listed. Multiply this by potentially hundreds or thousands of such items, and it quickly outweighs the contaminants on the floor. That being said, dfcleanmap does help some, but it would be nice if we either had a laundry mechanic to clean things us legitimately in game, or a utility to scrub everything down.
Pathfinding as source of FPS loss is way overrated. Did you read him at all? He reduced significantly amount of entites on map that can perform pathfinding, to no avail. He is right, current biggest suspect is insane amount of contaminants everywhere.
Endlessly multiplying splatters is not "labor allocation" or "engineering" issue. It is crappy programming issue. DF does very little to prevent endless bloat and growth of anything in game. From taking VERY big amount of memory in worldgen (with 0.31.13 it started to be common, hooray sprawl and entities!), through preserving dead things for eternity in list of units* to zilion of stones, it is all around FPS rape. I seen only token effort (like stopping animal births when number of animals is high for given specie), if any at all. Unsuccesful: dreaded catplosions are feared by many.

I think these need to be adressed.
Play the fort, get wounds on a bunch of animals and dwarves that bleed everywhere. Wait a couple of years and watch steady FPS loss get worse and worse and worse as everything is getting spattered by blood and vomit and whatnot until your entire fort is unplayably slow no matter how you build it, how big an area you started with or if you kill and cage all your pets and wildlife.
Game is unplayable with long-time successful forts due to excessive FPS degradation.
No tags attached.
duplicate of 0000296confirmed Loci Pools/smears/spatters of blood, dust and other materials multiply themselves, get tracked around too much 
has duplicate 0003532resolved Dwarfu worn blood splatters decrease game performance by 400% 
Issue History
2010-09-17 14:33jeiNew Issue
2010-09-17 15:40Olith McHumanNote Added: 0012774
2010-09-17 15:43Olith McHumanNote Edited: 0012774bug_revision_view_page.php?bugnote_id=0012774#r4951
2010-09-17 15:43Logical2uNote Added: 0012776
2010-09-17 15:44Logical2uRelationship addedchild of 0000296
2010-09-17 19:44LemundeNote Added: 0012781
2010-09-17 19:52tripphippyNote Added: 0012782
2010-09-18 01:06Olith McHumanNote Added: 0012783
2010-09-18 01:13Olith McHumanNote Edited: 0012783bug_revision_view_page.php?bugnote_id=0012783#r4955
2010-09-18 02:14Olith McHumanNote Edited: 0012783bug_revision_view_page.php?bugnote_id=0012783#r4956
2010-09-18 20:12AzzaizanIssue Monitored: Azzaizan
2010-09-21 04:55AsarulexIssue Monitored: Asarulex
2010-10-05 13:39ShurikaneIssue Monitored: Shurikane
2010-10-06 06:09kwielandNote Added: 0013221
2010-11-09 13:15DwarfuRelationship addedhas duplicate 0003532
2010-11-09 13:16DwarfuNote Added: 0013680
2010-11-10 11:07Jiri PetruNote Added: 0013688
2010-11-10 11:12Jiri PetruNote Edited: 0013688bug_revision_view_page.php?bugnote_id=0013688#r5276
2010-11-10 11:12Jiri PetruNote Edited: 0013688bug_revision_view_page.php?bugnote_id=0013688#r5277
2010-11-10 12:58kwielandNote Added: 0013690
2010-12-04 13:23CakeonslaughtIssue Monitored: Cakeonslaught
2010-12-20 13:45KogutIssue Monitored: Kogut
2010-12-20 23:40zweiIssue Monitored: zwei
2010-12-21 10:59hyndisNote Added: 0014669
2010-12-30 04:07Rafal99Note Added: 0014753
2010-12-30 04:14Rafal99Issue Monitored: Rafal99
2011-03-05 15:30DoctorZuberNote Added: 0015776
2011-03-05 15:31DoctorZuberNote Edited: 0015776bug_revision_view_page.php?bugnote_id=0015776#r5927
2011-03-05 16:08FootkerchiefNote Added: 0015778
2011-03-05 16:08FootkerchiefRelationship replacedduplicate of 0000296
2011-03-05 16:08FootkerchiefStatusnew => resolved
2011-03-05 16:08FootkerchiefResolutionopen => duplicate
2011-03-05 16:08FootkerchiefAssigned To => Footkerchief
2011-03-08 00:58zweiIssue End Monitor: zwei
2011-03-21 11:18Rafal99Issue End Monitor: Rafal99
2011-03-27 23:47KogutIssue End Monitor: Kogut

Olith McHuman   
2010-09-17 15:40   
(edited on: 2010-09-17 15:43)
For getting rid of contaminants on objects, I find that going into material_template_default.txt in the raws, and setting blood's boiling point to 10015 (that's the normal temp on underground tiles) solves the problem quite nicely. Does this help?

edit: forgot to say, don't leave this on for too long, or your dwarfs will die.

2010-09-17 15:43   
I'm guessing this is at least expected, but definitely not a 'good thing', since with seasonal auto-cleanup currently not working/disabled, the tracking for blood/splatters can get a little crazy.

I'm tempted to mark this as a dupe of 0000296. I'll wait for your input, though, Jei.
2010-09-17 19:44   
I really hope this gets addressed soon. I've been wondering what it was that was slowing down my game with a max population of 30. Given the time when I start noticing a slow down I'm convinced this must be the issue. I think the whole blood thing sticking around forever is crossing the line between fun realism and not so fun realism. I'm sure once all of the fluid mechanics are worked out it will be fine but for now we really need the seasonal blood removal back.
2010-09-17 19:52   
Why can't the blood have decay like items do and when it hits 0 it disappears
Olith McHuman   
2010-09-18 01:06   
(edited on: 2010-09-18 02:14)
Interesting. I just looked, and blood does infact have the [ROTS] tag just like meat (aka muscle) and other animal products. I wonder why it doesn't work for blood?

edit: Actually, this might be slightly off topic. See 0003270.

2010-10-06 06:09   
Do blood smears and dried blood inherit the [rots] tag?
2010-11-09 13:16   
From 0003532:

"my fort, 6 embark tiles, 3 caverns, 130 dwarfes, 330 pets, used to run on only 8 FPS on a 3.5 ghz core i7, when i tried to get rid of blood carried around by dwarfes and pets by using the dfliquids and dfcleanmap tools. after placing some water around important routes and running the cleanmap utility in a loop, performance went up to _33 FPS_. thats more than 4 times as fast... this truely shows that the algorithms for the blood and dirt splattering are very inefficient, to say the least.
the switch in the config file ("do not move splatters around") seems to be completely failing, it was enabled all the time, but did not prevent up to 100 different blood splatters on the single beings."
Jiri Petru   
2010-11-10 11:07   
(edited on: 2010-11-10 11:12)
If this is true, it's scandalous.

I don't get the meaning of blood spatters on people and items (as opposed to splatters on the environment) in the first place. What are they good for? You can't see them, and most people don't bother to click through the menus to display splatters, since there's always 100 different items in the list and it's too cluttered to be useful.

The very notion that the game tracks each person's blood separately is weird in the extreme - noone, not the player nor the dwarves, could be expected to distinguish between Urist McDwarf's blood, Goblin Axeman's blood, cat blood, etc.

The idea of splatters themselves is also very "unsimulationistic" - true, units would get blood on themselves after each fight, but everyone could be expected to wash shortly thereafter, usually in a matter of minutes or hours, days in the extreme. Both Adventurer mode and Fortress mode have such larger timescales that to have a separate mechanic for something that should vanish in couple of hours seems strange. As it stands, units wear the splatters for weeks or even months, which is quite strange.

Sure, it IS cool to click on a dwarf and see he's covered in mudstone dust and donkey blood. But it this causes such a massive slowdown, I say get rid of it. I'd rather have tripled or quadrupled FPS.

2010-11-10 12:58   
"As it stands, units wear the splatters for weeks or even months"

Try forever, if you're avoiding the soap/well bug.
2010-12-21 10:59   
Adding back the seasonal cleanup, like that existed in previous versions such as 40D, would resolve the problem entirely.

Dwarves would attempt to wash themselves if at all possible, but even an unwashed dwarf or a pool of blood would eventually clean up itself after enough time has passed.

Just for an experiment, dump an organic liquid onto the ground outside. Say, milk, as a substitute for blood. How long will it last assuming no one cleans it up? It will degrade on its own in a very short time. After a week there would probably be no trace of it at all. Even indoors substances will degrade on their own. It'll dry up and be broken down by bacteria, eventually turning into dust.

The seasonal cleanup would also make above ground settlements viable again, as there is no way to clean up a wall splattered with blood above ground aside from deconstructing and rebuilding the wall. Natural weathering should remove the blood spatter after a few months.
2010-12-30 04:07   
I bet the FPS loss is because of temperature calculations. The spatters interact with each other and with environment, and their tempeture is frequently updated.
Try disabling temperature in init.txt and check if it makes any big difference.
2011-03-05 15:30   
(edited on: 2011-03-05 15:31)
I ran a dfcleanup on a copy of my EXTREMELY messy map (0.31.19) and saw no discernible change in my FPS. Are you sure contaminants are the cause of the FPS drop?

Mind you, I do agree that there should be seasonal cleanup for outdoor areas. I also agree that the cleaning labor should be improved so dwarves actually clean things.

2011-03-05 16:08   
This report hasn't had much activity in the last couple months, the whole spatter situation is in question now, and this isn't that different from 0000296 anyway.