Different plugin groups to support different use cases (diverse-defaults for short)#48
Different plugin groups to support different use cases (diverse-defaults for short)#48colepoirier wants to merge 18 commits intobevyengine:mainfrom
Conversation
Only 'unresolved questions is still TODO
alice-i-cecile
left a comment
There was a problem hiding this comment.
First round of feedback and clarity suggestions :)
|
|
||
| ## Implementation strategy | ||
|
|
||
| Each of the above outlined `Plugins` may have some combination of the following divergent platform configuration needs: |
There was a problem hiding this comment.
It's not clear how exactly this interacts with the "use case" plugins groups above 🤔 I agree that we want both, but they seem mostly orthogonal.
There was a problem hiding this comment.
I think @mockersf proposal enables use to meld the two in a sensible way!
| - `ApplicationPlugins`: Suitable for making CAD applicaions or something like excel. | ||
| - `SimulationPlugins`: Plugins that make writing scientific simulations easier like enhanced determinism and ordering guarantees. | ||
|
|
||
| ## Implementation strategy |
There was a problem hiding this comment.
I think it would be helpful hear to identify "axes of variation"; ways that each of the use cases commonly vary, so we can think about how to structure them.
There was a problem hiding this comment.
I very much agree, though I don't know how to flesh this out.
| - `MinimalPlugins`: The very basic internal structure required to ensure things like `Time` function properly. | ||
| - `GamePlugins`: Suitable for making both 2D and 3D real-time games with input handling, audio and rendering (note: previously `DefaultPlugins`). | ||
| - `2dGamePlugins`: Like `GamePlugins`, but limited to the systems and resources needed in a 2D game. | ||
| - `TuiPlugins`: Suitable for making TUI applications. |
There was a problem hiding this comment.
This needs a note in implementation details on what we should include to get this working.
There was a problem hiding this comment.
What exactly would we need to include to get this working? I don't understand the details of the bevy DefaultPlugins code I guess.
There was a problem hiding this comment.
Also would probably prefer to just migrate my initial proposal to the one @mockersf suggested which I think addresses the problem area even better! :)
There was a problem hiding this comment.
The bigger problem is "I don't know how to make a terminal game in Bevy 0.6" at all. There were a few ecosystem crates, but they're no longer up to date.
|
Instead of having different
For example, for a 2d game that won't use UI but will still display text in the 2d world, I use only those features: Features are probably not documented enough and not really friendly, Bevy could add meta features to group them into logical groups like you describe here. |
Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
That's a really nice idea @mockersf and I think this solves the problem I am seeking to address in an even nicer way with the additional benefits you outlined!! :) 💯 |
|
|
||
| The primary drawback I can see is the need for Bevy to maintain the multiple `PluginGroups`, however, I foresee the maintenance burden of this to be exceedingly minimal. | ||
|
|
||
| ## Rationale and alternatives |
There was a problem hiding this comment.
I think you should discuss the pros and cons of plugin groups vs. feature groups in this section.
There was a problem hiding this comment.
How would you define FeatureGroups?
There was a problem hiding this comment.
Rust features can enable other features, allowing users to toggle them on and off as needed. We can also
See: https://doc.rust-lang.org/cargo/reference/features.html for a basic introduction.
https://docs.rs/cfg_feature_groups/latest/cfg_feature_groups/ or the like may be helpful to improve ergonomics.
Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Rendered
There are many different categories of bevy applications. Each use case has a sufficiently different commonsense default configuration to warrant different use case specific default plugins. This RFC is a proposal to consider making such a change.