http://chipmunk-physics.net/release/ChipmunkLatest.tgz
I just released 5.3.5 so I won't add a lot of fanfare to this. I've spent a ton of time working on this for the last 6+ months to get the new spatial index working well and all the changes to the contact graph and sleeping algorithms. While most of the work was cleaning up and optimizing the internals, there are a good number of new features as well.
Keep in mind that Chipmunk 6.x's API is not quite 100% compatible with 5.x. Make sure you read the list of changes carefully.
Also, keep in mind that this is a x.0.0 release and that it's likely there are still some bugs I don't know about yet. If you are near the end of a project, or bundling it with another library, I might hold off for a few weeks. For new projects, jump right in! I've spent a lot of effort rewritting the collision detection, sleeping, and contact graph algorithms that have required large changes and cleanup to the 5.x codebase. I've ironed out all the bugs that I know of, and the beta test went well. So it's finally time for 6!
Next up is creating a ton of new example material. From what I gather from feedback, one of the biggest problems with Chipmunk is that there isn't enough example material. I'm going to create new demos that actually show off more interesting things that you can do, popup inline examples in the docs for a lot of the sections, and a number of new tutorials.
CHANGES SINCE 5.x:
- API: Chipmunk now has hard runtime assertions that aren't disabled in release mode for many error conditions. Most people have been using release builds of Chipmunk during development and were missing out on very important error checking.
- API: Access to the private API has been disabled by default now and much of the private API has changed. I've added official APIs for all the uses of the private API I knew of.
- API: Added accessor functions for every property on every type. As Chipmunk's complexity has grown, it's become more difficult to ignore accessors. You are encouraged to use them, but are not required to.
- API: Added cpSpaceEachBody() and cpSpaceEachShape() to iterate bodies/shapes in a space.
- API: Added cpSpaceReindexShapesForBody() to reindex all the shapes attached to a particular body.
- API: Added a 'data' pointer to spaces now too.
- API: cpSpace.staticBody is a pointer to the static body instead of a static reference.
- API: The globals cp_bias_coef, cp_collision_slop, cp_contact_persistence have been moved to properties of a space. (collisionBias, collisionSlop, collisionPersistence respectively)
- API: Added cpBodyActivateStatic() to wake up bodies touching a static body with an optional shape filter parameter.
- API: Added cpBodyEachShape() and cpBodyEachConstraint() iterators to iterate the active shapes/constraints attached to a body.
- API: Added cpBodyEeachArbiter() to iterate the collision pairs a body is involved in. This makes it easy to perform grounding checks or find how much collision force is being applied to an object.
- API: The error correction applied by the collision bias and joint bias is now timestep independent and the units have completely changed.
- FIX: Units of damping for springs are correct regardless of the number of iterations. Previously they were only correct if you had 1 or 2 iterations.
- MISC: Numerous changes to help make Chipmunk work better with variable timesteps. Use of constant timesteps is still highly recommended, but it is now easier to change the time scale without introducing artifacts.
- MISC: Performance! Chipmunk 6 should be way faster than Chipmunk 5 for almost any game.
- MISC: Chipmunk supports multiple spatial indexes and uses a bounding box tree similar to the one found in the Bullet physics library by default. This should provide much better performance for scenes with objects of differening size and works without any tuning for any scale.