|
Uno de los mejores documentos de hace mucho tiempo! Este pdf nos explica una detallada arquitectura de un motor de videojuegos, preparado para multithreading. Es corto, pero entra lo suficientemente a trapo para explicar bastantes detalles importantes. Vamos a destriparlo. El engine. Está formado por entidades que viven en el framework, y por los managers, que son singletons que realiazan tareas especificas. Ejemplo de entidades es la escena y los objetos. Ejemplos de managers es el threadpool. El engine se comunica con los systems, que están separados mediante interfaces. Los ystems son partes que realizan tareas específicas, como la física, el render, etc. La animación se realiza mediante "clock ticks" que son como golpes que van marcando la animación y evolución del juego. En el game loop, en cada "tick", se mir que systems están activos. Se llama a cada uno se postea su trabajo en el manager de tareas. Eso es parte del scheduler, que tambien genstiona las priridades, y espera a que terminen las pendientes, etc. Con esto se consigue un paralelismo muy potente. Los systems pueden modificar las instancias del framework. Por ejemplo, el de fisicas agrega la propiedad de gravedad a los objetos, y el de render mete flags de visibilidad. Otros managers permiten cambiar propiedades globales, como la resolucion de la pantalla o la puntuación de la partida. Otro manager se encarga de aplicar los cambios a las entidades. Esto se hace con un observer. Cuando algo cambia, el observer notifica a las entidades involucradas del cambio. Como ese es un paso del game loop, no requiere de bloqueos excesivos para modificar la información.
|