1
DF Gameplay Questions / Questions about an idea for a CPU-friendly fortress
« on: April 27, 2013, 06:03:38 pm »
I heard that FPS-death puts a soft-cap on the number of dwarves you can have, so I thought it would be fun to design a CPU-friendly fortress without sacrificing dwarfpower (industrial efficiency). Obviously these are somewhat conflicting objectives. So far I've set invaders off and am solely exploring fortress-building, for now [I know, I know: that's not very dwarven of me].
I'm very new to DF and would like some help from more experienced players in refining this idea.
My idea relies primarily on trying to optimize pathfinding. I intend to try to do this by keeping the search horizon small (average number of nodes expanded/evaluated per search). I intend to do this by isolating functional elements of the fortress's industries. For example, imagine a fortress which was a series of disconnected cubes (or any connection between them had a very high travel cost). Each cube specialized in some aspect(s) of the economy. They would take some inputs from one or more cubes (nodes), and give outputs to one or more nodes. Automated minecarts would be used to do this, in hopes that the track simplifies their pathfinding (I'm still unsure of exactly how minecarts work).
Each cube would have self contained living quarters for the dwarvesimprisoned living there, as well as other distractions they need (should they fall idle from bottlenecks above them in the supply-chain). Each one of these cubes would be highly self-connected (lots of stairs), and as compact as possible without causing the dwarves within to walk over each other [exploiting some of the standard tricks]. This is because backtracking causes the search horizon to grow by a significant amount. Use the default settings of this (which I believe reflects what DF uses) to see what I mean: http://qiao.github.io/PathFinding.js/visual/
It would probably be best if there was a path into each cube, but with traffic restrictions set (solely for migrants/justice/vampires/unforeseen emergencies/etc). This might cause migrants to search the entire map when first going to their cube, but that cost is heavily amortized. I understand that setting burrows helps dwarves pick jobs only within the burrow. Obviously each cube would be its own burrow.
How would I, say, evenly distribute food? Lets say I grew a bunch of plump helmets in one cube, and I had 8 cubes I wanted to split it between. Can I simply load a minecart full of plump helmets, and direct the cart down one of 8 tracks? (On a related note, how hard would building an XOR gate, or a 3bit counter be?) Or would using multiple carts be best? How do I prevent accidentally letting a cube starve?
I hear that having many small stockpiles can cause CPU problems. What is at the root of this, is there a way to fix it, and is there any science that can be done to more clearly identify the problems.
PS: being able to create a traffic designation group, then assign individual dwarves to that group, could help quite a lot in optimizing FPS without taking the plunge into parallelism.
PPS: The fractal bedroom designs I've seen have a tendency to be extremely pathfinding performance-unfriendly. http://dwarffortresswiki.org/index.php/File:Hactar1_Mandelbrot_Tree.png This design requires the expansion of almost every node on the floor in order to reach ANY room! It would be challenging to create a less CPU-efficient design.
I'm very new to DF and would like some help from more experienced players in refining this idea.
My idea relies primarily on trying to optimize pathfinding. I intend to try to do this by keeping the search horizon small (average number of nodes expanded/evaluated per search). I intend to do this by isolating functional elements of the fortress's industries. For example, imagine a fortress which was a series of disconnected cubes (or any connection between them had a very high travel cost). Each cube specialized in some aspect(s) of the economy. They would take some inputs from one or more cubes (nodes), and give outputs to one or more nodes. Automated minecarts would be used to do this, in hopes that the track simplifies their pathfinding (I'm still unsure of exactly how minecarts work).
Each cube would have self contained living quarters for the dwarves
It would probably be best if there was a path into each cube, but with traffic restrictions set (solely for migrants/justice/vampires/unforeseen emergencies/etc). This might cause migrants to search the entire map when first going to their cube, but that cost is heavily amortized. I understand that setting burrows helps dwarves pick jobs only within the burrow. Obviously each cube would be its own burrow.
How would I, say, evenly distribute food? Lets say I grew a bunch of plump helmets in one cube, and I had 8 cubes I wanted to split it between. Can I simply load a minecart full of plump helmets, and direct the cart down one of 8 tracks? (On a related note, how hard would building an XOR gate, or a 3bit counter be?) Or would using multiple carts be best? How do I prevent accidentally letting a cube starve?
I hear that having many small stockpiles can cause CPU problems. What is at the root of this, is there a way to fix it, and is there any science that can be done to more clearly identify the problems.
PS: being able to create a traffic designation group, then assign individual dwarves to that group, could help quite a lot in optimizing FPS without taking the plunge into parallelism.
PPS: The fractal bedroom designs I've seen have a tendency to be extremely pathfinding performance-unfriendly. http://dwarffortresswiki.org/index.php/File:Hactar1_Mandelbrot_Tree.png This design requires the expansion of almost every node on the floor in order to reach ANY room! It would be challenging to create a less CPU-efficient design.