Search Unity

  1. Unity 6 Preview is now available. To find out what's new, have a look at our Unity 6 Preview blog post.
    Dismiss Notice
  2. Unity is excited to announce that we will be collaborating with TheXPlace for a summer game jam from June 13 - June 19. Learn more.
    Dismiss Notice

Official DOTS development status and next milestones - May 2024

Discussion in 'Entity Component System' started by ashley_unity, May 8, 2024.

  1. ashley_unity

    ashley_unity

    Unity Technologies

    Joined:
    Dec 18, 2016
    Posts:
    26
    Hello, all – the DOTS team is here to share our next DOTS roadmap update!


    What is DOTS?

    Unity's Data-Oriented Tech Stack (DOTS) is a combination of technologies that work together to deliver a data-oriented approach to coding. Our goal with DOTS is to empower creators to build more ambitious games with Unity and serve their needs in the production of complex multiplayer, crossplay, and open-world games.

    DOTS consists of several packages based on the Entity Component System (ECS) architecture. It also includes the Burst compiler and the C# Job System, which can be used in any Unity project regardless of whether ECS is being used.

    In June 2023, we celebrated the Entities package officially entering Released status with Entities 1.0, ensuring support for production on projects using the 2022 LTS. More recently this March, we released Entities 1.2, compatible with the 2022 LTS.

    If you’re looking to get started with DOTS (or just need a refresher), we recommend trying our latest Unity Learn tutorial, Basics of DOTS: Jobs and Entities. We've also created a full list of all our DOTS tutorials, sample projects, studio case studies, and more community resources over on the Unity Blog: Start learning data-oriented design in Unity with these resources.


    What's new since the 1.2 release?

    Since hitting release status for Entities, we’ve been keeping a close eye on community feedback in order to improve package stability, resolve bugs, and address high user pain issues. A new set of these improvements are available in the Entities 1.2 package and can be viewed in our changelog. Here's a recap of the most notable updates:
    • There is now serialization support for UnityObjectRef<> which enables unmanaged references to Unity assets. For example, instead of a Texture on a managed IComponentData, you can have a UnityObjectRef<Texture> on an unmanaged IComponentData.
    • There are new Type templates available through the Create menu, including IComponentData, ISystem, IJobEntity and Baker types.
    • As we work towards our efforts to consolidate entities and game object workflows, we’ve changed the way we are storing entities in preparation for future work. Entity IDs are now globally unique and can be moved efficiently from one entity's world to another. This will not impact ECS workflows in Unity 6, with the exception that it disambiguates debugging so you always get the exact entity in your debugger.
    • Several fixes have been applied to the entities hierarchy window:
      • Selecting entities and systems within the hierarchy works again.
      • We’ve fixed an invalid range check that was failing after removing entities from the hierarchy view in perfectly valid use cases.
      • We’ve fixed the entities hierarchy from throwing exceptions when entities were destroyed.
      • The entities hierarchy now removes all nodes of a scene and subscenes when the scene is unloaded.
      • An exception is no longer thrown when entering a prefab from the Entities Hierarchy.
    • Various performance improvements for baking have landed, along with significant performance improvements when creating archetypes and entity queries in worlds with a large number of existing types. Performance improvements have also been made for LocalToWorld systems and non-dirty hierarchies.
    • We’ve fixed an issue where an EntityQuery using WithNone<T> on an enableable component wasn’t inserting a necessary job dependency.
    • EntityQuery singleton methods now correctly handle cases where the query contains enableable components.
    • Several memory leak issues, such as those affecting world deserialization and content delivery, have been fixed.
    • A fix has been added for breakpoints in jobs defined in systems with System.API.
    • In preparation for efforts on our roadmap, know that Entity IDs are now globally unique, and you can now move them efficiently from one Entity’s world to another. This does not impact ECS workflows, but it does disambiguate debugging by always showing exact entities.
    There have also been recent minor updates to the other DOTS packages, like improved ways to interact with and modify colliders at runtime with Unity Physics. Multiplayer-specific updates have been outlined over on our May 2024 Multiplayer Update. For more details across all DOTS packages, please check out the detailed changelogs for each below:
    Lastly, all of the recent benefits (and 50+ fixes) of ECS delivered with the 2022 LTS / ECS 1.1 / ECS 1.2 are now available in the just-released Unity 6 Preview.


    New learning resources and DOTS sample project

    We released our new exciting Megacity Metro sample in March, which focuses on creating multi-platform multiplayer games with support for mobile devices and cross-play. It serves as a guide for creating a competitive action game with more than 100+ concurrent players, demonstrating the use of DOTS, Netcode for Entities, Physics, Rendering, and Unity Gaming Services. You can review our live overview session from GDC 2024 here or replay our recent webinar to catch a deeper breakdown of the sample and how to kickstart your next ambitious multiplayer title in Unity 2022 LTS.

    Speaking of GDC 2024, don't miss our other DOTS-related session from the event – Improving performance with DOTS baking – and the DOTS updates we announced in the official Unity roadmap presentation (specifics shared later in this post within the roadmap section).

    In addition to Megacity Metro, we've also posted new intro DOTS tutorials and hosted several virtual workshops (like How to Convert a Game to DOTS) for those looking to get started with ECS. Browse our latest DOTS resource roundup for the full list of learning materials, from educational video tutorials to inspiring customer stories that’ll help you gain practical insights and guidance so you can hit the ground running with DOTS.

    Additionally, if your studio seeks to invest in more hands-on experience working with Jobs and ECS, we have officially launched our live DOTS Fundamentals Course through Unity Professional Training.

    For the next batch of learning resources, we're preparing new content targeted for Unity 6. More details about this effort will be shared at Unite 2024, keep an eye out for updates!


    Grateful for Your Feedback

    We've been receiving amazing feedback from the community both online and at events like GDC 2024. Know that we are carefully reviewing your input as always for consideration towards our roadmap. The current predominant themes we've been hearing from you are continued needs for ECS-based systems like Animation, updated and more comprehensive learning resources, and ease-of-use improvements for the ECS user experience.

    Thanks as always for looping us in on your needs as you work with DOTS, keep the feedback coming!

    As always, the best way to ensure your feedback is heard is by submitting and voting on ideas within our public roadmap page. Each card on the page can be clicked on to see details and voting options, and all feedback shared here is directly routed to the proper product teams.



    Roadmap

    We continue to expect an increasing volume of feedback as creators leverage ECS with Unity 2022 LTS. Our roadmap remains stable and on-track for the coming year as we continue to invest in the following areas:

    1. Consolidation of ECS workflows:

    We’re still heavily focused on understanding and addressing feedback from users adopting ECS in production. Based on the feedback that we’ve received so far, we'll be focused on the following:
    • Unification of Entities and GameObjects:
      In past forum updates, we've mentioned our efforts to consolidate ECS workflows and we just revealed more details about this at GDC 2024. If you haven't caught the news already from the Unity Roadmap for Unity 6 and beyond presentation, we're bringing GameObjects and Entities closer together to deliver data-oriented performance to all Unity projects. Editor authoring workflows will be able to leverage the power of ECS to support the authoring functionality and runtime complexity that many projects need today. It will also become easier for you to introduce targeted ECS solutions within your GameObject-based projects to tackle specific performance issues. Importantly, many users will be able to enjoy performance benefits of ECS without having to directly work with complex ECS workflows, unless they need to. Our primary milestones for this work involve the following:
      1. At its core, every GameObject in your project will exist as an Entity to simplify the manipulation of project data through both architectures.

      2. GameObject and Entity transformation APIs and data structures will be aligned to boost synchronization performance.

      3. Scene and build workflows will be unified to provide a streamlined and cohesive experience regardless of which system you use to manipulate project data.
    The consolidation of Entities and GameObjects will arrive in a future version of Unity, after the release of Unity 6.​
    • Enabling open-world game creation (ECS Animation and Worldbuilding):
      The authoring workflow performance benefits offered by the consolidation of Entities and GameObjects is allowing us to create improved ECS-based reworks of the Editor's Animation and Worldbuilding systems. These new systems enable us to deliver more dynamic and scalable editor workflows, along with unprecedented complexity at runtime. You'll be able to have many more and higher-complexity characters on-screen along with support for large open worlds by default in your projects. More updates on this work will be shared in the future, so be sure to keep an eye on the Animation and Worldbuilding forums.

    • Deprecation of Aspects and Entities.ForEach:
      Entities.ForEach was an API that helped many new users quickly take advantage of the power of burst and jobs to iterate over Entities quickly. As time went on, we introduced new APIs that required less code-gen (and thus less impact on compile time) and we heard from users that they largely preferred the structure that IJobEntity and IJobChunk gave them when organizing their code. In order to consolidate our API and improve iteration time, we have decided to remove Entities.ForEach in a future release of Entities and focus on other APIs. The two replacement APIs for Entities.ForEach in the future are IJobEntity and Idiomatic ForEach.

      Aspects provide an abstraction over component data inside of ECS. The aim was to provide simpler APIs that involved a large number of individual components. The long term plan was for Aspects to be used in helper methods to manipulate component data in a simpler, safer, and more stable manner. However, changes to our Transform system led Aspects to become less relevant and a growing cost in both complexity and compilation time as they extended to support additional ECS features like Enableable Components, SystemAPI.Query, and others.

      Both Entities.ForEach and Aspects will remain supported in Unity 6, and we're removing their use both internally and in APIs in a future release.

    • ECS Character Controller:
      We are continuing to prepare the official production-ready release of the ECS Character Controller package. You'll be able to use this package to easily add an efficient and highly-customizable character controller solution for ECS, and it can be used with the Unity Physics or Havok Physics for Unity packages.

    • ECS Vehicle Controller:
      We are also working on a robust controller for vehicles, enabling creators to easily build low-to-medium realism vehicles in games built with ECS. We'll share more details in future roadmap updates.
    2. Consolidation of physics workflows:
    We've previously shared news that we are working on a unified authoring workflow that will allow creators to change their physics backend via the Project Settings. This work is still in progress.

    We're also working on a new update to the broadphase. You'll be able to change it to operate incrementally using the PhysicsStepAuthoring component (see parameters Incremental Dynamic Broadphase and Incremental Static Broadphase), and the PhysicsStep Entities components. When the feature is enabled, the bounding volume hierarchy inside the broadphase – used for spatial acceleration during collision detection and for collider queries such as ray and collider casts – is no longer built from scratch every frame, but incrementally updated from one frame to the next. This can lead to drastic performance improvements for scenes with large numbers of rigid bodies of which only a very small subset changes between frames. Changes to rigid body transformations or colliders are rare. This feature can be enabled for dynamic bodies and static bodies separately, which makes it applicable to large and mostly static worlds with massive numbers of static rigid bodies and a reasonable number of dynamic bodies. By default, this feature is disabled.

    Also coming up for physics is a new Collider.BakeTransform function that provides the ability to arbitrarily scale or otherwise transform any collider at runtime efficiently. There will also be a new CompoundCollider.Update function that will allow modifying the shape or transformation of child colliders within a compound collider without having to recreate the entire compound collider from scratch. This will greatly reduce computation time for these dynamic collider cases. Additionally, spring and damping parameters for motors are now supported for custom components through baking, and in the Unity Physics API and custom components. This allows you to tweak how a motor moves to reach its target. Use damping to adjust how much overshoot a motor may have when approaching a target, and use the spring parameter to adjust how bouncy it is.

    As part of streamlining our physics workflows, we are also considering the deprecation of Unity Cloth in a future version of Unity. If your studio/company is using Cloth, please let us know in the comments so we can get in touch about your experience with the feature. In general, be sure to visit our Physics forum for any physics-related questions or feedback you'd like to discuss.


    3. Enabling cross-play multiplayer game creation:
    With the release of the new DOTS/Multiplayer demo project Megacity Metro, extensive Netcode updates, and the expanded Multiplayer tooling kit, we've been highly focused on providing creators with efficient out-of-the-box support for a variety of multiplayer genres. You can see the full details of what we've been up to on the Multiplayer side – and what's next for our multiplayer roadmap – in our May 2024 Multiplayer Update.


    4. Improve parallel scheduling and configuration:
    In the current version of DOTS, all systems run on the main thread and rely on those systems to schedule jobs to enable parallelism. We’re investigating out-of-the-box parallelism of DOTS by enabling systems to run in parallel, whether or not they schedule jobs internally. We’re also investigating removing unnecessary dependencies between jobs coming from ECS systems which previously required manual intervention. Additionally, the job system is missing intuitive configuration controls needed for adjusting how jobs are run to best enable performance for individual game needs. We’re working on expanding the priority and control of how jobs run to prevent common issues users see, such as unintentionally waiting on long-running jobs on the main thread.


    5. Profiler enhancements:
    The Unity Profiler is a tool you can use to get performance information about your application. You can connect it to devices (on your network or connected to your machine) to measure how your application runs on your intended release platform. A new view is in progress that will help you to understand where your game is waiting, how job dependencies interact in the Job System, and the flow of your game’s data between ECS systems and jobs when using Entities.


    6. Improve Entities Graphics performance:
    Another initiative we are looking at is the support of DOTS deformation in order to provide a mesh deformation pipeline that is performant and scalable - that works on any platform with GPU compute capability supported in DOTS. We’re currently working on improving the GPU performance, as well as the current workflow, for a better and more seamless integration into the engine/SRPs. The next versions will also bring broader material support and URP support for Motion vectors.


    7. New education content:
    We’re working on an extensive e-book that will explain the benefits of DOTS and provide a high-level overview of its features. Our goal with this guide is to help creators gain a foundational understanding of ECS before diving into our samples and tutorials. A new series of Unity Physics samples structured around real-world use cases are also in development. Lastly, we’re working on a new DOTS game sample where two spaceship factions battle for ultimate domination. This sample will showcase large-scale simulation of many simple entities that have relationships between each other.


    Our public roadmap page has been updated to reflect recent changes and what we plan to deliver next.


    See you at our upcoming events!

    Coming up on May 15 2024: A free online webinar that reviews the Megacity Metro sample project and demonstrates important features of Netcode for Entities, Multiplayer Play Mode, and more. Register here.

    Also, Unite 2024 has just been announced! We hope to see you at the biggest Unity event of the year, happening this September 18–20 in Barcelona. We're preparing to share new updates and resources targeted for Unity 6 at this event, so keep an eye on this page for more details on what to expect and how to attend.


    Thank you!

    We're excited to hear more from you as you learn and work with ECS! Keep us posted on your ECS creations, questions, and thoughts here in this thread / forum, the DOTS roadmap portal, or over on the DOTS section of Unity's Official Discord. Until next time!


    - Ashley
     
    Last edited: May 8, 2024
  2. DreamingImLatios

    DreamingImLatios

    Joined:
    Jun 3, 2017
    Posts:
    4,301
    I'm going to raise a warning here! IAspect is a powerful tool for third-party package developers to provide a simplified view of otherwise complex sets of components. If you do not have a replacement for this, especially for idiomatic foreach and IJobEntity, then you are only going to make the already steep learning curve to ECS even steeper.

    I have other doubts across this announcement, but I need more technical details before I can judge if they are truly a concern.
     
  3. TheOtherMonarch

    TheOtherMonarch

    Joined:
    Jul 28, 2012
    Posts:
    888
    This sounds great. It ticks a lot of boxes for me very excited for the ECS 2.0 release.
     
    pm007 likes this.
  4. Enzi

    Enzi

    Joined:
    Jan 28, 2013
    Posts:
    982
    Thanks for the update! Sounds great! Looking forward to a lot of these things.
     
  5. topher_r

    topher_r

    Unity Technologies

    Joined:
    Jun 14, 2019
    Posts:
    39
    IJobEntity and idiomatic foreach aren't going anywhere
     
    elliotc-unity likes this.
  6. samanjimbo

    samanjimbo

    Joined:
    Feb 13, 2022
    Posts:
    2
    sorry. but I think he meant the aspects.
     
    laurentlavigne likes this.
  7. Occuros

    Occuros

    Joined:
    Sep 4, 2018
    Posts:
    305
    That is not what @DreamingImLatios meant. Read it again, its about handling the complexity of third party crates in an elegant way.
     
    laurentlavigne likes this.
  8. topher_r

    topher_r

    Unity Technologies

    Joined:
    Jun 14, 2019
    Posts:
    39
    Ah yeah, I see what they mean now
     
  9. topher_r

    topher_r

    Unity Technologies

    Joined:
    Jun 14, 2019
    Posts:
    39
    I think we definitely want a way to specify a kind of 'meta' type for queries and iteration. But Aspects ended up trying to do way too much, and the impact on iteration time through a very large amount of source-gen was just not going to work.

    Unfortunately, this means that solving the real problem (type associations) requires going back to the drawing board in order to do it in a way that wouldn't require the same level of expensive source-gen, which in turn means it wasn't something we could just easily fix in place. The path to cheap, but useful, source-gen usage requires particular approaches to the API to get right.
     
    daniel-holz and Spy-Master like this.
  10. TheOtherMonarch

    TheOtherMonarch

    Joined:
    Jul 28, 2012
    Posts:
    888
    I am not using Latinos framework so I cannot speak to the impact related to that. In my own code, I did not find aspects to be useful. Something that works more like an interface would be very useful but that is not what aspects are.
     
    Last edited: May 8, 2024
  11. DreamersINC

    DreamersINC

    Joined:
    Mar 4, 2015
    Posts:
    133
    I am with DreamingImLatios here. Removal of Aspect without a equal replacement breaks my entire project and basically takes me back to Entities .17 code. There is no simple way to blackboard or handle optional components with ECS at this time. I am able to all my AI Planning in a single aspect instead of having job for every single state to be scored. Also the Optional Tag simplifies the entity creation process as I don't have to track what component each NPC has. No need hascomponent checks or componentLookup checks. If this change goes thru, whatever last version with Aspects support will be my stopping point with Entities.
     
    Last edited: May 8, 2024
  12. jivalenzuela

    jivalenzuela

    Unity Technologies

    Joined:
    Dec 4, 2019
    Posts:
    83
    Aspects will remain for the entirety of the Entities 1.x line. We don't want to pull the rug out from anyone using it currently, just signal that we don't intend to carry it forward to the next major release.

    There's a lot I like about Aspects, particularly as you say the simplicity of wrapping up optional components without resorting to OOP, and hopefully we'll come up with an alternative that captures the best elements without requiring either the remaining engineering investment or iteration time cost that make Aspect support difficult.

    Lastly since Aspects support is codegen based, it's hopefully straightforward to replace and even conceivable someone could support it as an auxiliary library (although I should caveat I haven't actually seriously looked into the latter).
     
  13. Saniell

    Saniell

    Joined:
    Oct 24, 2015
    Posts:
    208
    I would really appreciate if you expanded a bit on this point. Currently I have this potential problem where I schedule jobs that may run across frames (pathfinding), in worst case leading to stall if main thread needs new job to run. Which is why I'm very curious if new controls would allow to limit worker range or perhaps even take advantage of "e/p cores" on some hardware?
     
  14. saskenergy

    saskenergy

    Joined:
    Nov 24, 2018
    Posts:
    34
    I'm curious what approach Unity is taking here for large open worlds. If I recall on a previous Dev Blitz, there was staff that replied that Unity was taking a new implementation that is not double precision.

    I'm mostly curious for the multiplayer side of things as doubling precision would increase bandwidth usage but origin shifting is a whole can of worms in of itself.
     
  15. Yoraiz0r

    Yoraiz0r

    Joined:
    Apr 26, 2015
    Posts:
    91
    Incredible summary and planning!

    I have to say I am excited for the future of DOTS, having given it a few small attempts so far across 0.17, 0.5 and 1.1

    I have a few questions!
    1. I'd love to see a more extensive sample that makes ECS Character Controller/Rival work with DOTS Netcode in the best way possible, with animations being usable as they are (even if its a UnityObjectRef<Animator> based approach). Right now the ECS Character Controller documentation lightly lists what you should do for networking and there is a 1.1.0 sample available, but I'd love to see something targeting more features with it, in the likes of Megacity (though admittedly with lightweight assets so it doesn't consume gigabytes to inspect), is there any plan like this?
    2. With the unification of Entities and Gameobjects, what's the coming future of the Transform component? will we finally be able to have gameobjects without a hierarchial Transform? As in, positionless managers on the gameobject side?
    3. In regards to Entities Graphics, are there any plans to allow swapping visible graphics between multiple client worlds on a single editor? I recall this being worked on in 2022, but have heard no updates since. I assume this has been taken over by Multiplayer Play Mode, but I don't know how compatible MPPM is with DOTS's code generation and burst compilation. Are DOTS & MPPM being checked together? Any warnings or workflow recommendations?

    Also, I'd love to see the cloth component get deprecated! :D
     
  16. Endlesser

    Endlesser

    Joined:
    Nov 11, 2015
    Posts:
    90
    Is GPU Occlusion Culling going to work alongside with DOTS Graphics? if not, what's the replacement?
     
    desertGhost_ and DreamersINC like this.
  17. jivalenzuela

    jivalenzuela

    Unity Technologies

    Joined:
    Dec 4, 2019
    Posts:
    83
    Looking forward to sharing details when we can, which isn't now.
     
    saskenergy likes this.
  18. DreamingImLatios

    DreamingImLatios

    Joined:
    Jun 3, 2017
    Posts:
    4,301
    I actually 100% agree with this. If there's an alternative ready to take its place when IAspect is removed, then this is very good news. If there isn't, this is very bad news.
    I think the timing and intent is correct. And naturally, I'm here to participate in this discussion right off the bat. I would have done the same thing for determinism rules too (still my #1 concern by the way) when it was first announced, but there were *other* things going on at the time.
    Not possible. I've already tried. The issue is that the source generators for IJobEntity and idiomatic foreach have no way of knowing about it.

    Anyways, I do believe there exists an API that is simpler, faster, easier to maintain, and provides more flexibility for the use cases that IAspect really solved when used correctly. And I think that solution is to have source gen be able to generate based off of interfaces.

    Let's start with type handles and lookups. The built-in ones all have SystemAPI methods which removes a lot of caching boilerplate. But without SystemAPI, they all have a creation method which takes in SystemState and possibly a second argument. And they all have an Update() method which also takes a SystemState. That can be an interface. It should be possible for a SystemAPI to have an interface-constrained generic that generates code invoking these methods. That way, anyone can write their own type handle and lookup aggregate that works with SystemAPI. This solve the Lookup and TypeHandle parts of IAspect, plus quite a few other pain points I have that are preventing me from doing even more awesome things.

    The second part is having a way to chunk-enumerate aggregates. Once again, I think interfaces are the answer. Expanding on the base interface I already described, you could add the methods AddComponentsToQueryBuilder(), GetMaskForChunk(), BeginChunk(), SetIndexInChunk(), and maybe even an EndChunk(). And then I would be able to add this type as ref in the Execute parameters of an IJobEntity and be able to operate on the aggregate abstraction. Additionally, you could replace SetIndexInChunk() with GetInstanceInChunk() which returns some other type. That other type would instead be what is used as an Execute argument or query, and it would have an attribute that calls out the backing type implementing the interface with all the type handles and setup methods.

    Code-gen is my #2 issue. Even more concerning to me is the determinism situation. I'm actually not against breaking determinism for Game Object unification. There's a good value tradeoff there. But I need to know what the rules are going forward so that I don't break them.

    Are there any chunk-order determinism guarantees? If so, we need more tools and APIs to help preserve this in some circumstances. And if not, we need some tools to more-consistently reproduce chunk-level caching issues that can arise.

    And one last thing, why does this announcement post talk about world-building tools when it is still only "under consideration" on the roadmap?
     
    horeaper, DreamersINC, bb8_1 and 5 others like this.
  19. JohnPontoco

    JohnPontoco

    Joined:
    Dec 23, 2013
    Posts:
    296
    This is a great direction, I'm very excited for the merging of GameObjects and Entities. It would solve a *ton* of issues on our project (with rendering, graphics, cinemachine, animation, etc).

    I'm especially interested in improvements to the subscene workflow when they're merged. Right now, you have to keep two copies of a object: one in the subscene and one outside to hold non-ECS components like Cinemachine, Volumes, etc. That's been really rough to keep organized, and we've had to split a lot of our Prefabs into separate parts.
     
    Voronoi, shotoutgames and filod like this.
  20. dzamani

    dzamani

    Joined:
    Feb 25, 2014
    Posts:
    124
    Great news!
    About the build system, is that something that will be improved really later on? Not having any tools to inspect and control the ContentArchives built for subscenes is something that I really miss at the moment
     
    rdjadu likes this.
  21. boyaregames

    boyaregames

    Joined:
    Jun 23, 2021
    Posts:
    79
    Noice. I always thought that aspects are just for splitting and confusing code. We already has queries and systems why even bother. And I've seen how people in TG group was asking questions about "how to XXX but i have aspects" noone was answering cuz noone use aspects or dont know the right way how to do XXX with aspects
    Edit: deprecating Entities.ForEach finally!!!
     
  22. IAmChiagozie

    IAmChiagozie

    Joined:
    Jun 26, 2017
    Posts:
    48
    The future looks exciting! Although I will have to go back and rewrite my ECS code that uses aspects.
     
  23. WAYNGames

    WAYNGames

    Joined:
    Mar 16, 2019
    Posts:
    1,005
    Thanks for the update.

    I've a few interrogation regarding the unification of entities and game object, physics and scene management.

    Will we be able to query any game object with a mono behavior component from a system without having to make a baker for it and add it to an entity as managed component ?

    Will the current work allow for mono behavior and systems to perform queries against the physics world(s) with single api call ?


    Since all game objects will have an entity, does it mean that scenes will be baked like subscenes making subscenes irrelevant and allowing cross reference between game object and entities in the scene view?
     
    Saniell and thelebaron like this.
  24. Neil-Corre

    Neil-Corre

    Joined:
    Nov 29, 2015
    Posts:
    76
    Fantastic thread. Lots of things worthy of discussion here and I look forward to reading more about other devs' thoughts about these updates. Like the others, it would also be nice to hear more about the optimizations of pre-existing Unity systems like the LOD update system and the jobs in it, the LocalToWorldSystem, and the Culling jobs. But, I guess those are for the rendering side of things.

    More ECS-specific one - would love to hear more about handling open-world games. Will there be a guide or a recommended approach for generating SubScenes at runtime? Things that would improve streaming open worlds. I'll definitely keep an eye on the Worldbuilding forum.
     
  25. axmsw

    axmsw

    Joined:
    Mar 13, 2019
    Posts:
    11
    Still no roadmap or mention of DOTS for the Web platform? Browsers are ready, and browser deployment is critical for enterprise usage (and many others)... Given Unity is forcing non-gaming users up to Industrial licences at 2.5x the price of Pro, this gap needs addressing.

    Question - WebGL and DOTS - Unity Forum
     
    boyaregames, malikcgcs and sacb0y like this.
  26. jGate99

    jGate99

    Joined:
    Oct 22, 2013
    Posts:
    1,967
    Hi Team,
    Any plans for supporting 2D content (drawing 1000s of sprite renderers)
     
    Neil-Corre likes this.
  27. sacb0y

    sacb0y

    Joined:
    May 9, 2016
    Posts:
    937
    Yes, please bring Burst support to WebGL, it's needed for a variety of things like cloth sim.
     
    axmsw likes this.
  28. in0finite

    in0finite

    Joined:
    Oct 23, 2017
    Posts:
    31
    I also think that Burst & DOTS should be brought to Web platform.

    Especially now that WebGPU is coming, and that multi-threaded jobs are enabled (on Web) in Unity 6. Web platform will have so much potential.

    With Compute shaders in WebGPU, entities rendering with high performance should definitely be possible.

    So, the possibilities are here. Web browsers are ready. It's up to Unity to decide whether to move on.
     
    malikcgcs and axmsw like this.
  29. desertGhost_

    desertGhost_

    Joined:
    Apr 12, 2018
    Posts:
    262
    In our project, we use 16 aspects and all of them are for the purpose of accessing optional components in IJobEntity. We use them to avoid writing the extra code required for IJobChunk. A simple replacement that would provide all of the functionality that we need in our project would be to add support for an [Optional] attribute for components in IJobEntity.
     
    Explaysive and WAYNGames like this.
  30. mrbinggrae

    mrbinggrae

    Joined:
    Mar 6, 2016
    Posts:
    23
    There should be more DOTS tutorials. I want to learn DOTS, but there are too few tutorials.
     
    bb8_1 likes this.
  31. horeaper

    horeaper

    Joined:
    Oct 30, 2013
    Posts:
    54
    Checkout Code Monkey and Turbo Makes Games on youtube, they both made a DOTS tutorial, for beginner and intermediate.
     
    JohnnyTurbo and Neil-Corre like this.
  32. diakou

    diakou

    Joined:
    Dec 20, 2022
    Posts:
    17
    I really don't understand why we can't have exactly this, it makes so much sense, it's probably not that straightforward though and caveats must exist or else I feel like this would have been fantastic for a lot.
     
  33. scott-williams

    scott-williams

    Unity Technologies

    Joined:
    Sep 18, 2019
    Posts:
    5
    For this case, we're looking at a means of implementing long-running jobs. This will likely involve managing state so these jobs can be paused and resumed in a controlled fashion, but the key will be to ensure it is easy and stable to use. We are also hoping to explore e/p core usage, but how we end up taking advantage of that is still uncertain. i.e. if you have 4 efficiency cores and each has a worker thread, and you have 7 background jobs, they still need to be able to alternate processing in some fashion.
     
  34. TheOtherMonarch

    TheOtherMonarch

    Joined:
    Jul 28, 2012
    Posts:
    888
    I imagine E-cores need some kind of extra control. On my i7-13700K if I am multitasking a lot, I occasionally hit an E-core which basically locks up some apps. Having control over what gets sent to an E-core or just not using E-cores is extremely beneficial for real-time applications.
     
    Last edited: May 15, 2024
  35. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,563
    E-cores shouldn't need it. They're just stripped down cores from previous generations.
     
  36. TheOtherMonarch

    TheOtherMonarch

    Joined:
    Jul 28, 2012
    Posts:
    888
    Windows 11 does not have proper thread scheduling for E-cores it often messes up and suggently you drop from 120 FPS to 0 FPS while you wait for the E-core.
     
    Last edited: May 14, 2024
  37. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,563
  38. DreamingImLatios

    DreamingImLatios

    Joined:
    Jun 3, 2017
    Posts:
    4,301
    Don't assume this. These kinds of assumptions are awful for plenty of reasons that I would rather not derail this thread describing.
     
    diakou and Ryiah like this.
  39. TheOtherMonarch

    TheOtherMonarch

    Joined:
    Jul 28, 2012
    Posts:
    888
    desertGhost_ likes this.
  40. Saniell

    Saniell

    Joined:
    Oct 24, 2015
    Posts:
    208
    Thanks you, this all sounds amazing actually. I would still love to constrain jobs to only certain cores for reasons stated here though, but there is a hack I came up to do that, so not too critical.
    Will be waiting for further updates!
     
  41. TheOtherMonarch

    TheOtherMonarch

    Joined:
    Jul 28, 2012
    Posts:
    888
  42. msfredb7

    msfredb7

    Joined:
    Nov 1, 2012
    Posts:
    173
    Any chance we can get support for structural changes in idiomatic foreach? I know we can use EntityCommandBuffers, but sometime you just want simple quick-to-write code.
     
    boyaregames, bb8_1, Greexonn and 2 others like this.