Math?

Started by
19 comments, last by Paradigm Shifter 10 years, 4 months ago

To be good, you can't know enough math.

Saying a computer programmer, especially a 3D game developer, doesn't really need to know much math is like saying a professional musician doesn't need to know anything about scales or rhythm or harmony or composition; all they need to do is be able to play like the guy in the You-tube video.

You need to know algebra: linear algebra (vectors, matrices, transforms and transformations, convolutions), set theory (groups, rings, orderings), combinatorics (permutations, combinations), graph theory, number theory (basis, generators, PDFs/CDFs/PRNGs, series and sequences). Error minimization when approximating real-valued functions using floating point or fixed-point representation. Computability theory and algorithmic analysis. Basic differential and integral calculus of arbitrary dimension is a prerequisite for an understanding of most physics.

If you don't like math, you may just be in the wrong trade. Now, go and practice your scales.

Stephen M. Webb
Professional Free Software Developer

Advertisement

Practice your scalars.

Some probability and statistics is good too, especially for AI or simulations.

Differentiation is also useful if you want to stitch together some curves together so they are smooth at the joins.

Also, the more you know the less you probably have to do yourself because you will know how to get the answer from Wolfram Alpha ;)

"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley
Saying a computer programmer, especially a 3D game developer, doesn't really need to know much math is like saying a professional musician doesn't need to know anything about scales or rhythm or harmony or composition; all they need to do is be able to play like the guy in the You-tube video.

It really depends honestly, you may be a 3d game dev and, with the abundancy of tools and engines nowadays, never have to go further than the basics when it comes to math. As you usually won't need to be a pro at composition if you're just a performer, the same way you don't need to be a professor in maths to be a 3d game dev. Math is merely a tool in game dev, of course it shouldn't get in the way, but nowadays(with all these "user-friendly" tools) you can make a 3d game with math knowledge from 8th grade.

The more math you know the better, but that certainly doesn't mean you can't pass up on math depending on your goals and the tools you use, and usually most of the things you would do have already been done and explained step by step, so even somebody with minimal math knowledge can manage. There's also the case when a guy starts delving deep into maths and learns all kind of things that he'll never ever need to use - remember your uni days, you surely have learned some things that you didn't need for tens of years. I would advise learning what you need now, as to keep a precise goal, rather than make maths your goal(lest you like it of course) - I believe you should look at math as a tool being a game dev.

P.S. Recently I got the chance to see some of the code of a relatively successful game, well I must say most things that had to do with math and didn't rely on library and tool implementations, looked pretty bad and the calculations and derivation of solutions to some of the problems were mostly inaccurate and more random than analytical(it was not the case of complexity/speed compromise) - I do not say that this is good, but the point is that you do not necessarily need to be really good at math to be a 3d game dev.

To be good, you can't know enough math.

Saying a computer programmer, especially a 3D game developer, doesn't really need to know much math is like saying a professional musician doesn't need to know anything about scales or rhythm or harmony or composition; all they need to do is be able to play like the guy in the You-tube video.

You need to know algebra: linear algebra (vectors, matrices, transforms and transformations, convolutions), set theory (groups, rings, orderings), combinatorics (permutations, combinations), graph theory, number theory (basis, generators, PDFs/CDFs/PRNGs, series and sequences). Error minimization when approximating real-valued functions using floating point or fixed-point representation. Computability theory and algorithmic analysis. Basic differential and integral calculus of arbitrary dimension is a prerequisite for an understanding of most physics.

If you don't like math, you may just be in the wrong trade. Now, go and practice your scales.


You make it sound so complex. Doesn't pdf mean portable document format?

UNREAL ENGINE 4:
Total LOC: ~3M Lines
Total Languages: ~32

--
GREAT QUOTES:
I can do ALL things through Christ - Jesus Christ
--
Logic will get you from A-Z, imagination gets you everywhere - Albert Einstein
--
The problems of the world cannot be solved by skeptics or cynics whose horizons are limited by the obvious realities. - John F. Kennedy


You make it sound so complex. Doesn't pdf mean portable document format?

3D graphics and maths can be quite tricky and complex. But most things are, until you learn them.

In this context, PDF probably (heh) means Probability Density Function.

http://en.wikipedia.org/wiki/Probability_density_function

Hello to all my stalkers.

Considering the context it is far more likely Bregma is referring to probability distribution functions, not the file format.


It really depends honestly, you may be a 3d game dev and, with the abundancy of tools and engines nowadays, never have to go further than the basics when it comes to math. As you usually won't need to be a pro at composition if you're just a performer, the same way you don't need to be a professor in maths to be a 3d game dev. Math is merely a tool in game dev, of course it shouldn't get in the way, but nowadays(with all these "user-friendly" tools) you can make a 3d game with math knowledge from 8th grade.

While there are plenty of libraries that provide all the nitty gritty capabilities for you in an optimized package, if you don't understand WHAT the libraries are doing and HOW they're doing it, you're going to find it extremely difficult to effectively use them. Sure, you may be able to use them to put together some very basic scenes, but debugging unintended behavior will more than likely degenerate into just trying a bunch of different things to see what works properly, or coming to these forums to get help from those that do understand the underlying maths. And putting together any reasonably complex behavior is going to require much more than 8th grade math knowledge regardless what libraries you're using.

While there are plenty of libraries that provide all the nitty gritty capabilities for you in an optimized package, if you don't understand WHAT the libraries are doing and HOW they're doing it, you're going to find it extremely difficult to effectively use them.

Not understanding what the library you're using does is already ridiculous whether it's math related or whatever, I for one wouldn't imagine a person using a library that he doesn't understand WHAT it actually does. As for not understanding HOW a library/tool does something, while I do not argue that it is useful knowing what's going underneath, it certainly it is not a necessity. Many of the details are abstracted from us as programmers when using a library/tool, whether it's math related or not, and you certainly don't need to know how everything works to be able to use it. And you are not going to find it extremely difficult to use a library/tool effectively without knowing it's whole internal structure lest that library/tool isn't user-friendly at all. There are plenty of examples for this.

Sure, you may be able to use them to put together some very basic scenes, but debugging unintended behavior will more than likely degenerate into just trying a bunch of different things to see what works properly, or coming to these forums to get help from those that do understand the underlying maths.

As I said not necessarily true in most cases, I can give you examples contrary to your statements for every one of them.

And putting together any reasonably complex behavior is going to require much more than 8th grade math knowledge regardless what libraries you're using.

I believe you haven't used libraries/tools of high enough level if you think that way, for example take a "programming language" like BlitzBasic 3D - I believe you'll be able to make even an 8th grader do a lot more than some people with a lot of math knowledge would be able to do wtih C++ + DX/OpenGL and lot faster at that, it's another matter that the quality won't be the same. Still you have plenty of tools that are even not made for good programmers, you can surely skip a lot of the math at many occasions.

Could you scare me and list all/most of the needed maths (vectors, matrices, algebra etc.)

UNREAL ENGINE 4:
Total LOC: ~3M Lines
Total Languages: ~32

--
GREAT QUOTES:
I can do ALL things through Christ - Jesus Christ
--
Logic will get you from A-Z, imagination gets you everywhere - Albert Einstein
--
The problems of the world cannot be solved by skeptics or cynics whose horizons are limited by the obvious realities. - John F. Kennedy

Could you scare me and list all/most of the needed maths (vectors, matrices, algebra etc.)

Here's what I needed most up till now(basics) when it comes to game dev:

Analytical Geometry:

- vectors: addition, subtraction, dot product, cross product, reflection

- plane equation, ray equation: intersections etc.

- polar coordinates, barycentric coordinates

- homogeneous coordinates

- 2nd order surfaces equations (sphere for example) - didn't really need all the details I once studied

Linear algebra - you really need to know only the basics:

- matrices: addition, subtraction, multiplication, inverse

- determinants

- Gram-Schmidt orthogonalization

Quaternionic analysis:

- quaternions - and rather mostly spatial rotations using quaternions

Can't really think of something that would require anything much harder when it comes to things that you'd stumble upon on a daily basis, however if you decide to delve even deeper let's say rendering equation, brdf, ray-tracing, physical simulations you may need tensors, calculus - usually whenever you see physics you'll need calculus, differential equations etc.

This topic is closed to new replies.

Advertisement