Skip to content

Describe plugin dependencies explicitly in plugin documentation #19814

Open
@i-sinister

Description

@i-sinister

When toying around trying to understand what is bevy and how is it organized internally, I've tried to make a simplest possible application without using DefaultPlugin by adding plugins one by one when necessary.

It turned out that there are many dependencies between plugins, or, better say, expectations of particular aspects such as resources, components or systems. These aspects are usually provided by existing plugins, but unfulfilled expectation manifests itself as a runtime crash. Usually message is descriptive and tells what aspect is missing but it does not (and can not) tell what plugin provides it.

It would be of great help for n00bs like me if existing plugins had such expected aspects and corresponding plugins documented.

Here are some example of such expections I've encountered so far:

  • bevy_winit::WinitPlugin requires some aspect (dont remember which one) provided by bevy_a11y::AccessibilityPlugin (what if one does not what to use accessibility?)
  • bevy_asset::AssetPlugin requires bevy_app::TaskPoolPlugin
  • bevy_render::RenderPlugin requires bevy_render::texture::ImagePlugin
  • bevy_render::RenderPlugin requires bevy_diagnostic::FrameCountPlugin
  • reflection is not always behind feature flag, for example bevy_render::RenderPlugin; maybe plugin should issue a warning it can not function property without reflection, but developer turns off reflection feature flag of the bevy crate

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-AppBevy apps and pluginsA-Cross-CuttingImpacts the entire engineC-DocsAn addition or correction to our documentationS-Ready-For-ImplementationThis issue is ready for an implementation PR. Go for it!

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions