How I Celebrated the IGF Nomination

You may have heard SpyParty was nominated for the Seumas McNally 1 Grand Prize at the 2011 Independent Games Festival.  This is really exciting, even though I probably have no chance of winning!  Still, I celebrated in the best way possible:  I worked on the game.

The feature I’m working on right now I call “Action Testing”, which is a pretty lame name, but you have to name things when you’re writing code, so there you go…I’ll figure out a sexier name later.

The idea behind Action Testing is to fix what  I consider a flaw in the current game.  As I’ve said many times, I’m trying to take the core SpyParty game design as deep as I can on the player-skill axis, to the point where a more experienced player will basically always beat a less experienced player.  Once I’ve got the player-skill design “turned to 11”, I can ease new players into the game with matchmaking and an advanced handicapping system2.

The flaw in the current game is if a merely good Sniper is playing an elite Spy, the Spy player can’t accomplish any missions if the Sniper is looking directly at the Spy, even though he or she is much more skilled.  The Spy will still win most of the time, because the merely good Sniper won’t be able to tell which partygoer to watch if the Spy is good enough, but I still consider this a flaw because an elite Spy should be able to perform missions right in front of the less skilled Sniper due to the skill differential.

So, I’ve decided to try adding a tiny optional player-skill challenge to accomplishing missions.  There are many examples in games of the kind of small scale player-skill challenges I’m talking about, with driving and putting in Golf games being a historically important example.  However, for me, the most inspirational challenge of this sort in modern day games is Active Reload from Epic‘s Gears of War, so to start out I’ve basically made a modified clone of it and we’ll see how that goes in playtesting.

Here’s how it works in Gears:

When you run out ammo, you can press the reload button once and you’ll do a normal reload animation.  However, if you look closely in the upper right hand side of the screen, you’ll see a display like the above.  The bright vertical bar travels across the Active Reload bar, and if you push the reload button again on the “awesome” zone you’ll get a much faster reload (and you get a temporary bonus on the weapon), if you hit the “normal” area, you get a slightly faster reload, but close to the duration you’d get if you’d just ignored the challenge, and if you hit the “total failure” section you are penalized with a long and slow gun jam.  The exact timings and details are here.

The thing I like about this is that it’s an “opt-in” risk/reward challenge for the player.  The player can decide whether it’s worth the risk for the extra bonus, and if they opt-in and screw it up, the credit (read: blame) assignment is clear.

However, in practice, because the Gears design has a fixed geometry and timing, experienced players simply learn the timing and nail the “awesome” zone every time.  This is probably good for an FPS, where you just get a little extra depth by having the rhythm challenge, but I didn’t want my version of it to be memorizable in that way.  Instead, I wanted the Spy player to have to pay attention to the skill aspect of the test and adapt to it each time.  The Spy should really have to think about whether it is worth the risk of both potentially screwing up the test, and of having to pay attention to the test when the Sniper was aiming right at him or her.  So, I randomize both the position of the “normal” zone in the overall bar, and the position of the “awesome” zone in the normal zone.  I have the cursor ramp up in speed as it goes along to compensate for the fact that you have more visual time if the zones get placed farther to the right.  So, if the zones are to the left, the cursor is moving slower, but you have less time to process the situation and react, but if the zones are to the right, you have more time to figure out what you’re doing, but the cursor is moving faster.

The current tuning feels pretty good.  The cursor takes 1.4 seconds to traverse the whole bar, and it’s going twice as fast on the right as the left.  I find it really hard to not push the button once I’ve decided to go for it, even if I can see the cursor is past the “normal” zone…there’s some interesting psychology going on there.  I haven’t playtested it in the game yet, though, so we’ll see how it goes.

In SpyParty, each Spy action with have the Action Test enabled, and the results of hitting “awesome”, “normal”, and “total failure” will be different for every action.  Here’s an example video of the three results for hiding the microfilm in the book:

The one on the left is the “awesome” result, and you can see it’s fast and subtle.  The middle is the “normal” result, and is basically the animation that’s currently in the game.  The one of the right is the “total failure” result.  I kinda like how he takes the wrong thing out of his pocket at first…you can think of the Action Test as a way of choosing whether you’re Austin Powers or James Bond!

The different expressions of skill won’t always be represented with animations.  For the Check Watch action that allows the Spy to add time to the game, the “awesome” result actually dilates time on the Sniper’s machine, so the countdown clock simply slows down to add the time, instead of adding it in a single 30 second chunk like the “normal” result.  An astute Sniper can still tell time has slowed down, but it requires more attention than just noticing the clock go backwards.  The “total failure” result sounds the beep tone when the time is added.  Normally the clock only beeps on the minute, so if you are the Sniper and you hear the beep and look up and the clock isn’t near a minute breaker, you know somebody screwed up.

The different results are going to be totally custom for each action, which means they’re going to need a lot of playtesting to balance out right.

Oh, and speaking of playtesting, since SpyParty is an IGF nominee, that means GDC 2011 will be the next (pseudo-)public playtest!

  1. I actually knew Seumas back in the day, and I’m really glad the IGF has kept his name on the Grand Prize.  More about Seumas is available here. []
  2. The board game Go is a ultimate example of this.  Very different skill level players can both have a good game with each other because of Go’s beautiful handicapping design. []

Thanksgiving Metrics Teaser

Here is a quick teaser for the metrics I’m analyzing from the playtest data from both PAX and NYU.  The counts below are the number of times the Spy player picks a given character, out of 601 games across both playtests.

I find it interesting that the guy in the obvious plaid jacket gets picked almost twice as often as the James Bond-esque dude at the bottom.  What kind of Spy would wear that jacket?  A lot of them, it turns out.

More soon! Metrics I’m going to mine include types of wins, characters most likely to be shot correctly versus incorrectly, last mission attempted before getting shot, etc. Also, some charts over time to see if standing in line really did help the Snipers.

039
74 (12%)
030
72 (11%)
044
68 (11%)
027
62 (10%)
040
55 (9%)
045
52 (8%)
028
47 (7%)
031
45 (7%)
026
43 (7%)
029
42 (6%)
025
41 (6%)

I need to find a better graph dispay system than these horrible HTML tables. Any suggestions are welcome.

Edit: I figured out a slightly better HTML table approach, and it seems like the most portable at this time, so we’ll see how it goes.

The Last Public Playtest for a While

My crazily hectic summer & fall continues…  I’m back from a great time at GameCity in Nottingham, UK (here are some pics, and I’ll post the lecture audio shortly), and now I’m preparing to go to NYU’s GameCenter in a couple weeks.

On November 18th, on the lower level of NYU’s 721 Broadway building, we will do a SpyParty playtest at 1pm (note extended hours!), followed by a lecture and interview with Frank Lantz, the most excellent Director of the GameCenter, at 7pm.  Both are open to the public, which is very gracious of the University! Here is their announcement.  Plus, check out the awesome poster by Rachel E. Morris:

This is going to be the last public playtest of SpyParty for a while, maybe even until GDC next February.  I love doing these playtests and lectures, but the travel and preparation really distracts from progress on the game itself, so I need to buckle down and crank for a bit.

Frank Lantz, pondering his SpyParty playtest at GDC10

I also have a huge backlog of stuff to post here on the blog, so hopefully I’ll begin whittling that down once things normalize again.

IGF Submission Submitted

I submitted SpyParty to the Independent Games Festival Monday night, 11 minutes before the midnight deadline!  I was originally planning on also submitting to the Indie Game Challenge, the deadline for which was October 1st, but I couldn’t get the game working over the internet in time.  However, even though I blew through that deadline, I’m really glad I tried for it, because it clued me in to how much work I still had to do to make the game “contest ready”, just from a logistics standpoint.  It set me up for entering IGF with something that actually worked.  Too bad about the $100,000 though!

The biggest part of becoming “contest ready” was getting the game working over the real live wild internet.  All the playtests so far have been on a local LAN, but the judges for these festivals and contests aren’t always in the same room.  I had to write a rudimentary lobby server and switch networking libraries to something that could do NAT traversal.  After talking to a bunch of people, friends at Valve pointed me at libjingle1, which is used by Google Talk and  Steamworks, and seems pretty robust.

Network code is a giant pain in the butt, and multithreaded network code is even worse, but I eventually got everything ported over, and a lobby server and client up and running.  I did a fair amount of testing with the new internet code, including over my crappy 2G/EDGE cell modem, and with a friend in Tokyo, and it worked pretty well.  I still have some problems behind really restrictive firewalls (the Oakland Airport free wifi and the Westin St. Francis lobby wifi are my current challenges), but it should work for most judges, I think.

Here’s the IGF page for SpyParty, and we even made it into the IGF press release, which is nice.  There are a lot of great games in the IGF this year, so who knows what’s going to happen.

Here’s the README.txt in the SpyParty IGF submission for your reading pleasure.  It builds on the Four Page Instruction Manual and assumes the judges will read that first.
Continue reading ‘IGF Submission Submitted’ »

  1. Hmm, it looks like they finally released the new 0.5 version, I wonder if they fixed all the same threading bugs I had to fix… []

Sorry I’m Swamped, Here’s a Teaser Post!

I’m sorry I went dark all of a sudden after PAX, I just got completely swamped with stuff, including festival deadlines, lectures, GDC stuff, etc.

It’s going to be a couple more weeks of crunching for various things (like the IGF deadline on 10/18), and then I will post the rest of the cool stuff from PAX I’m sitting on, and more.

In the meantime, I posted on Facebook about the various upcoming playtests, so check that out, and become a SpyParty “fan” there while you’re at it.  I tend to post small stuff there and on Twitter when I don’t have time to make a real post here on the blog.  I prefer the real long-form blog posts to the smaller notes, but when I’m snowed under sometimes I can only manage 140 characters!

Here’s a teaser video from one of the PAX Experts Tournament games, I think this one was in the quarterfinals:

Oh, and one of the things I’m doing for these festivals is getting SpyParty working over the internet, so that will pave the way for more testing where you don’t have to be in my dining room.  More on that in a month or two.