We're working hard to make the DOTS API more approachable and intuitive. As part of this, we're taking a look at our API naming and overall API surface. The next release (Samples 0.27, DOTS core preview 30) of the core packages will include some significant renames that will require some manual updates to your projects. I understand the pain this causes! Normally we'd lean on our obsolete API updater to handle these changes, but some of these were beyond its capabilities. We believe these changes get us to a more pleasant and intuitive API as our core foundation for years to come, and would love to hear feedback on other parts of the API that feel confusing or inconsistent. There are three major API changes, and some manual steps required for each change. The ScriptBehaviourManager type has been removed ScriptBehaviourManager served as a base class for all ComponentSystems and EntityManager. This led to some awkward API, such as methods called GetOrCreateManager when they really referred to systems. There are two core changes here: 1. EntityManager is now just a property on World: World.EntityManager This will require a manual search and replace: GetOrCreateManager<EntityManager>() => EntityManager GetExistingManager<EntityManager>() => EntityManager 2. OnCreateManager and OnDestroyManager virtual methods on ComponentSystems have been renamed to OnCreate and OnDestroy. The OnCreateManager/OnDestroyManager methods will continue to work for a few releases. This unfortunately can't be handled by our script updater. 3. *Manager methods on World have been renamed to refer to systems These should be handled by the script updater, but in case something fails, a search and replace of Manager( => System( to catch GetOrCreateManager, GetExistingManager, etc. should handle this. But be careful to not change OnCreateManager/OnDestroyManager (those should become OnCreate/OnDestroy). Most code should already have been inheriting from ComponentSystem or JobComponentSystem, so should not need any changes there. If you had any ScriptBehaviourManagers, a quick fix would be to just make them a ComponentSystem. IJobProcessComponentData has been renamed to IJobForEach This matches Entities.ForEach naming, and is both much simpler to type and say (internally we often referred to it as “I Job Component Process Thing Whatever It Is” or similar!): This will require a manual search and replace: IJobProcessComponentData => IJobForEach ComponentGroup has been renamed to EntityQuery ComponentGroup as a name has been the source of a lot of confusion. It has been renamed to EntityQuery to better represent what it does. Method names have been renamed to match, e.g. CreateEntityQuery. This change is unfortunately complex, and while most should be handled by the script updater, some core APIs cannot be which will cause issues. In general, doing the following search and replaces should get you to a place where the script updater can take over. Obsolete attributes should guide you along the way. Manual search and replace: CreateComponentGroup => CreateEntityQuery GetComponentGroup => GetEntityQuery Job scheduling using an EntityQuery has been renamed and simplified, and should be taken care of by the obsolete updater: ScheduleGroup => Schedule ScheduleGroupSingle => ScheduleSingle RunGroup => Run EntityArchetypeQuery has been renamed to EntityQueryDesc. We also require C# 7.3 support in your IDE. For Visual Studio, this means VS 2017 update 15.7 or above. If you are using ReSharper earlier than 2019.1 with Visual Studio, you'll need to right-click on the project and set "C# Language Level" to 7.3. For Rider, this means 2018.2 or above. If using a version earlier than 2019.1, you will also need to go into Unity -> Preferences -> Rider and turn on “Override LangVersion” and set it to 7.3. Without C# 7.3 support, you’ll run into ambiguous overload resolution errors, as DOTS code takes advantage of the better overload resolution rules in C# 7.3. (The Rider/ReSharper manual steps required are due to those tools getting confused by "latest" LangVersion combined with Unity's custom csc wrapper; that's been fixed in Rider/ReSharper 2019.1.) Please let us know if you run into any problems with these updates!