4 ms·
I've been trying to learn Bevy on and off for months but I'm finding it difficult. The official Bevy Getting Started tutorial is very short. I've looked through
by OnionBlender 5y ago
I've been trying to learn Bevy on and off for months but I'm finding it difficult. The official Bevy Getting Started tutorial is very short. I've looked through many of examples but I find them difficult to follow because I'm not familiar with how Bevy wants you do to things. I find that the API docs don't explain what things are used for. I feel like I'm missing some core concepts but I don't know where I'm supposed to learn them.
Some examples. What are commands? What is the world? How should I be creating and destroying objects? How do I ensure some systems run before others? How should I delay loading most of the systems until a button is pressed on the first screen? How do I unload systems? How do I pass information between systems?
I'm not looking for someone to answer all of these questions, I just want to know where I'm supposed to read about them because I feel like I'm missing some important docs.
The Unofficial Bevy Cheat Book looks promising because it appears to explain some of the core concepts. However, it is weird that I have to read an unofficial book to learn these things. Without the Unofficial book, where was I supposed to learn the coordinate system convention or how to use events?
- dhruvdh 5y agoYou would probably benefit from watching a talk or two on ECS (Entity component system).
- gameswithgo 5y agoIn general in Rust game engine culture right now there is a strong trend towards using entity component system based design. Sometimes this is a definite good thing, for certain kinds of games it can have benefits both for performance and coding niceness. Entity component systems also play nicely with Rust's borrow checker. But, in my half educated opinion, it creates a massive amount of unnecessary complexity for many types of games. If you are making something pretty basic like pong/pac man/ simple 2d rpgs, etc, you just have all this infrastructure and all these new paradigms when all you wanted was a way to efficiently load and draw sprites and play sounds.
- tomtheelder 5y agoAs another commenter suggested I think a really solid foundation in ECS architecture will get you some of the way, but you're totally right that the documentation is sparse. I think the engine should really be thought of as being in alpha right now given how rapidly it's evolving and how unstable different APIs are. I suspect at some point the docs would stabilize. IMO you should only really bother with Bevy right now if you find it inherently interesting and you are down to dip into the source sometimes. Even in the universe of Rust based ECS game engines there are more stable and documented options.
- alice-i-cecile 5y agoI'm leading our docs effort, and work on a much expanded version of the official book is in progress (and should be launched for 0.8). These are absolutely reasonable concerns, and a centralized, first-part introduction to the core concepts is essential.
- _cart 5y agoI'd like to call out that Alice's doc-leadership is a "new" thing and we're already seeing a lot of progress on the new Bevy Book, our API docs, and our examples. I've noticed a huge uptick in community documentation contribution / participation in the last couple of months.
- pizza234 5y agoYou'll find a very good introduction to ECS in Rust in the book "Hands-on Rust: Effective learning through 2D Game Development"¹. It's based on Legion, which (AFAIK) is now discontinued, but the book/project has such a smooth design, that it makes working with an ECS really a pleasure (to be fair, Legion is less ergonomic than Bevy, but it's not a big deal). I'd be cautious towards Bevy; it's a product that capitalized with great success on hype; there's nothing inherently wrong with that (I don't doubt at some point it will reach a stable point), but it should be clear to users that it's currently "very alpha" (that said, I'm happy to report that Bevy made huge strides in stability/usability between v0.5 and v0.7). ¹=https://pragprog.com/titles/hwrust/hands-on-rust https://pragprog.com/titles/hwrust/hands-on-rust