The Remaining Early-Access Beta Todo List

Sorry I haven’t updated in a while, but the good news is I’ve been totally cranking on the Early-Access Beta!  I really appreciate everybody’s patience, especially since I’m so behind schedule on inviting people,1 but it’s getting close, it really is!

I have a zillion blog posts queued up in draft or idea form, but I don’t want to take any time away from working on the beta to finish any of them, so I came up with this (probably ill-advised) idea:  I will post the remaining items left to do before I can invite the first players to join the beta.  Then, instead of taking time to write new posts, I’ll just edit this post and strikethrough the items as I do them.  Sadly, as with most software development task lists, the items below are at vastly different time and difficulty scales, so they won’t all get checked off at the same rate, and they have an annoying tendency to spawn unforseen subtasks as one digs into them, so the list will grow occasionally too.  But, at least this way you can see my progress towards the finish line at a finer granularity than my intermittent tweets.

Even though I’m stupendously late, I’m pretty excited about SpyParty’s development right now, because almost all of the big tasks have been finished.  Stuff like auto-updating, crash dump reporting, the installer, and the security system are done, or at least beta quality.  Most of the rest of the stuff to do is the myriad loose ends that come along with getting anything ready for public consumption.  The two big remaining things are the invite-a-friend feature that I originally wasn’t planning to do for launch, but after your comments here on the blog, on twitter, and on facebook, I decided I simply had to add it, and the text chat feature, which is sort of stubbed in but needs to be improved, since communication is going to be an important part of the experience.  It’s going to be really rough to start with, but hopefully it will be good enough to get things started.

I’ve broken up the todo list into three sections:  the Website, which means anything you talk to through your browser, including payments and the private beta foums and homepage; the Server, which is the lobby, player and game database, and that sort of thing; and the Game, which is the thing that runs on your machine.

Without further ado, here is the list.  You can ask questions in the comments, but do keep in mind that time I spend explaining these things is time I’m not spending checking them off!  Also, these are just the tasks to get the first beta invites out, I have infinitely longer and less well defined task lists for later in the beta and beyond.  But let’s not think about those right now…

Website

  • invite friend to join beta, one invite per person
  • mail and homepage needs notes about whether you can talk about game during beta
    • please do, indie games need your help to spread the word
    • if you have criticisms, I just hope you’ll also tell me (post in forums or email) so I can fix them
  • invites
    • invite.pl
      • need to update the intInviteStatus, uncomment the execute line
      • do initial invites with email
      • change invite.pl to not need any email, and just take a count and invite the next group
    • cheating
      • many ways right now, please just don’t, will make me deal with cheaters now instead of making game
        • spectating
        • listening for control clicks?
        • even multiple people watching sniper side monitor
  • switch to CentOS 6
    • get backups in order, good test for this!
  • audit all the code
  • add user to announce mailing list
  • block test ipns from doing real work
  • leaderboard
  • test newline in display name? need to escape it
  • style cosign pages
    • login, login error
    • logout
  • change password
    • only want while logged in for now? yes
    • style
  • test cosign logout
    • definitely does not work in firefox the first time? wtf? look at the cookies?
  • beta homepage
    • style
    • stats
    • link change password
    • style rss
    • display nicer date
  • forums
    • edit account settings – disable change password & email address
    • update phpbb to 3.0.9
    • welcome message, introduction to beta
    • stats on profile page
    • phpbb how to report bugs
    • phpbb faq – update faq.php to add styles/<active>/faq/more_faq.php to the array
  • error_log in all php code
  • paypal note about anonymous payments, credit cards, etc.
  • retry-registration needs to display a page before going to paypal
  • mail with details of which cancellation on paypal error?
  • test paypal flow with non-sandbox
    • enable IPN, redirect back to page, etc.
    • what does cc bill show as outside of sandbox?
  • start downloading logs
    • forward mail? probably better than running pop
    • or upload to s3?

Server

  • when shutting down, don’t allow new connections, just reply with failure message
  • why doesn’t the stunserver work when resolving addresses?
  • test relay server, at OAK?
  • kerberize stun and relay servers
  • initially just show spy/sniper games played, so user name is displayed as checker (45/67) everywhere
  • upgrade krb to 1.9.2
    • client
    • server
  • write lobbyclient stress tester app that spews data at server
    • log in first sometimes
    • use known packet types
    • make this the lobbyclient app, and have it be console control as well
    • send message to all connections
    • don’t make this too general for now, fine to recompile for different stress tests
  • need to fix pointer output in log for connect/disconnect
  • send client state info to server for debugging?
    • yes, at game menu, playing, etc.
  • server database
    • async_db clear semantics for db return codes, reg/unreg
    • store game/match data to db
    • users records
      • ranking info
      • date stamp for login
        • last login, logout
      • $inc login count
      • $inc failed count?
      • cumulative time logged in! login/match/game times & counts
  • add usernames to journal filenames (urlescape!)
    • checker/test for testing
  • turn verifies in the lobby ctor into logs so can debug
  • clients only allowed one game journal per game id
    • don’t need the random number anymore, given session id in filename
      • overwrite file on multiple submissions
  • async_krb5 and async_db error log…have a varargs Log and pass it, also for game
  • finish updating to new protocol
    • client<->server
    • client<->client
  • hmm, track memory usage and make sure we’re not leaking
    • output to log file occasionally?
    • info mallinfo – dev/test/mallinfo.cpp will work on linux
    • GetProcessMemoryInfo
  • async_krb5
    • clean up code
    • disable all the built-in accounts? or leave them randkey?

Game

  • “game” -> “match” in ui
  • handle errors in client<->client authn
  • switch to — for command line parms?
  • windowed maximized borderless
  • network time sync?
    • it can lag by 5 seconds, which plays fine but seems terrible, better to run Zach’s simple net sync code
  • merge reliable packets
    • ooi in reliable packets
  • test motion in joy ps3 driver
  • make a list grid mode for the chooser, or just obey tabs?
    • then display other players in lobby and their ranks
  • want to display release notes during autoupdate?
    • have lobbyserver fetch them?
    • displayed while downloading, option in main menu
  • send gl versions and cpuid during login?
  • need to version check on clients
  • journal match id on client and server
  • net pause – pause is a nice thing, no?
  • test keys disable
  • figure out what stuff to collect in the journals, careful of machine name, etc.
    • no marketing, or sharing (might publish anonymous stats)
  • add the appropriate command line parms to the –help! window stuff, etc
  • fix chat
    • /me /e[mote] str – print “username str”
    • /played /age – print playtime stats
    • /? /h[elp] – print commands
    • /w[hisper] /t[ell] /m[sg] <username> str – private message to username
    • /r[eply] str – reply to last person who whispered me
    • /retell str – send to last person I whispered
    • /away /afk /dnd [str] – displays str to anyone who whispers me, /away to cancel
    • /time – lobbyserver time and local time
    • the chat text is totally unreadable with those colors!
    • /fps – basic net and video info
    • completion, cut & paste
  • support esdf, y invert, config screen
    • if not fully remappable keys, mention ablegamers list in readme and say will comply soon
  • logging
    • async_krb5 and async_db error log…have a varargs Log and pass it, also for game
    • log printf output to file instead of console
      • and gzip and send to server?
      • chat messages to console?
      • convert to use log function instead of stderr
    • disable logging by default
      • or, log to file always for now so crash dump can upload it instead of asserts log
      • log to pipe and store in spypartyhelper’s memory instead of file?
  • update docs/README.txt
  • put the character name in highlight text? try it.

2011-11-14 18:02:07 – Checked one off already, although I must admit I did the minimum necessary to get it working.

2011-11-17 18:25:17 – Grindy bug fixy day, but finally got the async server db thread semantics clear.

2011-11-30 13:09:31 – Okay, I think the server database stuff is all done, games are saved, results are saved, the player records are updated, etc.

2011-12-06 13:59:23 – The ugliest lobby ever?  Maybe.

A team of UI designers worked on this for 5 years.

2012-01-05 11:18:54 – I am calling it for the chat system.  I didn’t get to /ignore and /stats and whatnot, but /ignore is not relevant until there are annoying people playing, which I’m sure won’t be the case for a while, and /stats are all displayed in the lobby chooser, so it’s redundant for now.

2012-01-25 16:41:04 – More red strikethroughs!  Getting really close!

2012-01-26 15:08:46 – Getting the PS3 DualShock controller to work on Windows is so much more work than it should be.  Start by installing the totally unauthorized MotionInJoy drivers! Then mess around with configurations.  Don’t even think about getting it working over BlueTooth unless you have certain USB dongles.  What year is this?  Oh well, it works:

Well, at least now I can say I support 360, PS3, and mouse+keyboard.

2012-02-03 14:24:10 – Finally grinding through the website tasks, which should go pretty quick…*cough*.  Here is a screenshot of the saddest page on the blog:

A page you don't want to see in your browser.

2012-02-07 14:27:18 – It’s the worlds ugliest Personalized Early-Access Beta Homepage™ ever!

Well, at least it goes with the ugly lobby.

2012-02-13 14:37:57 – The loneliest leaderboard…

These guys have beta access already and they're not playing more than one game each?! What's wrong with them?


  1. Let’s just agree not to mention my original June 16th estimate, okay? []

70 Comments

  1. GP says:

    This is really cool. I didn’t make it in the secret signup early beta list, but I hope I can get someone who did to shoot me an invite. I’ve been following this game for a long time, and I can’t wait to get a chance to play it. 

    Question: is there a remote time frame of when this will be released (any release: beta, 1.0)?

    • checker says:

      Everybody will get an invite who signed up, not just the super early people, so don’t worry if you can’t find somebody to help you jump the line. I’m aiming for 30 days for the first invites, but I’ve been terribly wrong before…

    • GP says:

      Oh yeah, I forgot that you were going with paid beta. Good stuff. 

    • Bjartr says:

      Looking at this list now I’ve got to say that your earlier estimates were ridiculous. Unfortunately you missed out on the first wave of the hype machine because of it. Not to say it won’t be an amazing game, it seems that the game you envisioned quite above the scope implied in your dev posts, which explains a lot of the delay in hindsight. But experiencing it from the other side it just looked like many delays and no progress. I’m happy to see you have a very concrete idea of what is necessary to release.

    • checker says:

      I’m not very worried about hype, and I’ve never been good at estimating.  But, that’s why I did the sign up thing when I announced the early-access beta, so people could register their interest and then I could contact them later.  If I’d just announced it and not taken signups, then yeah, it would have been a waste of energy.

  2. Awesome. I was beginning to wonder what happened to the game.

    This gigantic dump of change’s and features is just really cool, you should do that more often ;)

  3. Evan Peiperl says:

    I just want you to know that I think I speak for all of us when I say THANK YOU for making a public access beta. You really didn’t have to, and while I love Minecraft’s openness with its community, I don’t think every game has to do that now; I know it’s really what the developer wants to do with their game that’s important, so it means a lot to me that you would go to the trouble to open your game up like this. I hope we can help you make it the best it can be.

  4. dfan says:

    invite.pl??? What is this, 1995?

  5. Wej says:

    “Let’s just agree not to mention my original June 16th estimate, okay?”

    Hey! You are still on track, if you are going off of Valve time =P

  6. noclip says:

    You gotta escape a lot more than newlines. A good start:

    s/[^\x20-\x7e]//

    A more sensible one for usernames might even be something along the lines of:

    s/[^a-z0-9]//i

    • checker says:

      usernames are actually /^[a-z][a-z0-9]{1,31}$/…that line is just a note to figure out what I’m even planning on doing with display names, they’re currently not used anywhere, but yeah, they’ll need to be fully sanitized

    • Comrade says:

      Might want to add spaces in display names. It’s a personal pet peeve that most online games block spaces… but allow underscores. What the crap, mates?

      Example: “Gandalf_the_Gray” (dumb) (underscores = no thanks)
      Example 2: “Gandalf the Gray” (good) (spaces = yes please)
      Example 3: “Ninja-Assassin” (acceptable) (hyphens = possibly yes, if used responsibly)

      But yes, I think letters and numbers only are a good start, but allowing hyphens and spaces are also good, as long as: You can’t have more then three, and you can’t have more one one consecutively, and you can’t start or end with one.

      I haven’t fully learned RegExp syntax so I don’t know the formula… but pseudocodely, it’d be:

      type: hyphenOrSpaceType = [' ','-']alpha     (hypens and spaces have to have a letter after them – not a number)[alpha]{1}[hypenOrSpaceType, alphaNumerical]{0-30}[alphanumerical]{1}

    • Comrade says:

      Formatting messed up. Psuedocodely, it’d be:

      type: hyphenOrSpace = [' ','-']alpha

      [alpha]{1}[hypenOrSpace, alphaNumerical]{0-30}[alphanumerical]{1}

    • checker says:

      Yeah, there are two names, the username and the display name.  The username is just letters and numbers, it’s your login name, and you can’t change it once you pick it (at least right now).  Your display name is going to be what’s displayed normally, and that can have spaces and whatnot.  Initially I’m just going to use the username everywhere, but eventually it’ll be your display name everywhere that makes sense, or both.

  7. Prios says:

    Let them cheat so long as they report the results openly, I’d say.
    The object of a beta test is to try to break the game now (in various ways) so that it will break less later, after all.

    • checker says:

      Yeah, I definitely plan on having a Month of Cheating or something in the future where I encourage it, I just don’t want people to do it from the very start, because I have so much other stuff to do first. But yes, I will have to deal with it at some point.

    • Wej says:

      Sadly, people will cheat from the very beginning. Lets hope they can’t cheat hard enough to completely break the game (they probably will). I guess it is better to say, lets hope they can’t. That is what I am scared about.

    • checker says:

      We shall see.  If it’s a problem, I’ll address it early on, but I’m hoping that people will be cool in the very early days of the beta when things are raw.

    • Wej says:

      I kind of like comparing this style of game to Starcraft, very competitive. In the first 2 leagues (bronze and silver), cheese (or an “easy win”) is very common. No matter how much we hope people will not cheat, they will, just for a bigger internet penis. I really hate to say that, but it will happen. I really hope it isn’t that bad. But I agree, lets worry about it if/when it becomes a problem.

    • checker says:

      I’m fully mentally prepared for it when I open the flood gates, I’m just hoping the initial invitees will be good sports.  It’ll be a good sociology study, regardless of what happens!  :)

  8. jordy says:

    Thank you, too all those people with friends.. the delay is greatly appreciated!..

    And your estimate better be wrong with 30 days, cause I’m not sure I can wait that much longer!!

  9. Ryan says:

    Woo! Looking forward to this. Hoping you’ll be at PAX East next year too!

  10. jordy says:

    I solemnly vow not to cheat.. until the gates have been opened for the plebs to join! In all seriousness though, I really doubt the first few players cheat, and I would imagine there will be some sort of core community be established in which you can arrange matches. Keep in mind with small numbers matches will be fewer and cheaters will be more easily recognizable, so cheating would be a bad idea if you intend to keep playing this game.

    You should also really place adds, with this todo-list I could provide you with an excellent income..

  11. jason says:

    Good to hear. 30 days…sounds like a possible holiday release! Also read your article on free-to-play, and I have to agree with you. Either paying model can work, but I think there are too many games out there that are free-to-play just because a developer/publisher thinks they can be, not because they are designed that way. Also, if you just stop working on the game because tons of people paid up front, no one will buy your game in the long run, or purchase future games from you.

  12. Josh W says:

    Just read your twitter on the side of the page, but don’t have it myself.

    If you don’t want to work out points, but do want to have ranking, then you could either use one of chess points systems, or a similar iterative ranking system, eg everyone starts at 500, moves up or down based on the difference between their current score and that of the person they beat/lost to.

    Or you could create a grand matrix that records everyone’s win/loss ratios, then do some cute analysis on it to see if you can produce a global ordering!

    • checker says:

      Yeah, that’s what I mean by ranking algorithm. You have to be able to feed it a single number (or ratio) for the game result, and that’s what I’m trying to avoid deciding on right now (mostly because scoring tends to warp the game design, we saw this at the PAX tournament last year–which I will eventually post about–where people would run the clock down letting the AI control the Spy just to get a single point they needed).

      For now, I’m probably just going to display the player’s game results as (spy wins, spy timeouts, sniper wins, sniper losses) until I can figure out what I want to do here.

    • Adam says:

      It sounds like you may be overthinking the ranking system a bit. Partial credit for either player for any reason should be completely out of the question. The game has very clear win/loss conditions, ranking based on anything but wins and losses seems completely unnecessary. I would actually go as far to say that a ranking system that involves partial credit would be incredibly detrimental to the experience.

    • Keith says:

      Doing it as a tie seems fine to me. The sniper failed to ID the spy and the spy failed to complete all the missions.

    • checker says:

      I’m not sure I believe it’s possible to overthink a ratings system for a competitive multiplayer game.  :)

    • Phil says:

      If you make it a tie if the timer runs to zero, then the optimal spy strategy is to never try to complete the missions and let the A.I. control your character till the end of the game. Look at the outcomes:

      1.1 The sniper shoots and kills a civilian (spy wins)
      1.2 The sniper shoots and kills the spy (spy loses)
      2 The sniper doesn’t shoot anyone (spy ties with sniper)

      Outcome 1.2 becomes VERY unlikely when you’re not doing anything ‘spy-like’, it pretty much turns it into a spin of the roulette wheel with odds stacked in the spy’s favour. I think Chris has mentioned in an old blog post how inaction on the spy’s part has to be a failure-state otherwise most games will end up super boring.

    • Comrade says:

      I’m in favor for seperate leaderboards for the Spy and Sniper, and the unified leaderboard being based off of your rank in both sub-leaderboards, and not be point-based. The sub-leaderboards are the point-based ones.

      Sniper shoots Spy: Sniper wins by successfully killing the spy. 3 points for sniper.

      Time runs out: Sniper wins by making the spy inactive. 2 points for sniper.

      Spy accomplishes missions: Spy wins by successfully accomplishing his goals. 3 points for Spy.

      Sniper shoots civilian: Spy wins by confusing the sniper. 2 points for spy.
      The real problem, from where I’m sitting, is not the delberite running down of time, but the “point farming” of instantly joining a game as a sniper and shooting a civilian to give the spy points.

      (Repost because crikey the formatting sucks on these comments)

    • checker says:

      Yeah, the “point farming” thing is something I’m going to keep an eye on.  It’s going to be single-account per player, so people won’t be able to make dummy accounts to cheat up their mains (without paying for another account, at least), but I’m not sure if that’s enough to prevent it.

      It’s very hard to predict how these things are going to play out.

    • checker says:

      The first thing I’m going to try for fixing the “Spy timeout” case (after launching the beta) is to have people start leaving the party after the time runs out. I’m not sure yet whether I’m going to have it so the Spy simply can’t leave, so eventually it’s just the Spy in the room, or if the Spy can get out and keep the current missions or that’s how you force a tie or something.  I’m probably going to try the former first and see how it plays.  I will also probably have to put a timer on the AI control, which I don’t really like, but won’t be too bad, since the feature is there so people don’t get immediately shot, and you’ll still be able to “act normal”, you’ll just have to actually act, which is probably better and more true to the game anyway.

    • Joseph says:

      I like that idea. Maybe you just can’t leave until you’ve completed all the objectives and then leaving (with all the objectives completed) is how you win the game.

    • Comrade says:

      That sounds fun… but who wins if you complete all your objectives, and then get shot on your way to the door? =)

      I mean sure, it’s a sniper win, but you did successfully poison one dude, bug another, contact a secret agent, and transfer hidden messages. Even if death, you still furthered your country’s causes harming the sniper’s country.

    • checker says:

      Yeah, I like the fiction of it, but that would really suck to be shot as you went for the door, and that would be a pretty big tell.  Maybe I’ll make that a handicapping option to make the Spy’s game harder.  There is a 10 second timer after the last mission that only the Spy sees, so they have to stay alive that much longer so they can’t rush the last mission (like in Jenga, the pile has to stay up after the last move).

    • Joseph says:

      There are lots of ways to do it. That’s part of the reason I’m looking forward to beta. To see how the game is shaped as time goes on.

    • checker says:

      Well, you will definitely get your fill of me changing the game during beta, the list of stuff I want to try out is endless!  :)

    • Josh W says:

      Ah yes I can see the problem, to an extent both the will wright strategy (random guess, go again) and the “put the controller down” strategy are sort of defying the core contest of your game, which as far as I can tell, is to conceal spy behaviour within normal character behaviour, and to discern the difference between the two.

      On that basis my gut responce (although one brewed over a few days!) would be to make both of those a draw. The incentive then would be for the sniper to save their random shot for the last few seconds of the game, because then they would be loosing nothing if they failed, and would have had the maximum amount of information to make their decision.

      On the other side, the player who doesn’t do anything with the controller, who actually walks away and doesn’t involve themselves in the game at all, ends the game with no change in their score, which sort of makes sense as they haven’t been playing!

      This brings up other problems, which I seem to have lost-my-nice-post-about thanks to a browser crash!

      In brief – against a more skilled opponent, or in certain matchups of strategic style, the odds tend towards a loss, and the chances are that she is likely to gain more from additional time played that you are, therefore if you are point-maximising your goal must be to minimise her advantage by going for a draw. On the sniper side, this folds into one simple incentivised action, shoot the first person who appears in your reticle, then move on.

      Not great, so my solution to this is to create a sportsmenship rating, which is based on the % time taken in control of the spy, and the time taken before each missed shot as a sniper. It would be a pretty emotive metric though! Especially as you’d then have to account for other forms of ratings protection like forced disconnection. Maybe it would be better just to record those metrics individually and let player’s filter their matchups on the basis of them?

    • checker says:

      I’ve thought about the “sportsmanship” rating a bit, but it seems much better (if it’s possible) to build the good sportsmanship into the design rather than rely on extrinsic things like ratings.  This stuff is really subtle, though, and I’m going to need to work on it a bunch to get it right once there are people playing every day.

    • Phil says:

      @Josh W: You said you’d make the ‘will wright strategy’ end in a draw to encourage people to play within the spirit of the game, but in doing this you’re promoting the exact opposite. First, without the draw opportunity,taking a random shot in a party of 15 people gives you the following odds: 1/15 chance of winning, 14/15 of drawing. That’s fantastic odds, because there’s zero chance of losing! If I played that game I’d take a random shot as sniper every single time.

      I wrote about why timeout needs to be a loss for the spy (certainly not a draw) in a comment above.

      One thing new players might not realise until a few games played is that the sniper should never feel obliged to take a shot before the timer runs out. If you’ve kept your eyes open the whole time and you’ve seen nothing particularly spy-like, or if you’ve not even heard the ‘banana-bread’ codeword, then let that timer run out for the win.

      Discussing strategy is is only making me more excited about the game. I can already envision trends happening in strategies, where ‘inactive spy’ becomes popular until people work out snipers just have to be more hesitant with their shots. Then ‘quick spy’ becomes the norm because people find the first few minutes of the game is when the sniper is least attuned to the environment.

    • jordy says:

      “Discussing strategy is is only making me more excited about the game.” Me too!! That’s why I’m trying to refrain from it..

      I’m wondering though how the game will play out once people are over the initial hurdle of in-attentional blindness while playing the game.
      Chris mentioned one of his sniper testers, got exceptionally well after watching and helping at a PAX-boot and could spot the spy more often then not. And as far as I know this discrepancy between the sniper and spy has not been brought back into equilibrium so I can’t wait how it will be after 50+ of play and which strategies will evolve..

    • Josh W says:

      My reason for suggesting it is a little odd; games that give you no feedback quickly become boring. Suppose you followed that strategy for a few weeks, you’d probably put the game down and do something else, because nothing would be changing. In my idea before I didn’t even count draws, I just kept people’s points score exactly the same. So basically, you’d load up a game, shoot a random person, game ends, new game, shoot a random person game ends etc.

      Why would you play a game like that? You can’t even jokingly go for the worst score. The game doesn’t remember your action, it’s not recorded anywhere, you don’t even get people grumping at you over lobby chat, it’s psychologically null. There’s a small chance of getting a better score, like a slot machine, but I have the feeling that there are other more satisfying avenues for people who are happy to play slot machines. And so long as you have some kind of filtering system to exclude people from play who have very low sportsmenship metrics, then there is a way to stop them from just slowly ticking up their rating over thousands of games.

      The only people who will stay are those who actually want to play the real game; the psychological game. Or those who come back and try to risk failure for the chance of actually succeeding at the game.

      Chess isn’t a bad game, even though you can just pick the opponent’s king off the board and run off with it, because everyone knows that’s not really playing the game.
      Distinguishing
      [playing the game=sitting down and interacting in any way with a computer system called a game]
      from
      [playing the game=using that system to engage other players in challenges]
      seems to me to be the same kind of problem: Recognise the exploits associated with your game, and seperate them from the core competative contest.

      Of course as I realised, the ability to force a draw is pretty helpful even if you are playing tactically; providing you are playing to win the rankings not just the match. The moment you fight someone better than you, then you’ll go for the draw, so long as you are protecting your score. Alternatively, playing with slightly better players than you or players of similar skill level but new strategies are some of the most satisfying way to learn.

    • Josh W says:

      This was @Phill, just for clarity.

      Another thing I’ve been wondering about though; are the automatic AI choices different when a player is in charge? Like for example are characters less likely to initiate actions if they are plugged into player control? In some ways Chris I don’t want you to answer that, so I can work it out for myself when I eventually get into the game! But it occurs to me that if that is true, that would help lower the inconvenience on the sniper’s side when the spy player doesn’t pick up the controller: He can still play “spot the least active party guest” for example. That way both players are saved from having their time wasted by the other player.

    • checker says:

      The Spy under AI control runs the exact same code as the NPCs, so they should be indistinguishable (ignoring yomi about which character the Spy might have choosen).  But, I’m going to put a timer on it so the Spy player will have to eventually take control and actually perform as an NPC if they want to run the clock down.  That will at least make it a player-skill thing.  This will lead to gameplay even in the run-the-clock-down case…for example, über-Sniper Ian noticed most Spies tend to start talking immediately upon entering a conversation, whereas the NPCs wait a bit.  *bang*  :)

  13. jordy says:

    How glorious will be the day once you cross away the entire sub-set of fix chat one after another in mere minutes!

  14. Nocturna says:

    Finnaly an update! Can’t wait!

  15. jordy says:

    IT’s pretty clear from the lobby server that you are a very talented programmer, my expectations have, somehow, grown in size for this game!

  16. Soupnazi says:

    A bit late comment, but that lobby actually looks quite nice. The color design is especially good.

  17. mr quackums says:

    been following the game for quite awhile now and would like to say that i love both spy party and your various “philosophy of gaming” articles/talks.

    now that’s out of the way:

    what if instead of various wins and losses being recorded (or in addition to) you had a system where the spy received 1 point for each objective he completed and if he completes all of them he gets the points but if he gets shot then the sniper gets the points instead (plus 1 or 2 more)? in case of a time out the spy and sniper would split the points.

    seems to fix the inactive spy problem (so no need for timer on AI spy). the only problem i see, and it may be a big one, is it would encourage the sniper to camp the spy and let him finish all but 1 mission to harvest the most points. could be fixed with variable mission amounts maybe.

    • skinnycoder says:

      Wouldn’t the reverse of that for the Sniper make more sense.

      Example: In a five-mission game there are five points to be earned. Each finished mission by the Spy equals one point. Partial credit if time runs out but the Sniper never fires (if partial credit is desired.) When the Sniper kills the Spy, he earns points equal to whatever would be left (and maybe the Spy then earns none.) So if the Spy completes two before shot, the Sniper only earns three points. That way you get more points for catching a Spy before he does these horrible acts: poisoning diplomats and such. 

  18. Joseph says:

    He’s definitely bugging the ambassador, not poisoning him. lol

  19. mr quackums says:

    …that makes a whole lot more sense.

    i must have been drunk or tired or something when i put that up.

  20. George B says:

    I’m one of those guys on the side of the road as a marathon runs by.  I’m cheering you on and holding out a cup of gatorade in case you need it!

  21. Adam says:

    I have a feeling you’re not from Kenya

  22. Ben says:

    Looking good! Keep up the great work.

  23. keith says:

    I’m not sure you’re going to actually see this comment but I thought id try anyway. How exactly do you plan on crossing off the cheat section? Seemed more of like a please don’t do this than actual items to cross off. I’m also curious into your plan of action for helping to stop the ‘cheats’ you listed. I don’t expect you to know how to deal with it yet, I’m just curious to see what developes as time goes on. Maybe some sort of reporting feature would work best for those.

    I must say that I think a portion of the deterent is simply being entertained. Its no fun to spectate a match where one person cheats. It just gives no entertainment because you know the outcome. Obviously there may be ‘point farmers’ but I think a huge chunk of people will play fair.

    • checker says:

      I see all comments!  ;)  I have no idea how I’m going to cross of the cheat section, really.  I mean, I have some ideas, some of which will work, and some of which won’t, and we’ll have to play it by ear.  I’m really hoping I don’t have to worry about it during the invite phase, and that all 11454 people currently signed up will be cool about it.  Once I open it up completely, I’m sure all hell will break loose, but hopefully I can nail the core gameplay before that happens.

  24. Buck Bukaty says:

    Hi Chris! Watching some people streaming your game, and it looks really fun and interesting. So, I just signed up for the beta… http://img.pokemondb.net/artwork/slowpoke.jpg
    Anyway, I was just wondering what spot I was in line, and perhaps when more beta invites will roll out. Thanks!

Leave a Reply


+ nine = 17