Jun 23 / 2011

Question of the Week | 6-24-11

By Sledgehammer Games

My name is Anibal. I'm currently in high school and I'm looking to eventually work for Activision and/or a developer like Sledgehammer Games. I am currently trying to learn C++ and C#. If you guys could please offer some advice to help me become a better programmer or developer, I would really appreciate it. I am also trying to learn how to use 3ds max and Autodesk Maya for 3D rendering. Again, I would really love to work for you guys someday.

Hello Anibal,

Great name! Sounds like a good developer gamertag: cAnibal. or Maybe Anibolic? With a gt like that, I bet you tear up the MP leader boards

Today the options for game developers are wider and more exciting than ever before. With the relatively recent introduction of mobile and social games now complementing AAA titles that rival Hollywood's best films, game development teams can be made up of just a handful of talented "many hats" developers, or can number into the multiple hundreds of development specialists. Find your interest; be it in art, engineering, audio, production, then strive to create work that you are proud to share. Be passionate about delivering excellence. It's fairly easy to make average software. Creating something gamers will love takes a lot of work, a lot of practice, and a solid commitment to your education.

Since you asked specifically about writing game code and more specifically rendering, I solicited some advice from Danny C., Sledgehammer Games' Principle Rendering Engineer. His advice:

1) First things first: Write a game.

This sounds daunting, until you realize you don't have to write a game that's as large in scope as your typical console game. Keep it simple. Design it, plan it out, use your Maya or Photoshop skills to create programmer art, and code it. Most game programmers I know started programming in middle school or high school and one of the first things they did after learning how to branch (if) and loop (for) was write a game. The fundamental challenge in game programming is problem solving and you'll get fantastic experience solving real game problems by diving right in. Almost every problem requires some sort of trade off. Using your critical thinking skills to make these decisions is important in figuring out your own programming style.

2) Learn 3D math/linear algebra

One of the prerequisites to working on rendering or physics code is knowledge of 3D math: the use of matrices in rotation and perspective projection, Euler angles, dot products, cross products. One way of getting this under your belt is taking a 3D graphics course in high school or college. Another is to learn from books and the internet. A deep understanding of 3D math will help in almost every aspect of game rendering, from the tools to the build pipeline to the game run-time.

The important thing is to keep at it. Your first game may not be great, but your second one will most definitely be better. At some point, you might join the console gaming industry or you might decide to become an independent developer. The great thing is these days both those options are available to you.

Best of luck, cAnibal!

- Michael and Danny

Do you have a question? Please submit them to info@sledgehammergames.com