Should I organize my 100k lines game into layered crates or feature based?
I've been working on a physics simulation game since a while now, and the codebase has become a bit of a mess. I'm currently in the middle of refactoring it, initially I had an architecture of plugins per feature (like weapons, inventory..), where a plugin contained everything related to the feature, rendering, physics, audio, ui, with the core simulation/physics in a separate plugin and core rendering also in a separate one.
The purpose was to be able to toggle a feature on/off easily, but it lead to a growing mess of dependencies between the plugins and I'm now thinking of splitting into separate crates similar to backend/frontend in web development, like one for the simulation, one for the presentation and some adapter code inbetween. This should reduce build times and improve the dependency graph, but each feature would be spread across multiple crates, and it would be less straight forward to add a new feature.
Is there any open source big bevy game that I can look at to see what a "good" architecture looks like?