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.
-
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