Search Unity

Official DOTS Development Status And Next Milestones - December 2021

Discussion in 'Entity Component System' started by LaurentGibert, Dec 9, 2021.

Thread Status:
Not open for further replies.
  1. Guedez

    Guedez

    Joined:
    Jun 1, 2012
    Posts:
    827
    I second this question, I use that to create 1-1 relationships between entities and game objects where either the entity or the game object can query whom they are linked to.
     
  2. DevViktoria

    DevViktoria

    Joined:
    Apr 6, 2021
    Posts:
    94
    Does this mean we are going to have some visualizations for Data Flow Graphs as well?
     
    MehO likes this.
  3. TWolfram

    TWolfram

    Joined:
    Aug 6, 2017
    Posts:
    75
    I second this; I really loved that demo but it's been more than a year since they've shown it IIRC. I'm planning to use ragdolls in the game I'm working on currently so I'd love to hear an ETA on that.

    I'm assuming Entities 0.50 will release alongside other DOTS packages, so I hope these questions are still relevant to this thread:
    - Any updates for a medium/high-level audio package coming soon?
    - How about visual scripting, any updates on the horizon about that? I feel like visual scripting could potentially relieve us of a lot of boilerplate code writing.
    - Any improvements to writing collision/trigger code? Right now it's about 100 lines of code for what used to be a single line in MBs. I get that DOTS will always be different from MB's when it comes to how to write code, but it's currently definitely way too cumbersome. I've been hoping for some kind of equivalent to Entities.ForEach or something.

    Anyways, glad to see more communication from the DOTS team, I'll be eagerly awaiting the 0.50 release.
     
    deus0 and mariandev like this.
  4. Ashkan_gc

    Ashkan_gc

    Joined:
    Aug 12, 2009
    Posts:
    1,124
    We've used DOTS since 2 years ago and did our pre-production using it and until 0.17 came out things were advancing reasonably well and while not perfect we were ok with doing Cameraa and UI and VFX outside of DOTS and we only needed navigation and animation and navigation is pretty solvable on our own as well.

    Unity's animation team seem to be working on the DOTS version for a good amount of time and you guys effectively stopped updates to none-DOTS things to focus on it.
    Not talking about it at all here made me a bit worried so please share your animation related updates sooner rather than later since this is going to be a big factor for us to choose between a pure DOTS game or not.

    Also I'm a bit confused, from one hand you talk about MegaCity which only can scale to these crazy numbers because it is not hybrid and also about single threaded multiplayer code of the DOTS shooter which doesn't scale on streaming and logic as much and also say hybrid is your focus.

    I understand that hybrid should be a focus since many features are not DOTS ready/native yet but I don't understand how are we supposed to rip the benefits of DOTS with hybrid and I'm specifically talking about perf and scaling benefits because at the end of the day

    Either DOTS is used for game logic related parts and the game can scale and as you said relatively feature complete rendering and animation systems are needed

    or

    DOTS is used for parts which are mostly environment and cosmetic and will be just used for streaming those in and out which doesn't help with scaling the main game logic and we will be limited to the same number of NPCs and objects logic-wise

    Am I getting something wrong?
     
    deus0 likes this.
  5. IgreygooI

    IgreygooI

    Joined:
    Mar 13, 2021
    Posts:
    48
    Questions:
    1. When you mentioned an opt-in way of writing game code that’s compatible with the existing Unity architecture, will the scope of DOTS include other language such as Rust, or it will still strictly include C#:
    The reason is that our team has develop a workflow using Rust being an opt-in way of writing game code via a series of codegen tool while also being fundamental compatible with Unity. We are currently migrating our both C# and HPC# code to Rust, and developing more features in Rust over in C#. We still use C#/HPC#, but only for interoperability purposes(glue code).

    2. Maybe this might be out of the scope of DOTS, but will Unity provide more API(such as higher level binding to Graphics than existing ones) to native plugin by like providing more function pointers via header, or even interface library that could used for linking?
     
    deus0 likes this.
  6. s_schoener

    s_schoener

    Unity Technologies

    Joined:
    Nov 4, 2019
    Posts:
    81
    I'm specifically talking about Hybrid components for conversion. I don't think that the ComponentObject methods were touched at all. Not sure what the future plans for these are, but they haven't been touched.

    Note, we are not talking about the ability to attach game object components to an entity (which I personally believe to be a bad idea anyway). I am talking about hybrid components, which were declared during conversion. There are no concrete plans to support this particular way of interacting with GameObjects.

    All of the relevant APIs for ISystem should be public, and if they are not in 0.50, then that's certainly planned for 1.0. But I believe that's already in 0.50. The concrete nature of the APIs might still change, but there will be support for these operations you name in one way or another.

    On the second question: Clearly ISystem implementations cannot easily access the managed part of the world, but most of the guts live in an unmanaged struct, and you can query that unmanaged part of the world for other systems from the OnUpdate-callback in your ISystem. Essentially, the managed part of the world is just forwarding to the unmanaged part in most cases, so almost all operations are available. In general, we'll do our best to make ISystem not just on-par with SystemBase but hopefully even better (like, you know, burst compile the thing ;)).

    For 0.50, I'd expect the effort to be "deal with some things we have deprecated, but you will most likely not have to rewrite your game", so relatively moderate unless you are using ECS in the most baroque ways. Fundamentally it's still ECS with a lot of the APIs that you know. That said, I can mostly talk to the changes in the core of ECS.

    For the foreseeable future, I'm not aware of any plans to support Rust. C#/HPC# continues to be the focus for DOTS.
     
  7. desertGhost_

    desertGhost_

    Joined:
    Apr 12, 2018
    Posts:
    260
    Good to hear. I am curious to hear what approach Unity would recommend for entities interacting with gameobjects given the hybrid nature of existing DOTS and the plans for DOTS 1.0.

    Given that the scope of DOTS 1.0 appears to be the entities, physics, netcode, and rendering packages what approaches should we leverage to do things like navigation, animation, audio, etc? Low-level experimental navigation APIs? NavmeshAgent? Experimental DOTS Animation package? Playables? Roll your own?

    What is the most performant and best way to connect entities with game objects?
     
    FilmBird and awesomedata like this.
  8. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    I'm curious as to DOTS and ECS in regards to Visual Scripting (and Animation) now that we're looking at a 0.5 and 1.0 release.


    Also, what about streaming floating origin worlds? -- Megacity doesn't cover this use-case, and yet Unreal 5 is built upon it. Any word on environment streaming (especially in the native environment authoring tooling, such as the editor itself?) -- I am looking to use Houdini to build meshes with 64-bit world translations that Unity struggles with -- in particular with particle systems and physics shifting. I would genuinely want this all to be handled natively during authoring such worlds, and all of the hard technology (such as virtual texturing and particle/physics shifting for floating origins) should be better-handled by the engine itself, without input from the user.


    I have to respectfully disagree with this. The tools to create programmable tools are still quite subpar AT BEST. Not every artist who needs to make artist/designer tools is a programmer who knows web development. The value is, people like these can stop making buggy, half-baked tools and simply "build" their UI components together without knowing deep-level object factory generation algorithms, specialized API classes, etc.
    With an ECS-based UI Elements system setup, one would simply define a component (say, a radio button) that behaves in a particular way. Then "stack" this component with various other layers of behavior in a similar way to gameobjects -- but using something akin to my "Dataless Tags" setup to sort out functionality in an easy-to-understand, visual, way.

    The current UI Elements solution (particularly UI Builder) is still a viable one, but it generates lots of garbage files on one's hard drive (that could be better-handled with a better authoring UX to begin with), plus it fails at helping non-programmers / non-webdevs create their own tools, visually and programmatically, without A LOT of effort spent on NOT designing. :(
     
    NotaNaN likes this.
  9. RoughSpaghetti3211

    RoughSpaghetti3211

    Joined:
    Aug 11, 2015
    Posts:
    1,708
    I guess the point i was trying to make is tiny was "pure" and removed the complexity of trying to figure out how to mix gameobject and entities. For me the biggest headache I run into is trying use non DOTS with DOTS. Now I know this might be my own lack understanding but to counter that I dont know of a lot of good example that demonstrate how to mix the two. Maybe the can be taken into consideration when new examples are created.
     
  10. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    Yes, it is possible to search for entities by index. This would be in the "Entities" window in the current com.unity.dots.editor package. Or, coming in 0.50 and 1.0, there will be a built-in DOTS Hierarchy window which will have this (and more) capability.

    To clarify, we are not making any improvements to the Entities Debugger. It will actually be deprecated and removed.
     
  11. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    I assume by "class based system" you mean C# managed objects and not UI Toolkit's CSS-like style class system. If you mean the former (C# managed objects) - actually, if you mean either - there are no plans to change how UI Toolkit fundamentally works or its API for Entities 1.0. Right now, the DOTS teams are focused on delivering a stable platform for ECS in Unity first, while the UI teams are focused on shipping UI Toolkit for all users of Unity (Editor and Runtime).
     
    Krajca, mariandev and optimise like this.
  12. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    Yes, you'll be able to see (and search by) Entity names in the new DOTS Hierarchy window.

    To clarify, by "ECS Inspector" I mean: custom Inspectors for Entity, System, and Component - each of which can be selected like any other asset or Object in Unity. These inspectors are the bare minimum to start being able to inspect what your Entities, Systems and Components are doing while authoring and debugging in the Editor. We will also have additional Editor workflows to make it easier to see what Conversion is doing. However, we're not at the point yet, with Entities 1.0, where we can work on visualizations. But you'll have all the APIs you need to build these yourself if you don't want to wait.

    Funny you should mention this. It won't be a graph-like thing, but we will have a workflow/feature in the Editor to address the "what happened to my Entity?" question. More details closer to the release.
     
    NotaNaN, Krajca, Tony_Max and 4 others like this.
  13. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    Not in Entities 1.0. Later.
     
  14. optimise

    optimise

    Joined:
    Jan 22, 2014
    Posts:
    2,129
    @uDamian Currently at Entities 0.17. The entity u put into Subscene will not no longer have entity name. Is that still the case for Entities at dots 0.5?
     
    elJoel likes this.
  15. DreamingImLatios

    DreamingImLatios

    Joined:
    Jun 3, 2017
    Posts:
    4,266
    Thank you!

    One of my biggest fears is that in a year's time without community feedback, DOTS would accidentally close off a lot of its flexibility and extensibility in favor of streamlining workflows for specific teams and use cases.

    Your replies have put those fears to rest. I'm really looking forward to the next release now! :D
     
    NotaNaN, Krajca, hippocoder and 3 others like this.
  16. optimise

    optimise

    Joined:
    Jan 22, 2014
    Posts:
    2,129
    @uDamian Class based system I mean SystemBase in dots Entities package. Struct based system I mean ISystem in dots Entities package. For UI Toolkit runtime UI API I mean everything at UI Toolkit is just still the same and work the same. What need to change is just make UI Toolkit runtime UI API to struct based instead of current class based to make it compatible with ISystem in dots Entities package. Or maybe I say it in another way that make UI Toolkit runtime UI able to accept by burst and not throwing compile error. I just want it able to compile and work properly at runtime when I put UI Toolkit runtime UI API to update UI inside ISystem on main thread is enough for now. Not need support multithreading if it's too hard to get there.
     
    Last edited: Dec 15, 2021
    Krajca likes this.
  17. optimise

    optimise

    Joined:
    Jan 22, 2014
    Posts:
    2,129
    @s_schoener Ya. I know u are talking about hybrid components. But still if I understand correctly internally hybrid components just wrapper of game object. I would like to tell u what hard problems that I found that need to solve for hybrid components after using it for quite long time.

    1) Hybrid components should work exactly the same just like game object after converted into subscene. Currently particle system will missing some effects after converted to hybrid components. Skinned mesh renderer not support hybrid components that need to fix. And also for UGUI and UI Toolkit runtime UI that needs to able to convert to hybrid components and work just like game object. Currently I put ConvertToClientServerEntity / ConvertToEntity with convert and inject game object conversion mode at UI game object as I can't converted to hybrid components exactly the same properly yet. Another issue is I can't change something to debug at UI after converted to hybrid components as everything is locked after converted entity and u only can inspect the data as read only.
    2) Hybrid components currently have gc issue when updating translation and rotation. Currenly hybrid components related system that doing the update will allocate gc every frame which is really bad and need to solve.
    3) Hybrid components needs to have game object pooling feature by default to solve performance issue. This feature will provide some kind of tooling and APIs. The best use case I believe is particle system that needs to spawn and destroy frequently.
     
    Last edited: Dec 15, 2021
  18. Iron-Warrior

    Iron-Warrior

    Joined:
    Nov 3, 2009
    Posts:
    838
    I did some rough benchmarking awhile ago with (I think?) that software float library and found that arithmetic can be an order of magnitude or two slower than hardware floats. Things like trig and sqrt even moreso, so not sure software floats has much of a future for situations where performance is at least somewhat important. FP performance for basic operations is quite quick in comparison (add/sub are just integer arithmetic, mul/div just add a bitshift), but yea does suffer from other issues as you said.
     
  19. Timboc

    Timboc

    Joined:
    Jun 22, 2015
    Posts:
    238
    Thank you for all your input thus far - super appreciated.
    I have some concerns around ISBs - particularly good patterns of how to use them amongst the ecosystem of hybrid & SystemBase.
    The concern is general but I'll try to give a specific (psuedo) example:
    Code (CSharp):
    1. class MyManagedSystem: SystemBase
    2. {
    3.    public JobHandle someJob;
    4.    ...
    5. }
    6. struct MyNiceISB : ISystemBase
    7. {
    8.    // Some job that wants to depend on job from MyManagedSystem
    9. }
    So, unless I'm missing something, this isn't a pattern we can use? Because any reference to the managed system kills burst of our ISB. I could see how we could move the jobhandle to the ISB and set it from the managed system but then, what if 10 ISBs depend on that job? Is this a situation I should be trying to avoid in the first place?

    Part of what I've felt a bit frustrating with ECS is that although the feature set is limited, there are still many ways I can write things that produce dead-ends - leading to countless refactorings. I hoped this would get better with time but it seems to me that even with 1.0 there will be plenty (actually even more) dead-ends. If the hope is a less frustrating exp for devs new to ECS, I'm worried the experience will actually be even worse.

    This is tricky for me to articulate well so apologies.
    Another example might be trying to write APIs or convenience methods.
    Code (CSharp):
    1. public struct Car
    2. {
    3.     public float SetVelocity(ref EntityManager ..., float value) => { Set<Velocity>(value); Set<Parked>(false); }
    4.     public float SetVelocity(ref SystemState..., float value) => { Set<Velocity>(value); Set<Parked>(false); }
    5. }
    Not a good example, please be generous in thinking of a better one. The point being, this is a trap. Car can not be used or referenced in a future ISB. Ok, so, I know that now... but are we assuming that should have been obviously a bad idea to me from the start?

    So static extension methods for everything? And duplicate all the methods for ref SystemState & EntityManager?
    Side note: Surface area for the duplicate ECS state. & EntityManager. API must be huge - are you using any tricks? Are we all expected to have double the surface area for all of our APIs going forward?

    I am assuming that with 0.5 or 1.0 we'll be able to use NativeContainers in ISBs. ECBs too? What about lambdas? I missed it if somebody already asked.

    In my experience so far, ISBs need to be used as much as possible for the speed, so "you can just continue to use SystemBase" would be a pretty unsatisfying response for me - especially if the whole concept here is to push the hybrid flow.

    Fundamentally, given nothing unmanaged can ever touch managed, the glue is the most important part. Examples that illustrate e.g. how a bursted job in an bursted ISB waits on a bursted job from an SB would be really useful.

    I recognise I may have some esoteric concerns as there doesn't seem to be much chat about these kinds of things. Thank you for your time - I hope the above made some sense.
     
  20. mochenghh

    mochenghh

    Joined:
    Jun 10, 2021
    Posts:
    26
    so first q of 2022,we will meet the 0.50
    or just " get more information" in first Q
     
  21. deus0

    deus0

    Joined:
    May 12, 2015
    Posts:
    256
    So firstly I want to say Wow it's coming :O Christmas came early this year.
    I also want to say thanks to unity's engineers for working on these tools that my life depends on!

    I've been working on an ECS game since 2018! I'm still learning new things. I want to ask some questions, as my code base is 80k lines atm and my game is pure ECS, where I even removed Hybrid Renderer due to the better control with custom render systems. So:

    Will there be much rework this time? Particularly for ScheduleParallel Systems.

    Will there be AudioSource, Camera, Light Source components in ECS (atm I use a shared component data to link to gameobjects and just shadow the data from ECS to GO)

    To clarify, I just need a way to Camera.Render and AudioSource.Play with my data! I don't use realtime lights atm so I probaly don't need this but I know many do.

    If you are depreciating Entities Debugger, are you going to add the Filtering to the Entities Editor (and holy %#@$ I didn't know about this editor until now, it pleases my love of organization)

    On my components, I am using alot of BlitableArrays, Unsafe memory things, will there be a way to display this in the editor?

    Why does it have a GameObject link in the inspector for the entities editor? Are you hinting that I use them? :O

    Will it work with WebGL? This is a huge issue as the original ECS did work with it, and then it stopped, and I really want that sweet webgl build so I can get more users.

    Will I be able to remove even more of the editor, and just ship a pure ECS game? Or will there still be the bloat of all the older packages / Editor stuff that I don't use now.

    I am really looking forward to authoring my entities. And never seeing GO's again!
     
    Mindstyler likes this.
  22. TieSKey

    TieSKey

    Joined:
    Apr 14, 2011
    Posts:
    225
    Currently, there is a limit to how many entities can be named in the editor. Will this limit disappear or at least be increased to a really huge number?

    With the better debugging tooling it might not be necessary anymore but that have got in my way several times (and the error is rather cryptic too)
     
    deus0 likes this.
  23. 5argon

    5argon

    Joined:
    Jun 10, 2013
    Posts:
    1,555
    Wow, can't wait to start blogging about DOTS again! I'm looking forward to continue learning all the new stuff.
     
  24. unity-freestyle

    unity-freestyle

    Joined:
    Aug 26, 2015
    Posts:
    45
    Awesome!
    I really appreciate your blog and it was very helpful to get a better detailed overview on how to use systems and features, such as the conversion pipeline, that currently lack some proper documentation IMO.
     
    NotaNaN, 5argon, deus0 and 2 others like this.
  25. Abbrew

    Abbrew

    Joined:
    Jan 1, 2018
    Posts:
    417
  26. TheOtherMonarch

    TheOtherMonarch

    Joined:
    Jul 28, 2012
    Posts:
    866
    Trig functions etc are also problematic on fixed point. You basically need to use lookup tables and will get low accuracy.

    If you are doing a 2D game and are very careful fixed points would probably be fine. If you start doing anything with multiplication you probably need to go to a 64-bit fixed point especially if you have slow moving units/effects. Remember 0.001 * 0.0001 is an instant underflow if you use any kind of reasonable scaling factor. You can literally get huge cumulative errors.

    In a modern 3D game fixed points are just not practical at all. If you are doing movement via integration, you will basically instantly overflow or underflow. You basically end up with a jittery bug mess with weird singularities and overflow errors. Just running a benchmark is not that same as the hell of dealing with fixed points for a modern 3D game. I wish people would stop suggesting fixed points because it is just not workable for a complex 3D game.

    So basically, you either switch to C++ and try to get deterministic floats that way, and you have a lot of options with C++, or you need to use software floats. Whatever the performance of software floats is it should be enough for a classic lock-step sim on a modern CPU. What we worry about is it may not be enough when you start running a lock-step sim with physics that is more advanced than classics RTS games + rewinding. Rewinding allows you to have a more responsive game because you can have client-side prediction but decreases your sim performance by at least factor of 60. Luckily it will not affect your graphics performance at all if you keep it in a separate world or use classic Unity.

    Our game will have a max unit count of 144 per player so we will still be less then classic RTS games with unit counts of 1000+ per player. Network bandwidth has increase to the point where we maybe could use a nondeterministic sim but, in that case, we would have huge bandwidth requirements for a video game.
     
    Last edited: Dec 15, 2021
    FrancoRet likes this.
  27. s_schoener

    s_schoener

    Unity Technologies

    Joined:
    Nov 4, 2019
    Posts:
    81
    The best way would be to store all of this in an unmanaged system itself that all other such systems access. Unmanaged systems can still access each other, and that is still Burst compatible.

    While I cannot guarantee anything, I'd personally be interested to hear about the deadends you are running into. I think a big difference between ECS and GameObjects is that ECS is more opinionated than the former, so I can imagine that it can be frustrating to try to make it do a thing that wasn't really intended for it. Still, we're mostly trying to allow expert users to use ECS how they'd like it, so any particular paint points are appreciated.

    I think you are underestimating how much stuff is actually unmanaged internally :stuck-out-tongue: -- EntityManager for example is completely unmanaged, meaning that your example above would just work (...in a version of the package that you don't have yet, that is ;)).

    We're generally aiming to have all of this working with unmanaged systems, yes. This is not all part of 0.50 yet, but ECBs, Lambdas, and NativeContainers are all planned to support unmanaged systems. Some of that work is mostly done (ECB), other parts are still in flight and getting shaped (lambdas, native containers - the dispose sentinel is the problem here). I think it is pretty clear to say that we don't want to tell people "just use SystemBase instead," though we're not 100% there yet.

    While I cannot say what plans there are for audio, camera, and lights (I simply don't know!) I can tell you that instead of using a shared component, you can also put these references on managed components :).
    I am not sure that the latest Hybrid Renderer works with WebGL (as you already noted), but then again you are not using that one anyway. So I'm not sure I get what exactly you are asking about?

    IIRC it is not part of 0.50.
     
    craftsmanbeck, bb8_1, JesOb and 4 others like this.
  28. desertGhost_

    desertGhost_

    Joined:
    Apr 12, 2018
    Posts:
    260
    In general when linking entities and game objects is it preferable to use managed component datas over EntityManager.AddComponentObject?

    If I have a MonoBehaviour
    public sealed class MyComponent : MonoBehaviour {...}
    , is it better to do something like

    Code (CSharp):
    1.     public sealed class LinkedMyComponent : IComponentData, System.IEquatable<LinkedMyComponent>
    2.     {
    3.         public MyComponent Value;
    4.  
    5.         public bool Equals(LinkedMyComponent other)
    6.         {
    7.             return other != null && Value == other.Value;
    8.         }
    9.  
    10.         public override bool Equals(object obj)
    11.         {
    12.             if (obj is LinkedMyComponent other)
    13.             {
    14.                 return Equals(other);
    15.             }
    16.  
    17.             return false;
    18.         }
    19.  
    20.         public override int GetHashCode()
    21.         {
    22.             return Value == null ? 0 : Value.GetHashCode();
    23.         }
    24.     }
    over
    entityManager.AddComponentObject(entity, myComponent);
    ?
     
    alexandre-fiset likes this.
  29. alexandre-fiset

    alexandre-fiset

    Joined:
    Mar 19, 2012
    Posts:
    715
    The problem we've run into with IComponentData classes is that they could break our build depending on the order and content of its fields. For instance, having a single referecence to a TMPro UGUI in a IComponentData class caused our build to crash. It was so weird to debug that we never touched these classes again.

    The best way we found was to store these refs in a Monobehaviour and AddComponentObject. Then read/write to these things before or after simulation in order to leave the simulation as pure ECS as possible.

    I also wonder what Unity suggests on that matter. IComponentData classes or Component Objects? And why?
     
  30. deus0

    deus0

    Joined:
    May 12, 2015
    Posts:
    256
    Hey, thank you for replying to some of my questions! My first question wasn't asking for a different work around, I just (and others) want a way to use the same functionality inside ECS without any GO references at all! This has been brought up accross several forum posts. The audio package wasn't an ECS one but a new tool for sound engineers to use. What some ECS enthusiasts expected was to be able to use Camera and AudioSource inside jobs for improved speeds.

    I use mostly ScheduleParallel (SystemBases) for the highest speed. The only exception is with access of Mesh and Material classes. Which is another shame. So I would also request we be able to use Graphics.Render inside jobs! Possibly store our own pointers to the GPU and trigger it this way!

    So I believe WebGL builds break because of entities package, I recall doing extensive testing and when we added the package it broke the default URP example. I am just wondering if 0.5 has fixed this. But I am also wondering if our Parallel jobs systems will work with WebGL as well.
     
    Last edited: Dec 15, 2021
    Ferb likes this.
  31. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    If by "Entities Editor" you mean the custom Inspector showing a selected Entity's Components, and by "Filtering" you mean filtering the fields/components themselves (in the Inspector), then yes, this will be possible.

    The GameObject link is for when you use Conversion (Editor LiveLink with SubScenes). If the Entity you have selected was created from the conversion of a GameObject, that field will be the link to its "authoring GameObject".
     
    mariandev, JesOb and deus0 like this.
  32. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    I think the limit has been increased, but as far as I know, that limit (of unique names) is still there. It is something you can increase yourself if you start modifying the source of Entities Package, but I agree it's not ideal.
     
  33. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    It should keep its name, as long as you have Editor Conversion/LiveLink enabled. We might have it in 1.0 that names will persist (in Editor) even without LiveLink enabled, but no promises. Just saying we're aware of the problem.
     
  34. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    I understand. We did experiment with making UI Toolkit more DOTS-compatible. It was not easy going. And as I said before, for the Entities 1.0 time frame, both teams are now focused on getting both UI and Entities to a stable, useful, place. Post 1.0, we'll probably explore deeper integrations.

    That said, it should be doable to keep your entire UI data model in struct/unmanaged form, update it as needed in various jobs, and just have a single managed system that goes through and syncs all UI elements.
     
  35. MechaWolf99

    MechaWolf99

    Joined:
    Aug 22, 2017
    Posts:
    294
    Thank you for the update.
    I am a bit sad to see that Entities is going the Hybrid rout as it feels like it will be very messy. Though I understand that it makes it much more accessible and 'completable' than supporting full DOTS out of the box.

    You keep referring to Entities 1.0, this to me implies there are (potentially) much larger plans after 1.0.
    Are you able to give any insight or hints in to the direction or future things we could see from Entities after 1.0? I'm not asking for specifics, more just broad vision/direction longer term. Though I understand if you are not able to share at this time.
     
    JesOb, SamOld and deus0 like this.
  36. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    Can't speak to the rest of your post too much, but I can say that the Entities Inspector won't be read-only in the Editor, in Playmode starting in 0.50 onwards.
     
    KarimTA, craftsmanbeck, MehO and 19 others like this.
  37. deus0

    deus0

    Joined:
    May 12, 2015
    Posts:
    256
    Will there be a way to disable this functionality for those of us not using the conversion workflow in a particular project? That is great news on filtering of components! I understand many of my questions have no answers but, any possibility of File Access (IO) in jobs in the next 5 years? I rather ECS be more complete before deeper integrations as we can use the tool better then using a half finished one with integrations, that being said I guess the UnityEngine code itself limits some of the core stuff (Cameras/AudioSource) from being used in jobs, and any engine part rewrites will take years. 'won't be read-only in the Editor' Awesome!! my other question I forgot to ask. Amazing. I also want to add in, having Cameras and AudioSources in ECS would let me get the advantage of them, for both my portals and thousands of sounds everywhere. I assumed this was the end goal of having less limitations from architecture! It's exciting to push the machines we have to the limits.
    Edit: After much testing, with all the editor versions available, I figured out that LTS now works with entities! I last tested several months ago, so it's good to see that it works on a version of unity now.
     
    Last edited: Dec 16, 2021
  38. Timboc

    Timboc

    Joined:
    Jun 22, 2015
    Posts:
    238
    This sounds like great news, thank you. Particularly around nativecontainers & lambdas recognised as key ingredients and being well on their way. I am pretty surprised EntityManager is now a struct - curious how that migrates for people!

    Re dead-ends, I actually think ECS being opinionated is great - my preference is generally for that to be pushed further wherever possible.
    A lot of things I've run into are performance related - too many systems, too many jobs, having some managed references, having complex dependency chains, limitations with generics, where to store shared data between systems, what systems should know about each other etc etc. These lead me to refactoring in quite a major way each time. Some is just upskilling in DOD but some is working around the glue I mentioned - e.g. finding the combination of setup that's faster.
    I know it's been mentioned before that the aim is to make it fast enough so you don't need to worry about e.g. number of systems. If this does end up coming to pass then that will certainly make a big difference - making more variety of patterns performant. I guess I'll just have to wait and see what it's like when it all arrives.
    Thanks again for all the hard work - excited to try out the next release.
     
    deus0 likes this.
  39. optimise

    optimise

    Joined:
    Jan 22, 2014
    Posts:
    2,129
    @uDamian I see. The main reason I request this feature is I really want a entity & system visualization tool that able to have bird eye for all my entities so that I can see all the components of the entities and data relationship that which component references to which entity easily. Furthermore, there's toggle to add system into the visualization that which system is access which data. The tool will have some kind of smart filtering to avoid display too systems at once and make it not readable. I'm not really sure if there are even better way to visualize this other than graph-like.
     
    deus0 likes this.
  40. optimise

    optimise

    Joined:
    Jan 22, 2014
    Posts:
    2,129
    @LaurentGibert I still think Entities 1.0 needs to release as soon as possible as preview package for early adopter to battle test so any bugs and usability issues can be solved and improved early. From what I understand, the transition from Entities 0.5 to Entities 1.0 will have massive breaking API changes. It will become super hard for me to upgrade to Entities 1.0 if u still plan to release at 2022 LTS as my dots project will implement a lot of things at that time.
     
    deus0 likes this.
  41. TieSKey

    TieSKey

    Joined:
    Apr 14, 2011
    Posts:
    225
    I second this, specially when it seems 0.5 wont be compatible with unity 2022 at all.
    So any DOTS heavy project wanting and whiling to migrate to 1.0 would need to also upgrade to 2022 forcing a double transition/update.

    Being able to work on early 2022 versions would spread the effort along several months. Even if that total effort ends up being bigger for us because of changes in the dots packages during that time, I think it would be still worth it.
     
    deus0 likes this.
  42. WAYNGames

    WAYNGames

    Joined:
    Mar 16, 2019
    Posts:
    992
    Thanks you for this early (referring to the good news) or late (referring to the .50 release) christmas gift.

    Good holidays to the whole unity team and thanks you for your hard work over the year.

    I'm eager to play with that new release !
     
    Ronsu900, deus0, Krajca and 1 other person like this.
  43. Mindstyler

    Mindstyler

    Joined:
    Aug 29, 2017
    Posts:
    248
    0.5 WILL be compatible with 2022 relatively shortly after the release for 2020 tls. they have stated this. so you will be able to spread your transition over a few months.
     
    deus0 likes this.
  44. TheOtherMonarch

    TheOtherMonarch

    Joined:
    Jul 28, 2012
    Posts:
    866
    Where is this coming from? What I read is 0.5 would support 2020 LTS and later 2021 LTS. 1.0 would be released with 2022 LTS. So far we only know that LTS versions will be supported. 0.5 only being released to hold us over till 1.0. That release schedule seems reasonable to me.
     
    Last edited: Dec 16, 2021
  45. TieSKey

    TieSKey

    Joined:
    Apr 14, 2011
    Posts:
    225
    I'll be more than glad if 0.5 works with 2022 but they have dodged (or missed) my question so far.
     
    deus0 likes this.
  46. tertle

    tertle

    Joined:
    Jan 25, 2011
    Posts:
    3,761
    Does the original post not answer your question with what they're targeting?

    > The first is a set of experimental packages updated to version 0.50, compatible with Unity 2020 LTS at first and targeting compatibility with the upcoming Unity 2021 LTS later in the coming year
     
    deus0 and SamOld like this.
  47. TieSKey

    TieSKey

    Joined:
    Apr 14, 2011
    Posts:
    225
    No, it doesn't.

    Edit: I mean, yes it implies no support for 2022 but some people think it will so a clarification from Unity staff would help settle the matter.

    2022 introduces breaking changes with regards to 0.17 hybrid rendering, ergo any package supporting 2021 and 2022 would need to account for both "paths" which might be possible but I think unlikely.
     
    Last edited: Dec 17, 2021
  48. mikaelK

    mikaelK

    Joined:
    Oct 2, 2013
    Posts:
    284
    Can you people at Unity give more examples on how to use the audio graph package more deeply?

    It would be really nice to have some examples on how to mix two or more audio clips, so they sound like they are coming from some location and blended together. Some super simple example. The play clip example wasn't enough to get me started using it and I don't want to use whole week end blind testing an api.
     
    Tony_Max likes this.
  49. twaananen

    twaananen

    Joined:
    Jul 24, 2017
    Posts:
    23
    I'd also like to know about DOTS Audio, which was mentioned at least in the Unite 2019 DSPGraph talk as being in development. Is DSPGraph and DOTS Audio still being worked on in tandem with the core DOTS packages? Will those be updated or new preview versions released with 0.5 and 1.0?
     
  50. Enzi

    Enzi

    Joined:
    Jan 28, 2013
    Posts:
    966
    It seems I'm the only one bringing up this argument here but when such a simple feature takes such an enormous amount of time and still is left with 1 year of dev work because of edge cases, I've to ask: Are you sure you're on the right track? It could very much end up being a feature that will never be good enough or really buggy with weird performance characteristics. To me it seems like patchwork. Integrating something that's clearly not meant to be.

    As the answers were also, that this feature will not play nice with SIMD. Honestly, what's the point? I very much feel the point has been lost completely what this feature should be. I could almost assure you that 99% here only need an enable/disable state for no-data components/tags! Not both, as in enable/disable components with a bunch of data!

    You try to solve too much at once here and the users and early adopters are paying for it because such an integral part of Entities is delayed over and over again which is beyond frustrating at this point.

    Make some well informed decision about it. It may seem entitled but I can hardly accept that this feature is being delayed yet another year! Not when the point has been missed that much. Split the problem apart and have something ready for 0.5. As Joachim mentioned some form of working state has already been programmed, so make efforts that you release some part of it, namely, supporting the enable/disable state for tags (no data IComps) only.

    TL;DR: Release a smaller subset of the enable/disable feature that only works with tags or IComps with no data, sooner than the full feature later.
     
    Last edited: Dec 19, 2021
Thread Status:
Not open for further replies.