I watched a recorded livestream the other day of a game developer making a game in Bevy. It was maybe the 5th one and I hadn't caught the first 4. It had about 500 views. The video started off reviewing a PR made by a viewer who improved the inventory system they had going on as well as a few other contributions.<p>It was delightful to watch. Regardless of any criticisms of Rust compared to other "next C++" languages (e.g. Zig, Vale, Hare, Odin, Carbon, etc) the amazing community is what's already ensured Rust's place at the top
made me realize that the community is going to drive Rust to stardom
The pace of Bevy improvement is amazing. I think the current lack of an editor may almost be a blessing in disguise - game engines like Unity invest a ton of effort into their editor and if you don't use it you start to feel the pain of leaving the beaten path. (e.g. built-in unity components with fields that can't be easily modified through scripting, or have crazy-unintuitive APIs).
Bevy has no such distractions and they put a lot of effort in making their API great. (You can see multiple examples of that into these release notes!) Though Bevy is still limited, it's not uncommon for me to write something in Bevy and imagine what a pain it would have been in Unity. The reverse is true even more often, but that's because Unity has a huge first-party library of plug-n-play features like pathfinding and physics that Bevy simply doesn't have yet. When bevy is nicer, it's because their architecture and API is nicer :D<p>Edit: this is coming from an ex-professional Unity dev
Nice to see this release!<p>I hope the rendering pipeline is much more ergonomic -- I found doing shaders in Bevy 0.7 was incredibly painful. Most things in Bevy just "make sense", but the render internals were somehow both low-level (lots of explicit memory sizing and boilerplate) and convoluted (think FizzBuzzEnterpriseEdition). It doesn't help that WGPU and WGSL have very limited resources online compared to, well, OpenGL and GLSL or anything DirectX. It almost made me just reach for good old C++, especially since the normally amazing Rust errors were absolutely terrible with anything going on in render land. Hopefully I can check out 0.8 soon and see those improvements!<p>I hope Bevy going forward continues to put a lot of effort into the render pipeline so it is as ergonomic and intuitive as the rest of it. I think the ECS core is absolutely brilliant -- the rest just needs to be at the same level. A challenging language plus a difficult render path and a niche library (WGPU) is a tough sell to game devs IMO.
Related:<p><i>Bevy 0.7: data oriented game engine built in Rust</i> - <a href="https://news.ycombinator.com/item?id=31043668" rel="nofollow">https://news.ycombinator.com/item?id=31043668</a> - April 2022 (63 comments)<p><i>Bevy game engine 0.6</i> - <a href="https://news.ycombinator.com/item?id=29854416" rel="nofollow">https://news.ycombinator.com/item?id=29854416</a> - Jan 2022 (89 comments)<p><i>Bevy's First Birthday: a year of open source Rust game engine development</i> - <a href="https://news.ycombinator.com/item?id=28132114" rel="nofollow">https://news.ycombinator.com/item?id=28132114</a> - Aug 2021 (13 comments)<p><i>Bevy 0.5: data oriented game engine built in Rust</i> - <a href="https://news.ycombinator.com/item?id=26716166" rel="nofollow">https://news.ycombinator.com/item?id=26716166</a> - April 2021 (65 comments)<p><i>Bevy: A game engine built in Rust</i> - <a href="https://news.ycombinator.com/item?id=26131350" rel="nofollow">https://news.ycombinator.com/item?id=26131350</a> - Feb 2021 (117 comments)<p><i>Bevy 0.4: data oriented game engine built in Rust</i> - <a href="https://news.ycombinator.com/item?id=25480321" rel="nofollow">https://news.ycombinator.com/item?id=25480321</a> - Dec 2020 (23 comments)<p><i>Making a Snake Clone with Bevy</i> - <a href="https://news.ycombinator.com/item?id=24999073" rel="nofollow">https://news.ycombinator.com/item?id=24999073</a> - Nov 2020 (11 comments)<p><i>Bevy 0.3: game engine built in Rust</i> - <a href="https://news.ycombinator.com/item?id=24983956" rel="nofollow">https://news.ycombinator.com/item?id=24983956</a> - Nov 2020 (55 comments)<p><i>Bevy 0.2</i> - <a href="https://news.ycombinator.com/item?id=24530698" rel="nofollow">https://news.ycombinator.com/item?id=24530698</a> - Sept 2020 (43 comments)<p><i>Bevy: A Game Engine in Rust</i> - <a href="https://news.ycombinator.com/item?id=24334307" rel="nofollow">https://news.ycombinator.com/item?id=24334307</a> - Aug 2020 (42 comments)<p><i>Bevy: A data-driven game engine and app framework built in Rust</i> - <a href="https://news.ycombinator.com/item?id=24123283" rel="nofollow">https://news.ycombinator.com/item?id=24123283</a> - Aug 2020 (103 comments)
Wow, I remember Bevy 0.7 being recent, wasn't that just released a few months ago? (Update: 0.7 was released 3 months ago, 0.6 was released 6 months ago, Bevy itself was introduced around 2 years ago).<p>Anyways, Rust seems viable for gamedev and IMO Bevy is taking a great approach wrt the borrow checker (by using ECS, more liberal types even if it technically creates UB). I really hope this project takes off and actually leads to some great games, and <i>maybe</i> it will manage to be less bloated than some other game engines...<p>> Bevy officially only supports Rust as the "one true way to define app logic". We have very good reasons for this and that philosophy likely won't change any time soon<p>This is one thing disagree with. At least until/unless Rust gets a way to write code without worrying about borrow checker, like a Rust DSL which provides automatic Cow or Rc<RefCell on everything.<p>Rust's performance is critical for some game logic but a lot of logic really <i>doesn't</i> need performance, and the borrow checker is going to make that non-performance-sensitive code <i>much</i> harder to write, for no gain. This is especially an issue because most game devs work in teams and have team members who aren't as experienced with performance or the borrow checker or coding in general. It would be nice to have a "sandboxed" environment where a) you don't worry about the borrow checker and b) everything it checked so you don't worry about annoying memory corruption issues, but in exchange the code is a lot slower.<p>> These, when combined with our reflection APIs, provide the tools needed to start building scripting support!<p>> @jakobhellermann has started building their own JavaScript / TypeScript plugin for Bevy.<p>But it looks like they're making it possible to interface with other languages anyways! Which is the right move IMO. The Bevy maintainers and I can disagree with using multiple languages, but it doesn't matter as long as they provide the minimal bare-bones tools to do whatever.