
Inspector General, Generalized Atmospheres, and Abym's Steam Page
2025-10-27
This week sees the creation of the Inspector General working group, whose members are attempting to build a bevy-native Entity inspector. You can find this working group in the #working-groups category in the Bevy Discord.
In the ecosystem, CoACD-rs was released as an implementation of Approximate Convex Decomposition for 3D Meshes with Collision-Aware Concavity and Tree Search... which is a mouthful but very cool.
Upstream Bevy's Atmosphere support gained new generalized configuration, and Resources as Components is starting to gain steam. While Abysm (winner of the 2024 community-run Bevy spooky jam) got its Steam Page.
Generalized Atmospheric Scattering
#20838 generalizes the terms of Bevy's Atmosphere support, enabling a higher degree of control over how light scatters in an atmosphere. This in turn makes it possible to better emulate environments like dry, dusty deserts.
fn init_atmosphere(mut commands: Commands, scattering_media: ResMut<Assets<ScatteringMedium>>) {
let earth_atmosphere = scattering_media.add(
ScatteringMedium::new(
256,
256,
[
// rayleigh scattering
ScatteringTerm {
absorption: Vec3::ZERO,
scattering: Vec3::new(5.802e-6, 13.558e-6, 33.100e-6),
falloff: Falloff::Exponential { scale: 12.5 },
phase: PhaseFunction::Rayleigh,
},
// mie scattering
ScatteringTerm {
absorption: Vec3::splat(3.996e-6),
scattering: Vec3::splat(0.444e-6),
falloff: Falloff::Exponential { scale: 83.5 },
phase: PhaseFunction::Mie { bias: 0.8 },
},
// ozone
ScatteringTerm {
absorption: Vec3::new(0.650e-6, 1.881e-6, 0.085e-6),
scattering: Vec3::ZERO,
falloff: Falloff::Tent {
center: 0.75,
width: 0.3,
},
phase: PhaseFunction::Isotropic,
},
],
));
commands.spawn((
Camera3d::default(),
Atmosphere {
bottom_radius: 6_360_000.0,
top_radius: 6_460_000.0,
ground_albedo: Vec3::splat(0.3),
medium: earth_atmosphere,
},
));
}
Traversing Dynamic Relationships
#21601 introduces an API for traversing Relationships in dynamic contexts.
This allows traversing relationships without knowing their type, such as when you only have a ComponentId.
Text Improvements
Implelementations for text underline and text strikethrough were added, along with new examples.
Internal Removed
An internal component called Internal was previously added, resulting in behavior like Observers being filtered out of queries by default. After further consideration, this component is being removed and will not exist in 0.18.
Split AmbientLight
Resources as Components is progressing, and as a result one of the only structs that derived Resource and Component has been split into two.
AmbientLight is now AmbientLight (the Resource) and AmbientLightOverride (the Component).

Showcase
Bevy work from the #showcase channel in Discord and around the internet. Use hashtag #bevyengine.

BiRP: Dioxus-based Inspector
showcase
A snapshot of a Bevy 0.17 inspector that uses the Bevy Remote Protocol to interact with a Bevy application and Dioxus for the user interface.

Abysm Steam Page
showcase
Abysm started as a submission to (and winner of) the community-run Bevy Spooky Jam in October 2024. It's a physics based puzzle game with action elements, handcrafted pixelart, and atmospheric sound and music. The demo will come to Steam in a couple of weeks or so, but it's already available on Itch

Starlight
showcase
A new cooperative rpg/dungeon crawler that already has sound effects and the ability to escape start your escape!

Crates
New releases to crates.io and substantial updates to existing projects
bevy_fsm 0.1
crate_release
bevy_fsm is an enum-based observer-driven finite state machine framework. Add EnumFSM::StateVariant as component and use automatically derived events for state changes.
bevy_enum_event 0.2
crate_release
bevy_enum_event provides proc macros to generate events from enum definitions.
#[derive(EnumEvent, Clone, Copy)]
enum LampFSM {
Active,
Inactive,
}
fn ( light_switch: On<lamp_fsm::Active> ) {
// Insert switching on the light
}
bevy_eulerian_fluid 0.2
crate_release
2D fluid simulation!
0.2 brings two-way interaction between fluids and Avian rigid bodies.
bevy_ingame_clock
crate_release
bevy_ingame_clock provides an in-game clock system with date/time tracking, configurable speed, sending events on time based intervals, and flexible formatting. It is a crate that was split out of a Tycoon/Management/Sim game.
CoACD-rs Preview
crate_release
CoACD-rs: Approximate Convex Decomposition for 3D Meshes with Collision-Aware Concavity and Tree Search (link), implemented in Rust.
Many efficient geometry processing algorithms require convex shapes, for example in collision detection. Concave shapes are thus typically decomposed into convex parts using a convex decomposition algorithm. CoACD is one such algorithm that uses a "collision-aware" concavity metric and a multi-step tree search to decompose a mesh by recursively cutting it into smaller pieces.
CoACD preserves collision conditions of the input shape better (ex: doesn't fill holes) and with fewer components than methods such as V-HACD (used by Parry), making it ideal for games and other applications that require delicate and efficient object interactions.
Currently, the core algorithm is working, but mesh pre- and postprocessing options such as hull merging are not yet fully functional (see redundant hulls on the rectangular ring).

Devlogs
vlog style updates from long-term projects
QPROJ
devlog
A devlog covering current explorations into writing scalable architecture with bevy featuring automatic module generation
Exofactory Next Fest Retrospective
devlog
Exofactory participated in Steam Next Fest. This is their retrospective.

Educational
Tutorials, deep dives, and other information on developing Bevy applications, games, and plugins
Extreme Bevy 6: Sprite animations
educational
A tutorial series on how to make a p2p web game with rollback netcode gets its 6th installment: sprite sheet animations
Rename `bevy_reflect`'s `documentation` feature to `reflect_documentation` authored by WaterWhisperer
Rewrite the reason for the `clippy::doc_markdown` expectation in the `bevy` main crate to be more accurate authored by LikeLakers2
Rename `AnimationEventTrigger::animation_player` to `target` and fix misleading docs surrounding it authored by janhohenheim
Remove `#[derive(Resource, Component)]` from tests authored by Trashtalk217
Updated docs for bevy::render::RenderSystems authored by Saphereye
Minor refactors in change detection authored by JaySpruce
Create a config file for cargo aliases, so tool commands aren't so painful to type authored by LikeLakers2
docs(camera): clarify ndc_to_world method documentation authored by WaterWhisperer
Move `tick.rs` into `change_detection` module authored by JaySpruce
Fix `DespawnOn` not upholding invariants on entities with default filters authored by janhohenheim
Move toposorting onto `DiGraph` directly, and cleanup error handling authored by ItsDoot
Update `PanCam` and `FreeCam` to use full term `Camera` authored by syszery
Rename M-Needs- labels authored by alice-i-cecile
Give `change_detection` its own folder and split into multiple files authored by JaySpruce
Give `entity_ref` its own folder and split into multiple files authored by JaySpruce
API for traversing `Relationship`s and `RelationshipTarget`s in dynamic contexts authored by eugineerd
Remove `ron` re-export from `bevy_scene` and `bevy_asset` authored by WaterWhisperer
Split `AmbientLight` into two authored by Trashtalk217
Move asset processing tests to their own file. authored by andriyDev
dont re-export SamplerBindingType twice for no reason authored by atlv24
Text strikethrough authored by ickshonpe
Generalized atmospheric scattering media authored by ecoskey
Text underline authored by ickshonpe
Allow the asset processor to run single-threaded. authored by andriyDev
Remove `Internal` component authored by alice-i-cecile
fix dead links in Mesh2d doc comment authored by mersenne-twister
Allow DiagnosticsBuffer to be applied even if DiagnosticsStore is missing. authored by andriyDev
fix docs for `Entity::from_row` authored by zacryol
Configure ureq to use platform-verifier for web assets authored by jf908
Doc - Link directly to DespawnOnEnter/Exit authored by isHavvy
Include SpawnScene in docs for Main schedule authored by andrewhickman
Want to contribute to Bevy?
Here you can find two types of potential contribution: Pull Requests that might need review and Issues that might need to be worked on.
Pull Requests Opened this week
Fix memory leak in `EntitySpecializationTicks` authored by EmbersArc
RenderTask authored by JMS55
Uncached Queries authored by cBournhonesque
bug: Fix stackoverflow on asset reload. authored by shanecelis
order rhombus vertices in "hull-order" authored by ChristopherBiscardi
:bug: Fixes PropagateStop and PropagateOver authored by ekwoka
UI text module refactor authored by ickshonpe
Implement `TryStableInterpolate`. authored by viridia
Multi-source queries authored by cBournhonesque
Add `SpawnableList` implementation for adding multiple entities per iteration authored by Ceedrich
missing bevy errors from `errors`-crate authored by CGMossa
Add helper methods to dynamically access relationships authored by cBournhonesque
Issues Opened this week
Async compute task example uses bad practices. authored by Atlas16A
Unpredictable start of rendering authored by paulkre
iOS support for #[bevy_main] authored by bitdriftr
Tracing with tracy on iOS / Android authored by bitdriftr
Implement a way to bypass all default filters authored by janhohenheim
Document that `World::run_system_cached(_with)` needs type hints for error handling authored by janhohenheim
PropagateStop prevents self from having component authored by ekwoka
audio: flexible/surround sound authored by francisdb
Shadow flickering on remeshing authored by Aceeri
Mesh disappearing/flickering authored by Aceeri
Remove dedicated methods for upcasting from bevy_reflect authored by alice-i-cecile
EntityEvent cannot be derived for enums authored by perry-blueberry
Improve support for "random-access" assets (e.g., ZIP files) authored by andriyDev
Spawning multiple entities with different mesh handles but same material handle causes bevy_render::renderer::render_system to panic on DX12 backend authored by NicholasCostanzo
Panic when a mesh has morph target attributes but no `MeshMorphWeights` component. authored by greeble-dev













