Advertisement

Why don't they earn a lot?

Started by December 10, 2002 07:46 AM
58 comments, last by dcgeek 21 years, 11 months ago
quote: Original post by CheeseGrater
Computer Science majors from bad schools, or 'Computer Science' majors from schools who are really just teaching programming, maybe. At the 3-4 schools I've been involved with in various capacities, you couldn't get out without a couple of classes in calculus, linear algebra, graph theory, basic combinatorics, and probably ODEs as well.



If you think a couple of calculus courses and linear algebra is going to get you to were you need to be to code a modern 3d graphics engine, you are sorely mistaken.

Collision detection alone requires WAAAAAY more mathematics than linear Algebra. Its rooted in Vector Calculus and Analytical Geometry. Knowledge I myself, as a Physics major, did not have until my Junior year. Thats 3 years of mathematics courses. You telling me a CS major will have this same degree of mathematics knowledge?!

Ive met many a CS majors at the various places Ive worked, many were from very good schools. None of them had this kind of knowledge.

Ive worked for high technology companies, most recently at Applied Materials in one of the Engineering departments. If you are just a straight CS major, they wont touch you. Reason? Lack of mathematics skills for CS majors. They want people with BOTH Physics or some Engineering and CS backgrounds. Many game companies are the same way. Engine coders have to have superior mathematics skills well above and beyond what is required of CS majors.

Those of you out there saying 3d game engine coding is easier than an average business app, I ask you, have you tried to code one?

And Im not talking spinning and floating cube demos using Direct3d or OpenGL. Im talking a REAL engine with collision detection and response, kinematics, Animation blending, and other belles and whistles seen in modern games. Its not as easy as you think. The most technically challenging work I have ever done has been when developing a 3d game engine. Simply for the fact that I have to on many occasions derive the mathmatics behind my algorithms. In all my business applications work, never have I had to dig so deep into my mathematics background as I have with 3d engine coding.

Check this thread here and read the bottom post by a former game programmer. Ill quote it here as well. I totally agree with this guy. I disagree with the part about needing a MS in math though. I think any physics or engineering(mechincal,eletrical etc.) will give you the mathematics background needed. A BS in Physics and/or Enginereering and a BS in CS is what you need.

quote: Cutting edge game programming is orders of magnitude more technically challenging than business apps. To be a good game programmer you will need the knowledge equivalent of a least a MS in mathematics and a BS in EE. I realize this sounds like hyperbole, but 3D graphics is actually a wide-open field that is heavily reliant on algorithmic optimizations. To be on the cutting edge, which is where you need to be if you want to sell your games, you will need to be able to invent new algorithms (so an MS in math would come in handy).


[edited by - Wikkyd on December 11, 2002 10:01:39 PM]
Wikkyd~"Do what thou wilt shall be the whole of the Law!"~Aleister Crowley, The Beast 666
quote: Original post by Cold_Steel
Speaking of government jobs, I''m not entirely sure about this though...

Working directly for the US gov''t probably won''t pay that much, but you do get go health care and retirement plans

On the other hand(which is what I think some of you may be thinking about) are the private contractors contracted by the government. This is especially true from looking into the defense industry. You get companies like Lockheed-Martin or Raytheon or whoever. These software engineering jobs tend to pay higher than straight gov''t jobs. I''m not sure how the salaries compare to other industries, but they seem to be at least average.


This is what I was getting at in my first post. Thank you ColdSteel. Matter of fact I don''t where I said gov''t jobs directly anyway. Maybe it''s just me...

Beginner in Game Development?  Read here. And read here.

 

Advertisement
Just curious, how much lower typical experience game developer make let say 8-10 years of experience? Do they hire game developer as an independent consultant?

quote: Original post by Wikkyd
Check this thread here and read the bottom post by a former game programmer. Ill quote it here as well. I totally agree with this guy. I disagree with the part about needing a MS in math though. I think any physics or engineering(mechincal,eletrical etc.) will give you the mathematics background needed. A BS in Physics and/or Enginereering and a BS in CS is what you need.

Hate to burst your bubble, but all the maths and physics in the world will not make you a good game programmer. In fact, it has a tendency to make you a worse game programmer. Far too often you''ll find over-thought, over complicated, and frankly unmaintainable code coming from people who know the ''right way'' to do things...

No, what really makes you a good game programmer is experience, and really, there''s no substitute for it.

Personally, in my 8 years of game programming, I''ve never once had to apply anything more than basic 3D math skills. I don''t write graphics engines, I don''t write collision code, I don''t write animation systems. Games are more than these things. Furthermore, with the cost of development skyrocketing, these are the prime components for middleware solutions.
quote: Original post by scaught
Furthermore, with the cost of development skyrocketing, these are the prime components for middleware solutions.
Amen to that.

quote: Original post by Wikkyd

Collision detection alone requires WAAAAAY more mathematics than linear Algebra. Its rooted in Vector Calculus and Analytical Geometry.


I'm kinda curious to know what collision detection algorithm you're using. I get the geometry part, and the vector part, but calculus? I couldn't find any collision algorithm that used calculus.

The thing with a lot of this stuff, is that for game programmers, we aren't trying to make the game behave exactly like the physical world, we're just trying to make it look like it behaves like the physical world. There is a huge difference between reality, and the appearance of reality.

I have to agree with scaught. I certainly don't need to know anything beyond freshmen physics to program a game engine. For a science app, it would be different, but for a game, simple physics is enough. I don't need to be able to write wave equations for every object in my games, that's silly, but I do need to know how much friction there is, and what the velocities are.

Sorry to bring up the name, but I don't think Carmack has the kind of degrees you describe. I doubt his team has all the degrees.

Oh, I have to add this: I checked out that article about how you need and MS in math blah blah blah

Well, did you see the example the guy gives:
// Fast reciprocal square root
__inline float RSqrt( float number ) {
long i;
float x2, y;
const float threehalfs = 1.5f;
x2 = number * 0.5f;
y = number;
i = * (long *) &y
i = 0x5f3759df - (i >> 1);
y = * (float *) &i
y = y * (threehalfs - (x2 * y * y));
return y;
}

I really don't think this requires and MS in math to do something like this. Oh, and any CS student could pick out the redundant:
y = number;
why didn't they just have y be the parameter passed in, and then you don't have the redundant assignment statement. Hopefully an optimizing compiler would take care of this, but still, not really that impressive if you ask me.


[edited by - Cold_Steel on December 11, 2002 10:41:16 PM]
______________________________"Man is born free, and everywhere he is in chains" - J.J. Rousseau
Advertisement
It seems to me some people seem to be comparing very complex business programs with a 3D game with graphics on the level of Quake 2. DOOM 3 is certain to be very complex, as are many other recent releases, and many previous releases. Read David Eberlys 3D Game Engine Design, or any other book on the topic, youll see how much math is involved.
Im sure the difficulty and complexity is basically equal, business programs used by companies like Shell and Motorola and god knows how many other huge corporations have to do so much with software, globally, but the statement referring that the math is as complex? Why would a business program need to contain something like numerical methods? 3D engines require programming with that level of programming AND math skills. 3D studio max, and numerous other non-game programs are very complex and very mathematically complex, but I would hardly consider these business programs.
Im a computer science major at the university of Houston and I have to minor in math. I've checked the mathematical requirements for physics, EE, and CE majors and surprise surprise I have to study more of it and more advanced math. Something about a school whos Computer Science degree plan that doesnt involve a lot of math has something wrong with it.
The reasons you get less programming games: low budgets(the publishers want all the money), rediculous schedules(go from concept to product in one year, and oh yeah youll be understaffed half the time), and usually no advertising budget.

EDIT: just saw the thing about Carmack, unless he went back, he doesnt, he dropped out to program, getting a degree is neither a guarantee or a requirement that you will be able to make cutting edge software.

[edited by - digitec devil on December 11, 2002 10:53:21 PM]
quote: Original post by Wikkyd
Collision detection alone requires WAAAAAY more mathematics than linear Algebra. Its rooted in Vector Calculus and Analytical Geometry. Knowledge I myself, as a Physics major, did not have until my Junior year. Thats 3 years of mathematics courses. You telling me a CS major will have this same degree of mathematics knowledge?!


Obviously, that depends on how a curriculum is structured. I covered Vector Calculus in my freshmen year. I know a lot of people at my school didn''t get to it until they were sophmores, though. A well formed Comp Sci degree should be covering at least that much calculus, particularly at an engineering school.

And I doubt one really needs a lot of Analytical Geometry for collision detection. Colliding convex hulls isn''t all that hard, and most people are just going to use the qhull algorithm to generate those, not try to hand roll their own algo. A lot of FPS style games don''t even need that much: They make do with BSP collision and simple bounding volumes.


quote:
Ive worked for high technology companies, most recently at Applied Materials in one of the Engineering departments. If you are just a straight CS major, they wont touch you. Reason? Lack of mathematics skills for CS majors. They want people with BOTH Physics or some Engineering and CS backgrounds.


Admittedly, the higher end sim work tends to want a Comp Sci Masters of PH.d, or lots of experience. And obviously, physical simulation work goes to physicists. That isn''t the end-all of difficult programming, though. Besides, this really has nothing to go with game programming. It''s like comparing a paper airplane to a 747.

quote:
Many game companies are the same way. Engine coders have to have superior mathematics skills well above and beyond what is required of CS majors.


Specifics? I really haven''t heard this before. There are enough game companies around that don''t require degrees at all to make this claim seem a little strange to me.

quote:
Those of you out there saying 3d game engine coding is easier than an average business app, I ask you, have you tried to code one?


I''ve coded both. IMO, A 3D game engine is easier. I''d tell some specific stories but I''m under NDA for anything interesting.

quote:
And Im not talking spinning and floating cube demos using Direct3d or OpenGL. Im talking a REAL engine with collision detection and response, kinematics, Animation blending, and other belles and whistles seen in modern games.


Collision detection - Well researched problem, mostly solved with BSPs and bounding boxes lately.

Kinematics - Forward kinematics is high school trigonometry. Inverse Kinematics are a bit harder, but with a bit of Calculus knowledge and a good reference on Jacobians most can muddle through it.

Animation blending - Reducible to matrix multiplies. These days you can even let the hardware do this for you, since we''ve got ARB_vertex_blend.

Heck, the CS major I went through had an undergrad course (3D animation algorithms) that covered all of that.

quote:

Its not as easy as you think. The most technically challenging work I have ever done has been when developing a 3d game engine. Simply for the fact that I have to on many occasions derive the mathmatics behind my algorithms. In all my business applications work, never have I had to dig so deep into my mathematics background as I have with 3d engine coding.



I think I''m starting to see the difference of opinion. It''s true that 3d games have greater mathematical reasoning problems than business apps tend to.

On the other hand, the _Engineering_ problems involved with a business app are vastly greater. Game developers are dealing with a truncated software lifecycle, typically with a much smaller development team. Usually, you write an engine, use it for a couple years, then write a new one. In business apps, we''re concerned with maintaining a code base for (potentially) decades. And we have to maintain backward compatibility the entire time. That''s not to even mention the difficulties in managing a set of source code that''s a couple of orders of magnitude bigger than what you''d find in game development. Research shows that 90% of the engineering effort in a business project is spent in the maintenance phase. Compare that to what, a couple of patches against a game engine? Now think about the logistics of 50-100 (or more) developers working on the same codebase. Lots of companies need dedicated employees just to manage the version control systems.

I go to the University of Maine. We don''t require that much math really. For a BS its Calc 1,2,3, Linear Algebra, and Statistics. I''m going to minor in math anyway, as I only need two more classes. (Diff Eqs and something else.) Of course, the CS class Discrete Structures is very mathematical, and might was well be a math class too.

How do you have time to take other classes with that many math classes??? I was trying to minor in physics but I realized I''d have to take like 20 credit hours for the next two semesters (way too much work with a thesis too)

Is your school lax on other requirements like all that artistic expression and social stuff?
______________________________"Man is born free, and everywhere he is in chains" - J.J. Rousseau
I''m not really that smart compared to some people I know, and I''ve never went to University as a student (I worked in a lab, and taught intro to C), but I didn''t find it overly hard to implement most of the 3D stuff I''ve seen kicking around.

You don''t really need to know the math that well. It''s not important that a programmer understand the long way to rotate a point around an axis in 3D-- they only need the equation, and understand it enough to implement it.

I don''t write 3D games for a living, but a long time friend of mine does, and something he told me (while I was struggling with something one day) was that "you get used to thinking about things in a certain way". Thats true about everything else I''ve done, so why not this?

There are video game schools that teach this sort of thing, and they don''t require a degree is CS or Math to get in.

Real world problems are usually way more complicated than games-- you can''t ''fudge'' it, it has to be accurate (not just look accurate), and it has to work all of the time, on all of the platforms (that your client is paying you for), and by platforms I don''t mean Windows 95 and Windows 98.

Cheers,
Will
------------------http://www.nentari.com

This topic is closed to new replies.

Advertisement