Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracking issue: Levels of abstraction for groups of components and entities #4072

Closed
colepoirier opened this issue Mar 1, 2022 · 5 comments
Labels
A-ECS Entities, components, systems, and events A-Scenes Serialized ECS data stored on the disk C-Tracking-Issue An issue that collects information about a broad development initiative

Comments

@colepoirier
Copy link
Contributor

colepoirier commented Mar 1, 2022

This is an issue for tracking the discussions and implementations of the conceptual hierarchy of abstraction for data i.e. Components in Bevy. We need figure out where to draw the lines between the kinds of organization in bevy. The currently existing levels of abstraction are Component, Bundle, and Scene. There is currently discussion of the conceptual clarity and ergonomics of Bundle, and Scene. There are proposals to change the definition and meaning of Bundle, and additional proposals to add new capabilities to it specifically a dynamic/runtime reflection API. There are discussions of the conceptual clarity of Scene and proposals to replace it with new and more levels of abstraction called Schematic, Prefab, and Blueprint, or to keep Scene while adding new levels of abstraction, narrowing the currently very large scope of Scene. These discussion and proposals have wide ranging implications for the architecture of the engine, Cart said that even a seemingly small proposal like the one to implement Bundle for all Components may have far reaching implications for the engine and has the potential limit or hamstring future development it is not carefully evaluated in a holistic and future-looking manner. Proposals like Schematics and dynamic Components and dynamic Bundle would be primarily useful and perhaps essential for good ergonomics of the Bevy Visual Editor, and they have other potential uses independent of this.

The most recent and extensive discussion of Scenes involving Cart occurred on 28 February 2022 on the bevy discord server in the #scenes-dev channel starting at this message: https://discord.com/channels/691052431525675048/745805740274614303/948117767754764348

Issue: Better tools for working with dynamic collections of components #3227

Guidance from @alice-i-cecile for my filling in of this issue: "I think the other core idea that we should communicate is that things should be able to be promoted up the hierarchy of abstraction levels, but not back down."

What is a Component

A Component is single struct or enum that implements Component which is stored on and Entity.

What is a Bundle

A Bundle or properly as Component Bundle is an abstraction that allows you to organize one or more Components in a structs so that a user can spawn a group of Components without having to manually insert them on an Entity individually. When a user inserts a Component Bundle, Bevy turns each of its fields into a distinct component and inserts them on the entity.

The user can nest Bundles, embedding one bundle of components within another, because Bundles are after all just a collection of Component. Bundles are not currently checked (#2387) for duplicate component types. Component inserted on an Entity will overwrite existing Components of the same type.

What is a Scene

Scenes focus area tracking issue #255

What is proposed to be a Prefab

What is proposed to be a Schematic

Issue: Schematic proposal and discussion #2877

What is proposed to be a Blueprint

DynamicBundle proposal and discussion

PR: Make a dynamically applicable version of Bundle #3694

SceneBundle proposal and discussion

PR: add a SceneBundle to spawn a scene #2424

Implement Bundle for every Component proposal and discussion

PR: Implement Bundle for every Component #2975

Simplified Scene and reflection serialization and proposal

Issue proposing two alternative syntaxes to improve the verbosity and format of Scene files #4153

Comparison of Scenes and the three proposed levels of abstraction

@colepoirier colepoirier added C-Bug An unexpected or incorrect behavior S-Needs-Triage This issue needs to be labelled labels Mar 1, 2022
@lukors
Copy link
Contributor

lukors commented Mar 1, 2022

I suggest simplifying the title and providing a description of what this issue is. Keep in mind that this is a public issue tracker, and not everyone is going to have the same context as you and maybe alice-i-cecile do. :)

@mockersf mockersf removed the C-Bug An unexpected or incorrect behavior label Mar 1, 2022
@alice-i-cecile alice-i-cecile removed the S-Needs-Triage This issue needs to be labelled label Mar 1, 2022
@colepoirier
Copy link
Contributor Author

Thanks for the advice @lukors. I created this last night right before I fell asleep as a stub/placeholder for @alice-i-cecile to fill in as I lack the understanding of the overall scope as well as the multiple subdomains involved.

@colepoirier colepoirier changed the title Tracking issue: Levels of abstraction for hierarchy and organization, drawing lines between kinds of organization in bevy - components, bundles, schematics/prefabs, and finally scenes/blueprints Tracking issue: Levels of abstraction for hierarchy and organization Mar 1, 2022
@colepoirier colepoirier changed the title Tracking issue: Levels of abstraction for hierarchy and organization Tracking issue: Levels of abstraction for hierarchy and organization in the engine Mar 1, 2022
@colepoirier
Copy link
Contributor Author

Update: Alice is going to help me fill it in so I can learn how to do this kind of project management, and learn about the engine and it's architecture 😁

@alice-i-cecile alice-i-cecile added A-ECS Entities, components, systems, and events C-Tracking-Issue An issue that collects information about a broad development initiative A-Scenes Serialized ECS data stored on the disk labels Mar 1, 2022
@colepoirier colepoirier changed the title Tracking issue: Levels of abstraction for hierarchy and organization in the engine Tracking issue: Levels of abstraction for groups of components and entities Mar 18, 2022
@irate-devil
Copy link
Contributor

Issue: Schematic proposal and discussion #2877

Should be #3877.

@colepoirier
Copy link
Contributor Author

This is better suited to being a github discussion than an issue. The content of the first comment has been migrated to #4434.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-ECS Entities, components, systems, and events A-Scenes Serialized ECS data stored on the disk C-Tracking-Issue An issue that collects information about a broad development initiative
Projects
None yet
Development

No branches or pull requests

5 participants