Search Unity

New to Unity - should I start using DOTS or should I learn basic Unity first?

Discussion in 'Entity Component System' started by Gumaa, Jul 28, 2021.

?

Should I start using DOTS or should I learn basic Unity first?

  1. Learn basic Unity

    53 vote(s)
    88.3%
  2. Go for DOTS

    7 vote(s)
    11.7%
  1. Gumaa

    Gumaa

    Joined:
    Jun 4, 2017
    Posts:
    1
    I would like to try to make a game and I think performance gain of using DOTS will be very beneficial for my project. But other than watching couple of YT videos and following tutorials I'm fairly new to Unity and never made an actual game from scratch.

    So I'm curious - is it good idea to jump right into DOTS without learning the basics and getting somewhat competent in Unity?

    I wonder is it better to start with clean slate and start working with this different approach from the beginning or is it pretty much required to be competent in Unity before going into more advanced stuff?
    Or even if it is not strictly required does lack of tutorials and documentation could be an issue for a beginner?
    Or maybe this feature isn't ready to be used in actual game and it is only for poking around?

    I'm really eager to try it but don't want to step on a mine right from the beginning.

    Currently I'm software engineer (mostly full stack webdev) so I have some programming background but not so much in C#.
     
  2. No. If you're new to either Unity or C#, it's a good idea to learn classic game objects first. For DOTS you would need to actually develop a lot of things for yourself since the support systems aren't there yet.
     
  3. Krajca

    Krajca

    Joined:
    May 6, 2014
    Posts:
    347
    But why learning OOP paradigm when you don't need it? Assuming DOTS is your target. You can learn to do stuff in DOTS from the beginning.
     
  4. He mentioned he is a full stack webdev, he probably knows the OOP paradigm already.

    clarification: I think it is useful to learn Unity's ins and outs through game objects even if you later move to ECS for multiple reasons, like learning the asset database, the editor quirks, etc, but mainly because you can learn how the renderer works. Also even if you try to approach your game from ECS, you will need to write a ton of things in the game objects style, learning it is more than useful.
     
  5. kablouser

    kablouser

    Joined:
    Dec 14, 2018
    Posts:
    5
    The learning process will be harsher for DOTS due to: less documentation, fewer examples, fewer resources. As a beginner you should choose the easiest to learn route.
    IMO, that is the ONLY valid reason to pick up DOTS as a beginner. Even then, I would recommend implement it without DOTS, then evaluate whether the performance is essential. If so, you can implement DOTS afterwards.

    PS. Hope you know about Jobs (scheduelling multithreaded work) in basic Unity.
     
  6. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,779
    How do you know it will be beneficial to you? What kind of game you want to make? What games did you made so far?

    Starting with DOTS will hinder you into stall, if you don't know Unity and for other reason mentioned by others.

    Crate multiple prototypes in classical OOP way. Learn and understand Unity software. Learn to use profiler and how to measure performance.
    Work toward data oriented design, by writing game/prototypes in such way.
    Learn how to use jobs and burst of DOTS. Mind, you will need strong c# background.
     
  7. DreamingImLatios

    DreamingImLatios

    Joined:
    Jun 3, 2017
    Posts:
    4,271
    The advice I am about to give is based on the following assumptions:
    A) Your goal is to get up and running on development for your game idea quickly.
    B) You started looking at Unity because Unity solves problems related to operating systems, toolchains, asset imports, and authoring tools.
    C) Your game idea is actually well-suited for DOTS.
    D) You find the concept of decoupling data and logic somewhat intuitive.
    E) You are willing to give up out-of-the-box runtime features in exchange for better control over your gameplay loop and the logic that runs within it.

    So if all that is true, then the first thing you want to do is make a small game using classical Unity. And when I say small, I mean 48 hour game jam small plus a little bit of polish so you cover the essentials. Get familiar with the editor. Get familiar with the classical GameObject representation, components, and how they work and interact. Publish the game on itch.io or something. If by this point you still feel iffy about C#, repeat until you are a little more comfortable.

    The second thing you want to do is prototype something that requires using jobs and Burst in order to obtain performance targets. It doesn't have to be a full game. You just want to understand those fundamental tools, because everything else in DOTS is built on top of them. If you need an idea, here's an example I created a while back: https://github.com/Dreaming381/HeartPromoDOTS

    And then finally, dive into DOTS. You don't need a lot of knowledge of classical Unity to use DOTS because a lot is different. Most of the things that overlap you'll gain familiarity with by going through the previous steps.
     
  8. TheOtherMonarch

    TheOtherMonarch

    Joined:
    Jul 28, 2012
    Posts:
    867
    What should be my first car

    1: Honda Civic
    2: Baja trophy truck
     
    Nang-Nang and tatelax like this.
  9. RoughSpaghetti3211

    RoughSpaghetti3211

    Joined:
    Aug 11, 2015
    Posts:
    1,709
    I’m one of the 2 fools that voted YES. because I’m the type of person that likes to play games on the hardest difficulty setting with no save option.
     
    Nang-Nang likes this.
  10. apkdev

    apkdev

    Joined:
    Dec 12, 2015
    Posts:
    284
    Definitely start with classic Unity. In the long run, I expect DOTS to be more classic-Unity-like (at least on the editor/authoring side of things), because they'll need to convince the community to switch over somehow.

    Keep in mind that you can partially opt-in to DOTS if you need to boost your game's performance, by converting parts of your code to the Job System and Burst-compiled functions. You can do this pretty much at any stage of development.
     
    april_4_short likes this.
  11. calabi

    calabi

    Joined:
    Oct 29, 2009
    Posts:
    232
    I'm a big fan of DOTS, but no way would I recommend someone start out with it or even us it in general. Only if you feel you have a specific need to use it like lots of objects and have no real need for animations or a user interface or you really enjoy torture(joke its not quite that bad).
     
    Last edited: Jul 29, 2021
  12. kablouser

    kablouser

    Joined:
    Dec 14, 2018
    Posts:
    5
    Honda Integra DC5. But if you have a fat million burning a hole in your pocket, a Baja trophy truck is a good choice.
     
  13. exiguous

    exiguous

    Joined:
    Nov 21, 2010
    Posts:
    1,749
    I would also recommend against using ECS (the other parts of DOTS are fine to use IMO). The reason is, it's gotten quite silent around it in the last half a year. When two years ago question were asked, Unity staff answered many of them. In the last half a year not so much. Even when Unity staff people are pinged they do not respond. There has been no update to ECS in that time, when usual update cycles were 2-3 months. Some forum people make the IPO responsible for this silence but to me the future of ECS looks uncertain. This complete "lockdown" of updates and communication is not a good sign. I would be happy to be wrong. But if I were you I would use whats already there and not "hope" that your studies and experiments are not a dead end.
    If this "dead in the water" behavior would be shown with an early access game it would probably be considered vaporware.
    So I'm a bit pessimistic about the future of ECS. This "sudden" 180 degree turn in hyping and open communication is very discouraging from my POV.
     
    Gumaa and thelebaron like this.
  14. Tony_Max

    Tony_Max

    Joined:
    Feb 7, 2017
    Posts:
    353
    I'm really advise you to learn basics even if you know OOP, even if your game needs performance
    1) Developers worked for years without any DOTS had appeared so you can learn optimizations with no DOTS
    2) Burst and Jobs, which are part of DOTS, are AFAIK is in release stage and can be used out of Unity.Entities package which by itself is unity ECS realization with jobs and burst using under the hood
    3) It is good to learn both classic OPP and DOD paradigm to know what benefits you get and what you lose
     
    Krajca likes this.