Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - csp256

Pages: [1]
1
I am having some difficulty using this. (I have not used LNP in years; the new version did not suddenly break something for me)

When I run
Code: [Select]
~/Desktop/04023r2-x64$ sudo ./startlnp I get the GUI as expected. When I click on Run Dwarf Fortress (no customization), I get this error on the terminal:

Code: [Select]
/tmp/_MEIGMC98P/xdg-terminal: 305: [: x: unexpected operator
/tmp/_MEIGMC98P/xdg-terminal: 402: [: xxterm: unexpected operator
/tmp/_MEIGMC98P/xdg-terminal: 409: [: x/home/csp256/Desktop/04023r2-x64/df_linux/dfhack: unexpected operator
nohup: redirecting stderr to stdout

For fun, I tried to run DF manually. I got a second error.

Code: [Select]
~/Desktop/04023r2-x64/df_linux$ ./df
./libs/Dwarf_Fortress: error while loading shared libraries: libSDL-1.2.so.0: cannot open shared object file: No such file or directory

Even though I ran
Code: [Select]
apt-get install libsdl1.2* first.

What am I doing wrong? What do I need to do to fix this? I am on Ubuntu 14.04

2
DF Gameplay Questions / Re: Fort without traps?
« on: April 28, 2013, 09:25:42 pm »
Nothing says "castle" like siege weapons: http://dwarffortresswiki.org/index.php/Siege_weapons

3
I've procrastinated enough to force myself to study for tomorrow's finals, so I won't be able to reply properly for a couple days. Until then:

Are minecarts that bad at up/down movement? This post seems to indicate that they can be used effectively across many z levels: http://www.bay12forums.com/smf/index.php?topic=109460.msg3361523#msg3361523 Of course they require power, which either does cruel things to your fps (heh) or use windmills. The wiki makes it sound like windmills just stop producing power some times (does wind level change over time?).

I was unaware of the behavior of dorfs ignoring z for job selection (well, I hear that jobs chose the dwarves, not the other way around, but all the same for this purpose). That certainly complicates makes things more fun.

Yes, you might want to have an overflow stockpile which goes to an atom smasher for industries which overproduce. I was thinking about a semi-automatic way to have a magma forge/smelter combo that only exported masterwork menacing spikes (or what not) for their ridiculous value in weapon traps. It'll take experimentation which I can't do just now.

We'll have to figure out something for the dorfs which are only infrequently used so they don't stay idle too long. Perhaps they can each have their own garden/still (farms are absurdly space efficient).

Also, how would you get supplies to a dwarf who has a mood?

4
@Catsup

You cut out the interesting part of my post in your reply. Reread it. Run the experiment. Watch the horizon expand as the heuristic is increasingly inaccurate. What it means is that your path from A to B must be as direct as possible with as little as possible backtracking. Distance of the path is only a secondary concern.

Of course we don't really know what Toady does for pathfinding. His saying it is A* is likely inaccurate. It is likely a HPA* variant. We can't draw firm conclusions without that knowledge. But we can run experiments.

@UrbanGirrage

Hardcore might not be the word, but I'm definitely not sure what is.

I was planning on "recycling" (atom smashing) all the non-masterwork/legendary gear my dwarves make. Armor-only uniforms seem the more dwarven route.

@Victor6

Current fortress is actually already built around the caves [but this one is focused on trying to build a dwarfputer while I procrastinate studying for finals]. 200 fps with 190 dwarves (50 idle) and ~100 animals. Of course I have a lot of the fun stuff turned off, but I do have an aquifer.

5
@Catsup

Play around with that pathfinding visualizer I linked. http://qiao.github.io/PathFinding.js/visual/ Place start and goal on same y, different x. Place a big wall running up and down halfway between them, with a single hole right between them. Run the simulation (nodes expanded is linear with the path distance).

Add a second wall running parallel to the first, also with a single hole. Run the simulation multiple times with this hole in various places. (moving up one each simulation). You'll notice the further the path goes in between these two walls the more the search horizon (light green squares) extend past the start point in the wrong way. Therefore the worst case search horizon is roughly proportional to path length times the square of the inaccuracy of the heuristic... when on a simple 2d plane. Things get FUN in 3d if you set them up like this, as you get memory usage/running time proportional to the cube of the inaccuracy. This is a strong argument for highly connected fortresses.
 
Try moving the start and/or goal up and down. You'll see this only increases the inefficiency, even though this is a simple and fairly realistic example.

I found an interview with Toady which said that the dorfs use a "streetcar distance" (which I take to mean Manhattan/taxicab metric), but isn't that an inadmissible heuristic for A* with diagonal movement due to overestimation? Perhaps he misspoke and meant Chebyshev metric. Try playing around with them, they are similar enough for the experiment I outlined above. Oh, and the wiki states that diagonal motion takes 1.4 as long as straight. Since dorfs prefer diagonal movement and 1.4 < sqrt(2), we can't rule out that they use the Euclidean metric either.

But he also hints that he is doing some sneaky stuff in the background (validating that paths from A to B exist before checking them) and gives almost no details. Probably not HPA*, but probably similar. (HPA* uses a pre-processed graph abstraction layer that can rapidly find if a path exists, and a path, though perhaps not the best) A bug tracker post by him seems to indicate that locking a door causes this abstraction to be rebuilt, albeit inefficiently.

--

@UrbanGiraffe

Are we sure that items have a significant CPU impact? I though I had read that the current suspect for this was actually stockpiles, and that one of the quantum methods seemingly prevented a significant framerate decrease even with tens of thousands of items.

I have a small number of animals (caged), I embarked on 16x16 for testing purposes, aquifer/weather/temperature turned off, have the entire map revealed but no cavern access (those are uncontrolled variables).

Moreover, temperature would seem to be a constant CPU load. Pathfinding would seem to be roughly proportional to the number of actors moving around. Therefore if you half the amount of work it takes for the dorfs to go from A to B then you might not double framerate, but you could double the amount of dorfs [assuming pathfinding is the majority of a dorf's CPU impact].

--

@Victor6

So would just walling off the caverns with locked doors/hatches prevent that problem? Or molding the caverns into a more dwarven shape?

--

I've been looking at mechanical logic for controlling minecarts, but don't want to have to rely on waterwheels to power them (fluid sims being an unnecessary and uncontrolled variable in my experiment). How would I mod the game so either these things require 0 power, or a single water wheel / windmill provides an incredible amount of power?

6
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 dwarves imprisoned 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.

Pages: [1]