Sponsored By

AI hiding among AI: Chris Hecker on SpyParty's devious single-player

We talk to Chris Hecker about the surprising choice to make a single-player mode for his player vs player game of deception and suspicion, Spyparty.

Phill Cameron, Blogger

April 15, 2015

13 Min Read
Game Developer logo in a gray background | Game Developer

No matter which way you look at it, SpyParty is an odd game. One player moves through a formal cocktail party, schmoozing it up Bond-style -- making small talk and drinking expensive liquor while planting bugs, hiding microfilm, and swapping statues. Meanwhile, the other player sits far away from the party, a high-caliber rifle and a pair of binoculars next to them.

They need to find (and neutralize) the spy; the spy needs to make sure they're not seen, blending into the crowd, as just another innocuous attendee, when the sniper's laser-sight swings over them, and getting business done when the sniper's attention is elsewhere. 

It's a game that's fundamentally about the interaction between two players, which makes it especially odd that Chris Hecker, the game's designer and creator, told me that he was developing an offline version of the game, where players square off against an AI spy or an AI sniper. With SpyParty focused on fooling the sniper into thinking that you are an AI, the fundamental idea seems like it wouldn't quite work as a single-player game.

Hecker is evidently finding problems making it work entertaining enough to pursue a proper single-player mode. I talked to him about the counterintuitive nature of single-player SpyParty, as well as how he's planning on overcoming the hurdles it presents.

First of all, why do you want to make a single-player mode for SpyParty? Is it purely to cater to the kind of player who doesn’t want to go online?

I guess there’s two reasons; first, yes, it’s partly a realization/fear that a multiplayer-only game, even if it's one-vs-one, is fraught with peril. So that certainly gets you thinking about it. But then, it’s actually interesting to me from a design standpoint, and that’s what gives it legs. I’m not sure I would have done it out of fear only. Maybe I would. Who knows? But I actually started thinking about it and realized that there were interesting aspects to it from a design standpoint.

For example, imagine integrating it with a tutorial. Right now, the game has no tutorial. You’re supposed to read a manual. The user experience is totally terrible in SpyParty. I’ve just been focusing 100 percent on depth. Eventually I’m going to have to focus on the new user experience, and single player is a great way to get people comfortable playing a game.

Right now your choice is to go online and get creamed/mentored by experienced players. A lot of people don’t realize, since most multiplayer communities aren’t as nice as SpyParty’s, that mentoring is even an option. They log into a lobby and their stats are zero wins and zero losses, and they see someone with three thousand of each, so they just log back off.

John, my art director, was telling me about his Hearthstone experience: He was just playing the AI, and he kept playing it until he got to the level where the AI was using cards he didn’t have, so he bought a few, and then finally he could beat the AI on Expert. It eased him in really well, to the point where he decided to go online and see what happened.

And because the matchmaker wasn’t prepared for someone who could beat the AI on Expert, he crushed everyone for a while, which gave him confidence. All of these things, single-player enabled. And when you have a game as complicated as a card game like Hearthstone, or SpyParty -- which is very new and unique -- single-player is a really great way to let people make mistakes against the computer, as opposed to fumbling around against an opponent.

"Singleplayer is a really great way to let people make mistakes against the computer, as opposed to fumbling around against an opponent."

So I think it’s important from that standpoint, and I think it’s really interesting, too. I was really inspired by the Spelunky Daily Challenge, where every day there’s a newly generated map that is identical for everyone, and you all play it and see how far you can get. You could imagine a kind of SpyParty Daily Challenge where -- assuming I have AI and I can tweak it -- I can randomly generate maps and situations, and now I’ve got a thing where everyone can join in and see how they do. All of these things open a lot of doors to tutorials, and community events, and it all increases the amount of entertainment of the game.

If I pitched to you right now the idea of being the sniper as a player, you’re looking at the party just as you do in a normal SpyParty game, and you’re trying to figure out who the spy is. That is still interesting even when it’s a computer trying to accomplish missions. The core of the game, which is that someone is there doing stuff and you’re trying to figure out who it is, it’s still there, single-player or not. I think the flipside is the challenging one; how do you make it feel fair as a spy when you get shot by an AI sniper.

I was about to say: There’s two sides to this. One is that, as the sniper, a lot of the spy's objectives are to trick you into thinking it's an AI. So if the spy itself is an AI, how do you create an AI that doesn’t behave like an AI?

Yeah, exactly! The joke answer I have to that is that I clearly have to have a programmer friend "clean-room" develop the AI spy. On the Space Shuttle, they had five different algorithms which would vote on the best course of action. They were all developed separately, and for any given decision, they would vote. This has the same sort of idea, where you want this separately developed thing.

I mean, maybe I should have the ability to allow mods, so anyone can develop a spy AI, and then we find out whose AI is best against player snipers, etc. It’s kind of an inverse-inverse Turing test. We’re just joking about it, but we’ve got a few ideas here, so you can see it’s got legs.

When I’m doing game design, I look for things that you can make jokes about, and discuss, where you can pull on the thread; Jon Blow and I have this thing about where, with an idea, you can pull on a thread and you can feel that if you keep pulling on it the whole sweater is going to come apart, or instead it might just be a little piece that comes right out. So with this I feel like there’s a lot of thread back there.

The other side is that I was trying to figure out how to make it feel ok to get shot by the AI sniper, and that’s the harder one to develop. Chess Master 2000 does this thing where, when you set the AI difficulty level, it asks you if you want to play a monkey, or Kasparov -- all of these personifications that anthropomorphize the AI. I could easily do that. It could be that badass guy from Enemy at the Gates, or it’s a teenager with a popgun. You can imagine trying to soften the blow, because you don’t want to feel like the AI is cheating. And you want to be able to deceive the sniper AI, and the way to allow that is to, when developing the sniper AI, make it create all these models of suspicion.

"You want to be able to deceive the sniper AI, and the way to allow that is to make it create all these models of suspicion."

One thing we talk about when people are playing SpyParty is this idea of "tunnelling," which comes from tunnel vision. So you say to yourself that you’re pretty sure the spy is, say, a woman in an orange dress, and so you can’t take your eyes off her. But now everything she does starts to look suspicious. So if it actually is Orange Dress, then you’re in a great position, because you’re going to notice them do something that gives them away. But if it’s not? You’re screwed, because you’re not paying attention to the rest of the party; you’ve tunnelled on her.

So you could imagine when you’re developing an AI so that it builds confidence models in each character it's looking at, and then spends more time looking at the ones its confident on. And if you’re not one of those then you’re in luck, because you’ve fooled it long enough that its dismissed you as a suspect and its tunnelling on someone else.

You can imagine designing it that way, and there are some new mechanics coming in this year to do with framing other characters that are really going to open that up. You could imagine not having to design a human-level AI to facilitate all this, but you do have to consider it all and include it. It has to have a model that can be wrong.

You already have the players are engaging with these models, with players highlighting and lowlighting characters in the party based on their own suspicion, right?

There's no gameplay associated with that, but it’s a bookkeeping thing for the sniper. And you’d imagine a sniper AI would have a similar thing going on as it plays. Maybe even highlights and lowlights, so that they show up in the log after. Because that’s one thing: There’s the whole personification of the sniper AI, but there’s also the idea that if it can explain why it shot you, and that makes sense, then a) you learn, and b) you don’t feel like it was cheating.

And also I think that’s a key part of SpyParty in general; you want to find out what their thought-process was as you sat there sweating, trying to figure out if you’re being suspicious or not.

That’s exactly true, and you hear this even in elite player streams, where they each have 500 hours in the game, where it’s like, “Oh man, he totally knows it’s me,” where meanwhile the other player doesn’t have a clue. Players have simultaneously streamed so you can see both sides at once, and I had the audio on for both, and while one was certain he was caught, the other was dismissing him. It’s a complete opposite mental model.

Well, that means the game’s working, right?

Exactly. That’s what I’m going for. And that’s what I want the AI to do. I want it to be fallible, in a way that isn’t how you normally deal with AI in games. AI is fallible all the time, but in the way that it gets caught on stairs, or stuck in a loop; here, you want their mental model to be wrong, so it has to have this probablity model that isn’t certain at any point. The highlighting and lowlighting has to be in the code as well.

I remember playing a game called AI War a while back. It’s a single-player or co-op RTS where you’re building from nothing in space, where the AI is huge and almost omnipotent, so that the objective, at least at first, is to just not draw attention to yourself.

But as you take strategic objectives, the AI starts to wake up and pay attention. One of things you could do, though, when setting up a game, was to choose a "personality" for the AI, so that it might be really vindictive, or hyper-aggressive, or take a long time to get going, but once it did it was relentless. I could see the same thing working here, where some AI is really indecisive, others are very trigger-happy -- that sort of thing.

We have this phrase in high-level SpyParty called "shooting to be cool," where, as the sniper, you shoot someone before they think you should know who they are, and you really rattle them. If you’re wrong, then you look a little too trigger-happy, and give them an easy win -- but if you’re right, you spook them, and it’s a very effective strategy. You’re saying that you’re more competent than you really are.

Are you worried that certain mechanics would be redundant? More from the spy perspective -- for example, something that might trick a human player but an AI can’t, or doesn’t, notice?

"There could be an NPC that just rushes all the missions and you still wouldn’t find it for your first ten games."

The first thing I’m going to do when I implement it is to design a spy AI that just does the missions directly, with no attempt to hide it. Because for new players, there’s so much going on that they’re snowed under anyway, so there could be an NPC that just rushes all the missions, and you still wouldn’t find it for your first ten games.

I want to see how that plays first, because my guess is that that’s going to work better than I think it’s going to, or better than it has any right to. Attention is such a core resource in the game that the sniper is playing against themselves, in some sense. All of the missions are going to have to be achievable by the AI, definitely, but everyone on top of that.

Those are the real mechanics of the game, and the rest of the stuff such as pathing, I don’t know if I’m going to have to code in pathing mistakes. For example, if it’s a really poor spy, but I think as long as it can express what it was doing, and as long as its got a model that it’s following, and it's varying between those, it’ll be okay. I’m more worried that it’ll teach people poorly.

So you’re not really intending to slip an AI into a tournament and see how it does?

That would be funny, but we’ll see how it goes. My assumption -- and this is true of any really hardcore game -- the AI sucks compared to real players, because it just can’t react in any way. There’s very little chance that I can do some sort of hidden Markov model between games, where I figure out that the sniper is lowlighting this behavior early; that’s crazy-talk AI. I’m not aiming for that. I’m aiming for something that, once you’re kicking its butt, you go online.

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like