Game Programming: Advice on Starting a Career in the Game Industry
By Paul Varcholik
If you’re anything like me, video games are a big part of your life. And now you’d like to parlay your passion for games into a career making them. That’s a story I hear often and one which is commonly followed by the question: “How do I get started?” As a game developer and a college professor, I’ve had the privilege of advising many people along this path and I’d like to share some of that advice with you.
Not that many years ago, you could be a professional game programmer without a college degree. You had to prove to your prospective employer that you were a skilled coder, but you could do it. Today, that’s just not a viable option. At last count there were 390 schools in the U.S. offering courses and degrees in game design and development, producing graduates that you will compete against for a limited number of positions.
If you are already a seasoned software developer, without a degree, your experience might balance the lack of a diploma. Or, if you’re a determined indie developer, you can blaze your own trail. But if your dream job is working on the next AAA title from an established game company, a college degree is your best bet.
For programmers, a 4-year degree in computer science (CS) is a tried-and-true route. In a CS program, you’ll learn both theory and practice, with an emphasis on problem solving, and develop a broad foundation in mathematics. Alternatives to an undergrad in CS include programs like software engineering, digital media, and dedicated game-development degrees. Mileage will vary from program to program and school to school, so you’ll need to do your homework to find a school that fits.
For some, a 4-year degree is enough to break into the game industry. But increasingly, students require post-graduate education to give them the necessary edge. Thankfully, there are a number of high-quality grad schools that have dedicated degrees in game development, often staffed by industry veterans. I teach at the Florida Interactive Entertainment Academy, a graduate game-development degree program at the University of Central Florida. I’ve seen first-hand, the benefits that a specialized program can offer to students looking for their first gig in the industry. Not only do such programs offer intensive, real-world training and a Master’s degree, but they also provide a network of contacts that can be crucial after graduation.
Industry Roles & Specialization
This essay is aimed at programmers, but there are a variety of roles in the game industry. Perhaps you’re interested in designing games, managing people and projects, or level design. If so, the industry would call you a “producer.” Or, you might be an artist and wish to specialize in illustration, 3D modeling, animation, or visual effects. Maybe you’re a musician or sound effects artist (aka audio engineer). Or perhaps you have so many interests and talents, that you aren’t easily classified. The industry is hungry for technical artists (that mysterious hybrid of artist and programmer) and technical producers (producers who also write code).
As a programmer, you might look to specialize in graphics, artificial intelligence, networking, tools development, or engine programming. But, here’s my advice. When you’re just getting started, don’t specialize. Learn about all of these topics.
Time and again I’ve interviewed hiring managers and asked them if they’d like us to train our student programmers in a particular direction. The answer that’s almost always provided is: “Just make them great C++ programmers.” If you develop a talent in a particular area, by all means use that to differentiate yourself. My advice is simply that the topic of game programming is huge and, when you’re just starting out, you don’t know what you’ll take a liking to, so don’t limit yourself.
In today’s game industry, the number and variety of platforms you can target is amazing. With few exceptions, if you have a penchant for a particular operating system, game engine, or programming language your skills are in demand. That said, I still recommend that you learn C++. Here’s the thing; it’s not just that (anecdotally) most games are written in C++. Or, that C++ is the go-to language for cross-platform development. Or even that, supported by the C++11 and C++14 standards, the language has enjoyed a renaissance of late. I advise learning C++ because it’s (arguably) harder to learn. To overuse a recently popularized term, you’re “closer to the metal” with C++ and I believe this necessitates a deeper understanding of the language and the underlying platform.
Moreover, I have found that students who already know C++, and wish to learn another language, have a much easier time than the other way around. For example, someone coming from a managed language like C# or Java, might struggle with C++ memory management or pointer syntax. I have not found similar concerns with C++ programmers learning a managed language. Please know that I do not suggest that these other languages are less sophisticated (indeed, anyone who knows me knows my affinity for C#). But, if you’re trying to be a game programmer, you will be well served by learning C++.
There are some wonderful resources at your disposal for learning about game programming. For C++, you should probably read everything that Scott Meyer has ever written. For game-specific topics I recommend Game Programming Algorithms and Techniques by Sanjay Madhav, and Game Programming Patterns by Bob Nystrom. And if you’re interested in graphics programming, I have recently authored Real-Time 3D Rendering with DirectX and HLSL.
However, when I recommend that you “read everything”, I mean more than just books about programming and game development. I find that the best game developers are very well read – regardless of subject matter. And if you struggle to find time to sit and read, pick up an audio book and “read” during your commute.
Start a Project
Finally, I recommend that to get started you should “get started.” Pick a project and get coding. But don’t worry about designing a game from scratch; instead, clone a few favorite games. The goal at this stage isn’t to design the next big thing – it’s to learn your craft. Note, I am not suggesting that you publish a clone of someone’s intellectual property. But, for your own educational purposes take a shot at reproducing Pong, Asteroids, and Chess. This might sound simple, but any of these games can be augmented to use features like 3D rendering, networked multiplayer, artificial intelligence, and persistent leaderboards. Start small and build outward.
For many, writing video games is a dream job. You can make that dream a reality; it just takes passion and persistence. See you in the game!
Paul Varcholik is a game programmer and a college professor at the Florida Interactive Entertainment Academy. He is author of Real-Time 3D Rendering with DirectX and HLSL: A Practical Guide to Graphics Programming and the author of two video series on graphics programming: OpenGL Essentials LiveLessons and DirectX Essentials LiveLessons, published by Addison-Wesley in 2014.