TeamHypersomnia / Hypersomnia

Multiplayer top-down shooter made from scratch in C++. Play in your Browser! https://hypersomnia.io Made in 🇵🇱
https://hypersomnia.io/
GNU Affero General Public License v3.0
1.08k stars 47 forks source link

Question regarding "assemblage buckets" idea back in 2013 #264

Open slimsag opened 1 year ago

slimsag commented 1 year ago

Hello, hope this is an OK place to reach out. I realize it's not quite on topic.

I got anonymously tipped off to a post you had asked on the gamedev StackExchange many years ago (back in late 2013):

https://gamedev.stackexchange.com/questions/58693/grouping-entities-of-the-same-component-set-into-linear-memory/

Through this, I found your profile, and this repository (incredible you're still developing this to this day!) where that idea posted on StackExchange was referenced in this GitHub issue: https://github.com/TeamHypersomnia/Hypersomnia/issues/9

I dug through this repository's earliest commits, but wasn't able to find if you had ever made an actual implementation of this idea or not. I am interested broadly in whether or not you have any more code, notes, ideas, etc. written around this time with dates regarding this same general idea.

The reason I am asking all of this is because that StackExchange question appears to be one of (if not perhaps the only) pieces of publicly available information on the internet which describes (almost to the letter, and with diagrams) some of the key/critical claims made in Unity's infamous ECS patent (US 10,599,560), specifically around "assemblage buckets" / grouping entities of the same component set ("archetype") into linear memory. I'm looking to collect this information should it ever be needed by those less fortunate in the future to defend themselves.

Appreciate your time, Stephen

geneotech commented 1 year ago

Hello @slimsag,

Wow, I never knew about Unity's patent! Thanks a lot for reaching out and letting me know! I'm afraid I've never brought this concept to fruition, but let me try to recall the past to the best of my ability. By looking at the commit history:

struct player { components::transform transform; components::health health; };

struct box { components::transform transform; components::physics physics; };

struct game_world_state { std::vector players; std::vector boxes; };



A layout which I'm sure would be used throughout many simple games even way before ECS was talked about.

I'll take a look again through my archival notes to be sure, but I don't want to get your hopes up. If I find something I'll certainly post it in this issue.
slimsag commented 1 year ago

Awesome! Thanks for digging all of that info up @geneotech, I really appreciate it!

Also, just to be clear, the SE post itself is enough to prove prior art of the concepts/ideas described in the post specifically, and so could be used to defend against any lawsuit making claim against those ideas. An implementation is not necessarily a requirement, per-say. I just opened this issue in case you had any other notes/references about this idea since the more documented proof of it existing before Unity patented it the better :)

Needless to say I think myself and many others will find the fact that you had posted about this idea on StackExchange to be.. quite useful! 😅