| PREPARING FOR YOUR CAREER IN GAMES |
|||||||||
|
|||||||||
|
|
Rafael Baptista General Manager & Lead Programmer, Helixe Games Current project:
College:
Hampshire College, Amherst MA Did you do any
internships?
Tell us about
your first job in the industry. How did you get the job? What was it like?
What were your responsibilities? A friend of mine told me about a startup game company near where I lived called GameFx. I applied for a job there. When I went to see them they were just a small group of people in this really small ugly office above a restaurant. But they were all really talented, and the work they were doing was amazing. I was offered a job doing AI for their game. I didn't have any computer game experience, but I did have a lot of software development experience. And I was able to convince them that I could use the techniques I had learned in language understanding and genome mapping to do a good AI. I also had a good AI background from college (searching, logic, neural nets etc.) Given that I had lots of software experience I actually came into computer games at a fairly senior level. I was working on a major game system right from the first day. I was responsible for the AI and physics. This was a space sim called Sinistar Unleashed. It required AI to do flight planning for enemies, flocking, missile guidance, and the AI for a number of sophisiticated boss monsters. It was pretty hard work. Writing computer games touches many more areas than the work I had done before. In my previous jobs I really had to focus on a small well defined problem set. In games I was doing physics simulation one day, flight controls another day, obstacle avoidance, skeletal animations etc. My first job in software
was QA for a speech recognizer. I have heard some people say that starting
in QA is not good because you get pigeon-holed as a QA tester and no one
takes you seriously after that. It is true at first, but just take the
opportunity to learn as much as you can, and if you can't break out of
QA in one company, you can always change companies. What jobs have
you held in the games industry thus far? Briefly describe the career path
you took to get where you are today.
What fields
of study, specific courses, or life experiences would you recommend to
students interested in your field? I remember in high school getting these word problems "if a rocket is traveling ", and I would think to myself, "when am I ever going to need to know something like that?!". Well ten years later I really am trying to guide this simulated missile to hit a target. I wish I had paid better attention in class. Well of course I just went back to my old math books and relearned how to calculate those things. You should also program as much as you can. I wrote a lot of software in high school and college. It was always a hobby for me. Today you need to know C and C++ programming. It also helps a lot if you can program in assembler. You should also know
about the theory of algorithms. How they scale, how to trade memory for
time and visa-versa. You should know how to represent information in hash
tables, graphs, trees, lists etc. Know the advantages of keeping data
sorted. Know how to move computation around in an algorithm, for example
taking expensive computations out of inner loops. Is there anything
you wish someone had told you before you got into the games industry?
Is there anything you would have done differently? I also wish I had gotten a better math background in high school. I struggle with it all the time. Some of my friends are able to do all kinds of sophisticated computations all in their heads. I have to slog through it slowly on paper, and I make a lot of mistakes. If you learn math early you will be good at it for the rest of your life. College is a great environment to do research. Once you leave college you will forever have to make a living. So you won't have the freedom to work on your own projects as much as you want to. In college you can usually figure out a way to turn your software or math projects into some kind of for-credit activity. I would look for a school that gives you the flexibility to do that. This is what I liked about Hampshire College. Don't go into computer
games to get rich. It's a hard business, and there are easier ways for
programmers to make money. Pay scales are generally lower in games than
they are for other software engineering. Get into it only if you love
computer games. Writing computer games is very fun. Lots of people want
to do it, so competition is fierce. As games increase
in complexity, what are the various kinds of jobs that you foresee development
companies needing in the next five years? Artists will need to know not only how to draw, but also how to represent data using sophisticated 3D programs like Maya. Artists need to know the capabilities of the game engines they are using. There are so many powerful techniques now that even the artists have to be pretty specialized. The basic drawing and painting skills will still be important, but now artists will also have to know how to make a skeleton, how to place control points on a face to make it talk believably, things like that. Also as game players become more sophisticated consumers, their expectations rise. You need better writing, better game design ideas, better AI, and better graphics. This cliché is repeated all the time, but its very true, computer games are evolving very much the way movie-making did in the early part of the century. Movies used to be made by people who where basically amateurs. One person would do a whole bunch of different jobs, doing moderately well at all of them. Today you have experts each doing what they are highly trained to do. Game development is evolving that way too. I wouldn't worry
about specializing too early. Get the basic math, algorithms and programming
skills down. Or, get your drawing skills perfected if you are an artist.
You can specialize later, when you are in the industry. Do you have
any other advice or recommendations to share with students who are interested
in doing what you do? Learning to work with others is very important. Different people bring different knowledge and skills. So try to put together a small group that will work on a project. Choose a small project. It's better to work 3 months on a small project and finish it, than to work on a long project for 2 years and not finish. Learning how to finish something is important, and it's a different skill than just learning how to do the fun initial part. If you want to be a game artist, go to the mall or a café, every day, and sketch people. That's what most of the really good game artists I know did to learn to draw, and most of them still do it. If you want to be a game programmer get the following books: The C Programming Language, Brian Kernighan and Dennis Ritchie. They invented C. Everything you need to know about C programming is in this very short book. All fat C books are a waste of time. OpenGL Programming Guide, Woo, Neider and David. This is an excellent first book on graphics programming. Its starts you out at a nice high level. Michael Abrash's
Graphics Programming Black Book, by Michael Abrash is a good book to get
if you want to learn how to write your own software renderer. Skip the
first 600 pages, and start reading on chapter 35. You should also have a good linear algebra reference book around. This is not something you read to learn linear algebra, for that you should take a course, but it's useful to have around when you are trying to remember a mathematical relationship. There are probably lots of good ones. I use: Matrices and Linear Transformations, by Charles Cullen. This is part of a Dover series of math books that are very good. There are a number of books that have many short articles with code that help you solve programming problems. These are great to have right next to your computer: Numerical Recipes in C, and Graphics Gems 1-3.
|
||||||||
| |