From f381ac060ffbd8afb38cd1f4fce1d84d716af147 Mon Sep 17 00:00:00 2001 From: Atlas16A Date: Sun, 25 Jan 2026 18:07:08 -0500 Subject: [PATCH 1/8] Update architecture design consensus --- design-book/src/architecture.md | 125 +++++++++++++++++++++++--------- design-book/src/editor_arch.png | Bin 0 -> 105903 bytes 2 files changed, 92 insertions(+), 33 deletions(-) create mode 100644 design-book/src/editor_arch.png diff --git a/design-book/src/architecture.md b/design-book/src/architecture.md index 5429ab90..78fe1896 100644 --- a/design-book/src/architecture.md +++ b/design-book/src/architecture.md @@ -5,45 +5,104 @@ But at the same time, a new user's initial experience should be polished, reason These goals are obviously in tension, and to thread the needle we need to think carefully about our project architecture, both organizationally and technically. -So far, we've agreed upon the following architecture: - -- the Bevy editor is a binary application made using `bevy`, and `bevy_ui` -- the Bevy editor will live in the main Bevy repo, and must be updated and fixed as part of the ordinary development process - - as a large binary project, it represents a great proving ground for how changes will impact users - - as an important part of Bevy users' workflow, it's important that we don't break it! - - as a consequence, the Bevy editor cannot rely on any crates that themselves rely on `bevy`: they are not kept up to date with `main` - - fixing the editor before each release is much more difficult, requiring diverse expertise and a large volume of changes all at once - - note: until we have an MVP: the editor work is done outside of the main repo, and tracks `main` on an as-updated basis -- functionality that is useful without a graphical editor should be usable without the editor - - project creation functionality should live in the `bevy_cli`, and be called by the editor +So far, we've agreed upon a general architecture for a MVP release: + +![The Editor Architecture in a diagram format](editor_arch.png) + +- All Bevy Engine tooling will live within the main repo, and must be updated and fixed as part of the ordinary development process. + +- The Editor is built as a plugin withing the user's project. + - Explanation/Reasoning: + - In order for the editor to display components (and other data) that a entity and by extension a BSN file, can be created with. The Editor must have access to the reflection type data. Rust currently has no built in reflection support and theres no tooling from which the editor could extract this data without being constrained by a validly compiled and running game project binary. + - The only option that has the least risk, maintenance requirements, and time, is to have the Editor compiled together with the user's project allowing the Editor's type registry to have all the necessary data for creating and loading BSN files. + - In the future we should look to break away from this hard requirement as if forces a specific file structure on users and isn't how editors traditionally work in game development. + + - The Editor only focuses on the scene creation workflow. + - Explanation/Reasoning: + - All development workflows that require live game interactions, such as running the game inside the editor window, create a exponentially harder architecture problem. + - It will be easier for Bevy maintainers to develop those interactions separately via the Inspector until post MVP where both efforts can be merged when they are ready. + + - The Editor can only have features that are naturally available within default Bevy. + - IE: A physics simulation based entity placement tool can only be added *after* a physics engine is added to Bevy main. + + - The Editor MVP should only be shipped once a few basic tools are added. + - Basic tools here is defined as tools absolutely necessary for the base workflow of "create a scene out of entities/assets" and tools that facilitate the use of those tools such as object gizmos etc. + - 3d Scene-Viewer pane + - 2d Scene-Viewer pane + - Scene tree pane + - Component/Entity properties pane + - Basic project file tree pane + + - The Editor UI operates in a structure similar to how Bevy is built of the `bevy_ecs` crate via a new crate `bevy_editor_core`. + - To prevent a complex structure of queries and observer conflicts and constant resource fighting, `bevy_editor_core` will handle constructing and managing the UI. + - Explanation/Reasoning: + - In order to achieve a cohesive experience within the Editor while also enabling community additions `bevy_editor_core` is where an API will be developed that allows plugins to do things such as, declare bsn of a component, struct, or even declaring bsn for an entirely new pane for the editor and just as bevy's cornerstone is the ecs all editor features must be implemented through this api. + - This ensures we feel pain points in the api before users can. + - This api has two possible paths with pros and cons to both and needs more design work. Examples of the possible paths below. + +The possible reflection based api: + +```rs +#[derive(Reflect, Component)] +#[reflect(editor_location(SnapTools))] +#[component(on_add(ButtonCallbackFunction))] +pub struct PluginButton; + +Impl EditorUi for PluginButton { + fn scene() -> Scene { + bsn!() + } +} +``` + +and the plugin build based api: + +```rs +impl Plugin for MyEditorPlugin { + fn build(&self, app: &mut app) { + app.editor.modify_pane::<3DScenePane>(/*INSERT BSN ASSET PATH HERE*/); + app.editor.register_component_widget::(/*INSERT BSN ASSET PATH HERE*/); + ... + } +} +``` + +- It should be explored if its possible to combine these two api formats to gain the power of both. + +- The Bevy Launcher is a binary application made using `bevy`, `bevy_feathers`, and `bevy_cli` + - A non-programmer user will create new projects via the Launcher. + - The launcher hooks into cli's such as `bevy_cli` and `rustup` to provide a GUI for common command line actions within bevy. + - Explanation/Reasoning: + - It will be expected of Bevy to offer something to download and to resemble more traditional engines. + - The launcher is a good place for future Bevy tooling to exist such as, a asset store, a community plugin list, and more. + - People who aren't programmers generally are not comfortable with a command line and asking them to use the command line creates unnecessary friction we can avoid. + - A launcher can be delivered update/changelog information to let users who arent very active in the community be notified of new updates. + - It will help disguise the weirdness of the editor being apart of the user's project. + +- Functionality that is useful without a graphical editor should be usable without the editor. + - project creation functionality should live in the `bevy_cli`, and be called by the launcher. - asset preprocessing steps should be standalone tools whenever possible, which can then be called by the `bevy_cli` (and then the editor) -- the foundational, reusable elements of the `bevy_editor` should be spun out into their own crates once they mature, but are best prototyped inside of the code for the specific binary application - - UI widgets, an undo-redo model, preferences, viewport widgets, a node graph abstraction and more all great candidates for this approach -- self-contained GUI-based development tools should be self-contained `Plugin`s which can be reused by projects without requiring the Bevy editor binary +- Self-contained GUI-based development tools should be self-contained `Plugin`s which can be reused by projects without requiring the whole Editor. - for example: an asset browser, entity inspector or system visualization tools -- the editor will not try and inspect the running process: instead, users will be encouraged to reuse modular dev tools from the editor, `bevy_dev_tools` and the broader ecosystem by compiling them into their own project under a per-project `dev_tools` feature flag - - we should still develop, ship and promote powerful, polished tools for these use cases! - - this is significantly simpler and offers more flexibility to users around customized workflows - ## Open questions +- Editor and Launcher Settings will be managed through a 2 layer approach. + - Within each project folder under assets, as shown in the diagram, a `bevy.toml` file will exist that contains editor settings, and various project information for both the editor and launcher that aren't provided by the `Cargo.toml` + - Project settings are overrides of the Global settings. + - Global settings are stored in the OS specific standardized location for application configurations. + - The launcher can edit settings for both projects and global settings while each editor can only edit their local respective settings. + - Due to Editors being version pinned to their respective projects, settings are also denoted by the version, ensuring that a project made in a old version doesn't try to display settings it doesn't have a implementation for. + +## Open questions These questions are pressing, and need serious design work. -- how do we distribute the Bevy editor? - - do users need to have a local working copy of the Rust compiler to use the editor effectively? -- how does the Bevy editor communicate with the Bevy game to enable effective scene editing with user-defined types? -- how should undo-redo be handled? +- How should undo-redo be handled? +- How should the `editor_core` api be designed? -## Extensions +## Future problems -These questions are less pressing, but deserve investigation to ensure we can support more advanced user needs. +These are problems that the MVP will ignore for the purpose of accelerating development and freeing from design constraint. -- do we need a launcher? - - are users able to use versions of the Bevy editor that are newer (or older) than their current project? -- how do we allow users to add and remove non-trivial functionality to the editor? - - for now they can just fork things, -- how are preferences handled? - - where are they stored? - - how are they shared between projects? - - how are they shared between team members? -- can the Bevy editor play nicely with a hotpatched type definitions for things like components? +- Hot-patching support +- Game-In-Editor running +- Live Game Inspection diff --git a/design-book/src/editor_arch.png b/design-book/src/editor_arch.png new file mode 100644 index 0000000000000000000000000000000000000000..a9810b7cb88c9cb89e3b9acd6e40bcc4b75916d2 GIT binary patch literal 105903 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

$v)P!G^>ESzGkRd@5i_f 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 ixl?)pP5f%h*b@1H2xFmnoA>S=z~ Date: Sun, 25 Jan 2026 18:07:31 -0500 Subject: [PATCH 2/8] typo --- design-book/src/architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/design-book/src/architecture.md b/design-book/src/architecture.md index 78fe1896..300e3f9b 100644 --- a/design-book/src/architecture.md +++ b/design-book/src/architecture.md @@ -76,7 +76,7 @@ impl Plugin for MyEditorPlugin { - It will be expected of Bevy to offer something to download and to resemble more traditional engines. - The launcher is a good place for future Bevy tooling to exist such as, a asset store, a community plugin list, and more. - People who aren't programmers generally are not comfortable with a command line and asking them to use the command line creates unnecessary friction we can avoid. - - A launcher can be delivered update/changelog information to let users who arent very active in the community be notified of new updates. + - A launcher can be delivered update/changelog information to let users who aren't very active in the community be notified of new updates. - It will help disguise the weirdness of the editor being apart of the user's project. - Functionality that is useful without a graphical editor should be usable without the editor. From 24772b130bad7e6620c94c208919b967ba6c18b3 Mon Sep 17 00:00:00 2001 From: Atlas16A Date: Sun, 25 Jan 2026 18:37:11 -0500 Subject: [PATCH 3/8] more typos --- design-book/src/architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/design-book/src/architecture.md b/design-book/src/architecture.md index 300e3f9b..1575bac1 100644 --- a/design-book/src/architecture.md +++ b/design-book/src/architecture.md @@ -11,7 +11,7 @@ So far, we've agreed upon a general architecture for a MVP release: - All Bevy Engine tooling will live within the main repo, and must be updated and fixed as part of the ordinary development process. -- The Editor is built as a plugin withing the user's project. +- The Editor is built as a plugin within the user's project. - Explanation/Reasoning: - In order for the editor to display components (and other data) that a entity and by extension a BSN file, can be created with. The Editor must have access to the reflection type data. Rust currently has no built in reflection support and theres no tooling from which the editor could extract this data without being constrained by a validly compiled and running game project binary. - The only option that has the least risk, maintenance requirements, and time, is to have the Editor compiled together with the user's project allowing the Editor's type registry to have all the necessary data for creating and loading BSN files. From 6fe1667ef725fddf01b16b48df69a763a6f0977c Mon Sep 17 00:00:00 2001 From: Atlas16A Date: Tue, 27 Jan 2026 16:34:03 -0500 Subject: [PATCH 4/8] Revert "more typos" This reverts commit 24772b130bad7e6620c94c208919b967ba6c18b3. --- design-book/src/architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/design-book/src/architecture.md b/design-book/src/architecture.md index 1575bac1..300e3f9b 100644 --- a/design-book/src/architecture.md +++ b/design-book/src/architecture.md @@ -11,7 +11,7 @@ So far, we've agreed upon a general architecture for a MVP release: - All Bevy Engine tooling will live within the main repo, and must be updated and fixed as part of the ordinary development process. -- The Editor is built as a plugin within the user's project. +- The Editor is built as a plugin withing the user's project. - Explanation/Reasoning: - In order for the editor to display components (and other data) that a entity and by extension a BSN file, can be created with. The Editor must have access to the reflection type data. Rust currently has no built in reflection support and theres no tooling from which the editor could extract this data without being constrained by a validly compiled and running game project binary. - The only option that has the least risk, maintenance requirements, and time, is to have the Editor compiled together with the user's project allowing the Editor's type registry to have all the necessary data for creating and loading BSN files. From b9cdc00a95fa5500893db18b4984bdf4d3581c34 Mon Sep 17 00:00:00 2001 From: Atlas16A Date: Tue, 27 Jan 2026 16:34:08 -0500 Subject: [PATCH 5/8] Revert "typo" This reverts commit e1119859a31be94c7dfc76e42734b9441332d820. --- design-book/src/architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/design-book/src/architecture.md b/design-book/src/architecture.md index 300e3f9b..78fe1896 100644 --- a/design-book/src/architecture.md +++ b/design-book/src/architecture.md @@ -76,7 +76,7 @@ impl Plugin for MyEditorPlugin { - It will be expected of Bevy to offer something to download and to resemble more traditional engines. - The launcher is a good place for future Bevy tooling to exist such as, a asset store, a community plugin list, and more. - People who aren't programmers generally are not comfortable with a command line and asking them to use the command line creates unnecessary friction we can avoid. - - A launcher can be delivered update/changelog information to let users who aren't very active in the community be notified of new updates. + - A launcher can be delivered update/changelog information to let users who arent very active in the community be notified of new updates. - It will help disguise the weirdness of the editor being apart of the user's project. - Functionality that is useful without a graphical editor should be usable without the editor. From 1986c7bc3d6dfe8602584c762da935315c5d0c45 Mon Sep 17 00:00:00 2001 From: Atlas16A Date: Tue, 27 Jan 2026 16:34:20 -0500 Subject: [PATCH 6/8] Revert "Update architecture design consensus" This reverts commit f381ac060ffbd8afb38cd1f4fce1d84d716af147. --- design-book/src/architecture.md | 125 +++++++++----------------------- design-book/src/editor_arch.png | Bin 105903 -> 0 bytes 2 files changed, 33 insertions(+), 92 deletions(-) delete mode 100644 design-book/src/editor_arch.png diff --git a/design-book/src/architecture.md b/design-book/src/architecture.md index 78fe1896..5429ab90 100644 --- a/design-book/src/architecture.md +++ b/design-book/src/architecture.md @@ -5,104 +5,45 @@ But at the same time, a new user's initial experience should be polished, reason These goals are obviously in tension, and to thread the needle we need to think carefully about our project architecture, both organizationally and technically. -So far, we've agreed upon a general architecture for a MVP release: - -![The Editor Architecture in a diagram format](editor_arch.png) - -- All Bevy Engine tooling will live within the main repo, and must be updated and fixed as part of the ordinary development process. - -- The Editor is built as a plugin withing the user's project. - - Explanation/Reasoning: - - In order for the editor to display components (and other data) that a entity and by extension a BSN file, can be created with. The Editor must have access to the reflection type data. Rust currently has no built in reflection support and theres no tooling from which the editor could extract this data without being constrained by a validly compiled and running game project binary. - - The only option that has the least risk, maintenance requirements, and time, is to have the Editor compiled together with the user's project allowing the Editor's type registry to have all the necessary data for creating and loading BSN files. - - In the future we should look to break away from this hard requirement as if forces a specific file structure on users and isn't how editors traditionally work in game development. - - - The Editor only focuses on the scene creation workflow. - - Explanation/Reasoning: - - All development workflows that require live game interactions, such as running the game inside the editor window, create a exponentially harder architecture problem. - - It will be easier for Bevy maintainers to develop those interactions separately via the Inspector until post MVP where both efforts can be merged when they are ready. - - - The Editor can only have features that are naturally available within default Bevy. - - IE: A physics simulation based entity placement tool can only be added *after* a physics engine is added to Bevy main. - - - The Editor MVP should only be shipped once a few basic tools are added. - - Basic tools here is defined as tools absolutely necessary for the base workflow of "create a scene out of entities/assets" and tools that facilitate the use of those tools such as object gizmos etc. - - 3d Scene-Viewer pane - - 2d Scene-Viewer pane - - Scene tree pane - - Component/Entity properties pane - - Basic project file tree pane - - - The Editor UI operates in a structure similar to how Bevy is built of the `bevy_ecs` crate via a new crate `bevy_editor_core`. - - To prevent a complex structure of queries and observer conflicts and constant resource fighting, `bevy_editor_core` will handle constructing and managing the UI. - - Explanation/Reasoning: - - In order to achieve a cohesive experience within the Editor while also enabling community additions `bevy_editor_core` is where an API will be developed that allows plugins to do things such as, declare bsn of a component, struct, or even declaring bsn for an entirely new pane for the editor and just as bevy's cornerstone is the ecs all editor features must be implemented through this api. - - This ensures we feel pain points in the api before users can. - - This api has two possible paths with pros and cons to both and needs more design work. Examples of the possible paths below. - -The possible reflection based api: - -```rs -#[derive(Reflect, Component)] -#[reflect(editor_location(SnapTools))] -#[component(on_add(ButtonCallbackFunction))] -pub struct PluginButton; - -Impl EditorUi for PluginButton { - fn scene() -> Scene { - bsn!() - } -} -``` - -and the plugin build based api: - -```rs -impl Plugin for MyEditorPlugin { - fn build(&self, app: &mut app) { - app.editor.modify_pane::<3DScenePane>(/*INSERT BSN ASSET PATH HERE*/); - app.editor.register_component_widget::(/*INSERT BSN ASSET PATH HERE*/); - ... - } -} -``` - -- It should be explored if its possible to combine these two api formats to gain the power of both. - -- The Bevy Launcher is a binary application made using `bevy`, `bevy_feathers`, and `bevy_cli` - - A non-programmer user will create new projects via the Launcher. - - The launcher hooks into cli's such as `bevy_cli` and `rustup` to provide a GUI for common command line actions within bevy. - - Explanation/Reasoning: - - It will be expected of Bevy to offer something to download and to resemble more traditional engines. - - The launcher is a good place for future Bevy tooling to exist such as, a asset store, a community plugin list, and more. - - People who aren't programmers generally are not comfortable with a command line and asking them to use the command line creates unnecessary friction we can avoid. - - A launcher can be delivered update/changelog information to let users who arent very active in the community be notified of new updates. - - It will help disguise the weirdness of the editor being apart of the user's project. - -- Functionality that is useful without a graphical editor should be usable without the editor. - - project creation functionality should live in the `bevy_cli`, and be called by the launcher. +So far, we've agreed upon the following architecture: + +- the Bevy editor is a binary application made using `bevy`, and `bevy_ui` +- the Bevy editor will live in the main Bevy repo, and must be updated and fixed as part of the ordinary development process + - as a large binary project, it represents a great proving ground for how changes will impact users + - as an important part of Bevy users' workflow, it's important that we don't break it! + - as a consequence, the Bevy editor cannot rely on any crates that themselves rely on `bevy`: they are not kept up to date with `main` + - fixing the editor before each release is much more difficult, requiring diverse expertise and a large volume of changes all at once + - note: until we have an MVP: the editor work is done outside of the main repo, and tracks `main` on an as-updated basis +- functionality that is useful without a graphical editor should be usable without the editor + - project creation functionality should live in the `bevy_cli`, and be called by the editor - asset preprocessing steps should be standalone tools whenever possible, which can then be called by the `bevy_cli` (and then the editor) -- Self-contained GUI-based development tools should be self-contained `Plugin`s which can be reused by projects without requiring the whole Editor. +- the foundational, reusable elements of the `bevy_editor` should be spun out into their own crates once they mature, but are best prototyped inside of the code for the specific binary application + - UI widgets, an undo-redo model, preferences, viewport widgets, a node graph abstraction and more all great candidates for this approach +- self-contained GUI-based development tools should be self-contained `Plugin`s which can be reused by projects without requiring the Bevy editor binary - for example: an asset browser, entity inspector or system visualization tools +- the editor will not try and inspect the running process: instead, users will be encouraged to reuse modular dev tools from the editor, `bevy_dev_tools` and the broader ecosystem by compiling them into their own project under a per-project `dev_tools` feature flag + - we should still develop, ship and promote powerful, polished tools for these use cases! + - this is significantly simpler and offers more flexibility to users around customized workflows -- Editor and Launcher Settings will be managed through a 2 layer approach. - - Within each project folder under assets, as shown in the diagram, a `bevy.toml` file will exist that contains editor settings, and various project information for both the editor and launcher that aren't provided by the `Cargo.toml` - - Project settings are overrides of the Global settings. - - Global settings are stored in the OS specific standardized location for application configurations. - - The launcher can edit settings for both projects and global settings while each editor can only edit their local respective settings. - - Due to Editors being version pinned to their respective projects, settings are also denoted by the version, ensuring that a project made in a old version doesn't try to display settings it doesn't have a implementation for. - -## Open questions + ## Open questions These questions are pressing, and need serious design work. -- How should undo-redo be handled? -- How should the `editor_core` api be designed? +- how do we distribute the Bevy editor? + - do users need to have a local working copy of the Rust compiler to use the editor effectively? +- how does the Bevy editor communicate with the Bevy game to enable effective scene editing with user-defined types? +- how should undo-redo be handled? -## Future problems +## Extensions -These are problems that the MVP will ignore for the purpose of accelerating development and freeing from design constraint. +These questions are less pressing, but deserve investigation to ensure we can support more advanced user needs. -- Hot-patching support -- Game-In-Editor running -- Live Game Inspection +- do we need a launcher? + - are users able to use versions of the Bevy editor that are newer (or older) than their current project? +- how do we allow users to add and remove non-trivial functionality to the editor? + - for now they can just fork things, +- how are preferences handled? + - where are they stored? + - how are they shared between projects? + - how are they shared between team members? +- can the Bevy editor play nicely with a hotpatched type definitions for things like components? diff --git a/design-book/src/editor_arch.png b/design-book/src/editor_arch.png deleted file mode 100644 index a9810b7cb88c9cb89e3b9acd6e40bcc4b75916d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105903 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

$v)P!G^>ESzGkRd@5i_f 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 ixl?)pP5f%h*b@1H2xFmnoA>S=z~ Date: Tue, 27 Jan 2026 17:18:28 -0500 Subject: [PATCH 7/8] Rewrite to keep original structure --- design-book/src/architecture.md | 80 ++++++++++++++++++++------------- 1 file changed, 50 insertions(+), 30 deletions(-) diff --git a/design-book/src/architecture.md b/design-book/src/architecture.md index 5429ab90..ad9d6aa6 100644 --- a/design-book/src/architecture.md +++ b/design-book/src/architecture.md @@ -5,45 +5,65 @@ But at the same time, a new user's initial experience should be polished, reason These goals are obviously in tension, and to thread the needle we need to think carefully about our project architecture, both organizationally and technically. -So far, we've agreed upon the following architecture: - -- the Bevy editor is a binary application made using `bevy`, and `bevy_ui` -- the Bevy editor will live in the main Bevy repo, and must be updated and fixed as part of the ordinary development process - - as a large binary project, it represents a great proving ground for how changes will impact users - - as an important part of Bevy users' workflow, it's important that we don't break it! - - as a consequence, the Bevy editor cannot rely on any crates that themselves rely on `bevy`: they are not kept up to date with `main` - - fixing the editor before each release is much more difficult, requiring diverse expertise and a large volume of changes all at once - - note: until we have an MVP: the editor work is done outside of the main repo, and tracks `main` on an as-updated basis -- functionality that is useful without a graphical editor should be usable without the editor - - project creation functionality should live in the `bevy_cli`, and be called by the editor - - asset preprocessing steps should be standalone tools whenever possible, which can then be called by the `bevy_cli` (and then the editor) -- the foundational, reusable elements of the `bevy_editor` should be spun out into their own crates once they mature, but are best prototyped inside of the code for the specific binary application - - UI widgets, an undo-redo model, preferences, viewport widgets, a node graph abstraction and more all great candidates for this approach -- self-contained GUI-based development tools should be self-contained `Plugin`s which can be reused by projects without requiring the Bevy editor binary - - for example: an asset browser, entity inspector or system visualization tools -- the editor will not try and inspect the running process: instead, users will be encouraged to reuse modular dev tools from the editor, `bevy_dev_tools` and the broader ecosystem by compiling them into their own project under a per-project `dev_tools` feature flag - - we should still develop, ship and promote powerful, polished tools for these use cases! - - this is significantly simpler and offers more flexibility to users around customized workflows +So far, we've agreed upon a general architecture for a MVP release: + +- The Bevy Launcher is a binary application made using `bevy`, `bevy_feathers`, and `bevy_cli` + - The launcher is the shippable binary + - A non-programmer user will create new projects via the Launcher. + - The launcher hooks into cli's such as `bevy_cli` and `rustup` to provide a GUI for common command line actions within bevy. + +- All Bevy Engine tooling, including the Launcher and Editor, will live within the main repo, and must be updated and fixed as part of the ordinary development process. + - As a large project, it represents a great proving ground for how changes will impact users + - As an important part of Bevy users' workflow, it's important that we don't break it! + - As a consequence, the Bevy editor cannot rely on any external crates that they themselves rely on `bevy`: they are not kept up to date with `main` + - Fixing the editor before each release is much more difficult, requiring diverse expertise and a large volume of changes all at once + +- Functionality that is useful without a graphical editor should be usable without the Editor + - Project creation functionality should live in the `bevy_cli`, and be called by the Launcher + - Asset preprocessing steps should be standalone tools whenever possible, which can then be called by the `bevy_cli` (and then the Editor) + +- The foundational, reusable elements of the `bevy_editor` should be spun out into their own crates once they mature. + - UI widgets, an undo-redo model, preferences, viewport widgets, a node graph abstraction and more are all great candidates for this approach. + +- Self-contained GUI-based development tools should be self-contained `Plugin`s which can be reused by projects without requiring the whole Editor. + - For example: an asset browser or system visualization tools +- The Editor should focus on the scene creation workflow + - All development workflows that require live game interactions, such as running the game inside the editor window, create a exponentially harder architecture problem. + - This is significantly simpler and offers more flexibility to users around customized workflows + - We should still develop, ship, and promote powerful, polished tools for these use cases! ## Open questions These questions are pressing, and need serious design work. -- how do we distribute the Bevy editor? - - do users need to have a local working copy of the Rust compiler to use the editor effectively? -- how does the Bevy editor communicate with the Bevy game to enable effective scene editing with user-defined types? -- how should undo-redo be handled? +- How do we distribute the Bevy editor? + - The Editor is built as a plugin withing the user's project and we ship a binary application called `The Bevy Launcher` that sets up projects to use the Editor. + - Explanation/Reasoning: + - In order for the editor to display components (and other data) that a entity and by extension a BSN file, can be created with. The Editor must have access to the reflection type data. Rust currently has no built in reflection support and theres no tooling from which the editor could extract this data without being constrained by a validly compiled and running game project binary. + - The only option that has the least risk, maintenance requirements, and time, is to have the Editor compiled together with the user's project allowing the Editor's type registry to have all the necessary data for creating and loading BSN files. + - In the future we should look to break away from this hard requirement as if forces a specific file structure on users and isn't how editors traditionally work in game development. + +- Do users need to have a local working copy of the Rust compiler to use the editor effectively? + - Yes, everyone has to have a local working Rust compiler. + +- How does the Bevy editor communicate with the Bevy game to enable effective scene editing with user-defined types? + - The editor doesn't "communicate" with the bevy game, rather it is built with the game allowing the sharing of all reflection data in a way guaranteed for the editor to process/create all BSN for the game. + +- How should undo-redo be handled? + - TBD ## Extensions These questions are less pressing, but deserve investigation to ensure we can support more advanced user needs. -- do we need a launcher? - - are users able to use versions of the Bevy editor that are newer (or older) than their current project? -- how do we allow users to add and remove non-trivial functionality to the editor? - - for now they can just fork things, -- how are preferences handled? +- How do we allow users to add and remove non-trivial functionality to the editor? + - Via the Launcher or via bevy's cargo features which the editor will be able to hook into on account of being apart of the bevy crate. +- How are preferences handled? - where are they stored? + - Stored in two locations, a `bevy.toml` within each project's assets folder, and in the OS specific default location acting as Global defaults that the per project settings override. - how are they shared between projects? - - how are they shared between team members? -- can the Bevy editor play nicely with a hotpatched type definitions for things like components? + - The Global settings. + - How are they shared between team members? + - They can just commit the `bevy.toml` to their repo's +- Can the Bevy editor play nicely with a hot-patched type definitions for things like components? + - Hot-patching isn't developed enough for the editor to work with it. From bb7f83428591e1cb3d919b36076557da187bbec3 Mon Sep 17 00:00:00 2001 From: Atlas16A Date: Tue, 27 Jan 2026 17:21:11 -0500 Subject: [PATCH 8/8] typos --- design-book/src/architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/design-book/src/architecture.md b/design-book/src/architecture.md index ad9d6aa6..7f4baa39 100644 --- a/design-book/src/architecture.md +++ b/design-book/src/architecture.md @@ -37,7 +37,7 @@ So far, we've agreed upon a general architecture for a MVP release: These questions are pressing, and need serious design work. - How do we distribute the Bevy editor? - - The Editor is built as a plugin withing the user's project and we ship a binary application called `The Bevy Launcher` that sets up projects to use the Editor. + - The Editor is built as a plugin within the user's project and we ship a binary application called `The Bevy Launcher` that sets up projects to use the Editor. - Explanation/Reasoning: - In order for the editor to display components (and other data) that a entity and by extension a BSN file, can be created with. The Editor must have access to the reflection type data. Rust currently has no built in reflection support and theres no tooling from which the editor could extract this data without being constrained by a validly compiled and running game project binary. - The only option that has the least risk, maintenance requirements, and time, is to have the Editor compiled together with the user's project allowing the Editor's type registry to have all the necessary data for creating and loading BSN files.