Intro to Unity ECS
This gitbook explains "how" to implement ECS in Unity. It does not explain "what" ECS is, but we make sure to provide links to external resources throughout the gitbook that explain the "what."

What you'll develop in this ECS section

Functionalities included

    Sub Scenes and conversions
      Setting components and variables during conversion
    Using EntityManager to make structural changes
    Using command buffers to make structural entity changes
      Setting up command buffers to run parallel jobs with CreateCommandBuffer().AsParallelWriter()
    Adding, setting, and removing components
    Generating authoring components and IConvertGameObjectToEntity interfaces
    Entity queries and .ForEach()
      Setting local variables for entity queries
      Scheduling a job with .Schedule()
      Scheduling a parallel job with .ScheduleParallel()
      Running on the main thread with .Run()
      Combining job handles with JobHandle.CombineDependencies()
    Create and destroy entities programmatically
    Create and move entities based on user input
    Create an entity from a prefab
      Adding cameras to entities
    Hybrid ECS
    New Build Configuration system
      Creating a base shared configuration
    Sub-second "play" start

Entity Component System (ECS)

If you can spare 32 minutes listen to Far North Entertainment explain Unity's ECS and their hybrid approach (A MUST-WATCH IF HAVE NEVER WORKED WITH ECS)
If you can spare 64 minutes listen to Blizzard's Timothy Ford explain general concepts in ECS (Not Unity-specific ECS, actually Blizzard's own game engine, but the architectural concepts are the same) <-- ESPECIALLY RECOMMENDED FOR NETCODE
If you can spare 42 minutes listen to Unity's 5-part series overview of ECS: Part 1, Part 2, Part 3, Part 4. Part 5 for more explanations of ECS
If you can spare 23 minutes listen to Code Monkey explain ECS
If you can spare 9 minutes listen to Brackeys (RIP πŸ’€) explain ECS
...and if you can spare 0 minutes to understand ECS:
So, yeah... Watch at least one of the videos. Top rec is the first one (Far North Entertainment)

πŸ˜ƒβ˜― Learning Unity ECS will be worth it! Look at these performance gains:

Screenshot from the Far North Entertainment video above.

😳 ☯ Unity ECS will be painful at times (costs of ECS):

Sure, ECS is exciting, but from the Forum threads we linked to above, you can see that there is plenty of complexity that needs to be managed.
Learning a functional programming paradigm can be difficult. Shifting out of a OOP mindset dominance can be difficult, too. ECS demands both, to some degree.
Luckily, Unity's current ECS architecture is actually a hybrid (of both Monobehaviour and ECS), which eases you into the data-oriented paradigm if you are totally new to it.

Unity resources

Read the high-level overview of how Unity thinks about and implements ECS: https://docs.unity3d.com/Packages/[email protected]/manual/ecs_core.html​
Read through the explanation of Unity's "Entity Debugger" which will be used extensively in ECS development: https://docs.unity3d.com/Packages/[email protected]/manual/ecs_debugging.html#entity-debugger​
Unity documentation for Unity.Entities 0.17.0-preview.21: https://docs.unity3d.com/Packages/[email protected]/manual/index.html. Refer to this for more information.
Unity forums for DOTS: https://forum.unity.com/forums/data-oriented-technology-stack.147/ . Pretty responsive to questions.
Big brain discussion on ECS vs. GameObjects: https://forum.unity.com/threads/whats-your-opinion-on-ecs-video-by-bobby-anguelov.1029871/ . If you are a bit more hardcore.

To be best prepared for the code-alongs

    Watch an ECS explanation video(s)
    Read through Unity's high-level overview
    Read through Unity's "Entity Debugger" explanation
Last modified 6mo ago