The Talemonger's Emporium
spacer
Gameweavers
Q and A
Weird!
Gametalk
Cool Links
News
Site Info
Home
spacer
spacer Answer Archive
And the Question is...

"Just how *good* at Math do you have to be to become a decent games programmer? What type of project would prove that I was a decent games programmer?"

Submitted by: Michael Clair

Answered by: Jeff Pobst, PhD (programmer, Sierra On-Line)

"While it would be nice and easy for me to say you don't have to be that good at math to program, it would be a lie. Math and the concepts behind how math problems are solved are, in fact, the very basis of programming. Logic steps found in geometry proofs or general story problems are integral with strong programming skills. Graphics programming is filled with calculus, geometry, trig, differential equations and other advanced math concepts. The ability to use these tools when necessary is vital to being able to build a graphical entertainment software product.

"Does a good programmer have to be an exceptional math theoretician? No, I can at least say that with a good conscience. If they thought they were, well, then they'd go and get a Ph.D. in something like Aerospace Engineering, deal with high speed particle physics emanating from thermoelectric propulsion devices, and study their interaction with coherent monochromatic multi-photonic emissions that excite the particle's ground state electrons to upper radiative metastable states...

"Oops, sorry, that's what I did before coming to Sierra as a game programmer - so I guess I'm not helping here, hmmm. Besides, I still never thought that I was that great in math (and my Professors made it clear that they never thought I was that good in math either).

"All kidding aside, the road towards becoming a game programmer includes lots of math, but also includes many more things as well. Understanding overall software systems design is a process that is very important in the game world where an entire application is often built for the express purpose of the game at hand. In fact, when new games are created, management often wants to re-use as much code as is possible from a previous project. While that initially sounds like it makes the development process easier, it often can be a very difficult process to integrate something that was built to do process A in a certain way and combine it with code that does process B another way and needs A to be done differently. Understanding what the old code did, and why it did it that way, is essential to integration of key parts of that old code into the new product.

"Being able to develop a software system that ends up being a game, requires background and skill in things like: how to best have routines interacting, how to create modules of code that are easily accessible yet still resistant or resilient to bugs, how to build a 3D graphics rasterizer, how to deal with sound, how best to handle input/output scenarios, how to handle network information, how to handle class inheritance choices, how to best deal with inter-class communication using messages and events, and many other systems issues that go way beyond whether or not good code uses (a = a * 10) vs. (a*=10).

"Right now (and I would expect for some time) most of the major games are being written in C++. Many people know C++, but there are not as many who really know how to design all aspects of a program in C++ using only the necessary features and approaches. People who understand what approaches make code both flexible and fast, and stay away from using language features just because they can, tend to be more successful in this field, based on my observations.

"Aside from good coding and software design skills, management seems to look for really strong interpersonal and communication skills. Major games here are made by teams of 10-20 people and a project can be made or broken by the personalities on the team. Learning how to communicate with/to a group can potentially be an important factor on how far a game career can go.

"Game development teams are made up of programmers, animators, artists, sound engineers, testers, and management and these people all have extremely different backgrounds. Patience, tolerance, and an open mind to other people's problem solving approaches can be just as important as your programming skills.

"Where I'm going with this, is that my answer to your final question about what kind of project would best demonstrate your ability to be a game programmer, would include this human factor. In my humble opinion, the best type of resume project would be a programming project that involved many different people, both programmers and artists. Showing the ability to not only program, but design software, and work with a group of people to pull it off, in my mind, would be a excellent example of the type of skills that are required to make game software.

"So often, programmers work alone and while many good things do come out of that type of programming, there is a different, additional, skill set required on a collaborative effort product.

"Anyway, I hope my longwinded observations help you as you head into the next phase of your programming education."

Read more questions and answers! spacer

spacer
see LEGAL page for copyright information