I was recently put in contact via email with a high school student who was doing a projecting exploring various careers including game programming. He emailed me a set of questions and I responded with the level of depth I found nessecary. I thought some interesting topics were touched upon, so I’m reposting my response here. Do you think I got anything wrong?
Hi! I’m happy to help. However, I should make 2 things clear:
A: I consider myself a game designer who programs out of necessity. Those are two very different jobs.
B: I am not currently employed in the video game industry BUT I have over 1000 hours of game programming experience, I have attended GDC several times, I attended and aced a course on Game Development at university, I have completed many game jams, I’ve read many books on game development, have an extensive knowledge of video game history and I’ve followed the inner workings on the games industry for over a decade. With that as context, I shall answer your questions.
1. What do you find most challenging about Game Programming?
Programming can be great fun, but the exciting eureka moments tend to punctuate long stretches of implementation and bug hunting. Some people don’t mind this, but I tend to be impatient and get frustrated. This is especially true when something looks like it works and I start wondering if the problem lies in somebody else’s code (some tools that I have used have excellent documentation, others give you very little guidance about how they are supposed to work), So on the whole, I would say that staying patient and calm, even when something is taking three times longer than you expect, is my biggest challenge in programming.
2. What are the most helpful classes in college/university to prepare for Game Programming?
The most straightforward path is a computer science degree with an emphasis on graphics courses. However, there is always a shortage of people with strong math skills in the games industry so if you focused on those or even took a double major that would pretty much guarantee you a job and give you better long term prospects. Also, do stuff on the side like game jams. You want to understand how the game development process works before you get chucked in at the deep end in a real job.
3. What qualities do you think are important in an individual in Game Programming?
Patience, focus, communication skills and creativity. Any one of those on its own will go a long way, but if you don’t have, or can’t develop, at least two I wouldn’t peg you as a programmer. Also, a willingness to occasionally work until 4 in the morning. Deadlines are not optional in the games industry.
4. What is the greatest benefit in doing Game Programming as a career?
You get to make games! Also, it’s a very secure industry to work in. Studios shut down all the time, but once you get in you will always be able to find work.
5. How many hours do you work on Game Programming in a week?
Sometimes forty, sometimes none.
6. Describe the working conditions for someone working in Game
This is a sticky topic right now. A decade ago it was a horrible job. The last three months (and sometimes longer!) of development were basically hell, with eighteen hour days and people sleeping at the office. The video game industry has a very high burnout rate. Fortunately there have been some successful lawsuits and people are aware of the problem. Things have gotten better, but how much better depends on the individual studio. Of course, if you successfully go indie you get to dictate your own working conditions…provided you don’t overscope your project which everybody always does the first few times.
7. What programming languages are required to attain a job in Game
8. If you could meet anyone in game history, who would it be and why?
Fortunately, most major figures in the games industry are still alive, and I HAVE met some of my top picks! John Carmack is somebody I’d like to meet, but I’d probably just feel embarrassed. He is probably the single most important person in game programming. He wrote Doom. There is a great book about him called “Masters of Doom”. I’d also like to meet Gunpei Yokoi but I’m not sure that he spoke English. Also, he IS dead.
9. Describe your perspective on the role of a programmer in the development
of a game.
A lead programmer once told me that he saw his job as being to help the designers solve problems. As a designer I obviously like this answer :). It’s also an attitude that will ingratiate you into the industry. The fact is, however, that the programmer is the only person who could make a game without any help. That was originally how it worked. Of course, that was at a period when the video game industry very nearly died out because of the vast supply of terrible games, so I think our current system has worked much better.
10. Why do you play games, and what kind of games do you play and why?
All kinds of stuff, though I tend to prefer linear-ish single player games. As a designer I want to see as many different types of gameplay as possible, both good and bad. The reason that I like single player games is that they can be more finely honed to deliver a good experience, they actually have definable end, and they are capable of delivering a much wider range of experiences. That last one is my opinion, but I believe that it is objectively true.
11. Why is C++ language more preferred for Game Programming?
These days it isn’t necessarily. For engine programming and other low level work it is the only option (unless you want to work in assembly which you don’t) because it gives you more control and therefore allows you to make your code much more efficient. That strength is also what makes it unsuitable for higher level work. If the scripting and other high level functions are written in sometime like C# then everybody on the team can use them and you don’t need a programmer doing work that the designer would prefer to do themselves anyway. Even for programmers, C# is easier to work with than C++. You have to use the right language for the task at hand.
12. What gaming engines do you use for developing games?
I learned to code using Gamemaker, but like most indie developers I now use Unity. You can use it and release your games for free, and it is both powerful and easy to use. Not quite as easy as GM (which is still a fine learning tool), but infinitely more powerful. It also has excellent documentation, which I’ve already said is very very nice.
13. What motivates you into doing Game Programming as a career/profession?
I like video games and have spent far too much time learning about them to stop now.
14. What types/genres of games are most popular to the gaming community and why?
I don’t think you can answer that question anymore. It used to be “side scrollers yo” and then it was “shooters yo”, but such a wide range of people now play such a wide range of games that really everything has an audience. Are people who play Farmville for 50 hours a week less gamers than people who fire up Counterstrike on the weekends?
15. What do you enjoy most about Game Programming?
The moment when you suddenly figure out how to solve a problem, and the moment either twenty minutes or hours later when you implement it and it works.