Jump to content
The Dark Mod Forums

Huh? Now where'd that go? (Picking pockets)


grayman

Recommended Posts

After reading the comments, here's my proposed stake in the ground:

 

1. Player steals item.

2. After 3-5 seconds, the AI reacts

a - if sitting, he barks and looks either to the left or right for 3-5 seconds

b - if standing, he barks, plays an anim, and turns to look at the ground behind him for 3-5 seconds

c - if patrolling, he barks, stops, plays an anim, and turns to look at the ground behind him for 3-5 seconds

d - if sleeping, he doesn't react

3. Since he doesn't know if he dropped the item or if someone stole it, his alert level doesn't go up.

4. When he's finished looking, he returns to what he was doing.

 

If the AI is in the middle of any of these activities:

 

- opening or closing a door

- relighting a light

- examining a rope

- reacting to being hit by something

- having a conversation

- searching

- chasing or fighting an enemy

- fleeing

- any other activity I think of later

 

his reaction to having his pocket picked will be delayed until after he's done with his current activity.

 

If the AI is in the middle of his reaction, here's how he'll respond when other things happen:

 

- light goes out - light ignored, continue reaction, light probably noticed later

- rope appears - reaction aborted

- hit by something innocuous - ignored, continue reaction

- hit by arrow - reaction aborted

- start a conversation - reaction aborted

- start searching - reaction aborted

- spot an enemy - reaction aborted

- start fleeing - reaction aborted

 

Animation

 

TBD. If the hands move, we need replacement anims when the AI is carrying a torch or weapon.

 

Having the reaction made optional

 

The default would be to react. If mappers want the ability to skip the reaction, then it'll need to be used sparingly, for special situations. For a basic behavior like this, we don't want big behavior differences between maps, or to mess with player expectations.

 

Stealing keys

 

Stealing a key or stealing a money pouch should elicit the same reaction. (KISS)

 

Stealing a key generally doesn't mean an AI can't get through the locked door the key fits. Mappers have been careful to not lock AI out, because it can mess with gameplay. (Unique situations where that's the desired behavior are up to the mapper.)

 

The bark

 

Barks are already defined. They should not generate propagated warning sounds to other AI. This bark is just the AI muttering to himself.

 

(And I'll bet you guys thought this stuff was easy, eh?)

  • Like 3
Link to comment
Share on other sites

Sounds good to me.

 

Should there be a chance for AI to spot picked pockets?

 

That would mean that there would be a chance that the AI just carries on happily, never spotting lost items.

 

Like said, having the anim always is fun at first, but then it gets old. A reasonable chance of not seeing it would prolly keep it more fresh?

Clipper

-The mapper's best friend.

Link to comment
Share on other sites

 

 

 

 

I think he meant the lady behind the counter, with a "perfumed key".

 

That's actually the AI I was thinking of, she patrols outside too and that's where I made the grab.

 

 

 

For the animation, if the AI is carrying a torch/weapon, wouldn't a simple stop and head movement looking down without moving hands around bypass that scenario?

 

I'm imagining the guard stopping and looking around for a brief moment (couple seconds), it would add tension to the pickpocket experience but would only set the guard to alerts above level 1 if the AI did see the player after the pickpocket.

 

If the AI actually checks/pats himself down, then AI theoretically should always notice something went missing. I try to think that the AI is not that dumb to think they left everything somewhere or lost it at all points. This goes in line with the head movement only because the AI would stop to add tension after pickpocket and assume something may have happened, but was not able to confirm or be actually sure of it. Unless a bark is played to confirm it.

 

Random chance of using a bark + random chance of animation would make it also more tense of experience too. using the anim + bark each time would make it repetitive or tell expected behavior from a pickpocket, which is predictable and hurts gameplay IMO.

Link to comment
Share on other sites

I think Sotha's animation is perfect for the stop/head look/head turn movement, but the hand/arm checking belt area movement I'd leave out.

 

I really like the head holding part of it (the AI thinking "what just happened? did something happen?"), but it does make things difficult if weapon or torch was being carried.

 

EDIT: is there a way to make it so animation with hand holding head can be used IF AI has nothing in hands, but if not then the animation that plays is only the head movement? Two animations depending on AI?

Edited by Deadlove
Link to comment
Share on other sites

After reading the comments, here's my proposed stake in the ground:

 

1. Player steals item.

2. After 3-5 seconds, the AI reacts

a - if sitting, he barks and looks either to the left or right for 3-5 seconds

b - if standing, he barks, plays an anim, and turns to look at the ground behind him for 3-5 seconds

c - if patrolling, he barks, stops, plays an anim, and turns to look at the ground behind him for 3-5 seconds

d - if sleeping, he doesn't react

3. Since he doesn't know if he dropped the item or if someone stole it, his alert level doesn't go up.

4. When he's finished looking, he returns to what he was doing.

 

 

 

I'm pretty strongly opposed to #2 being the default behaviour. Every AI notices they've had their pocket picked after 3-5 seconds? Makes our player seem kind of incompetent, doesn't it? I would think even your average street urchin could nick a coin purse and have it go unnoticed until he's long gone.

 

If we're not going to make the reaction a consequence of anything the player has done, then it should at the very least be a random chance to notice, and the check done within a larger window of time. *

 

The other issue is that the vocal barks (which are generally of the "huh? what happened to it?" variety, are only really suitable for idle AI with no evidence of an intruder. AI who are searching or who have seen evidence of an intruder are not going to sound right giving a "Gee, did I drop that?" bark, so we'd have to come up with alternate behaviour for them.

 

I think Sotha's animation is perfect for the stop/head look/head turn movement, but the hand/arm checking belt area movement I'd leave out.

 

Yes, the problem with a hand animation is that it might not match the location of what was stolen. Suppose the pickpocketed object was a broach or a paper tucked in someone's boot?

 

 

* edit: I don't want to abandon the notion of tying the response to something the player is responsible for, unless we really can't come up with anything. What about, for example, tying the checks to AI who are alerted. If the player pickpockets an AI, and then the AI is alerted in the future, a check is done to see if he notices the missing item. If he does, he extends his search or something (his ramp down is delayed or slowed). I haven't thought this out thoroughly yet, but that would be a way to tie the behaviour into something the player has done...if the player doesn't alert the AI, he won't run a missing object check. This has the benefit of being related to player behaviour, and making some real-life sense (if you notice something suspicious you might do a 'self diagnostic' and notice something missing).

Link to comment
Share on other sites

I'm pretty strongly opposed to #2 being the default behaviour. Every AI notices they've had their pocket picked after 3-5 seconds? Makes our player seem kind of incompetent, doesn't it? I would think even your average street urchin could nick a coin purse and have it go unnoticed until he's long gone.

 

This behavior's purpose is only to provide a bit of realism for the player, and to give the AI a small chance of spotting the player.

 

If the behavior doesn't occur until the player is long gone, then I don't see any reason to provide it at all.

Link to comment
Share on other sites

Maybe something like this:

 

Player pickpockets idle AI

 

1. Within a comfortable window (1-3 minutes) AI gets a random chance to notice missing item, with some variety based on AI type (perhaps regular civilians don't get a check at all, and elite guards get a check within a shorter time). If check successful, AI plays bark, is not alerted, but logs the event as minor evidence of an intruder (equal to a candle out). This is mostly cosmetic and isn't really necessary, but doesn't really hurt anything either.

 

(assuming no successful check)

 

2. When AI next registers an alert, a check is made to see if they notice the missing item. If they do, then just before the AI ramps down to the next alert level, they play their missing item bark, and they spend an extra X seconds in their current alert state before ramping down. They also add it to their evidence of an intruder log.

 

Example: an AI walks along and hears a noise, he turns and says "Hey, is someone there?" and stands looking around for ten seconds or so (Lvl 2 alert). Then he suddenly says, "Hey, what happened to that?" looks down at his belt, and then stands looking around for another 5 seconds before dropping to Lvl 1 and walking away.

 

3. Future alerts at the same level do not result in new checks, but higher alerts could, possibly. The behaviour would have to be adjusted for higher level alerts, but something similar could possibly work if a more angry version could be made (I could probably do that by combining the "notice something suspicious" and "notice missing object" barks.

 

So an AI gets alerted to Level 4, draws his sword and says, "I know you're here" and starts searching. Just as he's about to put his sword away, he looks down and says, "Hey, when did that go missing!" and then proceeds to start searching around again. "I know you're here thief!"

Link to comment
Share on other sites

This behavior's purpose is only to provide a bit of realism for the player, and to give the AI a small chance of spotting the player.

 

I don't think it's very realistic for every AI to notice they've been robbed after 5 seconds though. Occasionally, perhaps, but not every time. Additionally, most vocal sets only have two or three different barks for the occasion, so it would get old pretty fast if it happened every time.

 

As for the chance of seeing the player, that's already been taken care of by the act of picking the pocket in the first place. Either the player made a daring dart into the light to get the object, and thus already earned it, or they were safely in the dark, in which case the AI wouldn't see them if they turned around anyway.

Link to comment
Share on other sites

1-3 minutes is very huge interval, in that time taffer will be far away from robbed guy...And actually I don't understand what point of creating just additional reaction, which will be illusion without consequence... Such thing doesn't add any additional realism to game...IMHO

Link to comment
Share on other sites

actually I don't understand what point of creating just additional reaction, which will be illusion without consequence

 

What's the point of idle animations?

Link to comment
Share on other sites

First, no, I think this stuff is not just hard, but very hard, hence trying to contribute and lighten/share the load.

 

Second, I'm a BIG fan of KISS.

 

I'm with Spring in terms of not having every AI respond, as that would make us feel like we lack talent.

 

One thing that might resolve it for me Grayman, in terms of your bullet points, might the delay be mapper specified? -1 indicating no reaction?

 

This way nothing changes for existing maps and things remain predictable, when it makes sense for reactions to occur, which really requires intelligence to decide rather than nature of AI, then mappers may implement reactions. In my released maps, I have one AI in each who would use it, none of the others.

 

I don't believe having the behavior be different based on different types of AI is beneficial or within KISS. Similarly, although alert level having an impact makes sense logically to some degree (I check my wallet/phone in a shady neighborhood), I'm not sure KISS meets there either (that's Grayman's call in my opinion).

 

I would however, really like the ability to have a bigger reaction available to mappers, IE, being able to designate an AI go on full alert. It seems a lot of effort to create minimal results, if all that results is a comment with no ability for more. I'd personally rather the time investment go into something more impactful to game-play in that case.

 

PS: Yes Grayman, in terms of the existing noticing and my scroll in the hand scenario, the reason beta testers didn't like it was the delay between slipping it out of his hand, and it being noticed given existing code--they were done/long gone by then, and what they accomplished felt implausible to them. Hence removing the entire scenario. In another situation, I planned for it, and teleport in an absence alert manually--which is a crude work around with multiple liabilities.

"The measure of a man's character is what he would do if he knew he never would be found out."

- Baron Thomas Babington Macauley

Link to comment
Share on other sites

I kind of liked the way it worked in Assassin's creed 1, where after stealing the AI would notice after a few seconds, look around on their person then throw up their hands in disgust that they lost something.

I always assumed I'd taste like boot leather.

 

Link to comment
Share on other sites

It would be nice to have it in the game at least as an option so we could turn on specific AI's noticing and then receive the animation/sound/etc. Perhaps if the AI has an important role in the story and has a special key (so naturally he would be really paranoid about losing it) then if he did he would start freaking out. Whereas if its just an average guard who lost his coin purse he wouldn't care as much.

Link to comment
Share on other sites

I don't think the delay is a problem. Most of the time maybe the player isn't around, but that means it makes an impression when the player is. And if the player does see it like a minute or more later, they should still get it. I might have a wide range of time from 15 seconds to maybe 2 minutes.

 

I also think it might not happen every time too. I'd think 20% sounds right.

 

And as before, most important for me is that it not count against the Alert count or stealth score.

What do you see when you turn out the light? I can't tell you but I know that it's mine.

Link to comment
Share on other sites

I agree to all that demagogue just wrote!

 

But while we are talking about AI behaviour, I'm quite often annoyed how only a split second of getting alerted makes a guard invulnerable to blackjacking. Like they have not even started their bark or animation! Can't this be delayed until they do? It might make blackjacking easier, but play out more realistic in the end.

Edited by wesp5
Link to comment
Share on other sites

I suppose all the ideas and thoughts here boils down to this:

 

What kind of gameplay effect do we want the "I've been pickpocketed!" behavior to have?

 

If the AI just plays an anim and a bark, it is just flavor.

 

One idea for a more profound gameplay effect:

 

1) Player steals item. The location where this happens is remembered.

2) The AI randomizes whether it will spot that the item is lost. (tunable by spawnarg. Maybe default to 50%?)

3) If it doesn't spot that the item is lost, it carries on and nothing happens from this point onwards.

4) If it does spot the item is missing, the AI continues it's patrol for some random time. (tunable by spawnarg. Maybe default to 5s - 120 s.)

5) After the time, the AI plays an "item missing" animation or simply stands there and barks about the missing item. He stands there for few seconds and looks around.

6) AI walks back to the position where the item was picked from his pocket. He stands there and looks around.

7) AI concludes the item is gone and continues patrol normally.

 

At any stage, the alert state is not increased. No stealth-score penalty is applied.

 

If the AI is engaged in any activity: conversation, search, combat or other, the behavior does not occur. Only if the AI is completely idle and relaxed, it will go back to look for lost goods.

 

If we had barks like "maybe I dropped it here?" "Where could it be?" the effect would be even more convincing.

Clipper

-The mapper's best friend.

Link to comment
Share on other sites

If it's decided to do it, then having some variation would be good anyway.

An animation of him retracing steps and looking on the ground would be hilarious & interesting to gameplay.

 

On that note, there could be room for more involved (but very rare) idle animations generally that put the AI through a sequence, like a serious coughing fit, getting exhausted, or puking that has him bending over for a few seconds, or he "just remembered something" and runs somewhere to look around (without it being clear what it is), things like that.

What do you see when you turn out the light? I can't tell you but I know that it's mine.

Link to comment
Share on other sites

"6) AI walks back to the position where the item was picked from his pocket. He stands there and looks around."

 

How would the AI know where the player pickpocketed him? I like the idea of him retracing his path though, maybe making the AI do its normal patrol, just backwards, slower and kinda zig-zagging searching the ground. However I also think that the type of AI and/or loot should have an impact, a random civillian losing his purse might think he just left it at home, but a noblemans guard losing a key might get into serious trouble for that and thus as a severe motivation to find it again.

  • Like 1
76561198061377149.png
Link to comment
Share on other sites

I don't want to abandon the notion of tying the response to something the player is responsible for, unless we really can't come up with anything. What about, for example, tying the checks to AI who are alerted. If the player pickpockets an AI, and then the AI is alerted in the future, a check is done to see if he notices the missing item. If he does, he extends his search or something (his ramp down is delayed or slowed). I haven't thought this out thoroughly yet, but that would be a way to tie the behaviour into something the player has done...if the player doesn't alert the AI, he won't run a missing object check. This has the benefit of being related to player behaviour, and making some real-life sense (if you notice something suspicious you might do a 'self diagnostic' and notice something missing).

 

I see two problems with this:

 

1 - There's no direct correlation between the player's theft and the consequences. A good deal of time could pass before the victim notices the missing item, and apart from the "huh?" bark, there's no feedback to the player that the victim is responding to the theft. (I could also apply this logic to the "wait 2 minutes" suggestion, but it's not as strong in that case.)

 

2 - Interjecting a "huh?" bark into the ramp-up and ramp-down bark sequence could cause undesirable sequences. We did a lot of work straightening out the relationships between the ramp-up and ramp-down barks, and having the AI bark something unrelated is going to cause more problems.

Link to comment
Share on other sites

A good deal of time could pass before the victim notices the missing item, and apart from the "huh?" bark, there's no feedback to the player that the victim is responding to the theft.

 

I think the bark is probably all the feedback the player needs. It's not really any different from AI reacting to stolen objects, bodies or lights, which also can happen long after the event occurred.

 

I can't argue with #2.

Link to comment
Share on other sites

On 2, I think it means a bark for this would just need to be quite explicit, "Wha... Did it fall off my belt?", so it couldn't be conflated with other things going on & could stand on its own in any context.

What do you see when you turn out the light? I can't tell you but I know that it's mine.

Link to comment
Share on other sites

After reading the comments on my first proposal, here's my next proposal:

 

1. Player steals item. If the victim's "chanceNoticePickedPocket" spawnarg is "0", he won't react. (This lets mappers use custom reactions or no reactions.) If > 0, he might.

 

2. Wait 2 seconds. Then, if the victim was alerted in the previous 4 seconds, and if his current alert level is below Searching, skip steps 3 and 4.

 

3. Check the victim's "chanceNoticePickedPocket" spawnarg (0.00 -> 1.00, default 0.50). Since the chance value is compared to a random number, and it's only compared once, if it fails, the victim won't react.

 

4. The "pickpocket_delay_min" spawnarg (default 10 seconds) and the "pickpocket_delay_max" spawnarg (default 120 seconds) define a span of time that randomly delays the victim's reaction.

 

5. At reaction time ...

 

If he's in Searching mode or higher, he doesn't react.

 

If sleeping, his reaction is delayed until he wakes up.

 

If he's not in Alert Idle mode, he'll emit the picked pocket bark.

 

If sitting, he'll look either to the left or right for 3-5 seconds. He won't stand.

 

If standing, he'll play an anim, and turn to look at the ground behind him for 3-5 seconds.

 

If patrolling, he'll stop, play an anim, and turn to look at the ground behind him for 3-5 seconds.

 

6. When he's finished, he returns to what he was doing.

 

 

pickpocket_alert

 

The "pickpocket_alert" spawnarg (default 0.0) adds its value to the AI's current alert level, capping the alert level just below Combat. If the alert level rises to where he will emit a ramp-up bark, he won't emit the picked pocket bark. If the alert level rises to Searching or Agitated Searching, he will not look at the ground around him, but will do whatever the search code tells him to do. This also applies if he's sitting. Whether an alert increment is applied or not, his "evidence of intruders" count will bump up by 1.

 

If busy doing something else

 

If the AI is performing any of these activities at reaction time, he doesn't react:

 

- reacting to being hit by something

- having a conversation

- fleeing

- any other activity I think of later

 

If the AI is performing any of these activities when the delay is over, the reaction will either occur, or be delayed until after the activity is finished. It depends on how far along the activity is.

 

- relighting a light

- examining a rope

- opening or closing a door

- dealing with an elevator

 

If reacting to a picked pocket (pp) and something else happens

 

- light goes out - light ignored, continue pp reaction, light probably noticed later

 

For the rest of these, the pp reaction is aborted:

 

- rope appears

- hit by something

- start a conversation

- start searching

- spot an enemy

- start fleeing

- blinded

- failed KO

- spot weapon

- spot something suspicious

- a friend wants you to help search

- spot dead or unconscious person

- spot blood

- spot that something's missing

- spot a broken item

- need to run for cover

- your torch goes out

 

Animation

 

TBD. If the hands move in a new anim, we need replacement anims when the AI is carrying a torch or weapon.

 

Stealing keys

 

Stealing a key or stealing a money pouch should elicit the same reaction.

 

Stealing a key generally doesn't mean an AI can't get through the locked door the key fits. Mappers have been careful to not lock AI out, because it can mess with gameplay. (Unique situations where that's the desired behavior are up to the mapper.)

 

The bark

 

Barks are already defined. They should not generate propagated warning sounds to other AI. This bark is just the AI muttering to himself.

  • Like 1
Link to comment
Share on other sites

This made me chuckle when I finally realized what was happening...

 

Yesterday, I wrote some preliminary code for the picked pocket reaction, but didn't get around to testing it.

 

I then wrapped up another major bug fix.

 

I then played some Thief 4.

 

I then started playing Kyyrma's Breaking Out the Fence, and noticed that he'd implemented his own picked pocket reaction, because the guards kept stopping, barking, turning to look around, and then returning to what they were doing.

 

It was only this morning, when I was writing my latest proposal on this behavior, that I realized that Kyyrma had not implemented his own picked pocket reaction. What I'd experienced was my own code changes.

 

This is what early onset Alzheimer's looks like, folks. :wacko:

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recent Status Updates

    • OrbWeaver

      Does anyone actually use the Normalise button in the Surface inspector? Even after looking at the code I'm not quite sure what it's for.
      · 4 replies
    • Ansome

      Turns out my 15th anniversary mission idea has already been done once or twice before! I've been beaten to the punch once again, but I suppose that's to be expected when there's over 170 FMs out there, eh? I'm not complaining though, I love learning new tricks and taking inspiration from past FMs. Best of luck on your own fan missions!
      · 4 replies
    • The Black Arrow

      I wanna play Doom 3, but fhDoom has much better features than dhewm3, yet fhDoom is old, outdated and probably not supported. Damn!
      Makes me think that TDM engine for Doom 3 itself would actually be perfect.
      · 6 replies
    • Petike the Taffer

      Maybe a bit of advice ? In the FM series I'm preparing, the two main characters have the given names Toby and Agnes (it's the protagonist and deuteragonist, respectively), I've been toying with the idea of giving them family names as well, since many of the FM series have named protagonists who have surnames. Toby's from a family who were usually farriers, though he eventually wound up working as a cobbler (this serves as a daylight "front" for his night time thieving). Would it make sense if the man's popularly accepted family name was Farrier ? It's an existing, though less common English surname, and it directly refers to the profession practiced by his relatives. Your suggestions ?
      · 9 replies
    • nbohr1more

      Looks like the "Reverse April Fools" releases were too well hidden. Darkfate still hasn't acknowledge all the new releases. Did you play any of the new April Fools missions?
      · 5 replies
×
×
  • Create New...