This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

Dev tools can be more than a grab bag

2024-03-25

Dev tools can be more than a grab bag of "things that developers find useful": there are real commonalities and patterns!

Alice

Bevy 0.13.1 is out now with fixes for globals in vertex shaders, and more.

I'm in London this week to give a talk on Bevy at RustNation UK. My talk centers on the Rusty ergonomics that Bevy applies to empower people to build games, so when I saw RFC 77 - dev-tools-abstraction I knew I had to read it.

The RFC tries to answer questions like "What is a Dev Tool", what is the purpose of bevy_dev_tools, how will dev tools be registered, called, and displayed, and more. The RFC is a great read and I encourage you to read it if you're interested but note that it hasn't been merged yet and will likely undergo some more editing this week.

Meshlets are seeing some promising progress and look like they're on their way to being merged behind a feature flag. Meshlets are very exciting but not a one-size-fits-all solution, so its also encouraging to see continued progress towards GPU driven rendering as well.

It's really meant for rendering really dense, ridiculously high resolution scenes where the goal is to render 1 triangle per pixel, so you're never limited by lack of geometric detail

JMS55

Meshlets also point out a growing stress point in the Material and shader abstractions. In addition to the possible shaders you can define after prepass and deferred were added

  • vertex_shader
  • fragment_shader
  • prepass_vertex_shader
  • prepass_fragment_shader
  • deferred_vertex_shader
  • deferred_fragment_shader

It looks like there will be a few more

  • meshlet_mesh_fragment_shader
  • meshlet_mesh_prepass_fragment_shader
  • meshlet_mesh_deferred_fragment_shader

All of these together means that you need to have a growing set of knowledge about which imports to use and how to ifdef code appropriately if you want to support them all (and to be clear, you don't have to support them all if you don't need to).


Showcase

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

green pixels

Green pixels

showcase

A creative coding experiment that shows some green pixelated effects.

animal crossing/stardew valley hybrid

Animal Crossing/Stardew Valley inspired sandbox

showcase

This YouTube video shows off the progress of an Animal Crossing/Stardew Valley inspired development sandbox. Resource gathering, a number of different tiles and health bars as well as the classic Animal Crossing "curved world" aesthetic.

Updates for this one are posted regularly on Mastodon and other platforms.

2d minecraft

2d minecraft

showcase

This 2d Minecraft-like game got a new ambient occlusion effect for the walls.

asteroids clone

Asteroids Ship Controller

showcase

This is an Asteroids-style ship controller built in a few hours on a flight. Ship selection, movement, and firing lasers were implemented. The information in the corner is iyes_perf_ui

svincraft

first-person starcraft-like

showcase

About three weeks went into this first-person starcraft-like game. Its meant to act as a tech demo and thus the Discord thread has a long list of references to different plugins and other assets that were used.

Check out the video on YouTube

shu

Shu: visualization of high-dimensional biological pathways

showcase

Shu is a scientific visualization software written in bevy that has just been published.

Ray casting on arbitrary convex shapes

Ray casting

showcase

Ray casting on arbitrary convex shapes in a collision detection / geometric query library. This demo is done by the person that maintains bevy_xpbd

planet generation voxels

Voxel Planet Generation

showcase

This showcase shows the voxel planet generation in AnthonyTornetta/Cosmos. Cosmos is a multiplayer block-based space exploration game in active development.

Compass Map Editor

Compass Map Editor

showcase

The Compass Map Editor underwent a refactor completely to use mesh and materials to be able to apply custom shaders to individual sprites. This allows custom selection and deletion outlines and more.

The refactor showed a ~48% memory usage reduction by moving to meshes and changing their caching strategy,

zoolitaire

Zoolitaire

showcase

Zoolitaire is a grid-based puzzle game deploying on iOS. Its the author's first deployed Bevy mobile game.

If you don't own an iPhone, there's a video of gameplay in the Discord thread

Path to Renewal

Path to Renewal

showcase

Enjoy nature, eat baked goods, and avoid bill-throwing enemies in this Buddy Up Jam entry. Path to Renewal is a maze game that we've seen developing in previous showcases.

Playable on Itch.io

sdfs

3d meshes from SDFs

showcase

3D meshes made of Signed Distance Fields! Part of work towards 2d modeling software.

squares

Squares!

showcase

squares hopping around a scene

x-treme

X-treme

showcase

X-treme is the result of a 3-day game jam. You play as a cat in a box flying through the air.

Playable on Itch.io

procedural roguelike rain

Procedural roguelike particle effects

showcase

Some rainfall and particle effects added to a procedurally generated roguelike dungeon

Crates

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

bevy_egui 0.26

crate_release

bevy_egui gets web clipboard support in 0.26

iyes_perf_ui

iyes_perf_ui first release!

crate_release

iyes_perf_ui is a customizable Performance/Debug overlay for Bevy UI!

  • Made with Bevy UI (not egui or any other 3rd-party UI solution)
  • Easy to set up (see simple example)
  • Customizable appearance/styling (see settings example)
  • Modular! You decide what info you want to display!
    • Choose any combination of predefined entries for:
      • Framerate (FPS), Frame Time, Frame Count, ECS Entity Count, CPU Usage, RAM Usage, Wall Clock, Running Time
    • Implement your own custom entries to display anything you like!
  • Support for highlighting values using a custom font or color!
    • Allows you to quickly notice if something demands your attention.

Spawning the UI can be as simple as:

commands.spawn((
    PerfUiRoot::default(),
    PerfUiEntryFPS::default(),
    PerfUiEntryCpuUsage::default(),
    PerfUiEntryClock::default()
));
web panic hook

web_panic_report

crate_release

web_panic_report replaces an html element on the page with a bug report form when panics happen in your Bevy game. This is targeted at wasm deployments and has [an online demo](https://loopystudios.github.io/web_panic_report/

Devlogs

vlog style updates from long-term projects

Gravity Sickness

Gravity Sickness

devlog

This devlog covers 4-5 months of learning Bevy and Rust building a "scape-like" action-rpg.

Panzatier

Panzatier

devlog

3 months of development for Panzatier. Updates including talking about astar pathfindings, ray casting, map updates, and more.

Playable at lommix.com and there's a Project thread in the Bevy Discord.

Educational

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

modular characters

Modular 3d Characters

educational

Creating modular characters is a common feature of many video games. This 3 hour video dives into bones, parenting, attaching parts, and linking animations to build modular characters.

"inline assets"

educational

An "Inline Asset" is an asset whose data is encoded entirely within the asset path itself, without the need to load data from a filesystem or anywhere else. This is similar in concept to a "data URL", which allows a image or resource to be encoded directly within the URL itself.

This gist explores how to take advantage of Bevy's asset system to manage procedurally generated data for materials.

Bevy Top Down Shooter Tutorial With Massive Enemy Hordes

Bevy Top Down Shooter Tutorial With Massive Enemy Hordes

educational

This top down shooter uses a kd-tree for efficient collisions and is capable of handling large hordes of enemies with simple bullet collisions. The video is a timelapse of the game being built from scratch. It also includes fixing some common errors that one might encounter while working with Bevy.

Extreme Bevy

Extreme Bevy Part 5: Procedural generation

educational

Extreme Bevy is a tutorial series that aims to recreate the Extreme Violence by Simon Green with online p2p multiplayer using rollback netcode. The series focuses on Bevy, GGRS, and Matchbox.

The newest section, Part 5, focuses on procedural generation and explores how to seed a random number generator and use it to generate a map.

The finished game can be played here.

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