Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

When is DOTS going to be viable for commericial deployment?

Discussion in 'Entity Component System' started by SoftwareGeezers, Dec 4, 2020.

  1. SoftwareGeezers

    SoftwareGeezers

    Joined:
    Jun 22, 2013
    Posts:
    902
    My current project is 2019 using classical Unity. I'm super excited about ECS as it fits my thought processes better than object oriented and fits the hardware so much better. After seeing the past years of DOTS development, I'm excited to swap over to the whole DOTS system for my next big cross-platform project. And prior to that, I was going to create a little mobile app to learn the ropes. Only I've run into the problem of the package not being visible, which has led me to learn it's considered too experimental to even show in the editor as a Preview package.

    So what exactly is the timeline for DOTS becoming mainstream? Should I forget about DOTS until it moves out of preview, and have to rewrite my game at that point? Or is it presently capable of creating workable projects good enough to work on over the next few years as the project and tools improve? I don't want to explore DOTS and find it's awesome in principle only to have to ignore it and use clunky old methods because it can't create a useable executable. And I don't want to dabble in DOTS and then wait 5 years before I can use it proper.
     
  2. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,753
    To be honest, you can say same about any already released Unity features. And then some become discontinued few years later.

    It really depends what is your goal and hardware target.
    You should test, what can be achieved and if things work on target devices.

    But one thing is for sure, don't assume nor expect, that DOTS, or any other feature will be commercial ready tomorrow, or next year. Your better expect it won't be soon, so you don't get dissapointed.

    There is plenty people, studios investing time in R&D of DOTS. Maybe is sufficient for them already, some actually released products using DOTS, or maybe they take a bit of risk, spending resource. Either way, these people are, who will be ahead of the tech.

    So you reall need weight, what is you goal in near future.
     
  3. Entikai

    Entikai

    Joined:
    Mar 22, 2020
    Posts:
    17
    Here is a timeline for DOTS.
    In the upper left corner you can see Entities 0.16.0 preview.21. When that version number goes from 0.16 to 1.0, DOTS is ready for commercial use. I don't remember 100%, but I think it took about 3 years to get to current version of the package.
     
  4. mikaelK

    mikaelK

    Joined:
    Oct 2, 2013
    Posts:
    284
    I think many companies are already using it on production. At least I have seen games like Subnautica loading entities. The other thing is that my friend noticed memory leaks on that game. If you run the game for a long time it gets laggier and crashes. Its hard to say if its caused by programming or DOTS.
    I think the basic dots is in quite good condition. Cant say the same about netcode other than to stay away.
     
    Last edited: Dec 4, 2020
    nyanpath likes this.
  5. lclemens

    lclemens

    Joined:
    Feb 15, 2020
    Posts:
    760
    If you want to build for a mobile platform, I would guess 2 to 5 years. Right now you can't even build a blank/empty project for Android without it crashing immediately if you have the hybrid renderer v2 and il2cpp enabled. It's possible to get it to run on Android, but you have to disable certain things that make it run slowly. There will be a lot of bugs to work out on mobile platforms before it's ready. I've been coding with DOTS full time for about 6 months, and I think that building a DOTS commercial game for Windows or iOS is perfectly reasonable. There are several developers in these DOTS forums who have some badass games that are nearly finished. I am unsure if DOTS will end in the graveyard like UNet someday, but even if it does tank, you can still make a DOTS non-mobile game and put it on Steam in 2021 if you are dedicated.

    One unfortunate hurdle is the hybrid approach that was taken - instead of building a new editor based on entities instead of monobehaviors, the DOTS team is re-using the original monobehaviour based editor, which requires extra voodoo to convert monobehaviors to entities... and that steepens the learning curve. Additionally, the job system is not something a typical middle-school kid would be able to comprehend and use, whereas non-DOTS Unity is intuitive enough that even kids with basic coding skills can make small games for fun. So while DOTS performance-by-default is usually (but not always) true, ease-of-use-by-default is rarely true. You have the option to ignore the job system and use just entities and systems, which will greatly shorten the release schedule, but performance won't benefit - in some cases it'll actually run slower, and in others it might speed up slightly.

    Another thing that will slow your schedule is the lack of documentation and online resources compared to original Unity. These forums help a ton, but there have been many times where I got stuck on something for days because the documentation for certain functions was nothing more than a repeat of the name and parameters of a function.

    BTW, the dots packages you referenced used to be visible... they started hiding them few months ago. I think it's because people like me saw all those awesome DOTS videos, and read flashy pages like this: https://unity.com/dots and then easily imported the packages and started building with it. If I had been developing a desktop game, I would still have made the same decision and used DOTS, but knowing what I know now about mobile support, I would have used UE4/5 for a mobile game. If the packages had been hidden, perhaps I would have been more hesitant. You are being smart by asking questions like this before drinking the coolaid. Good luck on your decision!
     
  6. SoftwareGeezers

    SoftwareGeezers

    Joined:
    Jun 22, 2013
    Posts:
    902
    Thanks for the feedback.
     
  7. nyanpath

    nyanpath

    Joined:
    Feb 9, 2018
    Posts:
    77
    Yoinks. I've used Unity since 3.0 and never had a memory leak in my games or other applications that haven't been solved. I've used the job system at most, but no full DOTS/ECS yet. The only thing I can think of in Subnauticer's case is that it might create a lot of entities but somehow they do not get cleared from memory. Given that they might be smaller props it could be a slow buildup happening over time.
     
  8. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,753
    Does Subnautica even use DOTS?
    This game is already few years on the market, before Dots name was cobbled.
    At best I think they may be using Entitias asset.
    Anyone to confirm that?
    Similarly for Cityskiline.

    However, I know there are some mobile games using DOTS just fine.
    Regarding networking, there is nothing that stops from using own solution, if having issue with DOTS based networking.
     
    nyanpath likes this.
  9. lclemens

    lclemens

    Joined:
    Feb 15, 2020
    Posts:
    760
    That is true, but keep in mind that there are some major compromises needed to get it to work. Some people disable things like multithreaded rendering and il2cpp (resulting in big frame rate drops). Others use things like hybrid renderer v1... which unity has declared obsolete and no longer updates, is missing a lot of useful features that v2 supports, runs slower, and has a known disco-flashing bug. It's just my opinion, but I think it will be a long time before all the bugs and kinks are worked out such that the player can build for most phone models without encountering difficulties.

    Another thing to keep in mind (for mobile and desktop games)... there are a lot of packages that aren't supported in DOTS yet:
    1. For particle effects and line renderers, you need to setup hybrid objects that run the monobehavior based particle effects in the main thread. Hybrid components require extra housekeeping code that can be tedious to maintain. These hacks aren't well documented, so it can take longer than expected to implement them.
    2. There is a DOTS compatible audio package, but it is extremely low level and there aren't any simple functions to play a clip at a specific 3D location, so many DOTS developers just end up using hybrid hacks like they do for particle effects.
    3. A big one is animation - there is a beta DOTS animator package, but it comes with huge warning that it is in very very early stages of development. Some people use it, others roll their own, and others use animations that are baked into GPU meshes (which is fast, but also rather limited compared to regular Unity animation).
    4. Neither the UI Toolkit nor uGUI is setup to work specifically with DOTS, but there are some fairly easy workarounds to get them to update or accept player input within jobs.
    5. There isn't a Unity developed event system that can be used within jobs, but there is a really great one written by a guy named tertle in these forums.
    6. Navmesh and A* Pathfinding project can work with DOTS, but if you're using jobs, you will be limited concerning which functions and how you can use these packages because the were not specifically designed for DOTS principles.

    Here are some other things that slow development:
    1. You can't interact with entities while in play mode like you can with monobehaviors.
    2. You can't debug bursted functions (but you can use a subset of the print statements).
    3. You can't use Unity Remote 5 if you opt for the new input system.
    4. Documentation and online help is small compared to regular unity.
    5. DOTS Physics is quite mature, and easy to use. It does take a little getting used-to, and there are some things that take 10 to 20 lines of code to accomplish the same thing with one line of code in the non-DOTS world. This is mainly due to the added complexity of multithreading, and not the fault of the DOTS physics projects (Unity or Havok).
    6. Some of the assets in the asset store that contain scripts can't be used.
    7. When using jobs and ECS, you cannot nest Entities.ForEach loops, so each time you need that logic you'll have to come up with workarounds.
    8. Burst code is only a tiny subset of C#. It's like going back to C. There are so many simple things you can't do within burst code that normal C# coders take for granted.
    I'm sure there a lot of other things that could be added to these lists, since even at 6 months, I'm still a relative beginner in DOTS and have yet to tackle all of the functions of a typical game.
     
    Last edited: Dec 12, 2020
    NotaNaN, deus0, SenseEater and 9 others like this.
  10. TheOtherMonarch

    TheOtherMonarch

    Joined:
    Jul 28, 2012
    Posts:
    862
    Lol, you realize that is bullshit we are on release 16. Dots already past version 0.9
     
  11. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,753
    I think you misinterpret version numbering.
    It points at current version of Entities 0.16.0 and then what is required for "Ready For Commercial Use", which is Entities 1.0.0. And to that point, it may be still long way to go.
     
    SenseEater and Baggers_ like this.
  12. SoftwareGeezers

    SoftwareGeezers

    Joined:
    Jun 22, 2013
    Posts:
    902
    Yeah. Versioning isn't base 10 counting up from 0.9 to 1.0 - that minor version number can be anything and doesn't indicate how far to go until the next major version. We might be on 0.16.0 out of 0.20.0 when it'll be called 1.0.0, or 0.16.0 out of 0.1238.0 at which point it'll be called 1.0.0!
     
    NotaNaN, Krajca, SenseEater and 3 others like this.
  13. deus0

    deus0

    Joined:
    May 12, 2015
    Posts:
    256
    If you roll out your own systems though DOTS is ready for commercial use imo. Performs waaay better then the unity we all knew. It's really amazing with burst and dots how far we can push processing. For more traditional workflows though Iclemens was spot on with mentioning all those systems and how far along they are.
     
    apkdev likes this.