
Guardian 2, erosion, and robots
2025-06-09
bevyengine.org is now bevy.org!
Bevy Jam 6 is over and voting has begun! If you've participated make sure to play the other entries, rate them, and give some feedback! The jam ended with 99 entries which is an increase of 20-30 over previous jams.
Hotpatching is also making some exciting progress, with code landing in main.
Hotpatching
A new Bevy Cargo feature, hotpatching
, was introduced in #19309. This builds on Dioxus's work with subsecond
in the Dioxus CLI, dx
, to enable hotpatching support in Bevy.
BEVY_ASSET_ROOT="." dx serve --hot-patch --example hotpatching_systems --features hotpatching
"hotpatching" can be best understood as the hot-reloading of Rust code as your app is running. There are a number of restrictions as its currently in an early phase, but with the hotpatching
feature, every system can now be modified during execution, and the change directly visible in your game.
Temporal anti-aliasing
TAA (Temporal anti-aliasing) was made non-experimental in #18349.
Temporal anti-aliasing is an anti-aliasing technique that uses differently placed samples from previous frames in addition to the current frame to produce an anti-aliased image.
2d on UI
A new example 2d_on_ui
shows the usage of RenderLayers
to place the UI camera below a second Camera2d
.

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

Destroy Robots
showcase
This is built with 100% Rust code in WASM, using Dioxus and Bevy.
All of the views right now involve Bevy being spawned/managed in a Dioxus component that syncs a state signal between the Dioxus world and the Bevy world to control it. When you are viewing a dataset, though, those videos you see at the bottom are actually Dioxus web components that are spawned from within the Bevy app by spawning an ECS component.

Guardian 2
showcase
A work-in-progress sequel to the author's 1982 game, Guardian, which was written for the Radio Shack Color Computer.
Source is available on GitHub

Pong Wars
showcase
An implementation of "Pong Wars", the name given to this effect by later implementors.

POLDERS 0.16 update
showcase
POLDERS is a quintessentially Dutch Sandbox Builder in which you’ll have to fight for every piece of land against the relentless sea. Previously they were on Bevy 0.12 and have started the upgrade to 0.16 due to the allure of nice new features.


particle based erosion simulation
showcase
A particle based erosion simulation inspired by Sebastian Lague's video and a paper (pdf) by Hans Theobald Bayer

glb inspector
showcase
This glb inspector was designed to make inspecting your GLB 3D assets a breeze. You can easily upload your models and explore their structure, materials, animations, and more, all directly in your web browser.

Crates
New releases to crates.io and substantial updates to existing projects

bevy_scrollmat
crate_release
A StandardMaterial Extension that scrolls textures using UVs and a configurable speed.
bevy_gearbox
crate_release
bevy_gearbox is a state machine for the bevy game engine.
Features
- States-as-components, so you can find entities with relevant states using bevy's queries.
- Uses observers to maintain mutual exclusivity between state components, so you never end up in an invalid state.
- OnEnter and OnExit trigger events
- A hierarchical state machine, so state machines can be temporarily controlled by other state machines. I'm using this in my project to maintain separation of concerns between character logic and ability logic.
bevy_simple_subsecond v0.2
crate_release
A crate that uses Dioxus' subsecond to allow you to modify code at runtime and see its effects in real-time. Here's a cool video by Malek where they implement Flappy Bird while the game is running! No recompiles needed! https://www.youtube.com/watch?v=fo6FXxeP0Wg
This release updates to the newest subsecond release, adding support for different linkers and making it more likely to work on Windows.
Make sure to download the newest Dioxus CLI with cargo install dioxus-cli@0.7.0-alpha.1
when upgrading 🙂
Note that the new command for hotpatching is
BEVY_ASSET_ROOT="." dx serve --hot-patch

Devlogs
vlog style updates from long-term projects
The detail that saved my open source voxel raytracing library
devlog
This video is about voxel bricks: compact structures that dramatically reduce overhead, improve ray traversal performance, and makes any voxel engine's data storage cleaner and faster.
Simplified `on_replace` and `on_despawn` relationship hooks. authored by AlephCubed
Trigger ArchetypeCreated event when new archetype is created authored by re0312
Exclude `ctrlc` from `bevy_app` for the Nintendo 3DS authored by selvmaya
Implement `IntoIterator` for `Populated` and borrows authored by zacryol
Clarify PartialReflect::apply docs authored by theotherphil
add 2d_on_ui example authored by mirsella
Make TAA non-experimental, fixes authored by JMS55
Hot patching systems with subsecond authored by mockersf
deny(missing_docs) for bevy_derive authored by theotherphil
deny(missing_docs) for bevy_diagnostic authored by theotherphil
Allow returning an error from `labeled_asset_scope`. authored by andriyDev
Use BevyError for AssetLoader::Error authored by SpecificProtagonist
Mention `Option` and `When` in the error message for a failing system parameter authored by chescock
Add a few missing doc comments in bevy_image authored by theotherphil
deny(missing_docs) for bevy_state authored by theotherphil
Add get_mut_untracked to Assets authored by kristoff3r
bevyengine.org -> bevy.org authored by cart
fix: Ensure linear volume subtraction does not go below zero authored by foxzool
generic component propagation authored by robtfm
Allow new mismatched_lifetime_syntaxes lint authored by alice-i-cecile
Mention in the docs for pointer events that these are in screen-space. authored by andriyDev
Remove re-exports of cosmic_text types authored by alice-i-cecile
Fix regression on the get/get_mut/get_not_found authored by re0312
Only get valid component ids authored by ElliottjPierce
Replace (`Partial`)`Ord` for `EntityGeneration` with corrected standalone method authored by urben1680
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
Add health bar example authored by GitGhillie
Shared components authored by eugineerd
Allow images to be resized on the GPU without losing data authored by tychedelia
Add `ZIndex`, `YSort`, and `SortBias` 2d components authored by tychedelia
allow access to the source error of `AssetLoaderError` and downcasting authored by Austreelis
Componentize system-internal QueryState. authored by re0312
Stop storing access for all systems authored by chescock
PlaneMeshBuilder: allow for different number of subdivisions in X and Z directions authored by Wuketuke
deny(missing_docs) for bevy_reflect authored by theotherphil
`Assets::get_many` authored by Wuketuke
Return an error when adding the same asset label multiple times. authored by andriyDev
Add `Events<T>::retain` implementation through existing drain with send_batch authored by GMcMichael
Bundle refactor - `Option` bundles and `Box<dyn Bundle>` authored by SkiFire13
Have `Single` and `Populated` fail instead of skipping authored by chescock
Improve documentation on `Specialized*Pipeline*`. authored by andriyDev
Spawn batch with relationship authored by gwafotapa
Add new GLTF character model and loader functionality authored by SachinSSh
Add system parameter for relation quieries authored by KurlykovDanila
Schema types metadata authored by Leinnan
Issues Opened this week
Query as Entities authored by re0312
`MeshPickingPlugin` is not mentioned in the module doc authored by djeedai
Some Sprites don't render when World contains entity with Sprite and Mesh2d authored by bruno-robert
`PickingInteraction` randomly switch to `None` even when hovered authored by djeedai
Allow for outgoing error reporting using GLOBAL_ERROR_HANDLER / set_error_handler authored by m-edlund
Misleading namings in `bevy_text` authored by ickshonpe
Frustum gizmo authored by hukasu
WebGL2 Shaders / Storage Buffer Example broken on website authored by PhaestusFox
Compiler Error on `#[derive(Bundle)]` for Generic Bundles in 0.16 authored by Zeenobit
Consider a more practical showcase for `2d_on_ui` example authored by rparrett
Docs for `Single` needs an example authored by viridia
Simpler shaders for 3D meshes authored by viridia
Asset file name extension handling should be consistently case-insensitive authored by BenjaminBrienen
Grid gizmo with either x or y outer edges doesn't render correctly authored by uben0
bevy_ecs performance regression in 0.16.0 release (get + insertion) authored by alice-i-cecile
Pbr Shader Validation error on Android Emulators (Android Studio,BlueStacks,LDPlayer9) authored by HaHa421
Support looping sections in audio playback authored by viridia
`bevy::ecs::schedule::common_conditions::not` support `SystemInput` authored by lotus128