Gamers! Next time you savor an awesome game; the way a character moves, the satisfaction of solving a puzzle, the sigh of relief you get after defeating a boss…thank a gameplay programmer. With us today is the lovely and talented Anna Kipnis of Double Fine Productions. This fun-loving gal proves that if you want to be a part of the video games industry, determination, education and sense of humor can go a long way…
Back in 2002 I was trying to get a game industry job, when a friend of mine called me up and said I should really apply at this little company called Double Fine. They didn’t have a game out yet, he said, but they were working on something awesome (Psychonauts) and it’s headed up by Tim Schafer. I’d heard of that dude before – played and really loved Grim Fandango, but beyond that I didn’t know much. I dutifully went to Double Fine’s website, expecting some kind of marketing site for Psychonauts.
Instead, it was this unpretentious, charming site with a hilarious news blog that Tim was writing himself about the daily goings on at the company. The information was surprisingly juicy, too, especially for a company news section. One intriguing theme had been the rat and mouse infestation in the office and how the traps they set up weren’t working until someone had the brilliant idea of using peanut butter to lure them in. Now, I should mention that I have a pretty intense phobia of rats and mice, but by the time I finished reading the entire archive of the news, I wouldn’t have cared if a rat had to sit on my lap as I was programming, I wanted to work at Double Fine so badly.
Tim would regularly post stories about the employees and the sense I got is that Double Finers were all amazing, talented and genuinely sweet people (all true – confirmed), working on this really original, imaginative game, spending their time in the office space that had so much… character. You could really feel the camaraderie there and I guess I caught a bit of it myself. Before I posted my resume, I went to a grocery store and bought these small peanut butter packets, hoping they were perfectly measured doses for rat traps, and sent them with my resume and a cover letter explaining the enclosed goods.
It was, until I wore a nice suit to the interview and almost got sent home on the spot! Srsly, kids: don’t wear suits to your game development interviews, because people will think you are putting on airs. You have to look nice, to be sure, but a suit is too officious and a bit of a copout. My interview actually went very well, but I got teased about the suit.
When the programmer has a break from running the mustache contest you mean? (How could I resist? All the dudes decided it was handlebar week! I am only a human lady).
At Double Fine, our programming team is broken up into groups that specialize in certain aspects of the game engine or in developer tools. We have Platform programmers who specialize in getting the game to run beautifully on all the hardware being supported for the title. Tool programmers are working on tools for the art pipeline and other development needs. Our Graphics programmers are working on rendering, lighting, and shading techniques with artists to make the game look good. Gameplay programmers work closely with Design, Animators, and World Builders to create the player experience – everything from enemy AI to player abilities and level layout. As such, programmers are involved in all stages of development. Even in the concept stages, the Gameplay team could work with Designers to mock up some experimental gameplay features in an existing engine and a Graphics programmer could try out a new rendering technique for visual R&D.
We had up to 16 programmers working full time on Brütal Legend, where we wrote our engine almost entirely from scratch. On other titles, depending on the scope of the project and preexisting engine, you may be able to do with fewer programmers. From the earliest concepts to the final product, it took us 4.5 years to make Brütal Legend.
With Brütal Legend, our goal was to make the world feel like it changed in some tangible way as you progressed through the story missions. So for instance, say you’ve saved the Headbangers from the mines — you’d now see them roaming about, hunting or fighting Lionwhyte’s cronies. As Doviculus becomes more powerful in the land, you see his influence spread throughout. Things that you might have become familiar with as you explored the world would begin to have some S&M flair to them, such as strappings and bindings of natural landscapes, ballgags in the mouths of monuments. Perhaps you would see different creatures roaming the land. Different optional missions would become open to you, and so on. These are the sorts of things you wouldn’t see in a strictly linear game and it required a different approach. We came up with systems that responded to the progress the player has made through the story and populated the world accordingly. It meant building some sort of knowledge of world state into our environment as well as our gameplay systems. The other really tricky bit is that ours was a streaming open world, with no loading as you drive or roam around. To do this, we divided our world up into tiles and only streamed in objects from the current tile and the tiles adjacent, while rendering only the things of the distant world that you would be likely to see or be interested in, such as large landmarks and terrain.
I did get to meet Rob Halford and can now die without regrets. He was amazingly sweet and rad, by the way. I try to listen to music as I work, but it is often really distracting, because I start thinking more about the music and less about the programming. The great thing about being a Gameplay Programmer is that you have to play the game quite a bit to test out the feature you are working on, and I got to listen to the awesome soundtrack in Brütal Legend without any detrimental effects to my programming.
It could be several things. The usual culprit is collidable world geometry trapping the character’s physics capsule.
Characters are usually assigned a simple geometric shape, like a cylinder for instance, invisible to the player, that the physics engine uses to determine with what that character is colliding. Imagine that all a character is to the physics engine is that cylinder moving about. The world around that character also has collision that the artists create to best fit the shape of the visible objects in the level. By the way, the reason why the collision for objects can’t be exactly the dimension of the objects you see as a player is performance — it would be prohibitively expensive to do all the physics calculations if all the objects matched perfectly with their collision. Besides, with some toil, no one will ever notice that the collision doesn’t match perfectly to the objects and you’ll save framerate!
Often what happens is that physics cylinder on the character will get itself into a spot out of which it can’t extricate itself. Imagine falling into a hole that was easy enough to get into, but that the force of gravity makes challenging to get back out of. Another reason could be, if the character is attempting to find a path to a spot, that the path it calculated brings it through a wall of collision (you’ll see them run in place). Yet another reason is a possible bug in the engine, where it allowed a character’s cylinder to penetrate geometry collision and then locked them in place. That sentence came out really dirty for some reason, but this bug is anything but sexy.
I went to college knowing that I wanted to be a game programmer, so I figured I’d need a Computer Science degree. Unfortunately, my school didn’t have any kind of game development program. In an effort to remedy this, I decided I’d study Artificial Intelligence in every department that offered it. This turned out to be Philosophy, Psychology, and Cognitive Science, so I minored in all three. To be honest, no one had to twist my arm to go to any of those classes. I thought they were all super rad and interesting.
I recommend Computer Science. It gives you an invaluable background in software engineering principles that is hard to replicate except with years of experience. In addition to that, you absolutely need experience with a game engine. Many universities now have excellent game development programs. There are also a few schools specializing in game development that have great reputations, especially Digipen. (Kim Swift, the designer of Portal, graduated from there).
Some of the Double Teams in Brütal Legend were extremely tricky to get right, even from the design standpoint. They were all almost entirely unique, but had to feel really intuitive and useful as the player performed them, had to fit in with the theme of the unit, the faction, and spirit of the game. We iterated on those quite a bit throughout development with the Design team, often reworking them from scratch. It was all worth it, though because I think we nailed the vast majority of them.
After the getting to work and coffee, we usually have short meetings with our teams to check in with each other on what we’re working and talk about anything that might be blocking our progress. Then, you get to working on the game. As a Gameplay Programmer, I work closely with nearly all the disciplines, but especially with the Design team. Throughout the day, Animators might have a question for me as to how best to set up an animation or a cutscene, while I may go ask a World Builder to tweak the level layout or a Designer for some feedback on a gameplay element. The Audio designer might let me know that the latest voice recordings are ready for me to hook up. I may have a question for our Graphics programmer and VFX artist as to the best way of implementing a visual indicator for a gameplay feature. Our UI artist might deliver some assets for me to integrate, and so on. Our Test department may report a bug that needs to be fixed ASAP and I’d get on that.
When we’re nearing a deadline, we go into bug fixing mode, where we stop integrating new features and focus entirely on stabilizing the build. At this point, we still may collaborate with other departments on a bug fix or help them track down a problem.
Double Fine is an amazing place where if you have an idea that is liked, it will get in the game. It was my idea, but as I was working on something else, a fellow Gameplay Programmer, Patrick Hackett implemented it.
Guitar Hero 1, Rock Band 1 thru Beatles. (Harmonix4evaeva)
My favorite game of all time is still Castlevania: Symphony of the Night, because it is so beautiful and has so much depth. Recently, I played through Assassin’s Creed II and Batman, both of which are great. I love Tower Defense games on the iPhone so much! I think I’ve played every single one that’s out there. The best is Fieldrunners, geoDefense and geoSwarm. The only games I tend not to play are FPSes, but only because they make me very motion sick. :(
The paddle from Pong.
Nothing gets your foot in the door like having a game to put on your resume. Make sure to get an internship at a game company doing game programming of any kind while in school. If you don’t have that kind of opportunity, try making a game on your own or with friends with some of the cheap or free engines available out there. Check out the free Unity engine or the relatively cheap Torque. Once you do get that interview, the main thing to remember is that people in the games industry are incredibly passionate about their work. If you can convey enthusiasm and a good work ethic, it will get you far.
Nathan Stapley (2D artist)! His was incredibly bushy and stylin.
Runner up was Steve Peck (Lead QA).
Anna Kipnis, Brutal Legend, Double Fine Productions, GG-AngelThanatos, Grim Fandango, Judas Priest, Led Zeppelin, Psychonauts, Scott C., Spock, Tim Schafer, animators, design, developers, graphics, guitar, interview, peanut butter, programmers, rats, solo, video games, world builders