Total Pageviews

Saturday, 12 July 2008

Essential Math for Games Programmers

Current Description

As the visual quality of games has improved, more attention has been given to other aspects of a game to increase the feeling of reality during gameplay and distinguish it from its competitors. One of the most rapidly growing fields is physical simulation, as shown by discussion boards, the latest games, and a recent burst of articles and papers. Creating such a simulation may appear to be a daunting task, but given the right background it is not too difficult, and can add a great deal of realism to animation systems, and interactions between avatars and the world.

This tutorial deepens the approach of the previous years' Essential Math for Games Programmers, by focusing in on this topic of physical simulation. It, like the previous tutorial, provides a toolbox of techniques for programmers interested in creating physics engines, with references and links for those looking for more information. The focus of the course is to study the simulation pipeline and show how problems along the way can be solved and optimized using standard 3D mathematical concepts and engineering know-how.

Topics include rigid body dynamics, verlet and implicit integration methods, constraint systems, collision detection, collision response, rag doll and IK systems. Potential special topics include dynamic destruction, fluid dynamics and using GPUs to improve simulation performance. Sample code libraries and examples are provided.

Current Materials

Slides

Fully updated versions of the slides and sample code used to present the tutorial at GDC 2008 are as follows:

Problem Overview (Squirrel Eiserloh)
Dynamics 101 (Marq Singer)
Numeric Integration Methods (Marq Singer)
Numerical Robustness (for Geometric Computations) (Christer Ericson)
Reframing the Problem (Squirrel Eiserloh)
Collisions using separating-axis tests (Christer Ericson)
Collision Detection (Gino van den Bergen)
Modelling and Solving Constraints (Erin Catto)
Physics Parallelization (Erwin Coumans)
GPU Physics (Marq Singer)

See below for further materials from past years that may be useful. The code samples in particular contain code for simple dynamics and collision.

Past Materials

Fully updated versions of the slides and sample code used to present the tutorial at GDC 2007 are as follows:

Problem Overview (Squirrel Eiserloh)
Dynamics 101 (Jim Van Verth)
Numeric Integration Methods (Jim Van Verth)
Numerical Robustness (for Geometric Computations) (Christer Ericson)
Reframing the Problem (Squirrel Eiserloh)
Collisions using separating-axis tests (Christer Ericson)
Collision Detection (Gino van den Bergen)
Modelling and Solving Constraints & Contact Manifolds (Erin Catto)
Soft Body (Marq Singer)
Destruction (Marq Singer)
Squishing and Sound (Marq Singer)

Fully updated versions of the slides and sample code used to present the tutorial at GDC 2006 are as follows:

For those slides in PowerPoint Show format, the original PowerPoint materials are also available upon request.

In past years this tutorial was more general, providing a toolbox of techniques for programmers interested in improving their 3D background. The focus of the course was to follow the rendering and dynamics pipelines and show how problems along the way can be solved and optimized using 3D mathematical concepts. The following PowerPoint Show files and PDFs have been collated from all six years of the tutorial and organized by subject. They provide background material for those who are interested in the basics of 3D math and programming. The original PowerPoint materials are also available upon request.

Core Mathematics

Rendering

Animation

Simulation

Demo Code

This collection of demo code is from the GDC 2005 presentation, and covers many of the topics listed above. The following archive has all the files you need to compile and run the demo code on Windows. You will need at least Microsoft Visual Studio 6. They should transfer to Microsoft Visual .NET with no trouble.
Windows 2000/XP Source

In the past we have supported the Mac, but at the moment none of us have a working machine much less one with MacOS X. The following files are provided for historical purposes only, and are no longer supported. You will need Codewarrior 6, at least MacOS 8, and the OpenGL SDK.
MacOS 8/9 Source

The copyright on these files is held by Red Storm Entertainment and Ubisoft. You can use them for personal purposes, but cannot redistribute them in source or binary form. No warranty is implied; use at your own risk.

For more polished code and demos with a less restictive license allowing them to be used in game development, and that can be compiled with non-Microsoft compilers, MacOS X, and Linux, please purchase a copy of our book.

No comments: