IGF Submission Submitted
I submitted SpyParty to the Independent Games Festival Monday night, 11 minutes before the midnight deadline! I was originally planning on also submitting to the Indie Game Challenge, the deadline for which was October 1st, but I couldn’t get the game working over the internet in time. However, even though I blew through that deadline, I’m really glad I tried for it, because it clued me in to how much work I still had to do to make the game “contest ready”, just from a logistics standpoint. It set me up for entering IGF with something that actually worked. Too bad about the $100,000 though!
The biggest part of becoming “contest ready” was getting the game working over the real live wild internet. All the playtests so far have been on a local LAN, but the judges for these festivals and contests aren’t always in the same room. I had to write a rudimentary lobby server and switch networking libraries to something that could do NAT traversal. After talking to a bunch of people, friends at Valve pointed me at libjingle1, which is used by Google Talk and Steamworks, and seems pretty robust.
Network code is a giant pain in the butt, and multithreaded network code is even worse, but I eventually got everything ported over, and a lobby server and client up and running. I did a fair amount of testing with the new internet code, including over my crappy 2G/EDGE cell modem, and with a friend in Tokyo, and it worked pretty well. I still have some problems behind really restrictive firewalls (the Oakland Airport free wifi and the Westin St. Francis lobby wifi are my current challenges), but it should work for most judges, I think.
Here’s the IGF page for SpyParty, and we even made it into the IGF press release, which is nice. There are a lot of great games in the IGF this year, so who knows what’s going to happen.
Here’s the README.txt in the SpyParty IGF submission for your reading pleasure. It builds on the Four Page Instruction Manual and assumes the judges will read that first.
SpyParty IGF Judges README Chris Hecker Hi, and thanks for playing SpyParty! I'm pretty happy with the way it's turning out so far, and I hope you'll find it deep and interesting as well. That is, if we can get you successfully connected and actually playing a game, which is going to be a challenge. Take my advice and never try to make a networked game. Ever. Also, there are bugs. Hopefully you won't run into any, but chances are you will, so there, I said it. I'll document the worst ones below. Have fun! Chris 2010/10/18 INTRODUCTION SpyParty is a player-skill espionage game about subtle human behavior. Right next to this file on your hard drive should be SpyParty-Manual.pdf. Please read that first, and then come back. It has a lot of information about playing the game, and even explains why you need to read a manual to play the game right at the beginning. So, if you haven't read the PDF yet, go do that now, and then come back to this file. Table of Contents ----------------- 1. PLAYING SPYPARTY 2. ADDENDUM TO THE PDF MANUAL 3. KNOWN ISSUES 4. RELEASE NOTES 1. PLAYING SPYPARTY You've read the PDF instruction manual, right? You've hopefully unzipped the latest zip file to a directory on your disk, and there should be a spyparty.exe, this README.txt, the SpyParty-Manual.pdf, and the content directory in the top level directory. Run spyparty.exe. If windows asks you whether to allow it to listen on the network, say yes. You should see the title screen, with the options Play and Quit. You can use the mouse and keyboard or Xbox 360 controller to play the game, select the menus, etc. "Escape" on the keyboard, or the "back" button on the 360 controller are the main ways of getting out of the current menu back to a previous one. Select Play. This will try to connect to the lobby server. Hopefully it will be able to do so. SpyParty uses both TCP and UDP, but it goes to a lot of effort to be robust about its networking, so let's hope it works for you. If not, consider reporting a bug to me so I can fix it. If there is nobody else in the lobby, it will say "Waiting for others..." until somebody else joins. It will also say your lobby name at the top of the screen, something like Player NNNN. You are going to need to tell your partner this number so they can find you if there are multiple judges in the lobby. All of this lobby stuff and internet play is brand new and really rough, so please bear with me. As an IGF judge, you need to arrange with other judges to play together via the judging forums or lists and whatnot. You should also get on some kind of voice chat system with the person you're playing, like Skype, Ventrilo, Mumble, Google Talk, or whatever. At the very least be on IM so you can exchange your player names. Once your partner joins, you should see him or her pop up as another player. Figure out which one is which, and select the name. This will attempt to connect you to your partner, and then the two of you will be in your own little espionage world. You can decide whether you'd like to be Spy or Sniper each match, and I'd suggest alternating between the two to get a feel for both. Plus, playing one mode makes you better at the other, so even if you want to specialize as a Spy, you should play Sniper so you know what you're facing off against and what's noticable and what's not. You can stay playing the same person as long as you want, or go back to the lobby to pick another player. IMPORTANT: As it says in the Instruction Manual, it is very important to play against people of your same skill level, since the game is so intensely tuned for player skill right now. The game has a very steep ramp, but it is fairly balanced the whole way. Some of my hard core playtesters have played for more than 10 hours, and it's still got legs at that point. Knock on wood. It is probably a good idea for total newbs to do two practice rounds, once as Spy and once as Sniper. Walk around as Spy, doing the missions one-by-one, telling the Sniper player over Skype which partygoer you are, so you can practice the missions and the Sniper can practice seeing and hearing the tells. Once you've done the missions, the Sniper should shoot you to practice that important action. Then switch roles and do another practice, and then play for real. This will let you figure out the controls without worrying about getting shot while you're doing it. 2. ADDENDUM TO THE PDF MANUAL There is a spelling error in the PDF manual. Of course, you know that already, because you read the manual. More Spy Tips ------------- - Camera management is the most important thing to learn. You always need to be able to answer the question, "Where is the Sniper looking?" Or, at least, pretending to look...which is to say, "Where is the laser?" You can always see it, so if you can't find it at first, it probably means the Sniper is hiding it above or below the windows. New players always try to make their screen look like normal 3rd person action games like Tomb Raider, where you're looking at the Spy's back, even if you're at the bookcase. This is bad. You should swing the camera around until you can find the laser at all times, so you know when and where you can do missions. - If you're using the mouse+keyboard controls and are using voice chat with your opponent, be careful about audible mouse clicks going over the chat channel...they're a huge help for the Sniper and can get you shot really fast. More Sniper Tips ---------------- - If you hear "banana bread", some people find it easier to look for and highlight all the people who are talking at the time, knowing the Spy will be one of them. However, some Snipers think it's hard to tell who's talking, and to get around the room fast enough. Some find it easier to instead simply lowlight everybody who isn't in a conversation at all, since you know they can't be it. Either strategy is a good way to pare down the number of people you need to watch, which is crucial to catching the Spy. Mouse and Keyboard Controls --------------------------- Both - Escape to leave the current mode. Shift-Y to invert the Y axis. Sniper - These are fairly normal FPS sniper controls. WASD or arrows to move and zoom, and mouselook. AD/LeftRight move you on a rail around the level. You can go around the corner, anywhere there are windows. WS/UpDown zoom in/out, as does mousewheel. Mouse movement controls your camera. The cross hairs in the middle of the screen is where your laser sight is pointing. Left and Right button are highlight and lowlight, for suspect management. Hold the shift key down to go into sniper scope mode, and Left click fires. Spy - Mouse movement rotates the camera. WASD moves you relative to the current camera direction. Left button is the "Normal" action, and Right button is the "Spy" action. If you see the + after the affordance, that means there's a pie menu of other affordances available, hold the appropriate button down and move the mouse towards the affordance you want, and release the button. 3. KNOWN ISSUES - If you can't connect to the lobby, hit escape/back and try again. The internet sucks. This should work unless you're in some really bizarre firewall environment, because it's just a normal TCP socket connection. - If you can't connect to another player, this may be an issue with blocking UDP packets. I'm trying to get a TCP relay server up, but it's not there yet. I use google's libjingle for NAT Traversal, and it's pretty robust and can usually get through. Please tell me if you have issues and what your configuration is, and whether you'd be willing to test new code. - The Spy and the Sniper are currently not absolutely clock synced. The game is incredibly latency tolerant, but when the Sniper takes the shot, sometimes there can be 2 of 3 _seconds_ of latency while the system works out what happened. This will improve, but it should always get the right result even if it's slow and painful right now. 4. RELEASE NOTES -- 2010/10/22 - ~r1177 -- Updated README Spy tips. Intel GMA integrated graphics fix for non-power-of-two textures and z LEQUAL bugs. We just finished level 3, and need to tighten up the graphics a little bit. Made the affordance pie menu slightly less horrible with the mouse. -- 2010/10/18 - ~r1169 -- Initial IGF build. Version 2 wire protocol.
- Hmm, it looks like they finally released the new 0.5 version, I wonder if they fixed all the same threading bugs I had to fix… [↩]
Seems all good and fine to me. 1 thing to bear in mind though, I read on another indie game forum that applied to IGF couple of years ago (node-def) that the jury had comments on the accessibility of the game and the learning curve. I was kinda surprised at that, cause the game was relatively easy to figure out, but apparently IGF, at least in that year, made a big point out of that, so if, by any chance, you don’t get main prize, which I would find surprising, it’s perhaps the accessibility thing.
And well, you’ll pick up that 100k on indie game challenge next year I’m sure!
I don’t think I have a chance at the grand prize, it’s too early and rough. But I think I have a shot at getting nominated for Design and for the “Nuovo” award, which is kind of for innovation. Cross your fingers!
Good luck on the challenge. So are you going to be judged on the version you submitted or will you be able to send updates before the final judging?
Weirdly, you can update the build any time. They don’t promise to always use the latest, but that seems fair.
Good luck at IGF!
When can we expect a downloadable demo?
By the way, I lol’ed a little bit when i saw this Intsructable posted today: http://www.instructables.com/id/How-to-Host-a-Spy-Party/
It’s going to be a long time before a real “demo”, but I’ll do a big beta at some point for tuning, and I’ll post invites on the blog, Twitter, and Facebook. Next year sometime probably.
Next year… someone needs to invent that time-machine for me!
That’s the message I hope to read alongside the actual spyparty.exe!
This game’ll be fun when I get to L.A.N Test it! :D