User experience report: bevy_ui
in Bevy 0.5
#2235
Replies: 3 comments
-
this is something that ultimately should be handled by the engine itself. I am sure this applies to a number of other things mentioned in this summary, but I see how it would still be beneficial to solve it for writing the editor in the first place. :P |
Beta Was this translation helpful? Give feedback.
-
@plof27 notes that this pattern is actually achieved really nicely by allowing backwards propagation of actions in the action-mapping abstraction; allowing you to automatically e.g. show the jump button as depressed when space is hit. |
Beta Was this translation helpful? Give feedback.
-
Three years later, here's what I think about Much better, but still not perfect! |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I've spent the last few days working with
bevy_ui
in earnest as an end-user, and I think it would be helpful to share my experience as a whole (relevant to #254 and bevyengine/rfcs#22).Most of these can be written up into their own issues; let me know if you think there are any you think that's particularly worthwhile for.
TL; DR: Systems to control UI behavior en-masse is super cool, the layout algorithm is incredibly frustrating, UI components are way too monolithic and not composable, and we're missing a ton of useful supporting features.
User story
I was attempting to make a simple but polished Sudoku game, seen here under an MIT license. It had a 3x3 grid, and a panel of buttons to perform various tasks to the side.
Initially, the game grid was made in world space, which was straightforward and worked well. See:

However, this had some limitations:
So I tried to move it over to a UI-only solution, seen in the ui-game-grid branch, and utterly failed after several serious roadblocks.
Let's talk about what worked and what didn't as an end user.
Good
puzzle_button
system, which stores marker components on the system and then pipes them around as events.responsive_buttons
systemLessons learned
Bad
Usability
bevy_ui
has literally no docs. This is particularly brutal when working withStyle
, where I had to rely on CSS docs and hope the behavior was consistentStyle
is a terrible component name as it lumps everything together and doesn't communicate what it might doVal
by floats) are missingArchitecture
..Default::default()
callsEntity
refs and then using.push_children
helps a lot for this thoughParent-child
with_children
)push_child
and the like are somehow missingLayout
Text
Missing features
inspect
command for debugging entities and their components #1467)Beta Was this translation helpful? Give feedback.
All reactions