Welcome to the DOTS forums!

Welcome!

Welcome to the Entity Component System and C# Job System sub forum.

Here you can find the resources required to start building with these new systems today.

What is available today
We have been working on a new high performance multithreaded system, that will make it possible for games to fully utilise the multicore processors available today without heavy programming headache. This is possible thanks to the new Entity Component System which provides a way to write performant code by default. Paired with the C# Job System and a new math-aware backend compiler technology named Burst. Unity can produce highly optimised code for the particular capabilities of the platform you’re compiling for.

These new systems work with Unity 2018.1 and newer versions.

Entity Component System
Offers a better approach to game design that allows you to concentrate on the actual problems you are solving: the data and behavior that make up your game. It leverages the C# Job System and Burst Compiler enabling you to take full advantage of today’s multicore processors. By moving from object-oriented to data-oriented design it will be easier for you to reuse the code and easier for others to understand and work on it

The Entity Component System ships as an experimental package in 2018.1, and we’ll continue to develop and release new versions of the package in the 2018.x cycle. It is important to stress that the Entity Component System is not production ready

C# Job System
The new C# Job System takes advantage of multiple cores in a safe and easy way. Easy, as it’s designed to open this approach up to user scripts and allows users to write safe, fast, jobified code while providing protection from some of the pitfalls of multi-threading such as race conditions.

The C# Job System ships in 2018.1.

Burst
Burst is a new LLVM based math-aware backend Compiler Technology makes things easier for you. It takes the C# jobs and produces highly-optimized code taking advantage of the particular capabilities of the platform you’re compiling for.

Burst ships as an experimental package in 2018.1, and we’ll continue to develop and release new versions of the package in the 2018.x cycle. For the current package release, Burst only works in the Unity editor. It is important to stress that Burst is not production ready

Watch Joachim Ante present these new systems at Unite Austin

17 Likes

@MartinGram

  • Thank you for compiling all this into a new Sub Forum and providing all the initial info.
  • It would be great if you could provide a simple instruction on how to start on an empty project.

My steps - they look wrong but worked somehow in the end:

  • Downloaded beta linked above → result: no ECS
  • Enabled .NET 4.x runtime → result: no ECS (not sure if this is a required step)
  • copied the manifest.json from your examples into my project → result: some signs of ECS (but Unity.Entities, Unity.Mathematics and a few others missing)
  • Restart Unity a few times, clicking randomly around (kind of banging on the fridge and it suddenly works again) → it seems to be working (i think i see all the libraries under Unity.)

Let’s start playing with it…exciting.

Is there an API documentation yet? some things like Unity.Burst / Unity.Jobs seem to be already in the Scripting API documentation — is there something for Unity.Entities yet?

3 Likes

Will this be compatible only with the preview build or can we use the regular beta versions?

@sngdan Thanks for the feedback. I will provide better “Getting started” instructions once GDC winds down a little bit. :slight_smile:

@Enrico-Monese In time you will not need to use the preview build. Some changes sadly didn’t make it into 2018.1b12, but we hope that they will land soon.

@MartinGram Good to hear! :slight_smile:

Wow! I won’t be able to look into this until tonight but I’m super curious what that Entity-Component system is about, any way to encourage my fellow coders to adopt more data-oriented methods is niiice

Yes it is

Thank you, for sharing this, can’t wait anymore to try ECS )

Hooray!
got cube moving with ecs, this is awesome )

Another step is that you have to enable jobs, by adding ENABLE_MANAGED_JOBS to the scripting define symbols in the player settings, or else this doesn’t compile.

there is also a warning from one of the tests :

C:/ProgramData/Unity/cache/packages/staging-packages.unity.com/com.unity.entities@0.0.11/Unity.Entities.Properties/TypeInformation.cs(150,13): warning CS0162: Unreachable code detected.

Just saying :slight_smile:

2 Likes

Is there estimate when we’ll get Burst that runs on standalone builds so we can properly benchmark it? Like, is that still planned for 2018.x?

Burst with AOT is planned for 18.2

2 Likes

Hi There

How can I use ESC at all and where to find Package or repo or something to make it work?
Tried to search or read forums for simple reference where it take from.

what I have is: https://content.screencast.com/users/Jes28/folders/Jing/media/dabe0691-dacf-4d6a-a32a-81c47a50cd9c/2018-03-28_0935.png

or if I hard patched packages.json or just download Any Sample from UnityESCSamples I Have this:

Open Package Manager, try update or install ECS (for empty project), also Reimport All for Asset folder, oh and set .NET 4.x for Scripting Runtime Version

I have this problem too, simply no signs of ECS in b12 :frowning:

Yes the same issue, there is no ECS in PackageManager

Did you follow post#2 in this thread?

-you need the right b12 (the one linked in post#1)
-you need the manifest for the packages in your project
-you need to set player to 4.6

Thanks custom build from this thread works :slight_smile:

Because you must have packages in manifest.
3441702--272371--upload_2018-3-28_14-45-14.png

What about this? macOS High Sierra



3441757--272384--snap2.png
3441757--272385--snap3.png
3441776--272387--snap4.png

1 Like