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.


¿Qué es un videojuego?

Junio 22, 2009

Mirando la definición de juego en el diccionario tenemos que es un “Ejercicio recreativo sometido a reglas, y en el cual se gana o se pierde.” Y de esta descripción genérica obtenemos una de las cosas más importantes que todo juego ha de tener: reglas. Sin embargo hay algo en esa definición que falta, que quizás se da por implícito o se toma como una regla más del juego, pero que desde mi punto de vista es muy importante pensar en ello, el “mundo” donde transcurre el juego.

Por ello mi definición de juego sería más bien algo como: “Actividad sometida a reglas, que transcurre en un mundo finito bien definido con entidades en su interior.” Antes que nada hay que tener en cuenta que con mundo no nos referimos a necesariamente un planeta, sino más bien a un escenario en el que el juego va a transcurrir, por ejemplo en un juego de naves espaciales podríamos estar yendo por el vacio del espacio e intuitivamente no llamaríamos a eso mundo, pero no deja de ser el escenario donde estamos interactuando y conceptualmente ese es todo el mundo que conocemos desde la perspectiva del juego.

Así que tenemos que definir muy bien un lugar, escenario o mundo donde vamos a jugar. Ejemplos clásicos son los juegos de tablero, o el tapete donde jugar a las cartas, o mismamente un planeta futurista donde robots intentan convencernos de que debemos bailar el hula-hop. La idea de que es finito es producto de que los ordenadores son cosas finitas y tienen límites diversos, a medida que avanza la ciencia estos amplían su rango de cosas que pueden hacer, pero por mucho que se quiera no se pueden hacer mundos infinitos, como mucho dar la falsa sensación de un mundo pseudo-infinito haciendo algún truco.

Una vez está definido el mundo tenemos que conocer a las entidades que “habitan” por él. Por decirlo de alguna forma las entidades están en el mundo, pero el jugador puede interactuar con ellas, cosa que no ocurre realmente con el mundo, que es el que és. Por ejemplo, nosotros podemos hablar con el vecino, pero lo que podamos hacerle a la tierra es apenas apreciable si se trata de por ejemplo darle una patada al suelo.

Sabiendo donde estamos y quien está necesitamos dar cierto orden y coherencia mediante reglas, estas describen como se va a comportar el mundo y sus entidades y qué es lo que puede el jugador hacer o no, además de definir si hay metas y cuales podrían ser en el juego. En el ajedrez es matar al rey del oponente, en el Final Fantasy pasarse la historia, pero en el Sim City por ejemplo no hay final ni objetivo real, por eso ganar o perder no es necesariamente algo que deba tener todo juego.

Juntando todo esto podríamos decir que tenemos un juego. Puede que esta definición tenga sus limitaciones o no sea del todo correcta, pero creo que es bastante acertada por mi experiencia como jugador. Así que habiendo definido el tema de forma global hay que adentrarse en el siguiente nivel de desglose y tomar cada parte y ver qué tenemos dentro. Pero eso será otro día ^_^


Buscando el santo grial

Mayo 29, 2009

Bueno, con esta entrada en el blog queda oficialmente iniciado el que de momento va a ser mi proyecto más ambicioso llevado hasta la fecha. Una herramienta para facilitarme la vida a la hora de crear juegos en 2D, que dependiendo de lo bien que salga haré pública o no. Pase lo que pase, utilizaré este blog para comentar los avances y vivencias a las que me enfrente mientras vaya desarrollando este proyecto.

Por cierto, que como ahora tengo unos examenes para terminar la carrera, seguramente esté un par de semanas sin poner nada o casi nada de interés, así que a partir del 20 de junio estaré más activo en lo referente al proyecto.

Un saludo,
Gorka Suárez.