[HN Gopher] Unity patents ECS
       ___________________________________________________________________
        
       Unity patents ECS
        
       Author : enbugger
       Score  : 231 points
       Date   : 2021-09-07 17:50 UTC (5 hours ago)
        
 (HTM) web link (pdfpiw.uspto.gov)
 (TXT) w3m dump (pdfpiw.uspto.gov)
        
       | AlbertCory wrote:
       | Patent agent here. At Google we investigated patents and their
       | possible invalidity almost every day.
       | 
       | Claim language is obtuse because it's for lawyers, not laymen. An
       | engineer can write the description, but only the lawyer can write
       | the claims.
       | 
       | It's immensely complicated, but if Unity does someday assert this
       | patent against someone else, then you all are helping the
       | defendant when _they_ have to defend themselves. At least, I hope
       | the defendants find this discussion.
       | 
       | The defendant's standard tactic is usually to file for IPR, or
       | PTAB reexamination of the patent, which is like a trial without a
       | courtroom. The cost figure I recall is $500,000; maybe it's
       | different now.
       | 
       | If the IPR succeeds, then Unity is SOL. There was a Supreme Court
       | case recently where some plaintiffs tried to get the whole IPR
       | system thrown out. They failed, as far as I know.
       | 
       | Lastly, the whole back-and-forth with the PTO is in the public
       | record, if you know how to find it (and if you think reading
       | _claims_ is difficult, wait  'til you try reading a prosecution
       | history!)
        
       | hackthefender wrote:
       | Patent lawyer here. There is a lot of dubious stuff already in
       | this thread, so be careful with legal opinions from people on the
       | internet.
       | 
       | Some relevant claim language is below. Of course a lot of this
       | stuff has been known for a while, but you have to have everything
       | together--or an evidenced argument that combining things in this
       | way would have been obvious--before you can conclude anything
       | about the validity of the patent. And on unpatentable subject
       | matter (i.e., being an abstract idea), there is a pretty good
       | argument that this improves the functionality of the computer,
       | not just uses a computer to do something known, which recent
       | cases have started using as the de facto dividing line.
       | 
       | 1. A system comprising: one or more computer processors; one or
       | more computer memories; a set of instructions incorporated into
       | the one or more computer memories, the set of instructions
       | configuring the one or more computer processors to perform
       | operations for automatically managing a set of memory chunks
       | within the one or more computer memories at runtime for a
       | computer application, the operations comprising: receiving a set
       | of entities from the computer application, each of the set of
       | entities including a set of components, wherein each component of
       | the set of components has one type of a set of types; classifying
       | the set of entities into a set of archetypes, each archetype
       | representing a different count of the set of components or a
       | different combination of types of the set of components relative
       | to other archetypes of the set of archetypes; based on a
       | determination that one of the set of archetypes corresponds to a
       | new archetype, building a new memory chunk, adding the new memory
       | chunk to the set of memory chunks, and populating the new memory
       | chunk, wherein the populating of the new memory chunk includes
       | adding data from the set of components included in one or more
       | entities of the set of entities that are classified under the new
       | archetype, the adding of the data including contiguously adding
       | the data to ends of a set of component data arrays included in
       | the new memory chunk, each of the set of data arrays included in
       | the new memory chunk corresponding to a respective component of
       | the set of components included in the one or more entities that
       | are classified under the new archetype.
        
         | jjoonathan wrote:
         | Wait just one second... they managed to actually get a
         | completely generic description of ECS into the claims?
         | 
         | EDIT: yes, yes they did. What you see above is in fact clam 1,
         | in it's entirety.
         | 
         | This is worse than usual. Usually "X patents (common thing)"
         | headlines actually mean "X patents (common thing with weird
         | twist)," which is a great deal less severe. This really looks
         | like Unity got an actual patent on the actual ECS design
         | pattern, the one that every game has used for the past 40
         | years.
         | 
         | They will be able to extort an awful lot of money with this
         | patent before it gets overturned.
        
           | shock-value wrote:
           | Not really. To me the novelty in the first claim is that they
           | have a system which automatically determines an optimal
           | memory layout, even in the face of new combinations of
           | components within a newly created entity. A typical hand-
           | crafted ECS system wouldn't likely infringe -- it's more
           | likely that the memory layout was defined in advance.
           | 
           | I guess this will be a major roadblock to Unreal Engine
           | offering such an automated ECS system, which is a real shame.
           | There are certain types of games which do need ECS to make
           | viable use of computing resources (simulations, etc). You
           | don't see many of those on Unreal now and I guess you won't
           | for the foreseeable future if this patent holds.
        
             | Rd6n6 wrote:
             | Several already existing unreal games already use ecs. I
             | saw a tech talk about Conan exiles for example. It's just
             | not part of the engine. Can't find the talk, it was an epic
             | event, but they advertise it in job postings
             | 
             | https://jobs.funcom.com/jobs/975839-gameplay-programmer
             | 
             | Edit: the video https://youtu.be/QlKXPBFh5BM
        
             | jandrese wrote:
             | Unless the system was attempting to cache-optimize the
             | memory, then it is probably going to infringe. So basically
             | everybody.
        
             | ilaksh wrote:
             | What exactly is their system for determining optimal
             | layout? It must be disclosed in detail. They can't just
             | claim that any approach like that is theirs.
        
             | letsInvalid wrote:
             | Nothing about this write up says they invented a memory
             | allocation system
             | 
             | Regardless I've built ECS engines prior to their filing.
             | I'll submit examples of my code calling malloc() when it
             | realizes it doesn't have enough memory for the new entity
        
           | munificent wrote:
           | > they managed to actually get a completely generic
           | description of ECS into the claims?
           | 
           | From looking at the claims, it seems they are patenting
           | _archetype-based_ based ECS. In other words, not just vanilla
           | "array of components" but "array of sets of components".
        
         | cosmotic wrote:
         | As a patent lawyer, can you explain what that claim means? Why
         | does it seem intentionally confusing?
        
           | bcrosby95 wrote:
           | > Why does it seem intentionally confusing?
           | 
           | Because "group entities together in memory by which
           | components they have" isn't patent worthy.
        
             | tinco wrote:
             | Except that it might be, because if people knew how to do
             | it, they would have for the past 20 years that ECS have
             | been implemented in the games industry that is notoriously
             | focused on memory locality optimisation.
             | 
             | (not that I'm advocating for the patentability of software
             | in general, I just think that if software should be
             | patentable, this sure seems like something that could be)
        
         | nextaccountic wrote:
         | It's aggravating that parents are purposefully written in a
         | language that makes it harder to read.
         | 
         | What I could gather from it is that this is just an
         | implementation of archetype-based ECS. Which just means that
         | entities with the same set of components (that is, the same
         | "archetype") are allocated together.
         | 
         | But I don't know whether they are patenting archetypes in
         | general or just a narrow usage.
         | 
         | Now I have a question: is it possible that things published
         | before the date of the patent (24 march 2020) are infringing on
         | the patent? Or, on the contrary, things published before this
         | date can actually be prior art?
         | 
         | Because, there are Rust ECS libraries that use archetypes, like
         | for example legion https://crates.io/crates/legion/0.1.0 - that
         | had its first release on 9 march 2019. And even at this date,
         | the concept of using archetypes to optimize the memory layout
         | of ECS applications is not novel. More about this here
         | 
         | https://csherratt.github.io/blog/posts/specs-and-legion/
         | 
         | I would say that the google v8's Javascript optimization, where
         | they create a new struct layout for each possible combination
         | of object fields, might as well count as prior art. It doesn't
         | use ECS though: but I don't think that prior art needs to check
         | all technology boxes. I argue that, in light of v8's trick to
         | turn objects with dynamic fields (traditionally stored as a
         | hash table) into objects with statically known fields, then ECS
         | archetypes are not novel enough for a patent.
         | 
         | (And I don't even know if the v8 optimization is itself novel)
        
           | jcranmer wrote:
           | > Now I have a question: is it possible that things published
           | before the date of the patent (24 march 2020) are infringing
           | on the patent? Or, on the contrary, things published before
           | this date can actually be prior art?
           | 
           | You have to look at the date of filing, not date of
           | publication. The date of filing is June 12, 2018 (patents
           | take a few years to issue these days). So March 9, 2019
           | cannot be prior art.
        
             | lamontcg wrote:
             | If someone online talked about archetypes earlier than June
             | 12, 2018 that can be prior art.
             | 
             | You don't need to have working code to take on a patent. If
             | someone posted a medium article, or even some kind of proof
             | of concept or cobbled together POC that'd be enough.
             | 
             | (I think really any kind of proof that you had the idea
             | before that date is good enough -- a personal diary would
             | work in principle, but you'd need to somehow prove that you
             | wrote your thoughts down on the date and didn't forge it
             | after the fact)
        
               | AlbertCory wrote:
               | > "a personal diary would work in principle, but you'd
               | need to somehow prove that you wrote your thoughts down
               | on the date and didn't forge it after the fact"
               | 
               | Patent _agent_ here, not patent _lawyer_. (that means I
               | passed the patent bar exam and could write your patent,
               | but could not sue anyone over it.)
               | 
               | Wrong, wrong, wrong. Prior art has to be "published" (and
               | there is a whole body of case law about what that means).
               | Maybe you are thinking of the old "first to invent" rule?
        
             | [deleted]
        
             | k__ wrote:
             | Aren't ECS systems much older?
             | 
             | I remember reading about them in my CS studies, and that
             | was pre 2011.
        
               | tinco wrote:
               | It's specifically archetype based ECS that's been
               | patented. Like (seemingly) everyone else in gamedev, I've
               | implemented ECS multiple times over the past 10 years.
               | The last time I did it was in Rust, trying to be the
               | first to use Rust's awesome parallel processing
               | constructs to make an automatically parallel ECS, I got
               | distracted halfway through and then specs beat me to it.
               | 
               | I'd never seen or heard of archetype based ECS before I
               | first saw Legion and I was very impressed with it. I
               | don't know where they got the idea but it's very worrying
               | if Unity legit came up with this first. I'm not super up
               | to date on what's happening inside AAA studios, but what
               | I've seen in production is that game studios usually
               | manually group components to optimise performance. The
               | automatic grouping in archetypes is definitely not
               | mentioned in any tutorial or game engine architecture
               | I've ever seen before Legion.
               | 
               | Edit: creator of bevy has a great initial reaction to
               | this on Reddit: https://www.reddit.com/r/rust/comments/pj
               | tpkj/comment/hbzaz6...
        
               | [deleted]
        
             | letsInvalid wrote:
             | Ok, 2019 is out
             | 
             | How about 2013:
             | 
             | https://www.gamedev.net/tutorials/programming/general-and-
             | ga...
             | 
             | I use a heavily updated version of this for my own projects
        
               | shock-value wrote:
               | It's not relevant. Unity is claiming an automated system
               | for determining an optimal memory layout as entities with
               | new combinations of components are generated (at
               | runtime). Such a layout defined in advance would not
               | infringe.
        
               | letsInvalid wrote:
               | That's not exactly novel either.
               | 
               | I've seen engines that do that and updated my own code to
               | do so. Unfortunately git says that was added after they
               | filed.
               | 
               | Their employees could have easily pulled this from
               | community discourse.
               | 
               | What's probably needed is community backlash; no more
               | unity games. It worked with Apple.
        
             | nextaccountic wrote:
             | This is very very concerning. Not only Amethyst's legion is
             | archetype based, but also Bevy's ECS. So the Rust gamedev
             | ecosystem is somewhat tainted (depending on the specifics
             | on the patent and the source code of those frameworks, but
             | I think that even reading the patent is risky - or at least
             | I was told that, because if you know about the contents of
             | the patent, infringing it is worse)
        
               | jcelerier wrote:
               | Isn't that the same principle that e.g. https://www.boost
               | .org/doc/libs/master/doc/html/poly_collecti... which has
               | existed since 2016 and described since 2014 (at least:
               | https://bannalia.blogspot.com/2014/05/fast-polymorphic-
               | colle... ) ?
        
         | [deleted]
        
         | nixpulvis wrote:
         | What the hell did I just read? Sounds like Java to me.
        
         | btilly wrote:
         | Not a patent lawyer here. But I'm unfortunate enough to have
         | several patents to my name, owned by past employers.
         | 
         | My impression of everyone that I have ever heard from, or dealt
         | with, involved with patents is that you all are so firmly in
         | regulatory capture that your heads are captured up your
         | collective asses, and the tech industry is being hampered by
         | the resulting legal quagmires.
         | 
         | In a sane world, the entire description that you gave falls
         | squarely under "generic computers doing generic computer
         | things". And therefore by _Alice v. CLS Bank_ as decided by the
         | Supreme Court, it should not be patentable. Period.
         | 
         | Unfortunately the United States Court of Appeals for the
         | Federal Circuit has gone rogue, and you're almost certainly
         | correct that they will happily grant use of the patent to any
         | patent troll lucky enough to get it. And the Patent Office is
         | so firmly in the land of regulatory capture that bad patents
         | like this have no trouble being issued.
         | 
         | And the result is that people whose work ACTUALLY achieves
         | "Progress of Science and useful Arts" is hampered by this crazy
         | system. And our patent system continues to undermine its stated
         | Constitutional purpose.
        
         | kortex wrote:
         | > And on unpatentable subject matter (i.e., being an abstract
         | idea), there is a pretty good argument that this improves the
         | functionality of the computer, not just uses a computer to do
         | something known
         | 
         | That's not really what is getting folks riled up with respect
         | to patentability. The techniques mentioned (as interpreted by
         | some) are considered not at all novel, being widely known in
         | the prior art.
         | 
         | That's my take. I haven't dug too deep.
         | 
         | Update after briefly reading the patent. I like to read claims
         | backwards, because they almost always build upon each other,
         | with Claim 1 basically claiming the broad domain, and each
         | subsequent claim narrowing the scope. Claims are "subtractive"
         | - each has to match, unless you specifically call out sub-
         | claims (e.g. "8. claim 7, but also ABC; 9. claim 7, but also
         | DEF").
         | 
         | Here's a plaintext link for those following along:
         | https://patents.justia.com/patent/10599560
         | 
         | Claims 17 and 20 are the real kickers.
         | 
         | > The method of claim 10, the operations further comprising:
         | 
         | > determining that an entity of the set of entities within a
         | first archetype has been modified;
         | 
         | > based on a determination that the modified entity corresponds
         | to an additional new archetype, adding the additional new
         | archetype to the set of archetypes, building an additional new
         | memory chunk for the additional new archetype, populating the
         | additional new memory chunk with data from the set of
         | components included in the modified entity, and deleting data
         | corresponding to the modified entity from the first archetype;
         | 
         | > based on a determination that the modified entity corresponds
         | to an existing second archetype in an existing memory chunk,
         | populating the existing memory chunk with data from the set of
         | components included in the modified entity, and deleting data
         | corresponding to the modified entity from the first archetype.
         | 
         | Woof. That's really dense, but it sounds like it's basically
         | describing inheritance based on composition. To update an
         | archetype and all entities of that archetype, create a new
         | archetype in memory, move some pointers, and you're done. No
         | reallocation beyond that updated archetype node.
         | 
         | > 20.20. The non-transitory machine-readable medium of claim
         | 19, wherein each component data array of the set of component
         | data arrays is contiguous with a next component data array of
         | the set of component data arrays.
         | 
         | So this isn't just about ECS, this isn't about archetype ECS,
         | or even OOP-based archetype ECS. This is specifically about an
         | OOP-based archetype ECS using some fancy memory layout method,
         | which lays out contiguous chunks in such a way that modifying
         | archetypes doesn't result in large reallocations. I think. It's
         | super dense.
         | 
         | Even with all that added specificity, I still think it falls
         | short of clearing the bar of novelty beyond prior art. This is
         | such a performance-relevant part of game engines that leverage
         | ECS, that somebody out there has to have already thought of
         | ways to improve the memory management of entities.
        
           | zoobab wrote:
           | Invalid under Alice.
           | 
           | We don't care about the "prior art" filter, because the
           | patentability filter already failed.
        
             | kortex wrote:
             | Where does the patentability filter fail? By "clearing the
             | bar of novelty beyond prior art" I am referring to both
             | novelty and non-obviousness.
             | 
             | You seem to be implying, by referencing what I can only
             | assume is the Alice Corp case, is that the patent is too
             | abstract. I don't think that's the case. The patent
             | describes a very specific technique for memory management
             | and archetype based inheritance.
             | 
             | I think the technique would be patentable were it an
             | inventive step above the prior art, but it's not novel
             | enough, IMHO, IANAL, BBQ.
             | 
             | https://en.wikipedia.org/wiki/Alice_Corp._v._CLS_Bank_Inter
             | n...
        
           | phkahler wrote:
           | >> Even with all that added specificity, I still think it
           | falls short of clearing the bar of novelty beyond prior art.
           | This is such a performance-relevant part of game engines that
           | leverage ECS, that somebody out there has to have already
           | thought of ways to improve the memory management of entities.
           | 
           | I think it's more specific than a combination of ECS and
           | memory allocation strategy. Since ECS allows dynamic building
           | of "types" or "classes" of objects, this seems to be
           | automatically detecting new types and allocating memory for
           | them separately. Maybe? So go ahead and ECS all you want, and
           | go ahead and use spiffy memory management all you want, but
           | don't tie type inference into your memory allocator. IANAL
           | but that seems to be the ostensibly unique part.
        
         | Rd6n6 wrote:
         | Isn't there a ton of prior art? I've seen tech talks about ecs
         | implementations for years.
         | 
         | From the top of my head, here's a great tech talk about
         | overwatch. https://youtu.be/W3aieHjyNvw
         | 
         | Here's a tech talk by Bob Nystrom (the game programming
         | patterns guy) that mentions ecs from years ago
         | https://youtu.be/JxI3Eu5DPwE
         | 
         | Edit: letsInvalid in another thread above linked to an article
         | from 2013:
         | https://www.gamedev.net/tutorials/programming/general-and-ga...
        
       | dubcanada wrote:
       | How does such an abstract idea get approval?
       | 
       | Like Figure 4B. It's a diagram that basically says, if something
       | happens and we need a new entity we create one... Figure 4A is
       | literally talking about adding to an array. Figure 1 is just a
       | diagram of a computer?
       | 
       | The abstract is just garbage collection...
        
         | trzeci wrote:
         | The patent went through as it was described in the context of
         | device - where a device is a core element of the application.
         | 
         | Terrifying that went through.
        
         | Sanguinaire wrote:
         | The patent system is just not fit for purpose. Even for
         | pharmaceuticals and other long-development-cycle products in
         | the real world it has been corrupted beyond reason; I worked on
         | battery materials for a while and even though there was plenty
         | of prior art, a couple of players had basically patented every
         | metal oxide possible under the guise of a cathode material,
         | even though most of them would be utterly useless. Until there
         | is some penalty for such time-wasting chancers, nothing will
         | change. The software world makes it even worse by removing the
         | already low bar for a proof of existence or actual benefit.
        
         | jcranmer wrote:
         | What the patent actually covers is governed by the claims at
         | the very end of the patent, and most of the rest of the
         | document is generally irrelevant, per my _very_ limited
         | understanding of how patents work.
         | 
         | That said, I've reread claim 1 a couple of times and I have no
         | clue what it is actually claiming.
        
           | pclmulqdq wrote:
           | The other disclosure establishes prior art for other people
           | and sets you up for more patents in the future with the same
           | prior art date (continuations).
           | 
           | The claims are the legally enforceable part.
        
           | ska wrote:
           | > and most of the rest of the document is generally
           | irrelevant
           | 
           | INAL but this is incorrect. The rest of the document is
           | mostly the disclosure and - critically - claims cannot rely
           | on anything not disclosed.
           | 
           | Importantly during the review process you can edit or amend
           | your claims, but you can't update the disclosure without
           | changing precedent date.
        
             | jcranmer wrote:
             | I should have been somewhat more precise with my wording.
             | The document is generally irrelevant for the purposes of
             | deciding whether or not your product potentially infringes
             | the patent. It's not until after processing the claims, or
             | perhaps during if you're unclear about terminology or
             | meaning, that you start considering the rest of the
             | document.
        
               | ska wrote:
               | Seems I misinterpreted your comment.
        
           | kortex wrote:
           | > What the patent actually covers is governed by the claims
           | at the very end of the patent, and most of the rest of the
           | document is generally irrelevant, per my very limited
           | understanding of how patents work.
           | 
           | Correct. _Only_ the contents of the Claims system matters to
           | what is actually patented. Also, claims are subtractive
           | /intersection, like all bullets have an AND function applied.
           | So if you have a widget and it matches claim 1-8 but does not
           | match claim 9, it does not match. That is, unless you
           | specifically call out your "unions" - this usually looks like
           | "the method of claim 8, but abc", "the method of claim 8, but
           | def". That's how you do "unions." Kinda.
           | 
           | This is a gross simplification.
        
             | greensoap wrote:
             | > So if you have a widget and it matches claim 1-8 but does
             | not match claim 9, it does not match.
             | 
             | This is not correct. If you infringe claim 1 then you
             | infringe claim 1. Whether or not you also infringe claim 9
             | doesn't matter.
             | 
             | Assuming Claim 9 is dependent on claim 1, claim 9 includes
             | all the limitations of claim 1. So claim 1 is A+B+C....
             | Claim 9 is 1 + D = A+B+C+D. So if you infringe 9 because
             | you have A+B+C+D then you also, by definition, infringe
             | claim 1 because you have A+B+C.
             | 
             | Also, you can write a claim that has ORs applied. But the
             | drafter has to be really careful with how it is done and it
             | is not the norm.
        
               | kortex wrote:
               | I may have explained it incorrectly, I'm a bit rusty.
               | 
               | I did a lot of work in pharmaceutical route development,
               | where some patent does "ABCD123" and we'd do "ABCD456".
               | My point is more that, patents are usually laid out like:
               | 
               | 1. A method for crystallization of a pharmaceutical in an
               | organic solvent with some counterion.
               | 
               | 2. (1), where the solvent is ethanol, or methanol
               | 
               | 3. (1), where the counterion is Cl, SO4, or NO3
               | 
               | 4. (1), where the pharmaceutical is a COX2 inhibitor
               | 
               | So that patent doesn't allow you to claim _any_
               | crystallization route with ethanol. If I crystalize from
               | ethanol but use mesylate as the counterion, I 'm not
               | infringing.
        
               | IdoRA wrote:
               | Considering the doctrine of claim differentiation, your
               | hypothetical could still be infringing Claim 1. You'd
               | have to consider the spec, among other things, to
               | persuasively argue one way or the other.
        
           | letsInvalid wrote:
           | Unity is claiming they came up with this:
           | 
           | https://www.gamedev.net/tutorials/programming/general-and-
           | ga...
        
           | deorder wrote:
           | It appears to describe a data-oriented component entity
           | system in which all data types within a component are
           | assigned to chunks (batches) in such a way that they can be
           | optimally grouped with data from components of other entities
           | for optimal memory access.
        
           | shock-value wrote:
           | My read (and from what I know of ECS) is that it's basically
           | claiming a system which automatically organizes the memory
           | layouts of instances of different types of "entities" (i.e.
           | "type" meaning which "components" it includes) in an
           | efficient manner.
           | 
           | Here, an "entity" is just an object identifier (integer, or
           | whatever). A "component" is a specific set of data relevant
           | to some function (e.g. position component would have x, y, z
           | floats, while damage level component might be a single float
           | to represent amount of damage).
           | 
           | ECS generally means laying out all memory for all instances
           | of a given component contiguously, so in the example I gave
           | you'd have one array for all position components in your game
           | world, and one array for all damage level components. The
           | "entities" are just collections of these components from
           | these different arrays. So the "player" entity for example is
           | logically composed of one particular element of the position
           | array and one particular element of the damage array. This is
           | more cache friendly when you have a "system" (say, the
           | physics subsystem) which generally only operates on one or a
           | limited set of types of components across many entities.
           | 
           | There is no way ECS in general is patentable but their system
           | which intelligently and automatically performs the memory
           | layouting for their form of ECS (which also includes the
           | notion of chunking these arrays into finite sized blocks)
           | very well might be.
        
             | coldcode wrote:
             | It's basically describing using a slab allocator to arrange
             | the entities. How is this new art?
        
               | shock-value wrote:
               | I don't know the details of slab allocators. Though if
               | you are describing an allocator that does not have
               | knowledge of what the memory is being used for (e.g. the
               | difference between asking the allocator for memory for a
               | position component defined as three floats and also a
               | color component also coincidentally defined as three
               | floats, versus asking the allocator for two sets of three
               | floats without regard to their intended usage), then it
               | is not the same.
        
             | Arwill wrote:
             | Splitting up objects attributes into separate arrays is
             | required if you plan to work with those data on the GPU. I
             | did it when working with Java and OpenCL, and wanted to
             | efficiently access the same data trough Java objects and
             | also in OpenCL kernels. OpenCL does not know about objects,
             | like Java, but it can access data in arrays, so practically
             | every Java object holds an index into the arrays of the
             | different attributes.
             | 
             | Per my knowledge Unity ECS does not currently process data
             | on the GPU, but uses ECS to split work to multiple threads
             | on the CPU. If the threads work on data that only they need
             | to touch, then there is no need to synchronise them. It is
             | also more cache efficient to read and write data from a
             | couple of arrays sequentially, than to pull objects and
             | their attributes from all over the heap.
             | 
             | The idea of storing objects by attributes, instead of
             | object instances is not new. Some clever allocator indeed
             | might be new.
             | 
             | I suspect they want to make it harder for Unreal to make
             | the same system. Unreal might have nice visuals, but
             | scaling was not their strength before.
        
               | shock-value wrote:
               | Yeah I think it's a huge roadblock for Unreal. Though,
               | I'm not sure that the patent would preclude a system
               | which organizes memory layouts at build-time rather than
               | runtime (though I could be wrong about that). Could be a
               | good opening for Unreal, though to this point I think
               | they've (disappointingly) shown little interest in any
               | kind of ECS system.
        
       | jeffreyrogers wrote:
       | When reading a patent basically the only part that matters
       | legally is the claims section. This is always at the end of the
       | patent filing, at least in modern practice. This is on page 28
       | and 29 of the filing. It starts with "The invention claimed is".
       | Google Patents has a better format than the USPTO website and
       | makes the claims easy to see:
       | https://patents.google.com/patent/US10599560B2/en?oq=10%2c59...
       | 
       | If it is not claimed in the claims it is not subject to the
       | patent. Any analysis of this patent (or any other patent) that
       | doesn't focus on the claims is not a real analysis. Part of why
       | companies spend so much money on patent lawyers is because good
       | ones know how to write the claims in as broad a way as possible
       | that won't get thrown out by a court. This way the patent applies
       | to a maximal set of implementations. The claims are typically
       | hard to read, the ones in this patent are no exception.
       | 
       | There are essentially 3 main claims this patent is making
       | (numbers 1, 10, and 19). These are all separate claims. So if any
       | one holds up in court then the defendant is violating the patent.
       | I briefly read them, but it takes a lot of effort to understand
       | them and my knowledge of ECS is shaky. However, none of them seem
       | to be claiming anything all that novel, so I would be surprised
       | if they held up in court.
       | 
       | But to use an expression I've heard somewhere, patents aren't
       | read, they're counted. Lone inventors almost never successfully
       | defend a patent. They were intended to spur innovation but in
       | modern practice patents are used as legal weapons by large
       | corporations. That's why most major companies incentivize having
       | employees produce patents. The companies don't really care what's
       | in the patents, they just want a lot of them so they can
       | successfully threaten other corporations with lawsuits. This
       | allows everyone to infringe on each others patents, since it
       | would be too expensive to actually have a trial. So big
       | corporations are largely protected from patent lawsuits since
       | their competitors are probably infringing on at least some of
       | their patents and vice-versa. The real losers under this system
       | are small companies and individual inventors.
        
       | adamnemecek wrote:
       | I should patent arrays.
        
       | newobj wrote:
       | Here's some prior art from 2002:
       | https://neil3d.github.io/reading/assets/slides/data-driven-g...
       | 
       | Seminal talk btw IMHO
        
       | kensai wrote:
       | I wonder if this patent will be recognized or enforceable in
       | Europe.
        
         | zoobab wrote:
         | EPO has destroyed the law with "as such" or "technical effect",
         | and they are lobbying hard to get the UPC in place, so that
         | software patents are fully "valid" accross Europe.
        
         | Kiro wrote:
         | The European Patent Convention states that software is not
         | patentable, so no.
        
           | j-pb wrote:
           | That doesn't stop them, Benoit Battistelli has been actively
           | pushing for software patents and ignored the EPC.
           | 
           | With staff being quoted previously: "We are far too often put
           | in front of the dilemma of either working according to the
           | European Patent Convention and respecting the examiner's
           | guidelines, or issuing 'products' as our hierarchy demands"
           | 
           | The wikipedia article on him is harrowing.
           | 
           | https://en.wikipedia.org/wiki/Benoit_Battistelli#Discontent_.
           | ..
        
         | tluyben2 wrote:
         | You file per region.
        
       | drunner wrote:
       | Does this need a (2020) or am interpreting this document wrong?
       | 
       | Either way, how the hell do you get a patent for some abstract
       | diagrams that represent a design pattern.
       | 
       | Like can I patent the "novel" by submitting a diagram like:
       | _______________________       | Character | Setting |
       | _______________________       | Situation | Theme   |
       | _______________________
        
         | jcranmer wrote:
         | > Either way, how the hell do you get a patent for some
         | abstract diagrams that represent a design pattern.
         | 
         | You don't.
         | 
         | Patents are unfortunately very obtuse to read and hard to
         | parse, and it's especially easy for a lay person to give up
         | very quickly and as a result misinterpret the patent. This is
         | especially true when you're pointed to the patent by a rando on
         | the internet telling you what (they think) is patented, even if
         | it's not accurate.
         | 
         | Another contributing factor is that, even when you read the
         | claims, a lot of the actual description may be functionally
         | irrelevant to the actual thing being claimed. Suppose, for a
         | moment, that you were patenting a new kind of bike pedal. Then
         | your actual claim would look like an overly verbose and vague
         | description of a bike that includes your new kind of pedal. And
         | since most of the paragraph is describing a bike, it's easy to
         | assume that what is being patented is the bike and not the
         | pedal of that bike.
        
       | gfodor wrote:
       | Ridiculous, and corrosive. I understand this isn't "patenting
       | ECS" but patenting optimizations to ECS that are _heavily_
       | inspired from existing work like, for example, JIT javascript
       | runtimes, is shameful behavior. I hope Epic or someone else
       | produces prior art and the requisite shaming. The reason ECS is
       | even a thing is because of the endless amount of sharing and
       | openness from game engine studios at conferences like GDC. This
       | runs counter to that openness, and is particularly corrosive
       | given the trend towards game engines becoming more and more
       | aligned with trying to lift all boats (such as the efforts by
       | Epic and more recently Amazon 's Open 3D engine.)
        
         | [deleted]
        
         | [deleted]
        
       | michaelbrave wrote:
       | This is bullshit, not only is it too abstract of an idea, they
       | aren't even the ones that invented nor perfected it. They have no
       | right.
        
       | badloginagain wrote:
       | Patenting Entity-Component-System sounds like a hot take.
       | 
       | I didn't look close enough to see if what they're patenting is
       | something specifically unique to Unity3d's implementation. It
       | would have to be?
       | 
       | From the abstract it sounds like the equivalent of trying to
       | patent Observer/Observable.
       | 
       | Maybe there is a history of patenting software architecture that
       | I'm not aware of, I'm not an expert in patenting in software
       | development.
        
         | gfodor wrote:
         | I haven't read the patent but Unity's long march to ECS
         | included figuring out mapping their previous GameObject +
         | Behavior paradigm to the ECS paradigm. At a glance, part of
         | this appears to be trying to patent that. This isn't a Unity
         | specific problem though, many gaming studios have existing code
         | on the old paradigm and are looking for good ways to migrate or
         | bridge to ECS.
         | 
         | Patenting such technology runs counter to the reality that this
         | track of game engine innovation in particular has been one
         | particularly notable for the open sharing of techniques and
         | technology, in the interest of everyone benefitting from a
         | better approach in core architecture that improves performance
         | and reduces incidental complexity. At some point, it became a
         | cultural norm that people were not going to hold their cards
         | close to their chest on this core part of the game loop. There
         | are a lot of areas where I'd be inclined to accept the idea of
         | IP protections for game engine companies on an ethical basis:
         | this isn't one of them.
        
       | Jare wrote:
       | I suspect the meat of the patent will be very specific about the
       | types of optimizations they do in Unity DOTS, rather than the
       | concept of an ECS. There's plenty of public prior art about ECS,
       | but the concrete set of choices they made to implement and
       | optimize theirs is a concrete thing. (ftr I don't think it should
       | be patentable either way)
        
       | malwrar wrote:
       | ECS has been around since like 2007 and there's plenty of public
       | prior art on this, but _suuuuuuuuuure_ Epic Games yep you guys
       | totally invented the concept and deserve a monopoly on use of the
       | technology. This might directly affect several projects I have if
       | they choose to use this patent offensively. This further cements
       | my disgust with IP law, honestly I 'd rather we just have
       | information anarchy when it comes to abstract computer stuff at
       | this point.
        
         | adamrezich wrote:
         | this is Unity not Epic
        
           | stonewareslord wrote:
           | I think OP might have confused Unity (a game engine) with
           | Unreal Engine (game engine owned by Epic Games)
        
             | malwrar wrote:
             | This is correct, mixed up the companies. Thanks for
             | clarifying before I could.
        
       | AlbertCory wrote:
       | On software patents, something I've devoted a hell of a lot of
       | time to:
       | 
       | The commenters who mentioned "regulatory capture" and patent
       | trolls are 100% right. But it's much _worse_ than you think: the
       | professional societies (ACM, IEEE) and tech industry management
       | are solidly _not_ in your corner, either. They 've invested too
       | much money in the current system.
       | 
       | Let's imagine that GitHub or StackOverflow or some other large
       | developer forum ran a poll: "Are you in favor of abolishing
       | software patents?" What do you think the results would be?
       | 
       | Why don't they ask the question? Unfortunately, they don't want
       | to hear the answer. It might move Congress to actually do
       | something, which they always prefer not to do.
        
         | kristianp wrote:
         | Stackexchange has a patents sub-site aimed at finding prior art
         | for software patents, so I wouldn't paint them with that brush.
         | 
         | https://patents.stackexchange.com/
        
           | AlbertCory wrote:
           | And indeed, I have a quote from Joel in my paper [1].
           | 
           | However, the law is full of the phrase "practitioners in the
           | art." A poll showing that a vast majority of practitioners of
           | the art feel one way would have some effect. Whether it would
           | be enough, or how long that would take, is an open question.
           | 
           | [1]
           | https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2399580
        
       | marcodiego wrote:
       | Another reason to support godot.
        
       | wilg wrote:
       | They should finish the ECS system first.
        
       | meheleventyone wrote:
       | There's a whole lot more as well:
       | https://patents.justia.com/assignee/unity-ipr-aps
        
       | mabbo wrote:
       | Setting aside whether or not this patent is silly or abstract or
       | obvious or anything else, I have one important question: what
       | does Unity plan to _do_ with this?
       | 
       | Most big tech companies have a constant stream of patent
       | applications, many of which are granted. But they rarely sue over
       | 99% of them. Sure, Amazon had one-click for however many years
       | and they cared about it. But the other tens of thousands of
       | patents Amazon owns (a couple of which have my name on them as
       | 'inventor') are never going to see a court room.
       | 
       | Why do they patent everything? So that patent trolls can't patent
       | it first and then sue them for patent violations. It's a
       | defensive patent.
       | 
       | Is ECS going to be Unity's "This is ours, no one else can use it
       | without paying us" lawsuit-generating patent? I doubt it. They
       | know they'd lose in court eventually, and along the way the
       | entire industry would stop doing business with them. It would be
       | a complete lose-lose move.
       | 
       | On the other hand, now that Unity owns this patent, no patent
       | troll can go and patent ECS then start suing small-studio Unity
       | customers, like parasites leaching off the success of Unity.
        
         | Buttons840 wrote:
         | Indie game developers do seem like a group who wouldn't take
         | kindly to being told they can't do what they want with their
         | own computer.
        
         | [deleted]
        
         | gentleman11 wrote:
         | Last year unity retroactively changed the license on assets
         | from its asset store. Since then, you can no longer let
         | freelancers or contractors use your assets while they do work
         | for you, you end up having to buy them each a copy of
         | everything in practice unless their work is really decoupled
         | from the project.
         | 
         | It's a real killer for indies who are trying to collaborate who
         | have not formed a company yet. This seems to apply to items you
         | purchased before they changed the terms. They even promised
         | they freelancers could use your assets in support forums days
         | before the change
         | 
         | I stopped using unity after that. They don't act in good faith
         | towards their users
        
         | the_duke wrote:
         | Defending against patent trolls is an aspect.
         | 
         | But the flip side is that this gives corporations a great tool
         | to handicap competition.
         | 
         | If a competitor emerges, they can threaten legal action. And
         | with a huge patent portfolio the big players can usually find a
         | way to attack pretty much anyone.
         | 
         | Many companies will easily get scared and cave, and so either
         | lose competitive advantage by dropping the technology, or feel
         | forced into agreeing to an aqui-hire by the corporation . Which
         | further cements the corporations dominating position.
         | 
         | This happens often enough, but rarely goes public.
        
       | Weryj wrote:
       | So what, the ECS I wrote is now illegal?
       | 
       | This is dumb
        
       | timmytokyo wrote:
       | Ironically, Unity's ECS development effort has gone radio-silent
       | in the last few months. Their latest versions of the Unity Editor
       | (2021.1+) are no longer compatible with ECS, and Unity's forum
       | reps have not responded to the many game devs left in limbo and
       | begging for info or an update.
       | 
       | Something with ECS development is clearly going haywire, and the
       | silence from the Unity people is troubling.
        
         | zubspace wrote:
         | I know what ECS is and why it's needed for some games. But for
         | a large group of game developers that transition was simply too
         | overwhelming I think.
         | 
         | Not just the nomenclature: ECS, DOTS, Burst Compiler,
         | SRP/HDRP/LWRP/URP.... It's an endless list of confusing
         | terms... But moreover those concepts are not so easy to grasp
         | and to use in code by just looking at a few examples.
         | 
         | After doing lots of small 'experiments' in Unity (the old way
         | without ECS) I started to realize, that more and more I was
         | fighting the engine, trying to use or build upon features which
         | were half-baked, buggy or simply not developer friendly. And
         | instead of first fixing those things Unity decided to go all in
         | on ECS.
         | 
         | There came Godot, a breath of fresh air without all the cruft
         | and without all those confusing terms. I think Unity will have
         | a hard time in the future: On one hand there's Unreal which
         | caters the AAA market and there are smaller engines like Godot
         | for the indie crowd. Unity is the odd one in between.
        
         | jay_kyburz wrote:
         | Because its such a different way of working I had assumed they
         | would fork the engine and start pitching a different kind of
         | engine with big changes to the work flow and editor. Call it
         | Super Unity and charge twice as much.
        
           | timmytokyo wrote:
           | I wouldn't be surprised if this is what they end up doing.
           | Trying to shoehorn ECS into an already existing object-
           | oriented engine has probably been an engineering nightmare
           | for them.
        
         | CreepGin wrote:
         | I can't imagine them to just continue DOTS like normal after
         | going silent for so long. If they don't axe it, then they may
         | choose to do something drastically different than before, like
         | automatic ECS conversion under the hood.
         | 
         | ECS is really good for things that scale. Architecturally, it
         | has both pros and cons to OOP. After working with ECS for a few
         | years, I came to the conclusion that OOP is still the best for
         | behavioral richness.
         | 
         | The current state of DOTS is just sad as it's affecting a lot
         | of developments such as Tiny, unity.physics, dots audio, dots
         | animation, etc...
         | 
         | Burst and Jobs are probably the best things that came out of
         | Unity's initial push for DOTS.
        
       | [deleted]
        
       | junon wrote:
       | This is game over for indie devs :|
        
       | PostThisTooFast wrote:
       | Whatever "ECS" is...
        
       | deorder wrote:
       | I don't see anything new even when considering the entire
       | context. I have worked on similar data-oriented entity component
       | systems for over 10 years. Unity was actually very late to the
       | game and Sony had to push them to give it more priority.
       | 
       | Edit: Some examples, including the use of chunks, or what I call
       | batches:
       | 
       | https://stackoverflow.com/a/15414523
       | 
       | https://old.reddit.com/r/C_Programming/comments/6nxfzp/going...
        
         | runevault wrote:
         | Not sure about Archetype specifically, but discussions on
         | twitter about this have pointed out talks from GDC going back
         | to at least 2002 when it comes to ECS.
        
           | deorder wrote:
           | Yes, but their claim is specifically about (quoting my other
           | comment):
           | 
           | > It appears to describe a data-oriented component entity
           | system in which all data types within a component are
           | assigned to chunks (batches) in such a way that they can be
           | optimally grouped with data from components of other entities
           | for optimal memory access.
           | 
           | This is not new either. I and others have done this for
           | years. The term "archetype" is something they made up to
           | describe something that has been done many time before.
           | 
           | Edit: It appears that the term "archetype" was introduced
           | somewhere in the last few years. Not sure then if it is
           | specifically coming from Unity.
        
             | shock-value wrote:
             | Without commenting on whether this patent should be granted
             | or not, I really don't think it is about ECS in general.
             | The patent has to do with an automated system for
             | organizing component data into arrays and chunks. The key
             | word being "automated". You give it definitions for
             | component data, start creating entities with combinations
             | of those components, and it does all the rest (at runtime).
             | 
             | There might very well be prior art for that as well but any
             | ECS system where the layout scheme has been defined in
             | advance would not be relevant one way or the other. At
             | least that is my read of all of this.
        
       | bob1029 wrote:
       | IMO, this is too broad a patent to be enforceable. I have built
       | many systems that look exactly like this over the years. The
       | terminology I use is simply "data-driven". Nothing so fancy as
       | "Entity Component System", which is just an opinionated take on
       | the more fundamental idea of arrays of structs (aka "data").
       | 
       | My take is that this patent is part of a defense-in-aggregate
       | strategy which leverages a larger portfolio. I don't think a
       | legal team would stand on this one alone in a AAA vs AAA studio
       | fight.
       | 
       | I usually visualize large corporations pointing patent piles at
       | each other as if they are locked in some sort of cold war. I have
       | zero fears that this patent would be used against me or any of my
       | work.
        
       ___________________________________________________________________
       (page generated 2021-09-07 23:00 UTC)