Community Reflection on Bevy's Third Year

Posted on September 21, 2023 by Carter Anderson ( A silhouette of a figure with cat ears waving a tentacle, or Octocat: GitHub's mascot and logo @cart A vector art of a grey bird flying; former logo of X (formerly Twitter) @cart_cart A triangle pointing right in a rounded rectangle; Youtube's logo cartdev )

@cart here (Bevy's creator and Project Lead) with another update! A little over a month ago was Bevy's Third Birthday! As is tradition, I took that as a chance to reflect on the past year and outline my hopes and dreams for the future. You can read that in my Bevy's Third Birthday post.

This year for the first time I also encouraged the Bevy community to write their own reflections on Bevy's third year in a similar style, and to post them here.

What is Bevy? #

For those who don't know, Bevy is a refreshingly simple data-driven game engine built in Rust. Bevy is also free and open source forever! You can grab the full source code on GitHub. We have a Quick Start Guide. You can also check out Bevy Assets for a library of community-developed plugins, crates, games, and learning resources.

Reflections #

We had a number of responses! Here is a central collection of Bevy's Third Birthday posts:

What are we working on right now? #

Here are some things we have coming up!

  • Bevy UI and Scene system overhaul: I just proposed a brand new unified Bevy UI and Bevy Scene system to give us solid foundations to build the Bevy Editor on. This will allow users to compose, nest, override, and style scenes and UI both in code and in asset files. All using the same ergonomic format supporting hot reloading, IDE autocomplete, and more! This is both a design document and an initial prototype. The community has been reacting to and iterating on the initial design.
  • Bevy Asset V2: We recently merged Bevy Asset V2 ... a brand new production grade asset system for Bevy. It adds asset preprocessing, as well as massive, improvements to the asset APIs and internals. We also have a ton of additional features planned that build on top of it. I'm almost finished adding "multiple asset sources", so you can load (and process) assets from "anywhere" (including mixing and matching sources).
  • Automatic batching and instancing of draw commands: This adds some initial "automatic batching" support, giving us some nice wins. We have big plans for continuing to optimize the renderer. This is just the beginning!
  • Rusty Shader Imports: We're improving the usability and terseness of our import system by adopting rust-like syntax and functionality. Imports will feel much more natural after this.
  • Deferred Rendering: We're considering merging deferred rendering functionality into Bevy, and we have a working implementation! Lots of things to consider here before committing though.
  • GPU Picking: We have a GPU picking proposal that would add fast and accurate GPU-driven object picking to Bevy (identifying objects when they are clicked on).
  • PCF for Shadows: Shadows will have nice PCF filters that will drastically increase their quality.
  • Light Transmission for Materials: We're adding support for simulating light penetrating our PBR material, which lets us render things like glass, wax, rubber, etc with higher quality.
  • UI Node Borders and Shadows: This will improve the ability to express UIs by giving additional style options to users.
  • System Stepping: We are considering merging "system stepping", which would give users the ability to pause execution and run systems step-by step. This should make some debugging scenarios much easier!
  • And plenty more!

Bevy 0.12 will be released mid-October and some of these (including Bevy Asset V2) will be included!

Here is to another year of Bevy!

- @cart