The most performance-required things are not solved by ECS in most games.
Any game consists of:
Does ECS solve rendering problem? No. ECS, for some games optimizes world simulation, but it comes with redundant complexity. In most cases we still hit rendering bottleneck, while world simulation is faster if done adequately with classic Game Objects.
So this is the reason i’m not into things like Bevy Engine. It comes with a friction of Rust language, plus it solves problem ahead of the game, which is counter-productive. I’m perfectly fine with the simplicity of Godot.
When one would require an ECS? When your game world simulation is costly. For example, for a big strategy where you need to control movement of millions of small units. If we attach a game object to each one of these million units, we will definitely lose in performance, since every object would need to update itself. In case of ECS that’s not a problem - entities are stored in memory efficiently and continiusly for better data access (if done right), and using one operator, in case of ECS system, we would be able to access them more efficiently, and have better options for parallelization (but it’s a long discussion anyways). So, ECS -> better data access, classic Game Objects -> simpler.