This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

Atmosphere Occlusion, Popover widgets, and window-breaking rendering

2025-11-03

Two interesting ECS PRs landed this week. One was a performance-related PR enabling dense iteration for FilteredEntity(Ref|Mut) in more cases and the other is pre-requisite work for Relationship-related query support: Support non-archetypal QueryData.

Improvements to testing infrastructure for FixedTimesteps, two new standard widgets, and more also landed.

The community comes through with a 1.5 year old 4x game, 4 player p2p networking, as well as more research-level work implementing new 2d lighting implementations and out-of-window rendering.

Atmosphere occlusion and PBR shading

Atmosphere

#21383 introduces the occlusion of directional lights by the atmosphere. Volumetric shadowing is supported through using FogVolume.

Easier FixedTimestep in Tests

#21705 introduces a new TimeUpdateStrategy that causes time to increment by the fixed timestep when calling app.update. This is useful when testing code that relies on a FixedTimestep.

// Now `app.update()` will run the fixed loop exactly once!
app.insert_resource(TimeUpdateStrategy::FixedTimesteps(1))

syn::Member in macros

#21678 cleans up macros by using syn::Member. This might be a good PR to check out if you're interested in authoring real world macros.

ImageLoaderSettings::array_layout

With TilemapChunk using 2d texture arrays, it is becoming more common for the ecosystem to use these textures. #21628 adds a setting to ImageLoaderSettings to enable this conversion at asset load time.

let array_texture = asset_server.load_with_settings(
    "textures/array_texture.png",
    |settings: &mut ImageLoaderSettings| {
        settings.array_layout = Some(ImageArrayLayout::RowCount(4));
    },
);

Standard Widgets: Popover and Menu

menu popover

#21636 adds a Popover and Menu widget to the experimental bevy_ui_widgets.

Showcase

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

planet change pop up

Planet Popups

showcase

A new UI popup that highlights changes to the planet for greater player visibility.

4x

Guild Simulator - 4x

showcase

Guild Simulator is a 4x game that's been in development for 1.5 years. Recent work includes computer players that make their own decisions.

4 player p2p

Four player P2P networking

showcase

Four instances of a small physics arena game with peer-to-peer networking and synced sound.

daily heatmap

Heatmap

showcase

A daily heatmap of US Treasury yield made as an example to show Bevy's capabilities.

hunters dream bloodborne meshlets

Hunter's Dream from Bloodborne

showcase

A demo of meshlets displaying the Hunter's Dream scene from Bloodborne

firefly 2d lighting

2d lighting: Firefly

showcase

Early development on a new 2d lighting crate called Firefly. This is being developed as part of the author's thesis work.

wayland popup

Outside of window rendering

showcase

This "out of window rendering" effect involved forking Bevy to pass parent windows on to winit, then forking winit to use the wayland popup API instead of the window API when it receives a request to create a wayland window with a parent.

Crates

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

Bevy Enhanced Input 0.19.1

crate_release

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

0.19.1 introduces:

  • Combo input condition to bind a sequence of actions. You can use it for things like double-clicks or Vim-like shortcuts.
  • Pulse::with_initial_delay and Pulse::initial_delay to add a special delay before the first repeat. This can be used to implement key repeat.

and a reworked quickstart guide

bevy_firework v0.8.0

crate_release

bevy_firework is a CPU-driven particle engine.

0.8 brings Particle textures, nested emission, PBR emissive colors, and more.

bevy_assets_reflect

crate_release

bevy_assets_reflect is an asset loader for any type that implements Reflect and Asset.

bevy_seedling v0.6.0

crate_release

bevy_seedling is a sprouting integration of the Firewheel audio engine for Bevy. It's powerful, flexible, and fast.

v0.6 is compatible with Bevy 0.17 and Firewheel 0.9.

motiongfx v0.1.0-rc.1

crate_release

MotionGfx is a backend agnostic procedural animation framework built on top of bevy_ecs for managing animation actions. It is highly inspired by projects like Manim and Motion Canvas!

Alongside MotionGfx, bevy_motiongfx v0.1.0-rc.1 was also released.

bevy_typst_textures v0.3.0

crate_release

bevy_typst_textures, a crate for generating rasterized textures from .typ files, has been updated to support Typst 0.14.

bevy_ingame_clock v.0.2.0

crate_release

A plugin that provides an in-game clock system with date/time tracking, configurable speed, sending events on time based intervals, and flexible formatting.

0.2.0 brings support for custom calendars, such as fantasy or sci-fi calendars.

bevy_feronia

bevy_feronia

crate_release

An emerging crate with scattering tools and materials for foliage. This update showcases simulated subsurface scattering on the material extension and rounded and analytical normals for instanced grass.

Devlogs

vlog style updates from long-term projects

Maiu Online: Ep 2

devlog

Devlog for an MMORPG. Episode covers a simple movement system, loading meshes, camera system, data replication, and more.

Teddy Bear Trash Compactor

devlog

some musings from a recent experiment writing a dialog system for bevy

No Educational this week
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