bevyengine / bevyengine/bevy

Describe plugin dependencies explicitly in plugin documentation

Open
#19,814 1 comment 0 reactions 0 assignees View on GitHub
A-App A-Cross-Cutting C-Docs S-Ready-For-Implementation
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 22h
Merged PRs (30d)
161

Description

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

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.