Las entidades, una primera aproximación

Julio 26, 2009

Teniendo un mundo, lo siguiente es rellenarlo de cosas con las que el jugador pueda interactuar, que es lo que denominamos entidades. Las entidades existen de muy diferentes modos, las hay visibles y no visibles. Las visibles son cosas como el jugador, los enemigos, los disparos, items para recoger, etcétera. Las no visibles normalmente son para activar eventos y realizar acciones, por ejemplo que si el jugador se acerca a una zona, se abra automáticamente una puerta.

Bajo estas circunstancias se vislumbra que no es trivial el tema de las entidades y ciertamente no lo es. A la hora de hacer un juego tenemos que hacer dos cosas con las entidades:

  • Definir las entidades a un nivel general, como por ejemplo la entidad “Monstruo”. Hay que tener en cuenta que este tipo de definición se realiza en el código del juego.
  • Luego tenemos que definir las entidades a nivel detallado, como por ejemplo el tipo de “Monstruo” llamado “Gárgola”, que tendrá un nivel de vida y ciertas propiedades determinadas. En este nivel, la definición se realiza en ficheros de texto que el juego interpreta, para crear enemigos específicos a partir de entidades generales.

¿Por qué separarlos? Obviamente podrían definirse en el código todo de forma detallada, pero sacando las definiciones específicas fuera, podemos obtener ciertas ventajas, como poder realizar mods de nuestros juegos más fácilmente o no tener que recompilarlo todo si solo tenemos que cambiar un numerito de alguna propiedad.

Las entidades tienen propiedades que las definen, suelen tener un comportamiento predefinido como respuesta a cualquier evento que queramos tener en consideración. Las que son visibles obviamente tienen un aspecto que suele estar formado por un conjunto de animaciones y dependiendo del estado en el que esté la entidad se muestra una u otra, ya que no es lo mismo estar corriendo que estar quieto esperando el bus.


El mundo y su composición

Julio 9, 2009

Realmente definir lo que es el “mundo” de un escenario, fase o habitación es un tema un tanto complejo. En los juegos 3D como Quake o Half-Life el mundo era identificado como la parte que definía la geometría estática del nivel, el resto eran entidades. Yo personalmente es una idea que me gusta, pero hasta qué punto es conceptualmente claro para alguien que no programa entender que una puerta que se rompe no es lo mismo que una que está ahí y no se puede romper.

Dejando a un lado el debate, asumiremos la forma de pensar del Quake para tomar el mundo como algo con lo que no tendremos mayor interacción que la de colisionarnos (si es que así lo queremos). Así pues, tras meditarlo un poco uno se da cuenta de que nos hace falta definir:

  • El aspecto, que se compone de un fondo (background) y un primer plano (foreground). La diferencia está en que el background está “lejos” y no hay interacción ninguna con él, cosa que con el foreground sí podría ocurrir, como en los juegos de plataformas. Además dependiendo del juego a veces se puede prescindir de uno de ellos o incluso de ambos, como ocurre en el Pong. Tanto uno como otro puede estár compuesto de varias capas, que pueden estar formadas por una imagen, una composición de varias o una composición de tiles.
  • Los límites, que determinan por donde y como se pueden mover las entidades y el jugador. Además estos podrían cambiar durante el juego si saltara algún evento definido por el diseñador. El movimiento puede ser libre (hasta llegar a los muros que nos aprisionan si existen en el nivel), puede ser sobre railes (como en el pacman) o por celdas (como en los juegos por tablero).
  • Las propiedades, que nos indican datos sobre el mundo, por ejemplo está la gravedad y su dirección, o el viento, o si hay zonas que resbalan más que otras o que cuesta más moverse por ellas.

Fuera de eso están ya las entidades o el HUD, que son otro tema aparte. Por cierto que durante este mes voy a estar más liado de lo que esperaba, con lo que tardaré un buen rato en añadir mi próxima entrada al blog.