Saltar la navegación

4.1. Los fondos

Retor dice

Una parte fundamental de un videojuego son sus elementos gráficos. De ellos va a depender en gran parte el interés de los usuarios, ya que la apariencia visual del juego es lo primero que vemos y nos puede resultar más o menos atrayente.

Como he comentado anteriormente, en los equipos de desarrollo profesionales existen los llamados artistas de entorno en 3D (3 dimensiones) ilustradores en 2D (2 dimensiones) que son especialistas en crear los entornos gráficos de los videojuegos.

En Processing trabajamos fundamentalmente con imágenes vectoriales que utilizaremos tanto para los fondos como para los personajes. De esta forma, dominar los elementos gráficos, te ayudará para construir tu juego final.

1. Los fondos

En un videojuego los fondos pueden ser y comportarse de distintas formas:

Fondos en un videojuego
Fondos Comportamiento
Fijo El personaje se mueve pero el fondo no.
Scroll El personaje siempre está en la misma posición y es el fondo el que se mueve.
Dinámico El fondo cambia en cada nivel o pasado un tiempo.
GUI Una "Graphical User Interface" o GUI, es una interfaz entre la persona y la máquina.
Scroll y Parallax Varias capas de fondo que se mueven a distinta velocidad.

Tarea: debes ir copiando los códigos de los siguientes ejemplos en el IDE de Processing para ver su resultado. Prueba con otros fondos o utiliza los que se acompañan en algunos casos.

Fondo fijo

Imagen de un videojuego en el que aparece Rétor recogiendo manzanas
Fondo fijo del juego de "Recoge manzanas"

Es el sistema más simple. Sólo necesita el código necesario para visualizarlo el fondo como el siguiente:

  • PImage fondo;     ....  
  • fondo = loadImage("campo.png");  ...    
  • image(fondo, 0, 0);







Scroll

Imagen de un videojuego donde se ve una nave moviéndose en el espacio

El fondo móvil aporta mayor dinamismo al juego. La imagen de fondo debe tener una mayor extensión que la pantalla y se denomina "mapa del juego". Un juego puede tener varios mapas que cambiarán según los distintos niveles. Las teclas de dirección en este caso modifican las coordenadas del fondo en lugar de las del personaje.

Descarga las imágenes para realizar la actividad


PImage fondo;
PImage nave;
int xf = 0;
int yf = 0;
void setup() {
  size(400, 400);
  fondo = loadImage("sistema solar.png");
  nave = loadImage("nave.png");
}
void draw() {
  imageMode(CORNER);
  image(fondo, xf, yf);
  imageMode(CENTER);
  image(nave, width/2, height/2);
  if (keyPressed && (key == CODED)) {
    if (keyCode == LEFT) {
      xf +=3 ;
    } else if (keyCode == RIGHT) { 
      xf -=3 ;
    } else if (keyCode == UP) { 
      yf +=3 ;
    } else if (keyCode == DOWN) { 
      yf -=3 ;
    }
  }
}

Fondo dinámico

En este caso debe haber una condición que ocasione el cambio del fondo, como pueden ser:

  • Se han alcanzado un determinado nivel de puntos.
  • Ha transcurrido el tiempo máximo estipulado.
  • El personaje ha llegado a un punto determinado en el mapa del juego.

El código necesario básicamente es como el de la GUI que veremos a continuación. Pero la condición para cambiar de fondo, variable "gamestate" en el ejemplo, puede ser alguna de las tres comentadas o similar.

GUI 

La interfaz gráfica de usuario, conocida también como GUI, es una parte de un programa informático o videojuego en nuestro caso, que actúa de interfaz de usuario, utilizando un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz.

Todo juego que se precie, por simple que sea, debe tener al menos tres partes. Como mínimo, debe aparecer al inicio del juego con las opciones y menús, durante el juego con uno o varios niveles y al final del juego normalmente con el marcador final y la posibilidad de volver a jugar.

Descarga la imagen de fondo.

Imagen donde se ven distintas fases del juego
Click para aumentar

PImage juego ;
int gamestate = 0 ;
void setup() { // inicialización
  size(797, 463); // Tamaño de la ventana: ancho x alto (px)
  fill(0); 
  textSize(40);  // ... Tamaño de la letra
  juego = loadImage("campo1.png");
}
void draw() {  // Se ejecuta 60 por segundo
  //delay(75);
  if (gamestate == 0) { // Si estamos en juego, se hará todo lo siguiente
    background(50);
    // Establecemos el inicio del juego 
    textSize(50);
    fill(#938D16);   
    text ("Este es el Inicio del juego ", 70, 200);
    textSize(30);
    fill(#AF2525);
    text ("Pulsar Click para empezar", 200, 250);
    if (mousePressed == true)  gamestate = 1;
  }
  if (gamestate == 1) { // Si estamos en juego
    // Establecemos el fondo del juego
    imageMode(CORNER);
    image(juego, 0, 0);
    textSize(50);
    fill(#938D16);   
    text ("Este es el fondo del juego ", 70, 200);
    textSize(30);
    fill(#AF2525);
    text ("Pulsar F para finalizar", 200, 250);   
    if (key == 'f') {
      gamestate = 2;
    }
  }
  if (gamestate == 2) { // Si estamos en el Fin del juego
    // Establecemos el fondo del final
    background(200);
    imageMode(CORNER);
    textSize(50);
    fill(#938D16);   
    text ("Game Over ", 240, 200);
    textSize(30);
    fill(#AF2525);
    text ("Pulsar I para reiniciar", 220, 250);
    line (pmouseX, pmouseY, mouseX, mouseY);
    if (key == 'i') gamestate = 0 ;
  }
}

Fondo en paralaje (parallax)

Imagen de un cohete moviéndose de derecha a izquierda y a la inversa en un paisaje con montañas de fondo

El desplazamiento de paralaje es una técnica en gráficos por computadora, en la que las imágenes de fondo pasan por la cámara más lentamente que las imágenes de primer plano, creando una ilusión de profundidad en una escena 2D de distancia.

Aunque parezca una tendencia muy actual (y de hecho lo es en el mundo del diseño web), el Parallax es en realidad un truco con mucha historia, inventado por Disney para dotar a sus películas de dibujos animados de una ligera tridimensionalidad, intentando lograr con ello un mayor realismo. El invento se bautizó como «cámara multiplano» y más tarde se adaptó al mundo de los videjuegos en 2D.

Descarga las imágenes para realizar la actividad.

Parallax

/*Juego con parallax de fondo en 4 velocidades*/
PImage fondo0;
PImage fondo1;
PImage fondo2;
PImage fondo3;
PImage nave;
int x = 10;
int y = 0;
void setup() {
size(500, 500);
fondo0 = loadImage("sabana1.png");
fondo1 = loadImage("parallax2.png");
fondo2 = loadImage("parallax3.png");
fondo3 = loadImage("cielo.png");
nave = loadImage("naveD.png");

}
void draw() {
imageMode(CORNER);
image(fondo3, (x/5)-x, 0);
image(fondo2, (x/4)-x, 0);
image(fondo1, (x/3)-x, 0);
image(fondo0, (x/2)-x, 0);
imageMode(CENTER);
image(nave, x, height/2);
if (keyPressed && (key == CODED)) {
if (keyCode == LEFT) {
x -=3 ;
nave = loadImage("naveI.png");
} else if (keyCode == RIGHT) {
x +=3 ;
nave = loadImage("naveD.png");
}
}
}

Motus dice ¿Has hablado contigo mismo para resolver esta actividad?

No, no eres rara ni raro. Es muy frecuente que cuando estamos trabajando hablemos en silencio con nosotros mismos. Es una forma de comprender mejor lo que hacemos y de buscar soluciones a las tareas o actividades.

De hecho, te aconsejo que lo hagas con mucha frecuencia porque te ayudará a:

  • Recordar algunos pasos que necesites para realizar la actividad.
  • Hacerte preguntas para entender mejor la información.
  • Animarte a terminar la actividad, mantenerte concentrado…
  • Saber cómo te sientes ante la actividad.

¡Habla contigo mismo y aprenderás mejor!