Razón Artificial

La ciencia y el arte de crear videojuegos

[BGE] La clase Scene

Escrito por adrigm el 26 de septiembre de 2011 en Desarrollo Videojuegos, Programación, Proyectos | 2 Comentarios.

En teoría lo lógico sería empezar hablando de la clase App, pues sera esta la principal del engine, pero necesitamos primero ver como va a ser un escena para luego poder hacer un buen app que las controle.

¿Que es una escena?

Puede parecer obvio, pero por si acaso vamos a aclararlo. Una escena es cualquier pantalla de un juego que necesite mostrarse en pantalla, actualizar datos y/o interactuar con el usuario.

Por ejemplo, una pantalla de inicio donde se muestra un vídeo de introducción al juego sería una escena, se muestra en pantalla, pero no interactúa con el usuario. Un menú de inicio donde podemos empezar un nuevo juego, cargar, salir, etc. sería otra escena de nuestro juego, etc.

Cada escena debe tener unas funciones básicas comunes, estas son:

  • Init – Se encarga de inicializar la escena.
  • Pause – Es llamado cuando se pausa la escena.
  • Resume – Es llamado cuando se reanuda la escena.
  • Cleanup – Es llamado al eliminar la escena, realiza funciones de limpieza.
  • Events – Es llamado para procesar los eventos del sistema.
  • Update – Se encarga de actualizar la lógica de la escena, llamado una vez por ciclo.
  • Draw – Se encarga de dibujar en pantalla, llamado una vez por ciclo.

Estos son algunos de los métodos que tendrá nuestra escena. Cuenta también con otros métodos constantes que devuelven información de la escena.

  • GetID – Devuelve el identificador de la escena.
  • IsInitComplete – Devuelva true si se ha completado el Init.
  • IsPaused – Devuelve true si la escena esta pausada.

Como variables tenemos, los seguientes:

  • App* app – Puntero al objeto de la aplicación (Protegido).
  • SceneID id – Almacena el id de la escena (Privado).
  • bool m_cleanup – Almacena si la escena necesita limpieza.
  • bool m_init – Almacena si la escene esta inicializada.
  • bool m_paused – Almacena si la escena está pausada.

De todos estos datos el constructor recibe los dos primeros,  Scene(SceneID m_id, App* p_app). Aún no hemos visto la clase App ya veremos luego para qué es este puntero al objeto app. Los otros tres son valores booleanos y se inicializan como false.

Bueno, la explicación está muy bien, pero creo que es mejor que enseñe el código, aquí dejo los enlaces a GitHub de la clase.

Como vemos en la implementación (scene.cpp) no están los métodos Events, Update y Draw. De hecho, en la definición de la clase (scene.h) podemos ver que están igualados a 0. Esto es que son funciones virtuales puras, es decir, esta clase no las implementan sino que deben hacerlo las clases que hereden de ella, es decir, las escenas de nuestros juegos. Los otros métodos no constantes también son virtuales, pero tienen una implementación básica necesaria.

En el próximo artículo veremos la clase App. Cualquier duda, dejad un comentario,

 

2 Comentarios en "[BGE] La clase Scene"

  1. xafi dice:

    No se pueden ver los archivos, es una lastima este tutorial esta muy bien.

Deja un comentario