A Room With a View…of the Courtyard

After a too-long PAX-and-New Character Art-based build hiatus, I’ve updated the Early-Access Beta build 4 times in the last week or so!  It feels good to be updating the game for the beta testers again! There are a lot of small fixes and features in these builds, but the two big ones are the addition of chat rooms and a brand new map, Courtyard.

Courtyard

In the old days, we walked to the only map, the Ballroom, uphill, both ways, and we liked it.  Eventually, after a couple years of playtesting on that single map, I decided to test my working theory that making new and interesting maps for SpyParty wouldn’t be too terribly hard, at least relative to something like doing the AI and animations for a new mission.  In other words, I was working under the assumption that because most of the gameplay in SpyParty is based on the character behaviors and the perception and deception mechanics, doing new maps would be a relatively easy way to add new gameplay.  The maps would obviously be important and add a lot of variety to the game, but their layouts would not be as crucial to the feel of the game as they are in a shooter or a platformer.  I mean, Ballroom itself is just a box and everybody seemed to like it!

So, I tested this theory by adding the Balcony and Veranda maps, and I’d say the theory was proven to be true, since both of those maps worked well and people like playing them.   The Ballroom is still the go-to map for serious play because it’s the most tuned and balanced, but the other maps add some spice and hint at how the game will feel with lots of different settings and map topologies.

On the runup to PAX, I had an idea for a new map where the statues would be centrally located, but the Sniper couldn’t see them all at the same time.  I was wondering how that would change the Inspect Statue and Swap Statue missions, which have turned out to be two of the riskiest missions for Spies to attempt.  My original thought for this level was a single statue right in the center, but I decided that would be too hard, so I settled on three statues embedded in a central pillar, where the Sniper can only see one at a time.

I hacked this map together one night at PAX, and we playtested it the next day.  The initial tuning was way too hard for the Sniper, not to mention how hard it was to get your bearings.  After some tuning, and Wessel’s suggestion of using a statue of Alan Turing to give the Sniper an orientation reference point, the Courtyard seems to be working out well.   I think I overcorrected a bit and the statue missions are now a bit hard for the Spy again, and it needs more playtesting and tuning, but it’s definitely already interesting and fun to play for both roles.

Current stats for Courtyard look like this:

Game Type Total Games Spy Wins
 all  420 172 (41%)
Known 3 14 10 (71%)
Known 4 32 14 (44%)
Known 5 18 6 (33%)
Pick 3 of 4 63 27 (43%)
Pick 3 of 5 14 8 (57%)
Pick 4 of 5 90 28 (31%)
Any ? of 4 15 4 (27%)
Any ? of 5 174 75 (43%)

You’ll recall there there are currently three game types in SpyParty, “Known n” where the Sniper knows the n missions the Spy will try to accomplish, “Pick n of m”, where the Sniper knows the m missions available, but not which n ones the Spy picked, and “Any n of m”, where the Spy can choose which n to accomplish opportunistically during play, rather than having to pick them ahead of time.  We’ve started abbreviating these k4, p4/5, a3/4, and so on in the beta chat and forums.

As you can see from this table, the different modes have different levels of handicapping between the players.  I’ve just gathered these numbers from all the games on the Courtyard map, so this is totally ignoring skill differences, early games where players were just testing out the map, and the like.  But, it’s still interesting to see the balance.

Unfortunately, as you can see, the Any game types are missing their n parameter.  As I started gathering this data, I realized I’d screwed up and left that number out of the database for Any game types, so I can’t tell if the a?/5 games are a3/5 or a4/5, which is a bummer, because it makes a big difference in difficulty for the Spy and Sniper.  I’ll probably have to ignore old Any games when I do real ranking with this data.  I’ve since fixed it,1 and although there aren’t enough games with the new correct data yet to be statistically significant, here they are:

Game Type Total Games Spy Wins
 all  46 16 (34%)
Known 4 9 0 (0%)
Pick 3 of 4 15 9 (60%)
Pick 4 of 5 1 1 (100%)
Any 3 of 4 1 0 (0%)
Any 3 of 5 1 0 (0%)
Any 4 of 5 19 6 (31%)

Chat Rooms

Soon I will be opening up the beta, and this (hopefully) means a lot of people will be playing SpyParty simultaneously, at least towards the end of the closed beta when I send out the rest of the invitations and into the beginning of the open beta when anybody can sign up and play immediately.  The old lobby had a single room, and when 10 or 12 people were in there chatting, it got a bit hard to keep track of who was talking to who and what they were saying.

So, I did the simplest chat room design possible, with the goal of load-balancing the lobby if there were 30 or 100 simultaneous users chatting.  I basically decided to put all the room creation and multiple-join/leave commands on the chat console, and have the GUI only allow you to select a single existing chat room at a time.  This way advanced users can hang out in multiple chat rooms and make new rooms, but newbies can just join one and chat and play a match without thinking too hard about it.

The jury is still out on whether the current chat rooms work very well, and we’ll have to wait until I invite more people in to see if they solve the load balancing problem, but they’re certainly slightly confusing at the current density.  I tried to make sure joining “Headquarters” (the default room that’s always there) was easy enough that you didn’t have to think about it and it acts just like a single room lobby if there aren’t many people online, but I didn’t want to dump people automatically into a chat room for fear of causing problems when the game was scaled.  We’ll see how it works out.  I foresee a lot of changes in this code and UI as the number of simultaneous users goes up.

One change I made shortly after releasing the feature was adding a “Created by <username>” line in the chat room description.  Since users can create any rooms they like, this will at least keep people honest, or at least culpable!  Before I added this players were creating rooms that sounded official, which was funny but probably fraught with peril.  I also don’t support hidden rooms or password protected rooms or anything yet.  I’d like to keep the community from segregating as much as possible for the time being.

On the subject of chat, I really need to do something soon about my text rendering code, it is incredibly slow right now:

checker: /fps
SpyParty version v0.1.2202.0
19.869 ms/frame (fps: 50.33)  sort self - current frame
zone                                                     self     hier    count
 checkerlib::simple_font::DrawStringOrthoPixels       18.6377  18.6377    54.78
+chat_display                                          0.3964  16.6585     1.00
 SwapBuffers                                           0.2445   0.2445     1.00
+IdleFinal                                             0.2400   0.4846     1.00
+_global                                               0.0582  19.8692     0.00

Logging Performance, etc.

There were a bunch of other smaller fixes, one of which other programmers might find interesting:  I use the spypartyhelper.exe to write the log files now, rather than having the main spyparty.exe write them out.  The helper has always done the crash dump management (using a modified version of Google’s Breakpad) and the auto-updating privilege escalation, but now I also have it handle logging, using a named pipe from spyparty.exe.  The reason I made this change was some machines (like my main development machine) would happily write out the logs in the main process without affecting performance at all, even though I had commit mode turned on for the log file.  I used commit mode so if the game crashed, the log file would contain the most up-to-date log entries, so when the helper grabbed it and put it in the crash dump report and uploaded it to my server I could use it for debugging.  However, on some machines, the commit mode logging would take hundreds of times longer, and I couldn’t figure out what the difference was between fast and slow machines.  What’s worse, it became clear that a lot of beta testers were assuming the game just loaded slowly, which subtly (or not-so-subtly) affects how you feel about the game, even though all the time was being spent writing log statements.  Once I realized people were suffering with slow load times, I knew I had to fix it.

The weirdest bug I fixed involved the Spy playing the cough animation as soon as control was taken from the AI.  The cough animation is supposed to be played when the Spy bails out of a conversation too soon after saying “banana bread” to contact the Double Agent.  I added the cough because some people were cheesing out and running away from the circle before the contact animation had finished, and it was too hard for the Sniper to spot this glitch.  So, the cheesers got a big surprise a few builds back!  But, it shouldn’t be happening in a new game if you haven’t even done anything yet, and beta testers couldn’t get a good repro.  Well, after a bunch of debugging, it turned out I wasn’t clearing a timer in the Contact Double Agent situation on new game, so if somebody was shot within 2 seconds of a “banana bread”, then since they were moving at the start of the next game but the timer hadn’t expired, the situation decided they’d cheesed out of the conversation and made them cough.  Yay for cross-game bugs!  I guess it was the ghost of the previous victim making the Spy cough!

Mail Deliverability

Man, sending mail reliably on the internet today is fraught with peril.  I’ve been trying to figure out how often a beta invitation or confirmation mail simply doesn’t get delivered, or gets dumped in a spam folder.  So far, I’ve struggled with and been victorious getting SenderID and SPF working, and I’m still wrestling with DKIM, but I am confident I’ll prevail…eventually.  Of course, all the major mail clients use different standards.  I guess I could just pay a mail sending service to handle this for me, but it just seems crazy if I’m forced to do that to get mail delivered.  Then again, I’ve wasted a ton of time dealing with this, so maybe it would have been worth it.  I tend to think the learning and understanding I get from working through these problems myself is worth the time investment, but that could easily be rationalization, who knows?!

Update:  I think I have prevailed in the email war.  I’ve got all the major email providers2 verifying my DKIM and SPF records.  I had to battle php messing up newlines which confused the hash, SELinux disallowing postfix from talking to opendkim, and whole bunch of other randomness.  My only problem now is with AOL, and their postmaster just admitted the problem was on their side and they’re fixing it.  Hopefully that is the end of any spyparty.com email going into the spam folder, woohoo!  I sent out 500 invites tonight to celebrate, which brings us to  2011-05-11 06:35:21 US Central Time on the in-order invites.3

  1. I’ve tested the results with beta member “tytalus”, who was very patient! []
  2. Out of 20k beta signups: gmail 56%, hotmail+uk+live 14%, yahoo 7% aol 1% []
  3. I do 60% in-order and 40% random in each batch. []

Gigantic PAX West 2012 SpyParty and Storyteller Gallery!

I believe I have survived PAX West 2012.1  I also know I would not have survived without the absolutely incredible volunteer help from some of the absolutely incredible SpyParty beta testers:  Kamil Chocimski (hunter4hire), David Olsen (canadianbacon), Roger Hanna (ardonite), Dennis Clark (dbfclark), and Kate Welch (kate), not to mention John Cimino and Alice Lee!  One of the downsides of doing the depth-first, accessibility-later development style is that you have to explain your game to everybody who comes to play, even after we’ve made them read the four-page manual.  Booth duty for this game is incredibly tiring, and is basically impossible without lots of help, so I can’t thank them enough!

hunter4hire, dbfclark, and canadianbacon decompress after a long first day of training PAX attendees to play SpyParty!

This year’s Guest Indie, Storyteller by Daniel Benmergui, showed incredibly well both Saturday and Sunday mornings, and players were lined up to play it.  You can see some of the great reactions to Storyteller in the pics below!  Daniel also was on booth duty and did a great job as a SpyParty tutor!  I think I may have him do the tutorial voice; the Argentinian accent lends the directions a certain gravitas.

So, have a ton of pictures!  If you were at PAX and came by the booth, see if you can spot yourself or your friends!  Oh, and check out Jeff and the other awesome enforcers who helped out throughout, but especially at booth breakdown…the PAX enforcers are incredibly helpful!

Continue reading ‘Gigantic PAX West 2012 SpyParty and Storyteller Gallery!’ »

  1. I have no idea what is going to happen next year, when they’re supposedly extending it to 4 days; it’s already life-threateningly brutal to stand in a booth talking for 3 days! []

What topiary should I put on top of the new Courtyard map?

The true purpose of this post is to test the new CAPTCHA system I installed, after getting sick of reCAPTCHA letting in 40 spam comments a day.1 So, if you’ve never commented on the blog before, please chime in below so I can test that it works.  If you have commented before, then you shouldn’t notice anything different and shouldn’t see the CAPTCHA.  Edit: it looks like the new CAPTCHA works fine, thanks everybody!

The ostensible purpose of this post is to brainstorm what topiary shape should go on top of the center pillar in the new experimental Courtyard map, pictured here:

Radial pseudo-symmetry, not good for getting your bearings.

I will talk more about the design of this map in the future, but for now I will just say it’s really hard for the Sniper.  The radial pseudo-symmetry is not good for memorizing the statues…you can’t really get your bearings, and I’ve made it so the Sniper can just keep going around in circles so there’s no feeling of beginning or end.  One playtester at PAX got unlucky and all three statues were the Maltese Falcon, and he said he just kept going around in circles trying to see a different statue shape!

So, I figure I’d put a topiary animal or something on top of the pillar.  It can’t have radial symmetry, so a Christmas Tree or whatever is right out.  I thought a banana might be funny, but it might lead to, uh, perception problems.  So, any ideas? 

  1. I think it was cracked a couple weeks back, or the bad guys have really good OCR algorithms. []

The New SpyParty Character Art Style

Update: the second batch of five characters have been revealed.

I am incredibly excited to introduce the new SpyParty character art style!

I am also incredibly excited to introduce the new SpyParty character artist, John Cimino!

John’s the one who has ironed his shirt.

Full disclosure:  John has actually been working full time on SpyParty since September of 2011, we’ve just kept it a secret until we could reveal the new art style with a cool selection of characters representing some of the diversity we’re trying to achieve.  It’s been hard to keep this quiet over the past year, and when somebody would ask me if I was making the game by myself, I’d answer “yes” and rationalize it on a technicality, since we haven’t actually put anything John’s done into the game itself yet!

So, it’s true, I have doubled the team size.  This rate of growth simply cannot be sustained.

John and I worked together on Spore.  I would develop some crazy mostly-broken system for skinning or painting or animating the creatures, and John would do amazing and beautiful things with it, and not hate me afterwards.  After six years of that, I figured our working relationship had been battle tested, and so when I started working on SpyParty full time, I also started working on John full time, to try to get him to come work on the game.

John’s the perfect artist for SpyParty, because he’s amazing at all the artistic disciplines, from concept through modeling, texturing, and animating. While most of the industry is following movies and specializing roles to the point where an individual artist might only rig, or do textures, or animate, John can do it all.  You need someone like that for indie games, and to have somebody this talented in all of those areas is amazing…I am incredibly lucky to have him, and so are you, since he’s going to help make the game the kind of “perfect jewel” that is the reason I’m indie in the first place.

The Style

We’ve spent months and months defining the style of the characters, and I’m really happy with the results.  We call this style naturalistic and illustrative.  With a game like SpyParty, where the design and gameplay aesthetics are all about deep subtlety, it was important that we hit that level of  subtlety in the visual aesthetic as well.  I want the visual and design aesthetics to work in concert to deepen the game.  We also needed to skirt the Scylla of realism and the uncanny valley on one side, and the Charybdis of slapstick cartoon exaggeration on the other side.

We call the result naturalistic and illustrative because it’s based on nature and sound anatomy, but without cleaving too close to realism, using instead the simplifications and stylizations perfected by classic illustrators, people like J.C. Leyendecker, Harry Beckhoff, Robert McGinnis, and Herbert Paus.  We’ve spent days deciding exactly which wrinkles to include and which to elide on a just-past-middle-aged eyelid.

I want to explicitly thank my good friend Dan Zimmer, who publishes the incredibly beautiful Illustration Magazine, for introducing us to most of these illustrators.

Period

Talking about these classic illustrators brings me to questions of time period, and namely, “When does SpyParty take place?”  The answer is, “yes.”

It’s important to me that the game’s visual design be timeless, not retro, not futuristic, but ambiguous, where it could be happening at any or all time periods.  If you look at the collection of spy images I posted way back in September 2009, it’s very easy to visually date some of them, and I want to avoid that. I think 60’s retro spy-fi is as cool as the next guy, but it goes in an out of fashion, and it can be subtly alienating even when it’s in.  My biggest inspiration for the timelessness we’re going for is Pixar’s film, The Incredibles.

The art direction of that film is, well, incredible, and they did a great job of keeping the actual time period ambiguous…it could be the 50’s, it could be today, it could be the future.  I want a similar vibe for SpyParty. If you follow the game, you’ll know there is gameplay associated with checking your watch.  There will be characters who check wrist watches, characters who check pocket watches, and characters who check mobile phones, all integrated visually and mechanically in the same game.

Fashion

I’m guessing John and I spend more time on the clock than most game developers do discussing hair styles and shoes.  Since SpyParty is not your usual orcs and space marines fare, we end up going to fashion magazines and celebrity red carpet blogs for a lot of inspiration and reference.  I have a growing pile of tearouts from Vogue, W, In Style, Harper’s Bazaar, and Esquire.  Here are a few images I’ve collected to give you a flavor of the kind of things we look to for visual inspiration:

The Characters

Who are these specific people we’re revealing now?  They’re going to have to remain mysterious for a while.  Each character in SpyParty will have a dossier that will eventually be important to learn for playing at advanced levels, due to upcoming game mechanics involving individual behaviors and histories.  For now, these folks are visual stakes in the ground as we explore the diversity of different races, genders, ages, abilities, sizes, and orientations that we’re going to put in the game.

These characters don’t even have names yet.  For a brief while I considered using some of the names from the current beta characters, but I decided that would be disrespectful to the current guys, who have gone above and beyond the call of duty for the game.  So, in deference to their service, I plan to “retire the jerseys” of all the current characters when the new art goes in.  The new characters will have all new names, and I might crowd-source some of them, so put your central casting hats on.

The Game

And with that, we come to the question of when these new characters will go in the game.  The short answer is, “not for a while.”  These are characters that will eventually go into the game, but they’re currently at the initial stages of the very long production pipeline that comes with doing a high-end 3D game these days.  These are high-poly-count models, and these images we’re revealing today are rendered with a non-realtime renderer.  They still have to be decimated, and rigged, and textured and normal mapped, and animated, and the game engine needs to be redone to support higher quality characters like these.  They are a long way off, sometime next year at least.

Finally, we come to the most important question of all, “What if the new art screws up the game balance?”  I will not let that happen, or at least won’t let that happen for long.  The deep and balanced game design is the absolute top priority, so if for some crazy reason I simply can’t get the game deep and balanced with different art, I will throw it all away and ship the ugly art that’s in the game now.

But, I don’t think that extreme will be necessary.  I think we can make SpyParty a deep and subtle and beautiful game. Even once the game engine is ready to support the new characters, I will introduce them slowly in their own maps alongside the existing art, so we can make sure they don’t mess things up. I’m sure there will be some stumbles along the way, since perception is one of the key mechanics in the game and the new art will clearly impact perception, but we’ll figure it out and keep the game on the path to a competition worthy player-skill game.

What about the environments and objects?  Those visual styles are yet to be determined, but they’re going to take a lot of time and thought, the same as the characters.  The foreground-background separation is a key part of SpyParty, and the art style of the environments and objects needs to reinforce that.

Gallery

So, here are the new SpyParty characters.  We love them and hope you do too!

Update: Their placeholder names until we name them for real—in order of appearance in the group shot—are Mr. C, Ms. B, Mr. A, Ms. E, and Mr. D.

Wallpapers

Here are high-resolution high-quality (read: large file sizes) images rendered out at various aspect ratios, so they should be suitable for even the largest desktop wallpapers, if your computer would like to wear them for a while.

Aspect Resolution Images
4:3 1600×1200      
16:9 2560×1440      
16:10 2560×1600      

And here are the high-resolution high-quality versions of the portraits.  They’re 1000×1500 resolution:

    

That Yoda Quote About Opening Betas and the PAX West 2012 Guest Indie

Do or do not...there is no open beta yet.

My plan seemed like a good one at the time I made it:  get the lobby server backend scalable, use the remaining 12595 uninvited people1 to test that scalability, and then open up the beta, all before PAX West 2012.  Then, when people played SpyParty at little old booth #3002, instead of telling them they had to sign up to get in line, I could just tell them to go home and start playing immediately!

Alas, it turns out I ended up more on the try side of Yoda’s quote than the do side of the quote.  I still think it’s a good plan, I’ll just have search-and-replace “PAX West 2012” with some other upcoming event2  in the Official Plan Documents™. 3

As the clock started ticking down, I started scrambling and contemplating worse and worse hacks to make my deadline, until I finally took a step back and realized I had way more to lose by screwing up the open beta launch (and potentially the wonderful community that’s developed in the beta so far) than I had to gain by opening it up before PAX.  Plus, given how close to the wire I was getting, I would have been busy on the show floor in the booth without internet while something terrible could have been happening with my server.  Trust me, I want to open it up, but I want to do it right, and it looks like that’s going to take a little more time.

So, the new plan is to finish up the rooms support I’ve been working on, and invite bunch of new folks in over the weekend to test it, but then hold off on more invites until I get back from PAX.  Then, when I’m back and slept, I will try to open up the beta.

And, since I never like to keep things simple, I think as consolation to myself I will try to add a new map and mission to the game for PAX.  The new map is going to be called Courtyard, and it’s a patio area surrounded by shrubs, with a small plant right in the middle with some statues around it.  The Sniper can move in a loop the entire way around the map, but the plant in the middle obscures at least one of the statues at any given time.  The new mission was actually suggested by beta tester monaters, and it’s a really great idea:  Toby carries around an item on his tray, and you can chose to take it as your Spy move when taking a drink.  The Sniper needs to notice the item is gone, and then backtrack to who took a drink recently.  It’s simple, but rich with potential.

Storyteller, the Special Guest Indie

When I was thinking about this post, I realized I have had or been a guest indie game every PAX.  First, in 2010, we had Jonathan Blow’s The Witness in our booth.  Then, I was the guest in Firehose’s booth at PAX East.  Last year, I had Marc ten Bosch’s Miegakure (and almost AirMech) as the guest indie in the SpyParty booth. 

This year, continuing in that tradition, I am hosting Daniel Benmergui’s Storyteller Saturday and Sunday mornings, 10am – 11am, booth #3002.  This is the same great little corner booth I had last year.

Storyteller delights me as a player and as a designer, and I can’t wait to see where Daniel takes the game, and how the PAX folks react to it!  Daniel will be hanging around the SpyParty booth all weekend if you miss the 10-11am playtest slots and want to talk to him about his awesome game.

See you soon!

 

  1. The current beta signup scorecard so far:  19340 hit submit on the beta signup, 17114 confirmed, 4705 invited, 1842 joined. []
  2. maybe “IndieCade 2012”? []
  3. Hint: there are no official plan documents. []