Videojuegos: Técnicas de programación (I)
4
Escrito por Aaron A
1 de febrero de 2011

Generalmente cuando se habla de un video juego y de sus bondades el apartado gráfico suele ser el más destacado, junto a la jugabilidad; Decidir cuál de ellas es más importante no es mi propósito, sino dar un punto de vista técnico a todo lo que se muestra por pantalla. A quién no le ha ocurrido que su personaje se ha quedado atascado en una zona del mapeado de la que no puede salir, o ha conseguido que su personaje se salga literalmente de él. O porqué las montañas que hay al fondo hace medio segundo no estaban. Estos fallos me hacían preguntarme cómo se hacían los videojuegos y porqué no era posible corregirlo, ya que a muchos juegos les ocurre lo mismo. Intentaré no utilizar demasiados tecnicismos y no ser farragoso, que luego no lo lee nadie, como los libros del cole.

Desde el principio de los tiempos la creación de videojuegos va cogido de la mano de la limitación técnica de la máquina en que corre el juego. Basta ver que en la configuración de los juegos de PC puedes escoger el nivel de detalle. ¿Quién no lo ha puesto alguna vez al máximo aun sabiendo que su ordenador iba a estallar? “Va lento pero se puede jugar…” Un minuto después bajabas la resolución viendo que era imposible.

Con la evolución de la tecnología el uso de los conocidos pero anticuados “sprites” ha quedado relegado a juegos de móviles o la web, quedando suplantados por los más conocidos y actuales polígonos. Hay una relación directa entre el nivel de detalle y el número de polígonos, que vienen limitados por la capacidad de la máquina. Pero más polígonos no significa más calidad, que quede claro.

¿Qué es un sprite?

Aquí tenéis la definición técnica, pero para que se entienda mejor diremos que un sprite es una imagen en 2 dimensiones (NO un polígono) que se muestra por una pantalla/monitor. Ejemplo muy sencillo de sprite:

Las partes de la imagen en blanco son transparentes. De esta manera podemos mostrar al hombre-palo por pantalla sobre cualquier fondo. Por ejemplo, para simular los disparos del avión del juego 1942 basta con la imagen de un único disparo, repetirlo en pantalla las veces que sean necesarias y desplazarlo.

Si quiero darle movimiento al hombre-palo tengo que crear la secuencia de imágenes que lo simularán:

Con esta imagen lo que conseguiré será simular el movimiento arriba y abajo del brazo izquierdo del hombre-palo. El recuadro rojo indica lo que el jugador está viendo por la pantalla. Lo único que tengo que hacer es ir alternando la posición de la imagen, y lograremos el efecto que se consigue dibujando en las esquinas de un libro y hacerlas pasar.

Una técnica para ahorra recursos de la memoria de la consola consiste en juntar varias imágenes en una sola, de esta manera sólo hay que cargar en memoria una imagen, y mostrar por pantalla la parte de la imagen que interesa en ese momento. Esta técnica no es utilizada únicamente para videojuegos, no hace falta irse muy lejos para encontrar ejemplos de ello, ¿os suena este nombre?:

No me he dedicado a coger todas la imágenes de Google y a pegarlas juntas, lo han hecho ellos. De esta manera sólo cargan una imagen en la memoria de vuestro navegador de Internet (también ahorra peticiones de imágenes al servidor, pero eso es otro tema) y muestran la parte que corresponde, así que lo ves por pantalla es un trocito de una imagen más grande. Son las imágenes que aparecen en los resultados de búsqueda. Podéis comprobarlo aquí.

Billboarding

Siguiendo con el ejemplo del hombre palo, imaginad que estamos jugando a un juego de rallys en 3D (recordad que el hombre-palo es una imagen en 2D), y nuestro hombre está en el arcén saludando a nuestro paso. Al principio lo veremos aparecer a lo lejos, a medida que nos acercamos iremos percatándonos de su falta de profundidad, y en el momento de pasar por su lado, al ser una imagen en 2D veríamos sólo una línea donde antes había una persona. Una técnica utilizada para evitar esta consecuencia de las 2D en el mundo tridimensional es la conocida como billboarding.

Esta técnica consiste en hacer que la imagen bidimensional se oriente siempre hacia una vista. De esta manera, si decidimos orientar el sprite hacia la vista del jugador, a medida que nos acercamos a ella, esta irá rotando para disimular su falta de profundidad. En el ejemplo anterior, al acercarnos a nuestro hombre-palo veríamos cómo la imagen se va orientando hacia el coche. La primera vez que se le dio uso al billboarding fue en el videojuego “Super Mario kart” de Super Nintendo, en el siguiente video podréis comprobar cómo en el momento que caen rocas del cielo, estas van rotando a medida que pasamos por su lado (segundo 42”):

Otras aplicaciones son:

Full-screen billboarding

El sprite ocupa la pantalla completa, y lo podemos situar delante de todo lo que vemos, para simular por ejemplo el efecto de visión nocturna, o bien lo situamos detrás de todos los objetos, de esta manera obtenemos el fondo del escenario(un bosque, unas montañas, el mar, …); Si es necesario podemos incluso rotar esta imagen. Es como el fondo de una obra de teatro. Como último ejemplo y más rebuscado, si habéis visto “El show de Truman” y os acordáis del final, ocurriría lo mismo si nosotros fuéramos hacia el fondo.

Objetos 3D

¿Cómo simular objetos 3D con sprites?

  • Crear varios sprites desde diferentes ángulos del objeto que deseemos representar, así mostraremos por pantalla la imagen que toque según la posición de la cámara. Ejemplo: Creamos a un enemigo en 8 posiciones diferentes, y según desde dónde estemos apuntándole, mostraremos una ¿Qué juegos han usado esta técnica? Tachaaan: “Doom” y “Wolfestein”
  • Poner la misma imagen 2 veces en forma de aspa:

El efecto conseguido con esta técnica es bastante realista, pero a vista de pájaro (desde arriba) veríamos dos líneas que se cruzan. No recuerdo cuál de los “Need For Speed” era, pero lo utilizaba para los árboles de los lados de la carretera. Seguro que a vosotros se os ocurre algún otro ejemplo, hay cientos.

Hay otras técnicas, como la rotoscopia utilizada por “Prince of Persia”, pero este artículo no acabaría nunca.

Character Scaling

Imaginad la escena: Nuestro hombre-palo se encuentra en una acera y debe cruzar al otro lado de una calle de 3 carriles. La cámara está en la acera de nuestro hombre, apuntado a la otra acera y está estática. Hombre-palo empieza a cruzar, pero notamos algo raro, está cruzando pero no nos lo parece, porque aunque se está alejando de nosotros, el tamaño de hombre-palo no disminuye.

La técnica de character scaling consiste en realizar una escala del personaje en función de la distancia a la que se encuentre, para dar una sensación de profundidad. El primero en utilizar esta técnica fue “The secret of Monkey Island”. La alternativa es dibujar el mismo sprite varias veces en diferentes tamaños y mostrar el tamaño que convenga en cada momento. Aquí tenéis un video demostrativo:

Mario, Sonic, monedas, anillos, árboles, peces, R-type, disparos… Todo lo que habéis visto a través de vuestra videoconsola hasta la llegada del 32X de Sega o el chip super FX de Nintendo han sido sprites. Espero que cuando volváis a jugar a vuestra vieja consola de 16-bits entendáis un poco mejor cómo está creado vuestro personaje y el escenario que os envuelve.

Mi intención es escribir una serie de artículos sobre el tema, así que si hay algo que no entendáis o algo de lo que os gustaría que se hablase no dudéis en pedirlo y en el próximo artículo lo comentaré.

¡Quiero saber más! Pues aquí os dejo unas referencias:

Ags Wiki

Wikipedia

Uib

Ficha del artículo:
Autor:
Publicado en General.
Compártelo:
Iniciar Sesion en Hotmail



4 comentarios

Score: 36
#1

Buen articulo!
Y lo de los arboles si no me falla la memoria son Need For Speed II y III (el de PSX Tambien)
Tambien Tomb Raider II

2 de febrero de 2011 a las 3:24
Add rating 0  Subtract rating 0  

Buen artículo!
Si, Dragon Fire. Tomb Rides II y III, sobre todo al subirse a una cornisa del balcón y éste tiene barandilla, desde arriba se ve plano.
Son muchos los juegos como Colin Rally de PSX que pasa lo mismo con los árboles. En fin como he dicho, muchísimos los juegos, y sobre todo, los primeros en 3D.
Genial. Ya estoy deseando ver el siguiente artículo.

2 de febrero de 2011 a las 20:54
Add rating 0  Subtract rating 0  
Score: 63
#3

¿Escalado de objetos/personajes hacia la “cámara” en 1990?

No se a lo que te refieres exactamente pero ese concepto tendrá decenas de juegos -si no cientos- antes de Monkey Island

En Solaris de Atari VCS existía el escalado (posiblemente el mejor de su generación) hacia la pantall. Y Rescue on Fractalus! (1984) usaba un cáculo fractal para escalar objetos, un concepto bastante raro (mas resultón)

4 de febrero de 2011 a las 20:26
Add rating 0  Subtract rating 0  

Hola Stranno, tienes toda la razón, mis disculpas por el error. Según mis investigaciones, Monkey Island fue el primer juego de aventuras en utilizar esta técnica(http://www.fact-index.com/m/mo/monkey_island.html). La técnica del escalado del sprite es anterior, muy anterior(http://en.wikipedia.org/wiki/2.5D#Scaling_along_the_Z_axis), llegando hasta 1976. Los juegos que usan esta técnica son del tipo Solaris que has comentado o el Out Run, en los que la acción se desplaza hacia la pantalla.
Gracias por tu aporte constructivo.

5 de febrero de 2011 a las 22:40
Add rating 0  Subtract rating 0  

Deja un comentario

Tienes que iniciar sesión para escribir un comentario.
¿Todavía no estás registrado? ¡Tan sólo te llevará 15 segundos!