
Ludum Dare, devtools, and a bevy_ui inspector
2025-04-14
As we get ever closer to 0.16's stable release the list of PRs merging into the release candidate is looking more and more like a few small bug fixes, which is great and points to the stable release coming fairly soon.
Some members of the community took time to participate in Ludum Dare including games about digging and about scanning the ocean seafloor.
Meanwhile crates like bevy-enhanced-input are getting better documentation and there's a new bevy_ui related inspector crate!
Forward Decals
If you are using ForwardDecals in 0.16's release candidate, the direction of the decal depth has been inverted in #18772. This new behavior matches the documentation in which a higher number means the decal will blend with surfaces further away.
Atmospheres on Web
#18582 introduces web support for the new atmosphere functionality. Check it out before 0.16 drops by running the atmosphere example
cargo run --example atmosphere

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

WIP bevy_midix
showcase
This is work in progress demo using bevy_midix
, which enables the use of a soundfont and midi commands to play music in your games. It can handle input from midi devices, midi files, and other live events. The author hopes to make a release to coincide with Bevy 0.16.

Card Stacking
showcase
This demo shows off moving cards around and stacking them and selecting the stacks to pick individual cards out of.

Foxtrot Rework
showcase
Foxtrot is a 3d Bevy game template aimed at desktop usage. This is a sneak peak at a rework of the template.
The goals of the rework are:
- reduce complexity (there half as much code now)
- reduce features (it’s only first person now)
- make the organization in line with bevy_new_2d
- reduce number of dependencies on crates that may take long to update to new Bevy versions
- use more modern Bevy features such as replacing a bunch of stuff with
Single
andTrigger

bevy_materialize in spirit_editor
showcase
An integration of bevy_materialize with spirit_editor which in this demo is powering an animated portal.


Perilous
showcase
Perilous is a multiplayer survival game with an emphasis on building small settlements, defending against threats, and managing the survival of villagers. Players begin alone in a cursed land and must gather resources, build fortifications, hire/attract villagers, and fend off supernatural dangers.
Something notably interesting about this project is that it uses bevy_ecs and big brain on the backend with a Phaser 3 JS frontend.

Iggy's World
showcase
An update from Iggy's World including work on the "Woodland Haven" level including quest and dialog systems powered by Yarn Spinner. There's a new Iggy model with improved controls and the project has moved to story-driven development after updating to Bevy 0.15.3. The project switched to bevy_skein and is planning on utilizing bevy_seedling, the firewheel integration crate for audio coming out of the audio working group.

Crowd Simulation
showcase
Custom, from-scratch crowd simulation working in multiple floors, simulating passengers of a subway station. A Comparative Study of Navigation Meshes is referenced as a resource for those that would also want to build similar tools.

Ludum Dare: "Jammy" Bolt Digs a Hole
showcase
A bevy entry to ludum dare using Avian, Hanabi, bevy_ecs_ldtk, i-cant-believe-its-not-bsn, and Krita.
You’re Jeremias “Jammy” Bolt, a lonely robot stuck atop an inactive volcano. You have a laser gun and not much else.
Find all the green gems, but you can’t dig upwards! If you run out of fuel, you can’t dig anymore, so keep an eye on your battery!


Bevy Shader Explorer
showcase
A new shader explorer that exposes structs and functions used in .wgsl files in the bevy repo. Notably this project takes a different approach than the jannik4 shader docs, choosing to use regex and handlebars instead of using naga/naga_oil to compile the shaders.
The future of shader documentation also looks interesting with prototypes that make use of the new WESL support and infrastructure.

Planetary Terrain and Atmosphere
showcase
A terrain and atmosphere system in a planetary environment. Clouds react to lighting and cast shadows on the terrain. The cloud texture is procedural which mean weather can change over time. There's a bunch of additional context around implementation, bevy_terrain, and the new 0.16 atmosphere features in the Discord thread.

Mevy Macros
showcase
A demo of Mevy's macro implementations showing off the creation of spawning Nodes with styles and pointer interaction.

Crates
New releases to crates.io and substantial updates to existing projects
bevy-convars 0.1.1
crate_release
An early, "hey come try this out" release of bevy-convars, for bevy 0.16.0-rc.4.
bevy-convars is an implementation of "convars", a granular solution for runtime config (like render and game settings), alongside comprehensive config loading code that supports handy features like config layers.
Mevy 0.2
crate_release
mevy is a set of macros aimed at improving the developer experience of bevy_ui and bevy_ecs.
0.2 supports Bevy 0.15 and Bevy 0.16-rc through feature selection.

aalo aka bevy-inspector-haalka
crate_release
aalo is a "bevy_ui-native" inspector built with haalka which aims to port much of the behavior of bevy-inspector-egui to bevy_ui.
This is a "pre-0.1" release, so expect docs and more to improve before the 0.1 release.
bevy_text_edit 0.5.1
crate_release
bevy_text_edit is an input text plugin.
0.5.1 brings a built-in virtual keyboard.
Bevy Enhanced Input 0.9.0
crate_release
bevy_enhanced_input is an input manager for Bevy, inspired by Unreal Engine Enhanced Input.
The 0.9 release contains many changes, most notably the component-based API for contexts. The contributors also reworked the documentation, now including a quick-start guide that walks you through the API.

Educational
Tutorials, deep dives, and other information on developing Bevy applications, games, and plugins
bevy behave
educational
This tutorial covers bevy-behave: behaviour trees for bevy, with on-demand entity spawning for task nodes.
Web support for atmosphere authored by mate-h
Remove WebGL padding from `MotionBlur` authored by greeble-dev
Fix `many_foxes` + motion blur = crash on WebGL authored by greeble-dev
Newtype `hashbrown` authored by bushrat011899
Add `Default` for all schedule labels authored by Shatur
clarified docs for bundle removal commands authored by Jaso333
Expose the added tick for change detection, both getting and setting. authored by moonheart08
Fix AccessKit node bounds authored by ickshonpe
Add binned 2d/3d Wireframe render phase authored by tychedelia
Initialize pre-processing pipelines only when culling is enabled. authored by tychedelia
Unify `RenderMaterialInstances` and `RenderMeshMaterialIds`, and fix an associated race condition. authored by pcwalton
Make the `StandardMaterial` bindless index table have a fixed size regardless of the features that are enabled. authored by pcwalton
Fix `get_render_pipeline_state` / `get_compute_pipeline_state` panic authored by brianreavis
Fix unbatchable meshes. authored by tychedelia
Add bindless support back to `ExtendedMaterial`. authored by pcwalton
Change with_related to work with a Bundle and added with_relationships method authored by Freyja-moth
Small docs PR for `PointLightShadowMap`/`DirectionalLightShadowMap` authored by jf908
Fix forward decal depth_fade_factor. authored by tychedelia
Make some changes to the migration guide recommendations authored by BD103
Ignore RenderEntity during entity clones authored by cart
Fix documentation: incorrect references to the `Update` schedule in `ExitCondition` authored by Henauxg
Fix newline in `PointLightShadowMap` comment authored by greeble-dev
Add `?` authored by bushrat011899
Fix system param validation for piped systems authored by alice-i-cecile
Allowlist mali drivers for gpu preprocessing support. authored by tychedelia
Mark render assets as modified when removed from the asset server authored by tychedelia
Rename bevy_platform_support to bevy_platform authored by cart
don't disable std in bevy_dylib authored by mockersf
Allow partial support for `bevy_log` in `no_std` authored by bushrat011899
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
Make specific ease functions less verbose and more inlineable authored by greeble-dev
Remove `SimpleExecutor` authored by ElliottjPierce
Add `petgraph` back to `bevy_ecs` authored by ItsDoot
deprecate `SimpleExecutor` authored by ElliottjPierce
Use tokio `Bytes` as backing storage for `Image`. authored by mintlu8
enable accessibility for the button example authored by ickshonpe
Make shadows respect render layers authored by Adriigbs
Reduce dependency of mesh view on the resources that are bound to it authored by hukasu
Recompute AABBs authored by aevyrie
Basic inherited components/entity prefabs authored by eugineerd
Generic `SystemParam` impls for `Option` and `Result` authored by chescock
Create a `When` system param wrapper for skipping systems that fail validation authored by chescock
Add test for invalid skinned meshes authored by greeble-dev
Refactor shared specialize params into a `SystemParam` authored by greeble-dev
Add reflect conversions authored by Person-93
The toml workflow job will now install taplo-cli using cargo-binstall authored by LikeLakers2
Column change detection for immutable components authored by notmd
Named observer authored by hukasu
Implement `Serialize`/`Deserialize` for `Hashed<V, S>` authored by TehPers
Add `Invalid` variant for `AssetId`, `InternalAssetId` and `UntypedAssetId` authored by hukasu
Remove configurable_error_handler feature authored by SpecificProtagonist
Revert "Allow partial support for `bevy_log` in `no_std` (#18782)" authored by cart
Fix the extended_material example on WebGL2 authored by Henauxg
Derive clone authored by Bleachfuel
Per world error handler authored by SpecificProtagonist
Fixed erroneous warning for removing one-to-one Relationships authored by TGRCdev
Use never_say_never hack to work around Rust 2024 regression for fn traits authored by alice-i-cecile
Fix the ordering of the systems introduced in #18734. authored by pcwalton
Fix wrong method call in relationship replacement command authored by JaySpruce
Create `bevy_platform::cfg` for viral feature management authored by bushrat011899
Scoped EntityRef/Mut 🔬 authored by ItsDoot
Revert one-to-one relationships authored by cart
Rename `StateScoped` to `DespawnOnExitState` and add `DespawnOnEnterState` authored by mgi388
Issues Opened this week
Missing documentation for `B` parameter on `Trigger` authored by MrGVSV
Main branch fails to compile on Rust beta. authored by github-actions[bot]
Add deferred decals authored by alice-i-cecile
The UI Button example should support accessibility authored by ickshonpe
Unexpected extra blank space authored by lomirus
Upgrade to glam 30.1 authored by ElliottjPierce
Observers, systems and commands that use closures and panic require explicit return type after Rust 2024 edition authored by Shatur
Requiring PreviousGlobalTransform for MeshletMesh is probably wrong authored by JMS55
Adding TextBounds to Text2d causes weird offsets authored by keithsharp
Reinserting a schedule's unchanged `ScheduleBuildSettings` forces sync points insertions despite `*_ignore_deferred` configs authored by urben1680
Reflecting doesn't auto-convert from i64 to isize authored by anlumo
Poor performance rendering points authored by jerome-caucat
Eager system parameter validation causes issues with combinator and piped systems authored by alice-i-cecile
tracing debug sigil does not compile in rc.4 authored by ChristopherBiscardi
bevy_pbr 0.16.0-rc.4 - Panics when despawning a Mesh in 'Last' authored by dekirisu
Add planar reflections example authored by Bcompartment
v0.16.0-rc.3 - Ui children spawning only after adjusting window size authored by miketwenty1
bevy_pbr 0.16.0-rc.4 - Panic on despawn of a Mesh that was/is in PointLight range outside of Camera view authored by dekirisu
Mutating (or Inserting) pre-existing Components in Observers silently fails with stale Component data authored by ChristopherBiscardi