Hah, yeah gizmos are really the main bottleneck here. Beyond 10k colliders I have to disable debug rendering or it just kinda tanks performance in this scene. At one point I tried to implement some custom line drawing stuff, but I didn't spend too much time on that yet
02.02.2026 22:39 β π 0 π 0 π¬ 0 π 1
Note that spatial queries such as ray casts and shape casts don't use this yet. Instead, they use a BVH from Parry, which we update and manage quite inefficiently. Reusing the broad phase BVH for spatial queries is next on my list!
02.02.2026 16:39 β π 5 π 0 π¬ 0 π 0
Huge thanks to DGriffin91 for implementing incremental leaf insertion and removal, partial rebuilds, improved traversal, and much more for OBVHS to make it suitable for physics <3
Go show him and OBVHS some love!
github.com/DGriffin91/o...
02.02.2026 16:39 β π 3 π 0 π¬ 1 π 0
Note that this doesn't necessarily mean that SAP is inherently slow, our implementation was just extremely basic π
though I do think that BVHs are the better choice for a general game physics engine. Plus, I designed it so that you can swap it out with your own broad phase algorithm if you'd like!
02.02.2026 16:39 β π 3 π 0 π¬ 1 π 0
Performance before (SAP) and after (BVH) for a scene with 40k static colliders.
The performance impact is massive for scenes with a large number of colliders. Previously, 40k static colliders in 2D could easily cost nearly 10 ms of the frame budget, while it is now under 1 ms. Dynamic scenes also perform a lot better than before.
02.02.2026 16:39 β π 6 π 0 π¬ 2 π 0
Avian's broad phase collision detection has finally been overhauled to use Bounding Volume Hierarchies from the OBVHS crate! Previously, basic sweep and prune was used.
This is a stress test with colliders in a grid moving randomly, rendering the resulting BVH. #bevy
PR: github.com/avianphysics...
02.02.2026 16:39 β π 43 π 5 π¬ 3 π 0
Thanks again to pierre-l for such great work on implementing a large and complex feature like this!
01.02.2026 23:24 β π 2 π 0 π¬ 1 π 0
Note that the implementation may end up being rewritten if/when we finally switch our XPBD joint solver to something else. But joint motors have been a common request, and the API will likely remain the same even if we change the internals, so I decided that it's worth shipping them already :)
01.02.2026 23:24 β π 2 π 0 π¬ 1 π 0
pierre-l on GitHub implemented them in #913 for revolute and prismatic joints, supporting both velocity control and position control. Three motor models are included: β¨ForceBased, β¨AccelerationBased, and β¨SpringDamper.
Spherical joints don't have motors yet, but will be supported in the future.
01.02.2026 23:24 β π 1 π 0 π¬ 1 π 0
Initial support for joint motors has finally landed on Avian's main branch! #bevy #physics #simulation
github.com/avianphysics/avian/pull/913
01.02.2026 23:24 β π 67 π 9 π¬ 1 π 0
A separate Avian 0.6 feature release with new functionality and improvements will be published when it is ready, hopefully in time for Bevy Jam #7 π€ There are some cool things coming in that one ;)
17.01.2026 01:23 β π 6 π 0 π¬ 0 π 0
Avian Physics 0.5 - Joona Aalto
Bevy 0.18 support
I just released version 0.5 of Avian, an ECS-driven physics engine for @bevy.org.
This is the first update under our new release process, where we publish Bevy version updates separately from feature releases.
As always, an announcement post can be found here:
joonaa.dev/blog/11/avia...
17.01.2026 01:23 β π 147 π 20 π¬ 2 π 0
A quick blog post on some recent changes and improvements to Avian's development, including new release and migration guide processes, a GitHub organization, and a dedicated Avian Dev Discord server. Also a brief update on plans for the 0.5 and 0.6 releases π
joonaa.dev/blog/10/evol...
15.01.2026 23:44 β π 47 π 6 π¬ 2 π 0
For reference, Rapier's KCC only considers one plane at a time (but does more iterations) and doesn't do depenetration. It performs fine with basic sliding, but *really* struggles with even mildly complicated geometry. Very jittery in multi-plane cases, and a whole 6 ms against the end of the tube π¬
26.11.2025 20:23 β π 1 π 0 π¬ 1 π 0
You can also run this in parallel for many character controllers, so I would expect you to be able to have hundreds or thousands of characters moving around simultaneously in most scenes. I haven't tested this yet though! Would be a cool benchmark.
26.11.2025 20:23 β π 3 π 0 π¬ 1 π 0
Depends on geometry. In this scene:
no collisions: ~5 us
sliding along two flat surfaces: 40-50 us
the side of the flight mask's tube: 400-500 us
the end of the flight mask's tube: 600-800 us
Most collision geometry in games should be fairly low-detail and cheap, unlike the flight mask here.
26.11.2025 20:23 β π 0 π 0 π¬ 1 π 0
@janhohenheim.bsky.social and I have been cooking this up over the past couple of weeks, but many others have also taken part. Special thanks to UB for a lot of early experimentation, IQuick143 and unpairedbracket for math help, and vero and several others for testing and feedback <3 you all rock!
25.11.2025 21:00 β π 4 π 0 π¬ 0 π 0
Note that this currently just includes a MoveAndSlide system parameter and related utilities. More user-friendly ECS-driven APIs, character controller features, and examples will come later.
25.11.2025 21:00 β π 2 π 0 π¬ 1 π 0
Our implementation comes with a robust (somewhat novel?) multi-plane velocity solver and depenetration, to minimize cases where you get stuck or encounter jitteriness. Preliminary results in testbeds and @janhohenheim.bsky.social's Source-inspired KCC bevy_ahoy are looking great!
25.11.2025 21:00 β π 4 π 0 π¬ 1 π 0
Avian finally has built-in move and slide, the movement and collision algorithm at the heart of kinematic character controllers! #bevy #gamedev #physics #kcc
PR: github.com/avianphysics...
25.11.2025 21:00 β π 176 π 20 π¬ 4 π 0
I have some more ideas for improving our processes, namely adding a contribution guide, collecting some useful learning reasources for physics simulation, and also switching to a more frequent release cadence with smaller, more incremental releases, but I'll have to chew on those some more.
18.10.2025 18:16 β π 5 π 0 π¬ 0 π 0
After seeing the old Avian URL for so long, it does look a bit weird now π
But I think it's good long-term, just a matter of getting used to it :)
18.10.2025 18:16 β π 6 π 0 π¬ 1 π 0
Wait... Was that a different URL I see? Yup! The Avian repository is now under a new Avian Physics organization instead of my personal profile. This is more professional, and more importantly, it lets us give people triage permissions to label or close issues and PRs, among other things.
18.10.2025 18:16 β π 5 π 0 π¬ 1 π 0
This has several major benefits: main branch users have migration guides available, the guides are kept up-to-date (and written by the people who made the changes), and I don't have to crunch at the end of each cycle to gather them from scattered PRs and spend ages fixing and updating them.
18.10.2025 18:16 β π 4 π 0 π¬ 1 π 0
Avian Physics 0.4 - Joona Aalto
Massive performance improvements, and overhauled forces and joints
I just released version 0.4 of Avian, an ECS-driven physics engine for @bevy.org.
This is the biggest release yet, featuring 3x performance(!), overhauled forces and joints, voxel colliders, Bevy 0.17 support, and much more.
As always, release notes can be found here:
joonaa.dev/blog/09/avia...
13.10.2025 12:09 β π 82 π 13 π¬ 2 π 0
Right now, the persistent nature of the implementation can make rollback networking trickier, so I kept an option to globally disable islands if they're causing problems (or if sleeping isn't needed). In the future, we might want to consider adding a non-persistent version as an alternative as well.
27.09.2025 21:45 β π 4 π 0 π¬ 0 π 0
Simulation Islands
Island management is a fundamental low level feature of physics engines and can have a big impact on solver design and performance. This was one of the first problems I decided to work on for Box2D ve...
Avian's implementation persists islands across time steps, minimizing island building and splitting overhead. It is primarily based on @erincatto.bsky.social's excellent Simulation Islands article and Box2D.
box2d.org/posts/2023/1...
27.09.2025 21:45 β π 4 π 0 π¬ 1 π 0
Previously, Avian only supported much simpler "per-body sleeping" that did not allow stacks of bodies or bodies connected by joints to fall asleep properly. This was always intended as temporary, but at least now we finally have the real thing :)
27.09.2025 21:45 β π 3 π 0 π¬ 1 π 0
Persistent Simulation Islands by Jondolf Β· Pull Request #809 Β· Jondolf/avian
Objective
Closes #578.
Sleeping and waking are crucial for reducing CPU overhead for large game worlds. Up until now, Avian has used basic per-body sleeping that only allows sleeping for dynamic bo...
Today, I finally merged simulation islands for Avian!
Islands are graph-like structures where bodies are connected via contacts or joints. They are used for sleeping and waking, which is crucial for reducing CPU overhead for large scenes with many dynamic bodies.
github.com/Jondolf/avia...
27.09.2025 21:45 β π 24 π 3 π¬ 2 π 1
The friendly tool for game dialogue! Plugins for Unity, Godot, Unreal (Beta) + more! Made by best mates who worked on beloved titles from Night in the Woods to Demonschool πππ±
https://yarnspinner.dev β’ http://discord.gg/yarnspinner
Independent. Previously: TF@Roblox
meshoptimizer, pugixml, volk, calm, niagara, qgrep, Luau
https://github.com/zeux
https://zeux.io
Engineering Fellow at Epic Games. Author of Nanite.
Somewhat autistic nerd, semi-reclusive, #rustlang coder, (very) amateur photographer, and otherwise bi enby. He/they for the most part.
| sachy.dev | https://tangled.org/sachy.dev/ |
I make games sometimes (mostly with the Bevy engine)
Current Project: A game based on taking Exit 3A on 277 in Charlotte, NC
Games I've Made: https://ramirezmike2.itch.io/
@godotengine.org project maintainer & co-founder at @w4games.bsky.social (he/him).
Free and #opensource software advocate. #indiedev and #Linux gaming. Frenchman in Copenhagen.
Also on: @akien@mastodon.gamedev.place.
tweet
hello is THIS social media
tweet
tweet
tweet
Staff (Senior) Software Engineer at Unity (2D Team). Torque 2D game engine. Anything on a bike. Oh, woodworking! Opinions are my own.
X: https://x.com/melvmay
UnityDiscussions: MelvMay.
https://johanhelsing.studio
#rustlang #bevyengine #gamedev
π¦π§π· Developer/Designer @prelude.ltda Working on VARG, a love letter the MS-DOS βboomer shooterβ classics, loosely inspired by Brazil's most iconic UFO case, using #BevyEngine
Wishlist it on Steam: http://store.steampowered.com/app/3363970/VARG
π¦ develops rustlang w/ vim
π§ on nixOS w/ sway
π¦ animates things w/o routine
Rust enthusiast, Bevy contributor, harbinger of no_std PRs, Tasmanian. (he/him)
rustlang reviewer and contributor, rustdoc team leader, gnome foundation member, co-owner of the Gtk-rs organization and of the askama-rs organization
Mastodon: https://toot.cat/@imperio
πΈπͺ Developer at W4 Games, working on #GodotEngine. Creator of the Godot Jolt extension. Previously at Frostbite, Avalanche and others.
Lead Game Tech Programmer at Guerrilla Games, creator of the Jolt Physics library.