DOTS Development Status And Next Milestones - March 2022

Hi everyone!

Thank you for your patience, this is the first of a series of updates for DOTS this year. In our last post on December 9th, 2021, we shared our intention to focus on delivering public patches again, and progressively reach an Entities 1.0 version.

We have great news today! I am happy to announce that experimental Entities 0.50, and its compatible packages, are now publicly available! You will find more information about this release in a second forum post from Matt Fuad, Senior Product Manager in the DOTS Product Management team.

We are also launching a public roadmap page presenting more details about the scope of Entities 1.0, and allowing you to share feedback directly to the product team.

DOTS Roadmap
Before we jump into the details of our next steps, we expect more and more Unity users to see those updates as we progress toward our first release supported for production, so I would like to take this opportunity to clarify our ambition and a few terms.

The goal of Unity’s Data-Oriented Technology Stack (DOTS) is to enable you to build more ambitious games with Unity, to serve your needs in the direction of complex multiplayer, crossplay, and open-world games.

DOTS includes all the packages based on the Entity-Component-System (ECS) architecture. The notion of DOTS is often extended to include the Burst Compiler and the C# Job System, two technologies that have been created to support the development of ECS but are independent of it. The Burst Compiler and the C# Job System are already recommended for production and can be used in any Unity project, regardless of whether or not ECS is being used. The APIs allowing to implement the ECS software architecture pattern in a Unity project are delivered in the package named Entities. To obtain the benefits of the data-oriented architecture, game code and packages need to be based on Entities.

Our roadmap is focused on our efforts to bring the Entities package to version 1.0, which means that it would change its status from Experimental to Released, as per the definitions of our package lifecycle. This step is critical because it means that Entities 1.0 and its compatible packages will be supported for production, like any other features of Unity, and its APIs would remain stable for the duration of the Unity LTS cycle.

In our previous forum post, we explained we need to go through 3 steps to get to 1.0:

  • Reach compatibility with 2020 LTS: this is what is achieved today with the release of experimental Entities 0.50 and its compatible packages. Entities 0.50 is a breaking change from Entities 0.17.
  • Reach compatibility with 2021 LTS: we are preparing a minor update to Entities, experimental Entities 0.51, that will make Entities and its compatible packages usable on both Unity 2020 LTS and Unity 2021 LTS projects. This update is currently scheduled for Q2 2022. More details will be shared as we approach its release.
  • Reach compatibility with 2022 Tech Stream: the version Entities 1.0 and its compatible packages represent the ECS foundation supported for production for the entirety of the 2022 release cycle. Entities 1.0 will be a breaking change from Entities 0.51.

Entities 1.0: What to expect?
First of all, Entities 1.0 represents our ability to support you with ECS in production. During the experimental phase of Entities, in order to progress rapidly, we did not focus our resources on our testing infrastructure. We were, in a lot of cases, simply not equipped to track, reproduce and fix issues. With Entities and its compatible packages reaching version 1.0, we join the rank of released packages, with the quality standards we apply to those, and the quality requirements coming with it for all the platforms Unity supports.

Secondly, Entities 1.0 is only a first step in overcoming some of the limitations of the Unity engine to enable creators to build more ambitious games. Entities 1.0 is not the end of the journey, it is the beginning, and we will need a few major releases to make its benefits fully accessible in a transparent way to all Unity users. So while we are making a dedicated effort to bring you strong samples, documentation, templates, and other best practices guides, we will recommend Entities 1.0 specifically to seasoned game creators who have the experience of having previously shipped a Unity title.

Finally, Entities 1.0 is focused on enabling specific scenarios and types of games that were previously challenging to build in Unity, not to replace all existing functionalities. This is why Entities 1.0 is compatible with Gameobjects, and contains dedicated APIs and authoring workflows to efficiently bridge any Gameobject system of Unity with ECS-based ones. This gives you massive flexibility in building games by being able to rely on ECS in certain situations and still leveraging your existing experience with other aspects of Unity.

Let’s look at the scenarios for which we believe ECS, with Entities 1.0 and its compatible packages, will make a difference in production:

  • Adaptive Game Architecture: facilitates writing and using an ECS game code architecture that adapts well to constantly changing gameplay requirements.
  • Integrated Workflows: ensures compatibility with Gameobjects through integrated editor and baking workflows, allowing you to leverage existing Unity systems and your team’s Unity expertise.
  • Increased Audience Reach: allows publishing your demanding games to the widest range of devices, by optimizing memory needs, and supporting better energy consumption.
  • Native Code Performance: preserves the simplicity of authoring managed code, while giving you the performance of native code, with parallelization and determinism.
  • Made For Massive Data Streaming: combines Unity’s render pipelines with the efficiency of ECS, so you can achieve spike-less streaming and memory-efficient large-scale rendering.
  • Unprecedented Simulation Scale: targets a feature-rich physics library, scalable debug tools, and an accessible API to help you achieve efficient runtime and simulation at scale.
  • Scalable Multiplayer Support: contains the high-level networking foundations supporting the production of medium to large action games using a server authoritative model.

To ground this vision in reality, we will share with you this year multiple production stories from early adopters of DOTS and ECS. Those stories will expose why those technologies were selected, for what problems, and the challenges that come with those choices.

The first two of those stories will be told at GDC, during the Dev Summit, where Lauren Frazier from Ramen VR will be talking about how they leveraged DOTS and ECS for the VR MMO Zenith, and Jonas De Maeseneer from Electric Square will share their own experience with it for the production of Detonation Racing. I will be concluding this session with a recap of the roadmap we are sharing with you today. Lauren, Jonas and I will also be discussing this during a DOTS Q&A live stream on Wednesday, March 23rd, on the official Unity Twitch channel.

I also recommend this session by Damian Campeanu from Unity focusing on DOTS authoring and debugging workflows.

The DOTS team will have several members physically present at GDC, this is the opportunity to meet each other in person if some of you also attend the event. Please reach out to me on the forum, or on Twitter to schedule something! You can see all of the Unity presence at GDC over here.

Your feedback is important
As mentioned at the beginning, we are excited to also launch today of our DOTS roadmap page, giving you a more complete and detailed view of the scope of our next milestones.

Each card on this interactive board is clickable, giving you more details about each topic, and will provide you with the option to share your feedback. If you accept to use functional cookies and log in using your Unity ID, then it is as simple as clicking a card, selecting how important the topic is to you, adding your point of view, and submitting! This feedback is directly routed to the proper product teams.

With the release of Entities 0.50, the announcement of Entities 0.51, the launch of our public roadmap presenting the scope of Entities 1.0, and the upcoming opportunities to chat and learn more during GDC, we hope you are as excited as we are to see those years of efforts translating to concrete deliveries. The teams behind DOTS are working very hard to bring you the solutions you need for your ambitious projects.

As usual, please let us know what you think in this thread. In particular, we want to hear your thoughts about the incremental delivery of ECS while keeping the compatibility with Gameobjects.

Looking forward to hearing from you,

Laurent

56 Likes

Hello, I see you mention a 0.51.
I just updated one of my pakage to 0.50 and I still face an issue that seemed easily fixable.
From my understanding it was a regression between 0.16 and 0.17 and expected this to be solved by hte next package.
Yet this still occurs in 0.50.

Can you confirm that having a BlobAsset of Generic type (BlobAssetReference<StructType>) is expected to be allowed ?

1 Like

Excited to see this developmemt and direction! Thanks for the information!

Can we get a real update/clarification to the status of Animation?

It now falls under the status of Planned: We plan to build solutions, but the work has not started, or the topic is being researched.)

Previously it was listed(over a year ago) on the roadmap by @UnityChinny as In Progress - on the “old” roadmap and we obviously have the samples repository. Whats happened here? Is this just a mix up? Or is development on the existing package being scrapped?

4 Likes

No, it is not being scrapped. In the past we have showed early work on an ECS-based animation system. That work is not part of the scope for our Entities 1.0 release as we focus first on delivering a fully supported ECS foundation. We intend to then build on that foundation with systems like ECS-based animation, and will share more concrete details as they get refined. Do share your feedback through the public roadmap so we can ensure our plans address your needs.

8 Likes

Will DOTS be at all interoperable with existing Unity projects? For example:

  • Use Hybrid Rendering side by side with normal Unity
  • Use Unity Physics side by side with normal Unity

I expect there’s a lot of reasons for why this wouldn’t be possible, but it would be great: right now porting over an existing project seems kindof like an all-or-nothing deal instead of a gradual process where you have to have all your custom render/physics components ECS authored day 1, and I imagine that scaring off a lot of people to the otherwise brilliant concept.

1 Like

Got a sense Laurent post addresses your question quite clearly (Finally, Entities 1.0 is focused[…]) I read that as “keep using Unity as you do it right now, and sprinkle in use of Entities as you wish from 0% (of you Game Logic) to 100%”

1 Like

Woo! Some fresh air in the DOTS sails!

I’m glad you all have a clear scope for Entities 1.0 Even in it’s preview state, ECS is brilliant. I’m glad you’ve all embraced the hybrid approach and I look forward to more tools.

Well done lads, looking forward to 1.0

2 Likes

Yes, you can mix and match. I currently use the DOTS based physics for my vehicles and their interacting and colliding with each other and the general game world (ground, buildings, etc), but then each vehicle has a standard and simple GameObject collider attached to it which is used to interact with the GameObject world, ex, ragdoll, any other systems I have not converted to DOTS, etc.

2 Likes

So Animation is after ECS 1.0? maybe another two years later,Is there any alternative method,or preview version

Yes after Entities 1.0, no specific dates to share beyond that. At Entities 1.0, our current Mecanim would be the recommended animation system used alongside Entities.

ok maybe 100%percent pure ECS in project is Unrealistic now

1 Like

Aside from doing that just because you want to do that (100% DOTS), for most things, it seems rather unnecessary. Sure, some aspects of DOTS yield unquestionable performance increases, but for other things, you may simply not need it and the effort you would have to put in (at least currently) to do something in pure DOTS could end up being only a little bit better and you could have done 4-5 other things toward the completion of your game instead of squeezing out a few fractions of a millisecond. Granted, I enjoy making something, then redoing it to see if I can make it better, then redoing it again until I can’t make it any faster, but that is probably why I will never finish anything, lol.

Hello!
Do you know which part this breaking change from 0.51 to 1.0 will be affecting? It will be game object conversion, Entities.ForEach API, physics, or maybe something else? I am wondering if we can somehow prepare for it up front

Thanks for the update.
If you don’t mind me asking, are there still plans to get DOTS coding usability near GameObject usability?
I believe someone mentioned that eventually it should be as easy, or even easier.

It’s a bit difficult to imagine what that could look like, any details would be appreciated :slight_smile:

7 Likes

Is there a builtin ECS-based way of handling this, or would we want to have like a GameObject w/ Animator that just acts as a puppet, and have some custom System handle setting triggers and such?

Is it possible that 1.0 will support “Animator” as a built-in HybridComponent, but 0.50 currently doesn’t?

In 0.50, I just tried dropping a gameobject with a mecanim Animator component in a subscene, and the Animator doesn’t appear to get converted to a hybrid component (no CompanionLink on the entity, etc…).

I’m wondering if there’s a hassle-free way to get this working now that AddHybridComponent is removed. Is there a recommended workflow, other than manually handling GameObject instantiating/destroying/reference-keeping with managed SystemStateComponents?

3 Likes

I guess I’m still going through the stages of denial, but would it be possible to go back to experimental preview packages (with no guarantees for production readiness/support) for animation? I’ll sign an NDA if that’s what it takes(seriously).

Holy Moly, I’m starting to dream again.

1 Like

Are DOTS Animation & Kinematica related? How will they both work in harmony/together?

1 Like