Higher-Order Fun

Game Design & Game Programming

Math for game programmers 01 – Introduction

Here comes a harsh fact of life: game programming requires mathematics. One could say that programming IS, in a way, math, but you don’t really need to know math to write the vast majority of programs. Most of the time, you don’t need it to write parsers, to interact with databases, to validate data. Games, however, very often rely on mathematics. If you want objects to move across your world realistically, or if you want to draw things on the screen following certain geometric patterns, or if you want to check for collision between certain shapes, you need math.

But don’t despair! Even though I say “math”, what you ACTUALLY need is geometry. Luckily for us, geometry is probably the easiest part of mathematics! Now, I’m not saying that discrete mathematics, algebra and calculus are useless for writing games (or other sorts of programs), but geometry is the bread and butter of video game programmers.

An interesting thing that I did notice is that, despite my previous assertion, many game programmers do not actually know much geometry! This means that they’ll often do things in extremely laborious, buggy and verbose ways, when it could very easily be done with some basic grasp of geometry. For example, if you want to place several objects along an arc of circle, you COULD do it through trial and error, or place it in an image editing program (like Photoshop) and copying the coordinates, but it will be much easier if you simply use a parametric equation.

So I intend to write a few posts to explain, as clearly as I can, some topics that are important to game programming. These are the topics that I intend to cover:

  • Vectors
  • Parametric Equations
  • Vector bases
  • Basic Trigonometry
  • Matrices
  • Complex Numbers
  • Quaternions

While there are many basic and in-depth tutorials of all of the above topics on the Internet, explanations as to why the matter to game programmers and how to use them seem to be scarce, or left as an exercise to the reader. My goal is to make those topics easy to understand and put into use.

22 ResponsesLeave one →

  1. Kenneth Blok

     /  2012-09-03

    I bought “Mathematics for 3D Programming and computer graphics 3rd Edition by Langyel”, which I consider an absolute must if you want to understand what you are doing.

    It gave me a good base for reading the OpenGL Superbible 5th Edition by Writght, Haemel, Sellers and Lipchak.

  2. Ajay Parmar

     /  2012-09-03

    Great!! I am waiting..

  3. Ben Dover

     /  2012-09-03

    The best way to learn the topics mentioned here is to attend high school.

  4. Phil Mc Cafferty

     /  2012-09-03

    and study french of course, as everyone knows the french are the best mathematicians.

  5. P. B. Moss

     /  2012-09-03

    Quite clearly whoever wrote the last two posts certainly attended high school as they still posess the pathetic schoolboy humour. Grow up and get a life!

    This could be a very interesting series and I look forward to it.

  6. Alex

     /  2012-09-03

    I’m a mathematician and the mentioned topics are a piece of cake for me. Don’t need to waste my time on those. Better learn more programming, that can’t be enough for me since this is not my speciality.

  7. Alex

     /  2012-09-03

    And geometry is not the easiest part of math, trust me. While in algebra you can solve problems using more or less defined approaches, solving geometrical problems requires way more imagination and creativity. Nevertheless, I agree that the geometrical facts themselves are easier to understand since they don’t require as many sophisticated formulas as algebra. From this point of view, you are right.

  8. Mike Hanson

     /  2012-09-03

    You need a lot more than that. Reflection of objects on shiny surfaces such as mirrors, effects of gravity on objects, perspective in 3D games, develop sound effects to enhance image. These are just a few things to consider. I did get my start with geometry writing 2D games.

  9. FAbio

     /  2012-09-03

    As an engineer, I caught myself using geometry to solve many problems on development from very simple games, to factory software.

    It’s amazing how one problem can become very difficult when you don’t know the math. It’s like riding a mountain bike uphill without realizing it has gears to help you with that.

    What I don’t agree with you is that to me geometry is one of the hardest part of mathematics, it requires a lot of imagining (which I am not good at) so you can apply geometry correctly – should I use sin or cosing? This can entangle the brain sometimes and usually leads to some trial and error in my case.

    Now, calculus and statistics to me are much easier, it usually requires just to identify a problem and pick the right equation for the job.

  10. Brendan

     /  2012-09-04

    Awesome! You have been bookmarked my friend…

  11. Anthony

     /  2012-09-04

    Bookmarked, got a huge interest in math and programming, my degree is math, and application of math concepts in an application always fascinates me

  12. Anthony

     /  2012-09-04

    Great, Got a huge interest in math and programming, my degree is math, and application of math concepts in an application is exciting. Any physics write ups coming soon, I hear its important in games prog.?

  13. Nicholas

     /  2012-09-04

    Exciting! Looking forward to your posts!

  14. pakiza

     /  2012-09-05

    nice , i also love maths and computer programming . it is interesting for me too

  15. David

     /  2012-09-05

    Ben -
    And the best way for you to learn anything is to pull your head out of your *SS.

    Rodrigo -
    Looking forward to your posts.

  16. Edouard

     /  2013-01-17

    Thanks for the article !
    I can’t wait to read the one about the matrices.

  17. hiceka

     /  2013-02-17

    great article!!
    i’m korean programmer , i read your article to translate korean language
    thx :)

  18. Great information. Lucky me I found your blog by accident (stumbleupon).
    I’ve saved as a favorite for later!

  19. Hello, i think that i saw you visited my website thus i came to “return the favor”.I am attempting to find things to enhance my website!I suppose its
    ok to use some of your ideas!!

  1. Math for Game Programmers 05 – Vector Cheat Sheet | Higher-Order Fun
  2. Matematika (pontosabban geometria) játékprogramozóknak « MolePlex
  3. .NET i jiné ... : Odkazy z prohlížeče – 7.9.2012

Leave a Reply

*