So you want to be a video game programmer? – part 2 – Specs


There are a couple of broad categories of programmers working on video game teams. If programmer is your player class, then the following types are your spec. Programmers are all warlocks and mages so instead of “demonology” or “frost” you can choose from below. (NOTE: if you don’t get this joke, you don’t play enough video games) This is the real world however, and many programmers dual (or even triple) spec — i.e. they handle multiple specialties.

1. Gameplay programmer. Programs enemies, characters, interfaces, gameplay setups etc. Probably also does things like AI and collision detection. These programmers are sometimes a little less hardcore technical than some of the other types, but this is the sub-field where the most “art” and experience are often required. Learning how to make a character’s control feel good is not something you can read about in Knuth. It takes the right kind of creative personality and a lot of trial and error. In a lot of ways, this is the heart and soul of game programming, the spec that truly differentiates us from the more engineering programming disciplines.

2. Tools programmer. Works on the extensive tools pipeline that all games have. This is the only branch of game programming where you don’t absolutely have to know and breathe video games inside and out, and it’s a little closer to mainstream applications programming. That being said, life at most video game companies is so intense, you better love them. Tools programmers tend to be very good at practical algorithms, data processing, etc. For some reason, perhaps because it’s more “behind the scenes” this spec is often viewed as less glamourous and there are fewer programmers who want to go into it.

3. Sound programmer. A very specific niche. Here you have to not only know how to program well, but you have to care about the esoteric field of sound. You need the kind of ear that can tell if there is a one sample glitch in some audio loop, and you need to care if the 3D audio spatialization is off or the sound field isn’t balanced. This is often a fairly low level area as audio programming is often done on DSPs.

4. Collision programmer. This is a really specific spec, and often overlaps with Graphics because it involves totally intense amounts of math. You better have taken BC calculus in tenth grade and thought “diffy-q” was the coolest class ever if you want to go into this.

5. Network programmer. In this era of multiplayer and networked gaming there’s a lot of networking going on. And programming across the internet is a bit of a specialty of it’s own. In general, video game programming takes any sub-field of programming to it’s most extreme, pushing the bleeding limits, and networking is no exception. Games often use hairy UDP and peer-to-peer custom protocols where every last bit counts and the slightest packet loss can make for a terrible game experience. If this is your thing, you better know every last nuance of the TCP/IP protocol and be able to read raw packet dumps.

6. Graphics programmer. Some guys really dig graphics and are phenomenal at math. If you don’t shit 4×4 matrices and talk to your mom about shaders, don’t bother. This sub-specialty is often very low-level as graphics programming often involves a lot of optimization. It may involve coming up with a cool new way of environment mapping, some method of packing more vertices through the pipeline, or better smoothing of the quaternions in the character joints (HINT: involves imaginary math — and if you don’t know that that means the square-root of -1 then this sub-field might not be for you).

7. Engine programmer. For some reason, most wannabe video game programmers hold this up as their goal. They want to have created the latest and greatest video game engine with the coolest graphics. Superstars like Tim Sweeney,John Carmack, and even myself are usually seen as falling in this category. The truth is that superstars do all kinds of programming, and are often distinguished by the fact that we are willing and able to handle any sub-type and tie it all together (see lead below). In my mind engine programmers are jacks-of-all-trades, good at building systems and gluing them together. The top guys often blend with Graphics and Lead below. There’s also tons of stuff like compression (nothing uses compression like games, we’d often have 8-10 different custom compressors in a game), multi-threading, load systems (you think seamless loading like in Jak & Daxter is easy?), process management, etc.

8. Lead programmer. People also dream of being the lead. All the great programmers are/were. This is the hardest spec, and no one ever starts out in it. You need to be able to do any of the other specs, or at least judge what approach is best. You need to be able to roll up your sleeves and dive in and fix crap anywhere in the program. You need to live without sleep (4 hours a night every day for years baby!). You need to be able to squint at the screen and guess where the bug is in others people’s code. You need to know how to glue systems together. You need to be able and willing to trim memory footprints and optimize (no one else wants to do it). In fact, you have to know the entire program, even if it is 5-10 million lines of code, and you have to do all the crap that no one else wants to do. Plus, you often have to manage a bevy of other personalities and waste lots and lots of time in meetings. Still want the glory? Being lead is all about responsibility!

CONTINUED with Part 3: Getting Started


Parts of this series are: [Why, The Specs, Getting Started, School, Method]

Subscribe to the blog (on the right), or follow me at:

Andy:  or blog

Or more posts on video gaming here.

And what I’m up to now here.

Making Crash Bandicoot – part 5

PREVIOUS installment, or the FIRST POST.

[ NOTE, Jason Rubin added his thoughts to all the parts now, so if you missed that, back up and read the second half of each. ]


A Bandicoot, his beach, and his crates

But even once the core gameplay worked, these cool levels were missing something. We’d spent so many polygons on our detailed backgrounds and “realistic” cartoon characters that the enemies weren’t that dense, so everything felt a bit empty.

We’d created the wumpa fruit pickup (carefully rendered in 3D into a series of textures — burning a big chunk of our vram — but allowing us to have lots of them on screen), and they were okay, but not super exciting.

Enter the crates. One Saturday, January 1996, while Jason and I were driving to work (we worked 7 days a week, from approximately 10am to 4am – no one said video game making was easy). We knew we needed something else, and we knew it had to be low polygon, and ideally, multiple types of them could be combined to interesting effect. We’d been thinking about the objects in various puzzle games.

So crates. How much lower poly could you get? Crates could hold stuff. They could explode, they could bounce or drop, they could stack, they could be used as switches to trigger other things. Perfect.

So that Saturday we scrapped whatever else we had planned to do and I coded the crates while Jason modeled a few, an explosion, and drew some quick textures.

About six hours later we had the basic palate of Crash 1 crates going. Normal, life crate, random crate, continue crate, bouncy crate, TNT crate, invisible crate, switch crate. The stacking logic that let them fall down on each other, or even bounce on each other. They were awesome. And smashing them was so much fun.

Over the next few days we threw crates into the levels with abandon, and formally dull spots with nothing to do became great fun. Plus, in typical game fashion tempting crates could be combined with in game menaces for added gameplay advantage. We even used them as the basis for our bonus levels (HERE in video). We also kept working on the feel and effects of crate smashing and pickup collection. I coded them again and again, going for a pinball machine like ringing up of the score. One of the best things about the crates is that you could smash a bunch, slurp up the contents, and 5-10 seconds later the wumpa and one-ups would still be ringing out.

This was all sold by the sound effects, executed by Mike Gollom for Crash 1-3. He managed to dig up the zaniest and best sounds. The wumpa slurp and the cha-ching of the one up are priceless. As one of our Crash 2 programmers used to say, “the sounds make the game look better.”

For some reason, years later, when we got around to Jak & Daxter we dropped the crate concept as “childish,” while our friends and amiable competitors at Insomniac Games borrowed them over into Ratchet & Clank. They remained a great source of cheap fun, and I scratch my head at the decision to move on.

Now, winter 95-96 the game was looking very cool, albeit very much a work-in-progress. The combination of our pre-calculation, high resolution, high poly-count, and 30 fps animation gave it a completely unique look on the machine. So much so that many viewers thought it a trick. But we had kept the whole project pretty under wraps. One of the dirty secrets of the Sony “developer contract” was that unlike its more common “publisher” cousin, it didn’t require presentation to Sony during development, as they assumed we’d eventually have to get a publisher. Around Thanksgiving 1995, I and one of our artists, Taylor Kurosaki, who had a TV editing background, took footage from the game and spent two days editing it into a 2 minute “preview tape.” We deliberately leaked this to a friend at Sony so that the brass would see it.

They liked what they saw.

Management shakeups at Sony slowed the process, but by March of 1996 Sony and Universal had struck a deal for Sony to do the publishing. While Sony never officially declared us their mascot, in all practical senses we became one. Heading into the 1996 E3 (May/June) we at Naughty Dog were working ourselves into oblivion to get the whole game presentable. Rumors going into E3 spoke of Nintendo’s new machine, the misleadingly named N64 (it’s really 32 bit) and Miyamoto’s terrifying competitive shadow, Mario 64.

Crash and his girl make a getaway

For two years we had been carefully studying every 3D character game. Hell, we’d been pouring over even the slightest rumor – hotly debated at the 3am deli takeout diners. Fortunately for us, they’d all sucked. Really sucked. Does anyone remember Floating Runner? But Mario, that wasn’t going to suck. However, before E3 1996 all we saw were a couple of screen shots – and that only a few weeks before. Crash was pretty much done. Well, at least we thought so.

Now, we had seen some juicy magazine articles on Tomb Raider, but we really didn’t worry much about that because it was such a different kind of game: a Raiders of the Lost Ark type adventure game starring a chick with guns. Cool, but different. We’d made a cartoon action CAG aimed at the huge “everybody including kids” market.

Mario  was our competition.


Jason says:

The empty space had plagued us for a long time.  We couldn’t have too many enemies on screen at the same time.  Even though the skunks or turtles were only 50-100 polygons each, we could show two or three at most.  The rest was spent on Crash and the Background.  Two or three skunks was fine for a challenge, but it meant the next challenge either had to be part of the background, like a pit, or far away.  If two skunk challenges came back to back there was a huge amount of boring ground to cover between them.

Enter the crates.   The Crates weren’t put in to Crash until just before Alpha, or the first “fully playable” version of the game.

Andy must have programmed the “Dynamite Crate/Crate/Dynamite Crate” puzzle 1000 times to get it right.  It is just hard enough to spin the middle crate out without blowing up the other two, but not hard enough not to make it worth trying for a few wumpa fruit.  Getting someone to risk a Life for 1/20th of a Life is a fine balancing act!

Eventually the Crates led to Crash’s name.  In less than a month after we put them in everyone realized that they were the heart of the game.  Crash’s crash through them not only filled up the empty spots, the challenges ended up filling time between Crate challenges!

This isn’t the place for an in depth retelling of the intrigue behind the Sony/Crash relationship, but two stories must be told.

The first is Sony’s first viewing of Crash in person.  Kelly Flock was the first Sony employee to see Crash live [ Andy NOTE: running, not on videotape ].  He was sent, I think, to see if our videotape was faked!

Kelly is a smart guy, and a good game critic, but he had a lot more to worry about than just gameplay.  For example, whether Crash was physically good for the hardware!

Andy had given Kelly a rough idea of how we were getting so much detail through the system: spooling.  Kelly asked Andy if he understood correctly that any move forward or backward in a level entailed loading in new data, a CD “hit.”  Andy proudly stated that indeed it did.  Kelly asked how many of these CD hits Andy thought a gamer that finished Crash would have.  Andy did some thinking and off the top of his head said “Roughly 120,000.”  Kelly became very silent for a moment and then quietly mumbled “the PlayStation CD drive is ‘rated’ for 70,000.”

Kelly thought some more and said “let’s not mention that to anyone” and went back to get Sony on board with Crash.

The second story that can’t be glossed over was our first meeting with the Sony executives from Japan.  Up until this point, we had only dealt with Sony America, who got Crash’s “vibe”.  But the Japanese were not so sure.

We had been handed a document that compared Crash with Mario and Nights, or at least what was known of the games at the time.  Though Crash was rated favorably in “graphics” and some other categories, two things stood out as weaknesses.  The first was that Sony Japan didn’t like the character much, and the second was a column titled “heritage” that listed Mario and Sonic as “Japanese” and Crash as “other.”  The two negatives were related.

Let us remember that in 1995 there was Japan, and then there was the rest of the world in video games.  Japan dominated the development of the best games and all the hardware.  It is fair to say that absent any other information, the Japanese game WAS probably the better one.

Mark presided over the meeting with the executives.  He not only spoke Japanese, but also was very well respected for his work on Sonic 2 and for his years at Sega in Japan.  I could see from the look in Mark’s eyes that our renderings of Crash, made specifically for the meeting, did not impress them.

We took a break, during which it was clear that Sony was interested in Crash for the US alone, hardly a “mascot” crowning.  I stared at the images we had done.  Primitive by today’s standards, but back then they were reasonably sexy renderings that had been hand retouched by Charlotte for most of the previous 48 hours.  She was fried.

I walked over to her.  I think she could barely hold her eyes open.  I had spent the previous month spending all of my free time (4am-10am) studying Anime and Manga.  I read all the books available at that time in English on the subject.  All three!  I also watched dozens of movies.  I looked at competitive characters in the video game space.  I obsessed, but I obsessed from America.  I had never been to Japan.

I asked Charlotte if she could close Crash’s huge smiling mouth making him seem less aggressive.   I asked her to change Crash’s eyes from green to two small black “pac-man” shapes.  And I asked her to make Crash’s spike smaller.  And I told her she had less than 15 minutes.  With what must have been her last energy she banged it out.

I held up the resulting printout 15 minutes later.

Sony Japan bought off on Crash for the international market.

I don’t want to make the decision on their part seem arbitrary.  Naughty Dog would do a huge amount of work after this on the game for Japan, and even then we would always release a Japanese specific build.  Whether it was giving Aku Aku pop up text instructions, or replace a Crash smashing “death” that reminded them of the severed head and shoes left by a serial killer that was loose in Japan during Crash 2’s release, we focused on Japan and fought hard for acceptance and success.

We relied on our Japanese producers, including Shuhei Yoshida, who was assigned shortly after this meeting, to help us overcome our understandable ignorance of what would work in Japan.  And Sony Japan’s marketing department basically built their own Crash from the ground up for the marketing push.

Maybe Charlotte’s changes showed Sony that there was a glimmer of hope for Crash in Japan.  Maybe they just saw how desperate we were to please and couldn’t say no.  Maybe Universal put something in the coffee they had during the break.

Who knows, but Crash was now a big part of the international PlayStation push.  So there were more important things for us to worry about then Sony and the deal:

The fear of Miyamoto was thick at Naughty Dog during the entire Crash development period.  We knew eventually he would come out with another Mario, but we were hoping, praying even, that it would be a year after we launched.

Unfortunately that was not to be.  We started seeing leaks of video of the game.

It was immediately obvious that it was a different type of game: truly open.  That scared us.  But when we saw the graphics we couldn’t believe it.  I know there will be some that take this as heresy, but when we saw the blocky, simple, open world we breathed a sign of relief.  I think I called it I Robot Mario, evoking the first 3D game.

Of course we hadn’t played it, so we knew we couldn’t pass judgment until we did.  That would happen at E3.



The Big Fight!

How do I get a job designing video games?

If I had a penny for every time I’ve been asked this question…

Game developers have only a few broad types of employees. Excluding administrative ones like office management, HR, and IT, broadly the team has Programmers, Artists, Sound Engineers, Game Designers, and Testers (some also have Producers, but at Naughty Dog we didn’t believe in them, so we distributed their work among the team leads). Of these jobs, only “Game Designer” is “purely creative” per se. Truth is, on a good team all game jobs are creative, but designers are alone in that they don’t have a craftsmany trade.

Except they do, because game design requires a lot of craftsmanship. The trick is, it’s not something you can have learned anywhere else but by making games.

Programers can write some other kind of application and demonstrate their coding skills. Artists can show off awesome models, animation, textures, lighting, sketches etc. Externally, at home or school, an artist can learn to use art tools to build good looking art. It can be seen. He can say, “I modeled all of that in 2 weeks, although my friend did the textures.”

Game designers have to learn on the job. While all good game designers LOVE video games, not all lovers of video games make good game designers. There are different sub-types of designer, and all of them require many specific skills and personality traits. Creativity, organization, obscene work effort, organization, creativity, organization, organization, cleverness, willingness to take a beating, willingness to stand up for and demand what you believe is good, grace to admit when you idea sucked ass.

So how do you learn this stuff? How do you demonstrate it to a prospective employer. Tough.

Some you learn by playing insane amounts of games. Better yet, you make games. But… unlike a programmer or artist, it’s kinda hard for a designer alone to make anything. So you need to hook up with a great artist friend and a great programmer friend and make something cool. There are school programs now for this too, but the projects don’t have the sustained scope, scale, brutality, hideous cruelty, pain, and near death quality that real game development has. No. Not even close, not even a tinsy bit.

An old method was to become a game tester, and hope that the brass would notice your organizational skills, creativity, etc and promote you to a junior designer position. Probably this will sometimes still work. It requires a lot of stamina and a high tolerance for day-old hot wings, dirty bare boy-feet, and stale crispy cremes. But then again, if you can’t stomach that stuff you don’t belong in games.

You could also try and grab some kind of coveted internship and try to prove yourself. Also requires extremely high self motivation. Then again, if you don’t have that than forget trying to be a game designer anyway.

Maybe the bigger companies take junior designers with no experience. At Naughty Dog we never did.

But it’s still possible with an artist friend and a programmer friend to make a cool iPhone / Flash / etc. game. Do it. Do it again. Do it again. Do it again. Do it again. When a couple of them are good, you’ll find a job.

NOTE: I originally posted this on Quora, and if you want to see the whole thread CLICK HERE.

Also, if you want to read more of my posts on Writing/Creating, CLICK HERE.