Beginning Physics Engine Development

Please don't post Bullet support questions here, use the above forums instead.
Boshtron
Posts: 1
Joined: Wed Jul 07, 2010 1:19 pm

Beginning Physics Engine Development

Post by Boshtron »

Hi everyone

A little background first, I'm going to start my dissertation "A physically-based mario kart game" which will involve me creating a physics engine for simulating karting around a track. I have 3 vehicle dynamics books, the "Physics Engine Development" book by Ian Millington and have just ordered "Game Physics" by Eberly and the Morgan Kaufmann series book, "Real Time Collision Detection". Obviously, alot of material to cover.

I did take a physics module on my course and based the physics for the module on the "Physics Engine Development" book by Ian Millington and I'm guessing that the iterative/impulse method he used won't be good enough for a racing game. So are there any papers out there that discuss multi-threaded algorithms or design for physics engines? What other methods (apart from the impulse method) are there? Are there any other methods that contacts can be solved? I think I've got a grasp on the physics I need to use but implementation details are hazy.
I'll take a look at the source code for bullet and some other open source engines but I think that without reading any of material the implementations are based on, it'd probably be harder for me to figure out what's going on. For example, constraints and constraint solvers? I think I read a little about them in Jason Gregory's book "Game Engine Architecture" but I'm pretty much in the dark about them. I know they will be important for a racing game though!

My area of interest is graphics so I'm competent with maths but all this physics is overwhelming (even though I did take A-Level (AP) Physics). Any help or guidance would be appreciated.
Johan Gidlund
Posts: 26
Joined: Mon Jun 01, 2009 2:21 pm
Location: Sweden

Re: Beginning Physics Engine Development

Post by Johan Gidlund »

For collision detection I suggest using GJK which is described in the "Real time collision detection" book you bought.
That is what is used by Bullet, Havok and many other engines and should be sufficient for any game you write.
In racing games it's quite common though to peform raycasts from each of the wheel down along the y-axis instead of using the actually contact points.
This is to allow a more customized spring simulation to avoid a feeling of driving without suspension.

Is the impulse method you are talking about Sequenzial Impulses? SI is very common and what Bullet uses (I think?).
Should be sufficient for you as well I suppose.
You also need some special handling for your actual vehicles since they don't really behave like common rigid bodies.

The scope of your question really is massive but this should be some kind of start at least.