A few days ago I just posted this link internally. I, like everyone else, needed a few days to properly review Bevy and get a better feel for what it brings to the table.
To put it simply, Bevy is essentially a Amethyst Engine 2.0. That can sound intimidating since it’s a separate project under different leadership, but I’m convinced this will turn out to be a Good Thing for the entire Rust gamedev community, including the Amethyst project.
I’m having an ongoing conversation with Carter, the author of Bevy, about how our two projects can come closer together, and possibly even operate as one. There is actually very strong precedent for this:
There would be no Bevy without Amethyst Engine
Carter acknowledges this several times in his writing. Bevy is the result of Carter spending copious amounts of time learning about Amethyst Engine in any way possible, including the many design discussions we’ve had on this forum.
Bevy’s accomplishment is your accomplishment too.
Bevy is not yet at feature parity with Amethyst Engine, but due to its cohesive design it is on track to catch up before long. This cohesion comes not from Carter being a better designer (though he’s certainly a good one!); it mostly comes down to fortuitous timing & circumstance.
Full-time dev with vision
Bevy’s super power is the simple fact that Carter can afford to be working on it full-time at his own expense. This has enabled him to do the rewrites we always wanted to do as we learned valuable lessons from our experimentation, because he had the bandwidth and linear focus to implement major changes without disrupting the work of others.
Now that Bevy is public it will face a lot of the same organizational challenges we’ve tackled already, but Bevy has a fundamentally different approach to how all major architectural decisions are made: Carter makes the final call on all major architectural changes.
This is often called the BDFL model: “Benevolent Dictator For Life”. It’s common knowledge now that this model is best suited for early-stage development when the project’s vision can be most effectively defined by a single individual with a complete overview. Later on, once that vision has been absorbed by other major collaborators and the project is so big that no single person can know all parts better than everyone else, the time comes to transition into a more democratic governance model.
Had @ebkalderon been in a position to do the same thing, we would have probably followed this model as well.
Mature rendering pipeline
wgpu didn’t even exist when Amethyst first came into being. Now it is mature enough to build on top of, and that is exactly what Bevy has done. And it’s been done in a way that doesn’t exclude other renderers from being plugged in.
We do not currently have any active developer working on our rendering pipeline. Whatever plans we might have to improve upon what we’ve got is a mute point so long as there’s no one ready to do the work.
We’ve accomplished something rather extraordinary with the community of game developers we have assembled around a common cause. We’ve all been pointing in roughly the same direction. All Bevy had to do was say “that specific mountain top let’s all go together there first”.
We’re sitting on a lot of institutional knowledge about how to best govern a project of our size. We have both a formal (a registered non-profit) as well as cultural foundation that can be of great utility for the likes of Bevy.
And frankly it’s often easier to understand such organically grown structures once you’re offering them up for the benefit of others, rather than trying to make sense of them from within.
We’ve dealt more with CI challenges than any mortal should ever have to endure. The most recent iteration using GitHub Actions is a huge accomplishment. What we’ve learned and consequently put together here should be very applicable to other Rust gamedev projects.
Libraries, docs, games…
There’s a whole bunch of other things I could pull in here but I need to finish this post. I might edit in some more later. Feel free to make your own remarks!
@kabergstrom and @aclysma are investigating how atelier-assets could be incorporated into Bevy. That certainly does not mean abandoning the work that’s also happening with Legion on that end, which is much further along.
What’s exciting here is that if atelier-assets becomes a dependency of Bevy that gives us some major common ground that ties us closer together.
Bevy ECS is a fork of hecs which in turn is a trimmed down version of Legion. Bevy’s additions brings its ECS back full circle to something quite similar to the newest Legion v0.3. But there’s still enough divergence between the two that pursuing a merger at this time doesn’t really make sense.
I see it this way: Bevy ECS and Legion will explore the same fundamental ECS design (archetypes) from two different vantage points:
Bevy ECS = In-engine
Legion = Independent
Either they’ll gradually converge to a point where one is subsumed by the other…
They’ll keep diverging, because it turns out both approaches have equal merit thanks to the novelty inherited by their unique vantage points.
Legion is definitely not going anywhere. It is guaranteed a following of its own due to its adoption in projects like the PragProg book spin-off of Roguelike Tutorial which comes out at the end of this year.
Bevy is pursuing a Godot-style approach to its Editor UI, which is to develop its in-game UI and Editor UI as one unified project. There are pros and cons to this approach which we will not discuss here.
What’s important to notice here is that the approach @mralve and the Amethyst Editor team is taking with their web-tech approach is in no way incompatible with what Bevy is doing. It’s a novel enough alternative path that is well worth exploring on its own merits. The stacks of the two editors are so different that they are very unlikely to be competing for oxygen.
One thing they might have in common is the overall UI/UX design. Pursuing a collaborative effort here definitely seems worthwhile.
Path forward for Amethyst
I am proposing that we double down on our core strengths, and find ways to collaborate with Bevy wherever possible. Our two projects have a whole lot to offer each other. And it would already be false to speak of Amethyst and Bevy as two entirely separate entities since we already have a lot of people, code & goals in common.
Coming up next
We’ve got a v0.15.1 release very close to being done.
The transition to Legion and a v0.16 release continues as planned for now.
What comes after that is less certain. I think the roadmap that’s being drafted will need to pivot from “What’s next for Amethyst” to “What will Amethyst and Bevy collaborate on”.
Got something to say? Reply below, or send me a DM on this forum or on Discord:
Be sure to read @cart’s reply below: