after checking others vids about job system, this one is much more understanding than others
@StarContract4 жыл бұрын
Tutorial was such high tier I watched it even though I am not using Unity but still wanted to learn about multithreaded job systems
@victorjechiu94654 жыл бұрын
Best teacher 🔥. Thank you👍
@qin64092 жыл бұрын
thank you, I bought your courses even though I really don't need them, I just want to support you're made so good and easy understanding video! saved my a lot of time for DOTS learning
@tony55424 жыл бұрын
That was the best explanation so far. Thanks a lot.
@lisandroCT4 жыл бұрын
I think it's the first time I've seen a video with several thousands of views with _0_ dislikes.
@unclerandy3983 жыл бұрын
@Dev Kothari 1 dislike ;(
@FREDO-py4ti4 жыл бұрын
You've talent to explain complicate things !!!
@lkhprime4 жыл бұрын
Thank you so much for the video. A_A
@shirosurfer88644 жыл бұрын
Thinking of jobs as a struct(the value type) really helps out in the correct way on thinking about its requirements and life cycle. Ty.Cool
@arashpix4 жыл бұрын
Good job in explaining job systems :)
@RomanNaumov3 жыл бұрын
You are the best. Thank you :)
@anonymoussloth66874 жыл бұрын
why do we need to dispose the native array when we provide an allocator.temp which tells it that it only last 1 frame like you said? If we do dispose it manually, why the allocator?
@sconosciutosconosciuto21964 жыл бұрын
Awesome videos :D
@RockoShaw2 жыл бұрын
Hello first of all thank you for your great series of tutorial, you even created a useful playlist for DOTS that let's us go through each topic in a logical sequence step by step, they are also great because are up to date which is hard to find, also the visual aids you put are great and helpful. I have a question regarding jobs. When doing an IJob it's pretty clear how to output data as you explained it. If one decide to use SystemBase and use ScheduleParallel for a ForEach, how does one output a result/value?
@thedeltastrat2 жыл бұрын
Literally exactly what I need to know as well! Would be really useful if u could do a vid on this (if u haven't already, I haven't checked yet). Another thing I'd be interested in knowing is what the different Ijobs mean. Eg: IjobParalellFor, IjobChunk, etc. The only one I knew before was IjobForEach, but that's outdated now.
@sabrango4 жыл бұрын
THX!
@burakgok29094 жыл бұрын
Hello, I would like to understand one thing clear when we use the job system its blocks the main thread ( main thread has to wait until the job gets done) right? It's similar to using thread.join( ). I want to know what is the reason for blocking the main thread since it will make the application unresponsive? why they don't work concurrently? Thank you for the tutorials .
@duthcgamerking4 жыл бұрын
Otherwise physics rendering and stuff get desynchronized
@petrusion28273 жыл бұрын
That is very much not the case. There's a very high chance you are using jobs by scheduling them and calling Complete() immediately, aren't you? Obviously, Complete() has to wait until the job is complete. The usual way of using jobs efficiently is to schedule them in Update() and Complete() them in LateUpdate() or schedule them in either one of the Update methods and Complete() them the next frame.
@chethansiqaandiostuff73653 жыл бұрын
I am getting the following error ,do you know how to fix it : A Native Collection has not been disposed, resulting in a memory leak. Allocated from: Unity.Collections.NativeArray`1:.ctor(Byte[], Allocator) UnityEngine.Networking.UploadHandlerRaw:.ctor(Byte[]) UnityEngine.Networking.UnityWebRequest:SetupPost(UnityWebRequest, WWWForm) UnityEngine.Networking.UnityWebRequest:Post(String, WWWForm)
@gawer334 жыл бұрын
will this affect mobile gaming, like battery life and heat problem?
@n3on4404 жыл бұрын
more threads used = more power used, higher temperatures, much higher performance
@petrusion28273 жыл бұрын
@@n3on440 That might be true, but consider that with the Burst Compiler, you are able to make code that completes the operation needed much faster and thus save energy, especially if you take the time to learn how to correctly use the explicit SIMD vector types like float4 or int3 provide.
@ssmasrour4 жыл бұрын
Awesome, But!!! where is the source code link!? your code link help me to review whatever passed in your video once again
@GameAcademySchool4 жыл бұрын
Sahab Masroor This was so simple there is no repo. Plus the syntax changes as you go to ECS
@Jigernaunt4 жыл бұрын
So in this video there are no answers to the questions of how actually job system achive parallel computation, when we need to use job system, what is the benifit of job system in comparision to thread pool. You just showed how to work with job API on a kinda useless example.
@GameAcademySchool4 жыл бұрын
Dmitry Osipov Yes this just shows a very basic example to introduce people to the concept and syntax
@petrusion28273 жыл бұрын
I thought the exact same thing too when I started to learn to use the job system. I also thought that it is just a weird ThreadPool. But it turns out the Job System is much better for games than Tasks. - The job system does not create any Garbage Collector pressure. When you make a Task, you are making the Task object, the delegate object and possibly the Thread object. Garbage Collection is something you mostly want to avoid in game development. - The job system avoids context switches much much much better than the ThreadPool. If you make 100 Tasks in a frame, they are very likely going to create a lot of OS Threads. The Job system has its worker threads to which it feeds jobs, which makes sure you run into very few context switches as opposed to the ThreadPool. - The job system has the Burst Compiler, which is, hands down, the most powerful feature it boasts. Burst jobs are one of the if not the best way of creating extremely optimized native code that will try its hardest to vectorize itself. Also, with Unity.Mathematics library you can even use explicit SIMD which is amazing. You can even see a very detailed description of how the Burst code compiles in the Burst Inspector.