ODE Middleware

Wait for the new release. It will break backward compatibility, so there is no point in you getting into codding now, since you’d need to do some rewriting. Not that much, but enough to make it pointless to start before the new version.

The stuff that will come with the new release (probably tagged 1.0) includes:

  1. Continuous Collision Detection – it’s not as good as, let’s say, Bullet’s, but it does it’s job, which is to prevent tunneling. CCD is crucial for any shooter or any other game that features fast moving small objects. My implementation is based on casting geoms between the positions in two frames and it supports OdeBox and OdeSphere shapes. It also has visualization of the CCD process. It makes objects act less realistically after they bump off of something because I need to cut velocity on collisions, so it’s good enough for shooters and the like, but don’t try to make a sports game with it ;).
  2. More Object Oriented approach to object types (static, kinematic, dynamic).
  3. Easily extensible interface for loading egg maps in an “ode-aware” fashion. With that, the code will know what kind of object you want a certain node to be and it will automatically wrap an appropriate class around it. All you need to do is set a tag, or two, in Blender.
  4. Eliminating the need to use TriMesh for environment (except for details that can’t be approximated with OdeBox). There’s an interface that will get a Cube from an Egg and transform it automatically into a OdeBox (dunno, maybe sphere will come two, but not in this release). I did this because TriMesh is rather unstable, and it’s good to limit it’s usage
  5. Other: Optimization and ODE’s detailed friction model enabled by default.

That’s the most important stuff. So, as you can see, you should really wait for the new version. It will bring a lot of stuff and, let me stress this, it will break backward compatibility.

Coppertop

PS.

Technically yes, but it’s all because ODE uses a rather strange friction model by default. It contains a more detailed one though, which can be set with a flag on the OdeContact. As you can read above, this more detailed one is enabled by default in the new version.