I've always thought game developers were born, not made. True greatness comes from within. If it isn't there, it can't be learned, and if it is there, it can't help but be discovered. To be a game developer, you must truly love games. Not just playing games, but understanding games. You must love the whole concept of dissecting a game, breaking it down to its smallest parts, and visualizing how the pieces fit into the whole. The chapters in this web site deal with the programming aspects of game development. It should be noted, there are other careers in game development besides that of programmer. A typical game passes through many hands on its way to final release. But the programmer is the critical element. Without the programmer, there is no game. Period. And since I am a programmer, this site will focus on game development from the point of view of the programmer, with all other related occupations considered ancillary. As the game programmer, it is good to keep in mind that the more of the other game development roles you can fill, the better. That is, if you can do some of the other jobs involved in game development, then you will own more of the final product. Let's consider what other jobs game developers do. The Things Game Developers Do Programmer The whole world revolves around the programmer. The programmer is the one who takes the unrealistic expectations of everybody else and finds a way to make them work. If the producer wants to change the user interface at the last minute, it's the programmer who stays up all night making the change. If the artist can't figure out how SVGA palettes work, it's the programmer who writes a color-reducing and palette-matching utility. Without the programmer, there would be no computer games. Artist Artists are important too. In some games, such as Myst, I will grudgingly admit the artists played a more critical role than the programmer. This is the exception however, not the rule. The rule is, the programmer is the pivotal element in all game development. These days, many artists prefer to be called "animators". Many garbagemen prefer to be called "sanitation engineers" too, but it doesn't make a bit of difference in what they actually do. Musician They make music. They can make sound effects too. There are a lot of them, and there is barely enough work to go around. Most of them are starving. Producer The producer oversees game development and makes sure all the elements of the development are in place. A producer may, for example, acquire resources for programmers and artists, may hand out money, and may give orders. Sometimes a programmer or an artist may play the role of producer, which often works well. Sometimes a producer is a low-level manager with no particular game development talent, who nonetheless involves himself in micro-managing the development process. This occasionally spells disaster. Designer This is a nebulous term. Sometimes the producer thinks he is the designer, when actually the programmer is the designer. The artist should be the designer, being that he has the creative talent, but nobody pays attention to the artist. Sometimes a person comes out of nowhere and declares himself to be designer, and asks for millions of dollars for selling a title and a story line. Ha! Fat chance. If you are a programmer and you need design help, look to an experienced designer with a track record in the type of game you want to develop. There are people who actually excel at designing levels, puzzles, likeable characters and entertaining story lines. Tom Hall, formerly of id Software, comes to mind as a successful and well-loved game designer. Really good designers like Tom are rare. Play Tester Play testers sometimes also act as beta testers. Technically speaking, the beta tester tests for bugs and the play tester tests for playability. But since most games are under-funded and behind schedule, both functions are generally ignored more often than they should be. If you want to break into game development, and you live in the Silicon Valley area, you may be able to get a job as a play tester. It's kind of like breaking into rock 'n roll by being a roadie. Sure you're there, but you'll never be the star. Publisher This is the guy in the suit who smokes a cigar and blows the smoke in your face. He is very good at telling you why his part of the job is really the hard part, and since he is taking all the risks, he should keep 95% of the profits and you should be grateful for your 5%. Less deductions. Paid 6 months after he gets paid. Which is 9 months after the game hits the shelves. It's a good job, if you can get it. Lone Wolf This is me. At some point in my career, I have performed all of the above roles and more. Now I have learned where my strengths lie, and I find other people to give me artwork, music, design help and publishing help. But I still take over each job when I need to. If the artwork isn't perfect, I fire up my paint program and make adjustments myself. If I can't reach a deal with a publisher, I self publish on the web. Sometimes I even make my own sound effects by hooking a cheap microphone up to my Sound Blaster card. The point is, I don't take a salary, I am not dependent on anybody else, and I have the freedom to choose and abandon my own projects, and to move on when I feel like it. Being a lone wolf isn't for everybody, but to me it is the best of all possible worlds. Minimum Requirements to be a Game Programmer To begin with, you need to know how to program in some language. The preferred languages for game programmers are C and C++. I have no opinion on which is better, either one will take you far. If you are just getting started, and you haven't learned C or C++ yet, you can write games in another language. Lots of perfectly good games have been written in BASIC, Pascal, and Delphi. Years ago I wrote some pretty games in Fortran. It doesn't matter that much what language you use, as long as you have mastered it. Some knowledge of assembly language programming is important if you are planning on writing your own low-level graphics routines. If you not ready to tackle assembly language yet, don't worry about it. You can use a commercial graphics library, such as Fastgraph to accomplish the desired result. You will need a (legal, not borrowed copy of a) compiler. If you don't have a compiler, click here for some suggestions. You will need some way to generate artwork for your program. A paint program is good. A rendering program is better. A talented artist is better yet. Whether you create your pictures yourself, scan them, use clip art, or pay big bucks to a professional artist, plan on having some source of artwork. That's it! That's all you really need to get started. If you are reading this online, then I will assume you also have a good, fast computer, a modem, and some form of online communication. These are valuable and will help you a lot. Of course, there is one other element which I haven't discussed, and that is talent. You have to be a good programmer, with creative problem-solving skills. I assume you think you have that, because otherwise you wouldn't still be reading.