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 - Kumquat

Pages: [1] 2 3 ... 9
1
DF Dwarf Mode Discussion / Re: Why did the cyclops die?
« on: March 07, 2018, 12:20:08 pm »

It wanted to get to the other side.

2
DF General Discussion / Re: Dwarf Fortress goes mainstream?
« on: January 21, 2018, 07:14:45 pm »

There's always the classic joke about baby powder though...

3
DF General Discussion / Re: Generating worlds in parallel
« on: August 15, 2017, 05:47:56 pm »

DF saves some stuff in data/save/current when running, especially when generating world (corruption of this data was what caused the giant candy spires and other glitches). So you should never ever run the same copy of DF several times, they'll just keep stepping on each others' toes. This is why it crashes when trying to load the save games and all worlds have the same name.

Secondly, I doubt you get much advantage from generating multiple worlds in parallel - DF eats memory like a starved goat and the deciding factor for actual world gen is quite likely memory speed, not the CPU. OS performance still does show 100% usage, but that's really just stating that CPU is doing something else than OS idle loop; even if it is just waiting for memory to respond. I'd recommend checking "wall clock time" rather than looking at CPU load.

And, no, DF does not use any fancy hardware RNG. For DF the RNG must be predictable and repeatable, which is the opposite of what crypto RNGs do.

4
DF General Discussion / Re: DF and Quad-Channel Ram
« on: December 15, 2016, 04:32:14 pm »
My concern was that the amount of memory DF can check before it needs to do another calculation to be able to check memory might not have been large enough to benefit from increased memory bandwidth. If we think it's wrangling large amounts of memory in single chunks that's good.

Uhh... I don't keep up with Toady's programming style, but last I read he didn't even know what vectorized math (SIMD) was and just assumed the compiler would automagically optimize his code to use it. SSE is far too impractical when you're extremely OOP with massive pointer chains to follow and data spread out all over the place which makes me doubt it being used at all (yes you can use it, but it'd result in negative performance gain... err, again... yes and no... but really it works much better with linearized memory. Just load, operate, and write.).

Having more channels would really matter more on the fetching mechanisms of the CPU than DF's code (given toady is not explicitly taking advantage of this stuff) which again, hit and miss.

Well ... compilers do use SSE automatically ... they just use the single-float instructions there, not SIMD. Some compilers might do a little bit of vectorization but that is pretty rare and, indeed, the gains from that in general case are pretty marginal. In the context of DF, they'd probably have some application in weather and temperature calculations but little else.

I'm sure a person with some tools and more enthusiasm than I have could do some in-depth profiling about it but I seem to recall that with DF processor speed matters much less than your memory latency and cache size. With quad-channel you can theoretically have four cache misses going the same time but since DF is single-threaded that is fairly unlikely to give any benefit.

Also, in my experience, the only way to optimize massive pointer chains is to get rid of them.

5
DF Dwarf Mode Discussion / Re: what does "zero rent" do?
« on: November 23, 2016, 06:55:35 pm »
I would expect that everything that shows up on any of the units lists is on creature vector. Possibly even every creature who has ever graced the site with their presence, detected or not.

Why is it called creature vector? Because it is a C++ std::vector that has all the creatures in it. Every kitten, live or slaughtered. Every reanimated yak skin. The dead longnose gars at the bottom of the waterfall where they died on the first day of embark. The creature vector remembers them all.

It is a linear data structure and as such it is processed linearly, every creature updated even if the update consists basically of 'Oh, I'm dead. Nothing to do.' It adds up.

Based on a discussion about dfhacking bugged traders, apparently creature IDs that can be possibly teleported onto your map can go up to thousands. That vaguely suggests that they exist on the creature vector too, even if their update consists of 'I'm off the map, nothing to do.' Every known relative of every dwarf and all their gods and such. Of course this is just a wild guess.

6
DF Dwarf Mode Discussion / Re: Issue with codices and stocks screen
« on: October 29, 2016, 08:42:54 am »
Objects that are reserved for a task don't show up on stocks screen. That is the list of available goods, after all, not all goods. Although DF's definition of available can be somewhat creative. Objects inside containers that are reserved for a task don't show up either.

So if the books were first tasked for hauling to a stockpile and then for storing in a bookshelf and possibly the bookshelf became tasked for a store loop and then dworfs started reading the book with gusto and other such condiments. In such situation books would not show up in stocks at all, other than for very short times between being read.

7
I suspect that DF also suffers from a side effect that comes with Von Neumann architecture computers (which is practically all general computers since 70s): code is data. Generally only L0 cache is split into dedicated code and data parts, everything from then on is shared. And being shared it is also contested.

I assume that DF is programmed in a traditional style, with large functions working on large data structures; updating a dwarf splits into updating their brain and their kidneys and their liver and their temperature and their soul and so on. Also each of these work on a small part of a large "dwarf" data structure. This is generally called the "array of structures" approach. This leads into the cache either throwing out bits of code or bits of data to bring in new stuff.

In the opposite approach, "structure of arrays", you have arrays that contain a part of a dwarf (or any other creature), which are then updated separately in one fell swoop each. Since the CPU is only running a short piece of code over large amount of data, the code will remain in cache, and there data can be processed in a streaming fashion rather than being cherrypicked with random accesses.

In a concrete example, the first approach would be a bottling machine that fills bottles, caps them, glues on labels and prints last-use-dates; the latter approach would be a production line where first machine bottles, second machine puts on caps, third machine glues on labels, etc. And you won't see the first approach in any larger scale production facility.

8
DF Dwarf Mode Discussion / Re: I just can't get excited for DF anymore.
« on: October 04, 2016, 03:50:08 pm »
Easiest way to add to the intensity and longevity of the game would be to reduce the migrant waves by a factor of five or even ten. If you get migrants by one or two instead of hordes of ten or twenty at a time then you'll appreciate them a lot more, and you obviously don't get lagged from running a fort of 200 dorfs by year 3.

9
DF General Discussion / Re: I swear . . .
« on: October 03, 2016, 04:28:51 pm »
I'm not upset by this.

10
I once almost lost half of my fort to a few crundles. This was in the brief period while jumping and climbing were only "extremely discouraged," not "only in special circumstances."

The crundles were stuck on a cavern wall, causing extreme pathfinding lag in the process. I decide to "help" them with a little bit of mining and perhaps some crossbow bolts or just plain militia action (where 'militia' is pronounced 'meleetia'.)

Miner digs a tunnel that's just a couple tiles away from crundles. Immediately he jumps into the chasm to try and fistfight the crundles on the wall. And by chasm here I mean a few z drop onto the cavern floor. Not deadly but quite injurely.

I order a floor to be built there to eliminate the chasm. Quite a few dworfs go there, one by one, carrying blocks and then jump into the chasm trying to fistfight the crundles.

Bridge? Same thing.

Okay, let's put down a door, or a wall there, to block the line of sight so that dorfs might do something than jump into the chasm. Nope, they all jump down.

Now the injured dorfs in the pit also catch the attention of medical staff who try to reach the site. Vengeance first, they also run at the cave beasts and jump into the chasm.

Certainly marksdworfs can handle this kind of menace? They have been practicing shooting down keas and other flying pests with some success before. Oh no, crundles must be punched in the face, not shot with a crossbow! Down they go into the heap.

Okay, let's dig another, safe, passage to the cavern floor. Of course miner decides to start it from the cavern end and, well, you certainly have spotted the pattern.

Eventually, though, some crundles get tired of just hanging around on a wall and also fall down and get mowed down by some of the less injured survivors. And some of those crossbowdorfs who have lost their ability to climb but apparently not to shoot finally get into a more productive line of action. It takes some more time but finally the crundle charade is resolved in dwarf fashion, with a massacre of innocent animals.

Of course, in post-scriptum, I also need to dig more stairs about in the caverns to rescue dorfs who somehow managed to climb or teleport on top of the vertical cliff, another 4 or 5 z upwards. But for a while I had twenty or thirty dorfs pretty much stranded in the caverns with no practical way back into the fort, many of them injured, all because they were barking at the wrong crundle.

11
Sounds like a bug that was fixed in a more recent versions where dwarfs who had some minor grudge against another would join the fight on the side of the monster. And by minor grudge we're speaking things like "your distant cousin was a bandit who once killed a hamster in a town my grandma once visited."

12
DF General Discussion / Re: Will 64 bit DF matter?
« on: July 06, 2016, 05:11:05 am »
Most consumer grade PCs are limited to a maximum of 32G physical memory. Servers can go up to 128G.

Spoiler (click to show/hide)
Technical details aside, generally the side effect of converting to 64bit is 2%-5% speedup, very much dependent on the program however.

Also the game won't be running in "32 bit emulation" mode in your 64bit OS, which helps a tiny bit as well.

13
DF Dwarf Mode Discussion / Re: Trivial findings
« on: June 07, 2016, 04:25:19 pm »

You can hit enter on the left column of "bring to depot" menu to select the whole right column.

Very trivial, but it was a new finding to me...

14
DF Dwarf Mode Discussion / Re: Automating Soap-making
« on: May 25, 2016, 12:57:02 pm »

The automatic conditions on reagents/materials and products (r and p keys by default) will fill in those for you almost always correctly and get you the correct ash too (burnt wood vs logs of ash tree).

15
DF General Discussion / Re: The truth about Dwarven milk
« on: May 17, 2016, 04:53:52 pm »
Imagine how strangely disgusting watching a human milk a cow would look to the first generation of dwarves to ever leave the caverns, and vice versa.

We have discovered the true cause of this "cave adaptation." It is really just this particular strangely disgusting memory in dwarf collective subconscious.

Pages: [1] 2 3 ... 9