What physics engine do you use?

Vilem_Otte 117 Aug 09, 2013 at 21:43

As I’m currently integrating rope and cloth physics into my game engine, I’d be quite interested - what physics engine do you use?

Let’s start with me, I’m currently (for quite a bit of time) using ODE (Open Dynamics Engine). I know that there are a ton of others (PhysX, Havok, Bullet, Tokamak, Newton, …) and I’ve used also some of them (PhysX in time of Ageia, Havok for little time and Newton), but I consider ODE by far as one of the best ones.
There are two huge advantages over some others that really got me - it is open source and portable (and no some garbage talk about portability and then impossible quest to get i, I’ve successfully ran it on Linux, BSD and Windows platforms). Also it is quite simple to use and can be really fine-tuned (as it seems to be the most low-level physics engine I’ve found so far + you can edit the source code of the engine :D).

Feel free to put a paragraph or two about them, I’m probably most interested whether some of you actually use Open Dynamics, or not.

6 Replies

Please log in or register to post a reply.

TheNut 179 Aug 10, 2013 at 02:16

For the longest time I used ODE for 3D physics, but I switched over to Bullet as I find it a more stable simulator. I don’t remember to much about it other than some meshes getting stuck or speeding up to infinity after being unstuck. I run my simulators at 60 hz so it’s not like I wasn’t giving the simulator enough precision to work with. It was a decent library though, very easy to use.

Lately I’ve been doing more 2D work and using engines like Box2D and Bepu. In all cases, I wrote a high level event-driven physics framework that lets me define the bodies and world. I wrote implementations for each physics library I support so my code is kept consistent and portable. Quick and simple stuff. In some cases I do my own physics, such as kinematics and projectile motion, various cosmological formulas, work, energy, entropy, springs, etc. I only use physics engines for complete worlds where I just have to manage which entities are simulated and let the engine do the rest.

fireside 141 Aug 10, 2013 at 06:34

I’ve had the most experience with Bullet, which isn’t much. The guy that authored it is pretty cool and started it with Blender game engine. I’ve seen it used on little java apps and it was pretty effective, so it basically will work on almost any 3d device. I think they all work pretty good. Luckily, it’s kind of a standard thing on engines now, so I don’t have to worry about it. I think they take a little individuality out of games, but it saves a huge amount of time.

Stainless 151 Aug 10, 2013 at 08:46

Most of the games I port use Bullet.

Some use PhysX

For 2D , most use Box2D

Kenneth_Gorking 101 Aug 10, 2013 at 10:01

I used to fiddle around in bullet, and added a custom derivable gravity class, so I could implement different types of gravity. Worked out pretty well.

I am currently messing around with Box2D, where I have implemented a fully working particle system, and am currently fighting to iron out the remaining bugs in my fluid implementation. Getting it to properly integrate into Box2D is a pain in the ass, but I am making progress :)

rouncer 103 Aug 10, 2013 at 11:36

Ive always done my own physics, havent thought about incorperating code just yet… but actually sounds like ive been probably doing things the wrong way. if direct x had a physics component i would have been doing this ages ago.

Vilem_Otte 117 Aug 10, 2013 at 12:54

Hey thanks for the answers.

#TheNut - As I’m messing with ODE for quite a long time (and I’ve digged quite a bit into the code), these problems are common and are caused by wrong setup. The sad thing is, that even reference document doesn’t show the correct setup, and most implementations online does it incorrectly. All in all I like its simplicity (and easy extensibility with your own source).

The Bullet seems quiet popular among you, I’ve never used it yet, but I might try it as soon as I will have some time.

For fluid simulations, I’m using a hacky solution (not accurate collision detection with objects, but good enough) that runs as OpenCL kernel -> mainly focusing on high peroformance, not accuracy. Particle simulations are another thing, as in most cases you can do just cheap tricks (e.g. F.e. waterfall soft particles go through character, you just test that your character is inside the waterfall “volume” and create emittors of waterfall particles on character faces that has normal in upward direction -> cheap trick that looks like collision “deflector”).

Anyway rope and cloth physics now works, yay! (and seems stable - we’ll see once I put it into some heavy situations)