Unity have recently released the Entities 0.5 experimental ECS package, a key part of of the DOTS or Data Orientated Technology Stack, as well as providing an update on the DOTS development roadmap. While the Entities 0.5 release will certain be welcome news for Unity developers waiting for DOTS, several of the announcements in the roadmap will probably be less welcome.
First on the Entity 0.5 release, highlights include:
- The Entity Debugger window has been replaced with several new windows that are now more embedded within the Editor:
- Entities, Components, and Systems windows to search, select, and inspect via the Inspector
- A Hierarchy window that shows the full Entities hierarchy and allows for selection of entities
- Archetypes window to show all current archetypes and details for each
- Two new Profiler modules to profile ECS structural changes and memory:
- Entities Structural Changes profiler module can record which world/system produced a structural change, and how much time it cost per frame
- Entities Memory profiler module can record which world/system allocates memory chunks, with additional details per archetype
- Entities Journaling to record and explore ECS events, using static APIs and the IDE Watch window, and understand data lifecycles and debug your game
- Note: The com.unity.dots.editor package has been merged with com.unity.entities
System and Entities API Improvements
- A new simplified
SystemBasetype that allows for implicit job scheduling and the ability to schedule jobs to run both sequentially and in parallel
Entities.WithFilter(NativeArray<Entity> entities)allows filtering
Entities.ForEachso that it only iterates over a set of entities
IJobEntityjob interface, for implementing re-usable and burstable jobs that iterate over entities
- The list of chunks matching an EntityQuery is now automatically cached internally, significantly improving the performance of most EntityQuery operations between structural changes (especially in titles with high empty archetype counts)
- Visibility into the generated C# code for inspection and debugging
- The most commonly-used Entities types now have debugger type proxies, significantly improving the ease of inspecting their state during in-IDE debugging sessions
- More debug functionality is available in standalone builds, including debug checks and per-Entity debug names
- Physics can be predicted, making it possible to build games where players are directly interacting with and affecting physics objects in the world.
- Ghosts can switch between being interpolated and predicted at runtime. This allows a client to dynamically predict everything that is close or important without paying the cost of predicting everything.
- Improved support for streaming sub-scenes and loading prefabs on demand across various client-server configurations.
- Commands can be sent without explicitly setting the command target on the connection, enabling a client to control multiple ghosts. This also enables changing which ghost a client is controlling at runtime – for example when entering a vehicle.
- The code-gen has changed to source-generators, making them more robust and less likely to go out of sync.
- Hybrid Renderer V2 (HRV2) is now the default option and replaces Hybrid Renderer V1 (HRV1), which has been removed. This ensures users are now supported with a GPU-persistent data model, removing the main thread bottleneck of HRV1, and improving render thread performance.
- HVR2 also has a broader compatibility with a range of shaders, and equips users with previously missing HDRP and URP features.
Unity Physics and Havok Updates
- Collision and trigger events now share a common interface, and simulation systems have been refactored to allow multiple physics worlds.
- Integration between Unity Physics and the Universal Render Pipeline (URP) has been improved, with new shaders in the sampler, and URP compliant materials.
In terms of the DOTS roadmap, several announced projects have been paused, while others such as Animation have been pushed back in the timeline. Paused/stopped projects include ECS Audio, ECS Visual Scripting and Navigation as well as the DOTS runtime.
You can learn more about Unity Entities/ECS and the updated DOTS roadmap in the video below.