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.<p>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?<p>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.<p>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?
A change I find interesting in this release is the addition of `Deref`/`DerefMut` derives[0]. It addresses a very real pain point in bevy, due to `#[derive(Component)]`'s interaction with the orphan rules requiring newtypes[^1].<p>But it's potentially not idiomatic within the Rust language, at least at the moment (as mentioned in the OP). However, I think that the tide is likely to turn on that; for example, in the api-guidelines repo, there's a PR[2] to remove this advice. This appears to have stalled, although that appears to be not for reasons of it being controversial, just lack of reviews; the discussion had broad support.<p>We have discussed (in Discord[3]) a kind of 'internal' `Deref`, which would use lenses to do automatic unwrapping for queries. See #4413 [4] for an example of what this would look like. I'm not sure how necessary that is if we can just use `Deref[Mut]`, but it's definitely another angle we could go down long-term.<p>[0]: <a href="https://bevyengine.org/news/bevy-0-7/#deref-derefmut-derives" rel="nofollow">https://bevyengine.org/news/bevy-0-7/#deref-derefmut-derives</a><p>[^1]: This newtype requirement isn't a negative for bevy, since it makes it much easier to avoid interoperability headaches between different crates.<p>[2]: <a href="https://github.com/rust-lang/api-guidelines/pull/251" rel="nofollow">https://github.com/rust-lang/api-guidelines/pull/251</a><p>[3]: <a href="https://discord.gg/bevy" rel="nofollow">https://discord.gg/bevy</a><p>[4]: <a href="https://github.com/bevyengine/bevy/pull/4413" rel="nofollow">https://github.com/bevyengine/bevy/pull/4413</a>
Any plans to provide out of the box multiplayer? Lots of engines today don't think about it at all, and instead seem to focus on the sort of feature set provided by Unreal and Unity.<p>I don't think there's a whole lot of value in that design, but that's my personal opinion having built an engine for the Lua community that did somethings no one else was doing.<p>Mainly, providing an out of the box experience for, typically, hobbyist developers who don't actually know anything about multiplayer serialization or prediction, etc.<p>The sort of younger developers and people who are playing around with code and posting on Reddit and such.<p>A lot of engines are just wrappers around popular libraries and I don't know if there's a tremendous value around that sort of thing.<p>Consider, for example, audio. It's really easy to provide audio bindings to, I don't know, let's say OpenAL, because I don't know what else is used these days. But game developers eventually mature enough where they don't just care about playing audio.<p>What they'll eventually want is to play a sound, with DSP, and have that audio automatically networked by the engine to play on different connected client's based on visibility rules or at least a simple emit sound networked event.<p>There's an entire class of hobby engines that don't consider these things, and leave it as an exercise for the user to implement. They are entirely non-trivial features that the users will never implement, though, and instead just never pursue that feature because the engine doesn't provide it.
I'm impressed by the speed of this release. I started checking out Bevy after reading Hands-on Rust[1] and wasn't expecting any updates given 0.6 came out in January.<p>[1]<a href="https://pragprog.com/titles/hwrust/hands-on-rust/" rel="nofollow">https://pragprog.com/titles/hwrust/hands-on-rust/</a>
For everyone who's following this awesome tutorial has been updated:
<a href="https://mbuffett.com/posts/bevy-snake-tutorial/" rel="nofollow">https://mbuffett.com/posts/bevy-snake-tutorial/</a>
This is exciting! Bevy is the rendering engine equivalent of python’s Flask module in terms of ease-of-use & flexibility, and if you’re looking to render things I think it’s a pretty solid bet to put your time into.
other than "written in Rust", what it does different than the billion other open source game library?<p>"written in Rust" won't make the game by itself