This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

Bevy 0.18 Release Candidate, Metrics Dashboard, and more

2025-12-15

Bevy 0.18-rc.1 is out! The release train is on track for this release, occurring about 3 months after the last release and as usual anything that is ready on main has been included. There is no migration guide collected onto a single page yet, so if you'd prefer to wait for that you can expect it fairly soon.

The Bevy Metrics Dashboard is now publicly available at metrics.bevy.org! Announcement available in the Bevy Discord.

What does it show?

  • Stats about Bevy compilation, like build time and binary size
  • Stats about Bevy Stress Tests, with frame duration, and CPU/GPU usage
  • Historical trends for all those stats
  • More to come! Benchmarks should be next

This effort is funded by the Bevy Foundation. More funding means more things like this!

Infrastructure for Portals and Mirrors

mirrors

#13797 implements two requirements for mirrors and portals: PerspectiveProjection::near_plane for customizing the near plane clipping and Camera::invert_culling which inverts the front face setting for that camera.

These together power the new mirror example, which shows a complete working mirror putting all the pieces together.

Clustered Decal: normal, metallic-roughness, and emissive maps

decals

#22039 increases the number of textures associated with each clustered decal from 1 to 4, which are intended to be used as normal, metallic-roughness, and emissive maps, but can also be taken advantage of by custom materials to be used in different ways.

A new example, clustered_decal_maps, was added showcasing the new support.

Further support for more decals in a scene was added by #22028 which increases the limit to 1024 decals if PARTIALLY_BOUND_BINDING_ARRAY in wgpu is available.

Gizmo Joints

#22085 made it so that primitive gizmos draw their first joint, which closes the shapes nicely.

Before:

before

After

after

Set filters and address_mode on Image load

As of #22042 it is now easier to set filters and address_modes when loading an image. This is convenient for repeating textures that can be sampled outside of their uv 0-1 bounds and for taking advantage of anisotropy, which requires linear filters.

asset_server.load_with_settings(
    "floor_graph_base_color.png",
    |settings: &mut ImageLoaderSettings| {
        let descriptor = settings
            .sampler
            .get_or_init_descriptor()
            .set_address_mode(ImageAddressMode::Repeat)
            .set_filter(ImageFilterMode::Linear);
    }
),
  • The morph target limit was increased from 64 per model to 256 in #21421.
  • wgpu was upgraded to v27 in #21746
  • #21989 introduces MeshTag usage into the array_texture example for handling layer selection.
  • #21622 fixes PropagateStop and PropagateOver
  • #21798 enables triggering events via bevy_remote

Showcase

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

city gnerator

City Generator

showcase

This city generator was part of a student paper submitted a few months ago and is now open source.

insanio

INSANIO Steam Page

showcase

INSANIO is an autobattler where you send misfits into vehicular combat. Your job is to prepare them, deploy them, watch them struggle and finally watch them die or win in massive explosions.

world map

WIP game worldmap

showcase

A wip game about a sentient AI trying to survive and hide its presence from humans

shape editor

Simple Shape Editor

showcase

An in-progress editor for simple shapes

dioxus bevy editor

A Dioxus/Bevy Editor

showcase

Viewport and headless game rendering working in Dioxus desktop app.

3d light distribution viewer

3D light distribution viewer

showcase

A 3d light distribution viewer. Visualize real photometric data from EULUMDAT/IES files – the same data lighting manufacturers provide. Shows actual light color and basic CRI (EULUMDAT only – IESNA doesn't include this by default).

Available on the web

bevy_map_editor

bevy_map_editor progress

showcase

bevy_map_editor is an in-progress 2d map editor intended to be open sourced in the future.

screen annotations

Screen Annotations

showcase

a screen annotation application (Wayland only - only tested on Linux, no BSD). Direct integration with wayland. Not (yet?) open source. There are 3 tools, a pen, a marker (opacity) and an eraser. The tool configuration (tool size, color wheel) can be toggled and is initially invisible. The application starts when the user presses mod+a, so it's always available.

foilrs

FoilRs

showcase

bevy feathers and gizmos are used for plotting in this Xfoil-inspired project.

foresight multitouch camera

Multitouch camera control

showcase

Multitouch camera control support in the Foresight SDK.

png level generation

png level generation

showcase

Semi-procedural png based level generation.

the idea is to draw simple sketches as 192x192 resolution. Tiles are based on specific colors of pixels in the sketch and each 192x192 chunk can have transitions to other chunks on left/right/up/down. Random chunks get combined when you first start the game, generating a different world each time. Each chunk also has 50% chance to be horizontally flipped for more variety and can get assigned a random biome (in this example it rolled a "tundra" biome)

dodge_ball

dodge_ball

showcase

A minimalist arcade bullet hell game with full gamepad support.

signs of danger

Signs of Danger

showcase

Signs of Danger is a falling sand physics roguelite that has been in development for the past 2 years. This project uses Bevy crates like (color, math, reflect, etc) but this game's windowing/graphics abstraction is Macroquad, not Bevy.

Drop onto dangerously reactive alien planets where every pixel is physically simulated. Craft wild guns and abilities that melt, burn, freeze and blow up hostile creatures or destroy entire levels - solo or with up to three friends in chaotic 4-player online and couch co-op.

procedural fish

Fish Inverse Kinematics

showcase

A fish inverse kinematics implementation inspired by this video.

Crates

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

glizmo

crate_release

use bevy gizmos in any context. no more need for systems or system parameter juggling, just

fn whatever() {
    glizmo::sphere(Vec3::splat(10.0), 1.0, PURPLE);
}

bevy_event_chain

crate_release

Easy trait-like behavior using observers and relations.

Relationship targets ("parents") initiate a chain of events that go one-by-one through their relationships ("children") before returning to the target. This is useful for acting as one mutable event, like equipment progressively modifying stats of attacks when they happen.

bevy_mod_imgui 0.8.0

crate_release

bevy_mod_imgui is a Dear Imgui integration for Bevy.

New in this 0.8:

  • Added support for docking windows
  • Updated for Bevy 0.17
  • Fixed graphical glitches on startup
bevy_old_tv_shader

bevy_old_tv_shader

crate_release

An "old TV" post-processing effect, updated for Bevy 0.16 and Bevy 0.17.

Bevy Simple Screen Boxing v0.2.1

crate_release

bevy_simple_screen_boxing is a crate that implement Camera Boxing/Aspect Ratio Masking to make Letterboxing/Pillarboxing pretty easy.

This update adds in the ability to Nest CameraBox structs, leveraging Bevy Relationships. This allows you to create all sorts of different combinations, which can be useful in specific circumstances. The Struct NestedWithin allows you to nest a singular CameraBox within another (although, that can have a CameraBox nested within it). Each CameraBox will be applied from the outside in.

health bar

bevy_notify

crate_release

bevy_notfy is a reactivity(ish) crate.

It uses relationships to define monitors who then watch for changes/removals/additions of specified components on entities.

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