decline-cookies / anvil-unity-dots

Unity DOTS and ECS specific additions and extensions to Anvil
MIT License
4 stars 1 forks source link

Migration Integrity #234

Open jkeon opened 1 year ago

jkeon commented 1 year ago

Building off of #232

mbaker3 commented 1 year ago

If you have a sec to quickly jot down a high level potential approach that will help get this done when we pick this up some day way down the road.

jkeon commented 1 year ago

Sure!

Most likely as part of the reflection pass at the beginning with the other migration functionality we'll scan the types and nested types and nested collections to find where any Entity references could be hiding and we'll build a map of that.

Then before actually migrating, we'll run a job to collect the TaskDriver data and EntityPersistentData that has Entity references and we'll store what we were referencing.

If we were referencing Entity.Null, that's all good, just means the slot was empty. If we were referencing a real Entity, then we'll want to check to make sure that:

We actually do the move, and then we collect everything that stayed in the old world and find any breaks and we collect everything in the new world and find any breaks there.

High level architecture should look like a pre and post job on either side of the actual move. One to build the current state, and then the post to check it.