M6 UF4 Programaci N De Elementos Interactivos
Gestión de Escenas (Screens)
Podemos entender las escenas como las diferentes pantallas del juego (Screen de Logo, de
Título, de GamePlay, de GameOver, etc). Podemos cambiar de una escena a otra mediante
transiciones.
A nivel de programación podemos destacar 4 mecanismos para cambiar de escena:
● Básico. El más básico consiste en un switch mediante el cual cambiamos de escenas
al modificar el valor de una variable (CurrentScreen). El inconveniente de este método
es que tendrías que cargar todo el juego en memoria desde el inicio,
independientemente de que en el update se actualicen unos elementos u otros.
● Intermedio. Por ejemplo, en la programación orientada a objetos tenemos una clase
para cada screen y una clase “central” en la que creamos objetos de cada una de
estas clases y los usábamos mediante un switch. Es decir, tenemos las screens por
separado con lo que a nivel de organización es mejor pero la carga se realiza de
forma simultánea igualmente.
● Avanzada. Usamos un sistema centralizado que se ocupa de gestionar todas las
escenas del juego. Es el ScreenManager (También llamado Director o Application
(Unity)). Cuando quieres cambiar de escena se encarga de descargar la escena
actual y de cargar la nueva escena. Si queremos introducir un efecto de FadeOut y
FadeIn, podemos tener una Screen que sea solamente un objeto sólido negro o tener el objeto directamente en la escena. Se plantearía de la siguiente manera:
○ Escena A. Tenemos todos los elementos de esta escena cargados en
memoria y llegamos al final del nivel.
○ Proceso de fundido a negro. En esta fase se dibuja un quad transparente
sobre la pantalla que se lleva a negro opaco. El juego se puede pausar pero
normalmente se mantienen animaciones y movimiento pero se desactivan
aspectos de la lógica como las muertes, puntuación, etc. El tiempo de esta
pantalla se decide según el efecto que queremos causar.
○ Escena en negro. La duración de esta escena estará determinada por la
capacidad de la máquina en la que se ejecuta el juego. En esta fase suceden
distintas cosas:
■Descarga de la CurrentScreen, que pasa a ser Null.
■ Carga de la NextScreen, que pasará a ser la CurrentScreen. Tarda más
que la descarga de la screen anterior.
■ En esta escena se pueden mostrar otros elementos como un texto de
“loading”, etc, que deberemos tener implementados en el
ScreenManager. Si añadimos animación (parpadeo, movimiento, etc),
la propia carga de la siguiente escena bloquearía la ejecución, con lo
que deberíamos ejecutar la carga en un segundo hilo. Es decir,
haríamos uso de una carga asíncrona. Tendremos un hilo para el juego
y otro para la carga de assets.
○ Proceso de fundido desde negro. Una vez efectuada la carga de la Screen,
habrá un objeto Quad negro delante de la pantalla que pasará a ser transparente. El tiempo de esta pantalla se decide según el efecto que
queremos causar.
○ Escena B. Tenemos cargados todos los elementos de esta escena cargados
en memoria.
Podemos usar diferentes recursos para pasar de una escena a otra.
● Básicos.
Fundido a negro, Crossfade, cortinillas, etc.
● Avanzado. Efectos de deformación sobre la imagen,etc. Ejemplo: En Final Fantasy X,
al pasar al modo combate, la pantalla se rompe a pedazos. Este efecto se consigue
realizando una ScreenShot de la escena actual, y se pasa a una forma cuya malla
está dividida en piezas y sobre la cual se aplica como textura la ScreenShot.
Pipeline Gráfica
Consiste en todo el proceso que lleva a cabo la GPU desde que ...
Regístrate para leer el documento completo.