A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate
in the Unity community.
Now in Beta! Get 1:1 live lessons on any Unity topic or help troubleshooting your project – Connect with an expert on Unity Live Help
Discussion in 'Data Oriented Technology Stack' started by chuyuwei, May 30, 2019.
I don't understand why the usage of subscene can improve load times.
Cos they loading asynch in different world.
Mainly it improves load times because the data format for an entity scene is memory ready and does not go through serialization. So there is practically no CPU work to load something. Also we support loading on more than one thread. Also ECS data is generally far more compact. Also gameobjects generally do many internal mallocs that are expensive. Also object reference remapping is expensive in the serialization layer for game objects. But the real killer reason for streaming is that the activation cost on the main thread for having a ton of objects show up in the same frame and have systems pick them up is a lot faster due to it not being done with random memory access virtual call into C++ calling virtual function in C# etc... It's all beautiful linear memory access blasting through the data, the overhead is essentially near non-existing for streaming. It's just down to how well the specific systems deal with many objects arriving. And there are many techniques to make that be zero too...
So many reasons...
Thank you a lot,why is entity scene memory ready. And is it different between the gameobjects in entity scene and gameobjects in traditional scene.
Because being memory ready data format makes it insanely fast to load, because doing no work at runtime is always the best optimization. And making everything as fast as possible including loading is what we do with DOTS.
The foundation for game objects has been built 14 years, when OO was hip, and I didn't really have a clear overview of what the cost of that ultimately was. We also didn't prioritize performance to the same extent 14 years ago as we do now.
Making the existing game object architecture have the properties we now want it to have turned out to be near impossible.
Hence we are building DOTS. Giving Unity developers a choice when they want to write the absolute fastest code.