Joel's Articles

How to Prepare For a Job in the Game Industry
or
What I Wish Someone Would Have Told Me

Joel Gompert
Grad Student
University of Nebraska , Lincoln
September 7, 2004

Introduction

To begin, I'd like to mention that I've never had a job in the computer/video game development industry. I'd love to tell you how to land a job in the industry, but I haven't done it yet, so that is not what this article is about. Instead, I will share with you some of the things that I have learned over the years, through experience and by learning from others.  This article is largely directed towards those just starting college or who are looking ahead towards college. I discuss things I wish I had known when I was in that position. Hopefully, you can gain some insight, and I hope I can inspire future game developers to greatness. I am most interested in programming, so this article will focus on that, but many things should still be applicable whether you are an artist, designer, sound engineer, or even applicable to other industries.

The Passion

Your first step is to make the decision to be a game developer. Let's face it; getting your dream job in the game industry is going to be hard. You can't just say, "Getting a job in the game/entertainment industry is my first choice, and if it happens it will be awesome; we'll just see what comes along." If you have, in the back of your mind, the thought that getting a job in the game industry might just 'happen', then it will never happen. You have to make the decision that that is what you want, and you are going to go for it. You have to set that as your goal and work hard. (But admit it; if it's what we love to do, and we're going to do it in our spare time either way, then, although it will be hard work, we'll have fun doing it.) So, the first step is to set your sights on your goal. You have to make the goal clear in your mind. Write it down if you have to. Tell everyone. Start thinking of yourself as a game developer. Don't tell people that you hope to make games someday, introduce yourself as a game programmer. Then you need the drive and determination to stick with it.

The List

The next important step is to make a list of everything you want and need to learn, and skills you need to gain. Make a list and categorize it. You're not going to be able to learn it all at once; it will take time, but if you don't create a list, then you won't be directed enough towards your goal. After you make the list, rank the items in order of importance and personal interest. At first, be as broad as possible with your list. Don't forget to include areas in which you don't have as much interest, but are still important. For example, if you are really excited about computer graphics, but don't care about audio, you still should learn about audio. Keep in mind that although game programming is one of the most exciting programming jobs, it is also one of the most difficult, because the game programmer needs to combine so many cutting-edge techniques in a single application. So, make sure you have a broad base. Later, you can choose one or more areas that really excite you, and you will need to specialize in that area.

I have included an example of such a list as an appendix to this article. You will have to modify it or make your own to fit your own current knowledge and skills and goals. The purpose of this list is to focus your education and give you direction. Without a list, you may very well learn a lot and explore a lot of interesting things that you come across, but after you create this list, you will see how much there is to learn and see how much time is going to be required.  And it will motivate you to focus your effort.

Once you have created your list and ordered it by importance and interest, then take the first thing on your list and start learning. Read articles and tutorials online, read books, read professional journal articles, talk to friends about it, and put it into practice. Write programs to try out the ideas you are learning. Experiment, play with it, try new ideas, and expand upon what you learn.

When you look at your list, don't get overwhelmed and discouraged. Take each item one at a time. Determine to make some progress every day. This should be no problem for the areas that particularly interest you, but if you have to, set aside time each day to work on it. As you go, you can start checking off items on your list and expanding them. One of the main things I have learned is that the more you learn, the more you realize how much more that you still have yet to learn. Your list will branch into a tree that will grow larger and larger as you go. Note that the tree will grow faster than you will be able to check the items off. But don't get discouraged by this--it is a good sign. And remember, at first you are not worrying about depth; you want to focus on breadth. As time goes on, you will begin to realize the areas you want to specialize in and you can begin to go deeper in those areas. Again, I want to iterate, don't get discouraged by the size of your list. Remember, you're doing this because making games is what you love to do. While you are learning about areas you have less interest in, always keep in mind how it applies to games, and how it is bringing you closer to that dream job.

Don't wait for the course

When I started going to college, I got excited looking at the undergraduate bulletin, seeing listings of the really neat classes I would eventually be able to take--classes such as computer graphics, cryptography, artificial intelligence, assembly language, and graphical-user interface programming. My suggestion to you is don't wait until you take the course. If it's on your list then learn all you can about it on your own. Most likely, you won't be able to take these upper-level courses until your junior or senior year of college, and, if you wait until then, you will have lost all the valuable time in the mean time. When you finally do take the course, you will most likely find that you need to read the text book and other resources for yourself to get the most out of the course anyway, and the course will probably not teach everything that you want or need to learn, so you might as well do it now on your own time. When you take a course that falls under something farther down your list, you should, of course, bump that item up on your list and use that opportunity to check the item off your list. And if these courses require a semester project, then use this opportunity to implement some advanced technique or idea that you have been learning and apply it to game development. Whenever possible, whenever you have to do a class project, try to apply it to games.  Write a small game that uses the technique, or add it as a feature to a game you are working on, and hand that in as your project.

Make games

Along with steadily progressing through your list, make games. Start early; start now. You should be making games all the time. But don't start too big too soon. Don't start by trying to make a first-person shooter. Depending on your current skill level, maybe start by making a number-guessing game; make hangman. Maybe recreate some arcade games. Make a simple text-based adventure game; make a Breakout (Arkanoids) clone; make Asteroids; make Tetris; make Pac-man; make a tile-based game; make an RPG. Think about this, if you can create a small game in an average of two months, then in four years of college you will have created 24 games! Imagine being able to put on your resume that you have created 24 games. Now your first few games you will likely take you much less time than that to create. Later you can try gradually bigger projects that will take you more time and, if possible, start working with a friend or two to create bigger games.

Going back to the list we created (and are still steadily progressing through, right?), you should be creating games that incorporate the ideas and techniques that you are learning. For example, when learning about networks, write a simple network/multiplayer game.

The point is not only to gain the experience and skills required, but to have something to show for it. Employers will want to see things you have created. Another reason to start small is that it is much more impressive to have finished games. I have numerous unfinished projects sitting around. Create small games and finish them. Give them polish. As much as possible, make them look like a professional product that you will be proud to show a prospective employer. If you can, make them complete with a splash screen, multiple levels, sound effects, option menus, ending sequences, etc. But remember, don't get bogged down or discouraged because you don't know how to do all of that yet--your first games will not be the most impressive, but finish them, give them as much polish as you can, and start your next project. Your games will get better as you go.

Learn Lex and Yacc

This may seem a little out of place, but one thing I wish someone would have told me to do a long time ago is to learn Lex and Yacc (implemented in the programs flex and bison, respectively). They are used for parsing text (if you don't know a programming language or don't know what text parsing is yet, don't worry, just add this to your list and you'll come back to it eventually). Learn them and they will save you a lot of time. After learning how to use these tools, I kicked myself for not learning them sooner. You'll never want to parse text again without them. Not only will it make some of your work go faster, it seems that the game industry is moving more and more towards making custom scripting languages so that the game designers, who don't necessarily know computer programming, can create custom scripts for the game. So you'll need to know how to create code to read and parse these scripts.

Choosing a college

For those of you in or below high school, that's great--start now. Create your list and start learning now. There are lots of free tools and information available on the internet, much more than when I was in your position.

As for choosing a college, there are specialized schools for game development, such as DigiPen and Full Sail. Going to one of these is probably a great opportunity, but it probably will be more expensive, and, from what I have read, may not be that much more impressive than a college degree from a 'regular' university--a degree from a specialized school will not guarantee you a job. (Also, for you guys, let's face it; there probably aren't many girls at those schools. Once, at the Game Developers Conference, I met a guy who was attending DigiPen, and he made the comment, "It must be nice going to the University there--I mean there are girls there, right?").

So, aside from going to a specialized school, how do I choose a college? When I was choosing a college, I had no idea whatsoever what to look for. I looked at their undergraduate course list, and, for the most part, they were very similar. By all means, consider any criteria that are important to you such as being close to (or far away from) home. But here is the trick I wish someone would have told me: Go to the department (i.e. computer science) web site, at the college you are looking at, and read about the faculty. Read about what research each of professors is conducting. The research that the professors are doing indicates what they are interested in, and thus the interest of the department. If none of the professors are doing research in areas related to making games, then they're not going to be interested in teaching courses on topics related to making games, meaning there are going to be fewer courses on such topics, and the courses they do teach, will have less depth. You will end up feeling a bit isolated in your interest of making games and will have to work harder on your own. I recommend finding a college where there is at least one, and preferably multiple professors doing active research in areas that are directly related to making games. It's probably better if there are multiple professors interested in different areas all connected with making games, especially if you find professors doing research in areas that excite you and in which you might want to specialize.

When you go to college, as soon as possible, make yourself known to those professors who are doing the research you are interested in. Even better, sit down and talk with them when you first visit a prospective college. As soon as possible, get to know them, and make sure they know you, and talk with the professor(s) about the possibilities of doing research with/for them. At our university, we have the UCare program, by which an undergraduate student can get paid for doing research with a professor. Even if you have to volunteer your time for free (professors will rarely turn away free help), it will be worth it if it will give you experience you need to check off items on your list and build up your skills and your resume, and you will create great references for when you are later looking for a job.

Conclusion

So to reiterate, a game development job that just happens to come your way is probably less likely than getting struck by lightning. 

One final note: all of this will prepare yourself, giving yourself the knowledge and skills required, making you look more attractive to a prospective employer, but, in itself, will not land you that dream job.  That is a different subject, best left for those more experienced than I.

Appendix - sample list

Here is a sample list you can use or modify. I didn't want to focus on this list in the main body of the article, because you can find such lists elsewhere. In a future article, I may expound on some of the topics in this list. This list is categorized, but not necessarily sorted in the order of importance. It is not exhaustive.  I am sure there are many things I forgot. You will expand it as you go.

Programming/scripting languages

Platforms

Programming Techniques

APIs

Artificial Intelligence

Network programming

Creating Art and Animation (still important for programmers)

Graphics

Audio

Math

Physics

Computer systems

Other programming issues

Cinematography & Photography


JMG Copyright © 2004 Joel Gompert
Home -

(Since September 8, 2004)