bevyengine / bevy

A refreshingly simple data-driven game engine built in Rust
https://bevyengine.org
Apache License 2.0
36.43k stars 3.59k forks source link

Define and document a minimum hardware spec #12548

Open james7132 opened 8 months ago

james7132 commented 8 months ago

After going through a huge number of issues, it's surprisingly common for users to find that Bevy is crashing due to unsupported hardware or is running exceptionally slowly due to poor hardware support of our algorithms. For example, https://github.com/bevyengine/bevy/issues/11133 and #10581. targeted a mobile GPU that is over 10 years old now.

We should define a common minimum requirement hardware spec. Perhaps informed by metrics like the Steam Hardware Survey. This should allow us to define a reasonable floor for what the engine can support.

These requirements may need to evolve over time as we add new features that may be hardware reliant. GPU-driven rendering is one potential example of this.

Other external examples:

SolarLiner commented 8 months ago

Due to the modular nature of Bevy it might be hard to do in a centralized fashion... The issues seem to center around rendering, which I guess is the most in need of a minimum hardware support threshold, as optimizing for both recent and older hardware is hard, and it's on top of having to support mobile, desktop and web platforms.

I'm guessing the ECS would also benefit from having this, as they're pretty much relying on the fact that CPUs have multiple cores (which to be fair is ubiquitous nowadays).

I guess the only breaking change, really, would be to projects that want to use Bevy for embedded platforms (ie. arcade games, or fantasy consoles?), if there are any. There we can't make the same assumptions of feature availability for the CPU, and the ECS is the only part of Bevy that can't be swapped out (since everything else depends on it).