Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Is there a list of Unity features that do not work in ECS yet?

Discussion in 'Entity Component System' started by Arowx, Jun 23, 2018.

  1. Arowx

    Arowx

    Joined:
    Nov 12, 2009
    Posts:
    8,194
    I just think it would be handy to have a list of Unity features not yet in ECS that the community could maybe write solutions or work arounds for.

    It could also work like an ECS roadmap giving developers an idea of what is in the works or already in the latest version.
     
    Last edited: Jun 24, 2018
  2. hippocoder

    hippocoder

    Digital Ape Moderator

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    I would say "everything" pretty much, as ECS will need it's own versions of things. Think your post is about a year early :)
     
    Lurking-Ninja likes this.
  3. Necromantic

    Necromantic

    Joined:
    Feb 11, 2013
    Posts:
    116
    I agree, the Job System is used in some things by now, but ECS is still its own thing. We have the core system and we can build around and that's pretty much it.
     
  4. PhilSA

    PhilSA

    Joined:
    Jul 11, 2013
    Posts:
    1,926
    Like @hippocoder said, pretty much 'everything' doesnt work with ECS. More specifically, everything that was in some way related to gameobjects, (old) components and monobehaviours. That means:
    • Physics
    • Animation (both mecanim and playables)
    • Skinned meshes
    • UI
    • Prefabs
    • Particle systems
    • Terrain system
    • Timeline
    • UNET HLAPI and all other asset store networking solutions
    • etc...
    APIs that didn't rely on any specific monobehaviour types like the UNET LLAPI, navmesh LLAPI, and the Graphics.DrawX stuff should still be mostly fine (i think), but they might need more direct support for native containers and new math types to avoid unneccessary conversions

    Don't let this discourage you, though. The ECS is one of the best things to ever happen to Unity, in my opinion. It'll allow us to rebuild a much superior engine based on all the knowledge of what went wrong and what went right that Unity has accumulated over the years, but could never put in practice because the changes would've broken too many things
     
    Last edited: Jun 23, 2018
    Muhamad_Faizol, Afonso-Lage and RaL like this.
  5. hippocoder

    hippocoder

    Digital Ape Moderator

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    For me, it's intriguing and a great time to be a Unity developer. ECS is a big part of my plans :)
     
    RaL, avvie and Lurking-Ninja like this.
  6. starikcetin

    starikcetin

    Joined:
    Dec 7, 2017
    Posts:
    335
    You spoke my mind.
     
    avvie and hippocoder like this.
  7. 5argon

    5argon

    Joined:
    Jun 10, 2013
    Posts:
    1,554
    You might be confused about ECS and threaded Jobs? Currently pretty much everything works in ECS (as in working in the system (S) and being able to be represented as a component (C) and therefore lives on the entity (E)) because the existence of ComponentArray so you can inject and use every existing MonoBehaviour in ComponentSystem. (Even GameObject injection is internally ComponentArray<Transform>)

    But in jobs pretty much everything does not work. It is rather a threading problem than ECS. Things that works in jobs is currently Transform which you have TransformAccess/Array.

    And then we have a semi-threaded approach like calculating things in jobs with NativeArray and after it is done use that directly as an input for Unity's function, so we don't have to copying data. I think is coming soon for Graphics.DrawMesh/Instanced.
     
    Brad-Newman likes this.
  8. Necromantic

    Necromantic

    Joined:
    Feb 11, 2013
    Posts:
    116
    Well I've been trying a lot of ECS solutions in the past, but I never really found one I liked. On top of it the Unity implementation is super optimized and made to work with multithreaded Jobs. It'll probably also be super convenient for multiplayer and other types of data streaming. I'm actually looking forward to their Multiplayer FPS example with pure ECS.
     
    hippocoder likes this.
  9. avvie

    avvie

    Joined:
    Jan 26, 2014
    Posts:
    74
    Studying how the team will implement the netcode for an fps game will be pretty interesting. as all networking archetypes have their own flair when it comes to handling them.
     
  10. Necromantic

    Necromantic

    Joined:
    Feb 11, 2013
    Posts:
    116
    For me the data sync approach is always one of the most interesting part of any networked game. For the ECS where the state of an object is defined by pure component data this should feel really natural. Also interested in how they are going to do lag compensation / prediction / extrapolation etc.
     
  11. Afonso-Lage

    Afonso-Lage

    Joined:
    Jul 8, 2012
    Posts:
    70
    For the networking, the current implementation of ECS is a piece of cake. All data live in structs and structs lives in chunks of linear memory. You just need to copy from the memory and send over the wire this. You can already do it without much effort, just using serialization features (which are'nt complete yet).

    What I'm looking for is if Unity team will stick with some protobuf, if they will extend UNET LLAPI to work with ECS out of the box or if they are going for a different approach.
     
    Last edited: Jun 27, 2018
    zulfajuniadi likes this.