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