This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

Ray Marching, Blender Workflows, and Node Graphs

2024-07-01

The release-candidate process continues as 0.14.0-rc.4 went out this week. Changes between rc.3 and rc.4 can be viewed on GitHub.

It looks like the stable release will happen this week, but to be clear there is no date set and the release will happen when it is ready and the release candidate process has run its course.

If you've been using the 0.14 release candidates, you might notice some changes to the inclusion of BackgroundColor in bundles such as the ImageBundle in the most recent release candidate. 14017 adds them back in for DX aims where they were removed before.

UI Material Example

ui_material

Bevy supports using shaders to render UI elements with bevy_ui. The ui_material example was updated to include a progress-bar style shader. This is a fairly simple shader and those already comfortable with writing shaders likely already understand how to write it, but many coming to Bevy who are not yet comfortable with GPU programs will find it useful.


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.

mijocraftmijocraft levels

Mijocraft

showcase

Mijocraft is a 2d Minecraft clone that recently gained a new main, world selection, and pause menus as well as player customization and other features.

vampire survivorsvampire survivors gameplay

nodes-based skill upgrades

showcase

A proof of concept for a vampire survivors style game where player upgrades are nodes in a graph, with the goal of large amounts of player freedom.

ray marched and rasterized scene

Ray marched and rasterized

showcase

This demo shows off ray marched and rasterized mesh graphics playing together nicely. Any object with a reflection is raymarched and without reflections are meshes.

targets go spinny

Quartz: Targets Go Spinny

showcase

A second Quartz visual programming and dsp playground demo: targets go spinny. This one, as usual, is audio-heavy and best viewed at the link on YouTube.

node graphs

Node graph scripting

showcase

This is scripting where all the nodes are fully automatically generated. It compiles to a VM and then runs in rust, using reflect, and reflect on functions!

Publishing this work would require function reflection and currently relies on a number of forks, but is on GitHub for those that are interested.

gunbuggunbug 2

Gunbug

showcase

Gunbug is a 2D online co-op horde survival shoot'em up. It focuses shooting lots of enemies with lots of guns. About a year's worth of work has gone into the project so far and it is available to wishlist on steam.

transform controls

Blender-inspired transform controls

showcase

Blender-inspired transform controls that can constrain to global or local axes

Brackey's 2d platformer

Brackey's 2d platformer Bevy port

showcase

Brackeys recently started posting videos on YouTube again, shifting from Unity to Godot-based videos. With that, they've posted a beginner-level 2d-platformer tutorial.

This showcase is an attempt to port the end result of that tutorial to Bevy. The implementation uses a few crates that are, in my opinion, well established and common choices:

It also uses bevy_collider_gen which is a lesser-known crate that creates xpbd colliders from images with transparency, and bevy_editor_pls as an in-app editor.

The implementation uses Bevy 0.13.2.

bevy paint

Bevy Paint

showcase

An MS Paint style editor, entirely in Bevy without external crates.

2d depth buffer

2d depth with bevy_ecs_tilemap

showcase

This demo shows off the first working version of bevy_ecs_tilemap combined with a 2d depth texture to allow a player character to walk through the middle of a tile image. In this case its the player walking through the middle of an arch tile. More work needs to be done to get the math for the depth values working well.

terminal games!

Terminal games!

showcase

A new crate for making terminal games in Bevy! It is not yet published, but supports a number of features including:

  • alpha blending
  • raw terminal input
  • sprites from images
  • text overlay
blenvy

Blender_bevy_component_workflow (blenvy)

showcase

Blender_bevy_components_workflow is a project that pushes Blender/Bevy integration forward using Blender addons and Bevy crates. This showcase shows off a number of features in the upcoming release, including full-level hot-reloading, blueprints, and more.

The project is going to be renamed to blenvy and we'll cover it again then. Until then there's plenty of extra videos and information in the Discord thread.

quartz

you can't dance around the fire without a fire!

showcase

Quartz is a visual programming and dsp playground and now has a deployed wasm build as well, which you can learn to use in the README.

This is a piece done using Quartz, which you'll want to listen to using the YouTube link or the Discord thread.

lightmapping

bevy lightmap experiments

showcase

Did you know Bevy supports lightmaps? lightmapping workflows were unlocked with 0.13's release using tools like The Lightmapper and Blender.

this is a demo of Bevy's lightmap support and uses The Lightmapper and Blender to bake the lightmaps. The scene is a glTF and the lightmaps are inserted on each model individually.

bevy lunex huddiagetic ui

bevy lunex HUD

showcase

Initial work on a HUD and worldspace diagetic UI using bevy_lunex in the bevypunk example.

fractal conemarcher

fractal conemarcher worlds

showcase

These spore-ish creatures we've seen in past issues got cone-marched fractal worlds to explore. Cone marching is a progression from raymarching that expands rays to have thickness.

bevy solari directx first triangle

bevy directx

showcase

The first triangle rendered using Bevy and custom directx rendering, demo is available on GitHub. This is an extremely interesting example if you're interested in low-level rendering implementation but will not apply to the vast majority of Bevy users and isn't planned to be upstreamed.

marble

balling

showcase

In the vein of super monkey ball or marble it up this is a marble/sphere controller in a level. It is the first steps towards recreating this style of game.

Crates

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

bevy-text-edit

crate_release

bevy-text-edit is a crate for editable text. It supports text cursors and multiple text boxes.

commands.spawn((
    TextEditable,
    Interaction::None,
    TextBundle::from_section(
        "Input Text 1",
        TextStyle {
            font_size: 20.,
            ..default()
        },
    ),
));

bevy_reflect_utils

crate_release

A small, plugin-less utility library making it easier to work with reflection in bevy.

berdicles

berdicles

crate_release

berdicles is an expressive CPU particle system for the Bevy engine.

Features

  • Instancing based CPU particles.
  • Expressive non-physics based particle traits.
  • Familiar setup with bevy's native Material and Mesh.
  • Particles as emitters.
  • Mesh based particle trails.
  • Particle events that spawns other particles.
  • Billboard particles.

The crate is compatible with Bevy 0.14+.

SMesh

crate_release

SMesh is a polygon mesh manipulation library meant for use in procedural generation.

let mut smesh = SMesh::new();
let v0 = smesh.add_vertex(vec3(-1.0, -1.0, 0.0));
let v1 = smesh.add_vertex(vec3(1.0, -1.0, 0.0));
let v2 = smesh.add_vertex(vec3(1.0, 1.0, 0.0));
let v3 = smesh.add_vertex(vec3(-1.0, 1.0, 0.0));
No devlogs this week
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