Bevy on a Pico, Rhythm Engine, and Robot Rumble
2024-11-25
This week in Bevy we see the tail end of the 0.15 milestone (5 items left as of writing this issue). The release candidate process is a great improvement to Bevy releases (in my opinion) but it will be nice to see 0.15 close out, release, and new features start landing again.
The unofficial Bevy meetup had its 7th livestream which is up on YouTube and includes three talks:
- Consoles and Beyond: Making Bevy no_std compatible
- Proving compilers aren't hard with the Bevy Linter
- In search of Bevy UI escape velocity
Showcase
Bevy work from the #showcase channel in Discord and around the internet. Use hashtag #bevyengine.
Bevy + Rekordbox
showcase
The start of a Bevy 0.15 DDJ/Rekordbox visualizer. It currently detects the controller, channels, and effects, then visualizes some bars that animate with the song.
Typst Cards
showcase
The card faces in this game (which we also saw in last week's issue) are being composited with Typst. Why Typst? It was a low-time-investment implementation and means prototyping visuals comes with instant feedback.
Rhythm Engine
showcase
Rhythm engine is a rhythm game with gameplay like osu! except hit objects can be any shape and animated. The shapes are polylines and morphing is accomplished using SDFs.
content warning (youtube video): flashing
Bevy Raspberry Pi Pico
showcase
Bevy running on a Raspberry Pi Pico with an E-Paper Display. This is an application of the recent no_std work!
#[entry]
fn main() -> ! {
init_heap();
App::new()
.add_plugins(PiPicoDemoPlugin)
.init_resource::<Counter>()
.add_systems(Startup, clear_display)
.add_systems(Update, (
draw_scene,
render,
update_counter
).chain())
.run();
loop {}
}
WASABI-16
showcase
WASABI-16, a Bevy + Wasm fantasy console, has introduced network multiplayer APIs for game cartridges. A WASABI-16 multiplayer game cartridge embodies both client and server logic. A generalized game server, which is a headless Bevy app, can host any multiplayer game cartridge and serve it to clients as they connect.
Voxel Editor
showcase
A voxel editor built from a custom marching cubes implementation. The marching cubes implementation was based off this YouTube video
Robot Rumble
showcase
This Bevy 0.14 game is a rewrite of a Python implementation. It uses lightyear for networking. The planets are procedurally generated in shaders.
Crates
New releases to crates.io and substantial updates to existing projects
bevy_debug_log 0.3
crate_release
bevy_debug_log allows viewing tracing logs inside your Bevy app; particularly on platforms like mobile where you have no easy way to follow the terminal output.
iyes_progress 0.13.0-rc.1
crate_release
iyes_progress is a progress-tracking crate (and integrates well with crates like bevy_asset_loader). The goal of the crate is to aid in the creation of loading screens that can do more than just asset loading (such as map setup or procedural generation).
0.13.0-rc.1 brings a major overhaul for Bevy 0.15 and there is a migration guide for current users.
v0.22.0-rc.1 of bevy_asset_loader has also been published with support for the iyes_progress release candidate.
bevy_hui
crate_release
bevy_hui is a pseudo HTML to bevy_ui templating crate. This is a UI crate built on top of bevy_ui with support for hot-reloading due to the way it uses templates. It is compatible with Bevy 0.15+.
Educational
Tutorials, deep dives, and other information on developing Bevy applications, games, and plugins
Fix bubbling of runtime requirements for `#[require(...)]` attribute authored by Jondolf
remove gcd impl from bevy_render authored by atlv24
Properly set accessible value on label nodes authored by DataTriny
bevy_reflect: Add `ReflectSerializerProcessor` authored by aecsocket
Fix MSRVs for standalone crates authored by BenjaminBrienen
Add missing exports in bevy_ecs authored by ItsDoot
Bind only the written parts of storage buffers. authored by JMS55
add docs to clip_from_view authored by atlv24
add docs to view uniform frustum field authored by atlv24
Fix runtime required components not registering correctly authored by andriyDev
Adds some helpful methods to TextFont authored by mnmaita
Rename box shadow rendering variable names authored by doup
Fix `bevy_hierarchy` failing to compile without `reflect` feature authored by aecsocket
Revert most of #16222 and add gamepad accessors authored by cart
Fix detailed_trace! authored by cart
Correcting misspellings authored by hjklchan
Add a note to the on_unimplemented message for `QueryData` recommending `&T` and `&mut T`. authored by chescock
Fix adding a subtree of required components to an existing tree replacing shallower required component constructors authored by andriyDev
Only use physical coords internally in `bevy_ui` authored by ickshonpe
AnimationEvent -> Event and other improvements authored by cart
Fix dynamic linking failures from the `AnimationEventFn` change. authored by pcwalton
Fix the picking backend features not actually disabling the features authored by andriyDev
Fix off-by-one error on `Image::get_color_at` and `Image::set_color_at`. authored by andriyDev
Allow Unicode-3.0 license in addition to Unicode-DFS-2016 for unicode-ident crate. authored by andriyDev
Add flags to `SpritePlugin` and `UiPlugin` to allow disabling their picking backend (without needing to disable features). authored by andriyDev
feat: mark some functions in bevy_math as const authored by DaAlbrecht
Make render world sync marker components `Copy` authored by rparrett
and -> an authored by richchurcher
cleanup bevy_render/lib.rs authored by atlv24
Use default storage for `TemporaryRenderEntity` authored by rparrett
Dont enable bevy_remote by default authored by notmd
Only use the AABB center for mesh visibility range testing if specified. authored by pcwalton
Refresh `RenderVisibilityRanges` when a visibility range is removed from the scene. authored by pcwalton
fix: setting content size to rect size if image has a rect authored by MarcoMeijer
remove check on windows screenshots authored by mockersf
Add screenshot check on UI authored by mockersf
Make some examples deterministic authored by mockersf
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.
Pull Requests Opened this week
bevy_picking UI example authored by richchurcher
Cold specialization authored by tychedelia
Use multidraw for opaque meshes when GPU culling is in use. authored by pcwalton
Add `gcd` module to `bevy_math` authored by bushrat011899
Reactive components prototype authored by JMS55
Getting `QueryState` from immutable `World` reference authored by vil-mo
remove the detailed_trace macro authored by mockersf
Deleted sampling_primitive references in Cargo.toml and README.md authored by I-Ruiz
Basic filtering examples for users of the bevy_log. authored by Lyndon-Mackay
Inserting Resource Tuples authored by Wuketuke
Remove the `min` and `max` fields from `LayoutContext`. authored by ickshonpe
Remove flush_and_reserve_invalid_assuming_no_entities authored by SpecificProtagonist
AnimatedProperty and AnimatedPropertyOptional authored by cart
Upstream `naga_oil` authored by tychedelia
Issues Opened this week
Confusion with Version Changes: Difficulty Handling API Changes for New Bevy Users authored by brantcass
UE5 Megalights-like authored by Bcompartment
Deduplicate `register_inherited_required_components` since the logic is pretty much duplicated, but this needs to use the `&mut RequiredComponents` logic for required components authored by alice-i-cecile
Opus support authored by JMS55
Skybox in WASM authored by tomlikesnakes
Back to Base Sets authored by andriyDev
PlaneMeshBuilder: Different amounts of subdivisions in X and Z directions authored by ulmer-a
panic in `bevy_render::renderer::render_system` when running `/examples/3d/*` authored by smokracek
`World::init_component` docs do not explain that components are generally automatically initialized authored by alice-i-cecile
check_doc workflow fails with "unexpected `cfg` condition name: `detailed_trace`" authored by alice-i-cecile
Support double click recognition in `bevy_picking`. authored by 443eb9
Crash on startup due to failure to get a DeviceDescriptor authored by MarcoMeijer
Entity Spawn Event authored by HyperCodec
check-advisories Github Action fails due to unmaintained `instant` crate. authored by andriyDev
Transform::rotation denormalizes after applying successive rotations. authored by Namaarie
Demonstrate how to use ImageNode::rect authored by alice-i-cecile
Outdated hashbrown dependency authored by inodentry
There are flashing color brick on the text when running breakout example. authored by C-Entropy
Text Gizmos authored by Sigma-dev