I know there are pro's out there who already know the ins and outs of DOTS and who have no problem using it. But this feedback is more from the view of the average unity dev, who come from MonoWorld and OOP. If you are not that type of dev, then you may not agree with the following.
TLDR;
DOTS is great tech, no doubt- and switching to DOD paradigm also makes sense! But in the current state (1.0), DOTS is still way to inconvenient to use. I believe many would immediately switch over to DOTS and accept DOD as new paradigm, or atleast hybrid... but DOTS is lacking premade methods/functions that allow for easy access.
Example:
here we see a guy who simply wanted to access info from a GameObject in MonoWorld, and apply this info to an Entity.
This is how people would expect it to work:
var valueForEntity = MonoWorld.SomeGameObjectOrPublicVariable.Value;
But here is how its currently implemented:
public class PlayerTracker : MonoBehaviour
{
private void Start()
{
var em = World.DefaultGameObjectInjectionWorld.EntityManager;
var entity = em.CreateEntity();
em.SetName(entity, name);
em.AddComponentObject(entity, this);
}
}
[UpdateInGroup(typeof(TransformSystemGroup), OrderLast = true)]
public partial class PlayerTrackerSystem : SystemBase
{
protected override void OnUpdate()
{
if (!SystemAPI.TryGetSingletonEntity<PlayerTag>(out var playerEntity))
return;
var localToWorld = SystemAPI.GetComponent<LocalToWorld>(playerEntity);
Entities.ForEach((PlayerTracker tracker) =>
{
tracker.transform.SetPositionAndRotation(localToWorld.Position, localToWorld.Rotation);
}).WithoutBurst().Run();
}
}
(source: https://forum.unity.com/threads/entities-1-0-0-pre-15-ecs-cinemachine.1383159/)