IGF Feedback and Beta Status

I am deep deep deep in server stuff for the Early-Access Beta, so this post is mostly to take a short break from that, tell you folks I’m still alive, and post the collection of feedback I got today from the IGF submission last year.

I think it’s great the IGF gives submitters feedback, and, being on the Advisory Board for the Game Developers Conference, I know exactly how much work it is to even just grade the submissions, let alone writing up feedback clean enough that it can be sent back to submitters.  It’s something we constantly wrestle with on the GDC AB:  should we spend our time helping the accepted talks be better, or spend time giving feedback on why talks were rejected?  It’s a tough decision with no easy answers.

So, I post this feedback here both because I think it’s great the IGF does this and it’s wonderful to get feedback from people who played the game “in the wild” without me standing there, and also because I think this specific SpyParty feedback is kinda funny in its breadth, yet also brings up interesting points worth discussing.  Plus, I’m sick of trying to make sure my openssl certificates have the right permissions for the krb5kdc user to not violate SElinux policies and need a break…

I got three pieces of feedback, and they’re all about as different as can be.  First up:

I have no objection to your focus on rules and skills. But I think a more abstract appearance for such abstract interactions would be more suitable. As it is now, you have created a murder simulator of the worst kind: one in which the player kills his or her friend.

This is especially problematic considering that you don’t even seem to care about the simulation aspect of the game, submitting a project as you did with only placeholder artwork. If you don’t mean to make a game about killing one’s friend, don’t use this metaphor.

I had no idea Jack Thompson was an IGF judge!  They should really publicize that more.  I kid!  I actually have a post in draft form about how SpyParty uses violence in a different way than most games, but I haven’t had time to finish it up.  I will tease one of the questions from that post here, since it’s topical to this feedback:  I’m thinking about adding a “PG” mode to the game, where, instead of shooting the Spy, the Sniper player identifies the Spy and the guards come arrest him or her.  Does this change the game?  The sniper bullet is, at its most basic level, simply a way for the Sniper to pick a character.  You can shoot a character in the toenail and it still counts.  The game ends when that choice is made, so there is no actual violence in the interactivity of the game.  But, some people argue having “arrest mode” would ruin the game.1 This gets to some of my opinions about how the phrase “game mechanics” is misused a lot of the time, and how the low level features are inseparable from the higher level aesthetics of the gameplay, about which I’ll write more later.

Next:

Awesome, probably the most innovative entry of the year. If it doesn’t win a prize it’s just because it feels very early in the development.

It seems to me that the main indicator of somebody being a spy is the walking flow. If you see somebody with a stuttering walk it’s over. It shouldn’t be just about that, I’d recommend some kind of automatic movement smoothing.

This topic of the “walking tell” is a really interesting one I’ve talked about a bit in interviews and comments on the blog, but never expanded on.  I originally had click-to-move as the walking interface when the game was mouse-only, under the theory the game is supposed to be about behavior, not about not accidentally walking into walls.  Makes perfect sense, right?  But, when I went to add console controller support, I faced a dilemma:  console click-to-move interfaces are always terrible, so should I make it direct-control or not?  I thought about it a little deeper, and realized that when you’re playing a shooter or any other kind of player-skill direct-control action game, after an initial learning phase, you don’t actually think about the movement very much, you just express yourself through the control scheme.  You don’t think, “now I must strafe right, which is the left analog stick”, you just do it; the controls have become transparent.  I realized this actually adds a level of physicality and kinesthetics to the play experience that deepens it.  Because you have to learn to move, the game is deeper, and more about performance.  So, I put direct-control into the console controller interface for SpyParty, and the game got better.  Yes, newbs get shot while they’re learning the controls, but the learning of the controls involves the Spy player observing the NPCs closely and learning how they walk, it involves being able to think fast on the fly and stay calm, it exposed the awesome “play it cool” mechanic, where the Spy needs to be okay with suboptimal positions and not fidget and correct, and it had a whole bunch of other interesting ramifications on the design, much like the Action Test mechanic.  After observing this, I redid the mouse interface to be direct control too!

Finally:

Wonderful asymmetrical gameplay that is very nuanced. Needs polish, obviously, but in the games I played with another judge I had a really fun time.

Not much to say on this one, but I wasn’t sure what level of polish was appropriate for IGF, actually.  In fact, I was slightly surprised SpyParty was nominated for Grand Prize this year, since, let’s face it, the game is nowhere near finished. I figured if it was going to get nominated, it would be for Game Design.  But, any nomination is a huge honor, and if I’d been on the Grand Prize committee I’d have voted for Minecraft myself!

I haven’t decided whether to submit to IGF again.  It seems weird to submit multiple times, especially if you’ve been nominated.  Plus, I’m going to be insane with the Early-Access Beta, so I’ll see how I feel around submission time.

Okay, back to the server grindstone.  My next task is to get the CoSign SSO authn system running in the private beta phpBB to talk to the LDAP directory to get the player’s email address populated correctly. Then, figure out how to create accounts in LDAP from httpd without using the default openssl LDAP crt I’ve registered in the environment because I’ve restricted its LDAP permissions tightly for security, then use this dn to create the Kerberos account, and hook it up to a web form I can use as the endpoint for PayPal confirmed purchases so invited players can actually log on.  Whee, indie games are fun!

Teaser image!

  1. More up-to-the-minute opinions herehere, and here. []

Joystiq E3 Party Playtest Metrics and Pics

The Joystiq Post-E3 indie game party was great and it seemed like fun was had by everybody!  Thanks a ton to Joystiq for putting it on!  It was good to see a bunch of cool indie games in attendance, like Monaco, Retro City Rampage, Z0MB1ES, and Q.U.B.E.

Hopefully this tweet by party-goer Andrew Schmidt is representative of everybody who got a chance to play!

If you’re still thinking about a game four days after playing it for eight minutes, it must be great. Where’s that beta, @checker?

Rest assured, I’m working on it!

I’ve put some pics from the party below, but I also processed the game journals from the games played that night, and so first, here are some metrics!

There were 35 games played over about 3 hours.1

Match Result Frequency Duration
Spy ran out of time 9% (3) 210.0
Sniper shot civilian 34% (12) 173.6
Missions completed successfully 29% (10) 183.1
Sniper shot Spy 29% (10) 144.8

I’m happy with these match results for the time being, with Spies having a 63% to 37% advantage right now.  If you recall from the PAX West 2010 results, the Sniper had an advantage due to the learning-while-standing-in-line phenomenon, so at PAX East, I instituted a new playtesting format, where both players would play a single game of Spy Practice first, which would let each of them learn the Spy controls and how to walk around and do missions, and then they would play connected for real.  I did this because, while you can practice the Sniper role by simply watching games, the Spy role is much more physical, and you need to actually hold the controller to practice.  I wanted to make sure a single round of Spy Practice would switch things over to giving the Spy the slight advantage, and this worked well.  For the beta, I’m excited to watch how this balance changes as people play lots of games.

In the games where the Sniper shot the Spy, here is the last mission the Spy completed, presumably the one that gave him or her away:

Last Mission before “Sniper shot Spy” Frequency
Tranferred microfilm 40% (4)
Statue swapped 30% (3)
Remove microfilm from book 20% (2)
none 10% (1)

With only 10 games ending in the correct assassination, it’s clearly not enough data to draw a lot of conclusions, so here’s the same data from PAX East, which I haven’t posted before.  You can see the same general pattern of the Transfer Microfilm and the Swap Statue missions being the most dangerous for the Spy:

Last Mission before “Sniper shot Spy” Frequency
Remove microfilm from book 19% (34)
Statue swapped 17% (30)
Double Agent contacted 13% (24)
Transferred microfilm 12% (22)
30 seconds added to match 10% (18)
Bugged ambassador while walking 9% (16)
none 8% (14)
Hide microfilm in book 6% (10)
Bugged ambassador in conversation 4% (8)
Fake Banana Bread Uttered 1% (2)

The “none” entry means the Spy got shot before accomplishing any missions, which probably means they were walking funny.

Here are the characters choosen or not, and shot or not:

Spy Choosen Character Shot
(Top 3 and Bottom 3)
1b00561a 11% (4)
c89486e5 11% (4)
fbd33fbe 8% (3)
c7744b2c 2% (1)
eaae49bc 2% (1)
e602ee75 2% (1)
43b17958 14% (3)
769af913 9% (2)
9ae2129d 9% (2)
c7744b2c 5% (1)
84d7af27 5% (1)
ce8adb57 5% (1)

After processing this data, it occured to me that I had the code randomly pick the number of characters requested by the level from the available pool first, before the Spy could choose which character he or she wanted to be.  This disguised tendencies to pick a given character (since that person might not be pickable this game), so yesterday I reworked the way the characters are handled during game initialization.  Now the Spy can choose from all the characters during casting, and then the level code fills in the remaining number of required characters. This means any bias in who people like to pick as Spies will be present in all games, even on the smaller maps with fewer characters. This change should make the beta metrics more meaningful, and it also feels better, like the Spy is casting the party, rather than the game doing it.

The Action Test results are in line with what I want, meaning most people are either ignoring it, or hitting the “okay” zone:

Action Test Result Frequency
okay 41% (63)
ignored 32% (50)
good 21% (33)
bad 5% (8)
cancelled 0% (0)

I also now gather the Sniper’s laser position and direction over time, but I haven’t figured out what to do with that data yet.  I need to correlate it with the timings on the mission stuff, and try to make a judgement of when the Sniper figures out who the Spy is, and how long that takes, etc.  Here’s an image of the raw data from one of the games:

Finally, here are some pictures I snapped at the event.  It was really dark in there, but I hate using a flash, so some are kind of blurry.2

Also, a huge thanks to my friend Lisa for helping out.  She hadn’t even held a 360 controller before I trained her a couple days before, and she picked it up quickly and even shot me a couple times in practice!  Speaking of shooting me, you might notice Alex Baard showing up yet again.  I couldn’t let him play any of the newbs, so I played him as we were shutting down.  He beat me twice!  I need to finish up this beta server stuff so I can get back to playing my own game, I’m getting rusty!

 

  1. I’m not sure how statistically significant 35 games is, but hey, this is the internet, not a peer reviewed journal. []
  2. I wish I could trade resolution for light sensitivity on consumer cameras, who needs 12 megapixels?!  I’d trade down to 2mp for a few stops. []

Play SpyParty after E3 on Friday June 10th in LA

Update: Okay, Joystiq has finally posted the full details.  It’s at the La Cita Bar in downtown LA, from 5:30pm to 9pm on Friday, June 10th.   The other games being shown include Monaco, Nidhogg, Retro City Rampage, Q.U.B.E., and two unannounced projects, one from Harmonix and one from Ska Studios.  It should be a lot of fun!

Sadly, it’s 21 and over, since it’s a bar, sorry about that!

Oh, and they want you to RSVP.  Hope to see you there!


Sorry for the late notice on this, and apparently the venue is still getting nailed down, but Joystiq is having a party after E3 in Los Angeles, and I’ll be there with a SpyParty playtest setup.  You are invited to come play!  The party is on Friday, June 10th, from 6pm to 9pm, somewhere in LA.  Yes, this is Friday, and E3 is over on Thursday, so hopefully you’re still in town or can change your tickets if you’re not local.  I’ll update this post when they figure out exactly where the party will reside, but hopefully you can make it!

There are going to be a bunch of other indie games there too, including Monaco, Nidhogg, and others.  I’m sure the official announcement will have the complete list, when it gets posted.

I’ll bring copies of the Infamous Four Page Instruction Manual, but you should read it before you show up so you’re prepared to pwn newbs.

Two people play SpyParty at the Joystiq PAX East breakfast. Photo credit: Ben Gilbert, I think.

Content Package Subsystem Working

Hallelujah, task #354 of 13,8771 for the Early-Access Beta seems to be working!

The past few days I’ve been working on a package system, so I can bundle up all the content files for SpyParty into a single compressed blob, rather than having a zillion files in a directory hierarchy.  This is good for load times, versioning, patching, and is just a lot cleaner.  However, during development, you want to work with the exploded content file system so you can edit individual files, and what you really want is for both to work together.  So, in the new system I made it so the disk files have a higher priority than the same file found in a package, which is pretty easy to do, until you let the code iterate directories, and then you realize you need to iterate both the disk and the package directories simultaneously and Do The Right Thing.  Anyway, it seems to be working now.  Here is one of the ways I tested the hybrid case:

I put all the content into a package, and then extracted only Jim Bondo’s property file to the disk.  To make sure the disk file was shadowing the package file, I scaled him up by 2x.  I really like how the lookat controller uses the head bone of the target character, so he looks down at people, and they look up at him!

The one additional thing I need to do is add priorities between packages, so I can ship a patch that doesn’t have to update the entire content package, it can just contain the patched files, and they’ll override the existing versions in the old package.

But, it’s progress!

Next up, I’m going to integrate Google’s Breakpad crash reporting system so I can get crash dumps from beta testers…

  1. I just made those numbers up.  The first is probably high, and the second is probably low, sadly.  I’m afraid to actually compute the real numbers. []

Indie Panel at UC Santa Cruz on May 26th

We just finalized this:  come see Alex Neuse (BIT.TRIP Runner, Beat, etc. etc.), Jonathan Blow (The Witness, Braid), and me at UC Santa Cruz on May 26th at noon o’clock, in the Media Theater (room TM M110).  UCSC’s campus maps are bad enough that it’s actually easier to just give you the latitude and longitude and let Google Maps figure it out: latitude 36.995214, longitude -122.061627.

It’s going to be an open panel discussion, led by the excellent Noah Wardrip-Fruin, but with questions from the audience as well, and it’s open to students and the public.  Who knows what we’ll end up talking about?!

There will not be a SpyParty playtest after this, unless you’d like to playtest my new content package subsystem I’m working on for the beta.  Woohoo, exciting stuff!