bevyengine / bevy

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

Clarify purpose of bevy_dev_tools in crate-level docs #12358

Open alice-i-cecile opened 5 months ago

alice-i-cecile commented 5 months ago

Great question! My stance on "what is bevy_dev_tools":

  1. I'd like a unified set of tools that can be used to ease the development of Bevy games, primarily by displaying information about the state of the app.
  2. These tools should be easy to discover.
  3. These tools should have a unified style and use shared idioms and code.
  4. These tools should be able to be toggled on and off by end users in a number of convenient ways using a consistent pattern (e.g. editor command palette, dev console, and so on).

The fact that users could use these tools in a final product doesn't negate the fact that they're primarily going to be used for development: there's nothing stopping you from enabling dev tools in your final build but only turning on the key features you need :)

Originally posted by @alice-i-cecile in https://github.com/bevyengine/bevy/issues/12354#issuecomment-1982307594

pablo-lua commented 5 months ago

For instance, we have to clarify what is a dev tool and what is a candidate of ingressing this crate.

IMO, a simple way of saying if the thing is a dev tool or not is one question: Is this a feature that the user can already do themselves from their own code? If the answer is yes, so maybe this is indeed a tool. For example, in #11237, the user can already do this plugin if they want, but we are trying to do this tool native so the user don't need to do that, as a shortcut. There is a number of ways of doing the same thing, so the user can try to do this themselves if they wants something more from this tool. At the same time, not everything that is a tool necessarily needs to be in this crate, some tools might need Resources or Components that aren't public for the crate, or the tool isn't a debug only tool, or the tool deserves a crate for it for example.

matiqo15 commented 5 months ago

I think every tool should be something that isn't required by the engine itself, something that most users wouldn't need to include in final builds. And most importantly it should be aimed at helping development, whether by speeding it up or allowing for faster prototyping.