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