Search Unity

Official Exciting developments in upcoming Entities 1.0 releases

Discussion in 'Entity Component System' started by jivalenzuela, Sep 26, 2022.

  1. Bas-Smit

    Bas-Smit

    Joined:
    Dec 23, 2012
    Posts:
    274
    upload_2022-12-14_10-52-18.png

    I feel your pain, but Unity made it pretty clear. I also rely on runtime conversion, and while my case is not very complex, I implemented my own conversion system in a few hours.
     
  2. Spy-Master

    Spy-Master

    Joined:
    Aug 4, 2022
    Posts:
    585
    -Joachim Ante notes in Jan 2021 DOTS wasn't robust then, with 30 people liking the post within a week.
    -https://youtube.com/watch?v=3Mq9EH8RT_U&t=528
    -Literally the whole concept of SemVer, which Unity packages follow.
    Unfortunate to see someone reduced to such a petulant child over this. Of course a company would pump up products still in the oven, but no sane businessman would use something that was never said to be ready for production without bearing the burden of whatever may come, acknowledging that feature sets and target use cases can shift over time while it's still baking. If this is your first time using prerelease technology or software, that's sad. Have a fun and enlightening time in the greener pastures you seek.
     
  3. TieSKey

    TieSKey

    Joined:
    Apr 14, 2011
    Posts:
    225
    No offence but the few last posts conveniently forget that Unity has been promoting the use of ECS in this experimental state for quite some time. There are several pinned threads in this same forum and plenty of talks/conferences.
     
  4. TheOtherMonarch

    TheOtherMonarch

    Joined:
    Jul 28, 2012
    Posts:
    866
    I am happy to change my code if ECS becomes better. Whether the improvement is to ease of use or more performant it does not matter.

    I am not sure how much ECS will change after 1.0 so best to change it now.
     
  5. Laicasaane

    Laicasaane

    Joined:
    Apr 15, 2015
    Posts:
    361
    This is becoming a pointless debate because some people can't understand what an experiment is. Conferences and talks are to raise awareness, to kindle interests in general ECS as well as Unity ECS so they can collect as much feedback as possible in the early stages. They never promise the look of the final APIs. Even when they released the experimental version, they stressed that it was only for collecting more feedback and things would change for sure.
     
    PeppeJ2, MadeFromPolygons and apkdev like this.
  6. TieSKey

    TieSKey

    Joined:
    Apr 14, 2011
    Posts:
    225
    Still forgetting Unity promoted games made/published/sold with those experimental versions of ECS....

    Anyway, point is...... we shouldn't give valuable feedback about how the deprecation of a huge feature that leaves a bunch of use cases in the void is not desirable for some of us????
    For some reason "valuable feedback" seems to mean "only positive feedback/praises", never "negative/complaints" for some users which feel compelled/entitled to criticize any such negative feedback as "pointless".
     
  7. Deleted User

    Deleted User

    Guest

    I agree with you that good feedback is negative and positive. However, the previous discussions were also about leveling expectations on deprecating features.

    All that really needs to be said is
    1. Here is my use case.
    2. This deprecated feature is required to support my use case.
    3. I will now be doing X instead of using Unity ECS.
    Where X can be
    1. Create my own ECS.
    2. Add deprecated feature as a plugin to Unity ECS.
    3. Use another game engine.
    This is without expectation of what features will be available in the released version.
     
  8. TheOtherMonarch

    TheOtherMonarch

    Joined:
    Jul 28, 2012
    Posts:
    866
    ConvertToEntity was an ugly cudgel. Bakers don't leave a huge gap in use cases. Learn how to bake prefabs and move on with your development.

    You don't want to experiment with our main project fine create a new project and experiment with that.
     
  9. TieSKey

    TieSKey

    Joined:
    Apr 14, 2011
    Posts:
    225
    Completely agree with u there, that's what I did myself but...
    After considering the following facts:
    the framework is 3yo (or more) and the change came right before 1.0;
    the deprecation notice was not as well communicated as desired (tons of resources out there, not that many people reads the forums every week);
    Unity promoted the use of the experimental framework in production by promoting and praising companies/games that did;
    a certain level of frustration from some users is to be expected and should be tolerated.

    Well, simply no. I can't bake prefabs that come from external sources at runtime.

    And as mentioned by others with different use cases, baking 11203912 prefabs in a helper subscene and then having an indexing system to get what's needed to be procedurally/user instanced is a very cumbersome and memory inefficient workaround. Although this one is supposedly going to be fixed by dots addressables... soon(tm)....

    If u allow me an analogy, removing runtime conversion (call it runtime baking if u want) is to ECS what removing real time shadows is to the lightning system. And then people expect nobody gets frustrated when they say, "go use baked shadows and projectors".
     
  10. Micz84

    Micz84

    Joined:
    Jul 21, 2012
    Posts:
    451
    Promoting games that use ECS in production does not mean they're promoting use of ECS in production in general. It shows that technology is viable for use if you are ready to use it at this stage and your game could not be done without DOTS like "Diplomacy is not an option". Even now on ECS page there is info that most games do not need ECS do be created in Unity.
     
  11. ArgenticsMT

    ArgenticsMT

    Joined:
    Dec 9, 2022
    Posts:
    3
    Can you explain how does IEnableableComponent work with RequireForUpdate?
    Because my ISystem executes OnUpdate despite the fact that IEnableableComponent is enabled or not.
     
  12. Spy-Master

    Spy-Master

    Joined:
    Aug 4, 2022
    Posts:
    585
    ArgenticsMT likes this.
  13. DaxodeUnity

    DaxodeUnity

    Unity Technologies

    Joined:
    Aug 5, 2021
    Posts:
    27
    We currently have two notable places in our API where Enableables are not supported. 1. Is our singleton api the 2. is RequireForUpdate. Both come down to the same explaination.

    It's expensive. It requires us to go into every chunk and check every entity (this is more expensive than the normal operation that just does it a chunk level). But more importantly it requires syncing, to make sure all changes to enabled state is done. This can be really expensive. As a result we currently have no plans of supporting it in those usecases.

    Now, what can you do instead? Well RequireForUpdate is actually just a way to fill a list of queries we check with .EmptyIgnoreFilter before your update loop. As a result there's nothing stopping you from having your own Utility.ShouldOnUpdateRun. This function could do anything you like notably it could still allow you to do Enableables you just need your own query instead and use .Empty as that would include the filtrering for Enableables. But in this case it would be slightly more noticeable what you're actually paying for :3
     
  14. UniqueCode

    UniqueCode

    Joined:
    Oct 20, 2015
    Posts:
    65
    I've been using Unity for 10+ years now. Abandoned my 3+ years of work on a multiplayer immersive sim space (basically 3d spacestation 13) at the end of last year. Started learning Rust over christmas and got into ECS.

    Decided to start up Unity again after the entities 1.0 news. And it's a blast to work with. Entities, Burst and UI Toolkit actually. I was under the impression before that the hybrid workflow was a bad workaround but the baking workflow is beautiful. This foundation is rock solid. Very happy with the technological choices you guys have made.

    Edit:
    On questions on how to implement certain gameplay in ECS I'm still using the book https://bfnightly.bracketproductions.com - like how to do an inventory. Obviously the code is different but the general ideas are the same.
     
    Last edited: Feb 2, 2023
    rdjadu, PolarTron, pixelsplit and 6 others like this.
  15. Niter88

    Niter88

    Joined:
    Jul 24, 2019
    Posts:
    112
    I am using it to easily add up for each entity, it feels like the right approach. It's a ECS test project.
     
  16. Neonage

    Neonage

    Joined:
    May 22, 2020
    Posts:
    287
    Just tried the new "baking" workflow. It is utterly unbearable. Everything is slow - duplication, editing, prefab changes, entering playmode - it takes minutes. In a simple scene with 50K~ objects.
    Everything falls apart. All because of game-objects. This is nowhere near close to production-ready workflow.

    Why are we still bounded by outdated technology? Why can't you just make new tools for editing scenes of PURE entities?
    Remember MegaCity? It had huge nested game-object hierarchies with LODs (4.5M meshes). And if I'm not mistaken, there wasn't any "Live" conversion process at a time, so it didn't suffer much from it (especially when applying changes on these prefabs, which trigger an update to ENTIRE scene). How the new system will handle it? Right now it seems like an impossible dream (because it really is - conversion has no future).

    Edit: I see that this demo was updated, and they explicitly mention that "prefabs can take a long time to propagate changes", "SubScenes in edit mode are a lot heavier, only edit a few at a time"

    The funny thing is that scene filled with prefabs is being updated in a few seconds, but "baking" on top takes up an entire minute(s) to apply a single change to all of them. Wtf.
    I can't even find an option to disable this anymore (there was LiveLink toggle before).

    Shouldn't ECS be all about creation of massive worlds in a split-second, with ease, without any hitches?
    If you really want to use existing tools from game-objects, wouldn't it be better to REVERSE the problem, and edit entity as game-objects only in "context mode"? (convert from entity > to GO for temporary editing). While having the rest of a scene with pure entities.
    I guess "Prefabs" being bounded to game-objects is the main obstacle there, since it has so many corner cases.

    The only choice there is to make new tools. "Entity-Prefabs" included. Just clone the existing systems and modify them to perfectly fit the new workflow, and make it as fast as possible.
    Instead of piling up shiny new on old garbage.
     
    Last edited: Mar 4, 2023
  17. Quit

    Quit

    Joined:
    Mar 5, 2013
    Posts:
    63
    Recompiling with entities is very slow (or is it 2022.2 in general?). My empty project with the SPECIAL flag enabled (which doesn't reload the domain, etc) takes 5 seconds on average. That's empty project with one script and one change. Don't know what's happening, but I fear getting back to editor from the IDE, cuz it's always stalling.
     
  18. andreyakladov

    andreyakladov

    Joined:
    Nov 11, 2016
    Posts:
    29
    Screenshot 2023-03-29 at 17.12.47.png
    Nothing could be more exciting.