This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

0.15.1, conveyor belts, and simple preferences

2025-01-06

Welcome to 2025!

Bevy 0.15.1 is out this week, with the full list of changes viewable on GitHub. 0.15.2's milestone has also been created.

no_std support is forging ahead and there's continued progress on some really interesting debugging information that I hope to see exposed via the Bevy Remote Protocol. The wider community is also showing interesting progress with demos like Avian's conveyor belts and hexx's procedural meshes.

no_std

no_std support was added to bevy_window, bevy_state, bevy_hierarchy, and bevy_input.

In the process, an interesting facet of how no_std crates enable std features was discovered. There are multiple preludes and more specifically whether or not no_std is in play, one of two standard library preludes: std::prelude or core::prelude.

This prelude is implicitly imported which when combined with a specific style of feature enablement can result in undesired behavior. This makes #17086 a great issue to review if you write no_std and std code.

// Before
#![cfg_attr(not(feature = "std"), no_std)]

// After
#![no_std]

#[cfg(feature = "std")]
extern crate std;

Custom Projections

custom projection

Custom projections (and projection handling in general) has been simplified in #17063.

commands.spawn((
    Camera3d::default(),
    // a custom projection:
    Projection::custom(ObliquePerspectiveProjection {
        horizontal_obliqueness: 0.2,
        vertical_obliqueness: 0.6,
        perspective: PerspectiveProjection::default(),
    }),
    Transform::from_xyz(-2.5, 4.5, 9.0).looking_at(Vec3::ZERO, Vec3::Y),
));

Comprehensive Source Tracking

comprehensive source tracking can now track component mutation, event sources, and spawns/despawns so it makes sense that the feature flag has been renamed to track_location in accordance with the current and expanding functionality.


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_minibuffer_inspector 0.1.0

showcase

An add-on for bevy_minibuffer that provides bevy-inspector-egui acts.

rubiks cube

Rubiks cube

showcase

A Rubiks cube doing a pre-programmed set of moves. Next steps are to implement an algorithm to solve the cube.

sudoku

Sudoku

showcase

A sudoku implementation, complete with the ability to mark potential numbers in a box.

procedural hexx meshes

heightmap generation in hexx

showcase

The generation of heightmaps and procedural meshes using hexx. The functionality is from a recently merged PR.

boids

The boids are back in town!

showcase

Reorganized code, reworked physics, and a fresh new README. This boids demo is available on GitHub as it continues following the paper it started with.

html litehtml lite output

html lite proc macro for text

showcase

a section macro for creating text that feels a bit like html

3d terrain heightmasks and blending

height-based masking and blending

showcase

Height-based masking and blending. For each terrain type a height map can be provided to control the blend.

chickenschicken

Chickens

showcase

A reworked chicken asset, now with animations. Its been a year since the white chicken, the brown chicken is the new asset.

2d terrain editor

2d terrain editor

showcase

A 2d terrain editor with a number of settings

hypocycloids and hypotrochoids

hypocycloids and hypotrochoids

showcase

Animated hypocycloids and hypotrochoids using gizmos with no video editing effects. An animated spotlight effects a glowing ring.

torp winter transitions

Torp Season Changes

showcase

Winter transition experiments for Torp. The experiments intend to make the transition between seasons smoother.

bevy_prefs_lite

showcase

bevy_prefs_lite is a currently unpublished crate that provides cross-platform (including web) "basic preferences" support for Bevy applications. The word "preferences" in this context is used to mean user settings that are

  1. set while running the app
  2. persistent across restarts
  3. implicitly saved.

The README does a great job of explaining exactly what this crate is meant to solve (for example: NOT saved games, but YES for current window size), so give it a read.

stove

Stove

showcase

stove is an editor for modding maps for unreal engine games.

conveyors

Avian Conveyor Belts

showcase

Demo of conveyor belts implemented by applying a relative tangent velocity in contact modification hooks, coming soon to Avian

Crates

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

seldom_pixel

seldom_pixel 0.6

crate_release

seldom_pixel is for limited color palette pixel art games.

0.6 brings rendering extraction changes, dynamic draw resolutions, and updated APIs like Required Components and the use of Assets v2.

bevy_rand 0.9

crate_release

bevy_rand integrates rand ecosystem with Bevy's ECS. It provides a set of wrapper component and resource types that allow for safe access to a PRNG for generating random numbers.

In 0.9, bevy_rand will no longer assume WASM builds to be for the web, so your application crates will need an additional Cargo.toml configuration to enable that if targeting WASM for the web. This is in preparation for future changes to how getrandom selects its entropy backend.

bevy_minibuffer 0.3

crate_release

bevy_minibuffer is a developer console inspired by the user interface of classic Unix text editors rather than the Unix shell.

0.3 brings TapeActs which function similar to keyboard macros.

mevy

mevy 0.1.0

crate_release

mevy is a growing set of macros which add some witchcraft into bevy!

Currently that witchcraft includes

  • CSS-like for bevy_ui components (and your own)
  • Simplified Notation for Color, Val and UiRect
No devlogs this week

Educational

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

Bevy Basics Component Lifecycle Hooks

educational

A video about Component hooks

Inventory and Ability systems for an RPG

educational

Three posts about inventory and ability systems in an RPG setting.

Bevy Mobile Framerate

educational

Mobile devices require resource-constrained approaches and that extends to framerate control in this post about controlling framerate in Bevy 0.15 (and technically, 0.14 as well).

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