We need a system that is responsible of all the coroutines within the engine. Such coroutines would be a window or a particle emitter handler. The orchestrator needs to asynchronously create those windows and emit particles with minimal blocking on the main thread, and on the drawing threads. Since the windows only need to process what to draw, everything else needs to be handled on a separate cpu thread to balance that load.
This also allows us to even further minimize what the engine does for those who want all the control but also simplifies creating new services for those who just might want to create games in the most straight forward way possible.
We need a system that is responsible of all the coroutines within the engine. Such coroutines would be a window or a particle emitter handler. The orchestrator needs to asynchronously create those windows and emit particles with minimal blocking on the main thread, and on the drawing threads. Since the windows only need to process what to draw, everything else needs to be handled on a separate cpu thread to balance that load.
This also allows us to even further minimize what the engine does for those who want all the control but also simplifies creating new services for those who just might want to create games in the most straight forward way possible.