This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

Foundations, Meetups, and more Bevy Cheatbook updates

2024-03-18

Welcome to another week in the Bevy ecosystem!

This week the Bevy Foundation was announced and several talks were given at the second unofficial Bevy Meetup.

If you're interested in some of the deeper magic, bevy_ptr got some great new docs this week and the computational complexity of different input detection methods is now documented. bevy_dev_tools started getting code filled in with the FpsOverlayPlugin and Gizmos also grew with the addition of 3d grids and line joints.

An interesting new query was merged in join, which helps solve for cases where you want to process two queries separately but also want to process the intersection of them.

We also got a Rotation2d type for rotating 2d vectors.

Bevy Foundation

The Bevy Foundation now exists! The tldr; mission statement is

We exist to develop Bevy and teach people how to use it!

The Bevy logo, website, and GitHub organization are now transferred to the foundation. Meeting minutes and other documents are also available.

Also notable is that this structure seems to align the Bevy Foundation with the community, which is great to see.

Most importantly: the non-profit structure helps ensure that our incentives are aligned. Profit motive introduces a significant risk to the Bevy community, as we would no longer just be trying to build what the community wants. We would need to balance that with the temptation to monetize.

— @_cart

Foundation members and Bevy community showed up in a Reddit thread asking and answering various Bevy/Foundation related questions.

Bevy Meetup #2

The second Bevy community meetup happened livestream and included 3 talks.

  • Arend jr. spoke about Sudoku Pi and the custom UI implementation they used. There is an accompanying blog post available as well.
  • Manuel talked about their animation graph node editor bevy_animation_graph. There is a YouTube video showing off their work as well. (note: This animation graph work is currently separate from the AnimationGraph that was merged last week).
  • EidLoi spoke about building a widget library with Bevy UI. This UI library has a number of devlogs on YouTube and got an open source announcement video later in the week.

Alice's Merge Train is a rundown of the status of current PRs at a maintainer level.

Showcase

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

trees!

Many Trees

showcase

  • 18 trees per wall
  • 3k triangles per tree
  • 20x20 maze == 200 walls == 3600 trees

10.6 million triangles

The Discord thread includes a great comment that talks about rendering performance in general as well as performance in Bevy and a whole bunch of other context.

chess

Chess: a first Bevy game!

showcase

A from-scratch Chess engine makes this author's first Bevy project (and first Rust program too!). Bitboards represent the board state (a u64 with 1 bit per square) and a minmax alpha-beta pruning algorithm searches for the best next move.

Playable on the web

procedural generation

Procedurally Generated Columns

showcase

Procedurally generated columns in Bevy 0.13

nagan

Nagan & Go Conquer

showcase

Nagan and Go Conquer are both Android apps shipped by the same group. Nagan is educational fun aimed at kids, while Go is well... Go. They're working on a third game and hope to release on iOS in the future.

soccer net

Football Net

showcase

A football net implemented with Rapier

dekirisu animal crossing style navigationdekirisu

Dekirisu game progress

showcase

This adorable animal-crossing style world navigation has gotten a number of updates over on Mastodon this week. Go check out the threads at their profile.

Goat Heard

showcase

Goat Heard is a reverse tower defense isometric platformer about herding goats, made for Acerola Jam 0

Playable on Itch.io

bevy_sly_compute

bevy_sly_compute and a Bevy fork

showcase

bevy_app_compute is a plugin to aid in writing compute shaders. bevy_sly_compute aims to provide easy way access data created or modified on the GPU, back in app world.

This showcase forks Bevy to extend AsBindGroup.

BITT survey

BITT thesis survey

showcase

BITT is an integration testing toolkit for Bevy and the author is doing their Master's thesis about automated testing in games. There was a short survey posted in Discord.

The sample size ended up being 19 people, so I'll leave the results to the results thread itself.

tf2 phong shader

Team Fortress 2 phong shader

showcase

Valve released a paper (pdf) explaining how they made Team Fortress 2 look like Team Fortress 2.

This showcase is a Bevy StandardMaterial extension.

particles

Custom Particles

showcase

A custom particle implementation that uses Instanced meshes and the option for custom shaders. The color, position, scale, and rotation are controlled from the CPU.

The author mentions that this was expanded from the "instanced mesh" example which I believe means this shader example.

RTS

Real Time Strategy!

showcase

This showcase is one year's worth of work into a RTS game. Currently implemented features includes

  • click and drag unit selection and deselection
  • heightmapped terrain
  • a custom collision system with hard (buildings, terrain) and soft (units, trees) shapes
  • pathfinding and location finding for groups of units.

Future goals include the addition of multiplayer, lua scripting, and an editor. The game has been designed for this extension using custom Commands. The graphics and logic have already been split into separate crates, which should help the multiplayer implementation.

skip-octtrees and observers

Murmuration

showcase

  • observers are a draft PR to generalize ECS reactivity.
  • octrees are a tree data structure in which each internal node has exactly eight children. Octrees are most often used to partition a three-dimensional space by recursively subdividing it into eight octants

This demo shows off a custom skip-octree structure which combined enable functionality like "get nearest entities to a point".

typst animation

Bevy MotionGfx

showcase

bevy_motiongfx is a motion graphics creation tool. It is highly inspired by Motion Canvas and Manim.

In Bevy MotionGfx, all vector graphics are rendered using Vello! This is done using the minimal Bevy Vello Renderer. There is also support for animation Typst! It comes with a compiler that compiles Typst content into SVG, which can then be rendered with Vello.

automatic door opening

Project Harmonia: Automatic door opening

showcase

Project Harmonia is a life simulation game: Core gameplay will be similar to other games in this genre: player creates virtual people, places them in houses, and helps direct to satisfy their desires.

This demo shows off automated door opening when characters approach.

It has its own projects thread in the Bevy Discord server.

desk pet!

Pet!

showcase

Its a desk pet! Similar in effect to the desk-toy example with some built in behaviors.

7drl jam game

7 Day Roguelike infinite procedural destructible worlds

showcase

Infinite procedurally generated destructible worlds with random enemies and random loot.

Playable on Itch.io

memory game

Memory Game

showcase

This is a short term memory game using Bevy UI and bevy_tweening. It is available on the App Store

Hellth

Hellth: A 7 day roguelike submission

showcase

Hellth is a 7 day roguelike challenge submission that's been updated since the contest. It is available to play on Itch.io

I was able to make it to level 5 after 2901 turns.

cubes!

Cubes!

showcase

Throwing a bunch of cubes onto a surface is a pretty classic early Bevy app. This one also includes camera movement and wavy terrain.

generalized maze building

Maze building

showcase

A custom maze building algorithm. The showcase shows off a HexGrid, but it can generalize to any (n>2)-grid

Crates

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

bevy_magic_light 2d

Magic Light 0.7+

crate_release

bevy-magic-light-2d is a 2d shading, lighting, and shadow implementation.

The 0.7 release brings bevy-magic-light-2d up to date with Bevy 0.13 support, and the tilemap branch includes tilemap support. Its still going to get a bit more polish but already has a working example.

bevy_defer 0.4

crate_release

bevy_defer is a simple asynchronous runtime for executing deferred queries.

bevy_defer uses a single threaded runtime that always runs on bevy's main thread inside the main schedule, this is ideal for wait heavy or IO heavy tasks, but CPU heavy tasks should not be run here.

lightyear 0.12.0

crate_release

lightyear is a full-featured networking library to make multiplayer games!

This release brings support for multiple Transports at the same time: WebSocket, WebTransport, UDP, etc. This is most exciting for the potential to enable cross-play between Steam directly connected players. Steam and Epic Online Services support is planned for the future.

Lightyear comes with a book and examples

bevy_tween

bevy_tween v0.2.0 First release!

crate_release

bevy_tween joins the ranks of bevy_easings and bevy_tweening in the ecosystem of animating from one value to another. If you're looking for a new tweening crate, check out the differences to decide which works for you!

bevy_picking_tilemap

crate_release

bevy_picking_tilemap adds a bridging backend for bevy_mod_picking to enable picking tiles from bevy_ecs_tilemap

(not on crates.io yet because a custom branch for bevy_ecs_tilemap is used to support bevy 0.13)

Devlogs

vlog style updates from long-term projects

Untold Dawn

Untold Dawn

devlog

Untold Dawn is a MUD built with Bevy in headless mode.

Sickle UI

Sickle UI open sourced

devlog

The widget library that was talked about at the unofficial Bevy Meetup #2 was open sourced later in the week. There's also a bunch of devlogs on the YouTube channel.

GPU Particle Research: Bevy Hanabi

devlog

Part 1 of an article that dives into how Bevy Hanabi works.

Educational

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

Bevy Cheatbook: Programming Chapter

educational

The Bevy Cheatbook got a number of updates, including updates to Queries, building custom Commands, Plugins without a struct, and the ECS.

The Bevy Cheatbook is supported through GitHub sponsors

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