This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

Inspector General, Generalized Atmospheres, and Abym's Steam Page

2025-10-27

This week sees the creation of the Inspector General working group, whose members are attempting to build a bevy-native Entity inspector. You can find this working group in the #working-groups category in the Bevy Discord.

In the ecosystem, CoACD-rs was released as an implementation of Approximate Convex Decomposition for 3D Meshes with Collision-Aware Concavity and Tree Search... which is a mouthful but very cool.

Upstream Bevy's Atmosphere support gained new generalized configuration, and Resources as Components is starting to gain steam. While Abysm (winner of the 2024 community-run Bevy spooky jam) got its Steam Page.

Generalized Atmospheric Scattering

#20838 generalizes the terms of Bevy's Atmosphere support, enabling a higher degree of control over how light scatters in an atmosphere. This in turn makes it possible to better emulate environments like dry, dusty deserts.

fn init_atmosphere(mut commands: Commands, scattering_media: ResMut<Assets<ScatteringMedium>>) {
  let earth_atmosphere = scattering_media.add(
    ScatteringMedium::new(
      256,
      256,
      [
          // rayleigh scattering
          ScatteringTerm {
              absorption: Vec3::ZERO,
              scattering: Vec3::new(5.802e-6, 13.558e-6, 33.100e-6),
              falloff: Falloff::Exponential { scale: 12.5 },
              phase: PhaseFunction::Rayleigh,
          },
          // mie scattering
          ScatteringTerm {
              absorption: Vec3::splat(3.996e-6),
              scattering: Vec3::splat(0.444e-6),
              falloff: Falloff::Exponential { scale: 83.5 },
              phase: PhaseFunction::Mie { bias: 0.8 },
          },
          // ozone
          ScatteringTerm {
              absorption: Vec3::new(0.650e-6, 1.881e-6, 0.085e-6),
              scattering: Vec3::ZERO,
              falloff: Falloff::Tent {
                  center: 0.75,
                  width: 0.3,
              },
              phase: PhaseFunction::Isotropic,
          },
      ],
  ));

  commands.spawn((
    Camera3d::default(), 
    Atmosphere {
      bottom_radius: 6_360_000.0,
      top_radius: 6_460_000.0,
      ground_albedo: Vec3::splat(0.3),
      medium: earth_atmosphere,
    },
  ));
}

Traversing Dynamic Relationships

#21601 introduces an API for traversing Relationships in dynamic contexts. This allows traversing relationships without knowing their type, such as when you only have a ComponentId.

Text Improvements

Implelementations for text underline and text strikethrough were added, along with new examples.

Internal Removed

An internal component called Internal was previously added, resulting in behavior like Observers being filtered out of queries by default. After further consideration, this component is being removed and will not exist in 0.18.

Split AmbientLight

Resources as Components is progressing, and as a result one of the only structs that derived Resource and Component has been split into two.

AmbientLight is now AmbientLight (the Resource) and AmbientLightOverride (the Component).

Showcase

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

turn based tactics

Turn Based Tactics

showcase

Picking and bevy_ui improvements bring a number of improvements to this turn based tactics game.

  • Unit selection and movement
  • Menu show/hide
  • Attack effects based on UI selection
gentle people

Gentle People

showcase

Gentle People loosely simulates the rock and roll boom of the 1960s. You play an up-and-coming manager of bands: signing them, getting them to record singles and albums, pushing them to go on tour as well as anything else that comes up.

level editorlevel

Custom Level Editor

showcase

An aseprite-powered pixel-based level editor for this tile-based platformer.

python bindings

Numpy + Bevy

showcase

Bevy Python binding performance testing. 24.5M vertices in the scene split into 49 galaxies with a shared mesh (500k vertices).

oxygen not included

Inspired by Oxygen Not Included

showcase

A game inspired by Oxygen Not Included.

BiRP

BiRP: Dioxus-based Inspector

showcase

A snapshot of a Bevy 0.17 inspector that uses the Bevy Remote Protocol to interact with a Bevy application and Dioxus for the user interface.

abysm

Abysm Steam Page

showcase

Abysm started as a submission to (and winner of) the community-run Bevy Spooky Jam in October 2024. It's a physics based puzzle game with action elements, handcrafted pixelart, and atmospheric sound and music. The demo will come to Steam in a couple of weeks or so, but it's already available on Itch

starlight

Starlight

showcase

A new cooperative rpg/dungeon crawler that already has sound effects and the ability to escape start your escape!

maiu online

Maiu Online

showcase

An MMORPH rewrite into Bevy. So far it is an architecture skeleton using webtransport for networking and Postgres. The server is running multiple simulations for each game zone.

react, tauri, and bevy

React, Tauri, and Bevy

showcase

A proof of concept embedding a headless native Bevy application with a React frontend using Tauri.

plantsmushroom

Plants

showcase

Plants created via rigid bodies connected using distance joints.

triplanar mapping

Extended StandardMaterials

showcase

Implementation of triplanar mapping and blending of textures applied in a StandardMaterial extension.

hexroll3 upload

Hexroll3 Overlay Menus

showcase

Hexroll3 overlay menus and tooltips built with bevy_ui, bevy_tweening.

Crates

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

bevy_fsm 0.1

crate_release

bevy_fsm is an enum-based observer-driven finite state machine framework. Add EnumFSM::StateVariant as component and use automatically derived events for state changes.

bevy_enum_event 0.2

crate_release

bevy_enum_event provides proc macros to generate events from enum definitions.

#[derive(EnumEvent, Clone, Copy)]
enum LampFSM {
    Active,
    Inactive,
}

fn ( light_switch: On<lamp_fsm::Active> ) {
    // Insert switching on the light
}

bevy_eulerian_fluid 0.2

crate_release

2D fluid simulation!

0.2 brings two-way interaction between fluids and Avian rigid bodies.

bevy_ingame_clock

crate_release

bevy_ingame_clock provides an in-game clock system with date/time tracking, configurable speed, sending events on time based intervals, and flexible formatting. It is a crate that was split out of a Tycoon/Management/Sim game.

CoACD-rs Preview

crate_release

CoACD-rs: Approximate Convex Decomposition for 3D Meshes with Collision-Aware Concavity and Tree Search (link), implemented in Rust.

Many efficient geometry processing algorithms require convex shapes, for example in collision detection. Concave shapes are thus typically decomposed into convex parts using a convex decomposition algorithm. CoACD is one such algorithm that uses a "collision-aware" concavity metric and a multi-step tree search to decompose a mesh by recursively cutting it into smaller pieces.

CoACD preserves collision conditions of the input shape better (ex: doesn't fill holes) and with fewer components than methods such as V-HACD (used by Parry), making it ideal for games and other applications that require delicate and efficient object interactions.

Currently, the core algorithm is working, but mesh pre- and postprocessing options such as hull merging are not yet fully functional (see redundant hulls on the rectangular ring).

Devlogs

vlog style updates from long-term projects

QPROJ

devlog

A devlog covering current explorations into writing scalable architecture with bevy featuring automatic module generation

Exofactory Next Fest Retrospective

devlog

Exofactory participated in Steam Next Fest. This is their retrospective.

Educational

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

Extreme Bevy 6: Sprite animations

educational

A tutorial series on how to make a p2p web game with rollback netcode gets its 6th installment: sprite sheet animations

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