
Observers refactoring, voxel clouds, and procedural towns
2025-08-25
This week a refactoring PR lands in #20648 to make the new On
terminology for Observers a bit more ergonomic ahead of 0.17.
The 0.17 release process is gearing up and as such many of the other PRs were bug fixes this week.

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

Realistic space combat game
showcase
An update on this realistic space combat game. The networking is done using Lightyear.

Avian Simulation Islands
showcase
simulation islands for Avian!
Simulation islands are graph structures where bodies are connected via contacts or joints. They are used for sleeping and waking behavior, which is crucial for reducing CPU overhead for large game worlds with many dynamic bodies. Previously, Avian only supported much simpler "per-body sleeping" that did not allow stacks of bodies or bodies connected by joints to fall asleep.



PID controller
showcase
A PID controller to simulate a drone that will auto adjusts its altitude to 30 meters using physics-based control with Rapier.

bevy reflect inspect
showcase
An experiment in egui inspectors that uses the type registry to power the inspector.

Crates
New releases to crates.io and substantial updates to existing projects
bevy_coroutine_system
crate_release
bevy_coroutine_system allows you to write systems as coroutines that can execute over multiple frames, with support for pausing, resuming, and easy async operations like sleep or running blocking tasks in the background. It's built on Rust's nightly coroutine feature and uses a proc macro (#[coroutine_system]) to make it super easy to use.
bevy_ecs_tiled v0.9.0
crate_release
bevy_ecs_tiled is a Bevy plugin for working with 2D tilemaps created using the Tiled map editor. It leverages the official Tiled Rust bindings for parsing and loading Tiled map files, and uses the bevy_ecs_tilemap crate for efficient rendering. This plugin aims to provide a simple and ergonomic workflow for integrating Tiled into your Bevy 2D games, letting you focus on game design while handling the technical details of map loading, rendering, and entity management.
0.9 brings improved isometric support
bevy_gearbox 0.3.3
crate_release
bevy_gearbox seeks to take the ideas behind modern statecharts and bring them into bevy.
English
crate_release
english is a blazing fast and light weight English inflection library written in Rust. Total bundled data size is less than 1 MB. It provides extremely accurate verb conjugation and noun/adjective declension based on highly processed Wiktionary data, making it ideal for real-time procedural text generation.
It's not a Bevy specific crate, but it was developed while working on a Bevy game.


Devlogs
vlog style updates from long-term projects
Entities, Components, and Multiplayer
devlog
A post about spawning entities in multiplayer, replication (with lightyear) and patterns
Work around ambiguous `From` error in nightly authored by greeble-dev
Use boxed storage for material erasure. authored by tychedelia
Fix glTF coordinate conversion not converting mesh bounds authored by greeble-dev
Fix small typo on ecs error handling example comment authored by afonsolage
Fix glTF coordinate conversion not converting morph targets authored by greeble-dev
Make `bevy_sprite`'s `bevy_window` dependency non-optional authored by ickshonpe
Fix some more lints authored by mockersf
bevy_reflect gating / better compile error message authored by mockersf
Add caution to glTF coordinate conversion docs and release notes authored by greeble-dev
Add release note for atmosphere env map authored by mate-h
remove authors from bevy_core_pipeline authored by atlv24
pin CI to macos 14 until iOS example is updated and fix `invalid_params` tests authored by mockersf
Fix imports in some 2d examples with custom shaders authored by rparrett
Shrink ArchetypeAfterBundleInsert authored by james7132
Revert bevy_sprite_render rename in shaders authored by tychedelia
Regression tests for observers whose Observer component is removed. authored by gwafotapa
Tweak Solari world cache authored by JMS55
Add option to `scene_viewer` that enables glTF coordinate conversion authored by greeble-dev
Enable bevy_tasks/async-io when async-io is in use authored by james7132
Prevent infinite loop during BLAS compaction authored by JMS55
UI transform scale factor fix authored by ickshonpe
Remove redundant number conversion in window resolution authored by BigWingBeat
Fix intra-doc link warnings authored by GuillaumeGomez
Fix aabb area calculation authored by atlv24
Fix world_to_ndc authored by atlv24
Fix documentation for `Rot2` authored by IQuick143
casted -> cast and downcasted -> downcast spelling. authored by janis-bhm
Fix a comment error in example system_stepping.rs authored by Mysvac
Fix world_to_viewport return error codes authored by atlv24
Improve `On` Terminology authored by cart
`Hdr` migration guide wording authored by ecoskey
Don't invert an affine matrix as if it was a mat4 authored by atlv24
invert the quaternion not the mat4 in skybox authored by atlv24
invert affine not mat4 in point_light authored by atlv24
use affine not inverse in rangefinder authored by atlv24
fix some `target` comments authored by atlv24
use affine inverse in picking authored by atlv24
invert affine not mat4 in spotlight authored by atlv24
use affine inverse in cluster authored by atlv24
affine atmosphere authored by atlv24
Don't reserve in write_buffer_range authored by IceSentry
Text2d feature-gate authored by ickshonpe
Color::srgb requires values in range 0..1 and the ui/relative_cursor_position example used misleading 0..255 range authored by Shelim
`ui_picking` comment fix authored by ickshonpe
make smaa_luts and tonemap_luts not unconditionally bring in rendering crates authored by atlv24
use affine inverse in prepass authored by atlv24
Fixed `Xyza` to `Laba` color conversion. authored by 443eb9
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
WebAssets with filtering authored by atlv24
Fix missed RedrawRequested and WindowCloseRequested events with UpdateMode::Reactive (part 2) [ADOPTED] authored by atlv24
Re-wrote feathers example to use less stack. authored by viridia
Disable button labels for the `many_buttons` stress text by default authored by ickshonpe
Remove parking_lot dependency authored by james7132
Optimize BundleInserter::insert compile time authored by atlv24
Add a way for the `AssetServer` to report how many asset loads started and finished. authored by andriyDev
Optimize TaskPools for use in static variables. authored by james7132
0.17 migration guide tune up authored by alice-i-cecile
Add http & https asset sources authored by mockersf
Solari PicaPica scene authored by JMS55
`Text2d` multi target scale factors support authored by ickshonpe
Cut and merge some 0.17 release notes authored by alice-i-cecile
fix(mesh2d): replace unwrap by error log in specialize system authored by mirsella
UI drag and drop example authored by ickshonpe
system combinators short circuiting with system failure authored by janis-bhm
Allow configuring Bevy's thread priorities authored by james7132
Editing pass for 0.17 release notes authored by alice-i-cecile
Change breakout example from fixed time updates to virtual time updates authored by rossleonardy
Inventory screen example authored by ickshonpe
Animations- support for specifying Time type with QueryFilter authored by Leinnan
Consolidate together Bevy's TaskPools authored by james7132
Issues Opened this week
SunPath Component + SunPathPlugin authored by defuz
glTF coordinate conversion issues related to node conversion authored by greeble-dev
impl IntoIter for Ref and RefMut of Populated system param authored by PhaestusFox
Make AssetChanged filter work on Sprite component authored by PhaestusFox
Camera.computed.target_info is none during PostUpdate only on mobile authored by TotalKrill
`bevy_core_widget`'s core_slider doesn't snap to the cursor position on pointer press if the pointer is also moving authored by janis-bhm
`Taffy` crashes when UI hierarchy is modified in specific way 2 authored by Phoqinu
Soft child insertion (for example, try_add_child) authored by Rabbival
Dropping a handle from `Assets::get_strong_handle` has different behaviour to one from `AssetServer::load`. authored by andriyDev
Consider renaming `bevy_core_widgets` to `bevy_headless_widgets` authored by alice-i-cecile
Write Future Work section for Bevy 0.17 authored by alice-i-cecile
Consider adding more release notes for 0.17 authored by alice-i-cecile
Ephemeral Components authored by Freyja-moth
Animating UI elements authored by gwafotapa
ECS internals store sizes/capacities they can't reach on 64-bit builds authored by james7132
Return an error when constructing an invalid AABB authored by alice-i-cecile
WindowScaleFactorChanged event is not emitted when the scale factor changes authored by jf908
Trim release notes for Bevy 0.17 authored by alice-i-cecile
Lightmap creation fails with panic index out of bounds in Bevy 0.16+ authored by mgi388
Base Color StandardMaterial dosn't work if default-features = false authored by PhaestusFox
Unintuitive BufferVec write_buffer_range behavior. authored by HiperSlug
Debug names cause failing tests authored by Trashtalk217
Support for specifying Time type for animations authored by Leinnan
Consider adding a cleanup phase to schedule builds authored by james7132
Make lifecycle events ordering and meaning more intuitive authored by SkiFire13
stress tests should list the features they need authored by mockersf