DOTS Sample project now available
At Unite Copenhagen 2019 we revealed the DOTS Sample project, a whitebox, third-person shooter demo showcasing the various new DOTS technologies in action together (including Unity Physics, NetCode, Hybrid Renderer, and Conversion Workflow).
The DOTS Sample is a simple environment that demonstrates how the DOTS packages work together in a multiplayer shooter game in Unity 2019.3. While we designed it to be an internal test project, feel free to download and experiment with it. It’s available on GitHub and includes all source code and assets.
Conversion Workflow (Experimental)
The new DOTS Conversion Workflow enables you to convert your GameObjects to the DOTS-based entities with one click then take advantage of DOTS for your existing workflows. For example, you can use GameObjects for rapid level-design iterations and then simply convert them to entity representation at runtime. The new Entity Preview Inspector lets you see how your GameObjects turn into DOTS entities.
This conversion process enables you to easily translate GameObjects and the classic authoring workflow concepts into runtime data that is efficient and streamable. You get the best of both worlds: rapid, intuitive workflows when working with your game world in the Editor, combined with the hyper-ECS-optimized and streamable run-time data that provides massive performance gains.
Unity Animation (Experimental)
The new animation system for DOTS-based projects offers the core animation functionality such as animation blending, IK, root motion, layers and masking, with more features coming. It’s now available as an experimental package through our DOTS Sample project.
DOTS game code updates (Preview)
With this DOTS release, programmers don’t have to write as much boilerplate code. You can replace custom authoring components with a simple [GenerateAuthoringComponent] attribute, and replace those verbose IJobForEach and IJobForEachWithEntity constructs with the simpler-but-just-as-fast Entities.ForEach(), which now uses the Burst Compiler and the C# Job System.
Install the Entities package (Preview) from the Package Manager to get started writing DOTS code the new way.
The DOTS Sample project leverages the new stateless Unity Physics system for collision detection and spatial queries. The engine is written in C# / HPC# and demonstrates what can be achieved with the Burst Compiler. Thanks to the new Physics engine we’re able to do fast and accurate collision detection for players, environments, and projectiles, as well as resolve hit detection. Unity Physics also powers the character controller in the sample and use cases such as the precise and performant foot-placement system in the DOTS Sample project.
The FPS NetCode used in the DOTS Sample is built on top of DOTS and makes it easy to create networked games with similar architecture. It provides client-side prediction, authoritative server, and interpolation thanks to the network-friendly data protocol. Get an introduction to FPS NetCode from Tim Johansson’s Unite talk.
We’re also continuing to work on the audio mixing and rendering system for DOTS. Specifically, we’ve rewritten DSPGraph, our new low-level audio engine, for higher performance and added the ability to execute subgraphs that don’t contribute to the graph output. That means that you can, for example, plug a node into the middle of an audio graph that’s counting beats per minute, but it won’t affect the audio signal.
Join the DOTS audio discussion forum to ask questions or share your audio needs with us.