For context, I recently completed a game on a team of 4 devs who were all relatively new to ECS for the last bevy game jam [1]
Initially, we struggled a bit with how much ceremony there seemed to be to make simple stuff like movement work within the paradigm of an ECS (entity component system) engine.
But by the end of the week I think i can safely speak for all of us when i say we came away impressed by how organized everything was - despite everyone working on different pieces at a frantic pace for a week.
One concrete example is a last minute addition of little text dialog popups over various entities in response to different events : enemy sighting a player, player respawning, reaching an objective, etc. This ended up being trivial once the system for picking which line to say was in place, largely thanks to ecs and bevy’s event system.
Now i wouldn’t want to go back to the gameObject / update function way of structuring things ecs and bevy actually really shine once you do cross a certain threshold of size/complexity - especially with multiple people working simultaneously.
That said i do agree with you on the generalized physics engine point - we decided early on that was overkill and we could write our own collision and movement much faster, with better game feel to boot.
This was a really cool deep dive into various optimizations that apply specifically to voxel-based games.
I especially enjoyed how the author packed progressively more information into the bits of a single integer using some clever tricks, and it stayed approachable the whole time even for those who don’t do a lot of low level bitwise optimizations in their day to day (me)
If it's your job to eat a frog, it's best to do it first thing in the morning. And If it's your job to eat two frogs, it's best to eat the biggest one first.