4 ms·
I've been building a game in Bevy for a while now. Feel free to browse code or ask questions: https://ant.care/ https://ant.care/ https://github.com/MeoMix/sy
by SeanAnderson 3y ago
I've been building a game in Bevy for a while now. Feel free to browse code or ask questions:
https://ant.care/ https://ant.care/
https://github.com/MeoMix/symbiants https://github.com/MeoMix/symbiants
For me, some pain points so far have been:
- UI system was too verbose to comfortably build widgets. Swapped to using egui, but expect to go back to native Bevy within a year. egui has significant limitations, too.
- Parent/Child relationships don't have a ton of support (ECS sort-of discourages).
- It was tougher than expected to associate a label with a sprite, move/rotate the sprite, and keep the label following position without following rotation.
- Persisting entities across sessions isn't supported out of the box (Entity is intended for client-side uniqueness) and easily regenerating persisted parent/child relationships doesn't happen automatically.
- No support for WASM parallelism yet, but a lot of Bevy architecture design wants system ordering to be flexible to squeeze perf benefits by parallelizing the work.
- Spatial querying feels like it pushes against the goals of ECS. Wanting to look stuff up by value (value of Position) rather than type (entity has Position) results in lots of secondary caches that need to stay sync'ed with query engine.
- Mutating world via `commands` is deferred to batch for perf, but it's hard to have systems which aggressively mutate the world with so many deferred actions. I end up calling `apply_deferred` a lot and using custom commands to resolve races.
- WASM on Android (Pixel 6) + Chrome doesn't work at the moment, but it's a down-stream dependency issue. Should be fixed in Bevy 13.
Pros have been:
- Very nice to work in Rust engine + Rust game.
- Rust + WASM has been good, don't feel like this aspect of the tech gets in the way much
- Once you get your brain thinking ECS it's tough to go back, feels very flexible (maybe too flexible)
- Very lively community, usually easy to find someone to talk to about a problem you're having
- Lots of examples (not a lot of docs, but a lot of examples)
- Lot of optimism about the future. Very strong development pace, each release makes significant headway on concerns.
- thih9 3y agoHeads up, ant.care doesn’t work on my iPhone, tested both in safari and Firefox. The website reloads after a while in an endless loop.
- SeanAnderson 3y agoThat's pretty interesting. Can you tell me more about your phone specs? I tested on an iPhone 11 Pro w/ iOS 17 and it worked well.
- thih9 3y agoI’m on ios16, can’t update for unrelated reasons, perhaps it’s that. Other than this, I’m on 13 pro max. To elaborate, the website loads, I can click “sandbox mode”, I see background being drawn, a sprite appears and then the page reloads.
- SeanAnderson 3y agoOkay, thank you! I assume all the Bevy examples load for you fine? https://bevyengine.org/examples/Games/alien-cake-addict/ https://bevyengine.org/examples/Games/alien-cake-addict/
- thih9 3y agoYes, they seem to be fine. I’ve tested the linked “alien cake” and “2d gizmos” (from list of examples), both work and no reload happened. I couldn’t do anything with the demos but I suppose mobile input is just not supported there.
- SeanAnderson 3y agoOh, interesting. I can reproduce it now, but then I somehow got in on the third try? The first time it refreshed, second time it said "This site is having an issue", third time it works. I think it has to do with zoom/scale factor. Once I got in I was able to pan around fine, but then when I zoomed out it crashed on me again. I'll see what I can do. Thanks for the report!