Categories

RSS

This isn’t really about stealing in a video game, (which I’ve belabored in thepast) but about AI. Humor me for a second.

One of the fun things in Oblivion is the ability to rob just about everyone blind. I love slipping into a shop late at night and and pulling a Grinch on them: I steal every single loose object in the place and don’t leave so much as a crumb behind. This means taking lots of worthless stuff like ceramic cups and loose pieces of blank parchment, quill pens, gardening tools, and other items that I can’t even sell. It’s always hilarious to walk into the shop the next morning and see the grinning idiot shopkeeper standing there in his bare room. Makes me wish I could swipe furniture. This also serves as a sort of revenge against all those shopkeepers in Nethack who have slain me over the years.

But then the question arises: What does the player do with his ill-gotten goods? It doesn’t make a lot of sense to let the player wander back in and sell the NPC their own stuff, does it?

Games have tried various ways to handle this. In Morrowwind, a shopkeeper would notice if any items of his were missing. If you then tried to sell him an item of that type (no matter how generic the item may be) then he would “recognise” his missing item. So, if I steal a plain, unadorned fork from Bob, then I can never attempt to sell him a fork in the future because he will always assume it was his missing fork, and that I’m the one who swiped it.

This doesn’t really make any more sense than the old system, but requiring the player to fence stolen goods does sort of add a layer of realisim to the game. Lots of people have complained about the flaws in the new system. 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 hammer 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.

It’s an interesting problem, although it still doesn’t help me to know what I’m supposed to do with all of these corncobs I swiped. Will the buyer still be able to tell they are stolen if I turn them into popcorn?

Honestly, it doesn’t seem like a completely intimidating task to write most of these features. Maybe it’s just my inexperience with AI, but it seems like the majority of these things could be approximated with a few extra bits of information stored in every item.

#1. Trade Value: A currency value of the item (already exists, no doubt).

#2. Distinctive Value: For simplicity’s sake you would assign a number here, 1 being “very common” 255 being “one of a kind”, or something similar. In theory you could do a breakdown of commonality based on geographical area (ie, 1-64 represent distinctivity ratings for region A, 65-128 represent ratings for region B, etc) but it’s not truly necessary.

#3. More difficult, moving ahead for a bit…

#4. When the item is stolen it stores the time and location of the theft. Time elapsed is calculated by comparing current date with the date stored in the item.

#5. Here I’d simply give the item a number as before, 1 being little emotional value to the owner, 255 being great emotional value to the owner. (This has the side effect of making everyone care about a certain object the same amount if they ever “own” the object, but I think that’s acceptable.) Alternatively, you could have a counter whereby the “owner” of an item increments the emotional value every time he interacts with the item. Both approaches could work in tandem, as well. —- Over time this should decrease.

#3. What you’d want to do here is (a) check to see the relationship of the person to the victim. Assuming there’s a Relatedness factor R that exists between people, the amount of Emotional value that an item would have would depend on E/R (where R = 1 = immediate family, 2 = close friends, etc.). Geographical proximity would be simple enough to figure out: Find the distance between the location of the theft and the current location.

#6 and #7 are the only really complex parts of this problem (although they’re probably the most important). #8 could be a nice touch but it seems like it’s unnecessary. In any case these are all parts of a “Player Reputation” issue.

In any case, seems like most of the basic features here would be fairly easy to implement.

Actually: Just for the record: That IS my shirt. The game has clothes that seem to morph. Take a man’s pants and put them on a woman and they transform into a skirt. It’s kind of annoying. That thing I’m wearing is a “vest”. On a man it is a short little vest made of animal skins which looks not at all manly. On a woman it becomes as you see above.

More importantly, that PARTICULAR vest is enchanted with a nice stealth bonus, which makes it easier to sneak around unseen.

I’ve finished playing “Fable: The Lost Chapters”, Shamus. If you want my copy of the PC game for more in-game town burglary, I’ll be happy to send it to you.

Be warned that the game has its own economic idiocy.

First, about halfway through the game the best possible weapon and armor are available for purchase. Also, until that point combat is never too challenging.

More significantly, if you are a very good PC (in alignment) then shopkeepers like you so much that they will give you infinite money. If you alternately buy out all their supply of an item and then sell all you have of that stock back to them, repeating this process nets you money.

(When they are out of stock of health potions, their demand for them is high, and also factoring in your alignment means they will pay you a lot for each potion. Once you have sold them your entire supply of health potions, then supply and demand means they are inexpensive — and very inexpensive for you, my good friend!)

So by merely hoarding all the health and mana potions in the game you can quickly gain arbitrary wealth at any town, which in turn frees you from worrying about acquiring the best weapon or armor.

I found the RPG to be well done and entertaining, and not compromised by my freedom to skip some odd quests or challenges that would have given me the best weapon possible at the moment.

Myes, I remember that last part you talk about very well. As realistic the AI were compared to most other RPGs, they felt incredible stupid. They seemed like idiots when you saw 2 NPCs have the same conversation again at a later time, but in most RPGs they stand around all the day, waiting for you to talk with them. The Uncanny valley is definetly a good example to bring in too.

Thats what the alchemy skill is for — you can use stolen food in a potion, and youll get the same result. Admittedly restore fatigue potions arent actually worth anything, but at least its not stolen anymore

I suppose if I had to design a game to get around that, it would be rather complex behind the scenes with an item either having an “owner” or just not. Try to sell someone something “owned”, and the game goes through a checklist:

Is item’s “owner” Same as “owner”? Yes/No.
If no: Same business/faction/group as “owner”? Yes/No
If no: Is “owner” someone of “Faction 2”? Yes/No
[Meant to simulate a town’s controlling group saying: ‘hey, someone stole some of our stuff, keep an eye out for anyone selling it’.]
If no: Is value over merchant’s allowable gold? Yes/No
If no: Sold.

Given enough time and code to worth through I likely would add in other factors, just using that as the meat of it. Probably I’d not even bother with nondescript items such as EVERY fork, plate, cup, piece of paper, et cetera ad nauseum having an “owner”. Just the items which would be missed. (Probably the silverware, though not the ceramics.)

Why not an AI that depends on economics? If, there were only one fork in town, then the fork would be valuable, and more folks would be willing to “buy” the fork whether it was stolen or not. There are a few more factors that should be considered, like the demand for the fork, how useful it is as an implement, whether it is part of a set, who manufactured it, and how old it is…

A wooden fork wouldn’t be worth much, but a silver fork left in the burial tomb of a renowned king for a thousand years would be highly sought after.

…and…

I have yet to see a game where the shopkeeper steals, or attempts to steal from the player character. That would be good.

do you have any idea how much extra memory that would take? if you wanted to have all that and keep the game the same size you would probably end up with an overall mapsize of the house that you can buy in the imperial city and have 2D graphics otherwise you would need some huge gaming P.C. monstrocity just for oblivion.

regardless of my rant im also a stealther and also rather anoyed that you cann’t flog stolen stuff to shopkeepers outside of town not even the ones in the obscure little inns a hundred miles (or a days walk) away from anywhere!

Let’s play some Armchair Game Designer, and see how many of the items on your list we can solve.

TL;DR Version: News of a stolen item spreads between city blocks, across trade routes, and between towns, decreasing over time as people forget about the rumor. The fame of the owner determines how far the news spreads, while the worth of the item determines how long it takes for the rumor to be forgotten.

Let’s give this a shot.

1. Every item has an Owner and a Worth. Ideally, very notable or valuable items should have a higher Worth, but if you want to add another layer of simulationism go ahead and slap on a Uniqueness attribute.

2. Every person in your game world (and by extension, every Owner) has its standard stats, plus Notoriety. Notoriety governs how well-known and influential the person is, and therefore also determines how far gossip spreads about stolen items.

3. When an item is stolen, the Worth (or Worth and Uniqueness) of the item and Notoriety of its owner create a “spread” of suspicion towards the item, starting from the place where it was stolen and moving outward. Over time (also determined by this number), the spread shrinks until the Owner is the only one to remember, and even that vanishes with time. We’ll call this its Wanted Level. Wanted Level not quite a distance bubble, and not quite a fixed timer: it regards city quarters and well-traveled roads as “blocks” of gossip, setting an initial Wanted Level for the block at the time of the theft based on, and decreasing over, distance. The more Notoriety of the Owner (or Uniqueness of the item), the farther the spread, and the higher the Worth, the higher the Wanted Level in the individual blocks. The Wanted Level of an item ticks down over time, and once it hits zero in a city quarter they’ve forgotten about the rumor of the stolen item and you’re free to sell it there. The Owner is the last person to forget about the theft, so just consider him his own little block of gossip and the point at which the Wanted Level first spreads.

4. Items in storage, or otherwise in out of the way places, have a Delay in the spread of Wanted Level. Once the Delay timer’s up, the Owner notices the theft and Wanted Level kicks in as above.

I think a system like this would work out wonderfully for a lot of your nit-picks. Uniqueness handles 2 and 5, the spread of rumors based on Notoriety handles 3, 4, and 8, and Delay handles 5 and 6. If you want individual blocks to be wary of stolen items, combine the Wanted Levels of every stolen item they know of.

“Is that a sword? Wait a second, that’s Bob’s sword! He’s been talking to everyone he knows about how it was stolen from his mantleplace a few nights ago! You shameless thief, you didn’t even wait to leave the city before trying to fence it! Guards! Guards!” Bob’s low Notoriety keeps news local, but there’s no Delay, and the item definitely has enough Worth and Uniqueness to at least spread through town.

“Oh, just arrived from Cantersburg, have you? That’s quite a trip. Wait a second; that ring, where have I seen it before? My god… that belongs to the Duke of Cantersburg, doesn’t it? Look, it’s got his seal on it, and I remember that gossiping caravan merchant saying it was stolen not two weeks ago! Guards! Guards!” It’s Unique, it’s got Worth, and the Owner has plenty of Notoriety; you can run, but you can’t hide the fact that it’s stolen.

“Is that a potato? I grow potatoes, you know. Seems like there’s been a few missing potatoes in my field since yesterday. Dang vermin, eating my crops.” Low Worth, no Uniqueness, and a ton of Delay; heck, even after the Delay the farmer will only care about a simple potato theft for a few hours until he focuses on more important things.

In fact, this system seems perfect for running any sort of spread of information; harmless rumors, assassinations, and your selfless acts of heroism could spread in a similar manner. It’s not without flaws, but it would be great for creating believable NPC chatter, at the very least.

I don’t have much to contribute but I would like to say that I have a freind who plays oblivion and he dumps all the stuff he stole (mostly consisting of the shoes of eveeryone he’s killed) into a pond. That’s what you do with it.

instead of generating a region for the rumor just have it transfer when the npc(say bob) talks to another NPC. Instead of decaying with distance it will decay with each re-telling. So if a trader is told in one town and tells in a far away town he travels to it will be much more prominent then if it gets there through a chain of random farmers.

See Brian’s post; he has an idea similar to mine and more development than I’m willing to put in right before dinner.

Also, the potential for thieves is obscenely large; I played a custom-designed commoner in Morrowind (picking a use-activated sign that I never used, making me level with all the other commoners out there) and quickly made a tidy sum. Amusing to try, although the uncanny valley did come into play.

If I had to solve this problem with as little effort as possible, I would divide all the items in the game to “unrecognizable”(common books, ingredients, potions, vases, parchments, ink vials, quills, clippers and such junk), which could be of course sold to anybody anywhere and none will miss them that much, and “recognizable”(one’s account book, a rare family hierloom, last bootle of an 150 years old wine, weapons(anyone can recognize his own sword or hammer)…) and do the rest as it is in the game(fences, unability to sell the items to the guy I stole them from).
Also, I would make the traders to somehow noticing the robbery when they open the shop next morning, so they wouldn’t stand like idiots in the middle of thier totally empty shop. Instead, they could be complaining and trying to explain what happened, offering worse prices, and be more watchful about what they buy from that point on.
That would add some more realism to the game and expenses to write an AI for that won’t ruin budgets of several small countries.

It seems to me that one area of the discussion is missing. If we are talking about food items, then you may need to consider the season when you stool the item. For example, if you still potatos form Bob’s root seller in the middle of winter or during a bad harvest then he is more likely to miss this mundane item than if it is summer or a year of plenty. Another aspect you must consider is if it is war or peace time. Termoil in your region is going to cause high inflaction, even on items that may be mundane any other time. If we are considering making stealing items as realistic as possible, then you have to consider these factors as well. I don’t know how you could write it into the game, but it is worth considering.