Fortuneers DevLog.2 - Bevy!
Committing to Bevy after breaking up with Godot and living single for a while
I announced my project Fortuneers about 9 months ago, and I was pretty set on pushing on with it. I had done a lot of work in Godot 4.0 already, but I couldn’t help falling out of love with the engine shortly after my post. I ran into multiple issues with the C# interface and it felt increasingly clunky to hold things together while maintaining a “proper” Godot workflow. More bugs, dark corners and neglected features... The downsides kept adding up. It led me to take a closer look at the engine source as well as the organization. Simply put, it didn’t appeal to me, so I decided to not carry on using Godot. Well, you know, it was the prototype! Don’t worry about it!
As it happened, I heard about a new kid on the block: Bevy! Written in Rust, with an Entity Component System (ECS) as its core design. Created by a disciplined, experienced and seemingly humble individual, now building a focused team of talented subject matter experts by his side. All open source with Apache/MIT dual license. I love coding in Rust, so naturally my curiosity was piqued. The ECS design with Rust’s strong type system is a suprisingly wonderful match and I saw tons of potential in it as soon as I looked at the provided examples. In regular Rust fashion, there were a lot of unit testing, documentation and examples already, but alas it was merely version 0.9 and it felt like it still had a lot of things in flux.
Along with life, health, and all that, I didn’t see my game project continuing at that point in time.
Bevy is now at version 0.13 and they’ve moved to a quarterly release schedule. The team also created the non-profit Bevy Foundation just a month ago! Things are developing rapidly, yet a lot of the core things are in place now. For instance, a new asset system with preprocessing and extensible PBR materials. Did I mention their excellent migration guide policy, by the way?
I’ve experimented for a few weeks now, and I’ve gained enough confidence to start over with Fortuneers in Bevy. My assets are still here, though I’ll have to move animation and rigging to Blender, as I was previously using the built in tools in Godot. Yeah, Bevy doesn’t have an editor yet, but it’s not a requirement for me, and you can do worse than Blender for animation!
One of the killer features for me is testing. Rust comes with a test runner and it’s so easy to slap on some tests on a module in a standardized way. Bevy doesn’t complicate things either; it’s dead simple to set up a new ECS environment for testing only the relevant components. Refactoring code while having a suite of tests lowers my stress by whole lot!
But yes, some things aren’t as mature as the core features. Like how I’ve had to wrangle and figure out how to make my own custom camera projection (3D isometric!) the last few days. But in the end I did get it to work, and nothing seems like a show-stopper so far. In fact, I feel like there’s very few things you’re not able to work around as Bevy is very careful to lock you in to anything (apart from the ECS itself, which is the whole point of Bevy).
All in all, Bevy seems a lot less compromising than most game engines and I have the technical skills to make it work. Lezzz go!