This Week in Bevy

What happened this week in the Bevy Engine ecosystem

Links

New Meshes, New Examples, and Compute Shaders

2024-04-15

This week in Bevy we've got some new meshes, new gizmos, and a couple of great new examples in the Bevy repo.

We've also got the first of the ludum dare participants showing off what they've been working on and some really deep dives in the educational section.

bevy_utils has a tracking issue to either remove or reduce the crate. #12772 makes progress towards this goal. The overarching effort here is largely refactoring and moving code, so can be a great introduction to the codebase for newer contributors.

Triangle3d Meshing

Triangle3d gets its meshing implementation. To me this is a particularly interesting meshing implementation because triangles are often thought of as the base primitive. Given the amount of comments, this PR and the associated code is a great place to look if you're interesting in how the meshing is constructed for bevy_math::primitives.

In #12914 the Tetrahedron was also added to 3d gizmos.

Using asset .meta files

.meta files and Assets V2 are fairly new, so its nice to see a new example in #12882 for using .meta files when loading assets like images which allows configuring settings like the image sampler options.

Compute Shader Readback

Reading data back from a compute shader is a very commonly requested tutorial and since the GPU is a completely separate device and some behavior can differ between platforms it can be hard to decipher how to handle it without an example. #12877 is a new example that uses crossbeam_channel to communicate between the separate Main and Render Worlds. It includes a bunch of great comments detailing why code exists in different places and what the implications are.

Tracy

A number of PRs this cycle, including adjustments to MeshUniforms, dividing the VisibleEntities list, and Event optimizations all include Tracy graphs. Setting up and using the Tracy profiler is documented in the profiling docs and can be an interesting tool to add to your Bevy debugging toolbelt.


Alice's Weekly 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.

top-down shooter

Top-down shooter

showcase

This top-down shooter recent gained extra zombie chunks that persist after they're defeated.

cybersummonercybersummoner

CYBERSUMMONER for LudumDare

showcase

This game is an in-progress concept for the Ludum Dare game jam, which happens twice a year.

asteroids

Asteroids

showcase

This asteroids game got a life system and a controls systems refactor on stream. It includes a custom asset loader for kenney spritesheets and depends on bevy_xpbd_2d for colliders and bevy_hanabi for particle effects.

puzzle game

bevy_flurx demo

showcase

This showcase is a demo puzzle game for an in-progress crate called bevy_flurx.

Source is available on GitHub

compute shader rasterization

compute shader rasterization

showcase

Some particles rasterized with a compute shader

ragdollragdoll

2d ragdoll

showcase

A 2d ragdoll with a TGS Soft + XPBD hybrid solver. Contacts use TGS Soft (an impulse-based solver) while joints use XPBD (a position-based solver).

wizard shopwizard game

Upgrade shop blockout

showcase

This showcase is a blockout for the upgrade shop in a multiplayer wizard battler. There are play tests every other Saturday in the evenings (CET) which you can find in the project's discord thread in the Bevy Discord.

voronoi procedural landscape

Voronoi procedural mesh generation

showcase

The mesh is hand-crafted using voronoise with random y-offsets per-cell.

The discord thread includes some useful explanations of Quaternions as well as further discussion.

OK so you know how vec3's are just like an arrow pointing in a direction from 0, 0, 0 right? Just imagine that a quaternion is the same but with the fourth argument being a rotation around that vec3.

sand simulationsand simulation

Sand-style simulation

showcase

A sand-ish style simulation with white pixels falling into a black space

scavengerscavenger gameplay

Scavenger

showcase

This game was built in the spirit of the last Bevy game jam. A devlog details the chosen theme as well as the work through the week.

Its a collection game with multiple levels where some collectibles increase points and other decrease points.

Crates used include

workers workingvoxel selectionnavigation mesh visualization

Voxels, tasks, and pathfinding

showcase

Voxel selection and task management make these little characters work on the area that was just selected.

The map is 256x256x64 which makes 3d astar pathfinding massive task. "Can this worker reach this job" is a hard question to answer.

There are separate navigation graphs constructed per entity type. Cats are small and can't scale ladders while colonists are two tiles tall and can use ladders.

bullet hell texture sample

Bullet hell texture sample

showcase

This mini-project was streamed live and renders a bullet-hell style spiral pattern. Each bullet samples from a texture rendered by an off-screen 3d scene

caves and bowsgenerating world

Better caves, bats, and a progress indicator

showcase

This showcase shows off the progress on this 2d wizard mining game. Cave improvements, bats, and more. The procedural generation was blocking and started to take too long so an additional progress indicator was added when generating worlds.

The shadows on the tiles that aren't visible are SkylightMask2Ds from the bevy-magic-light-2d crate. When a chunk is loaded, solid blocks are merged into rectangular selections for the chunk and an associated SkylightMask2d is added for each selection.

Crates

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

bevy_devbevy_dev

bevy_dev 0.3

crate_release

bevy_dev contains a prototype material and new in 0.3: a debug fly camera. Included is the ability to switch between cameras.

bevy_spritesheet_animation

bevy_spritesheet_animation first release

crate_release

bevy_spritesheet_animation is a Bevy plugin for animating sprites that are backed by spritesheets.

Features

  • A single Bevy component to add to your entities to play animations.
  • Tunable parameters: duration, repetitions, direction, easing.
  • Composable animations from multiple clips.
  • Events to react to animations ending or reaching specific points.
  • A convenient API to select frames in spritesheets.

Devlogs

vlog style updates from long-term projects

devlog zenith

Zenith Devlog 1

devlog

The meat of the post is what the author learned about structuring systems and components from rewriting their level editor to be both more flexible and ergonomic.

Committing to Bevy

devlog

The author of this devlog is coming back to a project they were working on in a different game engine after falling out of love with their current process. Their new path forward is a commitment to using Bevy after a few weeks of experimentation to make sure it was the right move for them.

Educational

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

Build/Sign/Debug a Bevy app for IPhone from Linux

educational

Building and signing applications for Apple devices is a huge pain, so its wonderful to see a very detailed post on not just how to build Bevy apps, but how to sign, create certs, and register devices.

Reactivity from the Bottom Up

educational

Reactivity is a popular topic these days, whether you're working in web development or other domains. This series of posts covers the backing information you'll need to understand what bevy_reactor is and why it exists. From primitives to signals to full on widgets there's a lot of information 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