Jondolf
jondolf.bsky.social
Jondolf
@jondolf.bsky.social
190 followers 29 following 34 posts
University student and software enthusiast, working on Avian Physics for #bevyengine. https://github.com/avianphysics/avian
Posts Media Videos Starter Packs
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.
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 :)
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.
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.
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...
Avian Physics 0.4 - Joona Aalto
Massive performance improvements, and overhauled forces and joints
joonaa.dev
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.
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 :)
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...
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...
github.com
A huge thanks again for @erincatto.bsky.social for the amazing work on Box2D and for continuing to make game physics more open and approachable. The SIMD Matters article was a huge help, though my design does have the added complexity that each contact pair can have more than one manifold :)
Not only does graph coloring make it possible to use multi-threading for the solver, it also allows us to accelerate the solver with AoSoA-style wide SIMD! This is not yet implemented, but I am working on it right now ;)
You can see that our baseline single-threaded performance is still much worse than Rapier. This is due to the broad phase and some other unoptimized parts. Expect improvements in the future.
Engines like Rapier instead only have inter-island parallelism, which means that large islands are solved serially, unlike with graph coloring. Our solver now scales better, and is even faster than Rapier for large islands when multi-threaded!
("avian2d main" is old, "avian2d graph-coloring" is new)
Graph coloring assigns constraints to "colors" such that no adjacent edges in the constraint graph shares the same color. This ensures that each body appears at most once in each color, and constraints within a given color can be solved in parallel without race conditions.
This was my second game jam ever (the first was Bevy Jam #5), and it was definitely really fun, though also tiring :P Looking forward to doing more game jams in the future!

P.s. Give Chainboom a try, preferably with a native build, and consider rating it on itch.io!
I'm supremely proud of how this all came together, and how much we managed to implement in just nine days, from the mapping and gameplay to the VFX, SFX, soundtrack, and UI. There are even gore settings to limit the amount of blood and dismembered limbs, both for your eyes and for performance :)
It has a standard mode with 10 waves of zombies, and an endless mode to see how long you can survive. After each wave, you can pick one of three upgrades to help you along the way. There's a lot of cool movement and strats you can use!
I got to do a little game dev for once, for #bevy Jam #6! Our team's submission is Chainboom, a first-person shooter where you shoot your way through waves of exploding zombies, chaining together explosions to survive amidst the chaos.
janhohenheim.itch.io/chainboom
Chainboom by Jan Hohenheim, Mafii, Jondolf, PlsgiveMango
Shoot your way through explosive zombies!
janhohenheim.itch.io
I just released version 0.3 of Avian, an ECS-driven #physics engine for @bevyengine.org.

Highlights include observable collision events, collision hooks, physics diagnostics, reworked contact pair management, and Bevy 0.16 support.

The announcement can be found here:
joonaa.dev/blog/08/avia...
Avian Physics 0.3 - Joona Aalto
Improved contact reporting, collision hooks, and many more collision detection updates
joonaa.dev
Reposted by Jondolf
Swimming controls and Archimedes' principle 🛟🏊

#gamedev #indiedev #solodev #indiegame #BevyEngine