
Essential Math for Games Programmers - Baustin
http://www.essentialmath.com/tutorial.htm
======
dvt
I think many analytic-type of people (I am part of this group) live in a
fantasy land in which the smarter you are, the better game you'll make. Wrong.
It's cute that you know how to interpolate quaternions from memory, but that
won't make you spit out a good game. First of all, lets look at the term "game
programmer": this term is slightly odd -- often times, especially when just
starting out, you'll be making games in an indie environment; in such a case,
you'll need to be a good game _designer_. Making an amazing indie game is
probably the best way to get in the game industry. Studying math is not.

I'd sum up the most important skill like this: "learn how to finish projects".
You can know all the math (or design) in the world, but if you can't finish
anything, no one will be impressed unless you want to be code monkey #3249 at
EA (and who wants to be that?). This seems easy when read on paper, but in
reality it's fucking hard a shit. I've probably abandoned about 95+% of game
projects I started. Anyone that says they finish more than 50% of the projects
they start is full of shit. This is a skill -- and it's by far the hardest one
to hone.

Note that it's not that I don't approve of OP's hard work compiling the list,
I just think it perpetuates the idea that good games == good technology.
Carmack is a CS genius, sure. But more importantly, he's a damn good game
designer.

~~~
nilkn
I agree with most of this post except this:

> Making an amazing indie game is probably the best way to get in the game
> industry. Studying math is not.

There are many specialized graphics programmers in the industry. They do not
design games. They do not write dialogue. They do not make any art. They don't
make sound effects. They don't design plots. But they absolutely do need to
know linear algebra and a lot of the stuff listed here. I think the only
problem with this post is that its title suggests it's aimed at the general
game programmer, but it's actually aimed at the graphics or physics
programmer, the sort of guy who would work on the Unreal Engine itself, not a
game made with the Unreal Engine.

EA is probably a really crappy place to work (don't know for sure, but that'd
be my guess). However, I've heard amazing things about, e.g., Valve, and I
think they'd be more than happy to hire a brilliant graphics programmer who's
never shipped an indie title that he built from scratch.

~~~
dvt
Fair points. But afaik you won't work at Valve unless you have a shipped
title. Where they _do_ make exceptions is with people like the CS devs or
Icefrog (DOTA). So I still think that if working as a game dev is what you
want to do, making a mod/indie title is the best way to go.

I know 3 people that work at EA. One of them likes it and two of them hate it.
I guess it's like working in any big company. My dad worked for IBM and hated
every moment. I, like him, don't think that could never really work at a big
company where my creativity/intelligence/drive is inconsequential.

Edit: let me just say that maybe there are extenuating circumstances -- for
example, if you presented some novel shading algorithm at SIGGRAPH or
something. But for the most part, I think my claim holds.

~~~
ameen
Valve isn't an ideal place to work. It has a floundering management structure,
hidden office politics and a failed bonus structure. It's only relevant
because of its meteoric success of Steam and skill of acquiring/courting
quality teams/devs.

It's been a long while since Valve has worked on one of their own ideas.

~~~
yareally
Portal 2 came out just two years ago

Dota 2 this year

------
kayoone
I can only recommend for any programmer to get into graphics/game programming
even if you dont have any prior knowledge. The required skills are vastly
different from web development for example. While in Web Development its alot
about Architecture, Services, binding countless of Technologies together in
the right way, game/graphics programming is alot more about programming clever
and well-performing algorithms and math. Add some network programming
(multiplayer) to the mix and you have one more extra level of complexity to
master. Gave me alot to learn!

~~~
GeneralMayhem
Game dev certainly also requires a lot of high-level architecture work. Making
a good modern game basically requires being world-class at everything, all at
once.

~~~
datalus
And being paid significantly less for it.

------
xedarius
Probably worth noting that over time the games industry has become more
specialised. The skills listed are essential for working in certain areas, for
example rendering, engine work and physics.

Knowing how to interpolate a catmull rom spline is not required of a network
programmer.

If you're considering a career in the games industry the best advice I can
give you is to create a demo of your work. Do not build something ontop of a
mod, build something of your own, be original and creative (something that the
list does not emphasis). Don't worry if you can't draw, it matters not.

~~~
dvt
I disagree slightly. I think that building a mod is, bar none, the best way to
test the waters of game design. Furthermore, many (many) extremely talented
game designers got into "real" game design by modding: from Counter-Strike, to
DOTA, to Natural Selection, building a good mod is easier and far more
consequential than slogging through building yet another Pong clone.

------
binarymax
Wow this resource is awesome. I don't really write games per se, but I enjoy
writing interactive visuals - and this will definitely help me get to the next
level. Thanks!

~~~
Cederfjard
Besides this, are there any other resources you would recommend for getting
into writing visuals?

~~~
binarymax
Thats the thing - Its hard for me to give you an exact resource - since the
first thing I ever coded was a visual, using logo, when I was a wee lad. Over
time I just kinda picked stuff up here and there, mostly by reading code that
others have done. For a long time I was obsessed with coding straight up
pixels, and writing putpixel routines. Even lots of the html5/canvas stuff I
do these days is just getting the context imagedata buffer and writing
straight to that. It was a totally organic process with zero structure.

So if I were going to start again from scratch, I would probably do the
following:

    
    
          - Choose one platform to target (HTML5/Canvas, WebGL, OpenGL, DirectX, etc)
          - Pick up a book and learn the basics of that platform, and do the exercises
          - Learn what you can about the APIs and start playing around.
          - Fractals and cellular automata are always fun - you can find Mandlebrot and game of life examples in pretty much any language.
          - Think of something in your head and try to make it happen!
          - Add interaction
          - Rinse and repeat

------
gcb0
This is only useful if you're writing your own 3d engine. For 2d and for using
existing engines just go read about polar coordinates and get really good at
trigonometry in general, both not much represented on this ... probably a
requirement new reading any of those anyway.

------
mrcactu5
I really wish they'd use PDF instead of powerpoint.

It's really surprising there's this much math in videogame programming.

There is all kinds of awesome geometry algorithms out there but I didn't know
if they were used in the real-world.
[http://www.cs.jhu.edu/~misha/Fall09/](http://www.cs.jhu.edu/~misha/Fall09/)

My background is in math without too much knowledge about specific video games
but I really love shapes. I wonder if I could fit in there.

~~~
nudetayne
The universe is governed by math. There's a surprising amount of math in
everything.

------
cwarrior
As a starting web programmer who has to create a lot of css/javascript
animations, this is amazing.

------
jheriko
i'm always wary of this kind of stuff. learning things upfront - not just for
games, but in general for programming - is often a fantastic waste of time.
the greatest skill to learn imo is how to research a problem effectively when
you hit it and how to (re)invent wheels when you need to... also, my
experience is that things learned this way stick better and are understood
more thoroughly.

------
kyle_martin1
Commenting to save.

~~~
cskau
No need. If you up-voted the post:

[https://news.ycombinator.com/saved?id=kyle_martin1](https://news.ycombinator.com/saved?id=kyle_martin1)

