A while ago I talked about emergent gameplay and how its superior to older, more scripted games. Of course, even newer AI can have some pretty amusing screwups. In fact, the “smarter” the AI, the funnier it is when the whole thing flies apart. Over the weekend I was playing Thief 3, and ran into a situation that made me think about how truly tough it is to make even passable AI.
The head of your average citizen has terrible acoustics, but the gold in their pockets makes a fun jingling sound when you pick it up.
In the game, you can sneak up on anyone (servants, nobility, or guards) and whack them on the back of the head to knock them out. (You can also stab someone in the back, but that’s noisy and bloody, and why kill them when you can just knock them out?) Once they are knocked out, you usually need to hide them. If you leave them laying in the middle of the room or hallway, someone else is likely to come along and discover your work. When this happens, they always assume the victim is dead. Then they start with the running and the screaming and everyone searching for you.
This can be amusing. I was in a large manor, working my way through a sleeping area for servants. One of them was already asleep in the bunk beds, but a few others were still wandering around. I zonked one of them and placed the sleeping victim into one of the beds. I thought I was being clever. Another servant came in, saw their compatriot in the bed and exclaimed, “Dead!? But who could have killed him? I’ll go tell the guards!” Then he ran off.
Blast it all.
When you knock somebody out, you need to stow them someplace dark and out-of-the-way. This spot is definitely sub-optimal.
I should have known better. The AI was just looking for knocked-out people. It didn’t care where the body was. I was so into the game I stopped the metagame thinking about AI and started thinking about what I’d do in the given situation. In that situation, placing a zonked person in a bed made a lot more sense than dumping them in a corner. However, to the AI it was just a poorly hidden body. Sigh.
But fixing this problem would be tricky, and would involve a lot of extra work. The level designers would have to designate certain areas or objects as “beds”, and the programmers would need to make it so that bodies laying on beds rouse less suspicion than bodies found elsewhere. Then they would need to add some new dialog and behavior: If an NPC sees someone “sleeping” on a bed (most likely not in their own bed) while fully clothed and while they should be working, he shouldn’t ignore them, but he also shouldn’t run away screaming about murders and dead bodies. You need some new behavior along the lines of “try to wake someone up and then discover they have been knocked out”.
The city that never sleeps. At least, not until I run around and give everone their good-night donk on the head.
But even with that extra effort, you can still have some amusing failure modes. Placing a servant girl on a bed in the priest’s quarters or the barracks should raise some eyebrows. Likewise, stacking two or more people in the same bed should tip off guards and servants that something is amiss. It wouldn’t make sense for them to just assume they all decided to take a nap together.
It would be annoying to code in such a way that it works right. The programmer would probably need to take the victim’s position into account as well. If I just toss somebody on the bed so that their upper body hangs over the side and their head is resting on the floor, it’s going to look pretty stupid if someone comes along and assumes they’re asleep.
Also, it seems like the length of time since the NPC’s last saw each other should be taken into account as well. If you greet your fellow housekeeper, walk out of the room, and come back a few seconds later to find them motionless in someone else’s bed, you are not going to think they are sleeping.
I’m the sneaking, robbing, creeping, crawling, thump-you-on-the-head so you can get a good rest medicine.
The game can be funny if you think about it too much. There is one house in particular where I stop by each night and give the occupant his good-night blow to the head. I’ve already robbed him blind, so he doesn’t have anything left worth taking. I just like to stop by after dark, sneak in, creep up behind him, and blast him on the back of the head. What must life be like for this guy, waking up each morning on his floor, wondering what happened and why his head hurts? Does he blame booze? Narcolepsy? His ex-wife?
Could Have Been Great
Here are four games that could have been much better with just a little more work.
Good Robot Dev Blog
An ongoing series where I work on making a 2D action game from scratch.
Push the Button!
Scenes from Half-Life 2:Episode 2, showing Gordon Freeman being a jerk.
A Star is Born
Remember the superhero MMO from 2009? Neither does anyone else. It was dumb. So dumb I was compelled to write this.
What Does a Robot Want?
No, self-aware robots aren't going to turn on us, Skynet-style. Not unless we designed them to.