So You Want to be a Game Programmer?
game computer games science college education faculty programming degree
There is currently only one way of getting a job as a games programmer, and that is to write a game - or more properly, write what is known in the industry as a game demo. These days, a typical commercial game might take 100,000 lines of C++ code written by a team of 3 programmers over a period of 18 months with a budget of a million dollars. As a novice game programmer, you are obviously not going to be able to compete in that arena. But you can and should write a fully functional game of about 10,000 lines of C++ code that has at least one and preferably several features not found in commercial games. Game companies are less interested in your resume than in what you have done. So write a game, put it on a floppy, and send it to the game companies that you would like to work for. If they like it, you may strike it lucky.
So where are you going to get the knowledge to write your game demo? One way is to get a college degree in Computer Science. Do you have to have a college degree to get a job programming games? Not necessarily, but things are changing as the industry matures. You can get a job by programming a drop-dead game demo, but many companies are looking for employees who have produced great games and have college degrees. This makes sense because college is a place where you can get the background knowledge that you need to be a competitive game programmer. If you are fortunate, it can also be a place to meet design people who can join and support you in your quest.
Choosing a College
A degree in Computer Science will help you on your way to becoming a game programmer, but you must choose your college very carefully. Go visit the Computer Science Department. You want one that is vigorous, active, exciting, and provides a comprehensive education. Look for a department with at least 15 full-time tenure-track faculty, and preferably one with 20-25 faculty. It takes a certain critical mass for a faculty to have experts in all areas of Computer Science, and to have a balance between basic research, applied research, graduate education, and undergraduate education. Read the course catalogs, and look for the courses that you're going to need. Above all, talk to the faculty and students. You can find dud faculty members at the best institutions and excellent faculty members at the most obscure places. Remember, a university is mostly about people. Check them out before you make a commitment to go there.
Research and Education
One of the decisions that you have to make is whether to choose a research-oriented or a non-research-oriented school. A research school typically has a smarter group of faculty, but their focus is on research at least part of the time, and they may not have as much time for undergraduate education as you would like. You may not get to see a tenured professor until your junior or senior year, and you probably won't get to see any of the "big name" professors at all. On the other hand, if you can get their attention then you will have a learning experience that cannot be matched at a non-research school. Faculty at a non-research school will have more time for you, but you have to wonder whether you will truly learn anything or be challenged by the experience. The question that you must ask yourself is whether you want to be taught by a non-research professor who learned everything he or she knows from a textbook, or do you want to be taught by the research professor who wrote the textbook, or perhaps even invented the stuff that is in the textbook? There are exceptions to this rule, that is, excellent professors at non-research schools, but they are rare.
What Courses to Take
When you get to college, you're not going to find many courses on computer games. But you're going to need the following courses:
- Programming: For portability your games should be programmed in a high-level language. C and C++ are the most popular. Most importantly, learn how to learn new programming languages - you'll be doing it for the rest of your life.
- Assembly Level Programming: Device drivers and core code may have to be programmed in assembly code. So look for basic and advanced courses on assembly level programming.
- Computer Architecture: For speed you will have to take advantage of advanced hardware features. You need to know about peripherals, clocking, cache design, DMA, interrupts, bus architecture, RISC and superscalar design, just to name a few things.
- Software Engineering: This course teaches you how to work on big software projects. Make sure you get some hands-on experience maintaining or expanding old code, and working in a group of programmers.
- Computer Graphics: Look for a syllabus containing elementary 2d material plus advanced 3d material including polygon mesh, shading, and texture mapping.
- Data Structures: In this class you will learn a lot of standard data structures and their implementation - this will save you from having to constantly reinvent the wheel.
- Algorithms: Even though you are the C programmer from hell and can hand-optimize assembly code, your programs may still run slowly because you chose the wrong algorithm. This class will teach you how to design and analyze the best algorithm for almost any type of problem.
- Communication Networks: This is a must if you intend to work on a multiplayer game.
- AI and Expert Systems: Single player games need opponents, and you need to know how to program them so that they are realistic and challenging.
- Human Factors: Here is where you learn how to make a drop-dead user interface.
- Mathematics: Games programmers are not afraid of Mathematics. In addition to the normal math prerequisites, make sure you take Linear Algebra - polygon mesh games are little more than linear algebra engines. If you plan on being a polygon mesh guru, Vector Calculus is sure to come in handy.
- Physics: It's a good idea to satisfy the Physical Science requirements for your degree by taking a few introductory Physics courses. You're going to be building virtual universes in your game, so it makes sense to figure out the laws that make the physical universe function.
There's no doubt about it - college is expensive, and likely to become more expensive as government reduces its subsidies for higher education. As a result, the full-time student who finishes in four years is becoming less common. The only way to make it through may be to work part time. Most universities have co-operative education programs in which students take time off from study to work for local industry to get job experience and money before graduation. Fortunately for Computer Science students there is usually no lack of co-op positions for people with their skills.
The Bottom Line
The quality of your undergraduate education depends primarily on you. It is easy to get lost in the crowd, particularly at large state institutions. If you want to succeed, you must take control of your education, seek out the best professors, and go beyond the material presented in class. If you expect to be spoon-fed the way you were in high school, forget it. College for you will just be a waste of money.
A Computer Science degree is not job training. It is career training. Don't expect to come out of it an automatic expert on everything to do with computers. What you have a right to expect from an undergraduate Computer Science degree is a grasp of the fundamental concepts of Computer Science, and enough of the practical skills to be able to grow, learn, and thrive in any computational environment, be it computer games or otherwise. You can get all of the information you need out of books, but a Computer Science degree will help you develop the skills needed to keep up with new trends in computing. Remember, the computing industry changes rapidly. You will have to keep up with it for the rest of your life. A Computer Science degree is a good place to start.
The University of North Texas, located in Denton, Texas, has an accredited program in Computer Science and one feature that makes it unique in the United States. It is home to the Laboratory for Recreational Computing, which provides an environment in which undergraduate students can learn and explore the realm of game programming. Students can earn college credit for writing games, and can participate in an introductory class in game programming currently offered in the Fall of each year. For more information, contact the author of this article.
Created by Ian Parberry, November 10, 1997.
Last updated Mon Nov 10 12:25:28 CST 1997.