Unity DOTS lacks third-party support, and many find the DOD (Data-Oriented Design) approach unfamiliar. Since it’s not based on an object-oriented language, there are fewer people with relevant knowledge. For this reason, I hope Unity creates more tutorials for DOTS than for traditional project methods. I’d like to learn how to build complete projects using various Unity services, such as Gaming Services, in combination with DOTS. I believe that creating more tutorials would lead to an increase in DOTS users.
Ideally it shouldn’t need tutorials and weeks of research to understand it. It should be self explanatory. Perhaps they should just redo it and present it as a programmable multi threaded particle system rather than a game engine within a game engine.
Maybe they should start doing something at all.
Currently, they are focusing on integrating ECS into the GameObject system (ECS for all), which means they will no longer focus on plain ECS. Therefore, it is very unlikely that they will continue to create plain ECS tutorials.
Okay, does this mean that in the next year or two we will get ECS performance and the convenience of GameObject, instead of thirty lines of code to change the value of one variable?
You can expect that to happen, it’s the purpose of the integration. I’m not sure what the final result will be, and it may not meet your expectations. However, I think the integration is still a long way from being complete. There are many things Unity has to do right now:
- Migrating to .NET 8+ CoreCLR
- Integrating ECS into the GameObject system (ECS for all)
- Unifying URP and HDRP
It may take 4, 5 years to complete all of these. I think you shouldn’t expect too much in the next few years.
You know, I was just trying to run the example Race for Net Code For Entity from (ECS-Network-Racing-Sample), because the instructions for installing and compiling the project simply do not match the folder structure in the project! That is, you need to select the build profile from the Build Setting folder, but the folder itself is stupidly not in the project! Now I’m trying to compile a project using the default profile (since there are simply no others in the tutorial), I honestly don’t know if anything will come of it. But looking at 27 FPS while playing in the editor on a computer with an eight-core AMD Risen 7 5800X 3.80 GHz and an Nvidia T600 graphics card with 4gb GDDR6, you probably shouldn’t expect anything good. I will no longer describe in detail how poor these graphics look at the end of 2024, and about the numerous friezes and bugs, such as wheels sinking somewhere on the road.
That’s all I’m saying: tutorials should show the best possible use of a framework, so that when I look at it, I want to spend a few weeks or months studying it, so that I can eventually do it at the same level. The level that is presented in this tutorial does not look motivating, it does not look like something that I would be interested in spending a few weeks studying. This “tutorial” looks like a good reason to abandon the use of Unity for multiplayer in general, or at least their NetcodeForEntity framework in particular.
They probably won’t create any more for now until ECS For All is ready but they don’t have an estimate on when that will be.
Have you seen videos from here: https://www.youtube.com/@TurboMakesGames
He makes more content for ECS than Unity does
Thank @xjjon so much for the playlist!
I watched a few videos from here while I was trying to understand the Net code For Entity. You know, it would be really great to see a full-fledged example, no, not like that, a full-fledged, completed, GOOD example of a NetcodeForEntity-based multiplayer project, looking at which the advantages in terms of performance and code purity would be obvious. Everything works great when a person creates two simple systems, from the series “one spawns cubes, the other moves them” with the feed “Look! We’ve filled ten thousand cubes and nothing is lagging! What a productive and generally cool ECS!”,
And then you run the already completed compiled GAME, on a fairly powerful hardware, and you see 18,
EIGHTEEN FPS!
Carl!
And using this example, you seriously think about the question: is this an EXAMPLE of a game implemented on ECS bad, or is the system itself so terrible that even the official example from the developers gives such a terrible result that it’s hard to believe.
If you know where you can find an example of a well-optimized multiplayer game on Net code For Entity somewhere on GitHub or the like, I will be immensely grateful to you!
UPD:
And yes, the screenshot already shows a compiled (it took almost an hour, omg) game running in full-screen mode
UPD_2:
Sometimes there are drawdowns of up to 9 FPS…
I waited five years. How much longer do I have to wait now?..
5 years more!
I cannot do it, but I believe that my son, who is yet to be born, will be able to release a game using Unity DOTS…
Dear @elcionap !
You’ve added a negative rating to almost every comment I’ve made in this thread, do you have anything to add?
Unity just released a template for netcode. I think you will like it:
You measure in editor with ALL safety checks enabled and I’m pretty sure even in Debug mode and not Release one (Bug icon in bottom right) which is expected as there is a ton of additional validation enabled in that case. And I’m pretty sure you haven’t enabled Burst compiler (and after enable it will compile for about a minute).
If you want performance closest to build be sure to disable safety checks and enable burst, disable jobs debugger and switch editor to release mode. And wait until burst gully compiles after running game it’s required once until you change some code, for perf measurments it’s enough.
It still wouldn’t be as fast as built version but will be closest one.
Don’t know about what “hour” compilation you’re talking about, game compiles less than a minute and fully builds from fresh download for a couple of minutes with all shaders compilation.
And in built game with both client and server simultation in one build (thus 2 worlds running) there is maximum performance on my Ryzen 9 3900x + 64Gb Ram + GeForce GTX2080SUPER
And btw T600 is not powerful hardware it is very weak workstation GPU even slower than gaming GTX 1650
The screenshot with 18 fps was taken in a compiled game (compiled client and compiled client-server), and the first compilation took an hour to compile after downloading from the repository, and the T600 is certainly not the top of the industry, but also not some kind of graphics card built into the motherboard, but at the expense of burst compilations - I clearly remember how in the first compilation it hung for at least 10 minutes with the inscription “burst compile…” or something like that
Madness!
That’s what I need!
Thank you very much!!!
I hope it’s not critically tied to Unity hosting services
Unity DOTS generally requires more effort than classic OOP. Not because of mono behaviour and game objects or not. But because of the focus on the performance. Plus multithreading on the top. So it is expected from DOTS devs, to be at least intermediate Unity / C# developer. There is no work around it atm. And I expect this will be always the case.
Unity DOTS has provided whole set of tutorials, but it is for people, which are able to do own research.
There are tons of examples, how to do A or B.
Look at Unity DOTS Samples on github.
Do not get confused with old Unity DOTS FPS sample however.
DOTS FOR ALL.
DOTS is not just for a select few experts.
DOTS is for everyone.
I believe it’s Unity’s responsibility to create an environment where everyone can use it. I believe that providing a variety of tutorials is part of that responsibility.