While playing Thief 3 some more I had a rather amusing AI mishap: A couple of NPCs went absoloutely sideways and started killing everyone.
All that glitters is not gold. Some of it is money and gems.
The setup was this: I’m in some guy’s jewelery shop, minding my own business and robbing the place. Then the owner gets home, and a couple of big goons are with him. From the sounds of it, he was involved with some underhanded deal with these guys and he tried to cheat them. He was supposed to hang on to some gems for them, but he was “skimming” the gems by (I think) cutting them. I don’t know. The goons are quite upset. The jeweler is unarmed and in a bad way. He’s trying to talk his way out of things and he’s not doing very well.
The conversation seems to hint that I might want to intervene. One of the goons says, “Sorry, but now we gotta kill ya. So unless you gots any friends hidin’ around here, this is it for you.” Odd thing to say. I can only assume this is the game’s way of suggesting I might want to help this guy, but I’m not going for it. If you make a deal with dangerous criminals, cheat them, and then get caught, then you deserve whatever fate you get. From my hiding place in the shadows I could drop one of the goons with an arrow, but then the other one would come after me. That is just too much trouble to save the life of a moron.
As the goons kill the jewler, he starts screaming for help. I decide to clear out. As I’m backing out of the room I bump something off a shelf and make some noise. The goons hear it and start hunting for me. An open doorway leading outside is on the opposite side of the room. I can’t make it there without the goons seeing me. However, I do have a noisemaker arrow, which is sort of a string of firecrackers on the end of an arrow. It draws the attention of people nearby. The goons are about to discover my hiding spot, so I fire the noisemaker out of the room. They hear the loud noise and go charging out into the streets…
…where they proceed to go completely nuts. They charge into the intersection outside and start slaughtering peasants in the street. The game auto-generates street traffic, so as they kill someone a new citizen is created nearby. (This happens off-screen, I never see them appear) This provides a steady stream of victims for the two killers.
My character is great at stealth kills, but nearly helpless in a stand-up fight. One town guard is usually more than I can handle. But these two guys are big, strong, and carry big swords. Whenever a member of the city watch shows up to help he just ends up on the growing pile of bodies. These guys are unstoppable.
I didn’t think to get a picture while this was going on, so the screenshot doesn’t really give the full effect. Whenever I look away the game does a bit of cleanup and removes some of the older bodies, so the pile is never bigger than five or six people. However, the real death toll must have been a few dozen. These guys were at it for a long time.
What a mess.
I’ve been thinking about this, and I’m still not entirely sure what made these guys go on the killing spree. Obviously it could have been a bug or a fluke or sloppy scripting, but I’m more inclined to think that the peasants that brought this on themselves, as the result of a chain of various behaviors. I obviously don’t have the source code, but I think that peasants become fearful when they see a character who has recently killed someone. (This is usually the player.) When they become scared they say things like, “I’m going to go find a town guard!” Then they run off to tell a guard about the actor that scared them. The guard will come and attempt to kill that actor.
Perhaps the noisemaker brought some peasants and the goons together, the peasants got spooked and decided to fetch the guards, which obliged the goons to kill them. Once this got started it would have fed on itself, since new peasants would get spooked by the pile of corpses in the street and forced the goons to kill them as well. If this is what happened then it’s an amusing case of unwanted emergent behavior.
Starcraft 2: Rush Analysis
I write a program to simulate different strategies in Starcraft 2, to see how they compare.
So what happens when a SOFTWARE engineer tries to review hardware? This. This happens.
The Plot-Driven Door
You know how videogames sometimes do that thing where it's preposterously hard to go through a simple door? This one is really bad.
Diablo III Retrospective
We were so upset by the server problems and real money auction that we overlooked just how terrible everything else is.
Good Robot Dev Blog
An ongoing series where I work on making a 2D action game from scratch.