DOTS Development Status And Next Milestones - December 2021

Hi everyone,

Thank you very much for your patience. My name is Laurent, Product Manager for DOTS. I’m jumping in here to share an update on where we are before we share a larger and more detailed communication at the beginning of 2022.

To make it very clear: We are actively developing DOTS. Over the last year, the teams working on ECS solutions have been focused on leveraging the lessons learned from early adopters’ productions to converge toward a stable first release. Getting to a first fully supported release has been and remains our main focus.

Our original intent with the development of DOTS was that it would be fast, generally stable, and straightforward to support. Our enthusiastic commitment to this new way of building games reinforced a belief that we would get out of experimental and unsupported mode quickly. Not only did it take us more time to build a solid foundation than we envisioned, but we also realized it required a more comprehensive approach that touches almost every aspect of the Unity development experience. As such, we ended up having to rewrite APIs more often than we wished, and at times we struggled to deliver the fixes at the speed and quality that we hold ourselves to. We ended up pausing releases altogether while trying to figure out the best direction earlier this year.

We’re now confident that we have reached the point where we will be able to restart releasing public patches to our packages.

We will do this with two milestones. 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. This release will allow you to get easier access to patches and fixes compatible with ongoing LTS versions. Those packages will remain in experimental mode with this milestone, meaning they are still not recommended for production. We are targeting the first quarter of 2022 for this release.

The second milestone is the actual transition from experimental packages to full release status with the version we call Entities 1.0, which will be fully supported much like any other released feature of Unity. The 2022 LTS cycle is our preferred target for this release, but we have yet to confirm it. Entities 1.0 will not be compatible with earlier LTS versions. We will be releasing the details of the provisional scope of this version and future steps at the same time we release version 0.50. This plan will be detailed in our public roadmap space so that you can easily share your ideas and feedback.

The goal of Entities 1.0 is to augment the Unity Engine with an opt-in way of writing game code that’s compatible with the existing Unity architecture. Entities 1.0 is focused on enabling specific scenarios and types of games that were previously challenging to build in Unity. This will be illustrated with new, real-production examples from some of the early adopters of DOTS and crystallized in updated versions of DOTS samples.


DOTS Shooter will be a starting point for creating a networked shooter game with simple main thread game code. The netcode uses client/server architecture with what you expect from a complete solution with client-side prediction, interpolation, and lag compensation.


Megacity will show how to use Entities and baking workflows to author content using subscenes. As we make the authoring experience in the Editor much more integrated and robust, the subscene workflows get closer to existing Unity workflows while ensuring that they can scale to the Megacity complexity.


Unite Austin/Nordeus will show large-scale simulation of entities and how to write high-performance multithreaded game code.

Entities 1.0 is all about getting Entities to a released state, with the support, documentation, and learning content expected of a released workflow, so you can safely choose to use our ECS solution for your productions. Our current scope for this release covers APIs, authoring, and debugging workflows for entities, physics, netcode, and rendering. We are giving particular attention to ensuring that the authoring, baking, and visualization workflows are well integrated into the Editor, and that iterating and debugging Burst for game code is a productive developer experience.

Not all of Unity will have complete Entities compatibility, and based on many successful experiences of our early adopters, we are fully embracing the hybrid nature of our 1.0 release. This means the scope of 1.0 includes strong conversion workflows allowing you to choose ECS for its value in solving specific challenges while leveraging GameObjects for other aspects of your production. Our goal is to enable teams that are able to ship a GameObjects-based production to leverage ECS for reaching goals beyond what Unity used to be able to support.

To wrap this all up, we plan to share more information with you during the first quarter of 2022 with the 0.50 update to experimental packages that will enable us to ship patches again. The full list of packages will be shared closer to the release. We also intend to present at the same time the scope of 1.0 and beyond to continuously validate our direction with you as we go.

We hope that this update helps to clarify the current, ongoing work and gives you a clear overview of what to expect next.

Your feedback is important to us and will help us build the DOTS solutions you need. We love your passion for Unity and will increase our efforts in engaging with you more frequently and in an open and honest way. Please feel free to share your questions and feedback around this announcement in the thread below and we will do our best to answer.

Laurent

185 Likes

Yes! This is the type of news and announcements we were waiting for! Keeping us updated is the right approach, and you did it guys! Thank you. And I’m excited for what comes next!

12 Likes

Thank you very much for the communication and transparency! :slight_smile: I look forward to 2022!

My only request is that this sort of communication be provided more frequently, and when unable to do so (depending on the reason) merely share something like “we can’t share anything new right now, but we are still moving forward”. I fully believe in DOTS as well as ECS as it has definitely improved my projects.

19 Likes

Thanks for the update!
So what can we expect from 0.5 compared to the current 0.17 release?
Some patch notes would be nice.

8 Likes

@Enzi the notes are being worked on. We’ll share more details as we get closer.

21 Likes

Oh great! Looking forward to it!

3 Likes

Sounds like we will get more of the ugly hybrid approach rather than the full DOTS solution.

11 Likes

Sounds like both to me. And I’d quite like my existing mono project to be accelerated by say, DOTS hybrid renderer v2, or subscenes.

That sounds like a good candidate to mix, if possible. I want speed. I don’t want to fight or work harder. That’s a good customer demand.

27 Likes

I don’t know about others that much, but I like the current system.
I have no problem, if Unity decides to keep mono behaviors and entities separated.
Since its less work for those, who already learned the current way.

Sure it would be nice to have one perfect system that just works right now.
To me it feels like demanding trip to mars.
Right now I’m happy that its even possible to do some ideas that has been previously impossible.

So, I’m happy if they just keep improving the current systems. Especially the audio, netcode and physics tool sets.
Also things like upgrading the good example projects to latests ecs packages. Even that would be a lot to me

16 Likes

We also want the samples (fps, megacity etc) to be continuously updated to the latest DOTS packages. That would be so helpful to get better insights on the newer not-outdated API!

18 Likes

Yes even if its just for Unity to see how it is to keep a project alive between new versions of Unity.

10 Likes

@LaurentGibert thanks for the update.
Burst stability has been great for a while, and performance is still insane.

Are there any significant (coding) ease of use improvements in V50 or V1.0?
GameObjects still seem 10x easier to use, which was always a huge selling point for Unity :slight_smile:
Entities/Jobs/ForEach/Burst/HPC# etc. are still a little hard to use.

8 Likes

Can you PLEASE and make sure at least one of those demo / example scenes fulfills both below requirements:

1. It is maintained for a reasonable amount of time and works with many future Unity versions. If it stops being maintained it’s because another sample project that fulfills roughly the same purpose has replaced it. ← Up to now none of the Unity produced demo scenes have fulfilled this requirement, in fact Unity’s demo scenes are notorious for being deprecated and incompatible with newer Unity versions the moment they are released.

2. It is made reasonably well, with things that can be considered “best practices”, even for secondary things. ← I remember the angry bots demo being made reasonably well (or maybe I just didn’t know better at the time?), but more recent demo scenes contain things that are flat out terrible. This shouldn’t happen! Users use these as examples of how to do things. But if I open a recent Unity sample what do I learn?

In the FPS Sample I learn that to deal with lightprobes, I need to MURDER my scene with so many lightprobes it starts looking like scanned data point cloud:

In the even more recent HDRP Sample, I learn that I shouldn’t care about lightmap UVs at all

There are many more. My examples don’t have to do anything with DOTS, it’s because I know a lot more about Unity’s Lighting than DOTS, so I’m more comfortable calling out lighting related things, but I hope my general point still comes through.

People use these sample scenes as examples on how to do things and all the elements, that are not obviously placeholders, should be made with the highest quality and care, as they will be used as a reference point for Unity users and will find their way in many released games.

47 Likes

Well by reading the tea leaves and such (github PRs) we should be able to “pick” (click and select) entities in the editor which is something that should have been prioritized since day 1 imho (along with collider rendering… debugging invisible colliders is a royal pain in the arse)

8 Likes

I meant for coding in particular :slight_smile:
They’ll probably figure out the Editor integration, I am not worried about that tbh.

2 Likes

THANKS!!! DOTS RULES!!!

3 Likes

Some of them have not been made by core DOTS team.
FPS sample uses various hack solutions if I remember correctly.
It would need to be most likely redesigned ground up, by DOTS team, to be up to date.
Megacity demo used old long depreciated solutions. But if I am correct there is version made by community, which works with Unity 2020.

Transiting any project to keep up to date, requires significant effort. Specially if various packages are depending. Rendering pipeline changes will be first major obstacle, to bring things up to date. Hence probably very time consuming to do so.

If anything, the best and fresh thing is, to bring completely new demo, which uses latest packages.
Something which uses networking and DOTS, i.e. combining FPS sample and Austin demo.
I wouldnt be surprised, if Unity doesn’t work on it already. Or some independent group. Which later is happy to share the source code.

7 Likes

@LaurentGibert This is great news :smile:
I am curious about the state of the rest of DOTS (aside from ECS) and what improvements we can expect. Blob Assets, Burst, Native Collections and Jobs are all great tools by themselves and I’m wondering what this announcement means for them specifically. Improvements to Burst’s debuggability, more BlobAsset structures (a hash-map for instance), more allocators in the style of UnsafeScratchAllocator, etc… Any of these (and/or others in the same vein) would make this announcement even better :slight_smile:

3 Likes

Couldn’t have said it better myself! I agree with you. However, what I meant by “more frequently” is like once a year or so.

I guess that’s even a better idea! :smile:

2 Likes

I wonder how many coders use entities like I do :

  • No hybrid renderer, no ecs transform, no conversion, I dont use any of the built-in ecs components.
  • my own carefully crafted custom ecs code, components, systems, foreach jobs.
  • a pool of renderer gameObjects with a custom RenderLink IComponentData and a renderSystem that runs on mainThread.
  • some monobehaviours to debug and bootstrap my systems.
10 Likes