physics engine


I have been thinking about writing a rudimentary physics engine (rigid body perhaps). I could make it public if people are interested.

Trouble is, I dont have any experiences with commercial API’s. I’m interested in seeing some API documentation.

Most importantly, I would like to ask what kind of an interface would you require. There are pretty complex issues, such as how to deal with the objects (mathematical models or mesh models)

Can some people here share their experiences?


This has been done 100 times before.

Try MAGIC at or perhaps the ODE stuff at http://

There’s a decent set of links at

Note that most of these libraries listed (even the free ones) have thousands of hours of design, work and debugging gone into them already. If you’re starting from scratch, it might be very interesting and educational for your own benefit, but the world is better served if you pick one of the existing projects and help it move forward instead.

First, thanks jwatte for responding. That is a excellent link and seems as if I had saved it somewhere.

Magic software is a set of algorithms, but I havent seen a physics engine in there. Im not talking about how to do collision detection algorithms, but a package that can handle the physics of a scene with gravity and various material properties like friction.

I was looking through the links, but didnt see anything I like yet. Do you know of a specific library for which you would give a high rating.

And certainly, I dont mind joining other people’s project, as long as it’s incomplete


I think jwatte meant to give you this link but it got lost in cyberspace.

Thanks harsman. I did indeed. Useful, yet incomplete – a perfect fit :slight_smile:

Fast, efficient, accurate, robust collision detection is the only hard part about a physics engine.

Really? I find collision resolution and dealing with stiff springs to be more challenging than the actual collision detection. Maybe we should work together

– Zeno

ODE seems a little better. Using a search engine is fine, but what can beat a human search engine?

Fast acurate collision detection is only of a physics engine. That’s really the first step, but Im not looking for code that does that since I already have some. Magic Software is a good example. Just take that and optimize the hell out of it.
I started out by getting rid of the OO stuff and already I was getting much better numbers. Then rearrange a bit. Got me 2.5 to 3 times better numbers. Then do SIMD (didnt do this yet). I think Magic Software never benchmark their stuff.

Im also considering other phenoma like smoke diffusion, destructable objects, liquids and so on.