This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

Mesh generation, Voxels, and terminals

2024-12-30

Its the last week in Bevy before 2025 and holiday weeks are bug fixing weeks for the most part this year, but we still get some interesting new features.

Meanwhile the community keeps going with mesh generation, new voxels renderers, and more.

Personally after working with gltf extras and Blender's custom properties this week, I'm most excited about the new registry schema BRP endpoint, which could lead to more addon development!

BRP registry schema

#16882 builds on top of blenvy's initial work in defining a JSON serialization for the type registry that can be queried and served over the Bevy Remote Protocol at game runtime. The new endpoint is at bevy/registry/schema.

Easing curves

#16945 introduces the ability to ease between tuples of values that themselves can be eased.

// Easing between two `(Vec3, Quat)` values:
let easing_curve = EasingCurve::new(
    (vec3(0.0, 0.0, 0.0), Quat::from_rotation_z(-FRAC_PI_2)),
    (vec3(1.0, 1.0, 1.0), Quat::from_rotation_z(FRAC_PI_2)),
    EaseFunction::ExponentialInOut
);

While #16957 introduces smoothstep and smootherstep, also known as Hermite interpolation.

Parsing Val

Parse "10px" and other Vals with #16926

Showcase

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

jarl picking

Jarl: Overhauled Picking

showcase

An overhauled picking system (that's object selection, not mining) for Jarl. The new system supports animations and sprite hierarchies.

cellular automatacellular automata

Mesh generation with cellular automata

showcase

A CPU-side mesh generator using cellular automata. The generation space is 128x128x128 and generates in 100ms or so. The demo uses bevy_egui for UI.

wall building with dashed lines

Project Harmonia: Walls

showcase

Precise placement of walls for project harmonia. Takes advantage of new dashed gizmos and includes angle and length visualizations

rusty pong

Rusty Pong

showcase

A pong-style game built with Rapier physics. You can play it in your browser.

signed voxel octree directed acyclic graphs

Signed-Voxel-Octree Directed-Acyclic-Graphs

showcase

A start to a new voxel renderer based on Signed-Voxel-Octree Directed-Acyclic-Graphs. The image is an 8x8x8 cube with a missing corner voxel.

The SVO DAG is uploaded to the GPU, expanded into cubes via a series of compute dispatches and then the cubes are rendered as 6 triangles

dynamic lights, baked textures

dynamic lights, baked textures

showcase

This demo shows off dynamic lights and baked textures, resulting in no runtime 3d rendering.

ascii cube

Sobel Filtering for ASCII

showcase

This sobel filter is aimed at producing ascii output to a terminal and is achieved by adding a new step in Bevy's render graph.

The code is available on GitHub and gets another mention in a crate release later.

boids

boids

showcase

A boids simulation created while following along to Steering Behaviors For Autonomous Characters. The demo makes use of Avian Physics, bevy-inspector-egui, and gizmos.

orbits

Orbiting Planet

showcase

A really nice pixelated planet slingshotting around a star in the depths of space.

planetary rendering zoomed outplanetary rendering

bevy_terrain demos

showcase

This bevy_terrain demo shows off seamless LOD scaling from 1m to planet-wide as well as a number of datasets. The video for this one really shows the rendering off well so definitely check it out.

gpu collision

CPU vs GPU collision detection

showcase

An implementation that compares the performance of CPU-based collision detection with GPU-based collision detection. Some interesting results such as when it even makes sense to do this. The project is aimed at a use case of hundreds of thousands of simultaneously colliding entities.

kataster

Kataster

showcase

Kataster is a 2d space shooter demo game aimed at being a resource for Bevy beginners. It shows off how to use crates like avian2d, bevy_hanabi, and leafwing-input-manager.

bevy_minibuffer

bevy_minibuffer scriptables

showcase

A demo of scripting support making its way into bevy_minibuffer. The code is available on the scriptable branch

crystal lattice

Crystal Lattice

showcase

A 3d crystal lattice simulation with 216 atoms and 1400 bonds between atoms. This is the author's first Bevy and first Rust project.

source is available on GitHub

Crates

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

ascii rendering

bevy_ratatui_camera 0.8

crate_release

bevy_ratatui_render has been renamed to bevy_ratatui_camera for 0.8, because the new system is camera-centric and thus, simpler.

bevy_ratatui_camera is a plugin for rendering your bevy app to the terminal. 0.8 brings better ergonomics, a new render strategy, and edge detection.

bevy toon shader

bevy_toon_material 0.1

crate_release

A shader to apply to your models if you're trying to get a stylized look in the vein of WindWaker.

bevy_renet 1.0

crate_release

renet has hit 1.0, and thus to match, so has bevy_renet.

Renet is a network library for Server/Client games written in rust. It is focused on fast-paced games such as FPS, and competitive games

The release notes include a selection of great showcases including Gunbug, Crystal Realms, and Project Harmonia

bevy_stat_query 0.1

crate_release

A versatile RPG stat system. The overview does a good job of explaining how buffs, debuffs, and modifiers work.

bevy ui debug overlay

bevy-ui-debug-overlay

crate_release

bevy-ui-debug-overlay is an improved UI debug overlay for Bevy 0.15.

bevy_ecs_tilemap 0.15

crate_release

bevy_ecs_tilemap is an ECS driven tilemap rendering library. It’s designed to be fast and highly customizable. Each tile is considered a unique entity and all tiles are stored in the game world.

0.15 brings 3x performance wins in fps on the 1.6m tile benchmark example.

Two of the 2d level editor integrations that build on top of bevy_ecs_tilemap also made releases:

Devlogs

vlog style updates from long-term projects

bevy_cli PR Train

devlog

PR review for the bevy_cli!

The Daily Bonk: Devlog 3

devlog

A month and a half into development, this mini golf game has a working main game loop for up to 6 players!

Educational

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

blender custom properties

Using Blender custom properties to drive Colliders

educational

A video covering using Blender custom properties, which export using gltf extras, and using that data to power the addition of components like Avian colliders and rigid bodies in Bevy.

aaa game

Triple A game in Rust Bevy

educational

A few new entries in the "Triple A game in Rust Bevy" tutorial series were published. The link here is to the full playlist.

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