Some Advice for Future Game Developers

Editor’s note: Drawing upon his own experiences, Steve dishes out some advice on getting into the game industry as a programmer. Bitmobbers — can any of you give further insight into breaking into other areas of the industry? -Jason


programmingVideo games were the biggest pastime of my childhood, and by the time I was a sophomore in high school, I knew that I wanted a career in the game industry. The problem was that I had no idea where to start; I wasn’t even entirely sure what area I wanted to specialize in: production, design, art, or programming.

Now, the whole reason for writing this entry is to try to offer some advice to those of you who may be trying to get into the industry but don’t necessarily know what direction to take. I just happened to get lucky — even without proper guidance, I ended up studying topics that were, indeed, generally useful as a game programmer.

Before I offer up any of my opinions on getting into the industry, I feel that I need to state that I have only a few years of professional experience. Also, game development, in its current state, is undoubtedly more of an art than an exact science; as such, it can be difficult to dole out advice that’s 100 percent applicable 100 percent of the time.

Also, keep in mind that I’m speaking from my own limited experience, and please take anything I’m about to say with a grain of salt.

 

I heard that production was the easiest way to get your foot in the door (which I now know to be a falsehood). If you love games, who wouldn’t jump at an opportunity to be a designer of games? Outside of video games, my other real passion was drawing — hence, the appeal of being a game artist.

But ultimately, I settled on programming since it appealed to my sense of logic, problem-solving, math, and my general technical savvy. Production seemed too managerial, and art and design relied too heavily on creativity for my liking.

Unfortunately, narrowing down my focus to one field was the easy part…next, I needed to figure out where to start my path toward a career in game programming. I knew no one who worked in the industry, and this was back in the day before you could depend on finding any definitive or truly useful information on the Internet.

qbasic

So one day, while at a local bookstore, I checked out the computer/programming section and decided to purchase a book on QBasic. It was merely an educated guess based on my high school’s two programming courses, one of which taught QBasic.

I devoured that book in under a week; it was my first real exposure to programming, and I found it fascinating.  “You mean I can tell a computer to do anything I want?!”  In a way, I found this new ability to bend computers to my will intoxicating.

Within weeks of reading through that QBasic book, I tested out of the introductory class in programming so that I could sign up for the more advance programming class the next year, which happened to teach C++.  While I learned C++ in school during my senior year in high school, I taught myself Visual Basic outside of school.

halIn college, and even though it was still only an educated guess, I decided the major that would be most beneficial in terms of becoming a game programmer would be computer science. Again, within the computer-science curriculum, I tried to focus on taking courses that would be the most useful for game programming, such as courses in artificial intelligence, graphics, and game programming (duh). As it turned out, these were indeed useful courses, but it would’ve been nice to have had some guidance on the matter instead of just relying on my own common sense to determine what I should study.

Upon graduation, I didn’t feel prepared enough for an entry level position in the game industry, so I decided to go to grad school and study computer-graphics software development. I felt confident that specialization in this field would help me get a job as a game programmer, since just about every game has some sort of graphics. Plus, I the field attracted me because of my artistic endeavors as a child, and I figured these might give me some sort of edge.

It was during my second year of grad school that I landed an internship at a video-game development/publishing studio. And the rest, as they say, is history.


I’ve heard quite a few people ask if they should go to a college that offers specialized programs in game development.  In response, I would say it depends…it’s not a great answer, I know, but it’s a truthful one. It really depends on the school’s curriculum and who you interview with when looking for a job.

Some companies prefer hiring people with a background in game development. Some prefer a more well-rounded background. And others really could care less about your educational background, in which case, it comes down to your portfolio and how well you interview.

I will say this, though; I do greatly appreciate my own liberal arts background and having a more general computer-science foundation. I recommend trying to keep your education as well rounded as possible — dabble in several areas that interest you the most.

Overspecialization can end up backfiring and limiting the number of possible opportunities; most often, specialization will come as a byproduct of professional experience, anyway. On the other hand, you do want to be able to demonstrate to potential employers where your strengths lie, and if your background is too general, that might be difficult to do. In short, try to find a happy medium between generalization and specialization.

Also, keep in mind the industry’s nature of the industry. It’s extremely volatile and has an extremely high turnover rate. Back in grad school, one of my professors said that the average job in the game industry lasts less than two years. So if you’re thinking of getting a degree specifically in game development, just consider that it’s likely that you may find that you may not always want to make video games.

Speaking specifically to game programming and in favor of generalization, being familiar with a wide range of programming languages can be useful. Not only is each language an additional item to tack onto your résumé, but learning new languages will introduce you to practices and paradigms that you otherwise wouldn’t get exposed to.

s_eiffeltower3
Note: This isn’t the Eiffel you need to study.

That being said, the languages you’re most likely to get the most mileage out of, currently, are C++, C#, Python, and Java. Being extremely familiar with object-oriented principles will serve you well, and while you’ll get a heavy dose of object-oriented goodness in learning the above mentioned languages, you may also want to look into languages such as Eiffel and Smalltalk.

Many of my earlier classes in high school and college stressed the importance of math, which was something I questioned until I got to grad school and started doing graphics and professional-level game programming.  Trigonometry and calculus certainly have their uses within the domain of game programming, but most important of all is linear algebra…trust me, being comfortable with the core concepts of linear algebra will make your life easier on a daily basis.

code-breakers-1Being able to write optimized code is also key, and often a good way of trimming milliseconds is by being able to recognize when and where to use the proper algorithm, so be sure to pay close attention to your algorithms class.

Taking it a step further, something I missed out on until grad school was design patterns. I can’t stress how incredibly important it is to familiarize yourself and be comfortable with the more common design patterns.

Reading “best practices” literature goes a long way toward separating yourself from the rest of the code monkeys.  I like to think it’s what separates the programmers from the software engineers and the junior-level guys from the senior level guys.

And finally, even I sometimes struggle with this when in school or working a full week… but you really need to do some technical reading outside of class/work. Not only does it keep your knowledge up to date, your mind sharp and expose you to new ideas, but it also separates the journeymen from the masters. This will be a deciding factor on how long your career in the industry lasts.


I’m sorry that I wasn’t able to more specifically address the other areas of game development (production/design/art), but maybe if we ask nice enough, we can find other members of the Bitmob community who would be willing to offer up some more advice for aspiring game developers.