One of the most difficult parts of working on this project has been the use of Unity DOTS. Unity DOTS is very much in is early infancy stages being that is a preview package. This being a solo developed project is is mildly insane of me to use DOTS. The documentation is highly technical. Tutorial available are either extremely based or outdated from the initial announcement of Unity ECS. Unity’s over examples going from rotating a cube to an advance Boids system. In fact, if you are reading this, most likely you are looking for help with some unclear console error message.
Vague Error Message
On March 13, Unity release Entities package Preview 0.8.0. And with it have disrupted my entire knowledge and work flow moving forward. The 2 big changes in preview 0.8.0 are as follows:
Deprecated
- Types that implement
IJobForEachinterfaces have been deprecated. UseIJobChunkandEntities.ForEachfor these jobs.
Fixed
- Allow usage of
Entities.WithReadOnly,Entities.WithDeallocateOnJobCompletion,Entities.WithNativeDisableContainerSafetyRestriction, andEntities.WithNativeDisableParallelForRestrictionon types that contain valid NativeContainers.
This means any one who write JobComponentSystem using the IjobForEach system should either remain on preview 0.8.0 or older or refactor their project as IJobForEach will be removed on 6-20-2020 per the warning in Visual Studio. If you chose to remain on thie version of Entities, you can stop the warning from showing in the console by using [System.Obsolete] Attribute tag.
While the refactoring can be done quite easily, the ForEach Lamba operator Job system add a lot of boiler plate code and takes away from the principles of Clean Code.
From This
To This
While I love the boost in performance I get from using DOTS, each update makes its harder and harder to recommend anyone use the full DOTS system. Overall the documentation is far too technical for the average unity user. ECS implementation has changed majorly since its launch. Too many of the major system Unity, developer depend on can’t not be easily accessed using DOTS, IE NavMesh.