Heron
An ergonomic physics API for 2d and 3d bevy games. (powered by rapier)
How it looks like
use *;
use *;
// Define your physics layers
Installation
For a 2d game:
= { = "1.1.0", = ["2d"] }
For a 3d game:
= { = "1.1.0", = ["3d"] }
Bevy Version Supported
bevy | heron |
---|---|
0.6 | 1 |
0.5 | 0.4 - 0.13 |
0.4 | 0.1 - 0.3 |
Design principles
- Use bevy types, resources and components when possible (
Vec3
,Quat
,Transform
,Events
, etc.) - Provide a single API that works for both 2d and 3d. (Like bevy does)
- Data oriented. Using this library should look like it is part of bevy.
- Avoid asking the user to lookup in resources via handles. Data should be accessible and modifiable directly in components.
- Hide the actual physics engine. This is an implementation detail the user shouldn't have to care about.
- But, allow advanced users to access the underlying rapier resources, so a user is never blocked by a missing element in the API of heron.
Feature flags
One must choose to use either 2d
or 3d
. If none of theses two features is enabled, the PhysicsPlugin
won't be available.
3d
Enable simulation on the 3 axesx
,y
, andz
.2d
Enable simulation only on the first 2 axesx
andy
.debug-2d
Render 2d collision shapes.enhanced-determinism
Enable rapier's enhanced-determinism
How does this project compare to bevy_rapier?
bevy_rapier plugin is an excellent option and should definitely be considered.
Here are some key differences between the two projects:
heron
tries to provide a smaller, simpler API that is easier to use.bevy_rapier
is more complete and powerful, but a bit more complex.heron
mostly hides the underlying physics engine, so you don't have to use rapier directly nor nalgebra.bevy_rapier
asks the user to deal directly withrapier
andnalgebra
.heron
is focused on games only.bevy_rapier
targets all kind of physics simulation applications (incl. games).bevy_rapier
is actively maintained by dimforge, the developer ofrapier
.heron
is also active, but cannot evolve as fast asbevy_rapier
can.
heron
is probably more suited for simple games and game-jams, where the ease of learn/use is especially valuable and where the lack of advanced feature isn't problematic.
bevy_rapier
is probably more suited for bigger/complex games and other types of physics simulations, where it may be better to learn/use a more exhaustive/complex API.
Contribute / Contact
You can open issues/discussions here or you can discuss with me (Jomag#2675
) in the bevy discord