Welcome to the sixth edition of This month in Dimforge! This newsletter provides you with a summary of important updates that occurred within the Dimforge community. This includes in particular updates about the Rapier (physics engine), Salva (fluid simulation), Parry (collision-detection), nalgebra (linear algebra), and Simba (abstract algebra) crates. This sixth edition will contain updates for the months of April and May 2021.
Announcing Rapier 0.9 + bevy_rapier 0.10 ⚔️
The release 0.9 was mostly focussed on improving the ergonomics of the crate by:
- Allowing user-defined storages containing rigid-bodies and colliders in place of the
RigidBodySet(which are still available). Actually the
Colliderstructs can also be optionally replaced by a set of individual components (
ColliderShape, etc.) This can make the integration of Rapier into another framework much more ergonomic (
bevy_rapier 0.10is an example of improved integration).
- Allowing colliders not attached to any rigid-body.
- Adding a few simple methods to get/set the translation and rotation of a rigid-body or collider (instead of setting the whole isometry at once).
- Adding an easy way to enable collision-detection between a collider attached to a kinematic rigid-body and a collider attached to a static rigid-body. More generally, we can now easily enable collision detection between two colliders attached to non-dynamic rigid-bodies by configuring their active collision types.
- Adding velocity-based kinematic bodies. They are rigid-bodies controlled by setting their velocity instead of their next position.
- Making collision events and physics hooks enabled for each individual collider explicitly instead of being enabled for all the colliders automatically. See the collider's active events and active hooks.
Check out the v0.9.0 changelog for an exhaustive list of the changes.
Completely rewritten bevy_rapier 0.10 🐦
Thanks to the support of user-defined storages in Rapier 0.9, we were able to rewrite our Rapier plugin for Bevy
bevy_rapier 0.10 to make it significantly more ergonomic (giving it a more bevy-native feeling) than
As a result, Bevy's
QuerySet are now used as rigid-body/collider storages instead of the
Rigid-bodies and collider are now defined as bundles (instead of the monolithic structs
The components in these bundles can be queried like any other components of
New, complete, user-guides 📖
During the past two months we have also been working at making the documentation of Rapier and bevy-rapier much more complete! We now have user-guides that cover all the available features of Rapier, excepted details about implementing your own custom storage for colliders and rigid-bodies.
- Create velocity-based kinematic bodies.
- Read contact information (contact points, contact normals, etc.) and intersection statuses from the narrow-phase
- Write custom filters (as JS objects implementing a specific interface) for applying any rule to select what pair of colliders can or cannot collide.
Check out the 0.6.0 changelog for a list of all the changes.
nalgebra v0.26 and v0.27: const-generics and macros 🎊
In April, we released the version 0.26 of nalgebra with one major changed: we integrated const-generics. Check out our dedicated announcement if you missed it.
In nalgebra v0.27, we added (thanks to the contribution from Andreas Longva) the macros
point! for constructing matrices/vectors/points in a convenient way. The length of the
matrix/vector/point is deduced automatically from the number of elements given to the macros:
point! macros can also be used in a
At the beginning of this year, we announced our 2021 roadmap for Rapier. During the past two months, we slightly diverged from that roadmap because we figured it was time to make the library more accessible to the community by improving its API (especially for bevy_rapier) and by providing comprehensive docs. Hopefully, this will make game-development in Rust even more appealing to newcomers, and will allow everybody to use the more advanced features of Rapier (that were not documented at all before).
We would like to thank the whole community and code contributors. In particular, thanks to the code contributors from the past two months1:
- Dave Farnham
- Thanks to users reporting spelling mistakes on the documentation. This is always appreciated.
- Thanks to users joining us on our discord server to provide feedbacks, discuss features, and get assistance!
Finally, thanks to all the former, current and new supporters through GitHub sponsors! This help is greatly appreciated and allows us to continue working on our open-source projects.
- The list of contributors is automatically generated from the past two months' github commit history. Don't hesitate to let us know if your name should have been mentioned here.↩