[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)