This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

bevy_tnua refactor, POLDERS over time, and real-time settings

2026-01-05

With the bevy 0.18.0-rc.2 out, main is fully into the 0.19 development cycle!

bevy_tnua sees a major, breaking refactor with some exciting benefits while POLDERS shows off progress over the years from a small demo to a full game.

Exofactory also shows off their real-time UI solution with an accompanying blogpost!

Solari

many lights

New Solari examples and improvements landed this week with #22295 introducing a new "many lights" demo and #22313 improved the emissive rendering on smooth glossy surfaces.

Transform and Visibility improvements

Transform propagation got another speed boost in #22281 and visibility systems got their own boost in #22226.

Gaussian Blur

Bevy has a gaussian blur implementation that was split out into a re-usable module in #22249.

Drag and Drop Picking

drag and drop picking

#22214 adds a new drag and drop example in the picking category.

More UiDebugOverlay features

ui debug

The ui debug overlay is a useful tool for debugging ui layout issues. In #21931 this overlay gained more functionality, such as being able to show clipped sections of UI nodes and scrollbar outlines.

Font Families

A swath of font features were implemented in #22156 including enabling the selection of fonts by name or Handle.

Runtime Mip generation

#22286 brings the ability to invoke Bevy's implementation of SPD (AMD FidelityFX single-pass downsampler) to generate individual mips at runtime. This can be important for runtime rendering effects like portals which couldn't be built ahead of time. Pre-prepared mipmaps are still useful and preferred for usecases that can take advantage of them.

A new example shows off the runtime mip generation.

cargo run --example ‎dynamic_mip_generation

Showcase

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

snow city

Snow City

showcase

An arcade driving game made for the 2025 Winter Game Jam (Theme: "Iced") over the past couple of weeks. The gameplay idea is to gain points by plowing roads and helping NPCs reach their destination.

Source is available on Codeberg and is playable on Itch

traintrain network

Ember Line Network

showcase

A video documenting the current state of Ember Line Network, an infinite train network with a procedurally generated world, before the transition to big-space and a terrain rendering rewrite.

city

Crime Squad Simulator

showcase

Multi-mission and city setups for this crime-squad simulator inspired by Rimworld and GTA II/III. Individual agents are completely driven by their goal-seeking AI, you manage logistics/decision-making as the boss

Elwynn Forest

Elwynn Forest

showcase

Elwynn Forest is a classic WoW location which has been imported as data and rendered in Bevy here.

fruit ping

Fruit Ping

showcase

Fruit ping is a first-mobile-release fruit-matching game available for Android and iOS.

abysm

Abysm

showcase

Abysm, a cosmic horror puzzle game, got a revamped Steam page, finalized the last few chapters, and more in preparation for a March 2026 release.

exofactory ui

Real-time Settings UI

showcase

Exofactory shipped an overhaul of their settings UI which takes an ECS-centric approach. Sourcing data from a config.toml, the data is represented in-game as a series of Resources and the game will react in real-time to settings changes.

Wildware

Wildware gameplay footage

showcase

This Wildware gameplay footage features combat akin to Hades, Tunic or Death’s Door and a game structure inspired by Katana Zero. Expect placeholders and missing features in the footage.

polderspolders: before

POLDERS Aesthetics progress

showcase

A showcase (and updated Steam page) of POLDERS' progress over the past two years: from townscaper-style test project to a full standalone game.

triplanar

First Triplanar Shader

showcase

A first-time Bevy shader was needed to texture this terrain. It has no UVs, so triplanar mapping to the rescue!

spritefusion

Sprite Fusion

showcase

A Bevy plugin demo for Sprite Fusion, a custom web-based tilemap editor with multiple engine integrations. Supports auto-tiling, collision layers, and custom tile data attributes.

procedural roads

Procedural Roads

showcase

Procedural roads for a work in progress hex based city builder. A road mesh is dynamically being generated based on the neighboring tiles and the possible connections. The system supports variable lane counts/widths. Shading is done via an extended material that receives the lane data for the intersection so that it can calculate where to draw crosswalks/lines.

node ui

bevy_ui in world space

showcase

A node-based demo aiming to showcase in-progress work on using bevy_ui in worldspace.

Crates

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

bevy_cuda

bevy_cuda

crate_release

bevy_cuda is an experimental crate for doing interop with CUDA.

The example here runs the following kernel.

const ANIMATE_KERNEL: &str = r#"
extern "C" __global__ void animate_colors(
    unsigned char* data,
    int width,
    int height,
    float time
) {
    int x = blockIdx.x * blockDim.x + threadIdx.x;
    int y = blockIdx.y * blockDim.y + threadIdx.y;

    if (x < width && y < height) {
        int idx = (y * width + x) * 4;

        float fx = (float)x / (float)width;
        float fy = (float)y / (float)height;

        float r = 0.5f + 0.5f * sinf(fx * 6.28f + time);
        float g = 0.5f + 0.5f * sinf(fy * 6.28f + time * 1.3f);
        float b = 0.5f + 0.5f * sinf((fx + fy) * 3.14f + time * 0.7f);

        data[idx + 0] = (unsigned char)(r * 255.0f);
        data[idx + 1] = (unsigned char)(g * 255.0f);
        data[idx + 2] = (unsigned char)(b * 255.0f);
        data[idx + 3] = 255;
    }
}
"#;
nekomaid ui

neko-maid

crate_release

neko-maid is an asset-based UI tool with a custom markup language. Being asset-based enables hot-reloading.

bevy_swarm_sync

crate_release

bevy_swarm_sync is an experimental data synchronization across the Internet. bevy_swam_sync enables you to create games and apps that share synchronized state using p2p network, no server infrastructure necessary. It is experimental, and has only been run on Linux, so that's the only platform that is recommended, no other is supported.

bevy_fontmesh

crate_release

bevy_fontmesh: Pure Rust 3D extruded text. The crate handles extrusion, multiline layout, anchoring, and you can spawn per-character entities if you want to animate them individually

bevy_mod_ffi

crate_release

FFI bindings to Bevy for scripting and dynamically loading plugins

bevy_fps_controller

crate_release

bevy_fps_controller is a quake-style player movement crate that recently updated to used FixedUpdate and interpolation.

bevy_query_observer 0.2

crate_release

bevy_query_observer provides observers that trigger when an entity starts or stops matching an archetypcal query.

bevy_water

bevy_water

crate_release

bevy_water got its 0.18 release candidate release, and fixed some long-standing bugs in the water quality (which have also been backported to previous bevy versions of the crate)

bevy_tnua: Schemes

crate_release

bevy_tnua sees a major release and refactor. This is a very big, very breaking change. The core of which is switching from storing dynamic trait objects in the components to defining a static control scheme. The main benefits of this change are:

  1. Easier to inspect the currently running action (which is important for environment actions) because it is now done with match on an enum instead of downcasting trait objects.
  2. The configuration is now an asset, which means you can load it from a file.
  3. The entire controller struct is now serializable (opt-in behind a feature flag, and you also need to opt-in in the derive macro) - this means that networking libraries can now synchronize it between machines.
  4. The sensors are now defined by the basis - which opens the door for supporting vehicles in the future.
  5. The user control systems no longer need to run in the same schedule as Tnua's internal systems and the physics backend.

Refer to the migration guide for technical information about what you need to change.

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