DOTS development status and next milestones - November 2022

Hello everybody, here is our Q4 update for the DOTS roadmap!

What is DOTS?
The goal of Unity’s Data-Oriented Technology Stack (DOTS) is to enable you to build more ambitious games with Unity and serve your needs in the production 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 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 can be used in any Unity project, regardless of whether ECS is being used.

We also sat down with Jason Weimann to explain DOTS to a more general audience during the GameDevGuild 2022 conference.

The road to using ECS in production
About a year ago, we shared with you our short-term roadmap to focus on efforts to bring the Entities package to version 1.0, bringing the package from Experimental to Released status so that Entities and its compatible packages will be supported for production. Upon release, like any other Released feature of Unity, Entities and compatible packages’ APIs would remain stable for the duration of the Unity LTS cycle. Throughout 2022, we’ve met various milestones with many of you on the forums, collecting valuable feedback and learning about your early experiences with ECS for Unity.

  • In Q1 of 2022, we shared with you experimental Entities 0.50, compatible with 2020 LTS.
  • In Q2 of 2022, we shared with you experimental Entities 0.51, compatible with 2020 LTS and 2021 LTS.
  • In Q3 of 2022, we shared with you experimental Entities 1.0, compatible with 2022.2 Beta.

During the year we invited a number of early adopters to bring their ECS production story to you to help you understand what it can enable for your game productions. So far this year we’ve had.

  • Ramen VR - Zenith: The Last City (March 2022): CTO Lauren Frazier explains how ECS helped them scale up their gameplay for managing a VR MMO game architecture.
  • Electric Square - Detonation Racing (March 2022): Lead Developer Jonas De Maeseneer covers the use of ECS for deterministic gameplay for QA and design loops, as well as streaming for a high-pace Apple Arcade racing game.
  • Stunlock Studios - V Rising (June 2022): In a 3h-long Twitch stream, lead developers Rasmus Höök and Fredrik Haraldsson presented their use of ECS, from worldbuilding in the editor with custom visual scripting to scalable open-world streaming.
  • Kasedo Games - IXION (August 2022): Technical Director Jérémy Guéry walks us through how ECS has powered heavy NPC simulation for their city builder in space.

ECS for Unity 2022 is available and supported for production!
The pre-release of ECS for Unity 2022 is now publicly available and can be installed via the package manager on Unity 2022.2 Tech Stream. The biggest difference between ECS for Unity 2022 and earlier experimental versions is that it’s fully supported for production across all platforms, including desktop mobile, consoles or VR headsets. This will enable creators to build more ambitious games while experiencing the same support for production on all platforms, the same as any other release feature of the Unity engine. ECS for Unity supported status means that users can:

Please note ECS for Unity 2022 will not be made compatible with earlier major versions of Unity.

What’s new since the last experimental ECS for Unity 2022?
In our last roadmap update, we shared various highlights of what we expect to be different between Experimental Entities 1.0, and the pre-release of ECS for Unity 2022. Here’s a quick recap on the latest developments of those issues:

  • Documentation has been improved with the latest APIs and workflows: We know how important documentation is to the experience of ECS. So, we’ve significantly improved the documentation for the Entities package, including code samples to get started with ECS workflows, elaboration on aspects, how to manage content in ECS, and more.
  • Build to WebGL with ECS, and render via Unity’s Scriptable Render Pipeline: Compatibility of ECS with WebGL is important to some of our users. To make this easier to achieve, we’ve included a small sample to illustrate how users can use ECS and build to WebGL without depending on the Entities Graphics package.
  • Removal of some deprecated features: We’ve removed some deprecated or unused endpoints from various packages to ensure a consistent and smooth development experience, including the ISystemBase name, BufferAccessor constructor, DotsPlayerSettings type, and more.
  • Introducing a content manager and delivery system: With many users looking for a way to manage and deliver large-scale content, we’ve introduced the content manager and delivery system with this release, enabling users to load, build and deliver content on demand.
  • Various fixes for Motors in Unity Physics: We’ve also made various updates and fixes to the motors feature, including a simplified UI for intuitive configuration and various bugs that affected the behavior of motors. More details in the Unity Physics changelog.
  • Havok Physics for Unity is now available for Pro, Enterprise, and UIC users: This release also includes the Havok Physics for Unity package (com.havok.physics), included as part of the subscription for Pro, Enterprise and UIC users, along with the Unity Physics package. We’ve also developed learn content to help you get started.

We have also compiled a list of known issues here.

Roadmap
While ECS for Unity 2022 is supported for production, this does not mean the work is over. To continue enabling more ambitious games, here are the three main areas we’ll be working on:

  • Consolidation of ECS workflows: with the release of ECS for Unity, we expect to see a wide range of new use cases emerging. Our short-term focus will be observing how you leverage ECS for Unity, and acting on opportunities to further consolidate workflows and provide a better experience.
  • Enabling cross-play multiplayer game creation: enabling multiplayer games continues to be a big focus for the team, and we’re determined to close any remaining gaps to provide efficient out-of-the-box support for many genres of multiplayer games. These include working on cross-platform determinism to simplify cross-play development or supporting the need for determinism in multiplayer game code.
  • Enabling open-world game creation: we are also developing more robust open-world support in Unity, specifically around the ability to scale content. This is currently being developed on two main fronts, animation, and worldbuilding. On animation, we’re progressing towards a highly performant, customizable 3D animation system that leverages data-oriented technologies. For worldbuilding, we’re working on better artist controls for environment workflows, including overlays for terrain, scattering improvements, and managing terrain detail.

Resources to get started
Over the course of our experimental releases, we’ve also heard from you that samples and documentation are very useful to get started. Based on that feedback, we’re preparing the following to reduce the learning curve and help you get started quickly:

  • Megacity: We’ve significantly updated Megacity, showcasing how you can stream thousands of entities into the game scene at a stable 60 FPS, with thousands of active physics colliders and dynamic vehicles actively performing collision avoidance.
  • Rival Character Controller: For users looking to quickly jump into building their game, we’ve also updated the Rival Character Controller, making it compatible with the pre-release of ECS for Unity. The samples showcasing the use of the character controller will also be updated, to provide you with a starting point.
  • DOTS Guide, ECS Samples, and Learn Content: We’re updating the DOTS Guide, ECS samples and Learn Content to reflect the latest APIs available with ECS for Unity, and these should be available soon. These resources will be especially useful for new users to learn about fundamental concepts of data-oriented design.
  • ECS Network Racing: We’re developing a brand new multiplayer racing sample showcasing the capabilities of Netcode for Entities and how you can easily build a multiplayer game out of the box. This sample exemplifies an implementation of client/server architecture with client-side prediction, interpolation, and lag compensation.

To learn more about leveraging ECS for Unity to build ambitious games, do check out Isaac’s blog post – Games Focus: Expanded Scale for Ambitious Games, as it goes deeper into production stories from early adopters like V-Rising, and Electric Square. We’re also organizing a Dev Blitz day on the Unity Forums today, on the 8th of December, 7am – 7pm ET, so you can chat with us directly about all things ECS.

Feedback is a gift
We’ve also updated our public roadmap page, to reflect what’s available and what we’re planning to deliver next. As usual, your feedback is carefully reviewed by the team and provides a significant impact to drive the direction of the product.

Each card on this interactive board is clickable, giving you more details about each topic while providing you with the option to share your feedback. If you accept to use functional cookies and log in using your Unity ID, then it’s 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.

We are also actively engaging with many of you via the DOTS channel in Unity Discord, as well as here in the forums. With the pre-release of ECS for Unity, the DOTS forums will also be moving out of the experimental section, into the main forum space, along with all the other supported products of Unity. The subforums of DOTS Physics, DOTS Netcode, and DOTS Graphics have also been renamed as Physics for ECS, Netcode for ECS, and Graphics for ECS to better reflect our revised nomenclature around ECS for Unity.

This is an exciting time for all of us, and we can’t wait to see what you build with Unity. The team continues to work hard to provide you with the tools to build more ambitious games, and we look forward to sharing more on our next release.

As usual, please let us know what you think in this thread!

Laurent

10 Likes

Hi, I’m confused.

It’s available and supported for production but it’s also a pre-release? What makes it a pre-release? What will it take to lose the pre? You do realise that production and pre-release software is kind of an oxymoron? Regardless, the choice seems deliberate, so what are you trying to communicate here?

Because if I can put my bad faith hat on for a minute (wait, I already had it on), the situation sounds like that famous proverb about having cakes and eating them.

You launched ECS (which by the way, I find it really funny how the blog post does not mention that ECS is a pre-release : https://blog.unity.com/technology/2022-2-tech-stream-available . Did I say funny? I meant manipulative), but you also want to be able to say “well it’s a pre-release, of course it crashes and makes your computer explode taking the whole city block with it, it’s a pre-release, what were you expecting?”, I can already see the posts from some of your community cronies.

2 Likes

Thanks for the feedback Acid! We’re leveraging our package lifecycle taxonomy to describe our releases. As you’ve seen in the previous quarters, we’ve been sharing experimental versions of ECS for Unity. This release marks a major milestone of achieving the “Pre-release” state, which means ECS for Unity is on the release track. That means that Unity fully supports it and commits to officially releasing them by the end of the current LTS cycle (for example, 2022.3) at the latest.

Hope that makes sense!

9 Likes

That’s the thing, it doesn’t make sense. You are confident enough to call it “production ready”, but not confident enough to call it “released”? I don’t think it should be called “production ready” if you can’t call it “released”. It’s confusing and counterintuitive.

5 Likes

Makes perfect sense to me. Not confused at all. Thanks for the excellent updates guys. :slight_smile:

3 Likes

Was expecting a little more info about Unity’s new animation progresss, since all original parts of ECS(Entities, hybrid render, physics, netcode) are moved on except animation.

It’s been quite a long time since unity anim developing has improved, the futuristic Kinematica has no info at all, the robust Mecanim stays hybrid as always, the Dots anim has been “highly experimental” for years and cut compatibility with any new advanced ECS in 2022.

When do I get to try this “less experimental” animation out, to feedback more of course? Is it going to be compatible with latest Entities & DOTS?

Have a good holiday~

3 Likes

Where is the sample of ECS WebGL?I can’t find it.

1 Like

Do you have any concrete time frame for the release of these new Samples and Guide?

Hello, just checked the asset store page, and it seems that Rival is still on v0.51. Is the update publishing soon? Cheers :).

On this topic. Specifically talking Android. What is the compatibility compared to older versions of DOTS?

I understand the biggest limiting factor for Android mobiles was support for Vulkan. Because most mobile devices have no or little support for Vulkan than compatibility with ECS (or more specifically DOTS) is limited. Is this still an issue?

EDIT: Similar question with WebGL. Is the improved support?

2 Likes

The update is now available!

Store: https://assetstore.unity.com/packages/tools/physics/rival-dots-character-controller-for-unity-225129
Docs: https://github.com/Unity-Technologies/rival-documentation
Samples: https://github.com/Unity-Technologies/rival-samples

12 Likes

In the upgrade manual it says to use the following workflow:

var world = SystemAPI.GetSingleton<PhysicsWorld>() ;

No matter what I try. I cannot get it working.
So obviously something has changed and the upgrade guide is not valid.

Is there a plan on better upgrade manual/improvements?

edit. Managed to find this from samples.
I’ll just assume this is the new way

 var world = SystemAPI.GetSingleton<PhysicsWorldSingleton>().PhysicsWorld;

In the known issues doc, should this first Forward be the Forward+ (plus) rendering or is this saying there’s a problem with base Forward and ECS and XR?

  • Forward does not support XR platforms yet. Forward is required for full URP Local Lighting support. Regular URP Forward only supports directional light. URP Deferred supports basic local lighting but not reflection probes.
2 Likes

Thank you for flagging that, there was an error in rendering the + sign on our roadmap. Here is the intended message, and the roadmap card has been updated as well.

  • Forward+ does not support XR platforms yet.

  • Forward+ is required for full URP Local Lighting support.

  • Regular URP Forward only supports directional light.

  • URP Deferred supports basic local lighting but not reflection probes.

1 Like

Same question here

Hello creators! The updated ECS samples and the ECS Network Racing sample are now available. Please let us know if these are helpful in your ECS for Unity journey. Thank you, and happy holidays.

12 Likes

Hey silveryw, you can find a generic sample illustrating a workflow to WebGL or any other supported platforms here. You will be able to use ECS data, sync to a GameObject, render using Unity’s existing render pipelines and build towards your targetted platform.

1 Like

Is physX now supported with entities? I am using the unity third person starter assets which uses the phsX collider and its interacting with the entities without any issues! (not using unity ECS physics anywhere)


All objects are converted to subscenes (not the Third person controller)

Even the Cinemachine camera interacts with the entities (in the second pic)
I this new feature or bug? As far as i know entities only support unity physics, not physX :roll_eyes:!?
Using Entities 1.0 prev 15, 2022.1f1, and entities graphics

There is some form of authoring bridge between dots domain and MB and therefore physX.

Someone may know more about it.

But I do expect, for tons of entities and physical interactions, PhysX will be slower than DOTS one.

However, for many application difference may be not noticeable, where there is not that many dynamic world instances.

DOTS physics is CPU based.
Edit:
Unity PhysX is CPU based, due to cross platform compatibility requirements.
However on the note side:
PhysX hardware acceleration is GPU based.

3 Likes

No