This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

Bevy 0.15 release candidates are now shipping!

2024-10-28

The major feature of the issue this week is the start of Bevy 0.15's release candidate process! You can find the current rc on docs.rs and if you're getting ahead of the game you'll find up to date examples for 0.15 in the examples folder in the release-0.15 branch.

Note there is a draft migration guide for early adopters of the release candidates available on the bevy website and if you want more immediate notifications when release candidates go out, take the Notify-RC role in the Bevy Discord.

Feature PRs are a bit lighter this week, as you would expect with 0.15's release candidate process running.

The Bevy Spooky Jam also finished up this weekend. The theme was Eldritch.

Meshlets

Meshlets saw a number of PRs merged this week, including meshlet builder improvements, new error projection, and other changes.

Either

Either is an interesting crate used in #16036 for refactoring purposes. Its not only used in Bevy, but also in leptos, itertools, rayon, sqlx, polars, and more. If you're looking for a sum type that behaves a bit like a Result but doesn't have the success/failure meaning associated with the arms, Either could be what you're looking for. Also notable is that the either crate implements a number of useful functions for working with the type.

Indices::push

When working with meshes its common to have a list of vertices and a list of indices. The indices indicate which vertices a triangle should be drawn with. As of #16014 the Indices enum is a bit easier to use with a new push method, which is helpful because the Indices enum otherwise requires matching on the U16 and U32 arms.

Required Components

As of #16072 TextureAtlas is no longer a Component and has now because part of UiImage's data.

commands.spawn(UiImage::from_atlas_image(image, TextureAtlas { index, layout }));

Picking

The new picking behavior in Bevy 0.15 for event listeners was originally implemented using Observers. #16105 re-introduces the ability to listen for picking events using EventReader which should ease some migrations from bevy_mod_picking in the 0.15 cycle.


Alice's Merge Train is a maintainer-level view into active PRs, both those that are merging and those that need work.

Showcase

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

bevy plotters

bevy + plotters

showcase

An adapter integration between Bevy and the plotters crate, allowing updatable (but not interactive) graphs.

tnua wall sliding

bevy_tnua sneak peek

showcase

bevy_tnua is a floating character controller and this is a sneak peak at some unnamed functionality that looks like clinging to walls.

markdown to bevy

Markdown to bevy_ui

showcase

Using pulldown_cmark to process markdown into bevy_ui nodes, allowing the rendering of markdown documents in native Bevy.

locomotion systemlocomotion system: in waterlocomotion system: carrying

Locomotion System

showcase

A locomotion system that uses animation track blending. The upper body plays one animation while the lower body walks, runs, or idles. When a character enters the water, a third layer hides the legs.

window managerwindow manager

Window Manager

showcase

This desktop-emulating window manager is built with bevy_ui and the new bevy_picking crate. The goal of the project is to emulate an older style computer, something in the Window xp / 2000 / GNOME 2.x range.

dynamic power supply grid indicatordynamic power supply grid indicator

Dynamic Power Supply Grid Indicator

showcase

Dynamic power supply grid indicator/overlay that merges shapes and can provide visual cues.

  • Yellow = has power supply
  • Orange = stranded, no connection to the main grid
water shader

Water Shader

showcase

A new water shader complete with waves in a hexagonal environment

Crates

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

libgdx atlas

bevy_libgdx_atlas

crate_release

Load libgdx sprite atlas files as Bevy assets. Use the GDX Texture Packer cross platform tool to create sprite sheets like in the example screenshot.

portals

bevy_easy_portals

crate_release

An implementation of (visual) portals that let you create mirrors and other cool effects!

bevy_enhanced_input

crate_release

Inspired by Unreal Engine Enhanced Input, bevy_enhanced_input is a dynamic and contextual input mapping crate.

Features

  • Map inputs from various sources (keyboard, gamepad, etc.) to gameplay actions like Jump, Move, or Attack.
  • Assign actions to different contexts like OnFoot or InCar, which are regular components.
  • Activate or deactivate contexts by simply adding or removing components.
  • Control how actions accumulate input from sources and consume it.
  • Layer multiple contexts on a single entity, controlled by priority.
  • Apply modifiers to inputs, such as dead zones, inversion, scaling, etc., or create custom modifiers by implementing a trait.
  • Assign conditions for how and when an action is triggered, like "hold", "tap", "chord", etc. You can also create custom conditions, such as "on the ground".
  • React on actions with observers.

Devlogs

vlog style updates from long-term projects

Architecting a Rust Game Engine (with Alice Cecile)

devlog

Alice recorded a podcast with Developer Voices this week where she talks with the host about Bevy, the ECS, the project, and more.

bevy logging

devlog

This series of posts in mdbook format covers the author's knowledge of how logging works and what they've found to work for them using 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