Search Unity

What is the futur of ECS in terms of accessibility for users ?

Discussion in 'Entity Component System' started by anthonov, Jul 1, 2019.

  1. anthonov

    anthonov

    Joined:
    Sep 24, 2015
    Posts:
    160
    Ok ECS can makes things faster, but for now its hard to implement in my point of view.

    From https://github.com/Unity-Technologies/EntityComponentSystemSamples
    "The Entity Component System offers a better approach to game design that allows you to concentrate on the actual problems you are solving"

    Result :
    I have now to learn how to write and make ECS and JOBS working in a technical way that have not much to do with the problems i am solving.
    I have to write thing related to :
    • IComponentData
    • ISharedComponentData
    • ISystemStateComponentData
    • ISharedSystemStateComponentData
    • Archetypes.
    • Chunks.
    • IJobForEach
    • IJobForEachWithEntity
    • IJobChunk
    • IJobParallelFor
    • IManyMore....
    This feel way too much technical if the goal is to reduce complexity just for handling data.
    This may reduce complexity on the computer side, but its increasing on the human side.
    I hope Unity's internal developers will understand this and will make things better in the next iterations.
    Or explain me why im wrong.
     
  2. 8bitgoose

    8bitgoose

    Joined:
    Dec 28, 2014
    Posts:
    448
    I don't think learning Jobs / ECS / DOTS is any different from learning OOP. You are just learning a new language / structure and it sucks from the start. In a way, ECS is a much better way to program since you break your worlds down into systems which only act on a small number of data points.

    It may be easier to understand from a beginners point of view if they have never run into OOP. I initially learned ECS when I was programming and it made perfect sense when I knew nothing else of OOP.

    You may just be frustrated cause this is the first time you've learned a new coding pattern! I am feeling it too, I've had to do way crazier stuff to do something that would be simple in OOP, but I've also got crazy performance gains and solved some issues that I would have in OOP.

    And of all the things you listed, you really only need to understand IComponentData, IJobForEach and JobComponentSystem to do simple stuff. Getting good with archetypes and chunks is pretty advanced.
     
    xVergilx, psuong and jdtec like this.