We talked a bit about guards and solving crime in this episode, which reminds me of one of my ancient Oblivion posts. The way the game handles crime is a perfect illustration of how the game makes itself seem dumber by making the AI “smarter”. (Or at least, more sophisticated.)
Lots of people have complained about the flaws in the system where stolen items can’t be sold to any reputable shopkeeper. After all, if I steal an apple and go to the next town, certainly I shouldn’t need to fence the apple! This is an understandable complaint, although truly solving this problem is more difficult than it seems at first glance. It requires a lot of AI to figure out if an NPC should be able to spot an item as stolen.
So in an ideal world, what would determine if someone could spot a hot item?
- The value of the item. It should be easy to sell a stolen wooden plate, or some blank parchment. Some items are of such little value that they shouldn’t be missed as long as you lifted it unseen. On the other hand, a golden nicknack should be very hard to sell.
- How distinctive it is. You can’t tell a stolen apple from an apple purchased at the store or plucked from a tree, and the NPC’s shouldn’t be able to tell the difference either. On the other hand, a famous ring should be almost impossible to sell.
- The relationship / proximity of the buyer to the original owner. If I steal Bob’s longsword, I shouldn’t be surprised when I can’t sell it to Bob. Perhaps the rest of his family would have heard of the theft and be able to spot his sword as well, so I can’t sell to them either. If Bob is an important man, then perhaps I need to go to another town to find a buyer. If Bob is famous, then perhaps I need to go several towns away.
- The time elapsed since the theft. Right after I take something valuable I would expect lots of people to be on the lookout for the missing item, depending on the fame and influence of the owner. However, as time passes I would expect most of them to forget about it, with the sphere of people shrinking until only the original owner remembers or cares about it.
- How much the owner valued the item and was aware of it. If I take Bob’s longsword from over his fireplace, it should be hard to sell. If he had a whole box of them in his basement, much less so.
- If the theft was noticed. As above, if an item is sitting unused and forgotten in a basement somewhere, then it should be easier to find a buyer because the original owner probably won’t miss it right away.
- How trustworthy the player is. If a silver fork goes missing and the next day a famous hero and champion of the people shows up trying to pawn one, the buyer is not going to be eager to accuse him of petty theft. On the other hand, if my character is some shiftless unknown who just rolled into town last night (right before the item went missing) and appears in the shop the next morning with the same item for sale, it should at least raise some eyebrows.
- How much theft is going on. If there has been a crime wave recently and lots of stuff is missing, then people should be much more suspect of what I have to sell.
I would not want to try to write the AI code for all of this. Each time you add another item on this list to the AI (no small task, some of it) you will just move the stupid from one part of the game to another. You would eventually find yourself trying to write AI capable of gathering clues and evidence and solving crimes before the system was free of idiocy.
In some ways making NPC’s “smarter” makes them seem dumber. I don’t expect much out of a lifeless NPC who stands behind a counter 24/7/365, who has no life, no family, nothing to do and nothing really to say. He’s just an animated vending machine to the player. However, once you give him a little voice acting, a bit of personality, make some of the other people in town his relatives, give him a daily routine of closing up shop and going home, then the player starts thinking of him as a character or even a person. They might say, “I love Henry the shopkeeper. He’s so crabby and pretends to hate his job so much, but the guys at the pub say he’s rich and he could really quit whenever he wanted.”
But all of this is self-defeating in a way, because when Henry starts to seem real to the player then the player starts to expect Henry to behave rationally. Then when Henry does something very stupid (like refusing to buy a stolen potato, or being willing to buy an item you just lifted out of his pocket a second ago, like his own house key) then the illusion is broken and he seems even dumber than the NPC who never did anything and had no personality.
This reminds me of the Uncanny Valley. Up to a certain point making the AI better and better makes the NPC seem more real, until they become too convincing and then their shortcomings suddenly become glaring and overshadow everything else.