View Full Version : What game programmer should I be? need some advice.

04-16-2009, 04:09 AM
Creating some games on my own is fun but I think this is the right time I should focus on what field that I really want to be. I don't have any 3D game to show on you right now but after finishing this 3D maze that I'm going to make this weekend will really be a one step forward for me on my goal.

Graphics Programmer
- Excellent C/C++ programming skills
- Superior 3D math skills
- Expert in OpenGL, including the newest extensions ( e.g. shaders, vertex buffer objects, frame buffer objects ) and low level issues
- Experience with writing and maintaining shaders, both in high level languages (cg, glsl, hlsl) and assembler.

Physics Programmer
-Excellent C/C++ programming skills
-Superior 3D math skills
-Experience writing simulation code for components such collisions, contact force calculation, fluid-dynamics
-Experience with commercial game physics packages

So both needs to have a superior 3D math skills that I lack right now. So I think I should study on my own linear algebra or get a class on my university.

1) I suck so bad in designing or what I mean in arts. I hate web designing so I quit those CSS many years ago. So, can I still become a graphics programmer?
2) I may not be a god in math but can I still be one of these?
3) If linear algebra is the most advanced for 3D programming, what's in physics?
4) I want to know which of these two is better?

So please help me o my gurus! Teach me and give me some advice, Gurus.

04-16-2009, 04:53 PM
Be what you want.

04-16-2009, 06:07 PM
If game programmers are constantly having to deal with math, then their code is written wrong.

For instance, you need to understand quaternion math just long enough to write a QuaternionRotate() function (maybe 20 minutes?) If you're constantly thinking about math, something's not right.

04-18-2009, 07:39 AM

04-19-2009, 01:42 AM

I want to be good at both but it's not possible. Maybe time will tell which one I really love.


Yeah, I think you're right. So far I didn't use any linear algebra formula on my 3D maze. Actually, I didn't have any idea how to apply it in opengl.


Why physics? :)

04-19-2009, 11:46 AM
Since this has nothing to do with code, I'm moving this to GD.

04-19-2009, 12:38 PM
Game physics programming is not really like scientific physics programming. The goal in scientific programming is to get results which correspond to the theories you are trying to test. The goal of game physics is to generate effects which resemble real physical effects closely enough that the player will be fooled into thinking they are real.

It isn't always true that the best way to simulate game physics is with traditional physics simulation methods. It only has to LOOK right.

So I wouldn't necessarily separate game physics from other game programming. It's all the same idea, which is to create a simulated environment which is entertaining.

04-19-2009, 04:47 PM
Shawn Hargreaves Blog (http://blogs.msdn.com/shawnhar/)

04-19-2009, 06:21 PM

I want to be good at both but it's not possible. Maybe time will tell which one I really love.


Yeah, I think you're right. So far I didn't use any linear algebra formula on my 3D maze. Actually, I didn't have any idea how to apply it in opengl.


Why physics? :)

I don't know. I just like math.

04-19-2009, 07:25 PM
As someone who 1) doesn't play games but tries to appreciate their beauty 2) is in the midst of an occasional "3D graphics" programming fit 3) is also considering various alternatives to pursue in terms of a programming career (certainly not games -- but it would be an admirable thing to do), I would observe:

computer science and computer programming is a field where specialization has probably grown faster than any other "academic" realm remotely classifiable as science -- in history.
today I was trying to read more of "Mathematics for Game Programmers" (Tremblay), which I found at the library and is very good (I think). I figured it would be an interesting intro to basic linear algebra stuff (it probably is). The problem is: I was bored by math when I was kid, and figured my tastes had changed enough that I might get excited picking up where I left off. Boy, am I wrong. The only way I could get interested in this would be by force, like school.
you cannot spend your entire life in front of a screen or reading books (but you're free to try).
an interesting thing about the aforementioned book is that it could probably be read as an in depth guide of how to create your own 3D API (such as GL or DX); which since that's done already, might be better titled "A Mathematical History of Game Programming". And by that I do not mean that it is some how irrelevant to contemporary computer programming.
brewbuck really said it all; if you want to write games, you need to spend time doing it, and when you NEED math to solve a problem, go find it. The amount of trigonometry it takes to make a wireframe sphere was more than I was hoping, but starting from nothing (I had heard the word "cosine" before), it still only took me an afternoon (not a PHD!). It makes total sense to me that it is all about "three dimensionality". As a programmer you have to look at a niche in an ecosystem: while in the past one person may have done everything from soddering hardware to configuring interfaces, a production quality game is obviously the exact opposite of that, which is why the game industry is such a driving force in the industry as a whole (it puts money into specialization).

04-20-2009, 11:12 PM
Generally, game programmers are consumers of math, not mathematicians.

The larger point, though, is that there are many layers in a team in larger firms. The question becomes where within that team do you want to be, or do you want to become one of the 'new' style independent developers - one person doing the whole thing.

Posit for a moment a large firm, highly competitive and at the forefront of new technologies. Artists gain greater flexibility to create detailed environments, and generate massive volumes of graphical data, some of it descriptive of motion (like the motion of hair in the wind), some of it descriptive of special effects processing (complex materials), etc.

New physics modeling may be required, and one or more high priests of math may be employed to design that math, then hand the specifications over to the programming team to implement it.

Similarly, there could be many such design-programmer handoffs, where the programmers may exist in tiers of various levels of competence and training, all paid accordingly. Naturally, the lesser trained are more expendable, less appreciated, but if they survive that stage and gain experience, they may either ascend to higher tiers or into management.

If that image sounds a bit bleak, take it as a warning. Like any other treadmill, it can burn people out. The better prepared you are to excel in that environment, the better your experience will be, but make not mistake of the simple truth - it's about money to the company that employs even the best of them, and unless you are a part of the business, your skills are a commodity they purchase. The company may earn millions, but your salary will be a function of your negotiating skills, and the kind of 'game' the company plays in keeping their costs low.

This works the same way in all fields. There are hundreds of thousands of musicians that toil in obscurity, many of great skill. A few are wealthy, and some of them aren't even all that talented, but are packaged and sold well.

There are personality types that function best in an employment scenario. They lack the incentive and drive to make their own business (or the luck, which is part of it). There are some that simply can't be content as an employee, but must be a creator - an entrepreneur. Depending on what you really want, and what you really are capable of, you should figure out where you are best suited.

Underneath your original question, though, is a larger philosophical point. You are asking, almost literally, if you really have to work all that hard at something you're not that comfortable with, math namely. You asked, too, which is better.

First, you really need to learn the basic point that no matter what you do, you'll get out of it what you put into it. Either decide, and dedicate your entire mental energy toward that, or don't - and benefit accordingly. It's a bit harsh, but then it's also like asking if you have to really run all that fast to get into the Olympics.

Second, physics is more about math than graphics. Physics engines are so plentiful now that you're either relegated to using an existing engine, in which case you're not really a physics engine programmer - or you're inventing new ways to portray detailed physical phenomena, and thus heavily steeped in the mathematical means of portraying it.