The First 999 Beta Tester Usernames

There are now 999 people registered in the Early-Access Beta.1 Here are their usernames:

aaboyles aaerox abettega ablemonkey aca15 acbgardner aces acron actionpotential adam adman aerox2 aethyr agent agentmidnight agradula ahalay ahnimal aisugirl akuda alessandro ali alkapwn almostpeaceful74 amagineer amar amassingham amonjura ancillas andrew andy angellion01 angryamish angryjaffa angrywombat ankhwatcher annoyedguy anotheruselesspwn antoine antonio applemint apreche arbaard arbiter ardonite aresbece arthol ashenke astroblack astrognat attackslug atticusfinch austin authoralden avian avianflame awakewise awayman awesome awesomex awkwardhero azazoth azeltir bambu85 bassguitarbill bater bbrocker bc5389 bclose bdgolfer81 beanopolis beavens beckett007 beffy belak beljerd ben benny bepedos berbank beric berndie90 berryalice bespectacledgent betabetamax billiechar binarychimp biodork bishop bizzkaj bjorngylling bkyoops bl00dw0lf blabber blackheart blacklamb blaine blargnblarg blimeycow blind blindcicero blindprophet blinkity bluenator bluewins bnetter12 bobbesmcgee bobo bogger bom351 boner bracken brackhar brawnyfanta braytek brettbot bronn browncoat768 bslinger bubonulus bucksexington bukit1 bull bungeeman bunnyfoofoo bureaucromancer burgly burguois buxx cafebagels caincc calitar callguinness camgoeswild camperbob canadianbacon candafilm caphector capnlee captainduh captainquincy captgadianton carrington casey castor cathlin causeofdeath15 caustic cba123 chan charliechan charliehuge checker chris chris2c2 chrisbell chrisfranklin christianwins chuckgriff chvyvele cian cigumo ciminator ckarinja clarkson101 click cliff cloversquirrel clovest clownbaby clownzilla clubley2 codarl codyme1 cogbyrn cokelogic colemip coleopteran coleslawesome colinnorthway collinc colourmeindigo commandercup commandersven communistbloc compositeredfox congodave cornpalace corvon coubs38 cpsabotage crackilator cramill creasy cru31ty cskilbeck cube cukydoh curieous cyberpirate cyclpsrock d1a2r3k d4rkfr4g dacool561 daddykingkong daeke daenrr daethwing188 dagstur daheadhunter dak722 damatman dan danblanchard dandyshlonglegs danger dangerskew danicia danielben danigold dariusk darkcephas darkernukes darkswordmaster darktrooper darrentorpey darthbutternutz dash daveycraney david2crazy dbfclark dbltnk dead deadbolt deadjoe deep9x defendership deftmunky dekuplatformer desdewd develin devp dexan dfan diamondae dieffenbachj dienekes00 diffusion digikrynary dinozzo dios dippyt dirk dizzyduke dj2scoop dla26 doc docace doctorwhy docyahoo doddzy39 doenan domofizz doneval dookie dorkus1218 dotreptile doug drdos dredgman drmuncie drqqq dukrous dumbitdown duncank dungeonduck dutchsanta duwilli dvorak eddie edgeblend eggs eight einhandr eirabben eklyptz ekombokom elcarlito elendira eljenso ellbent elpicante emanon emil emmick4 emuspawn emwurst engagequadlaser enragedviol ento ephargy erariga escapecharacter esperento esuark06 etran1 etsd eversoslightly evolved exayden ezithau fain faithbleed falcon9xr falconred fancyfrog fapsauss faryn fatheroctopus favocado feenox fenir fetthesten finners fischl flamingarms flanjygo foo forspareparts fortninety foxblock fredthedeadhead french fringe frondo furay fuzzyspo0n fweez fyre gabriel gabrielsp gabumon2 gahd gamersdg garythellama geekgrrl geekynerd geibys geiko generalchaos gerardi getaway geveeso gimmefiction ging girricane gkyl gmandm goat6star6of6astaroth goblineat2 godfatherbrak godfire godzchozenson goinbananas golds golzernurf goodboy goofus gordon gordonfremen gouda graywolf greger grempkin griffinmcelroy grifta67 grimwtf grinspork gryphus1 grythean gummikana guncannon gunner1905 gunslingernz guylum haganehylian hajav halcyon hansoneg harrisonthefan harrylee hasmarth hatebobbarker havochq hawk haze hdfisise headbuddy hehateme henningdc hermituk hernismall herrdoctor hinges hobbes2424 hollygolightly holodoc homeless hop3less hothmonster hulkmaster hunter4hire hutty211 iamcarneiro iax ibis idrisguitar iiatlas ikubiakius ilzxc imaginarydinosaur immortalwombat imthedude ineffable ininja132 inker intero iocat iou1username ironhive isamu itsatrap itsmyyard itt0 j0be jacksonaces jake james1221 jaqenhghar jason jasonbourne jcmoore jedexodus jedimasta jeffatrad jeffnosanov jello jennylynn jentaro jeremiahbritt jetlizard jguzikowski jjb273 jleet82 joakim joeaverage joeprunz johnnemann johnnyr jonmm1776 jonoabbo jorispz joset305 jrmtz85 ju34u julian justin justinliew jvnane kai kalei50 kami kapit karabinerkarl karaidon karibou kate katya kb0m kbd keith kelemvor kellywallick kennyal kevin keysosaurus kidko kifil killercow kkriller klinefelter0 kmonarq7 kmuncie knifeninja kobolt kramff krow007 krpiper kujiun kunstbanause kwhiggs8 kyarourin kyoun lackey lagarathan lala lameduck lamzor lancelake larakin launchbay07 lavinashfield lawiin lawlercaust lazz leaveittoreaver leichelle lemming liamh101 lightishred linkz lioninacoma liquidindian liquience ln3000 loddy logomorph loki lopert lordking loshon lovick lrrr ltfragbox ludusvan lusomai m0r7if3r maarch macintoth mackinder maddragon maedas malbios malfunktionv2 maniacalv mantis marcham93 marciantobay marcnotmark markfnd markrestart markus marlowe mathewcrichton matt mattseligman maverick21xx maxemoe mazazon mbrewski mcc meanbrian megadestructo megapixel23 mehall merc mercuryn mercy metaregress metronome49 mevica michael michibuenkosai micole miggins mike mikecruz mikegbrown mikejmika mikella mikey minecraftboy3437 mistadad misterfix misterpanky mizzrie mmcdhoward mmorier mmustapic mogri moo moof moomanibe morfran morganic mosse motorcrash mrbanana519 mrcompletely mrhoten mrmember mrpants mrphatjared mrprice33 mrpropellerhead mrssaurbaum msarge mtb mukow murray mvandevander mylene namelesssniper nara nateventure nayon7 nayrev naysayer nazzerac nefiorim nelsormensch nemesiscw nemo nerdmancer neuman nexai nicemissmayonnaise nickmac863 nicktheflanders nicta nille niteowl noc noclip noethis nogon noise noisia noonan noonchild norskov northernlion nosferatastic notbengilbert notch nuhuhnoway nukednova nunix nyo odeyin odie ohsickkbro okibi olninyo omar omgmyface omnomonsouls onik onyxmoron opticalshadow or1g1nal1ty orahpajo ossy otakushi overlordror ozzyj88 paarre palm partario pastorpeej patrick patyrick pauzle pawng pax217 pbobzebuilder penumbra peter phaazoid phase phatjax pheranova phobon phokal pickard12 pigo pikes piratepwnsninja pixelfenix pixeltitan pixistick pnomoth pobblepop poison5htp pokeadot polycube popabawa porousnapkin postgoodism powerlanguage pparks76 prall prelone prios proverbialbones psponge psytog pubtongue puppet purplevanes pylons qq qualityjeverage quanimal queenkid1 quickfics quirken rachel rachet20 radchek rage ragegoblin rager ragtag21 rainault raphaelo rapscallion ravi ravie77 raypaik rebeleleven redbeardedowl redivy redrocket redrum remy remzo rennix resdog reusablebox revdancatt reverendanthony rex rick rift rinzai ripply rj rnw159 robinaire robotpants rockliao rocky rodomont roel1976 rogermoore rook rorrim ross rowdynun ruhmann rullerr rune ryan rym sabones sachiarias sagemichael samuel samuelcole sarahnorthway sardiax sarge sargonas sarrick saucepain saurbaum sawchuk1 sb00ya scnigey scopesofter scottish scotto6uk screwjack scud seansf seeking segolectrick seiromem senisan sentry sepherimorth sequel seregrail7 sgtfury shakewell shatter1313 sheepofheight shurp sigmatheta simon2776 simonbob sirblastalot sirlaitier sk82712 skapig skrymir skuchachii skuzeeii slack slats sleepyendymion slyvr smacktubby snakeaes sneakypeaky89 snoken snowmaneater soda solidplasma someguy sonicblastoise sonicboom soolseem spencerrohan spikerama spinnermaster spinyeti spliter splodeybaloney splodn spouwny spy spychao999 squirtle srjenkins starkiller2000 stdizzie steakeatsbabies stents sterling steve stockdogfactory storm stu stuart superdraw swenson sylver symlink syrinx t3kk taco taker talensis tam tantfarbror taquelli tautology teddydief telephis tembac tenebrous tenjouutena tenochtitlan terrytate testing texanfromin thealmightydan thebogdan thechicken thecze thedirt thedoctor52 thedoomsmith thegeckoj thegerf theharribokid theinfamousnolan thejoshfox thelaughingman themantis themightyyeti themosb thename thenew110 theotheralex ther thesocialsolipsist thief thirdordeal thornsten thoseposers thsandman tiefooz tigerseye85 tigershark tilton time5 tlabresh tobybot tokion tomeng1997 tomqbui toomuchpete tpwt tralan trauts travis treadd tree treythalomew trickery triplelex trouserdemon tubybuny tulse twie twinbolt twistamafoo twoflower tylerthedesigner undeadnub undisclosed uneddy vadid37 valir valuedrug vanlo varanas venom veturi vidvandre vincentdpc vinnyboombatz vorrik vortexmortinghan voxhumano vs vutdevuk wantedbob warlock watertower webjr weebee886 weeble wesley weteor whatthegeek whispous whitewolf whizkid wiggy wikzo willdude william wilson2k4 wiltwin wirapuru wish wkerslake woodensplint woof woomstick woseseltops wubang3r wubby wyrmling x13ucketheadx x1pyvr84 xav xemu xenoacid xlom3000 xspjigo xtreyu xzalander yanndos yazzflute yegg yobani yokelbloke yorudy yourdad zacaj zachwlewis zafo999 zaktilu zapdsl zen zerooneinfinity zerosyphon zerotka zerozshadow zgilly zhiwiller zoink2000 zoneghost zynux

  1. Updated numbers to be clear: There are 13788 people signed up as of right now, 1081 registered (I invited more in after this post), 2430 invites total sent, for a 44% registration rate…I’m still inviting people in slowly until I get the lobby scalable. []

Deductive Depth Jamming, Beta Balance, and Megabuild Todo List

I was killed.

Wow, I have been busy, and the Early-Access Beta todo items are piling up! I will just get right to talking about stuff, no introduction necessary!

The Depth Jam and Deduction

Recently, a small group of us did an intensive game design retreat we called the Depth Jam, during which I dug into the deductivity of the Sniper gameplay.  I want there to be some deductivity on the Sniper side, so the player has some method or process he or she can step through to eliminate suspects and not just completely drown in information, but I don’t want you to be able to completely grind out who the Spy is by a series of rote operations, like in a game of Clue.  Since one of the aesthetic themes for SpyParty is about “making consequential decisions with partial information”, it’s very important that the Sniper not be able be 100% sure of the Spy’s identity, unless the Spy screws up and the Sniper sees a hard tell.  There are a lot of places where deductivity comes into play for the Sniper, but an important one is the highlight/lowlight mechanic.

If you’ve read the documentation, you know that the Sniper can highlight and lowlight people at the party to manage levels of suspicion.  This is purely a Sniper-side mechanic: the Spy doesn’t know for sure which characters are being tagged in this way or how, except that the Sniper’s laser has to hit the character to tag them, and this is visible to the Spy.  The current version of this mechanic has two levels of highlight above neutral, and two levels of lowlight below neutral.  The original intent was that you’d want to vary the amount of suspicion or lack thereof based on how the party is progressing, and for the most part, this worked.  However, gamers are very good at optimizing things, and soon one of the elite players realized he could use these five levels as a 5-counter, using both the highlights and lowlights to count total number of visits to the statues and bookcases.  Depending on the missions selected for the game, this Sniper would have a pretty good idea of who had to be the Spy.

From a game design standoint, this kind of player behavior is a delicate thing to direct in a player-skill game.  Should the game help the Sniper do this bookkeeping because the player is going to want to do it anyway?  Or, does the existence of multiple levels actually encourage this kind of bookkeeping?  Should I nerf the mechanic, or just make the NPCs go to the statues more often so the bookkeeping is less relevant?  It’s very hard to know the answers to these questions, but after thinking about it for a while, and talking to the elite players, I decided I needed to deal with this in a few different ways, and it will be an ongoing iterative design challenge:

  • I proposed nerfing the Sniper’s mechanic to a single level of highlight and a single level of lowlight.  Snipers could still use this as a 3-counter, but that’s less valuable, and each individual highlight or lowlight becomes more consequential.  On the flip side, it removes the cognitive load associated with trying to figure out if you’re going to single- or double-highlight, which is subtle but significant.  It’s also a lot cleaner controls-wise.  This was the first real nerf, and the beta community responded well to the idea.  There was some grumbling, but players posted thoughtful critiques and analyses of how they thought they’d be affected.  I realized I was going to have to test this thoroughly, but it was easy to isolate and I chose it as my question for the Depth Jam.
  • I decided against changing the NPC behavior in the short term, but in the long term, instead of simply increasing the probability that NPCs will visit the statues (for example), I might make it so some NPCs end up going to the statues a minimum number of times.  However, either of these is a very complex change, because if an NPC is at a statue, it means they’re not at a bookshelf or in a conversation, so the entire flow of the party will change.   This is a very nonlinear change, and it’s hard to predict what will happen.
  • I can also change the missions that require the Spy to be in “deductivity-susceptible situations”.  Keeping with the statue example, at the Depth Jam we ended up modifying the Inspect Statues mission so that instead of requiring three visits to the statues, the Spy could also inspect the neighboring statues if they’re not being held by and NPC.  This allows the Spy to trade off duration and number of visits, and requires Snipers to have a feeling for both these quantities.  There’s also a discount on the amount of time it takes to inspect each additional statue in a single visit, so you’re encouraged to inspect more than one.  Finally, it makes the middle pedestal the most valuable statue to visit, because it allows the Spy to inspect either side, so characters going to the middle statue are a bit more suspicious.  I love these tradeoffs, and these changes felt great when we tested them.

To give you an idea of how we went about testing this stuff at the Depth Jam, here is a screenshot of a special build we played.  In it, I had the computer automatically increment two counters over the characters’s heads, one for statue visits, and one for bookcase visits, so the Sniper didn’t even need to click.  This was never something I’d release to players, but I wanted to see how the game felt if the deductivity was “turned to 11”.  Especially before the Inspect Statues changes, you could definitely just shoot (or at least watch) the person with the highest numbers.

Shoot Danger P. Johnson, he's got the highest numbers! Except he's the Ambassador.

I’m very happy with both the single level of highlight/lowlight and the Inspect Statues changes, and they’re going to roll out in the next build.

Beta Balance

I haven’t run detailed metrics yet, since I’m scrambling just to keep things humming along for players, but I did get curious about whether the game is even roughly balanced right now.  Qualitively, I’ve been surprised by the seeming consensus in the private beta forums that the Sniper is the harder side to play.  In the private testing I did with Ian and Paul, it seemed like at elite levels the Sniper had the advantage, but I wasn’t seeing people complaining about this, which I found interesting.  Even more surprising was that players had settled on Pick 4 of 5 Missions on Ballroom as the balanced game mode.  Back in the day, Pick 3 of 4 Missions on Ballroom was considered balanced, and even then we were worried about a Sniper advantage at elite levels. 

Because SpyParty is so intensely player-skill oriented, I’ve implemented a number of game types so players can handicap matches to make up for skill differences.  You can tune the Spy’s difficulty by choosing modes with more or less missions to accomplish, and giving the Sniper more or less information about which missions will be enabled.  Some modes allow the Spy to complete any small subset of the missions chosen opportunistically while playing.  Other modes require the Spy to divulge exactly which missions he or she will attempt.  A large skill gap in favor of the Spy can be handicapped by choosing “6 Known Missions”, where choosing “Any 3 of 6” makes up for a lot of skill on the Sniper side. 

Pick 4 of 5 is significantly harder for the Spy than Pick 3 of 4,1 yet people were playing it as the default mode once they graduated from Beginner Ballroom, so I decided to run some quick numbers.

The first thing I did was looked at the results of all games ever played in the beta.  There are four possible outcomes of a game of SpyParty:  the Spy can accomplish the missions, the Spy can run out of time, the Sniper can shoot the Spy, or the Sniper can shoot a civilian.  We call the first and the last a Spy Win, and the middle two a Sniper Win.  The results were even more balanced than I thought they’d be!

Total Games: 13238, SpyWins: 6494 (49.1%), SniperWins: 6744 (50.9%)

Whoa.

Okay, so this is great, but it’s pretty silly, since this includes every newbie game, every game where somebody said “shoot me because I’m stuck on the briefcase”, and the like.  So, next I decided to look just at the elite games.  I defined “elite game” as one played between the people on the leaderboard with more than 20 hours of game time.2  That part of the leaderboard looks like this:

The top 8 players on the leaderboard by time.

I did a few different queries here.  First, all games these guys played in the last three weeks:

Total Games: 1794, SpyWins: 826 (46%), SniperWins: 968 (54%)

This includes teaching games, which these guys do a lot because they’re awesome, and everything else, so then I narrowed it to all games they played versus each other in the last three weeks, so these are the most advanced games going on in SpyParty right now…and these guys are very good…I know this because they beat me routinely:

Total Games: 266, SpyWins: 128 (48.1%), SniperWins: 138 (51.9%)

Wow, again, that’s just incredibly balanced!?  I couldn’t believe it when I ran these numbers, but I’m super happy with them, and it goes a long way towards explaining why buxx said this to me in chat:

checker: "so, you've played 43 hours or whatever, do you feel like there's a
ceiling for you yet, or still going strong?"

buxx: "Skillwise, not even close, I still feel like I have a ton of room
for improvement"

I just feel incredibly lucky to have a game this deep, this early in its development.  I’m so excited to take it even farther…people in competitive game design talk about “300 hour” games, and games like Go and Poker can be played for a lifetime.  I hope to take SpyParty to those levels, or as close to them as I can get.

Finally, I looked at these players versus each other at a finer grain.  I’ll just post some rough numbers for buxx and ardonite, because they’re an interesting contrast:

      As Spy     As Sniper
  Total Games Wins Win% Total Games Wins Win%
buxx 32 23 71.88% 34 20 58.82%
ardonite 24 12 50.00% 22 14 63.64%

buxx is the top player right now, and he wins most of the time even against the other elite players, but especially as Spy.  ardonite also wins over half the time against the elites, but moreso as Sniper.

I can’t wait to delve into the metrics more in the future.

Todo

Due to the Depth Jam and other distractions, the todo list has been building for weeks.  I’m finally cranking through it, but I’ve dubbed this next build the “megabuild” because of all the stuff I’m shoving into it.  This is not the right way to develop software.  You should do more small releases, so you can test and isolate bugs, but I’m kind of on a roll and don’t want to slow down to make a build until I get some more stuff fixed.  I won’t do this entire giant list before releasing, but I will do a couple more days worth of work.  I’m afraid there are going to be bugs due to the number of changes, so it’s really the build after the megabuild that is going to be totally awesome!

  • misc
    • added matches and total match time to leaderboards
    • alpha punchthrough for binocs and timed text…draw after
    • kill “sleep too long” log message
    • put graphics and cpuid info in log, at least glext
      • pack cpuid into string in journal too
    • don’t make duplicate logins delete cache and crash, stupid and annoying
    • hittest laser to world for marking, except for window muntin bars
    • mission text in practice sniper mode buggy
    • terrible lowercase in username entry on login page
    • s/affordance/action/g in code
    • highlight/lowlight nerf
      • ctrl/shoulder slam all the way to highlight/lowlight
    • hysteresis on actions
      • if it’s present in the current batch, set the index (unless it’s been manually set)
      • if it’s not present, grey it out and fade it away
      • this needs a lot of testing, it was a complex change
    • clean up timeouts, wins, blah text everywhere in game
    • remove debug_state_transitions
    • check for pdf file association in setup program
    • need network test during greeting
    • invite beep in practice mode?
    • don’t hide mouse during sniper menus
    • put stats on match menu
    • mouse sensitivity config prop and readme.txt
    • do in-game update with a popup window instead of modal!
    • sell subliminal advertising in the crowd walla
  • endgame and results
    • not top suspects, just high/lowlights, filtering down cast
    • escape confirmation on results screen with settings
      • can take out the eat stuff and timer
      • make Last Results on the match menu? possible?
      • test invite cancel
    • OT confirmation, OT happens on sniper machine for a second
    • output game result into log
    • shoot after timer runout still records shot person
      • Shot person on sniper screen but not on Spy screen
    • escape from invite to game needs confirmation?
    • if sniper escapes while spy is waiting for results, game doesn’t end
    • need to record actions for spy when ai before control
  • briefcase
    • make briefcase a heavy pathing weight, not infinite
    • briefcase making characters float off ground
    • moving while putting down briefcase
    • stuck in COURIER_WAITING_FOR_SCIENTIST_HOLDING when ambassador has a book…not moving
      • need to put down the briefcase when the timer runs out!
      • dispose is broken, courier won’t put it down!
    • add pauses
  • conversations
    • fix interruption stuff to occasionally finish talk animation
    • people in convo circles by themselves can read book until somebody else comes
      • hmm, one frame of Read Book action, and immune to pause?
        • ahh, the listen stomps it, need some kind of “interruptable” flag on anim, or priority
    • can interrupt while taking drink…need to block
    • people need to leave during listen idles?
    • people going through middle of convo circles?
  • double agent
    • fake bbread not available when selected but not enabled
    • banana bread double agent signal…if da leaves while action testing converts to fake
      • need to have DA check to see if spy is action testing, and not leave convo if so
      • how to do override in double_agent.cpp?
    • double agent won’t go into circle during last minute – guarantee in last 30 seconds?
    • fake banana bread is default option over flirt
      • drink over conversation
    • need to have cancel behavior on bbread
      • okay – what to do here? person starting to talk is enough? short cough?
      • bad – cough as walk away
  • statue
    • new inspect statues design, can inspect statues next to you if not held
    • finish drink at or take briefcase to pedestal like bookcases
    • play sound when teleporting statue back, sorry ardonite!
    • swap wrong statue when between pedestals – /tmp/fraps
    • two people pick up same statue
    • bad statue action test is fastest, make it delay, or flicker longer
    • statue swap cancel makes it disappear
    • statue swap bad action test needs timer before swap happens
      • maybe bad swap doesn’t actually swap, it toggles it and back?
      • or, statue swap is too hard already so don’t make it worse?
    • good swap statue action test
      • need to prevent run out of time between good action test and swap?
      • its obvious to elite snipers, worse than hiding body…
        • make it swap when somebody else picks it up? too powerful?
        • make it instantly warp, not alpha
        • more than 5 seconds? cheesy way of buying time then…
  • bug ambassador
    • while watch check is happening, walking bug amb is not blocked
    • ability to bug holding book in one hand
  • bookcase
    • fix bookcase pileup – do vertical expanded shape
    • AIs wait a bit more randomly before leaving bookshelves
    • marking book on shelf doesn’t record character because not attached yet
      • do I want to support this even? have all books be grey on sniper?
    • change put book and get book to have start/end events too
    • idles in book watch animations, mix it up a bit
    • second book page turn? or just use the idle for a time?
    • make cycling books unified, right – blue, left – green, add red as double click, then grey
      • bookcases vary in color per map…need to standardize and make maya prop type
  • seduction at paintings
  • chat
    • window size, pos, borderless, maximized through chat commands
    • add @ with username completion in chat
    • color code names in chat
    • kill “bogger says:” in single line chat copy
    • history when typing chat line
    • add crlf to chat copy so notepad works
    • crash on non-text data in clipboard
    • hitting escape kills the chat message you’re typing
    • make it clear the first whisper went through even if got the away message
    • packet loss test on console
    • can’t run /fps command even without connection…but can do practice in lobby
  • manual & readme
    • put the latest manual images up, readme, etc
    • s/noob/newb/ in manual…ugh
    • documentation change to security agent
    • remove y button
    • inspect statues
    • highlight/lowlight levels and controls
    • add note about SpyPartyHelper.exe to the readme
    • note lag is only on sniper side
  • buxx feels watch check is underutilized…
    • add more time?
    • at paintings? in conversations while by yourself?
    • watch check with book
    • cancelling watch check needs failure or is animation tell enough?
  • zerotka list of helpful things for research
    • unlimited game time endless practice mode
    • ability to see all floor pads in sniper view
    • books come out same color as shelf
    • Seduction Target in sniper view
    • inability to complete missions or way to clear them
    • no back walls in Ballroom as sniper ( or transparent if that’s easier?) ( aka, i want to be able to see in from all angles)
    • camera track be a complete circle all the way around the ballroom.
  • bugs
    • intel problems
      • lobby message box bad z
      • key and mouse button drops due to shit framerate
    • fix the rare junked game bug
    • put more debugging code into the drinks.cpp coreanim crash
      • store things to locals to see, do memory readable check on coreanimation
    • phatjax crash in stun code, assert in log first
      • 0.1.1983.0-phatjax-7cs4v-e9SBihV1znwyvuFw.7z
    • lobbyserver leak – use backtrace
    • inviting phatjax after cancelled invite gives assert
    • assert !”what do to here?”, File: .\examples\lobby\lobbyclient.cpp, Line: 1798
    • fix DTScale behaviors, briefcase, waiter, have game clock
  1. Pick modes require the Spy to choose which missions to accomplish before the game starts, while Any modes let the Spy opportunistically choose during play. []
  2. Important note: this is actual game playing time, not time spent in the matches overall, or time in the lobby, both of which are way higher than this.  A lot of people like to hang out and chat in the lobby! []

SpyParty Beta Fan Fiction

So, uh, I have been a little busy lately.  I know it’s surprising, but the Early-Access Beta has lots of bugs, needs lots of tuning, and the (slowly) growing community needs lots of questions answered and lots of design decisions explained.1

I haven’t processed all the numbers yet, but some super simple database queries indicate I’ve sent something like 762 invitations, 357 people have registered,2 and 246 people have greater than zero seconds of game time.

These early-early-access people have managed to create a really wonderful community already.  As I’ve said before, the main reason I’m not just inviting all 13047 of you3 into the beta right now is the game’s lobby server and backend technology is not scalable yet, so everything would just melt.  However, there’s a secondary reason, and it may be even more important in the long run: growing a healthy community is a difficult and delicate thing to do, and a good community is incredibly important, especially for a game as different as SpyParty. Because there’s no in-game support yet for mentoring, or ranking, or cheat protection, or replays, or tutorials, or any of the important stuff that tries to keep player-skill game communities on the interenet from hating each other instantly, I’m counting on the beta testers themselves to be good people, help newbies, and teach each other to play better.  They are doing a fantastic job, exceeding even my very high expectations.  But, like growing a company, it’s important to introduce new people into the culture slowly so as not to overwhelm it. As the beta progresses, I will be posting lots of stuff from the private beta forums, including strategy guides, data analysis, opinions about tuning and balancing, and all that serious stuff.

This post is a little different.

Beta tester zerotka (otherwise known as Keith here on the blog and facebook) has been called the Jane Goodall of SpyParty, because he studies the NPCs4 and then writes about their behavior, sometimes uncovering serious bugs in my code in the process.  However, because he stares at the party so long…well, better to use his own words:

zerotka:  I had recently decided to go into practice mode and watch how the AI partied. I decided to start off with watching the waiter and how party members would react after getting a drink. I was hoping to find some tells so i spent quite a bit of time with it. I think after about the 10th or so game, i had to write a short-story-like-thingy. I had shared it with a couple other testers and they thought i should post it on the forums. I was hesitant at first, but alas, here i am.


Toby
The other day I had taken a few minutes and watched the waiter, Toby. 
I watched him from outside the ballroom.
He walked about, person to person, and offered drinks.
The guests had no respect for Toby in anyway.
The more i watched, the more overwhelmed with sadness i had become.

He would approach a guest and extend out his tray
And politely wait….
He received no form of acknowledgement. 
They all simply ignored him.

If they happened to be thirsty, they’d turn around,
grab a drink from the tray and immediately return to the conversation.
Not a “Thanks”, Not a, “How’s your day”,
Nothing. 

Sometimes, a guest would turn around to grab a drink
but when they saw it was Toby they would return to the conversation.
After i saw that, i..
..i lost control of myself.
“Don’t let them do that to you Toby!” I had screamed.
He was completely invisible to them.
They would even run into him!

Several minutes of constant disrespect had drained the life out him.
He began to believe what everyone was doing to him–He believed he was a robot, an AI.
If i had enough bullets, I’d shoot every one of those jerks for you Toby!
But i only had one bullet.
And even if i had enough to kill all of them, more would spawn to replace them.
A tear had formed in my eye.

I had grabbed my sniper and centered Toby in the sights.
He had walked toward the window and stared at me.
I could tell by his blank expression 
that his life had somehow spiraled out of control
And he knew there was only one way out of it.
I switched the safety off. 
I’m sorry Toby.

The tear had fallen down my cheek and onto the ground.
The glasses on the tray had crashed to the floor,
Guests had screamed and cowered in fear. 

Even though the spy had gotten away
I still felt like it was a small victory.

I hope in digital heaven, they serve you alcohol.


The real ending was actually me during the 11th game and shooting the first person who refused a drink from Toby.

 This thread, as you might expect, blossomed. 

sirlaitier: Here’s a haiku:

Security Guard
Can’t be bothered to squat down
Stands over the dead

zerotka:

I think Chris Hecker
Just forgot to put knee caps
On the character

 A few builds later, I snuck a little something into the game…it took a few days for people to notice.

Before and after fanfic inspiration!

The thread continued…

quirken:

♫Who’s the spy?
Oh sniper, don’t shoot me
Don’t shoot me no more
Oh, sniper don’t shoot me
Don’t shoot me no more

Who’s the spy?
Yeah

Oh, I don’t know why you shot me
I gave you no clue, but you didn’t care
So what is right and what is wrong
Gimme a sign♫

 

hunter4hire:

Memoirs of Virginia Vulpes
I’m not a rich person, and I don’t associate myself with them.
but when my best fried Girta, told me she has tickets to a grand opera, I couldn’t refuse.
When the day finally came, I put on my best. My orange Sunday dress.

We arrived at the theater late, and the opera was about to start!
how exciting, that it was, but not as exciting as the Intermission.
Guests flooded the veranda balcony for cocktails and cigars.
we walked through big french doors, and took a fresh breath in.
there were fine sculptures and a charming bartender, handing out 
cocktails and brandy.

Girta and I started chatting about the opera, and a few guests
have joined our conversation. That’s when I noticed something strange.
This young gentlemen seemed to have grabbed another gentleman’s high knee!
What was stranger, is that he didn’t react to it! Later I found he was an Ambassador of some foreign country.
Girta saw it too, and we just looked at each other puzzled, and we both knew, something odd was going on.

I strolled over to one of the bookcases, while Girta was fraternizing with a young fellow. 
I could see she was already infatuated with the young man. 
I was surprised to the amazing book collection, but then I saw that gentleman from before!
he was a few not a foot away from me, as he was looking at a golden statue of some sort of bird.
I tried not to stare, when he gave me a wink! and pulled out a similar looking statue from beneath his coat!
he quickly swapped the two, and whispered to me, “If you tell anyone, I will kill you.”
I stood there in shock clutching “Sun Tsu’s Art of War” in my hand.
my heart started to beat fast.
I took a deep breath and turned around. I saw Girta coming towards me, I couldn’t wait to tell her what happened, when suddenly a sharp quick sound of a muffled gun fired! 

I could swear the following few seconds lasted many minutes.

Girta… she took one step forward, and fell to her knees.
as she fell to the floor, her blood has started to spill..

Dear God…

My friend..

My best friend..

Who would hurt such an innocent woman!?
People started to scream as I saw that nasty man who has stolen the statue, flee inside.

The next day, I packed a few baggs.
I swore to myself and to Girta.. may she rest in peace.. that I would find that man.
and kill him, for I am certain it was him.

It was my fault…

He was aiming for me…

If I hadn’t gone to the opera, I would have never spot that man, doing his dirty deed.
oh Girta… I’m so… so… sorry.

I’m off to find your killer. I don’t know how I will find him.

But I must.

This is my last entry.

Then it started bleeding into other threads, like the one where people were discussing whether the Sniper should have a personification in the world outside the window, instead of just being a disembodied laser.

quirken: The sniper should be the silhouette of the banana suit guy that dances to the PB&J Time song. A bit of a quick mock-up for you all to enjoy. Obviously, the banana is not to scale.

And the inevitable response…

moomanibe:  ….The artist in me would not let me ignore this.

I’m sorry.

And a subtle reference back in the original thread…

zerotka: My quick rendition of what families feel like when the darn sniper misses the spy.

Make sure you click to read the article.

Okay, back to trying to figure out why the lobbyserver is leaking 130kb when it times out dead clients.

  1. or irrationally defended []
  2. which is 47%, and is very close to my most optimistic estimates of 50%, and I haven’t even sent retries for these mails yet! []
  3. as of this post []
  4. buxx immediately said “NPCs in the Mist” when this idea went around the lobby []

A Beta Chat Log and The Current Leaderboard

One of the best things about finally having regular players in your game’s beta is you get to watch the server logs for bugs, or just snoop on your players chatting with each other before and after games.  In fact, this is so addictive, and you learn so much about how your game really works with players by doing this, that I had to basically stop myself because I was sitting there all day watching the logs scroll by rather than, you know, fixing bugs.

That said, I thought you’d like a taste of this server voyeurism yourself, so I asked arbaard and dbfclark if I could repost their chats from a series of games a few nights ago.  These chats are great, because they show two very good players (both were at PAX 2010 when I first showed the game, arbaard was in the tournament, and dbfclark is the person who noticed that the line watching the games was getting implicit Sniper practice).  You can see them helping each other after each round, discussing what went right and what went wrong, changing the game types as they handicap the games, and sharing information so they both can improve.  Plus, they’re funny.

dbfclark hey
arbaard hia
arbaard *hiya
dbfclark what would you like to play?
arbaard anything’s fine
arbaard have you played much?
dbfclark yeah; you?
arbaard yeah a bunch
dbfclark should be interesting
Saved Game Results.
arbaard saw the tell
dbfclark alas
Saved Game Results.
arbaard got me!
arbaard what tipped you off? time dilation?
dbfclark I was pretty sure when you time dialated
arbaard haha
arbaard 5/6 is really, really hard!
arbaard feeling lucky?
dbfclark sorry, what did you do? gotta make it fair
dbfclark 5 of 6, right?
arbaard yeah I did any 5/6. I was just playing around though
arbaard I don’t think it’s very balanced for even skill levels
dbfclark ok, off we go
arbaard I was playing that with my friend who just started playing.
arbaard alrighty
Saved Game Results.
arbaard heh
dbfclark sigh
dbfclark what tipped you?
arbaard you were very interested in sculpture.
dbfclark yeah
dbfclark it was either that or seduction.
arbaard 5/6 is a little too hard for spy, methinks
Saved Game Results.
dbfclark well done
arbaard thought you had me when I bugged the amabassador
dbfclark you were definitely a top suspect, but I didn’t have my eye on
dbfclark you enough
arbaard not nearly as sneaky as I should have been.
Saved Game Results.
dbfclark damn it
arbaard I thought it was that black guy
dbfclark thought I was doing so well there
arbaard were you purposely trying to get me to shoot him?
dbfclark no
arbaard you got real close, making me think the AI glitched out on him and was just
arbaard invading his space
arbaard so I thought he was the guy
dbfclark banana bread just killed me? was it two double agents in convo?
arbaard because both you and him walked away from the window after I noticed we were at 4:00
dbfclark ah
dbfclark greed
dbfclark that’ll do it
arbaard no you were talking to the only double agent in a convo
dbfclark ah
arbaard plus, you were marked high suspicion
Saved Game Results.
arbaard god I love being fat.
dbfclark argh
arbaard being fat and a spy
dbfclark thought I saw a bug go down, didn’t
arbaard huge plus
arbaard hides those animations so well!
arbaard what did the yellow guy do?
dbfclark ok, something wonky is happening; my sound is gone
arbaard uh oh
dbfclark gonna restart
arbaard restart?
arbaard have you joined the steam group by the way?
dbfclark not really
arbaard It’s better than waiting around in the lobby
dbfclark well, I’m in the steam group, but I don’t have the overlay set up
arbaard oh
arbaard well that’s fine
arbaard that was only like a side-not
arbaard e
arbaard nope
Saved Game Results.
arbaard that was super unfortunate
dbfclark caught the tell?
arbaard she ducked while you bugged
dbfclark oh, crap
arbaard and your hand went in the wrong direction
Saved Game Results.
arbaard EVERYBODY
arbaard WAS IN MY WAY
arbaard I must have bumped into 5 people
arbaard and that damn waiter…
dbfclark yeah, but that was the second funny walk twitch I caught
arbaard that was me cancelling a failed banana bread
arbaard twice.
Saved Game Results.
arbaard nicely done.
dbfclark hah!
Saved Game Results.
arbaard oh darn
dbfclark sorry
arbaard that wasa supposed to be a perfect banana bread
dbfclark it actually was a pretty good one, I just had my eye on you
dbfclark you ran away
arbaard haha!
arbaard nobody picked up on that until now
arbaard I usually banana and run
Saved Game Results.
arbaard oh no!
dbfclark no idea where that came from
dbfclark why’d you shoot him?
arbaard hunch
dbfclark fair, happens
arbaard he was marked
dbfclark ah
arbaard then went blue, statues green
Saved Game Results.
arbaard haha
dbfclark crap
arbaard that was intentional.
dbfclark ?
arbaard perfect banana
arbaard when he came in.
dbfclark ah
dbfclark wasn’t why I shot him
arbaard oh really?
dbfclark though it helped
arbaard what did he do?
dbfclark drank too fast, I thought
arbaard oh, weird!
dbfclark sigh
Saved Game Results.
arbaard nope
arbaard changin it up high?
dbfclark fair
Saved Game Results.
arbaard ugh, so close
arbaard I should have played it cool for a min
dbfclark that’s why I shot you ;-)
dbfclark probably
arbaard yeah but did you see my awesome ambassador bug?
arbaard that was cool
arbaard gave him the briefcase and a bug.
arbaard hahaha
Saved Game Results.
arbaard nice try
arbaard that was sneaky
dbfclark cheaty cheaty — it’s usually a good opening move
dbfclark I was nervous about it — good to see my ners were justified
arbaard you just happened to beeline across the empty room.\
Saved Game Results.
arbaard heh
dbfclark sigh
arbaard check out how I transferred the microfilm
dbfclark never trusy my instincts
arbaard you see how I transferred the microfilm?
arbaard as the general?
arbaard it was pretty cool.
dbfclark I’m not sure I get it
arbaard (I did the book swap as your char model)
dbfclark oh, I see
arbaard :)
Saved Game Results.
arbaard f!
dbfclark jow
dbfclark joy
arbaard \
Saved Game Results.
arbaard WHY?
arbaard I WAS JUST SIPPING MY MARTINI!
dbfclark yep. sipping and watch checking
dbfclark sorry
arbaard that’s funny, I didn’t even add time
dbfclark yeah
arbaard I was just chillin
dbfclark I know
arbaard the statue mission bugged and I couldn’t complete it
dbfclark you were chillin’ nervously ;-)
arbaard I was gonna play it cool
dbfclark ah
dbfclark I also saw the woman with the briefcase go stationary
dbfclark sorry, I gota go do household things
arbaard alrighty
arbaard nice playing with you!
dbfclark thanks for the games! I learned a lot
dbfclark another time

I’ll do more posts from the beta soon!  I’m slowly inviting folks from the beta sign-up in now, and it’s working out great so far.  Lots of bugs reported, lots of bugs fixed, and people are playing a ton and seem to be having a great time!  Here’s the leaderboard as of right now, look at some of the play times and remember a lot of these people have only been in there a few days!

Seventeen and a half hours played in four days!? So. Awesome.

The Welcome Post and Tutorial Video From the Beta Forums

This is the Welcome post for the SpyParty Early-Access Beta forums, including the tutorial video I recorded last night, which will hopefully help the complete newbs I’m about to invite in from getting frustrated (and shot).

Welcome to the SpyParty Early-Access Beta!

This welcome post is going to be a living document, which is to say I’m probably going to accidentally leave out 97% of the information that should be in here. I’m going to edit it constantly, hopefully trending eventually towards leaving out only 95% of the information that should be in here!

When you figure out something I should have put in this post, you should reply to it and I’ll slowly merge the additional information into the post itself.

Getting Started

If you’re reading this, then you registered and logged into the beta website correctly, so the next thing you should do is download and install SpyParty! On your beta homepage you should find a Download Latest SpyParty Setup link. If you click that, you will get a download for the latest version of the SpyParty installer. Sadly, some newer versions of Google’s Chrome browser are claiming the file is malicious, which I really don’t appreciate, but I’m trying to work it out with them.

After you run this installer, you should have your copy of SpyParty installed, along with the PDF of the manual and the README.txt file. You should read those first before playing. Yes, I know, reading about games is boring and playing games is more fun, but SpyParty is a very different kind of game—so your previous game experience will not carry over very well—and it’s very early in development. It has a lot of rough edges and very little online help. So, please read those documents and this post before trying to play, or else I’m worried you’ll get really frustrated and not have a very good time, and that would make me sad. Trust me, you’ll have a much better time if you read the documentation!

After you’ve read the available docs, you should launch the game and go into Practice mode, and then Practice Spy. This mode has no opponent, and you’re not playing online, so you can take your time and figure out how to accomplish all the missions.

Here is a tutorial video I recorded going through Practice Spy, Practice Sniper, and Preview Spy Missions. It’s 15 minutes of me babbling, as if I’m giving you an in-person tutorial at a conference or playtest, and it assumes you’ve read the manual and README.txt. If you want to see the Sniper laser, you probably have to englarge it up to see the full 720p resolution, but even then it’s hard to see with the video compression artifacts.

You should make sure you can complete each mission in Practice Spy mode, including the variants on the missions (like Bugging the Ambassador while in a conversation and while walking, or Transferring the Microfilm both inside and outside the book), and do them within the time limit for the map. If you can do this, you have a good chance of winning your first game playing as Spy (against another newbie, of course!).

You should also do a round of Practice Sniper, getting comfortable with the controls, including how to shoot when the time comes. If you’re new to the game, I would not bother learning highlighting and lowlighting suspects yet, but just concentrate on being aware of who is doing what, looking for suspicious behavior, remembering which statues are in place, and the like.

You can also check out the Preview Missions option in the Practice Menu. This mode will allow you to see all the Spy tells looping forever, so you know what to look for as the Sniper.

Playing Online

When you finally do go on line to play, you should try to play people at your same skill level. There is no matchmaking or ranking yet, so you’ll have to look at the number of games played in the lobby stats to know who to play. If you have to play somebody way more experienced than you, make sure you ask them to mentor you during play, let you know what you’re doing wrong, and what you should be looking for. There are also a lot of ways of handicapping different skill levels, which I can talk about in a different thread.

Also, since the beta is still in its early days, there are not a lot of people with active accounts yet, so the lobby is most likely going to be empty if you just randomly log in. You should use the forums to make dates to play with others if you can’t get a pick-up game going, or use the newly created Steam group to find other matches.

You can also leave SpyParty running in the background in the lobby if you want. The default is to beep when a chat comes in and the game is running in the background, so this will notify you if somebody shows up while you’re waiting. Some of the other early beta testers use this technique!

At some point soon, we’ll start regular playtests at regular times. I need to figure out the best time for this, and I’ll probably run a poll here in the forums.

Learning to Play

Beginners should play the Beginner Ballroom map, with its 4 pre-selected missions (Bug Ambassador, Transfer Microfilm, Steal Statue, and Contact Double Agent). You should alternate between Spy and Sniper roles while playing this map. 

After 20 games or more of Beginner Ballroom, the Sniper should start winning more than half the games. When this starts happening, the Spy should feel like it’s becoming impossible to get all the missions done with the Sniper’s laser on you constantly. You’re now ready to switch from the Beginner Ballroom to the Ballroom. This is the same room and number of partygoers, but the missions are opened up for selection, and you can start playing the “subset” game types. The Spy should choose “Pick 3 of 4 Missions” in the Choose Game Type menu, and then make the same 4 missions available as you played in the Beginner Ballroom (meaning, uncheck Inspect Statues and Seduce Target), but then only choose 3 of them on the Choose 3 Missions menu. 

The Sniper knows which 4 missions are available, but not which 3 are active for the Spy. This subsetting means the Sniper can no longer camp one of the missions, knowing the Spy will eventually have to attempt it, and instead has to weigh the risks in devoting too much attention to a mission the Spy might not even have picked! Now things are starting to get interesting! Of course the Spy wouldn’t have picked the Transfer Microfilm mission, it’s really hard! But, wait, maybe the Spy knows the Sniper will think that, so it becomes the right mission to pick?! This is known as yomi in game design, and it’s awesome.

Once you’ve played the subset game types a bunch, you can feel free to move on to the other maps and the other missions. By now, you’re ready to help other new beta testers learn how to play!

Talking about SpyParty

You are welcome to talk about SpyParty as much as you want in public. You can record videos and post them to youtube, post on your blog, or twitter, or facebook about it, comment about it on gaming blogs, or mention it and your beta testing experiences where ever you like. 

I’m even totally comfortable with you talking about it if you don’t like it, but at least post a link here or send it to support at spyparty.com so I can take a look at your criticisms and learn from them.

These beta forums are private right now so there’s a place where all the beta testers can hang out with each other, report bugs, and know that everybody else they’re talking to has access to the game, but they don’t mean you can’t talk about the game and your experiences on the internet at large (of course, don’t repost anything from the private beta forum without the permission of the author, that’s just good netiquette!). 

Indie games need all the help they can get with word-of-mouth, so feel free to talk it up everywhere!

Thanks for joining,
Chris