I struggle with ECS quite a lot and I decided to start a discussion here about the right ECS approach. Here is what I’ve got now: GameObjects in prefabs as they have some MonoBehaviours like Animator etc. Located in Resources folder Each level is a Scene file Settings, Configs provided as json files (some from disk, some from network), deserialized into simple objects/structs Player-Progress/Save/Stats stored in json (submitted to server or stored locally) With no ECS what I do (on high level) is: app starts services load the data from APIs, Resources and Disk while splash screen presented Main Menu scene loaded and reflects player progress/stats etc. Player may manage stats/characters/inventory here. Data updated and saved. Pressing Play triggers Level scene to load. Which Level scene to load controlled by player progress. Once scene loaded, level builder loads prefabs and adds GameObjects into scene, set ups corresponding values from configs, settings and player progress and establishes relationships/subscriptions/data-flows between the objects. Level starts with everything in place and ready. I absolutely love this approach, however when it comes to lots of enemies and projectiles etc, I have to drop some features to maintain smooth fps, so I’m looking for a way to improve performance. I already use Burst + Jobs for raycasts and some other things, however ECS seems the right approach. With ECS I can not understand how to make a single entry point to my Level when all the data I need loaded from various sources. So, the questions: Is there a way to control when Systems created? As I only need them after Level starts. Is there a way to inject data/configs/settings into systems? Or systems can only access objects from the inside? Is there a way to load/create/add a subscene onto a Level scene once it loaded? I tried to load a subscene additive but it replaces current screen completely for some reason. I tried adding it in other ways but it all seems invalid. Is there a way to add prefabs to a subscene from the outside or this is only possible form the inside of a Baker subclass via GetEntity(GameObject). I’ve checked BakerSystem but it seems it can only manipulate already baked data from Bakers. I do not like Bakers-based approach as I need to be able to control the order/sequence of load and access loaded objects in one place. As I understand, I should probably use #UNITY_DISABLE_AUTOMATIC_SYSTEM_BOOTSTRAP and create World and Systems (not sure how) manually right after level scene loaded start and inject the data at this point. Do you think it worth trying? Or entire approach should be changed to be fully based on systems and entities even during app startup and stored data loading. Thanks a lot!