VB:Tutorials:Building A Physics Engine:Introduction

From GPWiki

Files:GUITutorial_warn.gif The Game Programming Wiki has moved! Files:GUITutorial_warn.gif

The wiki is now hosted by GameDev.NET at wiki.gamedev.net. All gpwiki.org content has been moved to the new server.

However, the GPWiki forums are still active! Come say hello.

Series by Nicholas Gorski [GMan]

This series will provide article's describing how to build a rigid body physics simulation in 2D. The algorithm's used, however, can be extended into 3D with some effort.

The Engine

For collision detection, this engine will use the Separating Axis Theorem. Secondly, the integration method used is a simple Euler intergration. When the engine is finished, you may feel the urge to change this to a different method, say, the Runge-Kutta.

Like most engines, this can only handle convex polygons. However, you may add joints to the engine and combine convex objects into concave objects. It is a great trade-off for the speed this method brings.

Lastly, a common problem with physics library is fast moving objects. Sometimes they tend to go through each other. That is not a problem with this engine. It will catch all collisions.

The Series

This is a list of the articles in the series:

  • Collision Detection
  • Rigid Bodies
    • Handling Rotations
    • Contact Points
    • Rigid Body Dynamics
  • Extra 'stuff'
    • Information Packets
    • Segment-Polygon Collision Detection
    • Springs
    • Joints
  • Final Touches
    • Optimization
    • Suggestions

Assumptions

There are a few things you should know before reading. Firstly, physics is all about vectors. If you are a little weak on those, go on and read this. Read about the 2D stuff, it tells you all you need to know. Also, the most obvious assumption I'm making is that you know Visual Basic.