3mcd / harmony-ecs

A small archetypal ECS focused on compatibility and performance
https://3mcd.github.io/harmony-ecs
MIT License
41 stars 1 forks source link

I :heart: this effort #5

Open NateTheGreatt opened 2 years ago

NateTheGreatt commented 2 years ago

Hey @3mcd!

First off, I recently read this blog post and super appreciate the shoutout and that you are also trying to bridge the synchronization gap between SoA and objects. I don't feel so lonely now :sweat_smile:. Also, great job implementing archetypes! I still haven't had time to implement those.

Second, I was hoping that you would be willing to weigh in on an alternative way forward for the synchronization of data between SoA and objects that I drafted a short proposal for. As always, my focus is performance :racing_car:. I believe this method of synchronization can bring the most performance benefits and provides an extreme level of interoperable flexibility, but I am keen to get a wide variety of opinions on this. Let me know what you think!

Cheers :beers:

3mcd commented 2 years ago

Hey @NateTheGreatt,

Thank you so much for the note. So glad to see yourself and others (like @ooflorent) working through these problems. I think we'll have some consensus on the best ways to handle compatibility in JavaScript ECS libraries very soon.

I'll take a look at your proposal for bitECS as soon as I get a chance. It looks promising, although I'm curious about interop with libraries that already use getters/setters, use frozen/sealed objects, etc. It would appear there's no way around those constraints with the proposed in-place override strategy. I'd also be interested to see how much overhead the accessors add in the context of the library. For example, are you adding significant overhead by replacing a basic object property with an accessor if three uses x/y/z heavily for internal computations as I'm sure it does.

I'll be sure to leave a much more thoughtful response in your discussion as soon as my time permits. Thanks again for reaching out.