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

ECSY Three Core Components and Libraries Discussion #36

Open
robertlong opened this issue Sep 10, 2020 · 0 comments
Open

ECSY Three Core Components and Libraries Discussion #36

robertlong opened this issue Sep 10, 2020 · 0 comments

Comments

@robertlong
Copy link
Member

robertlong commented Sep 10, 2020

ECSY Three now has a fairly robust foundation to build on top of. We need to start discussing what components and systems we would like to see as a community and where they belong. Some will likely go into the core ecsy-three library and others can be implemented into external libraries.

My thoughts are that we should only include components and systems in the core ecsy-three library that are in the core three library. This means things like the animation mixer, loading assets, raycasting, etc. Things like physics, networking, WebXR interaction, etc. should be handled by external libraries. We can endorse libraries by having them live in the ecsyjs Github organization and publishing them under the @ecsy npm scope.

When creating these core components and systems I'd like to be careful that we don't abstract away large parts of the Three JS API without a good reason to do so. Our focus for components should be standardizing the data model needed for common components. Our systems can be opinionated, we can make systems that make common tasks simple and have opinions for how it does its work.

We should put a lot of thought into adding new components to the library, the data model for the components will likely be used by many external projects and changing or removing a property will be a breaking change. On the other hand, we should feel ok with having lots of systems. Systems should be simple and focused on a single task. They should be composable and thought of as building blocks that can be used to make larger features. Users shouldn't feel scared to replace a system with their own. If you need to modify a system, then you can just copy the code into your project and change it. Big monolithic systems make it harder for people to justify doing that, so we should try to keep systems small.

What core components and systems do people want to see in ecsy-three? What libraries are you looking for or currently working on?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant