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

Remove Entity Component System entirely; add Mach object system instead #1305

Merged
merged 13 commits into from
Nov 24, 2024

Conversation

emidoots
Copy link
Member

@emidoots emidoots commented Nov 24, 2024

This PR remove the Entity Component System from Mach entirely.

After multiple years of working on our ECS, and investigating and learning how other very popular ECS implementations work, I have ultimately not been happy with the tradeoffs that they make. ECS forces you, by necessity of its design goals, down a very particular path which has serious and massive implications for how developers must write code and the types of problems and software bugs they must deal with.

Instead, over the past few months we have been experimenting with a new Mach object system - which is not an ECS but which solves the same problems, and with very different tradeoffs and design decisions. Ultimately I believe this will be a better path forward for us.

Documentation

There is a new Object system section on the website which describes in-depth the key concepts and how it all works.

Note about this change

Note: the main branch of Mach is currently experimental, and this change:

  • Will immediately break some mach.Core functionality - such as setting window titles - and will also break examples that aren't just rendering a triangle.
  • After the change is merged, we'll work on migrating mach.Core's API to the new object system.
  • After that, we'll work on updating gfx.Text, gfx.Sprite, sysaudio, sysgpu, and other APIs to use the new object system - with the goal first of getting all examples building again.
  • By selecting this checkbox, I agree to license my contributions to this project under the license(s) described in the LICENSE file, and I have the right to do so or have received permission to do so by an employer or client I am producing work for whom has this right.

emidoots added a commit to hexops/machengine.org that referenced this pull request Nov 24, 2024
@emidoots emidoots merged commit ae1d49b into main Nov 24, 2024
4 of 6 checks passed
@emidoots emidoots deleted the mach-obj branch November 24, 2024 04:20
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

Successfully merging this pull request may close these issues.

1 participant