Open adrigm opened 10 years ago
Como funcionaría? No tengo muy claro que hace esta clase.
Pues básicamente esta será la clase que inicialice el motor y contenga al game loop. Se encargará de crear la ventana con la configuración adecuada.
También sera la que inicialice el Gestor de Escenas y el Gestor de Recursos.
La idea es que sea un Singleton para acceder a ella desde cualquier lugar y que te de acceso al SceneManager al AssetManager y a la a ventana de la aplicación.
Esto es algo que no se muy bien como resolverlo. Si tenemos una clase que inicializa el gestor de escenas y el gestor de recursos y además tiene el main loop. No se necesitará acceder a ella, no? Basicamente todo estára dentro suya.
Nunca he llegado a estructurar un motor completo, por lo que me pierdo un poco. No se muy bien como es cada clase principal.
Esta clase principal llama a los métodos de una clase Scene que cambia durante la ejecucción del juego. Desde estas clases Scene necesitamos poder acceder a la aplicación.
Cuando haga el artículo dedicado a la clase App en Genbeta Dev seguramente lo comprenderás mejor.
Sería como un Handler? Instancia a las clases y luego estas se comunican con App para cambiar de estados o lo que necesiten?
Quizás este artículo te aclare algo: http://razonartificial.com/2010/08/gestionando-escenas-con-pygame/
Es para python y pygame, y no es exactamente igual, pero la esencia es la misma.
Ahora todo tiene mucho más sentido. Está explicado de forma muy clara, además tus comentarios en el post ayudan mucho :) Te diría de hacerla yo, pero no se si sería mejor dejarlo a alguien que ya tenga experiencia en motores de juegos.
Un apunte.
No hay que confundir el patrón singleton con una variable global. El patrón singleton és un patrón que asegura que sólamente existe una única instáncia de una clase. En este caso está bien aplicado dado que solo queremos que haya una clase App. És decir, la motivación no és usar un patrón singleton para poder acceder desde cualquier lugar, sino porque queremos asegurar que solo haya una instáncia de esta clase, y que todo el mundo usa la misma instáncia. Para que una clase sea accesible desde cualquier lugar, no hace falta que sea singleton, me explico?
Un Saludo.
@ArnauPrat, esa es la idea, quizás lo expresé mal. Me refiero a que lo llamemos desde donde lo llamemos, nos devuelva siempre la misma instancia.
@ArnauPrat El singleton es una variable global. En el propio texto original del GoF se indica:
Singleton Intent
Ensure a class only has one instance, and provide a global point of access to it
Así que Singleton y global van de la mano.
@rickyah Gracias por la aclaración.
La clase App será una clase con el patrón Singleton que se encargaré del arranque y parada del Engine.