This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

Bevy 0.16 is out now!

2025-04-28

Bevy 0.16 is out now!

Checkout out the official release notes, my unofficial Bevy 0.16 video, as well as the 0.15 to 0.16 migration guide.

Expect a slight lull before things pick back up on the Pull Request merge queue for 0.17 and enjoy the new Bevy 0.16 features for a bit :D.

Many ecosystem crates have participated in the release candidate process and thus already have 0.16 compatible versions on crates.io. Some maintainers wait for the stable release so give them some time if they don't have one out yet (much of the ecosystem is volunteer-based, after all) or give them a hand and submit a PR!

There will be a Bevy game jam for 0.16 although official dates have not been announced. If you're trying to plan for the jam, loosely consider the first week of June but wait for the official announcement to make any concrete plans.

remove_if

#18899 introduces a new EntityCommands::remove_if function which can be used in a typical chain of entity commands.

fn remove_combat_stats_system(
    mut commands: Commands,
    player: Res<PlayerEntity>
) {
    commands
        .entity(player.entity)
        .remove_if::<(Defense, CombatBundle)>(|| !player.is_spectator());
}
``

Showcase

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

destructible walls with graffiti

Destructible Walls

showcase

Previously work on destructible planets has given way to destructible walls, including the ability to match the texture to the pre-broken wall locations.

triangulation

Triangulated Coastlines

showcase

Coastlines built using adaptive iteration delaunay triangulation. Resolution increases at boundary points and spade is used in the implementation.

voxel atmosphere

Atmosphere and voxels

showcase

Preview of a voxel game with a modular worldgen framework. Its has now gained an atmosphere as well.

keyboard input

3d Piano Game

showcase

A 3d piano game made with bevy_kira_audio and deployed on the web. Mouse input, keyboard input, midi keyboard input & midi file playback implemented.

hair rendering

Hair Computer Shader Proof of Concept

showcase

An attempt at a compute-shader based rasterizer described in Robin Taillandier & Jon Valdes - Every Strand Counts: Physics and Rendering Behind Frostbite’s Hair (YouTube](https://www.youtube.com/watch?v=ool2E8SQPGU). The shading model is the "full" Weta d'Eon model.The asset in the video has >160k strands with >6m segments.

wesldocshader docs prepassio

Shader Docs

showcase

Shader Documentation updated for Bevy 0.16. It uses analysis of the .wgsl files in the Bevy repo to show which functions you can use in .wgsl files and which data structures exist, such as VertexOutput.

There's also a preview of the possible future of WESL docs.

ratthew

bevy_ratatui_camera stress test

showcase

A stress-test of bevy_ratatui_camera in 3d dungeon crawler form. The game runs in the terminal, using bevy & ratatui. The demo was recorded running in an Alacritty terminal.

shmupsiepoo

shmupsiepoo

showcase

An open source shmup currently built without additional ecosystem crate dependencies. It makes use of kenney assets.

finb

Finding Number

showcase

Finding Number is a game aimed at children to enable learning how to count. aeronet was used for LAN-style networking.

cpu arch viz

Emulator and ASM visualizer

showcase

An emulator/assembly visualizer for a custom cpu architecture. There's a 32x32 screen that you can write to using a special instruction. The goal of the project

bouncing projectiles

Bouncing Projectiles

showcase

A perk for a shooter game that makes projectiles bounce to nearby enemies. The example makes use of bevy_ballistic which is a fairly recent crate release for calculating projectile launch angles.

ocean shader

Realistic Ocean Shader

showcase

A work-in-progress attempt at building a realistic ocean shader. The end goal is to build something that approximates the Sea of Thieves water. The demo here is a 3x3 grid of ocean chunks representing about 400m of waves.

abalone

Abalone

showcase

Abalone is a two-player abstract strategy board game and this is an implementation in Bevy using Avian Physics, bevy_hanabi, and some custom WGSL.

Its currently available for download on Windows

drexls tower defense

Drexls Tower Defense: Fog of War

showcase

A fog-of-war shader implementation for Drexls Tower Defense which is intended to become a hexagonal tile online multiplayer (coop) tower defense.

dark wisp defense

Dark Wisp Defense

showcase

Dark Wisp Tower Defense has been open sourced while the author's focus is elsewhere so that people might be able to make use of it as a learning device. The development thread (linked from the Discord post) includes the development progress since November 2024 and a YouTube video shows off the gameplay.

ufo snowboard

UFO Snowboard Adventure

showcase

UFO Snowboard Adventure is an endless runner in a space setting with a snowboarding theme. It was recently published on itch.io and is playable in browsers.

text based game commands

Console-style interface

showcase

Inspired by old school text based games, this console-style bevy project makes each command an event that is triggered when parsed! The code for how this is accomplished is shared in the Discord thread.

Crates

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

bevy_picking_state_machine v0.1.0

crate_release

bevy_picking_state_machine is an opinionated global state machine for bevy_picking that serves as a drop in replacement for PickingInteraction, ButtonInput<MouseButton> and Window::pointer.

bevy-tnua

bevy-tnua 0.23

crate_release

bevy-tnua is a floating character controller.

0.23 brings a new obstacle radar which can be used to implement wall sliding, wall jumping, and climbing.

bevy_enhanced_input 0.10 & 0.11

crate_release

It's an input manager for Bevy, inspired by Unreal Engine Enhanced Input.

0.10/0.11 enables an easy upgrade path from Bevy 0.15 to Bevy 0.16 and brings:

  • A more flexible Axial preset, replacing the GamepadStick
  • Introduces a Clamp modifier
  • no_std support
  • Per-context schedule configuration (useful for networking)
animated cursor

bevy_cursor_kit 0.4.7

crate_release

bevy_cursor_kit lets you load cursor assets in various formats and use them as custom CursorIcons.

0.4.7 takes advantage of new Bevy 0.16 support for texture atlases in CustomCursor::Images, which results in supporting animated cursors.

bevy_spawn_observer

crate_release

bevy_spawn_observer provides a SpawnObserver to add to Bevy 0.16's Spawn, SpawnWith, and SpawnIter.

fn button() -> impl Bundle {
    (
        Button,
        Children::spawn(SpawnObserver::new(|_: Trigger<Pointer<Click>>| {
            info!("You clicked me!");
        })),
    )
}

If you're not sure what these Spawn APIs are, check out this explainer which is also mentioned in this issue.

bevy_query_ext

crate_release

bevy_query_ext is a collection of types used to simplify how components are used in queries, by implementing bevy’s QueryData on generics.

#[derive(Component, Deref, DerefMut)]
struct WrappedBool(bool);

fn example(mut query: Query<AsDerefMut<WrappedBool>>) {
    let _: Mut<bool> = query.get_single_mut().unwrap();
    let _: &bool = query.get_single().unwrap();
}

bevy_egui 0.34.0

crate_release

bevy_egui provides an Egui integration for the Bevy game engine

0.34 brings multi-pass support, which includes a breaking change: this adds a new enable_multipass_for_primary_context field to EguiPlugin, see its documentation for the migration guide.

bevy_aseprite_ultra 0.5

crate_release

bevy_aseprite_ultra: Hot reload aseprite animations/slices directly from binary.

0.5 brings

  • Support for custom shaders.
  • Asset processing. Compile aseprite files to custom format for shipping.

bevy_mod_audio

crate_release

bevy_mod_audio is most useful for adding voice chat, you just have to wire up the audio packets to and from it!

Check out the example in the git repo if you want to make use of the crate.

skein 0.2

Skein

crate_release

Skein is a Rust crate and a Blender Addon that combine to allow inserting Components in Blender and instantiating them in Bevy when spawning glTF scenes.

bevy_skein 0.2.0 (bevy 0.16) and Blender addon 0.1.6 introduce:

  • Defaults and Presets
    • Use Default implementations when inserting Components and allow users to supply arbitrary presets
  • Distribution as an Extension
    • The bevyskein docs site now also functions as a Blender extension repository and can serve updates directly to Blender.
  • The first CLI command (dump_component_data)
    • The first CLI command in a series of migration tools for working with Reflection data

release notes

bevy_mod_gba

crate_release

bevy_mod_gba provides integration between Bevy and the agb crate, allowing for relatively painless GameBoy Advance development.

The game boy advance demo in the 0.16 release notes was built using the release candidate version of this crate.

Devlogs

vlog style updates from long-term projects

Bevy 0.16

devlog

A "special edition" of This Week in Bevy? 😆 0.16 release in audiovisual form by me (chrisbiscardi, the same person that puts this week in bevy together each week).

Educational

Tutorials, deep dives, and other information on developing Bevy applications, games, and plugins

How to spawn objects in Bevy 0.16

educational

This video covers introductory level .spawn APIs, including the new children! and related! macros as well as the Spawn/SpawnWith/SpawnIter and macro APIs.

Pull Requests Merged This Week
Contributing

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.

How do I contribute?

Pull Requests Opened this week

Issues Opened this week