
City Simulations, Flow Graphs, and UI Widgets
2025-11-10
This week we see Color Plane widgets, ligature support for text, and sticky ui nodes.
Alongside city simulations, flow graphs, and more!
Then some procedural sky islands and an "ECS for Beginners" talk.
Color Plane Widget

#21743 introduces a new Color Plane widget for color selection.
Support for ligatures and smallcaps

#19020 adds support for OpenType features like ligatures and smallcaps.
Parallelize the asset processing loop
https://github.com/bevyengine/bevy/pull/21701
Improved Entity Lifecycle
For context, the way entities work on main is as a "allocate and use" system. Entity ids are allocated, and given a location. The location can then be changed, etc. Entities that are free have an invalid location. To allocate an entity, one must also set its location. This introduced the need for pending entities, where an entity would be reserved, pending, and at some point flushed. Pending and free entities have an invalid location, and others are assumed to have a valid one. This roughly doubles command spawning speed! Despawning also sees a 20-30% improvement.
- Decouples Entities from entity allocation to make room for other allocators and resolve alloc_at issues.
- Decouples entity allocation from spawning to make reservation a moot point.
- Introduces constructing and destructing entities, in addition to spawn/despawn.
- Changes reserve and flush patterns to alloc and construct patterns.
wgsl color utils

#21720 moves the wgsl color space utility functions to bevy_ui_render::color_space. These are helpful, for example, when converting linear color data to oklab and back.
Sticky UI Nodes

#21648 adds UI nodes that can be used as sticky row and column headers.

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

Abysm Steam Demo
showcase
Abysm is a physics-based puzzle game inspired by classic games such as Boulder Dash and Supaplex, but with a cosmic horror theme. Not with a Steam demo that is compatible with the Steam Deck.

Apex Flow
showcase
Inspired by this video, this is a track on which you can design your own cars using a node-based flow graph system.
Project is available on GitHub and to play on the web in WebGPU compatible browsers

Battle Royale Marble Simulation
showcase
An Avian Physics powered marble simulation with trail effects, recorded by reading each frame from the GPU and piping to ffmpeg. The physics is manually ticked after each frame.

Crates
New releases to crates.io and substantial updates to existing projects
bevy_mod_erased_component_registry
crate_release
Insert new components by their TypeId using their FromWorld/Default implementation!
tb_ga
crate_release
A crate designed to integrate GameAnalytics. Currently focused on events.

bevy_dioxus_sync v0.1
crate_release
bevy_dioxus_sync is a crate with the goal of bringing Dioxus as a top tier option for making UIs in Bevy. Through Dioxus's new dioxus-native crate, native (non-webassembly based) Dioxus support is now possible with bevy.
bevy_ecs_ldtk 0.13
crate_release
LDtk is a modern, user-friendly 2d level editor for tilemap based games: https://ldtk.io/
This is a small release, mostly performance improvements and refactors

Devlogs
vlog style updates from long-term projects

Procedural Sky Islands
devlog
In this episode the author dives into how the procedural sky island is created—from Perlin noise and mesh generation to stitching the surface and rock base together. This is a learning project aimed at game dev concepts like normals, UVs, and noise.

Educational
Tutorials, deep dives, and other information on developing Bevy applications, games, and plugins
Bevy Android Setup
educational
A post about Bevy setup on Android devices, and handling some of the pitfalls
Various Solari improvements authored by JMS55
Tweak exponential falloff in `ScatteringTerm` authored by ecoskey
Improved Entity Lifecycle: remove flushing, support manual spawning and despawning authored by ElliottjPierce
Fix typo in bevy_gizmos_render docs URL authored by dloukadakis
Move manual_material to shader_advanced category authored by IceSentry
remove deprecated APIs in 0.17 authored by re0312
Move wgsl color space utils to separate plugin authored by rossleonardy
Remove "should be called each frame" in `GizmoBuffer` document. authored by kaoet
Update taffy to 0.9 and fix Grid errors #21240 authored by rossleonardy
document MotionVectorPrepass better authored by atlv24
Add sticky ui nodes authored by PPakalns
Fix gizmos_render feature typo authored by dloukadakis
Bump crate-ci/typos from 1.38.1 to 1.39.0 (adopted, attempt 2) authored by greeble-dev
Make building asset sources infallible. authored by andriyDev
Make `LoadContext::path` return an `AssetPath` instead of `std::path::Path`. authored by andriyDev
Solari: Fallback to point temporal reprojection when permutation fails authored by JMS55
Allow setting time overstep in tests authored by andrewhickman
Removed invalid ECS archetype constants authored by ElliottjPierce
make material draw functions instance independent authored by ecoskey
fix doc for struct World authored by bieyuanxi
Fix dragging bug in drag_to_scroll example authored by rudderbucky
Update `rotate_cubes` system to use `par_iter_mut()` to reduce its impact on performance authored by DeVelox
Parallelize and simplify the asset processing loop. authored by andriyDev
Add a dense layout to the `many_cubes` stress test authored by DeVelox
Improve Local SystemParam text, examples authored by isHavvy
Shortcircuit `SceneInstanceReady` on models that do not have `ColorOverride` authored by hukasu
Add support for OpenType features in text (e.g. ligatures, smallcaps) authored by hansler
Color plane widget. authored by viridia
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
Make `parallaxed_uv` independent from `StandardMaterial` textures authored by hukasu
Deduplicate world_to_view logic authored by Breakdown-Dog
Fix extended_material_bindless example wgpu validation error on MacOS/Metal authored by NicoZweifel
Retain asset without data for RENDER_WORLD-only assets authored by robtfm
Add an optional request URL mapping function to WASM asset io authored by eero-lehtinen
Change a function system to be exclusive authored by hymm
Async ECS Access Primitive authored by MalekiRe
Upgrade to wgpu 27 and associated crates authored by JMS55
Solari fixes authored by JMS55
Optimized `BindGroupLayoutCache` to reduce unnecessary cloning authored by brianreavis
Chunk storage authored by jamescarterbell
Added error message, and added check for empty strings in parse_internal authored by DylanD42
Share `AssetSources` between the `AssetServer`, the asset processor, and the asset processor's internal asset server. authored by andriyDev
Deprecate upcasting methods for reflection authored by alice-i-cecile
Tweak solari world cache authored by JMS55
get_components_mut authored by hymm
Weighted blended OIT and unsorted transparent authored by beicause
Issues Opened this week
extended_material_bindless example wgpu validation error on MacOS/Metal authored by NicoZweifel
Change #[require()] to use FromWorld > Default authored by PhaestusFox
TextureSlicer should avoid squishing 9slice corners authored by ThierryBerger
Skybox example broken authored by invertedEcho
Asset cache busting for web distribution authored by eero-lehtinen
Can't pass a texture to a function when using bindless authored by hukasu
Indirect drawing causes `AlphaMode::Blend` meshes to flicker authored by beicause
Support pointer capture authored by viridia
The game always crashes when resuming from sleep mode. authored by zhurz
Atmospheric scattering on some DirectionalLight's but not all? authored by TheDan64
UI node with child text wrapping doesn't account for max width authored by BigWingBeat
Support singleton systems authored by momoluna444
Crashes when using `upx` executable compression on windows authored by Kicshikxo
Minimal text field widget using `parley` authored by ickshonpe
Minimal migration to `parley` authored by ickshonpe
possible migration of `bevy_text` from `cosmic-text` to `parley` authored by ickshonpe
Allow adding and removing asset sources at runtime. authored by andriyDev
PrimaryMonitor component not added to any Monitor entities authored by sollambert
Text rendering breaks when UiTransform.scale is increased and overflow is not `Visible`. authored by migimunz
Shluggish window resize with 3D content authored by StefanSalewski
Atmosphere with Gizmos is broken authored by mate-h











