This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

LongStory 2, bevy_feathers, and Type Erased Materials

2025-06-30

LongStory 2, a new visual novel game, was released to Steam and Itch.io this week.

Bevy upgraded to wgpu 25 and Rust 1.88.

We also see the continued development of some jam games, building into compute shaders and more.

Bevy Feathers

bevy_feathers

#19730 introduces Bevy Feathers, an opinionated widget toolkit and theming system intended for use by the Bevy Editor, World Inspector, and other tools.

The bevy_feathers crate is incomplete and hidden behind an experimental feature flag. The API is going to change significantly before release.

Type Erased Materials

In order to enable a number of patterns for dynamic materials in the engine, decouples the renderer from the Material trait.

This opens the possibility for:

  • Materials that aren't coupled to AsBindGroup.
  • 2d using the underlying 3d bindless infrastructure.
  • Dynamic materials that can change their layout at runtime.
  • Materials that aren't even backed by a Rust struct at all.

A new example, 3d/manual_material, demonstrates how to implement a material manually using the mid-level render APIs

TilemapChunk Rendering

tilemap chunk

#18866 is a first step towards first-party tilemaps, starting with a simple TilemapChunk rendering abstraction.

Check out the new tilemap_chunk example.

fn setup(mut commands: Commands, assets: Res<AssetServer>) {
    let mut rng = ChaCha8Rng::seed_from_u64(42);

    let chunk_size = UVec2::splat(64);
    let tile_display_size = UVec2::splat(8);
    let indices: Vec<Option<u16>> = (0..chunk_size.element_product())
        .map(|_| rng.gen_range(0..5))
        .map(|i| if i == 0 { None } else { Some(i - 1) })
        .collect();

    commands.spawn((
        TilemapChunk {
            chunk_size,
            tile_display_size,
            tileset: assets.load("textures/array_texture.png"),
            ..default()
        },
        TilemapChunkIndices(indices),
    ));

    commands.spawn(Camera2d);

    commands.insert_resource(SeededRng(rng));
}

Core Widgets

#19778 adds Radio Buttons to the core widgets

Serializable Meshes

#19743 brings serializable meshes which means that you can now attempt use cases such as sending a mesh over the Bevy Remote Protocol.


Alice's Merge Train is a maintainer-level view into active PRs and how the Bevy sausage is made.

Showcase

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

fluid sim

Fluid Simulation

showcase

A simplified (ie: not realistic) using "the pipe method" to move vertices on a plane.

firestorm

Firestorm Skill

showcase

A new skill in a composable ability system. Code for the implementation is included in the Discord thread, including the zones and projectiles.

gpu compute shaders

ABIOGENESIS on compute shaders

showcase

ABIOGENESIS was a Bevy Jam 6 entry that was ported to run on compute shaders, which boosted the number of particles from 3,000 to 100,000.

beatsaber map viewer

Beatsaber Map Viewer

showcase

A Beatsaber map viewer that supports V3/group lighting

number gizmos from lines

text from line gizmos

showcase

Numbers drawn from line gizmos marking squad groups.

maxx obliterate

maxx-obliterate

showcase

A Bevy Jam 6 entry that had a broken web build and got fixed and re-uploaded after the jam.

Destroy enemy bases, but be careful - destroying enemies causes a chain reaction of explosions that can lead to your destruction!

longstory 2longstory 2

LongStory 2

showcase

LongStory 2 is a newly published game on Steam and itch.io.

The friendliest dating sim on the planet is back and ready to cuddle! A long-awaited sequel to the award-winning visual novel LongStory, our new season picks up where the first ended — the summer before high school begins.

jabchess

Fairy Chess

showcase

A fairy chess engine prototype. The game lets you change piece types and extend the board during the match, allowing you to escape tight situations or certain checkmate. It supports 21 different piece types and up to 15x16 boards!

enchanting menu

Enchanting Menu Prototype

showcase

A prototype of a bevy_ui based enchanting menu.

DBM Knights Tour

DBM Knight's Tour

showcase

The addition of difficulty, tour types, and start position configuration to "DBM Knight's Tour"

bevy_mod_asset_packs

First draft: bevy_mod_asset_packs

showcase

bevy_mod_asset_packs implements a Cargo-like package manager within Bevy, to enable creating modular data packs for your game. It's implemented on top of modified AssetReader trait, together with support for downloading assets packs from Git repositories, Git-LFS and custom registrars.

Crates

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

bevy_urdf

crate_release

Import robots from urdf descriptors and run simulations with Rapier.

Including support for drones.

bevy_config_stack 0.2.0

crate_release

bevy_config_stack loads .ron files from the assets directory into resources, implementing hot-reloading to keep Resources up to date.

bevy_slow_text_outline v0.1.0

crate_release

bevy_slow_text_outline adds a TextOutline component for UI text outlines.

The implementation is naive, so outline widths are capped at 8 by default. Small widths (e.g. 1 or 2) will not have serious perf issues.

No devlogs this week

Educational

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

Coding Active Ragdolls with Bevy & Rust

educational

Creating a physics based character controller with procedural 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