Search Unity

DOTS/ECS as a beginner

Discussion in 'Getting Started' started by vonbixler, Sep 1, 2020.

  1. vonbixler

    vonbixler

    Joined:
    Jul 20, 2020
    Posts:
    4
    Hi all,


    Hopefully this is the right forum for this! So as the title says, I'm new to Unity and (mostly) new to programming in general: I've done some website stuff and made some sporadic attempts to learn various programming languages in the past; But basically, I'd say I have a rudimentary understanding of programming but almost no real-world experience. Always thought about getting into game design as a hobby and figured hey, there's no time like the present (especially when the present has a pandemic keeping you home all the time!).

    Unity seems like a natural choice for beginners so started reading up and doing some tutorials; In the course of doing so the whole move towards DOTS/ECS came up. From my limited understanding it seems like a great direction to go while learning, particularly as the main argument against using it seems to be that's it's "not what we're used to." Well, as a beginner I'm not used to anything so that's really no barrier to me; But here are my questions:

    -There are obviously innumerable resources out there for learning coding, game design, and Unity specifically; However, most coding resources seem heavily slanted towards OOP, and the majority of beginner Unity tutorials are built around the GameObject/Monobehavior paradigm. Is there a point at which leaning too heavily on these kinds of things would actually be counterproductive? In other words, if I know I'd like to use the ECS style down the line, would I be learning coding/design habits that I would just have to unlearn later?

    -If that is the case, what would be a better approach to developing those skills and getting some practice? There are certainly some tutorials out there but many of them seem directed to those who already use Unity and are trying to change to ECS, or are used to coding in an OOP style. Does anyone know of any good resources for learning an ECS approach from the ground up?

    Thanks in advance for your help and advice!
     
    Joe-Censored and GilbertoBitt like this.
  2. Schneider21

    Schneider21

    Joined:
    Feb 6, 2014
    Posts:
    3,512
    Welcome to the forums, and to starting your journey in game development! Please bear in mind that the following words are merely my own perspective, and any opinions contrary to mine are perfectly valid as well.

    I'm gonna recommend you get started using the more traditional style (OOP, GameObjects, Components, etc). There are tons of resources already available to learn from, and if you're just starting out, frankly, I feel it's easier to wrap your head around that style (though, to be fair, I'm only still learning ECS now, so maybe that's affecting my view).

    My understanding is that Unity's current implementation of ECS isn't pure anyway, but rather using a hybrid style that still relies on GameObjects, so having knowledge of the traditional workflow would be useful in any case. And even if you were using pure ECS, you still have to understand how the C# language (which is object-oriented) works and make use of collections, methods, classes, etc.

    I think that having a solid grasp on how to do things the traditional way will make you appreciate and understand ECS better once you get there. Being a developer means learning many different libraries, languages, styles, and practices. The more tools you have in your toolbox, the better you'll be able to select the right one for each task you encounter. Never be afraid to learn one thing thinking it'll affect your ability to learn something else. And never wait for something that's in beta to be finished before getting started!

    Dive in. Immerse yourself and learn as much as you can, and if you have any questions, you can always post here and the community will be happy to point you in the right direction.

    Good luck!
     
    Ryiah, vonbixler and Joe-Censored like this.
  3. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    ECS/DOTS is generally considered a relatively advanced topic compared to MonoBehaviours. I wouldn't start with it as a beginner. It is also unnecessary for typical small beginner projects. It is intended to benefit projects which would otherwise be performance limited with Unity's traditional all your code on the main thread approach. So most helpful for large complex projects with lots of moving parts needing lots of calculations across many CPU cores in order to hit performance targets.

    For example, if you were simulating an entire city with all its cars and people moving around independently, that sounds like a project for ECS/DOTS. If you're just trying to roll a ball around, make a Frogger or Flabby Bird clone, etc, ECS/DOTS is probably just unneeded complexity IMO. YMMV

    But the ECS/DOTS forum probably has more information than anywhere else on the forum. It is over in the Betas and Experimental Features area (as it isn't done yet).

    https://forum.unity.com/forums/data-oriented-technology-stack.147/
     
    vonbixler and Schneider21 like this.
  4. vonbixler

    vonbixler

    Joined:
    Jul 20, 2020
    Posts:
    4
    Thanks for the helpful replies! I guess that was one of the things I was wondering, whether ECS is objectively more complicated, or is just considered difficult because people are used to doing things differently. Schneider21, you make a very good point about not waiting around for it to be fully implemented though... Seems like at this point the final implementation may end up changing anyway!

    Joe-Censored, that's funny that you mention a city builder, that's actually exactly the kind of project I'm aspiring to build... But at this point it seems like it would way too much to bite off for a first attempt, so planning to try a few simpler games first before tackling that. Thanks for the link, I'll check that out!
     
    Joe-Censored and Schneider21 like this.
  5. Schneider21

    Schneider21

    Joined:
    Feb 6, 2014
    Posts:
    3,512
    You've got the right idea! Start SUPER small, finish something the whole way through, and build on what you learn. Don't rush towards your dream project just yet, as that'll only set you up for frustration and failure.

    And never hesitate to come to us with questions and stuff. This is a great group of people to keep you going!
     
    nuxmakesgames and Joe-Censored like this.