This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

Bevy 0.13 out now!

2024-02-26

Welcome to another week in the Bevy ecosystem!

This week we've got the Bevy 0.13 release! That means a whole lot of crate releases that upgrade compatibility.

Don't forget to check out the official release notes which include in-depth guides for migrating as well as dives into some of the amazing new features like Lightmaps, Irradiance Volumes, and the new primitive shapes!

Bevy currently releases once every three months (approximately, there is no set date) and this is the first release of 2024.

Showcase

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

erosion simulation

Erosion Simulation

showcase

Simulating erosion with some nice UI and visualization to go with it. Includes conservation of momentum. The input is Perlin noise summed at several scales.

The two maps on the side are water volume map (black-teal) and water momentum map (grey with red/blue streams)

voxel slicing

Performant Voxel Terrain Slicing

showcase

voxel based world with the ability to show vertical slices of the terrain. The Discord thread contains some discussion about using prepass shaders with links to source code.

A separate Discord thread covers additional context around getting to this implementation.

Project Harmonia window placement

Project Harmonia windows

showcase

Project Harmonia is a work-in-progress life simulation game. This demo showcases the ability to place windows with transparency. Models are imported from Blender.

3d bevy_xpbd suspension

3d suspension with bevy_xpbd

showcase

A continuation of the bevy_xpbd_2d suspension also featured in this issue,

The Discord thread links to a discussion of possible solvers

audio visualization

Control via Audio

showcase

Visualizing audio data generated by funDSP

3d Flappy Bird with a gun instead of a bird

Flappy Bird 3d

showcase

A classic flappy bird implementation in 3d, using a gun firing as the mechanic for "flapping".

Playable online with the source available on GitHub

terrain

Integrating bevy_mesh_terrain and space_editor

showcase

bevy_mesh_terrain is a plugin for terrain and space_editor is a plugin for prototyping with prefabs. Combining them results in this demo. The forked space_editor lives on GitHub.

Design terrain, save file, import RON data.

voxels

Colony Sim Voxels

showcase

Voxels! This time for a colony sim type game, which includes being able to see underground. The video in the Discord thread includes a vertical slice animation that is very nice.

Voxel landscape generation

Voxel Landscape

showcase

3d noise based voxel generation that results in a landscape-looking collection of voxels.

"Furniture Mode" in Project Home

"Furniture Mode" in Project Home

showcase

Project Home is a life simulation game with over a year of work in it. This showcase demos furniture placement.

boxes!

33 million triangle stress test

showcase

A voxel game stress test showing off rendering 33 million triangles with shadows enabled.

The source is available on GitHub.

casting wizard spells

Multiplayer Wizard Arena Spell Upgrades

showcase

In between rounds in this multiplayer wizard arena game you can upgrade your spells. Features a UI for choosing upgrades as well as some gameplay after having chosen them.

A raymarched torus rendered by a shader on a cube

This is not a Torus

showcase

This is not a torus, it is a cube with a raymarching shader. This one has a bunch of extra examples in the discord thread, including animated SDFs, so be sure to check it out!

wheel support and suspension using bevy_xpbd_2d

bevy_xpbd suspension physics

showcase

A little cart with wheels that both hold up the cart and also hang below it, implemented in both 2d and 3d using bevy_xpbd.

its a minecraft clone!

Minecraft inspired

showcase

A wonderful looking Minecraft clone. Source code is available on GitHub.

This implementation has a chunk size of 32x32x32 and can handle 16 chunk render distance at smooth performance.

The discord thread includes a bunch of extra voxelly links:

global illumination

Progress towards realtime path traced GI

showcase

GPU-driven realtime path-traced global illumination is a mouthful of words. That's what this example is. These examples over have to converge over some period of time, so be sure to check out the Discord thread to see the convergence speed. There's also some discussion of different Global Illumination approaches with mentions of ReSTIR, Radiance Cascades, and more.

100k enemies with collisions!

100k enemies with bullet collisions

showcase

This kd-tree powered bullet hell demo can sustain 100k enemies with bullet collisions.

The discord thread also includes some interesting discussion about using different structures, like a spatial grid.

Procedural Irregular Grid

Townscaper-inspired irregular grid

showcase

Townscaper is a game in which you click to generate buildings. There are many aspects of Townscaper that make their way into other games: Wave Function Collapse is one, but the Procedural Irregular Grid is another.

The grid defines how buildings are built and results in a very organic looking collection. This is an implementation of that grid in Bevy, currently using gizmos.

Bevy systems in an interactive viewer!

bevy_mod_debugdump live playground

showcase

This live playground shows off the results of using bevy_mod_debugdump. If you've ever been curious about all the systems that run around inside of your Bevy app, this is a great place to check!

Contact Projective Decals

Contact Projective Decals

showcase

A talk on Path of Exile's rendering approaches mentioned something they called "Contact Parallax". This is an example implementing the technique inside of Bevy using the default renderer with the depth_prepass function.

The parallax mapping PR to Bevy and the tracking issue are also good reading for those interested in similar techniques.

Source is available on GitHub. and there's lots of great discussion in the Discord thread.

bevy_firework

Particles!

showcase

bevy_firework is a CPU-driven, batch-rendered particle system, which can use bevy_xpbd colliders. This is in contrast to bevy_hanabi, which is GPU-based.

The collision uses xpbd's raycasts to detect collisions and runs a very primitive simulation to update velocities

Crates

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

bevy_kira_audio 0.19

crate_release

bevy_kira_audio is a replacement for the built-in bevy_audio. The goal is to replace or update bevy_audio, if Kira turns out to be a good approach.

0.19 brings Bevy 0.13 support.

bevy_vector_shapes

bevy_vector_shapes

crate_release

Bevy Vector Shapes is a library for easily and ergonomically creating instanced vector shapes in Bevy. It has been updated to Bevy 0.13.

bevy_smooth_pixel_camera

bevy_smooth_pixel_camera 0.3.0

crate_release

bevy_smooth_pixel_camera adds a simple smooth pixel camera based on this video. It is now updated for Bevy 0.13.

full changelog is available on GitHub.

bevy_pipelines_ready 0.3.0

crate_release

Does audio in your web app go all wonky when Bevy stops the world to compile a pipeline? You might want to incorporate this into your loading state!

bevy_pipelines_ready is a tiny Bevy plugin that counts the number of render pipelines that are ready and makes that data available as a Resource in the main world.

bevy_simple_text_input 0.4.0

crate_release

bevy_simple_text_input is an unambitious single-line text input widget for bevy_ui. Updated for Bevy 0.13.

bevy_ineffable 0.5.0

crate_release

bevy_ineffable is simple-to-use input manager that empowers players and makes accessibility easy.

The Discord thread contains a light comparison to leafwing_input_manager and there is a roadmap in the README.

bevy-histrion-packer 0.2.0

crate_release

bevy_histrion-packer is a Bevy plugin to pack assets into a single .hpak file.

bevy_ecss 0.7.0

crate_release

Bevy ECSS is a crate which allows the usage of a subset of CSS to interact with bevy_ecs. It's mainly aimed to apply styling on bevy_ui but it can be used by any component by implementing custom properties.

In addition to supporting Bevy 0.13

  • Added support for applying multiple style sheets to an entity;
  • Added support for row-gap and column-gap properties.
  • Added support for Any (*) selector.

It includes a book.

Dexterous Developer 0.2

crate_release

Dexterous Developer is an experimental hot reload system for the bevy game engine. Inspired by DGriffin91's Ridiculous bevy hot reloading - adding the ability to re-load arbitrary systems, and the ability to transform resource/component structures over time.

glowy orb tutorial

Griffin's crates updated to Bevy 0.13

crate_release

DGriffin91 maintains a whole host of crates that are continuously updated with each version of Bevy. All got Bevy 0.13 updates. In particular I'm excited to see the glowy orb tutorial featured in the Bevy 0.8 release continue to get updated with each passing version.

The rust-gpu support in bevy_mod_rust_gpu is interesting if you're into experimental alternative shader tech.

bevy_mod_index 0.4.0

crate_release

A Rust crate that allows efficient querying for components by their values

bevy_entitiles wave function collapse

Bevy EntiTiles 0.6.*

crate_release

A 2d tilemap library for bevy. With many useful algorithms/tools built in. There are examples using ldtk and wave function collapse.

leafwing_abilities 0.7

crate_release

Track resources (like mana), cooldowns, charges and more in a simple well-tested framework that integrates with leafwing_input_manager.

bevy editable curve

bevy_lookup_curve 0.1

crate_release

bevy_lookup_curve is a crate for editable lookup curves that can be used for animations or other gameplay elements like physics, audio modulation, etc. It comes with an Egui-based editor with save-functionality and an AssetLoader.

bevy_guessture 0.1

crate_release

A Bevy plugin for Gesture recognition gets its first release!

terminal shader

bevy_terminal_shader

crate_release

bevy_terminal_shader is a port of a shadertoy terminal shader example to Bevy.

glitch effect

bevy_video_glitch

crate_release

bevy_video_glitch is a port of a shadertoy video glitch example to Bevy.

bevy xpbd

Bevy XPBD 0.4: Collider Agnosticism, Layer Rework, and Bevy 0.13

crate_release

Bevy XPBD is an ECS-based 2D and 3D physics engine for Bevy. There is a whole blog post dedicated to the 0.4 release and there's a lot going on, so go check it out.

leafwing-input-manager 0.12.0 and 0.13

crate_release

leafwing_input_manager is a straightforward but robust input-action manager for Bevy. 0.12 included a number of breaking changes with the goal of squashing some bugs and removing some tech debt. The 0.13 release supports Bevy 0.13.

The Bevy 0.13 update will be a different release.

bevy_wind_waker_shader

bevy_wind_waker_shader

crate_release

bevy_wind_waker_shader is a Bevy implementation a toon shader that looks like the one used for characters in The Legend of Zelda: The Wind Waker. I builds on the ideas in this video

keyseq first release

crate_release

keyseq is a crate to specify key chords with the usual short-hand ctrl-alt-A. It got releases for Bevy 0.12 and 0.13 in its first release.

bevy_query_ext 0.3

crate_release

A collection of types used to simplify how components are used in queries, by implementing bevy's QueryData on generics.

bevy_asset_loader 0.20.0

crate_release

bevy_asset_loader is one of those crates that makes its way into just about every Bevy project I make. It describes itself as

Loading states with minimal boilerplate

#[derive(AssetCollection, Resource)]
struct PlayerAssets {
    #[asset(path = "images/player.png")]
    sprite: Handle<Image>,
}

Devlogs

vlog style updates from long-term projects

Bevy UI devlog

Bevy UI Widget Library - Docking Zones

devlog

Adding docking zones to a Bevy UI Widget library

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