Dreaming381 / Latios-Framework

A Unity DOTS framework for my personal projects
Other
896 stars 76 forks source link

Kinemation: No full support for subscenes #16

Closed gabrieldechichi closed 1 year ago

gabrieldechichi commented 1 year ago

In general, Kinemation (or perhaps the SmartBlobber workflow) doesn't seem to support subscenes at all. Specifically, if I place a GameObject with an Animator in a subscene, the following happens:

Setting Conversion Settings to Authoring State in Scene View and avoiding changing the object in Play Mode are possible workarounds, but not ideal.

Dreaming381 commented 1 year ago

Yeah. Support for subscenes is super sketchy in 0.5.x and Entities 0.51.

I never used Subscenes personally because they would often lead to Unity crashing and/or corrupting the project. Some of these issues seem to be specific to a minority of machines, of which mine happens to be a member of. In Entities 1.0 experimental, the merged baking world provides a workaround to the cause of the crash, and the corruption issue is no longer present. So while I tried to follow the limited documentation available for making the Latios Framework compatible with subscenes, I was mostly developing in the dark.

Now having worked with Bakers, some of my gaps in understanding have been filled. I've come to learn there are fundamental flaws in Smart Blobber's API that prevent them from ever working correctly with incremental conversion. I would still expect them to work correctly for non-incremental conversion (once the little bugs get ironed out), but the useful editor integration will never work.

Another massive challenge is that in Latios Framework 0.5.x, Kinemation only works correctly if it is executed from within a LatiosWorld. The Editor World is not, and I have not found a way to override that behavior in Entities 0.51. Latios Framework 0.6 removes this limitation (and makes a lot more systems run in Burst).

If you are set on using subscenes, I strongly encourage you to consider moving to Entities 1.0 and Latios Framework 0.6 when it is released. 0.6 still uses Transforms V1, so it is mostly the conversion -> baking changes that will need to be addressed. However, 0.7 will likely use a different transform system. Whether that is Unity's Transforms V2 or something custom (but similar) remains to be seen. What I do know is that the new system will provide significantly better performance for Kinemation's internal systems and make IK much easier to develop.

I realize this probably isn't the answer you are hoping for. Sorry about that.

gabrieldechichi commented 1 year ago

Not at all! This was a very useful answer. I'm glad to know that baking will be fully supported on v0.6, and removing the LatiosWorld requirement is also good change.

At this transition stage that DOTS is in I don't think supporting 0.5/0.51 is a must. I'll just voice that DMotion won't support it either until it is moved to DOTS 1.0.

Thanks!