Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

> What’s your favorite bug and what caused it?

> A: It’s probably boring for me to say, but I just can’t beat the drunken cat bug... That was the one where the cats were showing up dead all over the tavern floor, and it turned out they were ingesting spilled alcohol when they cleaned their paws.

I think that bug explains very well just how deeply complex Dwarf Fortress really is. Drinks can be spilled. Some drinks have alcohol. If cats step in something it sticks to their paws. Cats clean their paws, causing them to ingest what's on them. Enough alcohol will kill a cat. Put together: dead drunken cats.



Other amusing DF bugs:

Dwarfs trying to clean their inner organs (dwarf wounded, doctor closes the wound, dirt stay inside)

Undying children in the moat water (for years... just swimming there...)

Killer carps (there was a long time during which carps were really overpowered because constant swimming was buffing them up really good, dwarfs getting close to water sources were eaten by carps)

Catplosions (Tarn loves cats, cats reproduce, too many cats kills DF performance)


Catplosions (Tarn loves cats, cats reproduce, too many cats kills DF performance)

This was a particularly insidious one because the usual strategy of culling excess livestock doesn't work out when applied to dwarfs' pets (pets can't be designated for slaughter, and other means of making pets die will make their owners upset). With most animals, you can avoid the pet adoption issue by just not marking them as available for adoption, so you wouldn't have to worry about a dogsplosion, sheepsplosion, etc. Cats do not become pets through that system. Instead, a cat adopts a dwarf.


Note that the obvious strategy of not having any cats at all doesn't work well because cats are the most/only easily-available HUNTS_VERMIN creature, so you need some around to protect your food stockpiles.

A somewhat effective solution is to use male cats for stockpile protection, and keep female cats caged (which IIRC stops both adoption and breeding) and only let one out at time (cage any resulting (female) kittens immediately). There's not (yet) any simulation of evolutionary pressure to adopt a owner quickly, so you can just prefer kittens that do so for the next breeder when the current one dies of old age.

Gelding (neutering) the male cats also works, but is less sustainable if you don't have a reliable source of replacement cats from migrants or trade caravans for when the current ones die of old age. Spaying is not supported AFAIK.

You can also just remove the ADOPTS_OWNER token via raws editing.


I. M.> John, the kind of control you're attempting simply is… it's not possible. If there is one thing the history of evolution has taught us it's that life will not be contained. Life breaks free, it expands to new territories and crashes through barriers, painfully, maybe even dangerously, but, uh… well, there it is.

H. W.> You're implying that a group composed entirely of female animals will… breed?

I. M.> No. I'm, I'm simply saying that life, uh… finds a way.


Verily, the dwarf would pick up a cat to take it to the slaughterhouse, the cat would adopt the nearest dwarf (the one carrying it) and then the dwarf would slaughter the cat.

And get sad because his pet died. And then eventually start tantruming and a tantrum spiral would begin.


> And then eventually start tantruming

It's so crazy when you try to make dwarves feel great all the time and then the simulation comes up with some completely insane causal chain that messes up everything.

I once tried to isolate a miasma problem with a wall. Which works fine, unless the dwarf tasked with building the wall decides he needs a break, sleeps on the floor and then gets grumpy because he just slept on a hard surface in a smelly area.


This is why I always spent an inordinate amount of effort on my dining hall - get that thing fancy enough and the dwarves could endure quite a bit before they flipped.


Since no one else has mentioned it, I feel compelled to mention thermonuclear catsplosions.

My understanding of the legend is that a player began experiencing a catsplosion, and wanted to find a way to get rid of the cats. So he started tinkering with the game a bit, and eventually tried setting the blood temperature to a very high number. This killed the cats, but also had the unfortunate side effect of setting them on fire. And the cats were multiplying faster than they were dying, so there was a massive, expanding fireball of burning cats.

If this legend is wrong, I'd love to hear another version.

http://dwarffortresswiki.org/index.php/DF2014:Catsplosion


>Killer carps

TIL this was a bug and how it was a bug! Wow! Back when I played DF it really seemed like it was simply accepted folklore that the carps in DF were really strong and the common advice was don't build your base too close to rivers. Having not played in a long while, I had always thought this was intended.


I had a roommate in college who loved to play World of Warcraft.

At some point, we got into a discussion over art style and realism. He made an observation that still sticks with me.

"The style sets expectations. When something breaks a real world law of nature or logic because of a bug, it doesn't feel as jarring, because the style is already cartoon-y."

It made me think about just how malleable expectations are with regards to game systems. Train a player to expect realism, and breaches become infuriating. Train a player to expect the unexpected, and the unexpected becomes intriguing and fun.

(More modern tip of the hat to Fortnite)


I think it’s more about internal consistency. If a world hasn’t said something about it (or hasn’t shown a derivation of it — e.g. gravity presumably exists, because all objects shown have been affected by it), then you’re free to do whatever (e.g. introduce magic as a mechanism). But once done, it must continue to hold true — else the rules are bullshit, and we expect nothing to behave in a manner that isn’t arbitrary.

Even fortnite has a kind of logic to it, haphazard as they may be (though it’s also so loosely defined, that I find it completely uninteresting — it’s a dumpster fire of cosmetic items with no real theme or nuance; this is because its more a modern shopping mall [ an arbitrary context for social groups ] than a game system).

It’s why simpsons can revert (nearly) all damages every episode (that’s simply the rule of the world), but if it tried to violate that rule and persisted those changes in any meaningful way, it would feel like complete nonsense. (They do however do it for self-referential jokes and such, but these aren’t persistence so much as temporary anomalies) At best, they’re allowed to forget something exists altogether.


> Catplosions

Sounds like the answer is more taverns.


> Dwarfs trying to clean their inner organs (dwarf wounded, doctor closes the wound, dirt stay inside)

I'm curious if the fix was to just remove the dirt from the simulation or if Tarn actually went ahead and simulated infections (or more realistically, used an existing infection mechanic).


DF does simulate infections. It often kills dwarves months after being wounded, if they dont get their wounds properly cleaned (with soap).


I live in a city with a lot of stray cats and lemme tell you, "catsplosion" is pretty realistic. We narrowly averted one by getting the ones that live under our house fixed.


Reminds me a little bit of something strange I saw in Rimworld - all of my dogs were developing liver cirrhosis!

It turns out that my dogs weren't alcoholics - it just happened to be that beer was the only food source they had zoned access to, so they were drinking it out of hungry desperation, and while it gave them enough calories to live on, it also gave them cirrhosis.


One time a raider broke into my animal pen and started attacking my animals, but got shot down by a turret before they could cause any lasting damage. I didn't pay it any mind, but that raider had brought in a good chunk of Yayo (the game's cocaine analogue) that had scattered around in the pen when he died. By morning I had a herd of inebriated megasloths hunting down my colonists en-masse.


Yeah, I've definitely accidentally created packs of booze hounds that way. Definitely a head-scratcher before you get what's going on.


In reality, the beer might have killed the dogs, since the hops in the beer is toxic to dogs.


Hops outside of beer is toxic to dogs, it causes malignant hyperthermia. It's a problem for brewers who leave their hops where the dog can get at them (usually spent hops in the trash or a compost heap).

Beer brewed from hops doesn't cause hyperthermia, it's harmful to dogs because they experience the same effects of ethanol poisoning that humans do (e.g. cirrhosis), at much smaller doses.


The beginning of this video https://youtu.be/VAhHkJQ3KgY has Tarn Adams speaking about this bug.


This is my favourite bug story I have ever heard. And told so well.


I love that video. I tend to link it when I want to explain Dwarf Fortress to someone.


10 years ago, there was this article about another unexpected behaviour:

https://www.nytimes.com/2011/07/24/magazine/the-brilliance-o...


Noita also had a fun one during early development: deer drowning in their own urine.

And now that I dug up the Reddit AmA thread (https://old.reddit.com/r/Games/comments/d7cqjz/we_are_nolla_...), there's a comment there about the drunken dead cats ...


Noita simulations are better told as animated gifs.


Unfortunately it remains unexplained (by the article) why this is considered a bug. It would be unethical to test, but this seems like perfectly cromulent behavior one might actually see in real life.


Liquid items are funny in the game.

When you look at an item listing and you see something like “Mead”, that is truly all the item is —- it isn’t a cup of mead, it’s just a vague amount of the liquid mead itself, as if your hand was the only thing keeping it from hitting the ground.

But there are containers that can hold your liquid. You have mugs and goblets that hold one quantity of “Mead”, giving the impression that one count of mead is like a generic serving size. You also have barrels and pots that hold stacks of “Mead”.

Creatures are kind of like walking containers and have their own detailed inventories. Among the things you’d expect to find like armor, weapons, and books, you might also find a “coating of tears” on a crying dwarf, or perhaps a “spattering of blood” on a murderous elf.

They’re not just static inventories for the fun of a story, creatures do interact with them and use them. Dwarves covered in a vomit item will (hopefully) put any available soap in their inventory and use it to clean themselves in water, for example.

Cats are simple and just clean themselves with no water or soap needed. The catch with them is that they ingest whatever they have cleaned off of them.

So, putting all this together: The problem was that cats pick up a whole “serving size” of alcohol and proceed to clean themselves, ingesting the entire serving. The bug surrounds the vagueness of liquid sizes.

And it was fixed accordingly! Cats are still vulnerable to the effects of self-cleaned alcohol, but the strength is now proportional.

https://www.bay12games.com/dwarves/mantisbt/view.php?id=9195...


My favorite feature in Dwarf Fortress is that all eyelids automatically clean their associated eyeball, just so that players don’t post about how their dwarves have vomit on their eyeballs.


Ahh, so if a dwarf would have a missing eyelid because of combat or some mining accident, then they could have vomit on their eyeballs.


Yes! And the next time they cleaned themselves, they would use soap on that eyeball, if it was available.


IIRC the actual bug was that cats licking their paws made them consume an entire tankard's worth of beer with each lick, which made them drunk (and dead) with just a few licks.


Yeah this is what I recall being the case as well.


My experiences with cats (at least in my own life) is that cats prefer not walk into an area with a sticky floor if they can avoid it.

Clearly there's a bug here where the cat will keep wandering around on the sticky floor, and then keep consuming the alcohol off it's paws.

The obvious fix is to add a feature wherein different creatures have preferences about where they go next, and then use that to have the cats avoid the bar floor if they can.

As a bonus you can include stuff like "Cats don't like hanging out in crowded areas" so that they'll also stay out of the main hall when the army is gathering to muster forth, etc.

(/s, but only slightly :) )


No need for the /s. This is precisely the level of simulation Toady is hoping for, and there are many equivalent examples already.


Good suggestion. It would occasionally be nice if the _dwarves_ would avoid stepping in things and tracking it all over the place. The only reason that the cats were in the tavern in the first place is that pets follow their owner* around.


The * refers to the fact that cats are the owners, and dwarves are their pets. A truly accurate understanding of how cats work.


And this is how you get 700k lines of code.


The bug was a numerical error that would cause cats to drink something like the equivalent of a pint of beer for every lick, and therefore die prematurely. He talks about it in this video:

https://www.youtube.com/watch?v=VAhHkJQ3KgY


I agree these types of features really embiggen the game


They're perfectly cromulent features.


careful, its unpossible not to get downvoted with these kinds of jokes (err, low effort comments).


Cats in bars don’t die of alcohol poisoning regardless of the amount of beer spilled on the floor.


The actual bug here was a mistake in handling of liquid volume. The cats were ingesting a tankard’s with with each lick, and they’re smaller than dwarves, so that killed them.


I read about a cat who used to visit a pub and learned to lick beer from under taps. The cat got banned from the pub for its own good but I don't believe it was anywhere close to poisoning.


Do you have a source for this?


No, I read this a long time ago in a paper press article and I cannot dig up anything electronic.


One of my favorite Twitter users.

https://twitter.com/DwarfFortBugs

It's just funny Dwarf Fortress bugs.


A similar Twitter account publishing funny bug fix notes from other games:

https://twitter.com/TheStrangeLog/


LOL - 5386: Imprisoned Vampire Elected Mayor


> Imprisoned Vampire Elected Mayor

That's not even (necessarily) a bug: whether convicts can win/hold elected positions is a aspect of applicable law (albeit a weird one), vampires (IIRC) have high social stats and skills and so are well-postioned to win elections in general, and dwarves (and for that matter humans) don't necessarily update their opinion of someone just because they were convicted of a crime (especially if they don't hear about the conviction, which (knowledge transmission) I recall was added to the game modeling at some point). So this is like a headline "Bob Smith Convicted of Murder; Wins Mayoral Election Anyway", which seems weird-but-possible in real life.


Yeah exactly. Also top tip is if you actually catch a vampire in DF a known thing is to imprison them in a room with all your switch levers in and a desk and chair so you can make them your accountant. They don't kill anyone that way and can do useful work.


Space Station 13 is another game with a lot of serendipitous emergent gameplay but with a slightly less steep (but still insane) learning curve and multiplayer antagonist fun.


I don't know much about Dwarf Fortress, but why is that a bug? It sounds like it follows reasonably well from the behavior in the game.


It sounds like the actual bug was about quantity. Walking on the tavern floor resulted in 1 entire serving of beer on the paws, and cleaning resulted in ingesting that serving.


Not sure what's in the code, but I think each cat (which is some sort of entity by itself) is composed by body parts, which at the lowest level owns a bunch of attributes/components. Would that make sense?


The bug in this case was the minimum alcohol value a cat could like from its paws was above the cats LD100, so if they licked their feet when soaked in beer they would die.


Ah, that's interesting, so it's actually a bug. But yeah it shows the sophisticated system underneath.


>Enough alcohol will kill a cat

That's what intrigues me, Not played the game but this must because there were a list of things which could get the cat killed right? Then how come this is an unexpected bug?


The bug was the volume ingested when the cat cleaned it's self, was incorrectly calculated to be a whole standard drink.


Oh wow, that makes sense. Thanks.


I wish there was a description of how this works technically


ericschn below has a link to a video of Tarn explaining it. It's wonderful.


Sounds like it’s not a bug but working as intended


The bug was the quantity. Cats that walk around in a place with spilled beer will indeed lick themselves clean, but the amount of beer ingested is tiny.

Imagine getting drunk by licking beer residue off your hands.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: